using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.ServiceModel; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Extensiones; using static Extensiones.ModExtensiones; using Microsoft.Reporting.WebForms; using System.Net.Http; public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas { private DataTable DtVentas { get { return (ViewState["DtVentas"] == null) ? null : (DataTable)ViewState["DtVentas"]; } set { ViewState["DtVentas"] = value; } } private int CveVenta { get { return (ViewState["CveVenta"] == null) ? -1 : ViewState["CveVenta"].ToString().ToEntero(); } set { ViewState["CveVenta"] = value; } } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { CargaDatos(); } } private void CargaDatos() { //HdnLigaRefacturar.Value = ""; if (Request["CveVenta"] != null) { this.CveVenta = Request["CveVenta"].ToString().ToEntero(); } var ObjVentas = new ClsVentas(); //if (ObjVentas.GetVentas(UsuarioActual.CveEmpresa, "-1", "-1", -1, "-1", -1, -1, -2, -1, "-1", "-1", "-1", CveUsuarioConsulta: UsuarioActual.CveUsuario)) //{ // if (Request["CveVenta"] != null && Request["CveVenta"].ToString().ToEntero() > 0) // { // DtVentas = ObjVentas.DtResultados.FiltraParametros($"CveVenta={Request["CveVenta"].ToString().ToEntero()}"); // } // else // { // DtVentas = ObjVentas.DtResultados.Copy(); // } //} if (ObjVentas.GetVentasPendientesCancelacion(UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario)) { if (Request["CveVenta"] != null && Request["CveVenta"].ToString().ToEntero() > 0) { DtVentas = ObjVentas.DtResultados.FiltraParametros($"CveVenta={Request["CveVenta"].ToString().ToEntero()}"); } else { DtVentas = ObjVentas.DtResultados.Copy(); } } ObjVentas.Dispose(); GvDatos.DataSource = DtVentas.FiltraParametros("(CveEstatusFactura = 20 AND CveEstatusRefacturacion = 0)"); var DtRefacturar = DtVentas.FiltraParametros("CveEstatusRefacturacion IN (1,3) OR (CveEstatusFactura = 20 AND CveEstatusRefacturacion > 0) OR CveEstatusFactura = 23"); if (DtRefacturar != null && DtRefacturar.Rows.Count > 0) { DivRefacturar.Visible = true; GvRefacturaciones.DataSource = DtRefacturar; GvRefacturaciones.DataBind(); } GvDatos.DataBind(); UPDatos.Update(); } protected void BtnValidar_Click(object sender, EventArgs e) { //this.HdnLigaRefacturar.Value = ""; this.CveVenta = -1; GridViewRow GvRow = (GridViewRow)(((LinkButton)sender).NamingContainer); this.CveVenta = GvRow.DataKey("CveVenta").ToEntero(); int CveCliente = GvRow.DataKey("CveCliente").ToEntero(); string Total = GvRow.DataKey("Total"); string SubTotal = GvRow.DataKey("SubTotal"); string Uuid = GvRow.DataKey("FolioFiscal"); string RFCCliente = GvRow.DataKey("RFCCliente"); string Folio = GvRow.DataKey("Folio"); string TipoDocto = GvRow.DataKey("TipoDocto"); string Nombre = GvRow.DataKey("Nombre"); if (CveVenta > 0 && Uuid != "") { var resp = VerificarVigenciaSAT(CveVenta, CveCliente, Folio, TipoDocto, Uuid, UsuarioActual.Empresa.RFC, RFCCliente, Total); if (resp.EnviarAcuse) { Alert(resp.Mensaje, TipoMensaje.MsgConfirmacion, "BtnEnviarMailCancelacion();", TextoConfirmacion: "Enviar", TextoSegundoBoton: "Cancelar"); } else { Alert(resp.Mensaje); } } CargaDatos(); } protected void BtnValidarRefacturacion_Click(object sender, EventArgs e) { //this.HdnLigaRefacturar.Value = ""; this.CveVenta = -1; GridViewRow GvRow = (GridViewRow)(((LinkButton)sender).NamingContainer); this.CveVenta = GvRow.DataKey("CveVenta").ToEntero(); int CveCliente = GvRow.DataKey("CveCliente").ToEntero(); string Total = GvRow.DataKey("Total"); string SubTotal = GvRow.DataKey("SubTotal"); string Uuid = GvRow.DataKey("FolioFiscal"); string RFCCliente = GvRow.DataKey("RFCCliente"); string Folio = GvRow.DataKey("Folio"); string TipoDocto = GvRow.DataKey("TipoDocto"); string Nombre = GvRow.DataKey("Nombre"); string FolioSustitucion = GvRow.DataKey("FolioFiscalSustitucion"); if (CveVenta > 0 && Uuid != "") { var respuesta = VerificarVigenciaSAT(CveVenta, CveCliente, Folio, TipoDocto, Uuid, UsuarioActual.Empresa.RFC, RFCCliente, Total, true, FolioSustitucion); CargaDatos(); if (respuesta.CveEstatus.Contiene(4, 5)) { //HdnLigaRefacturar.Value = respuesta.LigaRefacturacion; Alert(respuesta.Mensaje, JSBtnAceptar: $"RefacturarDocumento();"); } else { Alert(respuesta.Mensaje, TipoMensaje.MsgAdvertencia); } //if (respuesta.IrARefacturar) //{ // Server.Transfer(respuesta.LigaRefacturacion); //} //else //{ // Alert(respuesta.Mensaje); // CargaDatos(); //} } UPDatos.Update(); } protected void BtnCancelarDocumento_Click(object sender, EventArgs e) { //this.HdnLigaRefacturar.Value = ""; this.CveVenta = -1; GridViewRow GvRow = (GridViewRow)(((LinkButton)sender).NamingContainer); this.CveVenta = GvRow.DataKey("CveVenta").ToEntero(); int CveCliente = GvRow.DataKey("CveCliente").ToEntero(); string Total = GvRow.DataKey("Total"); string SubTotal = GvRow.DataKey("SubTotal"); string Uuid = GvRow.DataKey("FolioFiscal"); string RFCCliente = GvRow.DataKey("RFCCliente"); string Folio = GvRow.DataKey("Folio"); string TipoDocto = GvRow.DataKey("TipoDocto"); string Nombre = GvRow.DataKey("Nombre"); string FolioSustitucion = GvRow.DataKey("FolioFiscalSustitucion"); if (CveVenta > 0 && Uuid != "") { var respCancelacion = CancelarDocumento(CveVenta, -1, CveCliente, Folio, Uuid, "", DateTime.Now, TipoDocto, Total.ToDouble(), UsuarioActual.Empresa.CvePAC, EsRefacturacion: true, FolioSustitucion: FolioSustitucion, CveEstatusRefacturacion: 2); if (!respCancelacion.HuboError) { var sb = new StringBuilder(); var EnviarAcuse = false; if (respCancelacion.CveEstatus > 0) { EnviarAcuse = true; var CveEstatus = respCancelacion.CveEstatus; var ObjVentas = new ClsVentas(); if (ObjVentas.UpdateEstatusVenta(CveVenta, CveEstatus, UsuarioActual.CveEmpresa)) { sb.Append("El estatus de la factura fue cambiado a 'Cancelada'."); } else { sb.Append("Ocurrió un error al cambiar el estatus de la factura."); } ObjVentas.Dispose(); sb.Append("El documento se canceló correctamente."); sb.Append($"
Imprimir Acuse"); sb.Append("

¿Desea enviar el Acuse de Cancelación al Cliente?"); } else { sb.Append(respCancelacion.Mensaje); } if (EnviarAcuse) { Alert(sb.ToString(), TipoMensaje.MsgConfirmacion, "BtnEnviarMailCancelacion();", TextoConfirmacion: "Enviar", TextoSegundoBoton: "Cancelar"); } else { Alert(sb.ToString()); } } else { Alert(respCancelacion.Mensaje, TipoMensaje.MsgError); } CargaDatos(); } UPDatos.Update(); } private MRespuestaSAT VerificarVigenciaSAT(int CveVenta, int CveCliente, string Folio, string TipoDocto, string uuid, string emisor, string receptor, string total, bool EsRefacturacion = false, string FolioSustitucion = "") { //HdnLigaRefacturar.Value = ""; var retorno = new MRespuestaSAT() { Mensaje = "", EnviarAcuse = false, LigaRefacturacion = "", IrARefacturar = false }; var sb = new StringBuilder(); string CancelacionAcuse = ""; DateTime CancelacionFecha = DateTime.Now; int CveEstatus = 4; try { var resp = Timbrado.VerificarVigenciaSAT(uuid, UsuarioActual.Empresa.RFC, receptor, total, true); if (resp != null) { if (resp.Estado == null) { sb.Append("No se pudo comprobar el estado de la factura. El servicio del sat no esta disponible"); retorno.Mensaje = sb.ToString(); return retorno; } sb.AppendFormat("Folio Fiscal: {0}
", uuid); sb.AppendFormat("Código Estado: {0}
", resp.CodigoEstatus); sb.AppendFormat("Estado: {0}
", resp.Estado); sb.AppendFormat("Es Cancelable: {0}
", string.IsNullOrEmpty(resp.EsCancelable) ? "Desconocido" : resp.EsCancelable); sb.AppendFormat("Estatus de Cancelación: {0}

", string.IsNullOrEmpty(resp.EsCancelable) ? "Desconocido" : resp.EstatusCancelacion); if (!UsuarioActual.Empresa.FacturaProduccion && (string.IsNullOrEmpty(uuid) || uuid.Contains("test"))) { var respCancelacion = CancelarDocumento(CveVenta, CveEstatus, CveCliente, Folio, uuid, CancelacionAcuse, CancelacionFecha, TipoDocto, total.ToDouble(), UsuarioActual.Empresa.CvePAC, EsRefacturacion: EsRefacturacion, FolioSustitucion: FolioSustitucion); //sb.AppendFormat("{0}
", respCancelacion.Mensaje); if (!respCancelacion.HuboError) { CveEstatus = respCancelacion.CveEstatus; retorno.EnviarAcuse = true; sb.Append("El documento se canceló correctamente."); sb.Append($"
Imprimir Acuse"); if (!EsRefacturacion) { sb.Append("

¿Desea enviar el Acuse de Cancelación al Cliente?"); } } //if (respCancelacion.CveEstatus.Contiene(4, 5) && EsRefacturacion) //{ // retorno.IrARefacturar = true; // retorno.LigaRefacturacion = string.Format("Ventas.aspx?CveDevolucion={0}&NuevaFactura=1", CveVenta); //} } else { if ((resp.EsCancelable.ToUpper() == "NO CANCELABLE")) { sb.Append("Esta factura no es cancelable."); retorno.Mensaje = sb.ToString(); return retorno; } if (resp.Estado.ToUpper().Trim() == "CANCELADO" || resp.EstatusCancelacion.ToUpper() == "PLAZO VENCIDO") { CveEstatus = 5; var respCancelacion = CancelarDocumento(CveVenta, CveEstatus, CveCliente, Folio, uuid, CancelacionAcuse, CancelacionFecha, TipoDocto, total.ToDouble(), UsuarioActual.Empresa.CvePAC, EsRefacturacion: EsRefacturacion, FolioSustitucion: FolioSustitucion); //sb.AppendFormat("{0}
", respCancelacion.Mensaje); if (!respCancelacion.HuboError) { if (respCancelacion.CveEstatus > 0) { retorno.EnviarAcuse = true; CveEstatus = respCancelacion.CveEstatus; var ObjVentas = new ClsVentas(); if (ObjVentas.UpdateEstatusVenta(CveVenta, CveEstatus, UsuarioActual.CveEmpresa)) { sb.Append("El estatus de la factura fue cambiado a 'Cancelada'."); } else { sb.Append("Ocurrió un error al cambiar el estatus de la factura."); } ObjVentas.Dispose(); sb.Append("El documento se canceló correctamente."); sb.Append($"
Imprimir Acuse"); if (!EsRefacturacion) { sb.Append("

¿Desea enviar el Acuse de Cancelación al Cliente?"); } } else { sb.Append(respCancelacion.Mensaje); } } //if (respCancelacion.CveEstatus.Contiene(4, 5) && EsRefacturacion) //{ // retorno.IrARefacturar = true; // retorno.LigaRefacturacion = string.Format("Ventas.aspx?CveDevolucion={0}&NuevaFactura=1", CveVenta); //} } else if (resp.EstatusCancelacion.ToUpper() == "SOLICITUD RECHAZADA") { //ASIGNAMOS ESTATUS EMITIDA CveEstatus = 3; var ObjVentas = new ClsVentas(); if (ObjVentas.UpdateEstatusVenta(CveVenta, CveEstatus, UsuarioActual.CveEmpresa)) { sb.Append("El estatus de la factura fue cambiado a 'Emitida'."); } else { sb.Append("Ocurrió un error al cambiar el estatus de la factura."); } ObjVentas.Dispose(); } else if (resp.Estado.ToUpper().Trim() == "VIGENTE" && string.IsNullOrEmpty(resp.EstatusCancelacion)) { //ASIGNAMOS ESTATUS EMITIDA CveEstatus = 3; var ObjVentas = new ClsVentas(); if (ObjVentas.UpdateEstatusVenta(CveVenta, CveEstatus, UsuarioActual.CveEmpresa)) { sb.Append("El estatus de la factura fue cambiado a 'Emitida'."); } else { sb.Append("Ocurrió un error al cambiar el estatus de la factura."); } ObjVentas.Dispose(); } } } else { sb.Append("No se pudo comprobar la vigencia de la factura."); retorno.Mensaje = sb.ToString(); return retorno; } } catch (Exception ex) { sb.Append("Error al consumir el servicio: " + ex.Message); retorno.Mensaje = sb.ToString(); return retorno; } retorno.CveEstatus = CveEstatus; retorno.Mensaje = sb.ToString(); return retorno; } private Modelos.Factura.MCancelacionVentaMensaje CancelarDocumento(int CveVenta, int CveEstatus, int CveCliente, string Folio, string FolioFiscal, string CancelacionAcuse, DateTime CancelacionFecha, string TipoComprobante, double Total, int CvePACCancelacion, bool EsRefacturacion = false, string FolioSustitucion = "", int CveEstatusRefacturacion = 0) { Modelos.Factura.MCancelacionVentaMensaje retorno = null; var factura = new Modelos.Factura(UsuarioActual, CveVenta, UsuarioActual.CveEmpresa, EsCancelacion: true); if (EsRefacturacion) { //SI YA FUE REFACTURADA MARCALA COMO REFACTURADA if (!string.IsNullOrEmpty(FolioSustitucion)) { CveEstatusRefacturacion = 2; } if (CveEstatusRefacturacion > 0) { factura.CveEstatusRefacturacion = CveEstatusRefacturacion; } retorno = factura.CancelarPorRefacturacion(factura.CveMotivoCancelacion, factura.MotivoCancelacion, FolioSustitucion: FolioSustitucion); } else { retorno = factura.EjecutarCancelacionPendiente(CveEstatus, CancelacionFecha, CancelacionAcuse); } return retorno; } private string DecodeBase64(string strXMLCodificado) { try { byte[] decbuff = Convert.FromBase64String(strXMLCodificado); return System.Text.Encoding.UTF8.GetString(decbuff); } catch { return ""; } } protected void LnkValidar_Click(object sender, EventArgs e) { //this.HdnLigaRefacturar.Value = ""; this.CveVenta = -1; if (DtVentas != null) { var sb = new StringBuilder(); foreach (DataRow Row in DtVentas.Rows) { int CveVenta = Row["CveVenta"].ToEntero(); string Total = Row["Total"].ToString(); string SubTotal = Row["SubTotal"].ToString(); string Uuid = Row["FolioFiscal"].ToString(); string RFCCliente = Row["RFCCliente"].ToString(); string Folio = Row["Folio"].ToString(); string TipoDocto = Row["TipoDocto"].ToString(); string Nombre = Row["Nombre"].ToString(); int CveCliente = Row["CveCliente"].ToEntero(); if (CveVenta > 0) { sb.AppendFormat("{0}
", VerificarVigenciaSAT(CveVenta, CveCliente, Folio, TipoDocto, Uuid, UsuarioActual.Empresa.RFC, RFCCliente, SubTotal)); } } Alert(sb.ToString()); } CargaDatos(); } protected void GvDatos_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { if (e.Row.DBCampo("PuedeRefacturar").ToString().ToEntero() == 0 || !string.IsNullOrEmpty(e.Row.DBCampo("FolioFiscalSustitucion").ToString())) { e.Row.Cells[12].Text = ""; } //if (e.Row.DBCampo("PuedeRefacturar").ToString().ToEntero() == 1 && e.Row.DBCampo("CveEstatusFactura").ToString().ToEntero() == 23) //{ // e.Row.FCLinkButton("LnkValidarRefac").Visible = false; //} if (e.Row.DBCampo("PuedeRefacturar").ToString().ToEntero() == 0 && e.Row.DBCampo("CveEstatusFactura").ToString().ToEntero() == 23 && e.Row.DBCampo("CveVentaSustitucion").ToEntero() > 0) { e.Row.FCLinkButton("LnkCancelar").Visible = true; //e.Row.FCLinkButton("LnkValidarRefac").Visible = false; } } } public void BtnEnviarMailCancelacion_Click(object sender, EventArgs e) { if (this.CveVenta > 0) { ImprimeCancelacion(this.CveVenta); } else { Alert("No se encontro la factura para enviar el acuse", TipoMensaje.MsgAdvertencia); } } private byte[] DescargarPDF(string Parametros) { var Url = new Uri(string.Format("{0}Compras/PopUpVerFactura.aspx?P={1}", ClsPaginas.UrlSitio, Parametros)); byte[] File = null; try { using (var httpClient = new HttpClient()) { httpClient.Timeout = new TimeSpan(0, 15, 0); using (var request = new HttpRequestMessage(HttpMethod.Get, Url)) { request.Headers.Add("ADSToken", Encripta(string.Format("CVEEMPRESA={0}&TICKS={1}&CVEUSUARIO={2}", UsuarioActual.CveEmpresa, DateTime.UtcNow.Ticks, UsuarioActual.CveUsuario))); var response = httpClient.SendAsync(request).Result; if (response.StatusCode == System.Net.HttpStatusCode.OK) File = response.Content.ReadAsByteArrayAsync().Result; } } } catch (Exception ex) { File = null; this.OnError("Ocurrió un error al descargar la factura", ex); } return File; } public void ImprimeCancelacion(int CveVenta) { var Archivo = new System.IO.FileInfo(ModExtensiones.DirectorioBaseEmpresas + @"Empresas\Grales\Formatos\AcuseCancelacion.rdlc"); if (Archivo.Exists) { var ObjFactura = new Modelos.Factura(UsuarioActual, CveVenta, UsuarioActual.CveEmpresa); //string SelloCancelacion = ""; //string FechaCancelacion = ""; //DataTable DtDatos = null; //using (ClsVentas ObjVentas = new ClsVentas()) //{ // if (ObjVentas.GetVenta(CveVenta, UsuarioActual.CveEmpresa)) // { // DtDatos = ObjVentas.DtResultados.Copy(); // DataRow drv = DtDatos.Rows[0]; // SelloCancelacion = drv["SelloCancelacion"].ToString(); // FechaCancelacion = drv["FechaCancelacion"].ToString().ToDateTime().ToString("dd/MM/yyyy HH:mm:ss"); // } //} //List parametros = new List(); //parametros.Add(new ReportParameter("FechaCancelacion", FechaCancelacion.ToString())); //parametros.Add(new ReportParameter("FolioFiscal", ObjFactura.FolioFiscal)); //parametros.Add(new ReportParameter("RFCEmisor", UsuarioActual.Empresa.RFC)); //parametros.Add(new ReportParameter("SelloCancelacion", SelloCancelacion)); //byte[] ObjetoPDF = StreamPDF(@"Empresas\Grales\Formatos\AcuseCancelacion.rdlc", DtDatos, parametros, "AcuseCancelacion" + CveVenta); byte[] ObjetoPDF = DescargarPDF(Encripta(String.Format("OP=CAN&CVEVTA={0}", CveVenta))); List LSRutasMail = new List(); string Asunto = string.Empty; string Cuerpo = string.Empty; StringBuilder sb = new StringBuilder(); if (UsuarioActual.CveEmpresa == 119) { sb.Append(""); sb.Append(""); sb.Append(""); sb.Append(""); sb.Append(" Acuse De Cancelación"); sb.Append(" "); sb.Append(""); sb.Append(""); sb.Append(" "); sb.Append($" Estimado Cliente {ObjFactura.Cliente.Nombre},

"); sb.Append($" Le informamos que Agroquímicos JAM, S.A. DE C.V ha cancelado el CFDI {ObjFactura.SerieFolio}, el cual ha quedado sin Efectos Fiscales y encontrará adjunto en este correo el Acuse de
"); sb.Append($" cancelación del SAT.
"); sb.Append(" POR LO QUE PEDIMOS ELIMINARLO Y NO INCLUIRLO EN SU CONTABILIDAD, YA QUE PUEDE REPRESENTAR UN PROBLEMA FISCAL PARA USTED O SU EMPRESA CUANDO EL SAT REALICE UNA FUTURA AUDITORIA
"); sb.Append(" EN SU CONTABILIDAD.
"); sb.Append(" "); sb.Append("




"); sb.Append(" Este correo se generó automaticamente, favor de no responder este mensaje."); sb.Append("
"); sb.Append(""); sb.Append(""); } else { sb.Append(""); sb.Append(""); sb.Append(""); sb.Append(""); sb.Append(" Acuse De Cancelación"); sb.Append(" "); sb.Append(""); sb.Append(""); sb.Append(" "); sb.Append($" Estimado Cliente {ObjFactura.Cliente.Nombre},

"); sb.Append($" A través del presente medio la Empresa {UsuarioActual.Empresa.Empresa} - {UsuarioActual.Empresa.RFC}, canceló el documento tipo {ObjFactura.TipodeComprobante}
"); sb.Append($" con folio {ObjFactura.SerieFolio} y el Importe de ${ObjFactura.Total}.

"); sb.Append(" Le hacemos llegar el acuse de cancelación.
"); sb.Append(" "); sb.Append("




"); sb.Append(" Este correo se generó automaticamente, favor de no responder este mensaje."); sb.Append("
"); sb.Append(""); sb.Append(""); } Asunto = $"Acuse de Cancelacion {ObjFactura.SerieFolio}"; Cuerpo = sb.ToString(); string DisplayName = ""; if (UsuarioActual.CveEmpresa == 119) DisplayName = "Facturación Agroquímicos JAM"; LSRutasMail.Add(new ClsSisMail.ArchivoMail() { ArchivoBinario = ObjetoPDF, NombreArchivo = $"AcuseCancelacion{ObjFactura.SerieFolio}.pdf" }); ClsSisMail ObjMail = new ClsSisMail(); if (ObjMail.SendMail(UsuarioActual.Empresa, ObjFactura.Cliente.Mail, Asunto, Cuerpo, "", LSRutasMail, Displayname: DisplayName)) { Alert("El acuse de cancelación ha sido envíado correctamente."); } else { Alert("El acuse de cancelación no pudo ser enviado.", TipoMensaje.MsgError); } } } //protected void BtnAcuse_Click(object sender, EventArgs e) //{ // GridViewRow GvRow = (GridViewRow)(((LinkButton)sender).NamingContainer); // string UsuarioServicio = "rene.molina@adsistemas.mx"; // string ClaveServicio = "rene2018"; // string UrlServicio = "https://cfdi.gofac.com.mx/timbrado.asmx?WSDL"; // this.CveVenta = GvRow.DataKey("CveVenta").ToEntero(); // string Uuid = GvRow.DataKey("FolioFiscal"); // decimal Total = GvRow.DataKey("Total").ToDecimal(); // string RFCCliente = GvRow.DataKey("RFCCliente"); // string FolioFiscalSustitucion = GvRow.DataKey("FolioFiscalSustitucion"); // Cancelacion2022.AcuseSat resp = new Cancelacion2022.AcuseSat(); // GoFac.GoCfdi a = new GoFac.GoCfdi(); // a.ObtenerAcuse(UrlServicio, UsuarioActual.Empresa.RFC, UsuarioServicio, ClaveServicio, Uuid); // if (a.CodigoError != 0) // { // //no se pudo obtener, la mandamos cancelar // Timbrado ObjCancelacion = new Timbrado(); // if (ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, Uuid, Total, RFCCliente, UsuarioActual.Empresa.RFC, 4, ValidaFactura:false, CveSATMotivoCancelacion: 1, FolioSustitucion: FolioFiscalSustitucion )) // { // string b = ObjCancelacion.CancelacionAcuse; // //falta actualizar // Alert("Se regeneró la solicitud de cancelación"); // } // } //} } public class MRespuestaSAT { public int CveEstatus { get; set; } public bool EnviarAcuse { get; set; } public string LigaRefacturacion { get; set; } public bool IrARefacturar { get; set; } public string Mensaje { get; set; } }