diff --git a/.gitignore b/.gitignore
index 937cf5c78..80364dde9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,9 @@
## files generated by popular Visual Studio add-ons.
web.config
*.txt
+Log.txt
+LogMail.txt
+LogTimbrado.txt
[Mm]enu/
[Tt]emp/
[Ee]mpresas/
diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb
index f64bb2cfd..36a502119 100644
--- a/App_Code/Modelos.vb
+++ b/App_Code/Modelos.vb
@@ -3582,12 +3582,12 @@ Namespace Modelos
Dim TieneAlmacen As Boolean = False
- If ObjFactura.SaldoAlmacen <> 0 Then
- Retorno.Mensaje = "El pedido no se puede cancelar ya que tiene movimientos de almacén.
Nota: Primero hay que hacer la devolución al almacén."
- Retorno.TipoMensaje = TipoMensaje.MsgAdvertencia
+ 'If Not EsRefacturacion AndAlso ObjFactura.SaldoAlmacen <> 0 Then
+ ' Retorno.Mensaje = "El pedido no se puede cancelar ya que tiene movimientos de almacén.
Nota: Primero hay que hacer la devolución al almacén."
+ ' Retorno.TipoMensaje = TipoMensaje.MsgAdvertencia
- Return Retorno
- End If
+ ' Return Retorno
+ 'End If
'VALIDA QUE LA FACTURA NO TENGA PAGOS
If ObjFactura.TipoDocto.Contiene("Ing", "Rem") AndAlso ObjFactura.Pagado > 0 Then
@@ -3877,7 +3877,7 @@ Namespace Modelos
End If
'CUANDO LA CANCELACION ESTA EN PROCESO NO DEBE REALIZAR NADA DE ESTE PROCESO
- If Not EsRefacturacion AndAlso (CveEstatus > 0 AndAlso CveEstatus <> 20) Then
+ If Not EsRefacturacion AndAlso (CveEstatus > 0 AndAlso CveEstatus <> 20) AndAlso ObjFactura.CveEstatusRefacturacion = 0 Then
'DEVOLUCION DE ALMACEN
If Not ErrorCancelar AndAlso TieneAlmacen Then
@@ -3936,6 +3936,29 @@ Namespace Modelos
If Not ErrorCancelar AndAlso TieneSalida Then
+ Dim DtDatosDetalle As New DataTable
+ DtDatosDetalle.Columns.Add("CveVentaDetalle", GetType(Integer))
+ DtDatosDetalle.Columns.Add("Consec", GetType(Integer))
+ DtDatosDetalle.Columns.Add("ConsecId", GetType(Integer))
+ DtDatosDetalle.Columns.Add("CvePS", GetType(Integer))
+ DtDatosDetalle.Columns.Add("PS", GetType(String))
+ DtDatosDetalle.Columns.Add("CveUM", GetType(Integer))
+ DtDatosDetalle.Columns.Add("SerieLote", GetType(String))
+ DtDatosDetalle.Columns.Add("FechaCaducidad", GetType(String))
+ DtDatosDetalle.Columns.Add("FueTraspaso", GetType(Integer))
+
+ Dim DtDatosDetalleLote As New DataTable
+ DtDatosDetalleLote.Columns.Add("CveVentaDetalle", GetType(Integer))
+ DtDatosDetalleLote.Columns.Add("Consec", GetType(Integer))
+ DtDatosDetalleLote.Columns.Add("ConsecId", GetType(Integer))
+ DtDatosDetalleLote.Columns.Add("Cantidad", GetType(Double))
+ DtDatosDetalleLote.Columns.Add("CvePS", GetType(Integer))
+ DtDatosDetalleLote.Columns.Add("PS", GetType(String))
+ DtDatosDetalleLote.Columns.Add("CveUM", GetType(Integer))
+ DtDatosDetalleLote.Columns.Add("Lote", GetType(String))
+ DtDatosDetalleLote.Columns.Add("Batch", GetType(String))
+ DtDatosDetalleLote.Columns.Add("FechaCaducidad", GetType(String))
+ DtDatosDetalleLote.Columns.Add("FueTraspaso", GetType(Integer))
Dim DtTraspasos As New DataTable
DtTraspasos.Columns.Add("CveAlmacen", GetType(Integer))
@@ -3949,6 +3972,8 @@ Namespace Modelos
Dim CveMovimiento As Integer = 0
Dim Folio As Integer = 0
Dim CantidadPendiente As Decimal = 0
+ Dim DtDetalle As New DataTable
+ Dim DtDetalleLote As New DataTable
If Not ErrorCancelar AndAlso RealizarDevolucionAlmacen Then
Dim CveAlmacenDevolucion = ObjFactura.CveAlmacenDevolucion
@@ -3966,14 +3991,44 @@ Namespace Modelos
If CantidadPendiente > 0 Then
Dim PU As Decimal = 0
- If DtExistencias IsNot Nothing Then
- PU = DtExistencias.FiltroPrimeroValor("PU", $"CvePS = {Dr("CvePS")} AND CveUM = {Dr("CveUM").ToString.ToEntero}").ToString.ToDecimal
- End If
+ 'SI FUE POR SERIELOTE
+ DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0} AND FueTraspaso IS NULL", Dr("Consec")))
+ DtDetalleLote = DtDatosDetalleLote.FiltraParametros(String.Format("ConsecId = {0} AND FueTraspaso IS NULL", Dr("Consec")))
- If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, CantidadPendiente, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, PU, -1, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero) Then
- ErrorCancelar = True
- MensajeError = "Ocurrió un error al procesar los conceptos de salida. Por favor vuelva a intentar."
- Exit For
+ If DtDetalle.Rows.Count > 0 Then
+ For Each Dr1 As DataRow In DtDetalle.Rows
+ If DtExistencias IsNot Nothing Then
+ PU = DtExistencias.FiltroPrimeroValor("PU", $"CvePS = {Dr("CvePS")} AND CveUM = {Dr("CveUM").ToString.ToEntero} AND SerieLote = '{Dr1("SerieLote").ToString}'").ToString.ToDecimal
+ End If
+
+ If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, 1, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, PU, -1, SerieLote:=Dr1("SerieLote").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero) Then
+ ErrorCancelar = True
+ MensajeError = "Ocurrió un error al procesar los conceptos con serie. Por favor vuelva a intentar."
+ Exit For
+ End If
+ Next
+ ElseIf DtDetalleLote.Rows.Count > 0 Then
+ For Each Dr1 As DataRow In DtDetalleLote.Rows
+ If DtExistencias IsNot Nothing Then
+ PU = DtExistencias.FiltroPrimeroValor("PU", $"CvePS = {Dr("CvePS")} AND CveUM = {Dr("CveUM").ToString.ToEntero} AND SerieLote = '{Dr1("SerieLote").ToString}'").ToString.ToDecimal
+ End If
+
+ If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr1("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, PU, -1, Lote:=Dr1("Lote").ToString, Batch:=Dr1("Batch").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero) Then
+ ErrorCancelar = True
+ MensajeError = "Ocurrió un error al procesar los conceptos con serie. Por favor vuelva a intentar."
+ Exit For
+ End If
+ Next
+ Else
+ If DtExistencias IsNot Nothing Then
+ PU = DtExistencias.FiltroPrimeroValor("PU", $"CvePS = {Dr("CvePS")} AND CveUM = {Dr("CveUM").ToString.ToEntero}").ToString.ToDecimal
+ End If
+
+ If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, CantidadPendiente, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, PU, -1, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero) Then
+ ErrorCancelar = True
+ MensajeError = "Ocurrió un error al procesar los conceptos de salida. Por favor vuelva a intentar."
+ Exit For
+ End If
End If
End If
@@ -4065,12 +4120,12 @@ Namespace Modelos
End If
End If
- 'If Not ErrorCancelar AndAlso RevivirRemisiones Then
- ' If Not GeneraMovimientosApartados(ObjInventario, DtTraspasos) Then
- ' ErrorCancelar = True
- ' MensajeError = "Ocurrió un error al guardar los movimientos de control de apartados"
- ' End If
- 'End If
+ If Not ErrorCancelar Then
+ If Not GeneraMovimientosApartados(ObjInventario, DtTraspasos) Then
+ ErrorCancelar = True
+ MensajeError = "Ocurrió un error al guardar los movimientos de control de apartados"
+ End If
+ End If
'DEVOLUCION REMISION - REGRESA LAS EXISTENCIAS A ENTREGA POR ADELANTADO SI LA FACTURA VIENE DE REMISION
If Not ErrorCancelar AndAlso RevivirRemisiones Then
@@ -4276,14 +4331,12 @@ Namespace Modelos
Retorno.TipoMensaje = TipoMensaje.MsgConfirmacion
Else
- If Not EsRefacturacion Then
- Retorno.Mensaje = "El documento se canceló exitosamente"
- Retorno.HuboError = False
- Retorno.TipoMensaje = TipoMensaje.MsgInformacion
- End If
+ Retorno.Mensaje = "El documento se canceló exitosamente"
+ Retorno.HuboError = False
+ Retorno.TipoMensaje = TipoMensaje.MsgInformacion
End If
- Me.CveEstatus = CveEstatus
+ ObjFactura.CveEstatus = CveEstatus
Else
ObjVentas.RollBack()
If ObjAC IsNot Nothing Then ObjAC.RollBack()
@@ -4777,32 +4830,32 @@ Namespace Modelos
'Public Property Sucursal As SucursalModel
Public Property SubProyecto As Modelos.SubProyectoModel
- Public DtDetalle As Data.DataTable
- Public DtDetalleAC As Data.DataTable
- Public DtAjustes As Data.DataTable
- Public DtRecepcionUsados As Data.DataTable
- Public DtVentasNC As Data.DataTable
- Public DtDeduccion As Data.DataTable
- Public DtFirmas As Data.DataTable
- Public DtDesgloseImpuestos As Data.DataTable
- Public DtDocumentosRelacionados As Data.DataTable
- Public DtNCVinculadas As Data.DataTable
+ Public Property DtDetalle As Data.DataTable
+ Public Property DtDetalleAC As Data.DataTable
+ Public Property DtAjustes As Data.DataTable
+ Public Property DtRecepcionUsados As Data.DataTable
+ Public Property DtVentasNC As Data.DataTable
+ Public Property DtDeduccion As Data.DataTable
+ Public Property DtFirmas As Data.DataTable
+ Public Property DtDesgloseImpuestos As Data.DataTable
+ Public Property DtDocumentosRelacionados As Data.DataTable
+ Public Property DtNCVinculadas As Data.DataTable
- Public DtAnticipos As Data.DataTable
- Public DtPromociones As Data.DataTable
- Public DtImpuestosLocales As Data.DataTable
- Public DtPagos As Data.DataTable
- Public DtRemisionesPS As Data.DataTable
- Public DtRemisiones As Data.DataTable
- Public DtPedidos2 As Data.DataTable
- Public DtPedidos2PS As Data.DataTable
- Public DTOrdenesCompraPS As Data.DataTable
- Public DtCotizacionesPS As Data.DataTable
- Public DtDocumentacionCliente As Data.DataTable
- Public DtContratosSerieDetalle As Data.DataTable
- Public DtOtrosConceptos As Data.DataTable
- Public DtInventario As Data.DataTable
- Public DtRemConceptosSurtidos As Data.DataTable
+ Public Property DtAnticipos As Data.DataTable
+ Public Property DtPromociones As Data.DataTable
+ Public Property DtImpuestosLocales As Data.DataTable
+ Public Property DtPagos As Data.DataTable
+ Public Property DtRemisionesPS As Data.DataTable
+ Public Property DtRemisiones As Data.DataTable
+ Public Property DtPedidos2 As Data.DataTable
+ Public Property DtPedidos2PS As Data.DataTable
+ Public Property DTOrdenesCompraPS As Data.DataTable
+ Public Property DtCotizacionesPS As Data.DataTable
+ Public Property DtDocumentacionCliente As Data.DataTable
+ Public Property DtContratosSerieDetalle As Data.DataTable
+ Public Property DtOtrosConceptos As Data.DataTable
+ Public Property DtInventario As Data.DataTable
+ Public Property DtRemConceptosSurtidos As Data.DataTable
Public Property UsadosBonificacion As List(Of Integer)
Public Property TipoBonificacion As Integer = 0
Public Property Timbre As CFDITimbre
diff --git a/LogMail.txt b/LogMail.txt
index def4d02c0..b29b0397b 100644
--- a/LogMail.txt
+++ b/LogMail.txt
@@ -1 +1 @@
-
28/08/2019:04:44 p. m. No se especifico a remitente - SIG - Se Genero una Recepción de Usados con el folio: 79
28/08/2019:05:48 p. m. No se especifico a remitente - SIG - Se Genero una Recepción de Usados con el folio: 80
\ No newline at end of file
+
28/08/2019:04:44 p. m. No se especifico a remitente - SIG - Se Genero una Recepción de Usados con el folio: 79
28/08/2019:05:48 p. m. No se especifico a remitente - SIG - Se Genero una Recepción de Usados con el folio: 80
02/09/2019:11:00 a. m. From:'signotificaciones@adssistemas.mx' - Para:'x@x.com' - Asunto:'Entrega de Factura SUCURSAL NARANJO SN-22' - CCP: '' - Adjuntos: 1
02/09/2019:11:00 a. m. From:'signotificaciones@adssistemas.mx' - Para:'japmx95@gmail.com' - Asunto:'Entrega de Factura SUCURSAL NARANJO SN-23' - CCP: '' - Adjuntos: 1
\ No newline at end of file
diff --git a/LogTimbrado.txt b/LogTimbrado.txt
index 670c753f4..7e80f243d 100644
--- a/LogTimbrado.txt
+++ b/LogTimbrado.txt
@@ -2,3 +2,7 @@
.. PAC: 4 - Verificado : (5) 5 Certificado : (501) 506 Armado: (25) 531 Genera: (494) 1025 Timbrado: (748) 1773 ..20/08/2019:03:33 p. m.
.. PAC: 4 - Verificado : (2) 2 Certificado : (388) 390 Armado: (4) 394 Genera: (440) 834 Timbrado: (1030) 1864 Guardado: (361) 2225 Actualizado: (99) 2324 ..20/08/2019:03:39 p. m.
+
+ .. PAC: 2 - Verificado : (200) 200 Armado: (398) 598 Guardado: (564) 1162 Timbrado: (2342) 3504 Actualizado: (456) 3960 ..02/09/2019:11:00 a. m.
+
+ .. PAC: 2 - Verificado : (170) 170 Armado: (285) 455 Guardado: (333) 788 Timbrado: (1949) 2737 Actualizado: (20) 2757 ..02/09/2019:11:00 a. m.
diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb
index 1bfa9e03d..b0a6546a5 100644
--- a/Ventas/Ventas.aspx.vb
+++ b/Ventas/Ventas.aspx.vb
@@ -17452,13 +17452,19 @@ Partial Class Ventas
resp = ObjFactura.CancelarFactura(ChkDevAlm.Checked, ListaRemisionesCancelar)
End If
- If resp.CveEstatus = 5 Then
+ If resp.CveEstatus = 5 AndAlso Not EsRefacturacion Then
Alert(resp.Mensaje, resp.TipoMensaje, JSBtnAceptar:="BtnEnviarMailCancelacion();", TextoConfirmacion:=" Si ", TextoCancelacion:=" No> ")
Else
- If Not EsRefacturacion Then
- Alert(resp.Mensaje, resp.TipoMensaje, JSBtnAceptar:="BtnRefrescarPagina();")
+ If EsRefacturacion Then
+ If resp.CveEstatus = 20 Then
+ Response.Redirect($"/Ventas/RepCancelacionesPorRespuesta.aspx?CveVenta={CveVenta}")
+ ElseIf resp.CveEstatus.Contiene(4, 5) Then
+ Response.Redirect($"Ventas.aspx?CveDevolucion={CveVenta}&NuevaFactura=1")
+ Else
+ Alert(resp.Mensaje, resp.TipoMensaje, JSBtnAceptar:="BtnRefrescarPagina();")
+ End If
Else
- Response.Redirect($"/Ventas/RepCancelacionesPorRespuesta.aspx?CveVenta={Me.CveVenta}")
+ Alert(resp.Mensaje, resp.TipoMensaje, JSBtnAceptar:="BtnRefrescarPagina();")
End If
End If