SAT. Cambios en cancelacion de factura. Reforma Fiscal 2022
This commit is contained in:
@@ -261,6 +261,19 @@ Public Class ClsGenerales
|
||||
End Try
|
||||
Return retorno
|
||||
End Function
|
||||
|
||||
Public Function GetMotivosCancelacionSAT() As Boolean
|
||||
Dim retorno As Boolean = False
|
||||
DataAdapter("PA_Gral_SAT_MotivosCancelacionGet")
|
||||
Try
|
||||
SqlAdapter.Fill(Data)
|
||||
retorno = True
|
||||
Catch ex As Exception
|
||||
OnError("Ocurrió un error al obtener los mptivos de cancelación.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo())
|
||||
End Try
|
||||
Return retorno
|
||||
End Function
|
||||
|
||||
#Region " I N D I C A D O R E S Y G R A F I C A S"
|
||||
Public Function GetIndicadores(CveEmpresa As Integer) As DataSet
|
||||
'Dim Retorno As Boolean = False
|
||||
|
||||
@@ -1140,6 +1140,35 @@ Public Class ClsPaginas
|
||||
'ObjUnidadesMedida.Dispose()
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Shared Property GlobalDTSATMotivosCancelacion(Optional CveMotivoCancelacion As Integer = -1, Optional CodigoSAT As String = "-1") As DataTable
|
||||
Get
|
||||
If HttpContext.Current.Application("GlobalDTSATMotivosCancelacion") Is Nothing Then
|
||||
Using ObjGral As New ClsGenerales
|
||||
If ObjGral.GetMotivosCancelacionSAT() Then
|
||||
HttpContext.Current.Application("GlobalDTSATMotivosCancelacion") = ObjGral.DtResultados.Copy()
|
||||
End If
|
||||
End Using
|
||||
End If
|
||||
|
||||
If CveMotivoCancelacion <> -1 OrElse CodigoSAT <> "-1" Then
|
||||
Dim StrSQL As New StringBuilder
|
||||
StrSQL.Append("1=1")
|
||||
If CveMotivoCancelacion <> -1 Then StrSQL.AppendFormat(" AND CveMotivoCancelacion = {0}", CveMotivoCancelacion)
|
||||
If CodigoSAT <> "-1" Then StrSQL.AppendFormat(" AND CodigoSAT = '{0}'", CodigoSAT)
|
||||
|
||||
Dim Dv As New DataView(DirectCast(HttpContext.Current.Application("GlobalDTSATMotivosCancelacion"), DataTable), StrSQL.ToString.Trim.TrimStart("A"c, "N"c, "D"c), " CveMotivoCancelacion", DataViewRowState.CurrentRows)
|
||||
GlobalDTSATMotivosCancelacion = Dv.ToTable
|
||||
Dv.Dispose()
|
||||
Else
|
||||
GlobalDTSATMotivosCancelacion = DirectCast(HttpContext.Current.Application("GlobalDTSATMotivosCancelacion"), DataTable)
|
||||
End If
|
||||
|
||||
End Get
|
||||
Set(ByVal value As DataTable)
|
||||
HttpContext.Current.Application("GlobalDTSATMotivosCancelacion") = value
|
||||
End Set
|
||||
End Property
|
||||
Property GlobalDTEstatusOrdenCompra() As DataTable
|
||||
Get
|
||||
GlobalDTEstatusOrdenCompra = DirectCast(Application("GlobalDTEstatusOrdenCompra"), DataTable)
|
||||
|
||||
@@ -701,7 +701,8 @@ Public Class ClsVentas
|
||||
End Function
|
||||
Public Function UpdateEstatusFactura(Estatus As Integer, FolioFiscal As String, SelloSAT As String, FechaCancelacion As DateTime, CveVenta As Integer,
|
||||
Optional IdPolizaCancelacion As Integer = -1, Optional CvePAC As Integer = -1, Optional CveEstatusRefacturacion As Integer = 0,
|
||||
Optional CveUsuarioCambiaEstatus As Integer = -1, Optional FechaCambioEstatus As String = "-1", Optional RFCReceptor As String = "-1") As Boolean
|
||||
Optional CveUsuarioCambiaEstatus As Integer = -1, Optional FechaCambioEstatus As String = "-1", Optional RFCReceptor As String = "-1",
|
||||
Optional CveMotivoCancelacion As Integer = -1, Optional MotivoCancelacion As String = "") As Boolean
|
||||
Dim Retorno As Boolean = False
|
||||
|
||||
DataAdapter("PA_VentasUpdateEstatus")
|
||||
@@ -718,6 +719,8 @@ Public Class ClsVentas
|
||||
.Add("@CveUsuarioCambiaEstatus", SqlDbType.Int).Value = CveUsuarioCambiaEstatus
|
||||
.Add("@FechaCambioEstatus", SqlDbType.VarChar).Value = FechaCambioEstatus
|
||||
.Add("@RFCReceptor", SqlDbType.VarChar).Value = RFCReceptor
|
||||
.Add("@CveMotivoCancelacion", SqlDbType.Int).Value = CveMotivoCancelacion
|
||||
.Add("@MotivoCancelacion", SqlDbType.VarChar).Value = MotivoCancelacion
|
||||
End With
|
||||
|
||||
Try
|
||||
|
||||
@@ -4591,8 +4591,8 @@ Namespace Modelos
|
||||
''' Cancela la factura para poder realizar la refacturacion
|
||||
''' </summary>
|
||||
''' <returns></returns>
|
||||
Public Function CancelarPorRefacturacion() As MCancelacionVentaMensaje
|
||||
Return CancelarVenta(Me, Me.UsuarioActual, EsRefacturacion:=True)
|
||||
Public Function CancelarPorRefacturacion(CveMotivoCancelacion As Integer, Motivo As String, Optional FolioSustitucion As String = "") As MCancelacionVentaMensaje
|
||||
Return CancelarVenta(Me, Me.UsuarioActual, EsRefacturacion:=True, CveMotivoCancelacion:=CveMotivoCancelacion, MotivoCancelacion:=Motivo, FolioSustitucion:=FolioSustitucion)
|
||||
End Function
|
||||
''' <summary>
|
||||
''' Cancela la factura y realiza las operaciones correspondientes
|
||||
@@ -4600,13 +4600,15 @@ Namespace Modelos
|
||||
''' <param name="RealizarDevolucionAlmacen"></param>
|
||||
''' <param name="ListaRemisionesCancelar"></param>
|
||||
''' <returns></returns>
|
||||
Public Function CancelarFactura(RealizarDevolucionAlmacen As Boolean, Optional ListaRemisionesCancelar As List(Of Integer) = Nothing) As MCancelacionVentaMensaje
|
||||
Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar)
|
||||
Public Function CancelarFactura(RealizarDevolucionAlmacen As Boolean, Optional ListaRemisionesCancelar As List(Of Integer) = Nothing, Optional Motivo As String = "") As MCancelacionVentaMensaje
|
||||
'Comprobante emitido con errores sin relación
|
||||
Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveMotivoCancelacion:=2, MotivoCancelacion:=Motivo)
|
||||
End Function
|
||||
|
||||
Private Function CancelarVenta(ObjFactura As Modelos.Factura, UsuarioActual As Usuario, Optional EsRefacturacion As Boolean = False, Optional RealizarDevolucionAlmacen As Boolean = False,
|
||||
Optional ListaRemisionesCancelar As List(Of Integer) = Nothing, Optional CveEstatusFacturaAsignado As Integer = -1,
|
||||
Optional FechaCancelacion As String = "-1", Optional AcuseCancelacion As String = "") As MCancelacionVentaMensaje
|
||||
Optional FechaCancelacion As String = "-1", Optional AcuseCancelacion As String = "",
|
||||
Optional CveMotivoCancelacion As Integer = -1, Optional MotivoCancelacion As String = "", Optional FolioSustitucion As String = "") As MCancelacionVentaMensaje
|
||||
Dim Retorno As New MCancelacionVentaMensaje()
|
||||
Dim ErrorList As New List(Of String)
|
||||
|
||||
@@ -4783,6 +4785,11 @@ Namespace Modelos
|
||||
Dim RequiereAceptacion As Boolean = False
|
||||
Dim Mensaje As String = ""
|
||||
|
||||
'SI YA ESTA TIMBRADA, NUEVO PROCESO REFACTURACION, ASIGNA LA CANCELACION PENDIENTE
|
||||
If EsRefacturacion AndAlso Me.CveEstatusFactura = 3 AndAlso CveMotivoCancelacion > 0 Then
|
||||
CveEstatusFacturaAsignado = 23
|
||||
End If
|
||||
|
||||
If CveEstatusFacturaAsignado <= 0 Then
|
||||
Try
|
||||
If ObjFactura.FolioFiscal <> "" AndAlso UsuarioActual.Empresa.FacturaProduccion Then
|
||||
@@ -4865,7 +4872,7 @@ Namespace Modelos
|
||||
|
||||
If Not ObtenerAcuse Then
|
||||
If ContinuarCancelacion Then
|
||||
If ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, TotalT, RFCReceptor, UsuarioActual.Empresa.RFC, CvePACCancelacion) Then
|
||||
If ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, TotalT, RFCReceptor, UsuarioActual.Empresa.RFC, CvePACCancelacion, CveMotivoCancelacion:=CveMotivoCancelacion, FolioSustitucion:=FolioSustitucion) Then
|
||||
'GENERAMOS EL ACUSE Y MANDAMOS MAIL DE CON EL ACUSE DE CANCELACIÓN
|
||||
If RequiereAceptacion Then
|
||||
CancelacionFecha = Now.Date
|
||||
@@ -4906,7 +4913,7 @@ Namespace Modelos
|
||||
End Try
|
||||
Else
|
||||
CveEstatus = CveEstatusFacturaAsignado
|
||||
CancelacionFecha = FechaCancelacion.ToDateTime()
|
||||
CancelacionFecha = If(IsDate(FechaCancelacion), FechaCancelacion, Now.ToString("dd/MM/yyyy")).ToDateTime()
|
||||
CancelacionAcuse = AcuseCancelacion
|
||||
End If
|
||||
|
||||
@@ -4936,7 +4943,7 @@ Namespace Modelos
|
||||
End If
|
||||
|
||||
'SI ES CANCELACION EN PROCESO CANCELA EL PROCESO DE LAS REMISIONES
|
||||
Dim SeCancelaRemisionProceso = (CveEstatus = 20 AndAlso TieneRemisionesRelacionadas AndAlso CancelarRemisiones)
|
||||
Dim SeCancelaRemisionProceso = (CveEstatus.Contiene(20, 23) AndAlso TieneRemisionesRelacionadas AndAlso CancelarRemisiones)
|
||||
|
||||
Retorno.CveEstatus = CveEstatus
|
||||
|
||||
@@ -4972,7 +4979,7 @@ Namespace Modelos
|
||||
End If
|
||||
|
||||
'CUANDO LA CANCELACION ESTA EN PROCESO NO DEBE REALIZAR NADA DE ESTE PROCESO
|
||||
If Not AplicaRefacturacionConPagos AndAlso ((((ObjFactura.Saldo > 0 AndAlso (CveEstatus > 0 AndAlso CveEstatus <> 20)) OrElse (ObjFactura.Total = 0 AndAlso UsuarioActual.CveEmpresa.Contiene(72) AndAlso ObjFactura.TipoDocto.Contiene("Ing"))) AndAlso CveEstatus.Contiene(4, 5)) OrElse (CvePlantillaPoliza = 7 AndAlso (CveEstatus > 0 AndAlso CveEstatus <> 20))) Then
|
||||
If Not AplicaRefacturacionConPagos AndAlso ((((ObjFactura.Saldo > 0 AndAlso (CveEstatus > 0 AndAlso Not CveEstatus.Contiene(20, 23))) OrElse (ObjFactura.Total = 0 AndAlso UsuarioActual.CveEmpresa.Contiene(72) AndAlso ObjFactura.TipoDocto.Contiene("Ing"))) AndAlso CveEstatus.Contiene(4, 5)) OrElse (CvePlantillaPoliza = 7 AndAlso (CveEstatus > 0 AndAlso Not CveEstatus.Contiene(20, 23)))) Then
|
||||
|
||||
'CUANDO SE CANCELA, LA PÓLIZA DEBE DE SER DE DIARIO
|
||||
CvePrePoliza = ObjConta.AddPrePolizas("Modelos/CancelarDocumento", CvePlantillaPoliza, ObjFactura.Total, ObjFactura.Total, ObjFactura.CveMoneda, Now, ObjFactura.Cliente.Nombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoPoliza:=3)
|
||||
@@ -5009,7 +5016,7 @@ Namespace Modelos
|
||||
End If
|
||||
|
||||
'CUANDO LA CANCELACION ESTA EN PROCESO NO DEBE REALIZAR NADA DE ESTE PROCESO
|
||||
If Not ErrorCancelar AndAlso Not EsRefacturacion AndAlso (CveEstatus > 0 AndAlso CveEstatus <> 20) AndAlso CveEstatusRefacturacion = 0 Then
|
||||
If Not ErrorCancelar AndAlso Not EsRefacturacion AndAlso (CveEstatus > 0 AndAlso Not CveEstatus.Contiene(20, 23)) AndAlso CveEstatusRefacturacion = 0 Then
|
||||
|
||||
'DEVOLUCION DE ALMACEN
|
||||
If Not ErrorCancelar AndAlso TieneAlmacen Then
|
||||
@@ -5477,26 +5484,28 @@ Namespace Modelos
|
||||
|
||||
'ACTUALIZA ESTATUS
|
||||
If Not ErrorCancelar Then
|
||||
Select Case ObjFactura.TipoDocto
|
||||
Case "Rem"
|
||||
CveEstatus = 12
|
||||
Case "Com"
|
||||
CveEstatus = 9
|
||||
Case "Cot"
|
||||
CveEstatus = 10
|
||||
Case "Ped", "DPe"
|
||||
CveEstatus = 14
|
||||
End Select
|
||||
If CveEstatus <> 23 Then
|
||||
Select Case ObjFactura.TipoDocto
|
||||
Case "Rem"
|
||||
CveEstatus = 12
|
||||
Case "Com"
|
||||
CveEstatus = 9
|
||||
Case "Cot"
|
||||
CveEstatus = 10
|
||||
Case "Ped", "DPe"
|
||||
CveEstatus = 14
|
||||
End Select
|
||||
End If
|
||||
|
||||
|
||||
If CveEstatus.Contiene(4, 5) Then
|
||||
|
||||
If Not ObjVentas.UpdateCancelaVenta(CveVenta, CancelacionFecha, CancelacionAcuse, UsuarioActual.CveEmpresa, CvePACCancelacion, CveEstatusRefacturacion) Then
|
||||
ErrorCancelar = True
|
||||
MensajeError = "Ocurrió un error al guardar el estatus de cancelación."
|
||||
End If
|
||||
Else
|
||||
If Not ObjVentas.UpdateEstatusFactura(CveEstatus, FolioFiscal, CancelacionAcuse, CancelacionFecha, CveVenta, IDPoliza, CvePAC:=CvePACCancelacion, CveEstatusRefacturacion:=CveEstatusRefacturacion,
|
||||
CveUsuarioCambiaEstatus:=UsuarioActual.CveUsuario, FechaCambioEstatus:=Now.ToString("yyyy-MM-dd HH:mm:ss.mmm")) Then
|
||||
CveUsuarioCambiaEstatus:=UsuarioActual.CveUsuario, FechaCambioEstatus:=Now.ToString("yyyy-MM-dd HH:mm:ss.mmm"), CveMotivoCancelacion:=CveMotivoCancelacion, MotivoCancelacion:=MotivoCancelacion) Then
|
||||
ErrorCancelar = True
|
||||
MensajeError = "Ocurrió un error al guardar el estatus de cancelación."
|
||||
End If
|
||||
@@ -6735,6 +6744,10 @@ Namespace Modelos
|
||||
|
||||
Public Property VentaDesglosaIEPS As Boolean
|
||||
|
||||
Public Property CveMotivoCancelacion As Integer = -1
|
||||
|
||||
Public Property MotivoCancelacion As String = ""
|
||||
|
||||
#End Region
|
||||
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ Public Class Timbrado
|
||||
End Using
|
||||
Return Retorno
|
||||
End Function
|
||||
Public Function CFDICancelar(Empresa As Empresa, FolioFiscal As String, Total As Decimal, RFCReceptor As String, RFCEmisor As String, Optional CvePACCancelacion As Integer = 2, Optional ValidaFactura As Boolean = True) As Boolean
|
||||
Public Function CFDICancelar(Empresa As Empresa, FolioFiscal As String, Total As Decimal, RFCReceptor As String, RFCEmisor As String, Optional CvePACCancelacion As Integer = 2, Optional ValidaFactura As Boolean = True, Optional CveMotivoCancelacion As Integer = -1, Optional FolioSustitucion As String = "") As Boolean
|
||||
Dim Retorno As Boolean = False
|
||||
Dim MsgCancelacion As New StringBuilder
|
||||
|
||||
@@ -78,6 +78,14 @@ Public Class Timbrado
|
||||
End If
|
||||
End If
|
||||
|
||||
Dim CodigoSATMotivoCancelacion As String = ""
|
||||
|
||||
If CveMotivoCancelacion > 0 Then
|
||||
If ClsPaginas.GlobalDTSATMotivosCancelacion(CveMotivoCancelacion) IsNot Nothing AndAlso ClsPaginas.GlobalDTSATMotivosCancelacion(CveMotivoCancelacion).Rows.Count > 0 Then
|
||||
CodigoSATMotivoCancelacion = ClsPaginas.GlobalDTSATMotivosCancelacion(CveMotivoCancelacion).Rows(0)("CodigoSAT").ToString()
|
||||
End If
|
||||
End If
|
||||
|
||||
MsgCancelacion.AppendFormat("CvePAC:{0}", CvePACCancelacion)
|
||||
|
||||
Select Case CvePACCancelacion
|
||||
@@ -471,7 +479,7 @@ Public Class Timbrado
|
||||
objCan.CancelacionCfdi = True
|
||||
objCan.FechaCancelacion = System.DateTime.Now.AddMinutes(-120) ' operación requerida para que no se presente problemas con fechas adelantadas del PAC
|
||||
MsgCancelacion.AppendFormat("4.3-")
|
||||
objCan.GeneraCancelacionB64(certBase64, llaveBase64, Clave, FolioFiscal)
|
||||
objCan.GeneraCancelacionB64(certBase64, llaveBase64, Clave, FolioFiscal, CodigoSATMotivoCancelacion, FolioSustitucion)
|
||||
If (objCan.MensajeError = "") Then
|
||||
MsgCancelacion.AppendFormat("4.4-")
|
||||
objCan.CancelaCfdi(UsuarioServicio, ClaveServicio, UrlServicio, Empresa.FacturaProduccion)
|
||||
|
||||
BIN
Bin/GoCfdi.dll
BIN
Bin/GoCfdi.dll
Binary file not shown.
@@ -67,7 +67,7 @@
|
||||
<asp:BoundField HeaderText="Mon" DataField="Abreviatura" ItemStyle-Width="30px" />
|
||||
<asp:BoundField HeaderText="Estatus" DataField="EstatusFactura" ItemStyle-Width="160px" />
|
||||
<asp:BoundField HeaderText="Fecha Solicitud" DataField="FechaCambioEstatus" ItemStyle-Width="160px" />
|
||||
<asp:BoundField HeaderText="Fecha Cancelacion" DataField="FechaCancelacion" ItemStyle-Width="160px" />
|
||||
<asp:BoundField HeaderText="Motivo" DataField="MotivoCancelacion" ItemStyle-Width="25%" />
|
||||
<asp:TemplateField ItemStyle-Width="35px" HeaderText="Verificar">
|
||||
<ItemTemplate>
|
||||
<asp:LinkButton runat="server" OnClick="BtnValidar_Click" CssClass="btn btn-circle btn-sm green" Text="<i class='fa fa-check'></i>" data-toggle="confirmation" data-popout="true" data-original-title="¿Está seguro que desea verificar la cancelación?" data-btn-ok-label="si"></asp:LinkButton>
|
||||
@@ -116,6 +116,7 @@
|
||||
<asp:BoundField HeaderText="Fecha Solicitud" DataField="FechaCambioEstatus" ItemStyle-Width="160px" />
|
||||
<asp:BoundField HeaderText="Fecha Cancelacion" DataField="FechaCancelacion" ItemStyle-Width="160px" />
|
||||
<asp:BoundField HeaderText="Estatus" DataField="EstatusFactura" ItemStyle-Width="160px" />
|
||||
<asp:BoundField HeaderText="Motivo" DataField="MotivoCancelacion" ItemStyle-Width="25%" />
|
||||
<asp:TemplateField ItemStyle-Width="35px" HeaderText="Verificar">
|
||||
<ItemTemplate>
|
||||
<asp:LinkButton runat="server" OnClick="BtnValidarRefacturacion_Click" CssClass="btn btn-circle btn-sm green" Text="<i class='fa fa-check'></i>" data-toggle="confirmation" data-popout="true" data-original-title="¿Está seguro que desea verificar la cancelación?" data-btn-ok-label="si"></asp:LinkButton>
|
||||
|
||||
@@ -55,7 +55,7 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas
|
||||
}
|
||||
|
||||
ObjVentas.Dispose();
|
||||
GvDatos.DataSource = DtVentas.FiltraParametros("CveEstatusFactura = 20 AND CveEstatusRefacturacion = 0");
|
||||
GvDatos.DataSource = DtVentas.FiltraParametros("CveEstatusFactura IN(20,23) AND CveEstatusRefacturacion = 0");
|
||||
|
||||
var DtRefacturar = DtVentas.FiltraParametros("CveEstatusRefacturacion IN (1,3)");
|
||||
if (DtRefacturar != null && DtRefacturar.Rows.Count > 0)
|
||||
@@ -314,7 +314,7 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas
|
||||
var factura = new Modelos.Factura(UsuarioActual, CveVenta, UsuarioActual.CveEmpresa, EsCancelacion:true);
|
||||
if (EsRefacturacion)
|
||||
{
|
||||
retorno = factura.CancelarPorRefacturacion();
|
||||
retorno = factura.CancelarPorRefacturacion(1,"");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -10,7 +10,8 @@
|
||||
padding: 0px 5px;
|
||||
}
|
||||
|
||||
.nolineheight { line-height: 1;
|
||||
.nolineheight {
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.claseesconder {
|
||||
@@ -496,8 +497,8 @@
|
||||
<asp:ListItem Selected="true" Text="Seleccione" Value="-1"></asp:ListItem>
|
||||
</asp:DropDownList>
|
||||
</span>
|
||||
<asp:LinkButton ID="LnkEditarDir" runat="server" OnClick="LnkEditarDir_Click" AlternateText="Editar Dirección" Visible="false" ToolTip="Editar Dirección" CausesValidation="False" CssClass="btn btn-circle btn-xs green" Text="<i class='fa fa-pencil'></i>" />
|
||||
<asp:LinkButton ID="LnkAplicarDir" runat="server" OnClick="LnkAplicarDir_Click" AlternateText="Actualizar Dirección" Visible="false" ToolTip="Actualizar Dirección" CausesValidation="False" CssClass="btn btn-circle btn-xs blue" Text="<i class='fa fa-check'></i>" />
|
||||
<asp:LinkButton ID="LnkEditarDir" runat="server" OnClick="LnkEditarDir_Click" AlternateText="Editar Dirección" Visible="false" ToolTip="Editar Dirección" CausesValidation="False" CssClass="btn btn-circle btn-xs green" Text="<i class='fa fa-pencil'></i>" />
|
||||
<asp:LinkButton ID="LnkAplicarDir" runat="server" OnClick="LnkAplicarDir_Click" AlternateText="Actualizar Dirección" Visible="false" ToolTip="Actualizar Dirección" CausesValidation="False" CssClass="btn btn-circle btn-xs blue" Text="<i class='fa fa-check'></i>" />
|
||||
<asp:LinkButton ID="LnkOtraDireccion" runat="server" Text="Otra dirección?" Visible="false"></asp:LinkButton>
|
||||
</table>
|
||||
</td>
|
||||
@@ -5356,7 +5357,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<%-- <div class="row " runat="server" id="DVDireccionCliente1" visible="false">
|
||||
<%-- <div class="row " runat="server" id="DVDireccionCliente1" visible="false">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group form-md-line-input input-iconright">
|
||||
<asp:TextBox ID="TxtEnvioEstado" runat="server" Width="100%" CssClass="form-control" CausesValidation="true"></asp:TextBox>
|
||||
@@ -6758,7 +6759,7 @@
|
||||
<input type="text" id="TxtBusquedaNCBon" class="form-control input-sm" onkeyup="<%= String.Format("FiltrarTabla('TxtBusquedaNCBon','{0}')", GvRemisionesNCBon.ClientID) %>" style="display: inline-block; margin-right: -20px; width: 150px;" />
|
||||
<a href="javascript:;" onclick="<%= String.Format("FiltrarTabla('TxtBusquedaNCBon','{0}')", GvRemisionesNCBon.ClientID) %>" style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"><i class="icon-magnifier"></i></a>
|
||||
</div>
|
||||
<div class="row" id="DivRNCBonificaciones" runat="server" visible="false">
|
||||
<div class="row" id="DivRNCBonificaciones" runat="server" visible="false">
|
||||
<div class="col-md-12" style="max-height: 440px; overflow: auto">
|
||||
<asp:GridView ID="GvRemisionesNCBon" runat="server" AutoGenerateColumns="False"
|
||||
DataKeyNames="CveVenta,CveVentaRNCCargo" CssClass="table table-striped table-advance table-hover Widthall mysmallbtn" GridLines="None">
|
||||
@@ -7718,6 +7719,42 @@
|
||||
</ContentTemplate>
|
||||
</asp:UpdatePanel>
|
||||
</div>
|
||||
|
||||
<div id="DivMotivoRefacturacion" class="modal ADS fade" role="dialog">
|
||||
<asp:UpdatePanel class="modal-dialog" runat="server" ID="UpRefac" UpdateMode="Conditional">
|
||||
<ContentTemplate>
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
<h4 class="modal-title" id="H1" runat="server">Motivo</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<div class="col-md-2">
|
||||
<label>Motivo:</label>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<asp:DropDownList ID="DdlMotivoCancelacion" CssClass=" form-control input-sm select2me" runat="server" Width="100%" DataTextField="CodigoSATDescripcion" DataValueField="CveMotivoCancelacion">
|
||||
</asp:DropDownList>
|
||||
<asp:RequiredFieldValidator ID="RFVDdlMotivo" runat="server" CssClass="help-block errorimput" InitialValue="-1" ControlToValidate="DdlMotivoCancelacion" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Motivo''</b> es necesario, por favor ingréselo." ValidationGroup="GrpMotivo"></asp:RequiredFieldValidator>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<label>Descripción:</label>
|
||||
<asp:TextBox ID="TxtMotivoRefac" runat="server" Height="100" Width="600" TextMode="MultiLine" CausesValidation="true" MaxLength="500"></asp:TextBox>
|
||||
<asp:RequiredFieldValidator ID="RFVTxtMotivoRefac" runat="server" CssClass="help-block errorimput" ControlToValidate="TxtMotivoRefac" ErrorMessage="<b><span style='text-decoration: underline'>ERROR:</span></b><br />El campo <b>''Descripcion''</b> es necesario, por favor ingréselo." ValidationGroup="GrpMotivo"></asp:RequiredFieldValidator>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<asp:LinkButton ID="BtnMotivoRefacturacion" runat="server" CssClass="btn btn-primary" ValidationGroup="GrpMotivo"> Refacturar</asp:LinkButton>
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">Cancelar</button>
|
||||
</div>
|
||||
</div>
|
||||
</ContentTemplate>
|
||||
</asp:UpdatePanel>
|
||||
</div>
|
||||
</asp:Content>
|
||||
<asp:Content ID="Content7" ContentPlaceHolderID="JS" runat="Server">
|
||||
<script src="/Metronic/assets/global/scripts/jquery-sortable.js"></script>
|
||||
|
||||
@@ -2319,6 +2319,7 @@ Partial Class Ventas
|
||||
CargaMetodosPago()
|
||||
'CargaFormaPago(-1)
|
||||
CargaUsoCFDI()
|
||||
CargaMotivosCancelacion()
|
||||
CargaTiposRelacion()
|
||||
CargaMonedas()
|
||||
CargaVendedores()
|
||||
@@ -2981,9 +2982,12 @@ Partial Class Ventas
|
||||
If Me.CveDevolucion > 0 AndAlso Me.NuevaFactura = 1 Then
|
||||
Dim TipoEstatus As Integer = GlobalDTEstatusFactura().FiltroPrimeroValor("TipoEstatus", $"CveEstatusFactura = {Me.ObjFacturaNC.CveEstatusFactura}").ToEntero()
|
||||
If TipoEstatus <> 5 Then
|
||||
Alert($"El documento de tipo '{Me.ObjFacturaNC.TipodeComprobante}' a refacturar no ha sido cancelado. Favor de verificar el documento", TipoMensaje.MsgAdvertencia)
|
||||
BtnEmitirImprimir.Visible = False
|
||||
UpFacturar.Update()
|
||||
'ESTATUS DE CANCELACION PENDIENTE
|
||||
If Not Me.ObjFacturaNC.CveEstatusFactura = 23 Then
|
||||
Alert($"El documento de tipo '{Me.ObjFacturaNC.TipodeComprobante}' a refacturar no ha sido cancelado. Favor de verificar el documento", TipoMensaje.MsgAdvertencia)
|
||||
BtnEmitirImprimir.Visible = False
|
||||
UpFacturar.Update()
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
@@ -4187,7 +4191,7 @@ Partial Class Ventas
|
||||
LblAlertRefacInv.Visible = True
|
||||
End If
|
||||
|
||||
If DdlTipoComprobante.SelectedValue.Contiene("Egs", "Ing", "Ant", "Dev", "Rem", "DPe", "RNC", "Pd2", "Cot") AndAlso Not CveEstatus.Contiene(4, 5, 10, 12, 13, 20) Then
|
||||
If DdlTipoComprobante.SelectedValue.Contiene("Egs", "Ing", "Ant", "Dev", "Rem", "DPe", "RNC", "Pd2", "Cot") AndAlso Not CveEstatus.Contiene(4, 5, 10, 12, 13, 20, 23) Then
|
||||
If 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
|
||||
@@ -5480,6 +5484,13 @@ Partial Class Ventas
|
||||
DdlUsoCFDI.DataBind()
|
||||
DdlSucursalUsoCFDI.DataBind()
|
||||
End Sub
|
||||
|
||||
Private Sub CargaMotivosCancelacion()
|
||||
DdlMotivoCancelacion.DataSource = GlobalDTSATMotivosCancelacion()
|
||||
DdlMotivoCancelacion.DataBind()
|
||||
|
||||
DdlMotivoCancelacion.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
||||
End Sub
|
||||
Private Sub CargaTiposRelacion()
|
||||
DdlTiposRelacion.DataSource = GlobalDTVtaTiposRelacion
|
||||
DdlTipoRelacionARelacionar.DataSource = GlobalDTVtaTiposRelacion
|
||||
@@ -8766,6 +8777,12 @@ Partial Class Ventas
|
||||
Alert(ObjTimbrado.MensajeErrorCFDI, TipoMensaje.MsgError)
|
||||
End If
|
||||
|
||||
If SeTimbro AndAlso (Me.CveDevolucion > 0 AndAlso Me.NuevaFactura = 1) Then
|
||||
If Me.ObjFacturaNC IsNot Nothing Then
|
||||
Me.ObjFacturaNC.CancelarPorRefacturacion(Me.ObjFacturaNC.CveMotivoCancelacion, Me.ObjFacturaNC.MotivoCancelacion, ObjTimbrado.UUID)
|
||||
End If
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
'NOTA DE CREDITO DE REFACTURACION
|
||||
@@ -20312,12 +20329,26 @@ Partial Class Ventas
|
||||
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
|
||||
CancelarDocumento(EsRefacturacion:=True)
|
||||
End Sub
|
||||
'BtnRefacturacionConfirmar
|
||||
Private Sub BtnRefacturacionConfirmar_Click(sender As Object, e As System.EventArgs) Handles BtnRefacturacionConfirmar.Click
|
||||
CancelarDocumento(True)
|
||||
DdlMotivoCancelacion.SelectedValueExist(1)
|
||||
DdlMotivoCancelacion.Enabled = False
|
||||
|
||||
UpRefac.Update()
|
||||
RegistraScript("$('#DivMotivoRefacturacion').modal({ backdrop: 'static', keyboard: false });", "R1")
|
||||
'CancelarDocumento(True)
|
||||
End Sub
|
||||
Private Sub BtnRefacturacionConfirmarAceptacion_Click(sender As Object, e As System.EventArgs) Handles BtnRefacturacionConfirmarAceptacion.Click
|
||||
CancelarDocumento(True)
|
||||
DdlMotivoCancelacion.SelectedValueExist(1)
|
||||
DdlMotivoCancelacion.Enabled = False
|
||||
|
||||
UpRefac.Update()
|
||||
RegistraScript("$('#DivMotivoRefacturacion').modal({ backdrop: 'static', keyboard: false });", "R1")
|
||||
'CancelarDocumento(True)
|
||||
End Sub
|
||||
Private Sub BtnContabilizar_Click(sender As Object, e As System.EventArgs) Handles BtnContabilizar.Click
|
||||
'Dim ObjMov As New ClsContabilidad
|
||||
@@ -22997,7 +23028,13 @@ Partial Class Ventas
|
||||
SWatch.Start()
|
||||
|
||||
If EsRefacturacion Then
|
||||
resp = ObjFacturaCancelacion.CancelarPorRefacturacion()
|
||||
|
||||
'Dim msgBitacora As String = $"Motivo de refacturación: {TxtMotivoRefac.Text}"
|
||||
'Dim ObjE As New ClsOIEventos()
|
||||
'ObjE.AddEventoBitacora(msgBitacora, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVenta)
|
||||
'ObjE.Dispose()
|
||||
|
||||
resp = ObjFacturaCancelacion.CancelarPorRefacturacion(DdlMotivoCancelacion.SelectedValue.ToEntero(), TxtMotivoRefac.Text)
|
||||
Else
|
||||
Dim ListaRemisionesCancelar As New List(Of Integer)
|
||||
If ChkCanRem.Checked Then
|
||||
@@ -23031,7 +23068,7 @@ Partial Class Ventas
|
||||
If EsRefacturacion Then
|
||||
If resp.CveEstatus = 20 Then
|
||||
LigaRedirigir = $"/Ventas/RepCancelacionesPorRespuesta.aspx?CveVenta={CveVenta}"
|
||||
ElseIf resp.CveEstatus.Contiene(4, 5) Then
|
||||
ElseIf resp.CveEstatus.Contiene(4, 5, 23) Then
|
||||
LigaRedirigir = $"Ventas.aspx?CveDevolucion={CveVenta}&NuevaFactura=1"
|
||||
Else
|
||||
Alert(resp.Mensaje, resp.TipoMensaje, JSBtnAceptar:="BtnRefrescarPagina();")
|
||||
|
||||
Reference in New Issue
Block a user