public ListResultArchivo GuardarXmlAdicional(int IdInforme, int IdGasto, string Based64BinaryString, string ExtFile) { ListResultArchivo result = new ListResultArchivo(); try { if (ExtFile == "xml") { string format = ""; string path = HttpContext.Current.Server.MapPath("/XML/"); string name = "GAdcional_" + IdInforme.ToString() + "_" + IdGasto.ToString() + "_" + DateTime.Now.ToString("yyyyMMddhhmmss"); if (Based64BinaryString.Contains("data:text/xml;base64,")) { format = "xml"; } string str = Based64BinaryString.Replace("data:text/xml;base64,", " ");//jpg check byte[] data = Convert.FromBase64String(str); MemoryStream ms = new MemoryStream(data, 0, data.Length); ms.Write(data, 0, data.Length); string rutacompleta = path + name + "." + format; File.WriteAllBytes(rutacompleta, data); string ruta = rutacompleta; ruta = "XML/" + name + "." + format; result.ArchivoOk = true; result.Descripcion = "Archivo Guardado."; result.Ruta = ruta; } else { result.ArchivoOk = false; result.Descripcion = "Archivo No Guardado, formato invalido."; result.Ruta = ""; } } catch (Exception ex) { string error = "Error : " + ex.ToString(); result.ArchivoOk = false; result.Descripcion = "Archivo No Guardado. " + error; result.Ruta = ""; } return(result); }
public ListResult PostAgregaAjuste(Parametros Datos) { string msnRespuesta = ""; ListResult resultado = new ListResult(); try { ListResultArchivo archivo = new ListResultArchivo(); ListResultCFDIXML ArcCdfi = new ListResultCFDIXML(); string path = HttpContext.Current.Server.MapPath("/"); if (Datos.Tipo == 2) { archivo = GuardarXmlAdicional(Datos.IdInforme, Datos.IdGasto, Datos.BinXML, Datos.ExtFile); if (archivo.ArchivoOk == true) { string urlXML = path + (archivo.Ruta ?? ""); ArcCdfi = LeerCFDIXML(urlXML); if (Datos.AfectaImpGastado == 1) { Datos.TGastado = ArcCdfi.Total; } else { Datos.TGastado = 0; } if (Datos.AfectaImpComprobado == 1) { Datos.TComprobar = ArcCdfi.Total; } else { Datos.TComprobar = 0; } } else { if (Datos.Tipo == 1) { msnRespuesta = "Gasto Adicinal / Propina NO Agregada al Gasto. "; } else if (Datos.Tipo == 2) { msnRespuesta = "Comprobante (CFDI) adicional NO agregado. " + (archivo.Descripcion ?? " Error al cargar archivo"); } else if (Datos.Tipo == 3) { msnRespuesta = "Gasto por ajuste NO agregado. "; } resultado.AgregadoOk = false; resultado.Descripcion = msnRespuesta; resultado.IdInforme = Datos.IdInforme; resultado.IdGasto = Datos.IdGasto; resultado.IdGastoOrigen = Datos.IdGasto; } } string UCrea = Seguridad.DesEncriptar(Datos.UCrea); SqlCommand comando = new SqlCommand("AgregarAjusteGasto") { CommandType = CommandType.StoredProcedure }; //Declaracion de parametros comando.Parameters.Add("@idinforme", SqlDbType.Int); comando.Parameters.Add("@idgastoorigen", SqlDbType.Int); comando.Parameters.Add("@fgasto", SqlDbType.Date); comando.Parameters.Add("@hgasto", SqlDbType.VarChar); comando.Parameters.Add("@concepto", SqlDbType.VarChar); comando.Parameters.Add("@negocio", SqlDbType.VarChar); comando.Parameters.Add("@ugasto", SqlDbType.VarChar); comando.Parameters.Add("@ucrea", SqlDbType.VarChar); comando.Parameters.Add("@formapago", SqlDbType.VarChar); comando.Parameters.Add("@idcategoria", SqlDbType.Int); comando.Parameters.Add("@categoria", SqlDbType.VarChar); comando.Parameters.Add("@ivacategoria", SqlDbType.Decimal); comando.Parameters.Add("@tgastado", SqlDbType.Decimal); comando.Parameters.Add("@tcomprobar", SqlDbType.Decimal); comando.Parameters.Add("@observaciones", SqlDbType.VarChar); comando.Parameters.Add("@conciliacionbanco", SqlDbType.Int); comando.Parameters.Add("@idmovbanco", SqlDbType.Int); comando.Parameters.Add("@dirxml", SqlDbType.VarChar); comando.Parameters.Add("@tipoajuste", SqlDbType.Int); comando.Parameters.Add("@emisor", SqlDbType.VarChar); comando.Parameters.Add("@receptor", SqlDbType.VarChar); comando.Parameters.Add("@uuid", SqlDbType.VarChar); comando.Parameters.Add("@formapagocfdi", SqlDbType.VarChar); comando.Parameters.Add("@tipodecomprobante", SqlDbType.VarChar); comando.Parameters.Add("@nmbemisor", SqlDbType.VarChar); comando.Parameters.Add("@serie", SqlDbType.VarChar); comando.Parameters.Add("@folio", SqlDbType.VarChar); //Asignacion de valores a parametros string day = Datos.FGasto.Substring(0, 2); string month = Datos.FGasto.Substring(3, 2); string year = Datos.FGasto.Substring(6, 4); DateTime Fecha; try { Fecha = Convert.ToDateTime(year + "-" + month + "-" + day); } catch (Exception) { Fecha = Convert.ToDateTime(day + "-" + month + "-" + year); } string concepto = Datos.Concepto; string serie = "", folio = "", serieFolio = ""; if (Datos.Tipo == 2) { serie = ArcCdfi.Serie ?? ""; folio = ArcCdfi.Folio ?? ""; serieFolio = serie.Trim(); serieFolio += serieFolio == "" ? "" : "-"; serieFolio += folio.Trim(); concepto += " (" + serieFolio + ")"; } comando.Parameters["@idinforme"].Value = Datos.IdInforme; comando.Parameters["@idgastoorigen"].Value = Datos.IdGasto; comando.Parameters["@fgasto"].Value = Fecha; comando.Parameters["@hgasto"].Value = Datos.HGasto; comando.Parameters["@concepto"].Value = concepto; comando.Parameters["@negocio"].Value = Datos.Negocio; comando.Parameters["@ugasto"].Value = Datos.UGasto; comando.Parameters["@ucrea"].Value = UCrea; comando.Parameters["@formapago"].Value = Datos.FormaPago; comando.Parameters["@idcategoria"].Value = Datos.IdCategoria; comando.Parameters["@categoria"].Value = Datos.Categoria; comando.Parameters["@ivacategoria"].Value = Datos.IvaCategoria; comando.Parameters["@tgastado"].Value = Datos.TGastado; comando.Parameters["@tcomprobar"].Value = Datos.TComprobar; comando.Parameters["@observaciones"].Value = Datos.Observaciones; comando.Parameters["@conciliacionbanco"].Value = Datos.ConciliacionBanco; comando.Parameters["@idmovbanco"].Value = Datos.IdMovBanco; comando.Parameters["@dirxml"].Value = archivo.Ruta ?? ""; comando.Parameters["@tipoajuste"].Value = Datos.Tipo; comando.Parameters["@emisor"].Value = ArcCdfi.Emisor ?? ""; comando.Parameters["@receptor"].Value = ArcCdfi.Receptor ?? ""; comando.Parameters["@uuid"].Value = ArcCdfi.UUID ?? ""; comando.Parameters["@formapagocfdi"].Value = ArcCdfi.Formapago ?? ""; comando.Parameters["@tipodecomprobante"].Value = ArcCdfi.TipoDeComprobante ?? ""; comando.Parameters["@nmbemisor"].Value = ArcCdfi.NmbEmisor ?? ""; comando.Parameters["@serie"].Value = serie; comando.Parameters["@folio"].Value = folio; comando.Connection = new SqlConnection(VariablesGlobales.CadenaConexion); comando.CommandTimeout = 0; comando.Connection.Open(); DataTable DT = new DataTable(); SqlDataAdapter DA = new SqlDataAdapter(comando); comando.Connection.Close(); DA.Fill(DT); if (DT.Rows.Count > 0) { foreach (DataRow row in DT.Rows) { try { int error = Convert.ToInt16(row["Error"]); int IdGastoAdminERP_2 = 0; if (error == 0) { if ((ArcCdfi.UUID ?? "").Trim() != "") { int IdGastoAdminERP = Convert.ToInt16(row["IdGastoAdminERP"]); if (IdGastoAdminERP > 0) { IdGastoAdminERP_2 = IdGastoAdminERP; try { DocumentoEntrada entradadoc = new DocumentoEntrada { Usuario = Datos.UGasto, //Variables.usuario; Origen = "AdminWEB", Transaccion = 120092, Operacion = 21 }; //21:Agregar XML, 22:Eliminar XML entradadoc.agregaElemento("FiGfaGasto", IdGastoAdminERP); entradadoc.agregaElemento("FiGfaUuid", (ArcCdfi.UUID).Trim()); DocumentoSalida respuesta = PeticionCatalogo(entradadoc.Documento); if (respuesta.Resultado == "0") { string msnError = ""; XmlDocument xmErrores = new XmlDocument(); xmErrores.LoadXml(respuesta.Errores.InnerXml); XmlNodeList elemList = xmErrores.GetElementsByTagName("Descripcion"); for (int i = 0; i < elemList.Count; i++) { msnError += elemList[i].InnerXml; } if (msnError != "") { path = HttpContext.Current.Server.MapPath("/"); string urlXML = path + (archivo.Ruta ?? ""); Deletexml(urlXML); } resultado.AgregadoOk = false; if (Datos.Tipo == 1) { msnRespuesta = "Gasto Adicinal / Propina NO Agregada al Gasto. "; } else if (Datos.Tipo == 2) { msnRespuesta = "Comprobante (CFDI) adicional NO agregado. "; } else if (Datos.Tipo == 3) { msnRespuesta = "Gasto por ajuste NO agregado. "; } resultado.Descripcion = msnRespuesta + msnError; resultado.IdInforme = Convert.ToInt16(row["idinforme"]); resultado.IdGasto = Convert.ToInt16(row["idgasto"]); resultado.IdGastoOrigen = Convert.ToInt16(row["idgastoorigen"]); //borrar xml try { SqlConnection Conexion = new SqlConnection { ConnectionString = VariablesGlobales.CadenaConexion }; string query = "UPDATE gastos " + " SET g_dirxml = '', g_xmlcargado = 0, g_valor = g_total, g_deducible = 0, g_importenodeducible = g_total " + " WHERE g_idinforme = " + resultado.IdInforme + " AND g_id = " + resultado.IdGasto + "; " + " DELETE FROM xmlinforme WHERE x_idinforme = " + resultado.IdInforme + " AND x_idgasto = " + resultado.IdGasto + "; " + " EXEC UpdateTotalInforme " + resultado.IdInforme + ";"; SqlDataAdapter DA2; DataTable DT2 = new DataTable(); DA2 = new SqlDataAdapter(query, Conexion); DA.Fill(DT2); } catch (Exception) { throw; } } else { if (Datos.Tipo == 1) { msnRespuesta = "Gasto Adicinal / Propina Agregada al Gasto. "; } else if (Datos.Tipo == 2) { msnRespuesta = "Comprobante (CFDI) adicional agregado. "; } else if (Datos.Tipo == 3) { msnRespuesta = "Gasto por ajuste agregado al gasto. "; } resultado.AgregadoOk = true; resultado.Descripcion = msnRespuesta; resultado.IdInforme = Convert.ToInt16(row["idinforme"]); resultado.IdGasto = Convert.ToInt16(row["idgasto"]); resultado.IdGastoOrigen = Convert.ToInt16(row["idgastoorigen"]); } } catch (Exception) { throw; } } else { if (Datos.Tipo == 1) { msnRespuesta = "Gasto Adicinal / Propina Agregada al Gasto. "; } else if (Datos.Tipo == 2) { msnRespuesta = "Comprobante (CFDI) adicional agregado. "; } else if (Datos.Tipo == 3) { msnRespuesta = "Gasto por ajuste agregado al gasto. "; } resultado.AgregadoOk = true; resultado.Descripcion = msnRespuesta; resultado.IdInforme = Convert.ToInt16(row["idinforme"]); resultado.IdGasto = Convert.ToInt16(row["idgasto"]); resultado.IdGastoOrigen = Convert.ToInt16(row["idgastoorigen"]); } } else { resultado.AgregadoOk = true; if (Datos.Tipo == 1) { msnRespuesta = "Gasto Adicinal / Propina Agregada al Gasto. "; } else if (Datos.Tipo == 2) { msnRespuesta = "Comprobante (CFDI) adicional agregado. "; } else if (Datos.Tipo == 3) { msnRespuesta = "Gasto por ajuste agregado al gasto. "; } resultado.Descripcion = msnRespuesta; resultado.IdInforme = Convert.ToInt16(row["idinforme"]); resultado.IdGasto = Convert.ToInt16(row["idgasto"]); resultado.IdGastoOrigen = Convert.ToInt16(row["idgastoorigen"]); } if (Convert.ToString(row["DirPDFOrigen"]) != "" || Convert.ToString(row["DirIMGOrigen"]) != "") { string dirPDF = path + Convert.ToString(row["DirPDFOrigen"]); string dirIMG = path + Convert.ToString(row["DirIMGOrigen"]); string dirPDFAd = "", dirIMGAd = ""; if (Convert.ToString(row["DirPDFOrigen"]) != "") { string[] PDF = dirPDF.Split('.'); dirPDFAd = PDF[0] + "ad" + resultado.IdGasto + "." + PDF[1]; if (File.Exists(dirPDFAd) == false) { File.Copy(dirPDF, dirPDFAd); } } if (Convert.ToString(row["DirIMGOrigen"]) != "") { string[] IMG = dirIMG.Split('.'); dirIMGAd = IMG[0] + "ad" + resultado.IdGasto + "." + IMG[1]; if (File.Exists(dirIMGAd) == false) { File.Copy(dirIMG, dirIMGAd); } } dirPDFAd = dirPDFAd.Replace(path, ""); dirIMGAd = dirIMGAd.Replace(path, ""); string consulta = "UPDATE gastos SET " + "g_dirpdf = '" + dirPDFAd + "', " + "g_dirotros = '" + dirIMGAd + "' " + "WHERE g_idinforme = " + resultado.IdInforme + " AND " + "g_idgorigen = " + resultado.IdGastoOrigen + " AND " + "g_id = " + resultado.IdGasto + "; " + "EXEC UpdateTotalInforme " + resultado.IdInforme + ";"; DA = new SqlDataAdapter(consulta, VariablesGlobales.CadenaConexion); DA.Fill(DT); } } else { if (Datos.Tipo == 1) { msnRespuesta = "Gasto Adicinal / Propina NO Agregada al Gasto. "; } else if (Datos.Tipo == 2) { msnRespuesta = "Comprobante (CFDI) adicional NO agregado. "; } else if (Datos.Tipo == 3) { msnRespuesta = "Gasto por ajuste NO agregado al gasto. "; } resultado.AgregadoOk = false; resultado.Descripcion = msnRespuesta; if (Datos.Tipo == 2) { path = HttpContext.Current.Server.MapPath("/"); string urlXML = path + (archivo.Ruta ?? ""); if (urlXML != "") { Deletexml(urlXML); } resultado.Descripcion = resultado.Descripcion + Convert.ToString(row["msn"]); } resultado.IdInforme = Datos.IdInforme; resultado.IdGasto = Datos.IdGasto; resultado.IdGastoOrigen = Datos.IdGasto; } } catch (Exception err) { string error = ""; if (Convert.ToInt16(row["ErrorNumber"]) > 0) { error = "Error Linea: " + Convert.ToString(row["ErrorLine"]) + ". Message: " + Convert.ToString(row["ErrorMessage"]) + ". " + err.ToString(); } else { error = "Error: " + err.ToString(); } if (Datos.Tipo == 2) { path = HttpContext.Current.Server.MapPath("/"); string urlXML = path + (archivo.Ruta ?? ""); if (urlXML != "") { Deletexml(urlXML); } } resultado.AgregadoOk = false; resultado.Descripcion = error; resultado.IdInforme = Datos.IdInforme; resultado.IdGasto = Datos.IdGasto; resultado.IdGastoOrigen = Datos.IdGasto; } } } else { resultado.AgregadoOk = false; if (Datos.Tipo == 2) { path = HttpContext.Current.Server.MapPath("/"); string urlXML = path + (archivo.Ruta ?? ""); if (urlXML != "") { Deletexml(urlXML); } } if (Datos.Tipo == 1) { msnRespuesta = "Gasto Adicinal / Propina NO Agregada al Gasto. "; } else if (Datos.Tipo == 2) { msnRespuesta = "Comprobante (CFDI) adicional NO agregado. "; } else if (Datos.Tipo == 3) { msnRespuesta = "Gasto por ajuste NO agregado al gasto. "; } resultado.Descripcion = msnRespuesta; resultado.IdInforme = Datos.IdInforme; resultado.IdGasto = Datos.IdGasto; resultado.IdGastoOrigen = Datos.IdGasto; } } catch (Exception err) { string error = "Error: " + err.ToString(); if (Datos.Tipo == 1) { msnRespuesta = "Gasto Adicinal / Propina NO Agregada al Gasto. "; } else if (Datos.Tipo == 2) { msnRespuesta = "Comprobante (CFDI) adicional NO agregado. "; } else if (Datos.Tipo == 3) { msnRespuesta = "Gasto por ajuste NO agregado al gasto. "; } resultado.AgregadoOk = false; resultado.Descripcion = msnRespuesta + error; resultado.IdInforme = Datos.IdInforme; resultado.IdGasto = Datos.IdGasto; resultado.IdGastoOrigen = Datos.IdGasto; } return(resultado); }