From d3f6eb0775f6b13878ebd39c9b2667cdaca98642 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Mon, 2 Sep 2019 19:04:12 -0700 Subject: [PATCH] =?UTF-8?q?Correci=C3=B3n=20de=20refacturacion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 + App_Code/Modelos.vb | 153 ++++++++++++++++++++++++++++-------------- LogMail.txt | 2 +- LogTimbrado.txt | 4 ++ Ventas/Ventas.aspx.vb | 14 ++-- 5 files changed, 121 insertions(+), 55 deletions(-) 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