Online PHP and Javascript Decoder decode hidden script to uncover its real functionality


Show other level

namespace App\Http\Controllers;
 use App\Libraries\libUtilities as LU;
 use App\Models\Contratos_modo_basico as CMB;
 use App\Models\Constancias_ejecutores as CE;
 use Barryvdh\DomPDF\Facade as domPDF;
 use Illuminate\Http\Request;
 use ZipArchive;
 use Illuminate\Support\Facades\File;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\DB;
	 class ConstanciasController extends Controller {
		 public function detallesConstancia($tipo, $year = null, $idNumAuditoria = null, $idCcp = null, $idCff = null, $idContrato = null, $nombreArchivo) {
			 switch ($tipo) {
			 case 1: case 2: $condicionesConstancias["tipo_constancia"] = $tipo;
			 $condicionesConstancias["id_clave_ff"] = $idCff;
			 $constancia = DB::table("constancias_ejecutores")->where($condicionesConstancias)->first();
			 break;
			 case 5: $condicionesConstancias["tipo_constancia"] = 3;
			 $condicionesConstancias["id_clave_ff"] = $idCff;
			 $condicionesConstancias["id_contrato"] = $idContrato;
			 $constancia = DB::table("constancias_ejecutores")->where($condicionesConstancias)->first();
			 break;
			 case 3: case 4: $condicionesConstancias["tipo_constancia"] = $tipo == 3 ? 1 : 2;
			 $condicionesConstancias["id_num_auditoria"] = $idNumAuditoria;
			 $condicionesConstancias["id_ccp"] = $idCcp;
			 $constancia = DB::table("constancias_enlaces")->where($condicionesConstancias)->first();
			 break;
			 default: break;
			 
		}
			 if ($constancia == null) {
			 return "La constancia aún no se ha generado";
			 
		}
			 elseif (substr($constancia->url_constancia, strripos($constancia->url_constancia, "/") + 1) != $nombreArchivo) {
			 return "La constancia está desactualizada";
			 
		}
			 else {
			 $condiciones = array();
				 if ($idCff != "null" && $idCff != null) {
				 $condiciones["id_ff"] = $idCff;
				 
			}
				 else {
				 $condiciones["year"] = $year;
				 $condiciones["id_nauditoria"] = $idNumAuditoria;
				 $condiciones["clave_ff"] = $idCcp;
				 
			}
			 $datos["tipoConstancia"] = $tipo == 1 ? "del Acuse" : "de la Constancia";
			 $datos["etapa"] = "Básica";
			 $datos["tipo"] = $tipo;
			 $datos["idNumAuditoria"] = $idNumAuditoria;
			 $datos["idCcp"] = $idCcp;
			 $datos["idCff"] = $idCff;
			 $datos["fecha"] = "fecha";
			 $datos["idContrato"] = $idContrato;
			 $aClaveFF = DB::table("clave_ff")->where($condiciones)->join("dependencias as dp", "clave_ff.id_dependencia", "=", "dp.id_dependencia")->orderByRaw("LOWER(dp.sDependencia)")->get();
			 $dependencia = DB::table("dependencias")->where("id_dependencia", $aClaveFF[0]->id_dependencia)->get();
				 if ($tipo == 1 || $tipo == 2) {
				 $datos["dependencia"] = $dependencia[0]->sDependencia;
				 
			}
			 $datos["year"] = $aClaveFF[0]->year;
			 $datos["fecha"] = $aClaveFF[0]->updated_at;
			 $estado = DB::table("estados")->where("id", $aClaveFF[0]->id_estado)->first();
			 $municipio = DB::table("municipios")->where("id", $aClaveFF[0]->id_municipio)->first();
			 $datos["ef"] = $estado->estado . ($aClaveFF[0]->id_municipio != 0 ? ", " . $municipio->municipio : '');
			 $nAuditoria = DB::table("catalogo_numeros_auditoria")->where("id", $aClaveFF[0]->id_nauditoria)->first();
			 $datos["n_auditoria"] = $nAuditoria->numeroAuditoria;
			 return view("constancias.situacion_constancia", $datos);
			 
		}
		 
	}
		 public function constanciaAjax($tipo, $year = null, $idNumAuditoria = null, $idCcp = null, $idCff = null, $idContrato = null) {
		 $datos = self::getDetallesConstancia($tipo, $year, $idNumAuditoria, $idCcp, $idCff, $idContrato);
		 return response()->json($datos);
		 
	}
		 public static function generarConstancia($tipo, $year = null, $idNumAuditoria = null, $idCcp = null, $idCff = null, $modulo = null, $nameFile = null, $idContrato = null) {
		 $data["errores"] = null;
		 $r = array();
		 $r["fecha"] = date("d-m-Y H:i:s");
		 $r["modulo"] = $modulo;
		 $totalPeso = 0;
		 $totalArchivos = 0;
			 try {
			 $datos = self::getDetallesConstancia($tipo, $year, $idNumAuditoria, $idCcp, $idCff, $idContrato);
				 if ($datos["errores"] == null) {
					 if (Auth::user()->u_t->id == 4) {
						 if ($tipo == 5) {
						 $tituloPrincipal = "ACUSE DE ENVÍO DE INFORMACIÓN DEL CONTRATO " . $datos["numContrato"] . " DEL EJECUTOR DEL GASTO DE LA EF AL ENLACE";
						 
					}
						 else {
						 $tituloPrincipal = "ACUSE DE ENVÍO DE INFORMACIÓN DEL EJECUTOR DEL GASTO DE LA EF AL ENLACE";
						 
					}
					 $acto = "Acuse de Envío de Información del ejecutor al enlace de la EF";
					 
				}
					 else {
					 $tituloPrincipal = "CONSTANCIA DE ENVÍO DE INFORMACIÓN DEL ENLACE DE LA EF A LA ASF";
					 $acto = "Constancia de Envío de Información del enlace de la Entidad Fiscalizada a la ASF";
					 
				}
				 $etapaIntermedia = "INTERMEDIA";
				 $listaCompletos = $datos["paraConstancia"];
				 $data["numAud"] = $datos["n_auditoria"];
				 $data["year"] = $datos["year"];
				 $data["fondo"] = $datos["fondo"];
				 $data["totalSinInfo"] = $datos["totalSinInfo"];
				 $data["totalConInfo"] = $datos["totalConInfo"];
					 switch ($tipo) {
					 case 2: $data["UrlDetalles"] = url("/") . "/constancias/detallesConstancia/2/null/null/null/" . $idCff . "/null/" . $nameFile;
					 break;
					 case 4: $data["UrlDetalles"] = url("/") . "/constancias/detallesConstancia|/" . $datos["year"] . "/" . $idNumAuditoria . "/" . $idCcp . "/null/null/" . $nameFile;
					 break;
					 case 5: $data["UrlDetalles"] = url("/") . "/constancias/detallesConstancia
				}
				/null/null/null/" . $idCff . "/" . $idContrato . "/" . $nameFile;
				 break;
				 
			}
			 $totalArchivos = $datos["totalArchivos"];
			 $totalPeso = LU::formatBytes($datos["pesoTotal"]);
			 $pdf = domPDF::loadView("constancias.envio_informacion", array("data" => $data, "fecha" => $r["fecha"], "etapa" => $etapaIntermedia, "listaCompletos" => $listaCompletos, "totalArchivos" => $totalArchivos, "totalPeso" => $totalPeso, "tituloPrincipal" => $tituloPrincipal, "acto" => $acto));
			 
		}
			 else {
			 $data["errores"][] = $datos["errores"];
			 
		}
		 
	}
		 catch (\Throwable $th) {
		 $data["errores"][] = "Error durante la generación del archivo, comuníquese con servicio técnico. " . $th->getLine() .  . $th->getMessage();
		 
	}
		 if (empty($data["errores"])) {
		 $pdfContent = $pdf->output();
		 return response()->json(array("pdfContent" => base64_encode($pdfContent)));
		 
	}
		 else {
		 return response()->json($data);
		 
	}
	 
}
	 public static function getDetallesConstancia($tipo, $year = null, $idNumAuditoria = null, $idCcp = null, $idCff = null, $idContrato = null) {
	 set_time_limit(0);
	 $datos = array();
	 $datos["errores"] = null;
	 $datos["paraConstancia"] = null;
	 $datos["pesoTotal"] = 0;
	 $datos["totalArchivos"] = 0;
	 $datos["archivos"] = array();
		 try {
		 $condiciones = array();
			 if ($idCff != "null" && $idCff != null) {
			 $condiciones["id_ff"] = $idCff;
			 
		}
			 else {
			 $condiciones["year"] = $year;
			 $condiciones["id_nauditoria"] = $idNumAuditoria;
			 $condiciones["clave_ff"] = $idCcp;
			 
		}
		 $aClaveFF = DB::table("clave_ff")->where($condiciones)->join("dependencias as dp", "clave_ff.id_dependencia", "=", "dp.id_dependencia")->orderByRaw("LOWER(dp.sDependencia)")->get();
		 $datos["fecha"] = $aClaveFF[0]->updated_at;
		 $estado = DB::table("estados")->where("id", $aClaveFF[0]->id_estado)->first();
		 $municipio = DB::table("municipios")->where("id", $aClaveFF[0]->id_municipio)->first();
		 $datos["ef"] = $estado->estado . ($aClaveFF[0]->id_municipio != 0 ? ", " . $municipio->municipio : '');
		 $datos["year"] = $aClaveFF[0]->year;
		 $fondo = DB::table("catalogo_claves_presupuestales")->where("id", $aClaveFF[0]->clave_ff)->select("nombre_clave")->first();
		 $datos["fondo"] = $fondo->nombre_clave;
		 $nAuditoria = DB::table("catalogo_numeros_auditoria")->where("id", $aClaveFF[0]->id_nauditoria)->first();
		 $datos["n_auditoria"] = $nAuditoria->numeroAuditoria;
		 $datos["totalSinInfo"] = 0;
		 $datos["totalConInfo"] = 0;
			 switch ($tipo) {
			 case 1: case 3: $contDependencia = 0;
			 $datos["tipoConstancia"] = $tipo == 1 ? "del Acuse" : "de la Constancia";
			 $datos["etapa"] = "Básica";
				 foreach ($aClaveFF as $claveFF) {
				 $dependencia = DB::table("dependencias")->where("id_dependencia", $claveFF->id_dependencia)->get();
					 if ($tipo == 1) {
					 $datos["dependencia"] = $dependencia[0]->sDependencia;
					 
				}
					 foreach ($claveFF as $attribute => $value) {
						 if (str_contains($attribute, "estatus_")) {
							 if ($value == 2 || $value == 3) {
								 switch ($attribute) {
								 case "estatus_archivo": $split = explode("/", $claveFF->url_anexo_gd);
								 $docSize = LU::formatBytes(filesize(public_path() . $claveFF->url_anexo_gd));
								 $datos["archivos"][] = array("dependencia" => $tipo == 3 ? $dependencia[0]->sDependencia : null, "nombre" => $split[8], "apartado" => "Gastos diversos S/C", "size" => $docSize, "hash" => $claveFF->anexo_gd_hash);
								 break;
								 case "estatus_anexo_adq": $anexoAdq = DB::table("contratos_excel_files")->where(array(array("id_ff", "=", $claveFF->id_ff), array("modulo", "=", "A")))->first();
								 $split = explode("/", $anexoAdq->url_archivo);
								 $docSize = LU::formatBytes(filesize(public_path() . $anexoAdq->url_archivo));
								 $datos["archivos"][] = array("dependencia" => $tipo == 3 ? $dependencia[0]->sDependencia : null, "nombre" => $split[5], "apartado" => "Adquisiciones", "size" => $docSize, "hash" => $anexoAdq->hash_archivo);
								 break;
								 case "estatus_anexo_obras": $anexoObras = DB::table("contratos_excel_files")->where(array(array("id_ff", "=", $claveFF->id_ff), array("modulo", "=", "O")))->first();
								 $split = explode("/", $anexoObras->url_archivo);
								 $docSize = LU::formatBytes(filesize(public_path() . $anexoObras->url_archivo));
								 $datos["archivos"][] = array("dependencia" => $tipo == 3 ? $dependencia[0]->sDependencia : null, "nombre" => $split[5], "apartado" => "Obras Públicas", "size" => $docSize, "hash" => $anexoObras->hash_archivo);
								 break;
								 case "estatus_anexo_obras_y_adq": $anexoOBYaDQ = DB::table("anexo_obras_y_adq")->where("id_clave_ff", $claveFF->id_ff)->first();
								 $split = explode("/", $anexoOBYaDQ->url_archivo);
								 $docSize = LU::formatBytes(filesize(public_path() . $anexoOBYaDQ->url_archivo));
								 $datos["archivos"][] = array("dependencia" => $tipo == 3 ? $dependencia[0]->sDependencia : null, "nombre" => $split[5], "apartado" => "Obras y Adquisiciones (FISE o FISM)", "size" => $docSize, "hash" => $anexoOBYaDQ->hash_archivo);
								 break;
								 case "estatus_anexo_egresos": $anexoEgresos = DB::table("anexo7_ejecutores")->where("id_clave_ff", $claveFF->id_ff)->first();
								 $split = explode("/", $anexoEgresos->url_anexo7_ejecutor);
								 $docSize = LU::formatBytes(filesize(public_path() . $anexoEgresos->url_anexo7_ejecutor));
								 $datos["archivos"][] = array("dependencia" => $tipo == 3 ? $dependencia[0]->sDependencia : null, "nombre" => $split[9], "apartado" => "Egresos", "size" => $docSize, "hash" => $anexoEgresos->hash_anexo7_ejecutor);
								 break;
								 case "estatus_anexo_nomina": $dato_nomina = DB::table("api_nomina_envios")->where("id_cff", $idCff)->select("*")->get();
									 foreach ($dato_nomina as $archivo) {
									 $docSize = LU::formatBytes(filesize(public_path() . "/uploads/nomina/" . $claveFF->year . "/" . $archivo->id_cff . "/" . $archivo->nombre_archivo));
									 $datos["archivos"][] = array("dependencia" => $tipo == 3 ? $dependencia[0]->sDependencia : null, "nombre" => $archivo->nombre_archivo, "apartado" => "Nomina", "size" => $docSize, "hash" => $archivo->hash_archivo);
									 
								}
								 break;
								 case "estatus_anexo_c4k": $anexo4k = DB::table("anexo_cap_4k")->where("id_clave_ff", $claveFF->id_ff)->first();
								 $split = explode("/", $anexo4k->url_archivo);
								 $docSize = LU::formatBytes(filesize(public_path() . $anexo4k->url_archivo));
								 $datos["archivos"][] = array("dependencia" => $tipo == 3 ? $dependencia[0]->sDependencia : null, "nombre" => $split[5], "apartado" => "Cap.0", "size" => $docSize, "hash" => $anexo4k->cap4k_hash);
								 break;
								 default: paraProgramacionPreventiva();
								 break;
								 
							}
							 
						}
						 
					}
					 
				}
				 $contDependencia++;
				 
			}
			 break;
			 case 2: case 4: case 5: $pathContrato = 7;
			 $pathPaso = 8;
			 $pathFilename = 9;
			 $datos["tipoConstancia"] = $tipo == 2 ? "del Acuse" : "de la Constancia";
			 $datos["etapa"] = "Intermedia";
				 foreach ($aClaveFF as $claveFF) {
				 $dependencia = DB::table("dependencias")->where("id_dependencia", $claveFF->id_dependencia)->get();
					 if ($tipo == 2) {
					 $datos["dependencia"] = $dependencia[0]->sDependencia;
					 
				}
				 $datos["id_dependencia"] = $dependencia[0]->id_dependencia;
				 $datos["paraConstancia"][$datos["id_dependencia"]]["nombreDependencia"] = $dependencia[0]->sDependencia;
				 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] = 0;
				 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] = 0;
				 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"] = null;
				 $datos["numContrato"] = null;
					 if ($tipo == 5) {
					 $contratos = CMB::where(array("id" => $idContrato, "id_ff" => $claveFF->id_ff))->get();
					 
				}
					 else {
					 $contratos = CMB::where("id_ff", $claveFF->id_ff)->get();
					 
				}
					 foreach ($contratos as $K_contrato => $V_contrato) {
						 if ($V_contrato->lmd_intermedio != null) {
						 $V_contrato->lmd_intermedio->lmd_comentarios;
						 
					}
						 if ($V_contrato->lmd_etapa1 != null) {
							 if ($V_contrato->lmd_etapa1->file_dsp != null && $V_contrato->lmd_etapa1->file_dsp != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_etapa1->file_dsp);
							 $docSize = filesize(public_path() . $V_contrato->lmd_etapa1->file_dsp);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_etapa1->file_dsp, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_etapa1->file_dsp)), $V_contrato->lmd_etapa1->hash_dsp);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Suficiencia presupuestal - Documento de la suficiencia presupuestal y documento que acredita la propiedad", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_etapa1->hash_dsp);
							 
						}
						 
					}
						 if ($V_contrato->lmd_files->url_convocatoria != null && $V_contrato->lmd_files->url_convocatoria != '') {
						 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
						 $split = explode("/", $V_contrato->lmd_files->url_convocatoria);
						 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_convocatoria);
						 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
						 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_convocatoria, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_convocatoria)), $V_contrato->lmd_files->hash_convocatoria);
						 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Convocatoria, invitación ó solicitud de cotizaciones", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_convocatoria);
						 
					}
						 if ($V_contrato->lmd_files->url_acta_proposiciones != null && $V_contrato->lmd_files->url_acta_proposiciones != '') {
						 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
						 $split = explode("/", $V_contrato->lmd_files->url_acta_proposiciones);
						 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_acta_proposiciones);
						 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
						 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_acta_proposiciones, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_acta_proposiciones)), $V_contrato->lmd_files->hashurl_acta_proposiciones);
						 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Acta de presentación de proposiciones", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_acta_proposiciones);
						 
					}
						 foreach ($V_contrato->lmd_empresas_concursantes as $K_empresa_concursante => $V_empresa_concursante) {
							 if ($V_empresa_concursante->acta != null && $V_empresa_concursante->acta != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_empresa_concursante->acta);
							 $docSize = filesize(public_path() . $V_empresa_concursante->acta);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_empresa_concursante->acta, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_empresa_concursante->acta)), $V_empresa_concursante->hash_acta);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación (Empresas concursantes) - Acta constitutiva", "size" => LU::formatBytes($docSize), "hash" => $V_empresa_concursante->hash_acta);
							 
						}
						 
					}
						 if ($V_contrato->lmd_files != null) {
							 if ($V_contrato->lmd_files->url_acta_const != null && $V_contrato->lmd_files->url_acta_const != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_acta_const);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_acta_const);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_acta_const, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_acta_const)), $V_contrato->lmd_files->hash_acta_const);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de contratación - Acta constitutiva", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_acta_const);
							 
						}
							 if ($V_contrato->lmd_files->url_convocatoria != null && $V_contrato->lmd_files->url_convocatoria != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_convocatoria);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_convocatoria);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_convocatoria, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_convocatoria)), $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Dictámenes técnicos y económicos", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 
						}
							 if ($V_contrato->lmd_files->url_acta_proposiciones != null && $V_contrato->lmd_files->url_acta_proposiciones != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_acta_proposiciones);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_acta_proposiciones);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_acta_proposiciones, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_acta_proposiciones)), $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Dictámenes técnicos y económicos", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 
						}
							 if ($V_contrato->lmd_files->url_constancia_fiscal != null && $V_contrato->lmd_files->url_constancia_fiscal != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_constancia_fiscal);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_constancia_fiscal);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_constancia_fiscal, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_constancia_fiscal)), $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Dictámenes técnicos y económicos", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 
						}
							 if ($V_contrato->lmd_files->url_constancia_padron != null && $V_contrato->lmd_files->url_constancia_padron != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_constancia_padron);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_constancia_padron);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_constancia_padron, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_constancia_padron)), $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Dictámenes técnicos y económicos", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 
						}
							 if ($V_contrato->lmd_files->url_propuesta_economica != null && $V_contrato->lmd_files->url_propuesta_economica != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_propuesta_economica);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_propuesta_economica);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_propuesta_economica, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_propuesta_economica)), $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Dictámenes técnicos y económicos", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 
						}
							 if ($V_contrato->lmd_files->url_opinion_cumplimiento != null && $V_contrato->lmd_files->url_opinion_cumplimiento != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_opinion_cumplimiento);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_opinion_cumplimiento);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_opinion_cumplimiento, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_opinion_cumplimiento)), $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Dictámenes técnicos y económicos", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 
						}
							 if ($V_contrato->lmd_files->url_dictamenes_tecnicos_economicos != null && $V_contrato->lmd_files->url_dictamenes_tecnicos_economicos != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_dictamenes_tecnicos_economicos);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_dictamenes_tecnicos_economicos);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_dictamenes_tecnicos_economicos, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_dictamenes_tecnicos_economicos)), $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Dictámenes técnicos y económicos", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 
						}
							 if ($V_contrato->lmd_files->url_acta_fallo != null && $V_contrato->lmd_files->url_acta_fallo != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_acta_fallo);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_acta_fallo);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_acta_fallo, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_acta_fallo)), $V_contrato->lmd_files->hash_acta_fallo);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Acta de fallo", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_acta_fallo);
							 
						}
							 if ($V_contrato->lmd_files->url_constancia_fiscal != null && $V_contrato->lmd_files->url_constancia_fiscal != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_constancia_fiscal);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_constancia_fiscal);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_constancia_fiscal, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_constancia_fiscal)), $V_contrato->lmd_files->hash_constancia_fiscal);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Constancia de situación fiscal", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_constancia_fiscal);
							 
						}
							 if ($V_contrato->lmd_files->url_constancia_padron != null && $V_contrato->lmd_files->url_constancia_padron != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_constancia_padron);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_constancia_padron);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_constancia_padron, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_constancia_padron)), $V_contrato->lmd_files->hash_constancia_padron);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Constancia de inscripción al padrón", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_constancia_padron);
							 
						}
							 if ($V_contrato->lmd_files->url_propuesta_economica != null && $V_contrato->lmd_files->url_propuesta_economica != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_propuesta_economica);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_propuesta_economica);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_propuesta_economica, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_propuesta_economica)), $V_contrato->lmd_files->hash_propuesta_economica);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Propuesta económica del proveedor ganador", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_propuesta_economica);
							 
						}
							 if ($V_contrato->lmd_files->url_opinion_cumplimiento != null && $V_contrato->lmd_files->url_opinion_cumplimiento != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_opinion_cumplimiento);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_opinion_cumplimiento);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_opinion_cumplimiento, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_opinion_cumplimiento)), $V_contrato->lmd_files->hash_opinion_cumplimiento);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Opinión de cumplimiento positiva", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_opinion_cumplimiento);
							 
						}
							 if ($V_contrato->lmd_files->url_contrato != null && $V_contrato->lmd_files->url_contrato != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_contrato);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_contrato);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_contrato, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_contrato)), $V_contrato->lmd_files->hash_contrato);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de contratación - Contrato", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_contrato);
							 
						}
							 if ($V_contrato->lmd_files->url_no_anticipo != null && $V_contrato->lmd_files->url_no_anticipo != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_no_anticipo);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_no_anticipo);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_no_anticipo, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_no_anticipo)), $V_contrato->lmd_files->hash_no_anticipo);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de contratación - No. de anticipo", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_no_anticipo);
							 
						}
							 if ($V_contrato->lmd_files->url_no_cumplimiento != null && $V_contrato->lmd_files->url_no_cumplimiento != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_no_cumplimiento);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_no_cumplimiento);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_no_cumplimiento, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_no_cumplimiento)), $V_contrato->lmd_files->hash_no_cumplimiento);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de contratación - No. de cumplimiento", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_no_cumplimiento);
							 
						}
							 if ($V_contrato->lmd_files->url_no_vicios_ocultos != null && $V_contrato->lmd_files->url_no_vicios_ocultos != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_no_vicios_ocultos);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_no_vicios_ocultos);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_no_vicios_ocultos, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_no_vicios_ocultos)), $V_contrato->lmd_files->hash_no_vicios_ocultos);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de contratación - No. de vicios ocultos", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_no_vicios_ocultos);
							 
						}
							 foreach ($V_contrato->lmd_etapa3 as $K_etapa3 => $V_etapa3) {
								 if ($V_etapa3->url_cumplimiento != null && $V_etapa3->url_cumplimiento != '') {
								 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
								 $split = explode("/", $V_etapa3->url_cumplimiento);
								 $docSize = filesize(public_path() . $V_etapa3->url_cumplimiento);
								 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
								 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_etapa3->url_cumplimiento, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_etapa3->url_cumplimiento)), $V_etapa3->hash_cumplimiento);
								 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de contratación (convenio) - No. de cumplimiento", "size" => LU::formatBytes($docSize), "hash" => $V_etapa3->hash_cumplimiento);
								 
							}
								 if ($V_etapa3->url_vicios_ocultos != null && $V_etapa3->url_vicios_ocultos != '') {
								 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
								 $split = explode("/", $V_etapa3->url_vicios_ocultos);
								 $docSize = filesize(public_path() . $V_etapa3->url_vicios_ocultos);
								 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
								 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_etapa3->url_vicios_ocultos, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_etapa3->url_vicios_ocultos)), $V_etapa3->hash_vicios_ocultos);
								 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de contratación (convenio) - No. de vicios ocultos", "size" => LU::formatBytes($docSize), "hash" => $V_etapa3->hash_vicios_ocultos);
								 
							}
								 if ($V_etapa3->url_convenio_mod != null && $V_etapa3->url_convenio_mod != '') {
								 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
								 $split = explode("/", $V_etapa3->url_convenio_mod);
								 $docSize = filesize(public_path() . $V_etapa3->url_convenio_mod);
								 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
								 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_etapa3->url_convenio_mod, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_etapa3->url_convenio_mod)), $V_etapa3->hash_convenio_mod);
								 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de contratación (convenio) - Convenio modificatorio", "size" => LU::formatBytes($docSize), "hash" => $V_etapa3->hash_convenio_mod);
								 
							}
							 
						}
							 if ($V_contrato->lmd_files->url_documento_comprobatorio != null && $V_contrato->lmd_files->url_documento_comprobatorio != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_documento_comprobatorio);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_documento_comprobatorio);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] = $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_documento_comprobatorio, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_documento_comprobatorio)), $V_contrato->lmd_files->hash_documento_comprobatorio);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Gastos diversos S/C", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_documento_comprobatorio);
							 
						}
							 if ($V_contrato->lmd_files->url_almacen != null && $V_contrato->lmd_files->url_almacen != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_almacen);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_almacen);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_almacen, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_almacen)), $V_contrato->lmd_files->hash_almacen);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Entrada al almacén", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_almacen);
							 
						}
							 if ($V_contrato->lmd_files->url_resguardo != null && $V_contrato->lmd_files->url_resguardo != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_resguardo);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_resguardo);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_resguardo, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_resguardo)), $V_contrato->lmd_files->hash_resguardo);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Resguardo de bien", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_resguardo);
							 
						}
							 if ($V_contrato->lmd_files->url_inventario_bienes != null && $V_contrato->lmd_files->url_inventario_bienes != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_inventario_bienes);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_inventario_bienes);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_inventario_bienes, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_inventario_bienes)), $V_contrato->lmd_files->hash_resguardo);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Resguardo de bien", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_resguardo);
							 
						}
							 if ($V_contrato->lmd_files->url_dictamen_recepcion != null && $V_contrato->lmd_files->url_dictamen_recepcion != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_dictamen_recepcion);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_dictamen_recepcion);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_dictamen_recepcion, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_dictamen_recepcion)), $V_contrato->lmd_files->hash_resguardo);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Resguardo de bien", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_resguardo);
							 
						}
							 if ($V_contrato->lmd_files->url_reporte_fotografico_bienes != null && $V_contrato->lmd_files->url_reporte_fotografico_bienes != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_reporte_fotografico_bienes);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_reporte_fotografico_bienes);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_reporte_fotografico_bienes, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_reporte_fotografico_bienes)), $V_contrato->lmd_files->hash_resguardo);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Resguardo de bien", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_resguardo);
							 
						}
							 if ($V_contrato->lmd_files->url_acta_entrega_recepcion != null && $V_contrato->lmd_files->url_acta_entrega_recepcion != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_acta_entrega_recepcion);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_acta_entrega_recepcion);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_acta_entrega_recepcion, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_acta_entrega_recepcion)), $V_contrato->lmd_files->hash_acta_entrega_recepcion);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Acta de entrega-recepción", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_acta_entrega_recepcion);
							 
						}
							 if ($V_contrato->lmd_files->url_entregables != null && $V_contrato->lmd_files->url_entregables != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_entregables);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_entregables);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_entregables, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_entregables)), $V_contrato->lmd_files->hash_entregables);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Evidencia de los entregables", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_entregables);
							 
						}
							 if ($V_contrato->lmd_files->url_entrega_recepcion != null && $V_contrato->lmd_files->url_entrega_recepcion != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_entrega_recepcion);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_entrega_recepcion);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_entrega_recepcion, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_entrega_recepcion)), $V_contrato->lmd_files->hash_entrega_recepcion);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Acta de entrega-recepción", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_entrega_recepcion);
							 
						}
							 if ($V_contrato->lmd_files->url_inventario_bienes != null && $V_contrato->lmd_files->url_inventario_bienes != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_inventario_bienes);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_inventario_bienes);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_inventario_bienes, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_inventario_bienes)), $V_contrato->lmd_files->hash_inventario_bienes);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Inventario de los bienes contratados", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_inventario_bienes);
							 
						}
							 if ($V_contrato->lmd_files->url_dictamen_recepcion != null && $V_contrato->lmd_files->url_dictamen_recepcion != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_dictamen_recepcion);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_dictamen_recepcion);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_dictamen_recepcion, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_dictamen_recepcion)), $V_contrato->lmd_files->hash_dictamen_recepcion);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Dictamen de entrega recepción", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_dictamen_recepcion);
							 
						}
							 if ($V_contrato->lmd_files->url_reporte_fotografico_bienes != null && $V_contrato->lmd_files->url_reporte_fotografico_bienes != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_reporte_fotografico_bienes);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_reporte_fotografico_bienes);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_reporte_fotografico_bienes, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_reporte_fotografico_bienes)), $V_contrato->lmd_files->hash_reporte_fotografico_bienes);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Reporte fotográfico de los bienes adquiridos que se encuentren en operación", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_reporte_fotografico_bienes);
							 
						}
							 if ($V_contrato->lmd_files->url_finiquito != null && $V_contrato->lmd_files->url_finiquito != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_finiquito);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_finiquito);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_finiquito, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_finiquito)), $V_contrato->lmd_files->hash_finiquito);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Acta de finiquito", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_finiquito);
							 
						}
							 if ($V_contrato->lmd_files->url_terminacion != null && $V_contrato->lmd_files->url_terminacion != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_terminacion);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_terminacion);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_terminacion, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_terminacion)), $V_contrato->lmd_files->hash_terminacion);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Oficio de terminación", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_terminacion);
							 
						}
							 if ($V_contrato->lmd_files->url_documento_propiedad != null && $V_contrato->lmd_files->url_documento_propiedad != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_documento_propiedad);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_documento_propiedad);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_documento_propiedad, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_documento_propiedad)), $V_contrato->lmd_files->hash_terminacion);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Oficio de terminación", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_terminacion);
							 
						}
							 if ($V_contrato->lmd_files->url_fotografico != null && $V_contrato->lmd_files->url_fotografico != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_fotografico);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_fotografico);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_fotografico, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_fotografico)), $V_contrato->lmd_files->hash_fotografico);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Reporte fotográfico", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_fotografico);
							 
						}
							 if ($V_contrato->lmd_files->url_bitacoras != null && $V_contrato->lmd_files->url_bitacoras != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_bitacoras);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_bitacoras);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_bitacoras, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_bitacoras)), $V_contrato->lmd_files->hash_bitacoras);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Bitácoras", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_bitacoras);
							 
						}
							 if ($V_contrato->lmd_files->url_extincion != null && $V_contrato->lmd_files->url_extincion != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_extincion);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_extincion);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_extincion, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_extincion)), $V_contrato->lmd_files->hash_extincion);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Acta de extinción de obligaciones", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_extincion);
							 
						}
							 if ($V_contrato->lmd_files->url_documento_propiedad != null && $V_contrato->lmd_files->url_documento_propiedad != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_contrato->lmd_files->url_documento_propiedad);
							 $docSize = filesize(public_path() . $V_contrato->lmd_files->url_documento_propiedad);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_documento_propiedad, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_documento_propiedad)), $V_contrato->lmd_files->hash_documento_propiedad);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Documento que acredite la propiedad", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_documento_propiedad);
							 
						}
						 
					}
						 foreach ($V_contrato->lmd_etapa4 as $K_estimacion => $V_estimacion) {
							 foreach ($V_estimacion->lmd_photos as $K_photo => $V_photo) {
								 if ($V_photo->url_photo != null && $V_photo->url_photo != '') {
								 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
								 $split = explode("/", $V_photo->url_photo);
								 $docSize = filesize(public_path() . $V_photo->url_photo);
								 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
								 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_photo->url_photo, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_photo->url_photo)), $V_photo->hash_photo);
								 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega (Estimación) - Reporte fotográfico", "size" => LU::formatBytes($docSize), "hash" => $V_photo->hash_photo);
								 
							}
							 
						}
							 if ($V_estimacion->url_bitacoras != null && $V_estimacion->url_bitacoras != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_estimacion->url_bitacoras);
							 $docSize = filesize(public_path() . $V_estimacion->url_bitacoras);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_estimacion->url_bitacoras, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_estimacion->url_bitacoras)), $V_estimacion->hash_bitacoras);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega (Estimación) - Bitácoras", "size" => LU::formatBytes($docSize), "hash" => $V_estimacion->hash_bitacoras);
							 
						}
							 if ($V_estimacion->url_pruebas_laboratorio != null && $V_estimacion->url_pruebas_laboratorio != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_estimacion->url_pruebas_laboratorio);
							 $docSize = filesize(public_path() . $V_estimacion->url_pruebas_laboratorio);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_estimacion->url_pruebas_laboratorio, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_estimacion->url_pruebas_laboratorio)), $V_estimacion->hash_pruebas_laboratorio);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega (Estimación) - Pruebas de laboratorio", "size" => LU::formatBytes($docSize), "hash" => $V_estimacion->hash_pruebas_laboratorio);
							 
						}
							 if ($V_estimacion->url_caratula != null && $V_estimacion->url_caratula != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_estimacion->url_caratula);
							 $docSize = filesize(public_path() . $V_estimacion->url_caratula);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_estimacion->url_caratula, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_estimacion->url_caratula)), $V_estimacion->hash_caratula);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega (Estimación) - Carátula", "size" => LU::formatBytes($docSize), "hash" => $V_estimacion->hash_caratula);
							 
						}
						 
					}
						 foreach ($V_contrato->lmd_facturas as $K_fac => $V_fac) {
							 if ($V_fac->cfdi_url != null && $V_fac->cfdi_url != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_fac->cfdi_url);
							 $docSize = filesize(public_path() . $V_fac->cfdi_url);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_fac->cfdi_url, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_fac->cfdi_url)), $V_fac->cfdi_hash);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Facturas - CFDI", "size" => LU::formatBytes($docSize), "hash" => $V_fac->cfdi_hash);
							 
						}
							 if ($V_fac->factura_url != null && $V_fac->factura_url != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_fac->factura_url);
							 $docSize = filesize(public_path() . $V_fac->factura_url);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_fac->factura_url, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_fac->factura_url)), $V_fac->factura_hash);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Facturas - Factura", "size" => LU::formatBytes($docSize), "hash" => $V_fac->factura_hash);
							 
						}
							 if ($V_fac->estimacion_url != null && $V_fac->estimacion_url != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_fac->estimacion_url);
							 $docSize = filesize(public_path() . $V_fac->estimacion_url);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_fac->estimacion_url, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_fac->estimacion_url)), $V_fac->estimacion_hash);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Facturas - Carátula de estimación", "size" => LU::formatBytes($docSize), "hash" => $V_fac->estimacion_hash);
							 
						}
						 
					}
						 foreach ($V_contrato->lmd_polizas as $K_pol => $V_pol) {
							 if ($V_pol->url_num_poliza != null && $V_pol->url_num_poliza != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_pol->url_num_poliza);
							 $docSize = filesize(public_path() . $V_pol->url_num_poliza);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_pol->url_num_poliza, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_pol->url_num_poliza)), $V_pol->hash_num_poliza);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Pago y pólizas - Número de póliza", "size" => LU::formatBytes($docSize), "hash" => $V_pol->hash_num_poliza);
							 
						}
							 if ($V_pol->url_clc_spei != null && $V_pol->url_clc_spei != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_pol->url_clc_spei);
							 $docSize = filesize(public_path() . $V_pol->url_clc_spei);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_pol->url_clc_spei, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_pol->url_clc_spei)), $V_pol->hash_clc_spei);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Pago y pólizas - Acreditación de pago (CLC, SPEI)", "size" => LU::formatBytes($docSize), "hash" => $V_pol->hash_clc_spei);
							 
						}
							 if ($V_pol->url_contrato_cuenta_pagadora != null && $V_pol->url_contrato_cuenta_pagadora != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_pol->url_contrato_cuenta_pagadora);
							 $docSize = filesize(public_path() . $V_pol->url_contrato_cuenta_pagadora);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_pol->url_contrato_cuenta_pagadora, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_pol->url_contrato_cuenta_pagadora)), $V_pol->hash_contrato_cuenta_pagadora);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Pago y pólizas - Contrato de la cuenta bancaria pagadora", "size" => LU::formatBytes($docSize), "hash" => $V_pol->hash_contrato_cuenta_pagadora);
							 
						}
							 if ($V_pol->url_reintegro != null && $V_pol->url_reintegro != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							 $split = explode("/", $V_pol->url_reintegro);
							 $docSize = filesize(public_path() . $V_pol->url_reintegro);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_pol->url_reintegro, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_pol->url_reintegro)), $V_pol->hash_reintegro);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? $dependencia[0]->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Pago y pólizas - Reintegro a TESOFE", "size" => LU::formatBytes($docSize), "hash" => $V_pol->hash_reintegro);
							 
						}
						 
					}
						 if ($tipo == 5) {
						 $datos["numContrato"] = $V_contrato->numero_contrato;
						 
					}
					 
				}
					 if ($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] == 0) {
					 $datos["totalSinInfo"]++;
					 
				}
					 else {
					 $datos["totalConInfo"]++;
					 
				}
				 $datos["totalArchivos"] += $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"];
				 $datos["pesoTotal"] += $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"];
				 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] = LU::formatBytes($datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"]);
				 
			}
			 break;
			 default: paraProgramacionPreventiva();
			 break;
			 
		}
		 
	}
		 catch (\Throwable $th) {
		 $datos["errores"][] = "No pudo procesarse la solicitud, contacte a soporte. " . $th->getLine() . ", " . $th->getMessage();
		 
	}
	 return $datos;
	 
}
	 public function historialAcuses(Request $request) {
		 try {
		 $datos = array();
		 $datos["errores"] = null;
			 if ($request->tipo != null && $request->modulo != null) {
			 $acuses = DB::table("constancias_ejecutores as ce")->join("clave_ff as clave", "ce.id_clave_ff", "clave.id_ff")->join("catalogo_numeros_auditoria as aud", "clave.id_nauditoria", "aud.id")->join("catalogo_claves_presupuestales as ccp", "clave.clave_ff", "ccp.id")->join("dependencias as dep", "clave.id_dependencia", "dep.id_dependencia")->join("estados as est", "ce.id_estado", "est.id")->join("municipios as mun", "ce.id_municipio", "mun.id")->join("contratos_modo_basico as contrato", "ce.id_contrato", "contrato.id")->where("tipo_constancia", $request->tipo)->where("ce.modulo", $request->modulo)->where("ce.es_vigente", 0)->where("ce.id_clave_ff", $request->id);
			 $constancias = $acuses->select("ce.id as id", "aud.numeroAuditoria as num_aud", "clave.year as year", "ccp.nombre_clave as fondo", "dep.sDependencia as dependencia", "est.estado as estado", "mun.municipio as municipio", "ce.fecha_estampado as fecha", "contrato.numero_contrato as contrato")->get();
			 
		}
			 else {
				 if ($request->tipo != null) {
				 $tipo = $request->tipo;
				 
			}
				 else {
				 $tipo = 1;
				 
			}
			 $acuses = DB::table("constancias_ejecutores as ce")->join("clave_ff as clave", "ce.id_clave_ff", "clave.id_ff")->join("catalogo_numeros_auditoria as aud", "clave.id_nauditoria", "aud.id")->join("catalogo_claves_presupuestales as ccp", "clave.clave_ff", "ccp.id")->join("dependencias as dep", "clave.id_dependencia", "dep.id_dependencia")->join("estados as est", "ce.id_estado", "est.id")->join("municipios as mun", "ce.id_municipio", "mun.id")->where("es_vigente", 0)->where("id_clave_ff", $request->id)->where("tipo_constancia", $tipo);
			 $constancias = $acuses->select("ce.id as id", "aud.numeroAuditoria as num_aud", "clave.year as year", "ccp.nombre_clave as fondo", "dep.sDependencia as dependencia", "est.estado as estado", "mun.municipio as municipio", "ce.fecha_estampado as fecha")->get();
			 
		}
		 $rutas = $acuses->select("ce.id as id", "ce.url_constancia as url")->get();
		 $datos["constancias"] = $constancias;
		 $datos["urls"] = $rutas;
		 
	}
		 catch (\Throwable $th) {
		 $datos["errores"][] = "Error al consultar la información, comuníquese con servicio técnico. " . $th->getLine() .  . $th->getMessage();
		 
	}
		 if ($datos["errores"] !== null) {
		 return response()->json($datos["errores"]);
		 
	}
		 else {
		 return response()->json($datos);
		 
	}
	 
}
	 public function historialConstancias(Request $request) {
		 try {
		 $datos = array();
		 $datos["errores"] = null;
			 if ($request->tipo != null) {
			 $tipo = $request->tipo;
			 
		}
			 else {
			 $tipo = 1;
			 
		}
		 $consulta = DB::table("constancias_enlaces as ce")->join("catalogo_numeros_auditoria as aud", "ce.id_num_auditoria", "aud.id")->join("catalogo_claves_presupuestales as ccp", "ce.id_ccp", "ccp.id")->join("estados as est", "ce.id_estado", "est.id")->join("municipios as mun", "ce.id_municipio", "mun.id")->where("ce.es_vigente", 0)->where("ce.id_ccp", $request->id)->where("ce.id_num_auditoria", $request->num_aud)->where("ce.id_usuario", Auth::user()->id)->where("ce.tipo_constancia", $tipo);
		 $constancias = $consulta->select("ce.id as id", "aud.numeroAuditoria as num_aud", "ce.year as year", "ccp.nombre_clave as fondo", "est.estado as estado", "mun.municipio as municipio", "ce.fecha_estampado as fecha")->get();
		 $rutas = $consulta->select("ce.id as id", "ce.url_constancia as url")->get();
		 $datos["constancias"] = $constancias;
		 $datos["urls"] = $rutas;
		 
	}
		 catch (\Throwable $th) {
		 $datos["errores"][] = "Error al consultar la información, comuníquese con servicio técnico. " . $th->getLine() .  . $th->getMessage();
		 
	}
		 if ($datos["errores"] !== null) {
		 return response()->json($datos["errores"]);
		 
	}
		 else {
		 return response()->json($datos);
		 
	}
	 
}
	 public function descargarZipHistorico(Request $request) {
	 $rutasArchivos = array();
		 try {
			 if ($request->archivos != null) {
			 $archivoZip = "uploads/" . $request->nombre . ".zip";
				 foreach ($request->archivos as $archivo) {
				 $archivo["url"] = substr($archivo["url"], 1);
				 array_push($rutasArchivos, public_path($archivo["url"]));
				 
			}
			 $zip = new ZipArchive();
				 if ($zip->open(public_path($archivoZip), ZipArchive::CREATE | ZipArchive::OVERWRITE) === TRUE) {
					 foreach ($rutasArchivos as $rutaArchivo) {
						 if (File::exists($rutaArchivo)) {
						 $nombreArchivo = basename($rutaArchivo);
						 $nombreCancelado = explode(, $nombreArchivo);
						 $nombreArchivo = $nombreCancelado[0] . "_CANCELADO." . $nombreCancelado[1];
						 $zip->addFile($rutaArchivo, $nombreArchivo);
						 
					}
						 else {
						 throw new \Exception("El archivo " . $rutaArchivo . " no existe");
						 
					}
					 
				}
				 $zip->close();
					 if (file_exists(public_path($archivoZip))) {
					 return response()->json($request->nombre . ".zip");
					 
				}
					 else {
					 throw new \Exception("No se pudo crear el archivo ZIP");
					 
				}
				 
			}
				 else {
				 throw new \Exception("No se pudo abrir el archivo ZIP");
				 
			}
			 
		}
			 else {
			 throw new \Exception("Los archivos no se cargaron correctamente");
			 
		}
		 
	}
		 catch (\Throwable $th) {
		 $datos["errores"][] = "Error al descargar los archivos, comuníquese con servicio técnico. " . $th->getLine() .  . $th->getMessage();
		 return response()->json($datos);
		 
	}
	 
}
	 public function eliminarZipHistorico(Request $request) {
		 try {
		 $archivoZip = public_path("uploads/" . $request->url);
			 if (file_exists($archivoZip)) {
			 unlink($archivoZip);
			 return response()->json("Archivo eliminado correctamente");
			 
		}
			 else {
			 return response()->json("El archivo no existe");
			 
		}
		 
	}
		 catch (\Throwable $th) {
		 $datos["errores"][] = "Error al eliminar el archivo, comuníquese con servicio técnico. " . $th->getLine() .  . $th->getMessage();
		 return response()->json($datos);
		 
	}
	 
}
 
}

namespace App\Http\Controllers;
 use App\Libraries\libUtilities as LU;
 use App\Models\Contratos_modo_basico as CMB;
 use App\Models\Constancias_ejecutores as CE;
 use Barryvdh\DomPDF\Facade as domPDF;
 use Illuminate\Http\Request;
 use ZipArchive;
 use Illuminate\Support\Facades\File;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\DB;
	 class ConstanciasController extends Controller {
		 public function detallesConstancia($tipo, $year = null, $idNumAuditoria = null, $idCcp = null, $idCff = null, $idContrato = null, $nombreArchivo) {
			 switch ($tipo) {
			 case 1: case 2: $condicionesConstancias["tipo_constancia"] = $tipo;
			 $condicionesConstancias["id_clave_ff"] = $idCff;
			 $constancia = DB::table("constancias_ejecutores")->where($condicionesConstancias)->first();
			 break;
			 case 5: $condicionesConstancias["tipo_constancia"] = 3;
			 $condicionesConstancias["id_clave_ff"] = $idCff;
			 $condicionesConstancias["id_contrato"] = $idContrato;
			 $constancia = DB::table("constancias_ejecutores")->where($condicionesConstancias)->first();
			 break;
			 case 3: case 4: $condicionesConstancias["tipo_constancia"] = $tipo == 3 ? 1 : 2;
			 $condicionesConstancias["id_num_auditoria"] = $idNumAuditoria;
			 $condicionesConstancias["id_ccp"] = $idCcp;
			 $constancia = DB::table("constancias_enlaces")->where($condicionesConstancias)->first();
			 break;
			 default: break;
			 
		}
			 if ($constancia == null) {
			 return "La constancia aún no se ha generado";
			 
		}
			 elseif (substr($constancia->url_constancia, strripos($constancia->url_constancia, "/") + 1) != $nombreArchivo) {
			 return "La constancia está desactualizada";
			 
		}
			 else {
			 $condiciones = array();
				 if ($idCff != "null" && $idCff != null) {
				 $condiciones["id_ff"] = $idCff;
				 
			}
				 else {
				 $condiciones["year"] = $year;
				 $condiciones["id_nauditoria"] = $idNumAuditoria;
				 $condiciones["clave_ff"] = $idCcp;
				 
			}
			 $datos["tipoConstancia"] = $tipo == 1 ? "del Acuse" : "de la Constancia";
			 $datos["etapa"] = "Básica";
			 $datos["tipo"] = $tipo;
			 $datos["idNumAuditoria"] = $idNumAuditoria;
			 $datos["idCcp"] = $idCcp;
			 $datos["idCff"] = $idCff;
			 $datos["fecha"] = "fecha";
			 $datos["idContrato"] = $idContrato;
				   if ($tipo == 1 || $tipo == 2) {
				 $datos["dependencia"] = "D"->sDependencia;
				 
			}
			 $datos["year"] = "D"->year;
			 $datos["fecha"] = "D"->updated_at;
			 $estado = DB::table("estados")->where("id", "D"->id_estado)->first();
			 $municipio = DB::table("municipios")->where("id", "D"->id_municipio)->first();
			 $datos["ef"] = $estado->estado . ("D"->id_municipio != 0 ? ", " . $municipio->municipio : '');
			 $nAuditoria = DB::table("catalogo_numeros_auditoria")->where("id", "D"->id_nauditoria)->first();
			 $datos["n_auditoria"] = $nAuditoria->numeroAuditoria;
			 return view("constanciassituacion_constancia", $datos);
			 
		}
		 
	}
		 public function constanciaAjax($tipo, $year = null, $idNumAuditoria = null, $idCcp = null, $idCff = null, $idContrato = null) {
		 $datos = self::getDetallesConstancia($tipo, $year, $idNumAuditoria, $idCcp, $idCff, $idContrato);
		 return response()->json($datos);
		 
	}
		 public static function generarConstancia($tipo, $year = null, $idNumAuditoria = null, $idCcp = null, $idCff = null, $modulo = null, $nameFile = null, $idContrato = null) {
		 $data["errores"] = null;
		 $r = array();
		 $r["fecha"] = date("d-m-Y H:i:s");
		 $r["modulo"] = $modulo;
		 $totalPeso = 0;
		 $totalArchivos = 0;
			 try {
			 $datos = self::getDetallesConstancia($tipo, $year, $idNumAuditoria, $idCcp, $idCff, $idContrato);
				 if ($datos["errores"] == null) {
					 if (Auth::user()->u_t->id == 4) {
						 if ($tipo == 5) {
						 $tituloPrincipal = "ACUSE DE ENVÍO DE INFORMACIÓN DEL CONTRATO " . $datos["numContrato"] . " DEL EJECUTOR DEL GASTO DE LA EF AL ENLACE";
						 
					}
						 else {
						 $tituloPrincipal = "ACUSE DE ENVÍO DE INFORMACIÓN DEL EJECUTOR DEL GASTO DE LA EF AL ENLACE";
						 
					}
					 $acto = "Acuse de Envío de Información del ejecutor al enlace de la EF";
					 
				}
					 else {
					 $tituloPrincipal = "CONSTANCIA DE ENVÍO DE INFORMACIÓN DEL ENLACE DE LA EF A LA ASF";
					 $acto = "Constancia de Envío de Información del enlace de la Entidad Fiscalizada a la ASF";
					 
				}
				 $etapaIntermedia = "INTERMEDIA";
				 $listaCompletos = $datos["paraConstancia"];
				 $data["numAud"] = $datos["n_auditoria"];
				 $data["year"] = $datos["year"];
				 $data["fondo"] = $datos["fondo"];
				 $data["totalSinInfo"] = $datos["totalSinInfo"];
				 $data["totalConInfo"] = $datos["totalConInfo"];
					 switch ($tipo) {
					 case 2: $data["UrlDetalles"] = url("/") . "/constancias/detallesConstancia/2/null/null/null/" . $idCff . "/null/" . $nameFile;
					 break;
					 case 4: $data["UrlDetalles"] = url("/") . "/constancias/detallesConstancia|/" . $datos["year"] . "/" . $idNumAuditoria . "/" . $idCcp . "/null/null/" . $nameFile;
					 break;
					 case 5: $data["UrlDetalles"] = url("/") . "/constancias/detallesConstancia
				}
				/null/null/null/" . $idCff . "/" . $idContrato . "/" . $nameFile;
				 break;
				 
			}
			 $totalArchivos = $datos["totalArchivos"];
			 $totalPeso = LU::formatBytes($datos["pesoTotal"]);
			 $pdf = domPDF::loadView("constanciasenvio_informacion", array("data" => $data, "fecha" => $r["fecha"], "etapa" => $etapaIntermedia, "listaCompletos" => $listaCompletos, "totalArchivos" => $totalArchivos, "totalPeso" => $totalPeso, "tituloPrincipal" => $tituloPrincipal, "acto" => $acto));
			 
		}
			 else {
			 $data["errores"][] = $datos["errores"];
			 
		}
		 
	}
		 catch (\Throwable $th) {
		 $data["errores"][] = "Error durante la generación del archivo, comuníquese con servicio técnico. " . $th->getLine() .  . $th->getMessage();
		 
	}
		 if (empty($data["errores"])) {
		 $pdfContent = $pdf->output();
		 return response()->json(array("pdfContent" => base64_encode($pdfContent)));
		 
	}
		 else {
		 return response()->json($data);
		 
	}
	 
}
	 public static function getDetallesConstancia($tipo, $year = null, $idNumAuditoria = null, $idCcp = null, $idCff = null, $idContrato = null) {
	 set_time_limit(0);
	 $datos = array();
	 $datos["errores"] = null;
	 $datos["paraConstancia"] = null;
	 $datos["pesoTotal"] = 0;
	 $datos["totalArchivos"] = 0;
	 $datos["archivos"] = array();
		 try {
		 $condiciones = array();
			 if ($idCff != "null" && $idCff != null) {
			 $condiciones["id_ff"] = $idCff;
			 
		}
			 else {
			 $condiciones["year"] = $year;
			 $condiciones["id_nauditoria"] = $idNumAuditoria;
			 $condiciones["clave_ff"] = $idCcp;
			 
		}
		  $datos["fecha"] = "D"->updated_at;
		 $estado = DB::table("estados")->where("id", "D"->id_estado)->first();
		 $municipio = DB::table("municipios")->where("id", "D"->id_municipio)->first();
		 $datos["ef"] = $estado->estado . ("D"->id_municipio != 0 ? ", " . $municipio->municipio : '');
		 $datos["year"] = "D"->year;
		 $fondo = DB::table("catalogo_claves_presupuestales")->where("id", "D"->clave_ff)->select("nombre_clave")->first();
		 $datos["fondo"] = $fondo->nombre_clave;
		 $nAuditoria = DB::table("catalogo_numeros_auditoria")->where("id", "D"->id_nauditoria)->first();
		 $datos["n_auditoria"] = $nAuditoria->numeroAuditoria;
		 $datos["totalSinInfo"] = 0;
		 $datos["totalConInfo"] = 0;
			 switch ($tipo) {
			 case 1: case 3: $contDependencia = 0;
			 $datos["tipoConstancia"] = $tipo == 1 ? "del Acuse" : "de la Constancia";
			 $datos["etapa"] = "Básica";
				 foreach ($aClaveFF as $claveFF) {
					  if ($tipo == 1) {
					 $datos["dependencia"] = "D"->sDependencia;
					 
				}
					 foreach ($claveFF as $attribute => $value) {
						 if (str_contains($attribute, "estatus_")) {
							 if ($value == 2 || $value == 3) {
								 switch ($attribute) {
								 case "estatus_archivo":  $docSize = LU::formatBytes(filesize(public_path() . $claveFF->url_anexo_gd));
								 $datos["archivos"][] = array("dependencia" => $tipo == 3 ? "D"->sDependencia : null, "nombre" => "e", "apartado" => "Gastos diversos S/C", "size" => $docSize, "hash" => $claveFF->anexo_gd_hash);
								 break;
								 case "estatus_anexo_adq": $anexoAdq = DB::table("contratos_excel_files")->where(array(array("id_ff", "=", $claveFF->id_ff), array("modulo", "=", "A")))->first();
								  $docSize = LU::formatBytes(filesize(public_path() . $anexoAdq->url_archivo));
								 $datos["archivos"][] = array("dependencia" => $tipo == 3 ? "D"->sDependencia : null, "nombre" => "a", "apartado" => "Adquisiciones", "size" => $docSize, "hash" => $anexoAdq->hash_archivo);
								 break;
								 case "estatus_anexo_obras": $anexoObras = DB::table("contratos_excel_files")->where(array(array("id_ff", "=", $claveFF->id_ff), array("modulo", "=", "O")))->first();
								  $docSize = LU::formatBytes(filesize(public_path() . $anexoObras->url_archivo));
								 $datos["archivos"][] = array("dependencia" => $tipo == 3 ? "D"->sDependencia : null, "nombre" => "a", "apartado" => "Obras Públicas", "size" => $docSize, "hash" => $anexoObras->hash_archivo);
								 break;
								 case "estatus_anexo_obras_y_adq": $anexoOBYaDQ = DB::table("anexo_obras_y_adq")->where("id_clave_ff", $claveFF->id_ff)->first();
								  $docSize = LU::formatBytes(filesize(public_path() . $anexoOBYaDQ->url_archivo));
								 $datos["archivos"][] = array("dependencia" => $tipo == 3 ? "D"->sDependencia : null, "nombre" => "a", "apartado" => "Obras y Adquisiciones (FISE o FISM)", "size" => $docSize, "hash" => $anexoOBYaDQ->hash_archivo);
								 break;
								 case "estatus_anexo_egresos": $anexoEgresos = DB::table("anexo7_ejecutores")->where("id_clave_ff", $claveFF->id_ff)->first();
								  $docSize = LU::formatBytes(filesize(public_path() . $anexoEgresos->url_anexo7_ejecutor));
								 $datos["archivos"][] = array("dependencia" => $tipo == 3 ? "D"->sDependencia : null, "nombre" => "(", "apartado" => "Egresos", "size" => $docSize, "hash" => $anexoEgresos->hash_anexo7_ejecutor);
								 break;
								 case "estatus_anexo_nomina": $dato_nomina = DB::table("api_nomina_envios")->where("id_cff", $idCff)->select("*")->get();
									 foreach ($dato_nomina as $archivo) {
									 $docSize = LU::formatBytes(filesize(public_path() . "/uploads/nomina/" . $claveFF->year . "/" . $archivo->id_cff . "/" . $archivo->nombre_archivo));
									 $datos["archivos"][] = array("dependencia" => $tipo == 3 ? "D"->sDependencia : null, "nombre" => $archivo->nombre_archivo, "apartado" => "Nomina", "size" => $docSize, "hash" => $archivo->hash_archivo);
									 
								}
								 break;
								 case "estatus_anexo_c4k": $anexo4k = DB::table("anexo_cap_4k")->where("id_clave_ff", $claveFF->id_ff)->first();
								  $docSize = LU::formatBytes(filesize(public_path() . $anexo4k->url_archivo));
								 $datos["archivos"][] = array("dependencia" => $tipo == 3 ? "D"->sDependencia : null, "nombre" => "a", "apartado" => "Cap.0", "size" => $docSize, "hash" => $anexo4k->cap4k_hash);
								 break;
								 default: paraProgramacionPreventiva();
								 break;
								 
							}
							 
						}
						 
					}
					 
				}
				 $contDependencia++;
				 
			}
			 break;
			 case 2: case 4: case 5: $pathContrato = 7;
			 $pathPaso = 8;
			 $pathFilename = 9;
			 $datos["tipoConstancia"] = $tipo == 2 ? "del Acuse" : "de la Constancia";
			 $datos["etapa"] = "Intermedia";
				 foreach ($aClaveFF as $claveFF) {
					  if ($tipo == 2) {
					 $datos["dependencia"] = "D"->sDependencia;
					 
				}
				 $datos["id_dependencia"] = "D"->id_dependencia;
				 $datos["paraConstancia"][$datos["id_dependencia"]]["nombreDependencia"] = "D"->sDependencia;
				 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] = 0;
				 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] = 0;
				 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"] = null;
				 $datos["numContrato"] = null;
					 if ($tipo == 5) {
					 $contratos = CMB::where(array("id" => $idContrato, "id_ff" => $claveFF->id_ff))->get();
					 
				}
					 else {
					 $contratos = CMB::where("id_ff", $claveFF->id_ff)->get();
					 
				}
					 foreach ($contratos as $K_contrato => $V_contrato) {
						 if ($V_contrato->lmd_intermedio != null) {
						 $V_contrato->lmd_intermedio->lmd_comentarios;
						 
					}
						 if ($V_contrato->lmd_etapa1 != null) {
							 if ($V_contrato->lmd_etapa1->file_dsp != null && $V_contrato->lmd_etapa1->file_dsp != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_etapa1->file_dsp);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_etapa1->file_dsp, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_etapa1->file_dsp)), $V_contrato->lmd_etapa1->hash_dsp);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Suficiencia presupuestal - Documento de la suficiencia presupuestal y documento que acredita la propiedad", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_etapa1->hash_dsp);
							 
						}
						 
					}
						 if ($V_contrato->lmd_files->url_convocatoria != null && $V_contrato->lmd_files->url_convocatoria != '') {
						 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
						  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_convocatoria);
						 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
						 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_convocatoria, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_convocatoria)), $V_contrato->lmd_files->hash_convocatoria);
						 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Convocatoria, invitación ó solicitud de cotizaciones", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_convocatoria);
						 
					}
						 if ($V_contrato->lmd_files->url_acta_proposiciones != null && $V_contrato->lmd_files->url_acta_proposiciones != '') {
						 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
						  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_acta_proposiciones);
						 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
						 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_acta_proposiciones, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_acta_proposiciones)), $V_contrato->lmd_files->hashurl_acta_proposiciones);
						 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Acta de presentación de proposiciones", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_acta_proposiciones);
						 
					}
						 foreach ($V_contrato->lmd_empresas_concursantes as $K_empresa_concursante => $V_empresa_concursante) {
							 if ($V_empresa_concursante->acta != null && $V_empresa_concursante->acta != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_empresa_concursante->acta);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_empresa_concursante->acta, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_empresa_concursante->acta)), $V_empresa_concursante->hash_acta);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación (Empresas concursantes) - Acta constitutiva", "size" => LU::formatBytes($docSize), "hash" => $V_empresa_concursante->hash_acta);
							 
						}
						 
					}
						 if ($V_contrato->lmd_files != null) {
							 if ($V_contrato->lmd_files->url_acta_const != null && $V_contrato->lmd_files->url_acta_const != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_acta_const);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_acta_const, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_acta_const)), $V_contrato->lmd_files->hash_acta_const);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de contratación - Acta constitutiva", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_acta_const);
							 
						}
							 if ($V_contrato->lmd_files->url_convocatoria != null && $V_contrato->lmd_files->url_convocatoria != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_convocatoria);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_convocatoria, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_convocatoria)), $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Dictámenes técnicos y económicos", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 
						}
							 if ($V_contrato->lmd_files->url_acta_proposiciones != null && $V_contrato->lmd_files->url_acta_proposiciones != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_acta_proposiciones);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_acta_proposiciones, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_acta_proposiciones)), $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Dictámenes técnicos y económicos", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 
						}
							 if ($V_contrato->lmd_files->url_constancia_fiscal != null && $V_contrato->lmd_files->url_constancia_fiscal != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_constancia_fiscal);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_constancia_fiscal, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_constancia_fiscal)), $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Dictámenes técnicos y económicos", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 
						}
							 if ($V_contrato->lmd_files->url_constancia_padron != null && $V_contrato->lmd_files->url_constancia_padron != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_constancia_padron);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_constancia_padron, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_constancia_padron)), $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Dictámenes técnicos y económicos", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 
						}
							 if ($V_contrato->lmd_files->url_propuesta_economica != null && $V_contrato->lmd_files->url_propuesta_economica != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_propuesta_economica);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_propuesta_economica, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_propuesta_economica)), $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Dictámenes técnicos y económicos", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 
						}
							 if ($V_contrato->lmd_files->url_opinion_cumplimiento != null && $V_contrato->lmd_files->url_opinion_cumplimiento != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_opinion_cumplimiento);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_opinion_cumplimiento, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_opinion_cumplimiento)), $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Dictámenes técnicos y económicos", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 
						}
							 if ($V_contrato->lmd_files->url_dictamenes_tecnicos_economicos != null && $V_contrato->lmd_files->url_dictamenes_tecnicos_economicos != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_dictamenes_tecnicos_economicos);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_dictamenes_tecnicos_economicos, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_dictamenes_tecnicos_economicos)), $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Dictámenes técnicos y económicos", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_dictamenes_tecnicos_economicos);
							 
						}
							 if ($V_contrato->lmd_files->url_acta_fallo != null && $V_contrato->lmd_files->url_acta_fallo != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_acta_fallo);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_acta_fallo, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_acta_fallo)), $V_contrato->lmd_files->hash_acta_fallo);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Acta de fallo", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_acta_fallo);
							 
						}
							 if ($V_contrato->lmd_files->url_constancia_fiscal != null && $V_contrato->lmd_files->url_constancia_fiscal != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_constancia_fiscal);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_constancia_fiscal, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_constancia_fiscal)), $V_contrato->lmd_files->hash_constancia_fiscal);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Constancia de situación fiscal", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_constancia_fiscal);
							 
						}
							 if ($V_contrato->lmd_files->url_constancia_padron != null && $V_contrato->lmd_files->url_constancia_padron != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_constancia_padron);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_constancia_padron, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_constancia_padron)), $V_contrato->lmd_files->hash_constancia_padron);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Constancia de inscripción al padrón", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_constancia_padron);
							 
						}
							 if ($V_contrato->lmd_files->url_propuesta_economica != null && $V_contrato->lmd_files->url_propuesta_economica != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_propuesta_economica);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_propuesta_economica, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_propuesta_economica)), $V_contrato->lmd_files->hash_propuesta_economica);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Propuesta económica del proveedor ganador", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_propuesta_economica);
							 
						}
							 if ($V_contrato->lmd_files->url_opinion_cumplimiento != null && $V_contrato->lmd_files->url_opinion_cumplimiento != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_opinion_cumplimiento);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_opinion_cumplimiento, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_opinion_cumplimiento)), $V_contrato->lmd_files->hash_opinion_cumplimiento);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de adjudicación - Opinión de cumplimiento positiva", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_opinion_cumplimiento);
							 
						}
							 if ($V_contrato->lmd_files->url_contrato != null && $V_contrato->lmd_files->url_contrato != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_contrato);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_contrato, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_contrato)), $V_contrato->lmd_files->hash_contrato);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de contratación - Contrato", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_contrato);
							 
						}
							 if ($V_contrato->lmd_files->url_no_anticipo != null && $V_contrato->lmd_files->url_no_anticipo != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_no_anticipo);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_no_anticipo, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_no_anticipo)), $V_contrato->lmd_files->hash_no_anticipo);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de contratación - Node anticipo", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_no_anticipo);
							 
						}
							 if ($V_contrato->lmd_files->url_no_cumplimiento != null && $V_contrato->lmd_files->url_no_cumplimiento != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_no_cumplimiento);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_no_cumplimiento, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_no_cumplimiento)), $V_contrato->lmd_files->hash_no_cumplimiento);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de contratación - Node cumplimiento", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_no_cumplimiento);
							 
						}
							 if ($V_contrato->lmd_files->url_no_vicios_ocultos != null && $V_contrato->lmd_files->url_no_vicios_ocultos != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_no_vicios_ocultos);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_no_vicios_ocultos, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_no_vicios_ocultos)), $V_contrato->lmd_files->hash_no_vicios_ocultos);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de contratación - Node vicios ocultos", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_no_vicios_ocultos);
							 
						}
							 foreach ($V_contrato->lmd_etapa3 as $K_etapa3 => $V_etapa3) {
								 if ($V_etapa3->url_cumplimiento != null && $V_etapa3->url_cumplimiento != '') {
								 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
								  $docSize = filesize(public_path() . $V_etapa3->url_cumplimiento);
								 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
								 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_etapa3->url_cumplimiento, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_etapa3->url_cumplimiento)), $V_etapa3->hash_cumplimiento);
								 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de contratación (convenio) - Node cumplimiento", "size" => LU::formatBytes($docSize), "hash" => $V_etapa3->hash_cumplimiento);
								 
							}
								 if ($V_etapa3->url_vicios_ocultos != null && $V_etapa3->url_vicios_ocultos != '') {
								 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
								  $docSize = filesize(public_path() . $V_etapa3->url_vicios_ocultos);
								 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
								 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_etapa3->url_vicios_ocultos, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_etapa3->url_vicios_ocultos)), $V_etapa3->hash_vicios_ocultos);
								 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de contratación (convenio) - Node vicios ocultos", "size" => LU::formatBytes($docSize), "hash" => $V_etapa3->hash_vicios_ocultos);
								 
							}
								 if ($V_etapa3->url_convenio_mod != null && $V_etapa3->url_convenio_mod != '') {
								 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
								  $docSize = filesize(public_path() . $V_etapa3->url_convenio_mod);
								 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
								 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_etapa3->url_convenio_mod, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_etapa3->url_convenio_mod)), $V_etapa3->hash_convenio_mod);
								 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Proceso de contratación (convenio) - Convenio modificatorio", "size" => LU::formatBytes($docSize), "hash" => $V_etapa3->hash_convenio_mod);
								 
							}
							 
						}
							 if ($V_contrato->lmd_files->url_documento_comprobatorio != null && $V_contrato->lmd_files->url_documento_comprobatorio != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_documento_comprobatorio);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] = $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_documento_comprobatorio, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_documento_comprobatorio)), $V_contrato->lmd_files->hash_documento_comprobatorio);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Gastos diversos S/C", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_documento_comprobatorio);
							 
						}
							 if ($V_contrato->lmd_files->url_almacen != null && $V_contrato->lmd_files->url_almacen != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_almacen);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_almacen, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_almacen)), $V_contrato->lmd_files->hash_almacen);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Entrada al almacén", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_almacen);
							 
						}
							 if ($V_contrato->lmd_files->url_resguardo != null && $V_contrato->lmd_files->url_resguardo != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_resguardo);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_resguardo, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_resguardo)), $V_contrato->lmd_files->hash_resguardo);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Resguardo de bien", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_resguardo);
							 
						}
							 if ($V_contrato->lmd_files->url_inventario_bienes != null && $V_contrato->lmd_files->url_inventario_bienes != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_inventario_bienes);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_inventario_bienes, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_inventario_bienes)), $V_contrato->lmd_files->hash_resguardo);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Resguardo de bien", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_resguardo);
							 
						}
							 if ($V_contrato->lmd_files->url_dictamen_recepcion != null && $V_contrato->lmd_files->url_dictamen_recepcion != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_dictamen_recepcion);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_dictamen_recepcion, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_dictamen_recepcion)), $V_contrato->lmd_files->hash_resguardo);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Resguardo de bien", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_resguardo);
							 
						}
							 if ($V_contrato->lmd_files->url_reporte_fotografico_bienes != null && $V_contrato->lmd_files->url_reporte_fotografico_bienes != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_reporte_fotografico_bienes);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_reporte_fotografico_bienes, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_reporte_fotografico_bienes)), $V_contrato->lmd_files->hash_resguardo);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Resguardo de bien", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_resguardo);
							 
						}
							 if ($V_contrato->lmd_files->url_acta_entrega_recepcion != null && $V_contrato->lmd_files->url_acta_entrega_recepcion != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_acta_entrega_recepcion);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_acta_entrega_recepcion, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_acta_entrega_recepcion)), $V_contrato->lmd_files->hash_acta_entrega_recepcion);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Acta de entrega-recepción", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_acta_entrega_recepcion);
							 
						}
							 if ($V_contrato->lmd_files->url_entregables != null && $V_contrato->lmd_files->url_entregables != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_entregables);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_entregables, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_entregables)), $V_contrato->lmd_files->hash_entregables);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Evidencia de los entregables", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_entregables);
							 
						}
							 if ($V_contrato->lmd_files->url_entrega_recepcion != null && $V_contrato->lmd_files->url_entrega_recepcion != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_entrega_recepcion);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_entrega_recepcion, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_entrega_recepcion)), $V_contrato->lmd_files->hash_entrega_recepcion);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Acta de entrega-recepción", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_entrega_recepcion);
							 
						}
							 if ($V_contrato->lmd_files->url_inventario_bienes != null && $V_contrato->lmd_files->url_inventario_bienes != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_inventario_bienes);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_inventario_bienes, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_inventario_bienes)), $V_contrato->lmd_files->hash_inventario_bienes);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Inventario de los bienes contratados", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_inventario_bienes);
							 
						}
							 if ($V_contrato->lmd_files->url_dictamen_recepcion != null && $V_contrato->lmd_files->url_dictamen_recepcion != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_dictamen_recepcion);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_dictamen_recepcion, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_dictamen_recepcion)), $V_contrato->lmd_files->hash_dictamen_recepcion);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Dictamen de entrega recepción", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_dictamen_recepcion);
							 
						}
							 if ($V_contrato->lmd_files->url_reporte_fotografico_bienes != null && $V_contrato->lmd_files->url_reporte_fotografico_bienes != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_reporte_fotografico_bienes);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_reporte_fotografico_bienes, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_reporte_fotografico_bienes)), $V_contrato->lmd_files->hash_reporte_fotografico_bienes);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Reporte fotográfico de los bienes adquiridos que se encuentren en operación", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_reporte_fotografico_bienes);
							 
						}
							 if ($V_contrato->lmd_files->url_finiquito != null && $V_contrato->lmd_files->url_finiquito != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_finiquito);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_finiquito, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_finiquito)), $V_contrato->lmd_files->hash_finiquito);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Acta de finiquito", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_finiquito);
							 
						}
							 if ($V_contrato->lmd_files->url_terminacion != null && $V_contrato->lmd_files->url_terminacion != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_terminacion);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_terminacion, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_terminacion)), $V_contrato->lmd_files->hash_terminacion);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Oficio de terminación", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_terminacion);
							 
						}
							 if ($V_contrato->lmd_files->url_documento_propiedad != null && $V_contrato->lmd_files->url_documento_propiedad != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_documento_propiedad);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_documento_propiedad, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_documento_propiedad)), $V_contrato->lmd_files->hash_terminacion);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Oficio de terminación", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_terminacion);
							 
						}
							 if ($V_contrato->lmd_files->url_fotografico != null && $V_contrato->lmd_files->url_fotografico != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_fotografico);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_fotografico, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_fotografico)), $V_contrato->lmd_files->hash_fotografico);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Reporte fotográfico", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_fotografico);
							 
						}
							 if ($V_contrato->lmd_files->url_bitacoras != null && $V_contrato->lmd_files->url_bitacoras != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_bitacoras);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_bitacoras, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_bitacoras)), $V_contrato->lmd_files->hash_bitacoras);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Bitácoras", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_bitacoras);
							 
						}
							 if ($V_contrato->lmd_files->url_extincion != null && $V_contrato->lmd_files->url_extincion != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_extincion);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_extincion, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_extincion)), $V_contrato->lmd_files->hash_extincion);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Acta de extinción de obligaciones", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_extincion);
							 
						}
							 if ($V_contrato->lmd_files->url_documento_propiedad != null && $V_contrato->lmd_files->url_documento_propiedad != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_contrato->lmd_files->url_documento_propiedad);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_contrato->lmd_files->url_documento_propiedad, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_contrato->lmd_files->url_documento_propiedad)), $V_contrato->lmd_files->hash_documento_propiedad);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega - Documento que acredite la propiedad", "size" => LU::formatBytes($docSize), "hash" => $V_contrato->lmd_files->hash_documento_propiedad);
							 
						}
						 
					}
						 foreach ($V_contrato->lmd_etapa4 as $K_estimacion => $V_estimacion) {
							 foreach ($V_estimacion->lmd_photos as $K_photo => $V_photo) {
								 if ($V_photo->url_photo != null && $V_photo->url_photo != '') {
								 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
								  $docSize = filesize(public_path() . $V_photo->url_photo);
								 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
								 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_photo->url_photo, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_photo->url_photo)), $V_photo->hash_photo);
								 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega (Estimación) - Reporte fotográfico", "size" => LU::formatBytes($docSize), "hash" => $V_photo->hash_photo);
								 
							}
							 
						}
							 if ($V_estimacion->url_bitacoras != null && $V_estimacion->url_bitacoras != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_estimacion->url_bitacoras);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_estimacion->url_bitacoras, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_estimacion->url_bitacoras)), $V_estimacion->hash_bitacoras);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega (Estimación) - Bitácoras", "size" => LU::formatBytes($docSize), "hash" => $V_estimacion->hash_bitacoras);
							 
						}
							 if ($V_estimacion->url_pruebas_laboratorio != null && $V_estimacion->url_pruebas_laboratorio != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_estimacion->url_pruebas_laboratorio);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_estimacion->url_pruebas_laboratorio, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_estimacion->url_pruebas_laboratorio)), $V_estimacion->hash_pruebas_laboratorio);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega (Estimación) - Pruebas de laboratorio", "size" => LU::formatBytes($docSize), "hash" => $V_estimacion->hash_pruebas_laboratorio);
							 
						}
							 if ($V_estimacion->url_caratula != null && $V_estimacion->url_caratula != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_estimacion->url_caratula);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_estimacion->url_caratula, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_estimacion->url_caratula)), $V_estimacion->hash_caratula);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Entrega (Estimación) - Carátula", "size" => LU::formatBytes($docSize), "hash" => $V_estimacion->hash_caratula);
							 
						}
						 
					}
						 foreach ($V_contrato->lmd_facturas as $K_fac => $V_fac) {
							 if ($V_fac->cfdi_url != null && $V_fac->cfdi_url != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_fac->cfdi_url);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_fac->cfdi_url, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_fac->cfdi_url)), $V_fac->cfdi_hash);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Facturas - CFDI", "size" => LU::formatBytes($docSize), "hash" => $V_fac->cfdi_hash);
							 
						}
							 if ($V_fac->factura_url != null && $V_fac->factura_url != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_fac->factura_url);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_fac->factura_url, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_fac->factura_url)), $V_fac->factura_hash);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Facturas - Factura", "size" => LU::formatBytes($docSize), "hash" => $V_fac->factura_hash);
							 
						}
							 if ($V_fac->estimacion_url != null && $V_fac->estimacion_url != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_fac->estimacion_url);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_fac->estimacion_url, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_fac->estimacion_url)), $V_fac->estimacion_hash);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Facturas - Carátula de estimación", "size" => LU::formatBytes($docSize), "hash" => $V_fac->estimacion_hash);
							 
						}
						 
					}
						 foreach ($V_contrato->lmd_polizas as $K_pol => $V_pol) {
							 if ($V_pol->url_num_poliza != null && $V_pol->url_num_poliza != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_pol->url_num_poliza);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_pol->url_num_poliza, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_pol->url_num_poliza)), $V_pol->hash_num_poliza);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Pago y pólizas - Número de póliza", "size" => LU::formatBytes($docSize), "hash" => $V_pol->hash_num_poliza);
							 
						}
							 if ($V_pol->url_clc_spei != null && $V_pol->url_clc_spei != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_pol->url_clc_spei);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_pol->url_clc_spei, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_pol->url_clc_spei)), $V_pol->hash_clc_spei);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Pago y pólizas - Acreditación de pago (CLC, SPEI)", "size" => LU::formatBytes($docSize), "hash" => $V_pol->hash_clc_spei);
							 
						}
							 if ($V_pol->url_contrato_cuenta_pagadora != null && $V_pol->url_contrato_cuenta_pagadora != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_pol->url_contrato_cuenta_pagadora);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_pol->url_contrato_cuenta_pagadora, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_pol->url_contrato_cuenta_pagadora)), $V_pol->hash_contrato_cuenta_pagadora);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Pago y pólizas - Contrato de la cuenta bancaria pagadora", "size" => LU::formatBytes($docSize), "hash" => $V_pol->hash_contrato_cuenta_pagadora);
							 
						}
							 if ($V_pol->url_reintegro != null && $V_pol->url_reintegro != '') {
							 $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"]++;
							  $docSize = filesize(public_path() . $V_pol->url_reintegro);
							 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] += $docSize;
							 $datos["paraConstancia"][$datos["id_dependencia"]]["datosArchivo"][] = array($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] . ") " . ltrim(strrchr($V_pol->url_reintegro, "/"), "/") . " " . LU::formatBytes($docSize), date("d-m-Y H:i:s", filemtime(public_path() . $V_pol->url_reintegro)), $V_pol->hash_reintegro);
							 $datos["archivos"][] = array("dependencia" => $tipo == 4 ? "D"->sDependencia : null, "nombre" => $split[$pathFilename], "apartado" => "Pago y pólizas - Reintegro a TESOFE", "size" => LU::formatBytes($docSize), "hash" => $V_pol->hash_reintegro);
							 
						}
						 
					}
						 if ($tipo == 5) {
						 $datos["numContrato"] = $V_contrato->numero_contrato;
						 
					}
					 
				}
					 if ($datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"] == 0) {
					 $datos["totalSinInfo"]++;
					 
				}
					 else {
					 $datos["totalConInfo"]++;
					 
				}
				 $datos["totalArchivos"] += $datos["paraConstancia"][$datos["id_dependencia"]]["cantidadArchivos"];
				 $datos["pesoTotal"] += $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"];
				 $datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"] = LU::formatBytes($datos["paraConstancia"][$datos["id_dependencia"]]["pesoArchivos"]);
				 
			}
			 break;
			 default: paraProgramacionPreventiva();
			 break;
			 
		}
		 
	}
		 catch (\Throwable $th) {
		 $datos["errores"][] = "No pudo procesarse la solicitud, contacte a soporte. " . $th->getLine() . ", " . $th->getMessage();
		 
	}
	 return $datos;
	 
}
	 public function historialAcuses(Request $request) {
		 try {
		 $datos = array();
		 $datos["errores"] = null;
			 if ($request->tipo != null && $request->modulo != null) {
			 $acuses = DB::table("constancias_ejecutores as ce")->join("clave_ff as clave", "ceid_clave_ff", "claveid_ff")->join("catalogo_numeros_auditoria as aud", "claveid_nauditoria", "audid")->join("catalogo_claves_presupuestales as ccp", "claveclave_ff", "ccpid")->join("dependencias as dep", "claveid_dependencia", "depid_dependencia")->join("estados as est", "ceid_estado", "estid")->join("municipios as mun", "ceid_municipio", "munid")->join("contratos_modo_basico as contrato", "ceid_contrato", "contratoid")->where("tipo_constancia", $request->tipo)->where("cemodulo", $request->modulo)->where("cees_vigente", 0)->where("ceid_clave_ff", $request->id);
			 $constancias = $acuses->select("ceid as id", "audnumeroAuditoria as num_aud", "claveyear as year", "ccpnombre_clave as fondo", "depsDependencia as dependencia", "estestado as estado", "munmunicipio as municipio", "cefecha_estampado as fecha", "contratonumero_contrato as contrato")->get();
			 
		}
			 else {
				 if ($request->tipo != null) {
				 $tipo = $request->tipo;
				 
			}
				 else {
				 $tipo = 1;
				 
			}
			 $acuses = DB::table("constancias_ejecutores as ce")->join("clave_ff as clave", "ceid_clave_ff", "claveid_ff")->join("catalogo_numeros_auditoria as aud", "claveid_nauditoria", "audid")->join("catalogo_claves_presupuestales as ccp", "claveclave_ff", "ccpid")->join("dependencias as dep", "claveid_dependencia", "depid_dependencia")->join("estados as est", "ceid_estado", "estid")->join("municipios as mun", "ceid_municipio", "munid")->where("es_vigente", 0)->where("id_clave_ff", $request->id)->where("tipo_constancia", $tipo);
			 $constancias = $acuses->select("ceid as id", "audnumeroAuditoria as num_aud", "claveyear as year", "ccpnombre_clave as fondo", "depsDependencia as dependencia", "estestado as estado", "munmunicipio as municipio", "cefecha_estampado as fecha")->get();
			 
		}
		 $rutas = $acuses->select("ceid as id", "ceurl_constancia as url")->get();
		 $datos["constancias"] = $constancias;
		 $datos["urls"] = $rutas;
		 
	}
		 catch (\Throwable $th) {
		 $datos["errores"][] = "Error al consultar la información, comuníquese con servicio técnico. " . $th->getLine() .  . $th->getMessage();
		 
	}
		 if ($datos["errores"] !== null) {
		 return response()->json($datos["errores"]);
		 
	}
		 else {
		 return response()->json($datos);
		 
	}
	 
}
	 public function historialConstancias(Request $request) {
		 try {
		 $datos = array();
		 $datos["errores"] = null;
			 if ($request->tipo != null) {
			 $tipo = $request->tipo;
			 
		}
			 else {
			 $tipo = 1;
			 
		}
		 $consulta = DB::table("constancias_enlaces as ce")->join("catalogo_numeros_auditoria as aud", "ceid_num_auditoria", "audid")->join("catalogo_claves_presupuestales as ccp", "ceid_ccp", "ccpid")->join("estados as est", "ceid_estado", "estid")->join("municipios as mun", "ceid_municipio", "munid")->where("cees_vigente", 0)->where("ceid_ccp", $request->id)->where("ceid_num_auditoria", $request->num_aud)->where("ceid_usuario", Auth::user()->id)->where("cetipo_constancia", $tipo);
		 $constancias = $consulta->select("ceid as id", "audnumeroAuditoria as num_aud", "ceyear as year", "ccpnombre_clave as fondo", "estestado as estado", "munmunicipio as municipio", "cefecha_estampado as fecha")->get();
		 $rutas = $consulta->select("ceid as id", "ceurl_constancia as url")->get();
		 $datos["constancias"] = $constancias;
		 $datos["urls"] = $rutas;
		 
	}
		 catch (\Throwable $th) {
		 $datos["errores"][] = "Error al consultar la información, comuníquese con servicio técnico. " . $th->getLine() .  . $th->getMessage();
		 
	}
		 if ($datos["errores"] !== null) {
		 return response()->json($datos["errores"]);
		 
	}
		 else {
		 return response()->json($datos);
		 
	}
	 
}
	 public function descargarZipHistorico(Request $request) {
	 $rutasArchivos = array();
		 try {
			 if ($request->archivos != null) {
			 $archivoZip = "uploads/" . $request->nombre . ".zip";
				 foreach ($request->archivos as $archivo) {
				 $archivo["url"] = substr($archivo["url"], 1);
				 array_push($rutasArchivos, public_path($archivo["url"]));
				 
			}
			 $zip = new ZipArchive();
				 if ($zip->open(public_path($archivoZip), ZipArchive::CREATE | ZipArchive::OVERWRITE) === TRUE) {
					 foreach ($rutasArchivos as $rutaArchivo) {
						 if (File::exists($rutaArchivo)) {
						 $nombreArchivo = basename($rutaArchivo);
						 $nombreCancelado = explode(, $nombreArchivo);
						 $nombreArchivo = "D_CANCELADO.B";
						 $zip->addFile($rutaArchivo, $nombreArchivo);
						 
					}
						 else {
						 throw new \Exception("El archivo " . $rutaArchivo . " no existe");
						 
					}
					 
				}
				 $zip->close();
					 if (file_exists(public_path($archivoZip))) {
					 return response()->json($request->nombre . ".zip");
					 
				}
					 else {
					 throw new \Exception("No se pudo crear el archivo ZIP");
					 
				}
				 
			}
				 else {
				 throw new \Exception("No se pudo abrir el archivo ZIP");
				 
			}
			 
		}
			 else {
			 throw new \Exception("Los archivos no se cargaron correctamente");
			 
		}
		 
	}
		 catch (\Throwable $th) {
		 $datos["errores"][] = "Error al descargar los archivos, comuníquese con servicio técnico. " . $th->getLine() .  . $th->getMessage();
		 return response()->json($datos);
		 
	}
	 
}
	 public function eliminarZipHistorico(Request $request) {
		 try {
		 $archivoZip = public_path("uploads/" . $request->url);
			 if (file_exists($archivoZip)) {
			 unlink($archivoZip);
			 return response()->json("Archivo eliminado correctamente");
			 
		}
			 else {
			 return response()->json("El archivo no existe");
			 
		}
		 
	}
		 catch (\Throwable $th) {
		 $datos["errores"][] = "Error al eliminar el archivo, comuníquese con servicio técnico. " . $th->getLine() .  . $th->getMessage();
		 return response()->json($datos);
		 
	}
	 
}
 
}



© 2023 Quttera Ltd. All rights reserved.