diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb
index d19de8eef..eb2eea490 100644
--- a/App_Code/Modelos.vb
+++ b/App_Code/Modelos.vb
@@ -4217,16 +4217,14 @@ Namespace Modelos
'GENERAMOS EL ACUSE Y MANDAMOS MAIL DE CON EL ACUSE DE CANCELACIÓN
If RequiereAceptacion Then
CancelacionFecha = Now.Date
- CancelacionAcuse = ""
CveEstatus = 20
-
Else
CancelacionFecha = ObjCancelacion.CancelacionFecha
- CancelacionAcuse = ObjCancelacion.CancelacionAcuse
CveEstatus = 5
End If
+ CancelacionAcuse = ObjCancelacion.CancelacionAcuse
Else
- Retorno.Mensaje = "La factura no se pudo cancelar ante el SAT."
+ Retorno.Mensaje = "Los servicios de cancelación del SAT no se encuentran disponibles o presentan time out. Intente de nuevo en unos minutos. Origen del error: WebService www.sat.gob.mx"
Retorno.TipoMensaje = TipoMensaje.MsgError
Return Retorno
@@ -4568,22 +4566,21 @@ Namespace Modelos
'SI EXISTEN HAY EXISTENCIA EN (ENTREGA POR ADELANTADO) SE TIENE QUE REGRESAR AL ALMACEN GENERAL
If Not ErrorCancelar AndAlso ListaRemisionesCancelar IsNot Nothing AndAlso ListaRemisionesCancelar.Count > 0 Then
For Each CveRemision As Integer In ListaRemisionesCancelar
- For Each RowDevolucion As DataRow In DtDevoluciones.FiltraParametros($"CveRemision={CveRemision}", DistinctColumns:={"CveRemision", "CveAlmacen", "CveAlmacenDestino"}).Rows
+ Dim DtDevRemision As DataTable = DtDevoluciones.FiltraParametros($"CveRemision={CveRemision}")
- Dim DtDevRemision As DataTable = DtDevoluciones.FiltraParametros($"CveRemision={CveRemision}")
+ Dim RowDevolucion As DataRow = DtDevRemision.FiltraParametros("", DistinctColumns:={"CveRemision", "CveAlmacen", "CveAlmacenDestino"}).Rows(0)
- CveAlmacen = RowDevolucion("CveAlmacen").ToString().ToEntero()
- CveAlmacenDevolucion = RowDevolucion("CveAlmacenDestino").ToString().ToEntero()
+ CveAlmacen = RowDevolucion("CveAlmacen").ToString().ToEntero()
+ CveAlmacenDevolucion = RowDevolucion("CveAlmacenDestino").ToString().ToEntero()
- 'DEBE REGRESAR LA EXISTENCIA DE (ENTREGA POR ADELANTADO) AL ALMACEN GENERAL
- If Not CancelarMovimientosRemision(CveRemision, CveAlmacen, CveAlmacenDevolucion, DtDevRemision, ObjVentas, ObjInventario) Then
- ErrorCancelar = True
- MensajeError = "Ocurrió un error al cancelar los movimientos de la remisión."
- Exit For
- End If
+ 'DEBE REGRESAR LA EXISTENCIA DE (ENTREGA POR ADELANTADO) AL ALMACEN GENERAL
+ If Not CancelarMovimientosRemision(CveRemision, CveAlmacen, CveAlmacenDevolucion, DtDevRemision, ObjVentas, ObjInventario) Then
+ ErrorCancelar = True
+ MensajeError = "Ocurrió un error al cancelar los movimientos de la remisión."
+ Exit For
+ End If
- DtDevRemision.Dispose()
- Next
+ DtDevRemision.Dispose()
Next
End If
@@ -5030,22 +5027,34 @@ Namespace Modelos
End If
'ENTRADA A (ALMACEN GENERAL)
+ Dim DtEntradaDetalle As DataTable = Nothing
+
If Not ErrorCancelar Then
If ObjInventario.GetMovimientosDetalle(CveMovimientoSalidaDevRem, UsuarioActual.CveEmpresa) Then
- For Each Dr As DataRow In ObjInventario.DtResultados.Rows
+ DtEntradaDetalle = ObjInventario.DtResultados.Copy()
+ End If
+ End If
+
+ If Not ErrorCancelar Then
+ If DtEntradaDetalle IsNot Nothing Then
+ For Each Dr As DataRow In DtEntradaDetalle.Rows
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntradaDevRem, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, CveAF:=Dr("CveAF").ToString.ToEntero, Serie:=Dr("Serie").ToString, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString().ToEntero(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, Lote:=Dr("Lote").ToString) Then
ErrorCancelar = True
Exit For
End If
Next
+ Else
+ ErrorCancelar = True
End If
End If
-
- If Not ObjVentas.UpdateVentasDevolucionAlmacen(2, CveRemision) Then
- ErrorCancelar = True
+ If Not ErrorCancelar Then
+ If Not ObjVentas.UpdateVentasDevolucionAlmacen(2, CveRemision) Then
+ ErrorCancelar = True
+ End If
End If
+
Return Not ErrorCancelar
End Function
diff --git a/Ventas/RepCancelacionesPorRespuesta.aspx b/Ventas/RepCancelacionesPorRespuesta.aspx
index 06a752b32..878847631 100644
--- a/Ventas/RepCancelacionesPorRespuesta.aspx
+++ b/Ventas/RepCancelacionesPorRespuesta.aspx
@@ -1,134 +1,161 @@
-<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="RepCancelacionesPorRespuesta.aspx.cs" Inherits="Ventas_RepCancelacionesPorRespuesta" %>
-
-
-
-
-
-
- Reporte de Cancelaciones por Respuesta
-
-
-
-
-
");
+ 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);
+ }
+
+ }
+
+ }
+
+}
+public class MRespuestaSAT
+{
+ public bool EnviarAcuse { get; set; }
+ public string LigaRefacturacion { get; set; }
+ public bool IrARefacturar { get; set; }
+ public string Mensaje { get; set; }
}
\ No newline at end of file