From 583b1caebf0306c3917302f7a65ed3eb5ffb027f Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Tue, 26 Apr 2022 20:36:22 -0700 Subject: [PATCH] Refacturacion de facturas canceladas, cancelacion de refacturada desde el reporte. correccion de poliza en empresa UsaAC --- App_Code/ClsVentas.vb | 4 +- App_Code/Modelos.vb | 3 +- Ventas/RepCancelacionesPorRespuesta.aspx | 31 ++- Ventas/RepCancelacionesPorRespuesta.aspx.cs | 178 +++++++++++++--- Ventas/Ventas.aspx.vb | 224 +++++++++++--------- 5 files changed, 298 insertions(+), 142 deletions(-) diff --git a/App_Code/ClsVentas.vb b/App_Code/ClsVentas.vb index ae57244f9..21be0f560 100644 --- a/App_Code/ClsVentas.vb +++ b/App_Code/ClsVentas.vb @@ -838,7 +838,7 @@ Public Class ClsVentas Return Retorno End Function - Public Function UpdateEstatusVenta(CveVenta As Integer, CveEstatusFactura As Integer, CveEmpresa As Integer, Optional Num2 As Integer = -1) As Boolean + Public Function UpdateEstatusVenta(CveVenta As Integer, CveEstatusFactura As Integer, CveEmpresa As Integer, Optional Num2 As Integer = -1, Optional CveEstatusRefacturacion As Integer = -1, Optional CveMotivoCancelacion As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Vta_VentasEstatusUpdate") @@ -848,6 +848,8 @@ Public Class ClsVentas .Add("@CveEstatusFactura", SqlDbType.Int).Value = CveEstatusFactura .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa .Add("@Num2", SqlDbType.Float).Value = Num2 + .Add("@CveEstatusRefacturacion", SqlDbType.Int).Value = CveEstatusRefacturacion + .Add("@CveMotivoCancelacion", SqlDbType.Int).Value = CveMotivoCancelacion End With Try diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index b49be482e..e6fbe82fd 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -4845,7 +4845,8 @@ Namespace Modelos End If 'SI YA ESTA TIMBRADA, NUEVO PROCESO REFACTURACION, ASIGNA LA CANCELACION PENDIENTE - If EsRefacturacion AndAlso Me.CveEstatusFactura = 3 AndAlso CveMotivoCancelacion > 0 Then + 'EL ESTATUS REFACTURACION 4 ES PARA LAS QUE NO SE PUDIERON CANCELAR, DEBE OBLIGAR A CANCELAR ANTE EL SAT + If EsRefacturacion AndAlso Me.CveEstatusFactura = 3 AndAlso CveMotivoCancelacion > 0 AndAlso CveEstatusRefacturacion <> 4 Then CveEstatusFacturaAsignado = 23 End If diff --git a/Ventas/RepCancelacionesPorRespuesta.aspx b/Ventas/RepCancelacionesPorRespuesta.aspx index 3c079264a..a159d3b16 100644 --- a/Ventas/RepCancelacionesPorRespuesta.aspx +++ b/Ventas/RepCancelacionesPorRespuesta.aspx @@ -41,7 +41,7 @@
-
+
" style="display: inline-block; margin-right: -20px; width: 150px;" /> " style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"> @@ -49,12 +49,12 @@
- +
- + @@ -70,7 +70,7 @@ - + @@ -88,7 +88,7 @@
-
+
" style="display: inline-block; margin-right: -20px; width: 150px;" /> " style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"> @@ -96,14 +96,14 @@
- +
- + @@ -115,7 +115,7 @@ - + @@ -123,10 +123,19 @@ - +
+
+ +
+
+
+
+ +
+
- +
diff --git a/Ventas/RepCancelacionesPorRespuesta.aspx.cs b/Ventas/RepCancelacionesPorRespuesta.aspx.cs index f00369605..e86360122 100644 --- a/Ventas/RepCancelacionesPorRespuesta.aspx.cs +++ b/Ventas/RepCancelacionesPorRespuesta.aspx.cs @@ -68,9 +68,9 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas } ObjVentas.Dispose(); - GvDatos.DataSource = DtVentas.FiltraParametros("(CveEstatusFactura = 20 AND CveEstatusRefacturacion = 0)"); + GvDatos.DataSource = DtVentas.FiltraParametros("(CveEstatusFactura = 20 AND CveEstatusRefacturacion IN (0,4))"); - var DtRefacturar = DtVentas.FiltraParametros("CveEstatusRefacturacion IN (1,3) OR (CveEstatusFactura = 20 AND CveEstatusRefacturacion > 0) OR CveEstatusFactura = 23"); + var DtRefacturar = DtVentas.FiltraParametros("CveEstatusRefacturacion IN (1,3) OR (CveEstatusFactura = 20 AND CveEstatusRefacturacion IN (1,2,3)) OR CveEstatusFactura = 23"); if (DtRefacturar != null && DtRefacturar.Rows.Count > 0) { DivRefacturar.Visible = true; @@ -177,9 +177,25 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas string Nombre = GvRow.DataKey("Nombre"); string FolioSustitucion = GvRow.DataKey("FolioFiscalSustitucion"); + int CveMotivoCancelacion = -1; + int CveEstatusRefacturacion = GvRow.DataKey("CveEstatusRefacturacion").ToEntero(); + + //SI NO SE PUDO CANCELAR, CANCELAR CON EL 02 + if (CveEstatusRefacturacion == 4) + { + FolioSustitucion = ""; + //CUANDO LAS REFACTURACIONES NO SE PUEDEN CANCELAR, DEBE SER CANCELADO CON EL MOTIVO 02 + CveMotivoCancelacion = get_GlobalDTMotivosCancelacionEmpresa(UsuarioActual.CveEmpresa, CveSATMotivoCancelacion: 2).FiltroPrimeroValor("CveMotivoCancelacion").ToEntero(); + } + else + { + CveEstatusRefacturacion = 2; + } + + 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); + var respCancelacion = CancelarDocumento(CveVenta, -1, CveCliente, Folio, Uuid, "", DateTime.Now, TipoDocto, Total.ToDouble(), UsuarioActual.Empresa.CvePAC, EsRefacturacion: true, FolioSustitucion: FolioSustitucion, CveEstatusRefacturacion: CveEstatusRefacturacion); if (!respCancelacion.HuboError) { @@ -463,7 +479,7 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas 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) + 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, int CveMotivoCancelacion = 0) { Modelos.Factura.MCancelacionVentaMensaje retorno = null; var factura = new Modelos.Factura(UsuarioActual, CveVenta, UsuarioActual.CveEmpresa, EsCancelacion: true); @@ -480,12 +496,22 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas factura.CveEstatusRefacturacion = CveEstatusRefacturacion; } + if (CveMotivoCancelacion > 0) + { + factura.CveMotivoCancelacion = CveMotivoCancelacion; + } + int CveEstatusFactura = -1; //SI LA FACTURA YA ESTA CANCELADA, LA ASIGNA YA COMO CANCELADA if (CveEstatus == 5) { CveEstatusFactura = CveEstatus; } + //NO DEBE DE ASIGNAR ESTATUS + if (CveEstatus == -2) + { + CveEstatusFactura = -1; + } retorno = factura.CancelarPorRefacturacion(factura.CveMotivoCancelacion, factura.MotivoCancelacion, FolioSustitucion: FolioSustitucion, CveEstatusFacturaAsignado: CveEstatusFactura); } @@ -561,6 +587,11 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas 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; + //SOLO MOSTRAR SI LA FACTURA NUEVA ESTA EMITIDA + if (e.Row.DBCampo("CveEstatusRefacturacion").ToString().ToEntero() != 4 && e.Row.DBCampo("CveEstatusFacturaSustitucion").ToString().ToEntero() == 3) + { + e.Row.FCLinkButton("LnkCancelarFolioSustitucion").Visible = true; + } } } } @@ -708,40 +739,127 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas } + protected void LnkCancelarFolioSustitucion_Click(object sender, EventArgs e) + { + //this.HdnLigaRefacturar.Value = ""; + this.CveVenta = -1; - //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"; + GridViewRow GvRow = (GridViewRow)(((LinkButton)sender).NamingContainer); + this.CveVenta = GvRow.DataKey("CveVentaSustitucion").ToEntero(); - // this.CveVenta = GvRow.DataKey("CveVenta").ToEntero(); + int CveCliente = GvRow.DataKey("CveClienteSustitucion").ToEntero(); + string Total = GvRow.DataKey("TotalSustitucion"); + string RFCReceptor = GvRow.DataKey("RFCReceptorSustitucion"); + string TipoDocto = GvRow.DataKey("TipoDocto"); + string Nombre = GvRow.DataKey("Nombre"); + string FolioSustitucion = GvRow.DataKey("FolioFiscalSustitucion"); + string SerieFolioSustitucion = GvRow.DataKey("SerieFolioSustitucion"); - // 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); + int CveVentaOriginal = GvRow.DataKey("CveVenta").ToEntero(); + string SerieFolioOriginal = GvRow.DataKey("SerieFolio"); - // if (a.CodigoError != 0) - // { - // //no se pudo obtener, la mandamos cancelar - // Timbrado ObjCancelacion = new Timbrado(); + //CUANDO LAS REFACTURACIONES NO SE PUEDEN CANCELAR, DEBE SER CANCELADO CON EL MOTIVO 02 + int CveMotivoCancelacion = get_GlobalDTMotivosCancelacionEmpresa(UsuarioActual.CveEmpresa, CveSATMotivoCancelacion: 2).FiltroPrimeroValor("CveMotivoCancelacion").ToEntero(); - // 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"); - // } + if (CveVenta > 0 && FolioSustitucion != "") + { + var respCancelacion = CancelarDocumento(CveVenta, -2, CveCliente, "", FolioSustitucion, "", DateTime.Now, TipoDocto, Total.ToDouble(), UsuarioActual.Empresa.CvePAC, EsRefacturacion: true, FolioSustitucion: "", CveEstatusRefacturacion: 4, CveMotivoCancelacion: CveMotivoCancelacion); + if (!respCancelacion.HuboError) + { + var sb = new StringBuilder(); + var EnviarAcuse = false; + if (respCancelacion.CveEstatus > 0) + { + if (respCancelacion.CveEstatus.Contiene(5, 20)) + { + EnviarAcuse = true; + } - // } + var CveEstatus = respCancelacion.CveEstatus; + var ObjVentas = new ClsVentas(); + if (ObjVentas.UpdateEstatusVenta(CveVenta, CveEstatus, UsuarioActual.CveEmpresa)) + { + if (respCancelacion.CveEstatus == 20) + { + sb.Append($"El estatus de la factura {SerieFolioSustitucion} fue cambiado a 'Cancelación en proceso'."); + sb.Append("El documento se canceló correctamente."); + sb.Append($"
Imprimir Acuse"); + } + else if (respCancelacion.CveEstatus == 23) + { + sb.Append("La solicitud de cancelación no la aplicó el SAT, intente cancelar de nuevo."); + } + else if (respCancelacion.CveEstatus == 5) + { + sb.Append($"El estatus de la factura {SerieFolioSustitucion} fue cambiado a 'Cancelada'."); + sb.Append("El documento se canceló correctamente."); + sb.Append($"
Imprimir Acuse"); + } - //} + if (respCancelacion.CveEstatus.Contiene(5,20)) + { + if (ObjVentas.UpdateEstatusVenta(CveVentaOriginal, 23, UsuarioActual.CveEmpresa, CveEstatusRefacturacion:4, CveMotivoCancelacion: CveMotivoCancelacion)) + { + sb.Append($"
La Factura {SerieFolioOriginal} fue desligada."); + } + } + + } + else + { + sb.Append("Ocurrió un error al cambiar el estatus de la factura."); + } + ObjVentas.Dispose(); + + if (respCancelacion.CveEstatus == 23) + { + var resp = Timbrado.VerificarVigenciaSAT(FolioSustitucion, UsuarioActual.Empresa.RFC, RFCReceptor, Total, true); + if (resp != null) + { + sb.AppendFormat("
Folio Fiscal: {0}
", FolioSustitucion); + 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); + } + } + } + else + { + var resp = Timbrado.VerificarVigenciaSAT(FolioSustitucion, UsuarioActual.Empresa.RFC, RFCReceptor, Total, true); + if (resp != null) + { + sb.AppendFormat("Folio Fiscal: {0}
", FolioSustitucion); + 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); + } + + sb.Append(respCancelacion.Mensaje); + } + + if (EnviarAcuse) + { + sb.Append("

¿Desea enviar el Acuse de Cancelación al Cliente?"); + Alert(sb.ToString(), TipoMensaje.MsgConfirmacion, "BtnEnviarMailCancelacion();", TextoConfirmacion: "Enviar", TextoSegundoBoton: "Cancelar"); + } + else + { + Alert(sb.ToString()); + } + } + else + { + Alert(respCancelacion.Mensaje, TipoMensaje.MsgError); + } + + CargaDatos(); + } + UPDatos.Update(); + + } } public class MRespuestaSAT { diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 2187ff233..e264f5997 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -1266,6 +1266,14 @@ Partial Class Ventas ViewState("CveEstatusRefacturacion") = value End Set End Property + Private Property RefacturarCancelada As Boolean + Get + Return If(IsNothing(ViewState("RefacturarCancelada")), False, CBool(ViewState("RefacturarCancelada"))) + End Get + Set(value As Boolean) + ViewState("RefacturarCancelada") = value + End Set + End Property Private Property CveEstadoCancelacion As Integer Get @@ -4393,10 +4401,13 @@ Partial Class Ventas 'End If - If Not CveEstatus.Contiene(4, 5, 12, 13, 20, 23) AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ing", "Egs", "Ant") AndAlso UsuarioActual.TienePermisoProceso(159) Then + If (Not CveEstatus.Contiene(4, 5, 12, 13, 20, 23) OrElse (CveEstatus = 5 AndAlso DbRowVenta("CveEstatusRefacturacion").ToString().ToEntero() = 4)) AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ing", "Egs", "Ant") AndAlso UsuarioActual.TienePermisoProceso(159) Then Dim TienePermiso As String = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, -1).FiltroPrimeroValor("CveSubProyecto", String.Format("CveSubProyecto = {0}", DbRowVenta("CveSubProyecto"))) If TienePermiso <> "" Then LkRefacturacion.Visible = True + If (CveEstatus = 5 AndAlso DbRowVenta("CveEstatusRefacturacion").ToString().ToEntero() = 4) Then + RefacturarCancelada = True + End If End If End If @@ -9106,6 +9117,15 @@ Partial Class Ventas End If End If + 'MARCAR LA FACTURA ANTERIOR + If (Me.CveDevolucion > 0 AndAlso Me.NuevaFactura = 1) Then + If Me.ObjFacturaNC IsNot Nothing Then + If Me.ObjFacturaNC.CveEstatusRefacturacion = 4 AndAlso Not ObjVentas.UpdateEstatusVenta(ObjFacturaNC.CveVenta, ObjFacturaNC.CveEstatusFactura, UsuarioActual.CveEmpresa, CveEstatusRefacturacion:=5) Then + ErrorList.Add("No se actualizó el estatus de la factura anterior.") + End If + End If + End If + If ObjFactura.CveVenta > 0 AndAlso ErrorList.Count = 0 AndAlso (SeGuardoPrePoliza Or ObjFactura.TipoDocto.Contiene("Ped", "Cot", "DPe", "PeC", "PA", "Pd2")) Then ObjVentas.Commit() @@ -9134,13 +9154,14 @@ Partial Class Ventas End If Else Alert(String.Format("Falta asignación de las siguientes cuentas contables: {0}", CuentasContablesInvalidas), TipoMensaje.MsgAdvertencia) + End If + Else + If UsuarioActual.Empresa.UsaAC Then + If ObjContPaq IsNot Nothing Then ObjContPaq.Commit() End If End If - - 'If ObjContPaq IsNot Nothing Then ObjContPaq.RollBack() - 'RMF, cuando es pedido, se manda autorización. If ObjFactura.TipoDocto.Contiene("PA") Then @@ -9268,7 +9289,7 @@ Partial Class Ventas 'CANCELAR FACTURA ANTERIOR If SeTimbro AndAlso (Me.CveDevolucion > 0 AndAlso Me.NuevaFactura = 1) Then - If Me.ObjFacturaNC IsNot Nothing Then + If Me.ObjFacturaNC IsNot Nothing AndAlso Me.ObjFacturaNC.CveEstatusFactura <> 5 Then Me.ObjFacturaNC.CveEstatusRefacturacion = 2 'MARCAR COMO REFACTURADA MsgCancelacionRefacturacion = Me.ObjFacturaNC.CancelarPorRefacturacion(Me.ObjFacturaNC.CveMotivoCancelacion, Me.ObjFacturaNC.MotivoCancelacion, FolioFiscalFactura) End If @@ -20905,129 +20926,134 @@ Partial Class Ventas 'End Sub Private Sub BtnNuevaFactura_Click(sender As Object, e As EventArgs) Handles LkRefacturacion.Click 'Nos vamos a la nueva factura - Dim script As String = "" - If DdlTipoComprobante.SelectedValue.Contiene("Ing", "Ant", "Dev", "Egs") Then - Dim sb As New StringBuilder() + If RefacturarCancelada Then + Response.Redirect($"Ventas.aspx?CveDevolucion={CveVenta}&NuevaFactura=1") + Else + Dim script As String = "" + If DdlTipoComprobante.SelectedValue.Contiene("Ing", "Ant", "Dev", "Egs") Then + Dim sb As New StringBuilder() - If Not String.IsNullOrEmpty(FolioFiscal) AndAlso Not (UsuarioActual.Empresa.Funcionalidad(529) = "1") Then - sb.Append("La factura se encuentra en el siguiente estatus del SAT:
") + If Not String.IsNullOrEmpty(FolioFiscal) AndAlso Not (UsuarioActual.Empresa.Funcionalidad(529) = "1") Then + sb.Append("La factura se encuentra en el siguiente estatus del SAT:
") - Dim TotalT As Decimal = TxtTotal.Text.ToDecimal - Dim RFCReceptor As String = LblRFC.Text.Trim + Dim TotalT As Decimal = TxtTotal.Text.ToDecimal + Dim RFCReceptor As String = LblRFC.Text.Trim - 'SI SE FACTURO LA SUCURSAL DEL CLIENTE TOMA EL RFC DE ESTA - If FacturarSucursal AndAlso Me.ClienteSucursal IsNot Nothing Then - RFCReceptor = Me.ClienteSucursal.RFC - End If + 'SI SE FACTURO LA SUCURSAL DEL CLIENTE TOMA EL RFC DE ESTA + If FacturarSucursal AndAlso Me.ClienteSucursal IsNot Nothing Then + RFCReceptor = Me.ClienteSucursal.RFC + End If - Dim SWatch As New Stopwatch - SWatch.Start() + Dim SWatch As New Stopwatch + SWatch.Start() - Dim Vigencia = Timbrado.VerificarVigenciaSAT(FolioFiscal, UsuarioActual.Empresa.RFC, RFCReceptor, TotalT.ToString(), True) - SWatch.Stop() + Dim Vigencia = Timbrado.VerificarVigenciaSAT(FolioFiscal, UsuarioActual.Empresa.RFC, RFCReceptor, TotalT.ToString(), True) + SWatch.Stop() - Dim SegundosRespuesta As Double = SWatch.ElapsedMilliseconds / 1000 - SegundosRespuesta = SegundosRespuesta.ToEntero + Dim SegundosRespuesta As Double = SWatch.ElapsedMilliseconds / 1000 + SegundosRespuesta = SegundosRespuesta.ToEntero - If SegundosRespuesta >= 5 Then - Alert($"Los servicios de validacion del SAT presentan lentitud en la respuesta [{ SegundosRespuesta } s].", TipoMensaje.ToastError, "") - End If + If SegundosRespuesta >= 5 Then + Alert($"Los servicios de validacion del SAT presentan lentitud en la respuesta [{ SegundosRespuesta } s].", TipoMensaje.ToastError, "") + End If - If Vigencia IsNot Nothing Then + If Vigencia IsNot Nothing Then - If Vigencia.EsCancelable.ToUpper() = "NO CANCELABLE" Then - sb.AppendFormat("{0}
", Vigencia.EsCancelable) + If Vigencia.EsCancelable.ToUpper() = "NO CANCELABLE" Then + sb.AppendFormat("{0}
", Vigencia.EsCancelable) - DivRelacionadasRefacturacion.Visible = True - BtnMotivoRefacturacion.Visible = False - DivMotivoRefacturacionTexto.Visible = False + DivRelacionadasRefacturacion.Visible = True + BtnMotivoRefacturacion.Visible = False + DivMotivoRefacturacionTexto.Visible = False - Dim Relacionados = Timbrado.ConsultarUUIDRelacionados(UsuarioActual.Empresa, FolioFiscal, UsuarioActual.Empresa.FacturaProduccion) - If Relacionados IsNot Nothing Then - Dim sbExtra As New StringBuilder() - If Relacionados.Codigo = 500 Then - sbExtra.Append("El servicio de verificación de documentos relacionados no esta disponible.") - Else - sbExtra.Append(Relacionados.Mensaje) + Dim Relacionados = Timbrado.ConsultarUUIDRelacionados(UsuarioActual.Empresa, FolioFiscal, UsuarioActual.Empresa.FacturaProduccion) + If Relacionados IsNot Nothing Then + Dim sbExtra As New StringBuilder() + If Relacionados.Codigo = 500 Then + sbExtra.Append("El servicio de verificación de documentos relacionados no esta disponible.") + Else + sbExtra.Append(Relacionados.Mensaje) - Dim SbHijos = New StringBuilder() - Dim SbPadres = New StringBuilder() + Dim SbHijos = New StringBuilder() + Dim SbPadres = New StringBuilder() - 'If Relacionados.RelacionadosHijo IsNot Nothing Then - ' For Each hijo In Relacionados.RelacionadosHijo - ' SbHijos.AppendFormat("{0};", hijo.Uuid) - ' Next - ' If SbHijos.Length > 0 Then - ' SbHijos.Remove(SbHijos.Length - 1, 1) - ' End If - 'End If - - If Relacionados.RelacionadosPadre IsNot Nothing Then - For Each padre In Relacionados.RelacionadosPadre - SbPadres.AppendFormat("{0};", padre.Uuid) - Next - If SbPadres.Length > 0 Then - SbPadres.Remove(SbPadres.Length - 1, 1) - End If - End If - - Using ObjVentas As New ClsVentas - - 'If SbHijos.Length > 0 Then - ' If ObjVentas.GetFacturasRelacionadasPorFolioFiscal(SbHijos.ToString(), UsuarioActual.CveEmpresa) Then - ' GvFacturasHijosCancelar.DataSource = ObjVentas.DtResultados.Copy() + 'If Relacionados.RelacionadosHijo IsNot Nothing Then + ' For Each hijo In Relacionados.RelacionadosHijo + ' SbHijos.AppendFormat("{0};", hijo.Uuid) + ' Next + ' If SbHijos.Length > 0 Then + ' SbHijos.Remove(SbHijos.Length - 1, 1) ' End If 'End If - If SbPadres.Length > 0 Then - If ObjVentas.GetFacturasRelacionadasPorFolioFiscal(SbPadres.ToString(), UsuarioActual.CveEmpresa) Then - GvFacturasPadreRefacturar.DataSource = ObjVentas.DtResultados.FiltraParametros($"CveVenta <> {CveVenta}") + If Relacionados.RelacionadosPadre IsNot Nothing Then + For Each padre In Relacionados.RelacionadosPadre + SbPadres.AppendFormat("{0};", padre.Uuid) + Next + If SbPadres.Length > 0 Then + SbPadres.Remove(SbPadres.Length - 1, 1) End If End If - End Using + Using ObjVentas As New ClsVentas + + 'If SbHijos.Length > 0 Then + ' If ObjVentas.GetFacturasRelacionadasPorFolioFiscal(SbHijos.ToString(), UsuarioActual.CveEmpresa) Then + ' GvFacturasHijosCancelar.DataSource = ObjVentas.DtResultados.Copy() + ' End If + 'End If + + If SbPadres.Length > 0 Then + If ObjVentas.GetFacturasRelacionadasPorFolioFiscal(SbPadres.ToString(), UsuarioActual.CveEmpresa) Then + GvFacturasPadreRefacturar.DataSource = ObjVentas.DtResultados.FiltraParametros($"CveVenta <> {CveVenta}") + End If + End If + + End Using + + 'GvFacturasHijosCancelar.DataBind() + GvFacturasPadreRefacturar.DataBind() + End If + + If sbExtra.Length > 0 Then + LbExtraRefacturacion.Text = $"
*{sbExtra.ToString()}" + End If - 'GvFacturasHijosCancelar.DataBind() - GvFacturasPadreRefacturar.DataBind() End If - - If sbExtra.Length > 0 Then - LbExtraRefacturacion.Text = $"
*{sbExtra.ToString()}" - End If - End If - End If - If Vigencia.EsCancelable = "Cancelable sin aceptación" Then - 'script = "BtnRefacturacionConfirmarAceptacion();" - Me.CveEstadoCancelacion = 1 - sb.AppendFormat("{0}
", Vigencia.EsCancelable) - sb.Append("Está seguro de realizar la refacturación?.") - End If + If Vigencia.EsCancelable = "Cancelable sin aceptación" Then + 'script = "BtnRefacturacionConfirmarAceptacion();" + Me.CveEstadoCancelacion = 1 + sb.AppendFormat("{0}
", Vigencia.EsCancelable) + sb.Append("Está seguro de realizar la refacturación?.") + End If - If Vigencia.EsCancelable = "Cancelable con aceptación" OrElse String.IsNullOrEmpty(Vigencia.EsCancelable) Then - 'script = "BtnRefacturacionConfirmar();" - Me.CveEstadoCancelacion = 2 - sb.AppendFormat("{0}
", "Cancelable con aceptación") - sb.Append("Está seguro de cancelar el documento para realizar la refacturación?.") + If Vigencia.EsCancelable = "Cancelable con aceptación" OrElse String.IsNullOrEmpty(Vigencia.EsCancelable) Then + 'script = "BtnRefacturacionConfirmar();" + Me.CveEstadoCancelacion = 2 + sb.AppendFormat("{0}
", "Cancelable con aceptación") + sb.Append("Está seguro de cancelar el documento para realizar la refacturación?.") + End If + Else + 'If Not UsuarioActual.Empresa.FacturaProduccion Then + ' script = "BtnRefacturacionConfirmar();" + 'End If + sb.Append("No encontrado
") End If Else - 'If Not UsuarioActual.Empresa.FacturaProduccion Then - ' script = "BtnRefacturacionConfirmar();" - 'End If - sb.Append("No encontrado
") + 'sb.Append("¿Desea realizar la refacturación?
") + script = "BtnRefacturacionConfirmarAceptacion();" End If - Else - 'sb.Append("¿Desea realizar la refacturación?
") - script = "BtnRefacturacionConfirmarAceptacion();" + + LblEstatusRefacturacion.Text = sb.ToString() + UpMotivoRefac.Update() + + RegistraScript("$('#DivMotivoRefacturacion').modal({ backdrop: 'static', keyboard: false });", "R1") + 'Alert(sb.ToString(), TipoMensaje.MsgConfirmacion, JSBtnAceptar:=script, TextoConfirmacion:="    Si    ", TextoCancelacion:="    No    ") End If - - LblEstatusRefacturacion.Text = sb.ToString() - UpMotivoRefac.Update() - - RegistraScript("$('#DivMotivoRefacturacion').modal({ backdrop: 'static', keyboard: false });", "R1") - 'Alert(sb.ToString(), TipoMensaje.MsgConfirmacion, JSBtnAceptar:=script, TextoConfirmacion:="    Si    ", TextoCancelacion:="    No    ") End If + End Sub Private Sub BtnMotivoRefacturacion_Click(sender As Object, e As System.EventArgs) Handles BtnMotivoRefacturacion.Click