BDH, Liga para cancelacion de remisión
This commit is contained in:
@@ -5080,202 +5080,203 @@ Namespace Modelos
|
|||||||
|
|
||||||
If Not ErrorCancelar AndAlso RealizarDevolucionAlmacen Then
|
If Not ErrorCancelar AndAlso RealizarDevolucionAlmacen Then
|
||||||
'REALIZA DEVOLUCION A LAS SALIDAS PENDIENTES
|
'REALIZA DEVOLUCION A LAS SALIDAS PENDIENTES
|
||||||
For Each RowMovimiento As DataRow In DtSalidas.Rows
|
If ObjFactura.TipoDocto <> "Rem" Then
|
||||||
Dim CveConceptoMovimiento As Integer = -1
|
For Each RowMovimiento As DataRow In DtSalidas.Rows
|
||||||
Dim CveAlmacenMovimiento As Integer = -1
|
Dim CveConceptoMovimiento As Integer = -1
|
||||||
|
Dim CveAlmacenMovimiento As Integer = -1
|
||||||
|
|
||||||
Dim CveMovimientoDevolucion As Integer = 0
|
Dim CveMovimientoDevolucion As Integer = 0
|
||||||
Dim Folio As Integer = 0
|
Dim Folio As Integer = 0
|
||||||
|
|
||||||
Select Case RowMovimiento("CveConcepto").ToString().ToEntero()
|
Select Case RowMovimiento("CveConcepto").ToString().ToEntero()
|
||||||
Case 3
|
Case 3
|
||||||
CveConceptoMovimiento = 18 'DEVOLUCION DEL CLIENTE
|
CveConceptoMovimiento = 18 'DEVOLUCION DEL CLIENTE
|
||||||
CveAlmacenMovimiento = RowMovimiento("CveAlmacen").ToString().ToEntero()
|
CveAlmacenMovimiento = RowMovimiento("CveAlmacen").ToString().ToEntero()
|
||||||
Case 40
|
Case 40
|
||||||
CveConceptoMovimiento = 41 'DEVOLUCIÓN DEL CLIENTE DIRECTA
|
CveConceptoMovimiento = 41 'DEVOLUCIÓN DEL CLIENTE DIRECTA
|
||||||
CveAlmacenMovimiento = RowMovimiento("CveAlmacen").ToString().ToEntero()
|
CveAlmacenMovimiento = RowMovimiento("CveAlmacen").ToString().ToEntero()
|
||||||
Case 18
|
Case 18
|
||||||
CveConceptoMovimiento = 3 'DEVOLUCIÓN DEL CLIENTE DIRECTA
|
CveConceptoMovimiento = 3 'DEVOLUCIÓN DEL CLIENTE DIRECTA
|
||||||
CveAlmacenMovimiento = RowMovimiento("CveAlmacen").ToString().ToEntero()
|
CveAlmacenMovimiento = RowMovimiento("CveAlmacen").ToString().ToEntero()
|
||||||
''SI TIENE REMISIONES RELACIONADAS
|
''SI TIENE REMISIONES RELACIONADAS
|
||||||
'If DtRemisionesFacturadas.Rows.Count > 0 Then
|
'If DtRemisionesFacturadas.Rows.Count > 0 Then
|
||||||
' Dim RowRemision As DataRow = DtExistencias.FiltroPrimero($"CveMovimiento = {RowMovimiento("CveMovimiento").ToString()}")
|
' Dim RowRemision As DataRow = DtExistencias.FiltroPrimero($"CveMovimiento = {RowMovimiento("CveMovimiento").ToString()}")
|
||||||
|
|
||||||
' Dim CveRemision As Integer = RowRemision("CveRemision").ToString().ToEntero()
|
' Dim CveRemision As Integer = RowRemision("CveRemision").ToString().ToEntero()
|
||||||
|
|
||||||
' Dim CancelarRemision As Boolean = (ListaRemisionesCancelar IsNot Nothing) AndAlso (ListaRemisionesCancelar.Any(Function(CveRemisionCancelar) CveRemisionCancelar = CveRemision))
|
' Dim CancelarRemision As Boolean = (ListaRemisionesCancelar IsNot Nothing) AndAlso (ListaRemisionesCancelar.Any(Function(CveRemisionCancelar) CveRemisionCancelar = CveRemision))
|
||||||
|
|
||||||
' 'SI LA REMISION SE VA A CANCELAR DEBE REGRESAR AL ALMACEN GENERAL
|
' 'SI LA REMISION SE VA A CANCELAR DEBE REGRESAR AL ALMACEN GENERAL
|
||||||
' If CancelarRemision Then
|
' If CancelarRemision Then
|
||||||
' CveAlmacenDevolucion = RowRemision("CveAlmacenDevolucion").ToString().ToEntero()
|
' CveAlmacenDevolucion = RowRemision("CveAlmacenDevolucion").ToString().ToEntero()
|
||||||
' Else
|
' Else
|
||||||
' CveAlmacenDevolucion = RowMovimiento("CveAlmacen").ToString().ToEntero()
|
' CveAlmacenDevolucion = RowMovimiento("CveAlmacen").ToString().ToEntero()
|
||||||
' End If
|
' End If
|
||||||
|
|
||||||
'Else
|
'Else
|
||||||
' CveAlmacenDevolucion = RowMovimiento("CveAlmacen").ToString().ToEntero()
|
' CveAlmacenDevolucion = RowMovimiento("CveAlmacen").ToString().ToEntero()
|
||||||
'End If
|
'End If
|
||||||
End Select
|
End Select
|
||||||
|
|
||||||
'SI TIENE SALDO PENDIENTE POR DEVOLVER GENERA UN MOVIMIENTO DE DEVOLUCION
|
'SI TIENE SALDO PENDIENTE POR DEVOLVER GENERA UN MOVIMIENTO DE DEVOLUCION
|
||||||
If ObjFactura.SaldoAlmacen <> 0 Then
|
If ObjFactura.SaldoAlmacen <> 0 Then
|
||||||
'SALIDA DE ALMACEN - SALIDA POR TRASPASO CUANDO ES REMISION - DEVOLUCION (SI ES TRASPASO Y TIENE CONTRATO NO HACE DEVOLUCIóN)
|
'SALIDA DE ALMACEN - SALIDA POR TRASPASO CUANDO ES REMISION - DEVOLUCION (SI ES TRASPASO Y TIENE CONTRATO NO HACE DEVOLUCIóN)
|
||||||
CveMovimientoDevolucion = ObjInventario.AddMovimiento(CveAlmacenMovimiento, CveConceptoMovimiento, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVenta, -1, -1, Observaciones:="", Guia:="", CveContrato:=CveContrato, CveAlmacenDestino:=-1, Modulo:="Mod/CV1")
|
CveMovimientoDevolucion = ObjInventario.AddMovimiento(CveAlmacenMovimiento, CveConceptoMovimiento, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVenta, -1, -1, Observaciones:="", Guia:="", CveContrato:=CveContrato, CveAlmacenDestino:=-1, Modulo:="Mod/CV1")
|
||||||
Folio = ObjInventario.Folio
|
Folio = ObjInventario.Folio
|
||||||
|
|
||||||
If CveMovimientoDevolucion > 0 Then
|
If CveMovimientoDevolucion > 0 Then
|
||||||
For Each Dr As DataRow In DtExistencias.FiltraParametros($"CveMovimiento = {RowMovimiento("CveMovimiento").ToString()}").Rows
|
For Each Dr As DataRow In DtExistencias.FiltraParametros($"CveMovimiento = {RowMovimiento("CveMovimiento").ToString()}").Rows
|
||||||
|
|
||||||
Dim FechaCaducidad As Date = MinFecha
|
Dim FechaCaducidad As Date = MinFecha
|
||||||
If Not String.IsNullOrEmpty(Dr("FechaCaducidad").ToString()) Then
|
If Not String.IsNullOrEmpty(Dr("FechaCaducidad").ToString()) Then
|
||||||
If IsDate(Dr("FechaCaducidad")) Then
|
If IsDate(Dr("FechaCaducidad")) Then
|
||||||
FechaCaducidad = Dr("FechaCaducidad").ToString().ToDate()
|
FechaCaducidad = Dr("FechaCaducidad").ToString().ToDate()
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim CveVentaDetalleRemision As Integer = -1
|
||||||
|
If CveConceptoMovimiento = 41 Then
|
||||||
|
CveVentaDetalleRemision = Dr("CveVentaDetalleRemision").ToString.ToEntero()
|
||||||
|
End If
|
||||||
|
|
||||||
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoDevolucion, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, -1, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, FechaCaducidad:=FechaCaducidad, CveVentaDetalleRemision:=CveVentaDetalleRemision) Then
|
||||||
|
ErrorCancelar = True
|
||||||
|
MensajeError = "Ocurrió un error al procesar los conceptos de salida. Por favor vuelva a intentar."
|
||||||
|
Exit For
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
Else
|
||||||
|
MensajeError = "Ocurrió un error al agregar el movimiento"
|
||||||
|
ErrorCancelar = True
|
||||||
|
End If
|
||||||
|
|
||||||
|
'GENERA PREPOLIZA DEL MOVIMIENTO DE DEVOLUCION
|
||||||
|
If Not ErrorCancelar Then
|
||||||
|
Dim DtCostos As DataTable = Nothing
|
||||||
|
Dim ValorInventario As Decimal = 0
|
||||||
|
If ObjInventario.GetMovimientosDetalle(CveMovimientoDevolucion, UsuarioActual.CveEmpresa) Then
|
||||||
|
DtCostos = ObjInventario.DtResultados
|
||||||
|
|
||||||
|
Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"})
|
||||||
|
Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {CveAlmacenMovimiento}").ToEntero
|
||||||
|
Dim IdCtaContable As Integer = 0
|
||||||
|
If tmpCostos.Rows.Count > 0 Then
|
||||||
|
|
||||||
|
Dim Multiplicador As Decimal = -1D
|
||||||
|
If ObjFactura.TipoDocto = "Dev" Then
|
||||||
|
Multiplicador = 1D
|
||||||
|
End If
|
||||||
|
|
||||||
|
If ObjVentas.GetVenta(CveVenta, UsuarioActual.CveEmpresa) Then
|
||||||
|
Dim Fecha As Date = Now
|
||||||
|
Dim CveCliente As Integer = ObjVentas.DtResultados(0)("CveCliente").ToString.ToEntero
|
||||||
|
Dim ClienteNombre As String = ObjVentas.DtResultados(0)("ClienteNombre").ToString
|
||||||
|
Dim SerieFolio As String = ObjVentas.DtResultados(0)("SerieFolio").ToString
|
||||||
|
Dim TotalCosto As Decimal = DtCostos.SUMD("Total").RoundAD()
|
||||||
|
Dim TotalCostoAcumulado As Decimal = 0
|
||||||
|
Dim cont As Integer = 1
|
||||||
|
|
||||||
|
Dim CvePrePolizaDev As Integer = ObjConta.AddPrePolizas("Modelos/RecepcionEntrega", 4, TotalCosto, TotalCosto, 1, Fecha, ClienteNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
|
||||||
|
'SE AGREGA MOVIMIENTO SEPARADO POR LA CUENTA DE VENTAS (ER)
|
||||||
|
For Each RowInv As DataRow In tmpCostos.Rows
|
||||||
|
ValorInventario = DtCostos.SUMD("Total", $"CveClasificacion = {RowInv("CveClasificacion")}").RoundAD()
|
||||||
|
TotalCostoAcumulado += ValorInventario
|
||||||
|
|
||||||
|
'CUANDO ES EL ÚLTIMO MOVIMIENTO Y HAY DIFERENCIAS EN LOS IMPORTES
|
||||||
|
If cont = DtCostos.Rows.Count AndAlso TotalCosto <> TotalCostoAcumulado Then
|
||||||
|
ValorInventario = ValorInventario + (TotalCosto - TotalCostoAcumulado)
|
||||||
|
End If
|
||||||
|
|
||||||
|
IdCtaContable = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaCostos", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero
|
||||||
|
|
||||||
|
If Not ErrorCancelar Then
|
||||||
|
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, False, Multiplicador * ValorInventario, SerieFolio, 69, SerieFolio, Fecha, IdCtaContable, -1, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimientoDevolucion, CveSubProyecto:=ObjFactura.CveSubProyecto, ImporteMX:=Multiplicador * ValorInventario, CveClasificacion:=RowInv("CveClasificacion").ToString.ToEntero) Then
|
||||||
|
ErrorCancelar = True
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
cont += 1
|
||||||
|
Next
|
||||||
|
|
||||||
|
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, True, Multiplicador * TotalCosto, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimientoDevolucion, CveSubProyecto:=ObjFactura.CveSubProyecto, ImporteMX:=Multiplicador * TotalCosto) Then
|
||||||
|
ErrorCancelar = True
|
||||||
|
End If
|
||||||
|
|
||||||
|
'AUTOCONTA - EL MOVIMIENTO 1 ES EL DE VENTA
|
||||||
|
|
||||||
|
Dim AutoConta As Boolean = UsuarioActual.Empresa.Funcionalidad(200) = "1"
|
||||||
|
|
||||||
|
If UsuarioActual.CveEmpresa = 119 AndAlso ObjFactura.TipoDocto.Contiene("Ant", "Rem", "RNC", "Cot", "Ped", "Pd2", "PA", "Egs", "Dev") Then
|
||||||
|
AutoConta = False
|
||||||
|
End If
|
||||||
|
|
||||||
|
If AutoConta And Not ErrorCancelar Then
|
||||||
|
|
||||||
|
If IdCtaContable > 0 Then
|
||||||
|
If Not ObjConta.ContabilizarPrePoliza(CvePrePolizaDev, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjAC) Then
|
||||||
|
ErrorCancelar = True
|
||||||
|
MensajeError = "Ocurrió un error al contabilizar la prepoliza."
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
Alert(String.Format("No se puede contabilizar ya que falta asignación de las cuentas contables"), TipoMensaje.MsgAdvertencia)
|
||||||
|
End If
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
Else
|
||||||
|
ErrorCancelar = True
|
||||||
|
MensajeError = "Ocurrió un Error al ingresar las prepolizas"
|
||||||
|
End If
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
Dim CveVentaDetalleRemision As Integer = -1
|
'AGREGA BITACORA A VENTA
|
||||||
If CveConceptoMovimiento = 41 Then
|
If Not ErrorCancelar AndAlso RealizarDevolucionAlmacen AndAlso CveMovimientoDevolucion > 0 Then
|
||||||
CveVentaDetalleRemision = Dr("CveVentaDetalleRemision").ToString.ToEntero()
|
Dim MensajeBitacora = "Devuelta"
|
||||||
End If
|
If Not ObjEventos.AddEventoBitacora(String.Format("Venta {2} en Folio: <a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"" target=""_blank"">{1}</a>", CveMovimientoDevolucion, Folio, MensajeBitacora), "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVenta) Then
|
||||||
|
MensajeError = "Ocurrió un error al agregar la bitacora."
|
||||||
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoDevolucion, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, -1, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, FechaCaducidad:=FechaCaducidad, CveVentaDetalleRemision:=CveVentaDetalleRemision) Then
|
|
||||||
ErrorCancelar = True
|
ErrorCancelar = True
|
||||||
MensajeError = "Ocurrió un error al procesar los conceptos de salida. Por favor vuelva a intentar."
|
End If
|
||||||
Exit For
|
End If
|
||||||
|
|
||||||
|
Else
|
||||||
|
'SI EXISTE UNA DEVOLUCION PREVIAMENTE HECHA UTILIZAR COMO REFERENCIA
|
||||||
|
If DtDevPrevias IsNot Nothing AndAlso DtDevPrevias.Rows.Count > 0 Then
|
||||||
|
CveMovimientoDevolucion = DtDevPrevias.FiltroPrimeroValor("CveMovimiento", $"CveConcepto = {CveConceptoMovimiento}").ToEntero()
|
||||||
|
End If
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
'DEVOLUCION REMISION - REGRESA LAS EXISTENCIAS A ENTREGA POR ADELANTADO SI LA FACTURA VIENE DE REMISION
|
||||||
|
'SI ES DEVOLUCION DEL CLIENTE DEBE REGRESAR A ENTREGA POR ADELANTADO
|
||||||
|
If Not ErrorCancelar AndAlso CveConceptoMovimiento = 18 AndAlso RevivirRemisiones Then
|
||||||
|
If Not GeneraMovimientosEntregaPorAdelantadoRemision(CveMovimientoDevolucion, ObjVentas, ObjInventario, DtDevRem, ListaRemisionesCancelar) Then
|
||||||
|
ErrorCancelar = True
|
||||||
|
MensajeError = "Ocurrió un error al generar los movimientos de devolución a remisión"
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
If DtVirtuales IsNot Nothing Then
|
||||||
|
For Each RowVirtual As DataRow In DtVirtuales.Rows
|
||||||
|
'REALIZA LA DEVOLUCION AL ALMACEN VIRTUAL
|
||||||
|
If Not ErrorCancelar AndAlso Not GeneraMovimientosVirtuales(CveVenta, CveMovimientoDevolucion, RowVirtual("CveMovimiento").ToString().ToEntero(), ObjInventario) Then
|
||||||
|
ErrorCancelar = True
|
||||||
|
MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar."
|
||||||
End If
|
End If
|
||||||
Next
|
Next
|
||||||
Else
|
|
||||||
MensajeError = "Ocurrió un error al agregar el movimiento"
|
|
||||||
ErrorCancelar = True
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
'GENERA PREPOLIZA DEL MOVIMIENTO DE DEVOLUCION
|
If ErrorCancelar Then
|
||||||
If Not ErrorCancelar Then
|
Exit For
|
||||||
Dim DtCostos As DataTable = Nothing
|
|
||||||
Dim ValorInventario As Decimal = 0
|
|
||||||
If ObjInventario.GetMovimientosDetalle(CveMovimientoDevolucion, UsuarioActual.CveEmpresa) Then
|
|
||||||
DtCostos = ObjInventario.DtResultados
|
|
||||||
|
|
||||||
Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"})
|
|
||||||
Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {CveAlmacenMovimiento}").ToEntero
|
|
||||||
Dim IdCtaContable As Integer = 0
|
|
||||||
If tmpCostos.Rows.Count > 0 Then
|
|
||||||
|
|
||||||
Dim Multiplicador As Decimal = -1D
|
|
||||||
If ObjFactura.TipoDocto = "Dev" Then
|
|
||||||
Multiplicador = 1D
|
|
||||||
End If
|
|
||||||
|
|
||||||
If ObjVentas.GetVenta(CveVenta, UsuarioActual.CveEmpresa) Then
|
|
||||||
Dim Fecha As Date = Now
|
|
||||||
Dim CveCliente As Integer = ObjVentas.DtResultados(0)("CveCliente").ToString.ToEntero
|
|
||||||
Dim ClienteNombre As String = ObjVentas.DtResultados(0)("ClienteNombre").ToString
|
|
||||||
Dim SerieFolio As String = ObjVentas.DtResultados(0)("SerieFolio").ToString
|
|
||||||
Dim TotalCosto As Decimal = DtCostos.SUMD("Total").RoundAD()
|
|
||||||
Dim TotalCostoAcumulado As Decimal = 0
|
|
||||||
Dim cont As Integer = 1
|
|
||||||
|
|
||||||
Dim CvePrePolizaDev As Integer = ObjConta.AddPrePolizas("Modelos/RecepcionEntrega", 4, TotalCosto, TotalCosto, 1, Fecha, ClienteNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
|
|
||||||
'SE AGREGA MOVIMIENTO SEPARADO POR LA CUENTA DE VENTAS (ER)
|
|
||||||
For Each RowInv As DataRow In tmpCostos.Rows
|
|
||||||
ValorInventario = DtCostos.SUMD("Total", $"CveClasificacion = {RowInv("CveClasificacion")}").RoundAD()
|
|
||||||
TotalCostoAcumulado += ValorInventario
|
|
||||||
|
|
||||||
'CUANDO ES EL ÚLTIMO MOVIMIENTO Y HAY DIFERENCIAS EN LOS IMPORTES
|
|
||||||
If cont = DtCostos.Rows.Count AndAlso TotalCosto <> TotalCostoAcumulado Then
|
|
||||||
ValorInventario = ValorInventario + (TotalCosto - TotalCostoAcumulado)
|
|
||||||
End If
|
|
||||||
|
|
||||||
IdCtaContable = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaCostos", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero
|
|
||||||
|
|
||||||
If Not ErrorCancelar Then
|
|
||||||
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, False, Multiplicador * ValorInventario, SerieFolio, 69, SerieFolio, Fecha, IdCtaContable, -1, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimientoDevolucion, CveSubProyecto:=ObjFactura.CveSubProyecto, ImporteMX:=Multiplicador * ValorInventario, CveClasificacion:=RowInv("CveClasificacion").ToString.ToEntero) Then
|
|
||||||
ErrorCancelar = True
|
|
||||||
End If
|
|
||||||
End If
|
|
||||||
|
|
||||||
cont += 1
|
|
||||||
Next
|
|
||||||
|
|
||||||
If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, True, Multiplicador * TotalCosto, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimientoDevolucion, CveSubProyecto:=ObjFactura.CveSubProyecto, ImporteMX:=Multiplicador * TotalCosto) Then
|
|
||||||
ErrorCancelar = True
|
|
||||||
End If
|
|
||||||
|
|
||||||
'AUTOCONTA - EL MOVIMIENTO 1 ES EL DE VENTA
|
|
||||||
|
|
||||||
Dim AutoConta As Boolean = UsuarioActual.Empresa.Funcionalidad(200) = "1"
|
|
||||||
|
|
||||||
If UsuarioActual.CveEmpresa = 119 AndAlso ObjFactura.TipoDocto.Contiene("Ant", "Rem", "RNC", "Cot", "Ped", "Pd2", "PA", "Egs", "Dev") Then
|
|
||||||
AutoConta = False
|
|
||||||
End If
|
|
||||||
|
|
||||||
If AutoConta And Not ErrorCancelar Then
|
|
||||||
|
|
||||||
If IdCtaContable > 0 Then
|
|
||||||
If Not ObjConta.ContabilizarPrePoliza(CvePrePolizaDev, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjAC) Then
|
|
||||||
ErrorCancelar = True
|
|
||||||
MensajeError = "Ocurrió un error al contabilizar la prepoliza."
|
|
||||||
End If
|
|
||||||
Else
|
|
||||||
Alert(String.Format("No se puede contabilizar ya que falta asignación de las cuentas contables"), TipoMensaje.MsgAdvertencia)
|
|
||||||
End If
|
|
||||||
|
|
||||||
End If
|
|
||||||
|
|
||||||
Else
|
|
||||||
ErrorCancelar = True
|
|
||||||
MensajeError = "Ocurrió un Error al ingresar las prepolizas"
|
|
||||||
End If
|
|
||||||
End If
|
|
||||||
End If
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
'AGREGA BITACORA A VENTA
|
Next
|
||||||
If Not ErrorCancelar AndAlso RealizarDevolucionAlmacen AndAlso CveMovimientoDevolucion > 0 Then
|
End If
|
||||||
Dim MensajeBitacora = "Devuelta"
|
|
||||||
If Not ObjEventos.AddEventoBitacora(String.Format("Venta {2} en Folio: <a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"" target=""_blank"">{1}</a>", CveMovimientoDevolucion, Folio, MensajeBitacora), "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVenta) Then
|
|
||||||
MensajeError = "Ocurrió un error al agregar la bitacora."
|
|
||||||
ErrorCancelar = True
|
|
||||||
End If
|
|
||||||
End If
|
|
||||||
|
|
||||||
Else
|
|
||||||
'SI EXISTE UNA DEVOLUCION PREVIAMENTE HECHA UTILIZAR COMO REFERENCIA
|
|
||||||
If DtDevPrevias IsNot Nothing AndAlso DtDevPrevias.Rows.Count > 0 Then
|
|
||||||
CveMovimientoDevolucion = DtDevPrevias.FiltroPrimeroValor("CveMovimiento", $"CveConcepto = {CveConceptoMovimiento}").ToEntero()
|
|
||||||
End If
|
|
||||||
|
|
||||||
End If
|
|
||||||
|
|
||||||
|
|
||||||
'DEVOLUCION REMISION - REGRESA LAS EXISTENCIAS A ENTREGA POR ADELANTADO SI LA FACTURA VIENE DE REMISION
|
|
||||||
'SI ES DEVOLUCION DEL CLIENTE DEBE REGRESAR A ENTREGA POR ADELANTADO
|
|
||||||
If Not ErrorCancelar AndAlso CveConceptoMovimiento = 18 AndAlso RevivirRemisiones Then
|
|
||||||
If Not GeneraMovimientosEntregaPorAdelantadoRemision(CveMovimientoDevolucion, ObjVentas, ObjInventario, DtDevRem, ListaRemisionesCancelar) Then
|
|
||||||
ErrorCancelar = True
|
|
||||||
MensajeError = "Ocurrió un error al generar los movimientos de devolución a remisión"
|
|
||||||
End If
|
|
||||||
End If
|
|
||||||
|
|
||||||
If DtVirtuales IsNot Nothing Then
|
|
||||||
For Each RowVirtual As DataRow In DtVirtuales.Rows
|
|
||||||
'REALIZA LA DEVOLUCION AL ALMACEN VIRTUAL
|
|
||||||
If Not ErrorCancelar AndAlso Not GeneraMovimientosVirtuales(CveVenta, CveMovimientoDevolucion, RowVirtual("CveMovimiento").ToString().ToEntero(), ObjInventario) Then
|
|
||||||
ErrorCancelar = True
|
|
||||||
MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar."
|
|
||||||
End If
|
|
||||||
Next
|
|
||||||
End If
|
|
||||||
|
|
||||||
If ErrorCancelar Then
|
|
||||||
Exit For
|
|
||||||
End If
|
|
||||||
|
|
||||||
Next
|
|
||||||
|
|
||||||
|
|
||||||
'SI EXISTEN HAY EXISTENCIA EN (ENTREGA POR ADELANTADO) SE TIENE QUE REGRESAR AL ALMACEN ORGINAL (GENERAL,SIN COSTO)
|
'SI EXISTEN HAY EXISTENCIA EN (ENTREGA POR ADELANTADO) SE TIENE QUE REGRESAR AL ALMACEN ORGINAL (GENERAL,SIN COSTO)
|
||||||
If Not ErrorCancelar AndAlso ListaRemisionesCancelar IsNot Nothing AndAlso ListaRemisionesCancelar.Count > 0 Then
|
If Not ErrorCancelar AndAlso ObjFactura.TipoDocto <> "Rem" AndAlso ListaRemisionesCancelar IsNot Nothing AndAlso ListaRemisionesCancelar.Count > 0 Then
|
||||||
|
|
||||||
'VERIFICA LOS MOVIMIENTOS DE DEVOLUCION YA GENERADOS QUE TENGAN EXISTENCIA EN (ENTREGA POR ADELANTADO)
|
'VERIFICA LOS MOVIMIENTOS DE DEVOLUCION YA GENERADOS QUE TENGAN EXISTENCIA EN (ENTREGA POR ADELANTADO)
|
||||||
If Not ErrorCancelar Then
|
If Not ErrorCancelar Then
|
||||||
@@ -5314,6 +5315,40 @@ Namespace Modelos
|
|||||||
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
'CANCELACION DE MOVIMIENTOS DE REMISION
|
||||||
|
If Not ErrorCancelar AndAlso ObjFactura.TipoDocto = "Rem" AndAlso RealizarDevolucionAlmacen Then
|
||||||
|
Dim CveAlmacenGeneral As Integer = 0
|
||||||
|
Dim DtMovRemision As DataTable = Nothing
|
||||||
|
'VERIFICA LOS MOVIMIENTOS DE DEVOLUCION YA GENERADOS QUE TENGAN EXISTENCIA EN (ENTREGA POR ADELANTADO)
|
||||||
|
If Not ErrorCancelar Then
|
||||||
|
If ObjInventario.GetInv_Mov(CveVenta, UsuarioActual.CveEmpresa) Then
|
||||||
|
DtMovRemision = ObjInventario.DtResultados.FiltraParametros("CveTipoAlmacen = 10")
|
||||||
|
CveAlmacenGeneral = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen", "CveTipoAlmacen = 1").ToString().ToEntero()
|
||||||
|
Else
|
||||||
|
ErrorCancelar = True
|
||||||
|
MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar."
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
'DEBE REGRESAR LA EXISTENCIA DE (ENTREGA POR ADELANTADO) AL ALMACEN ORGINAL (GENERAL,SIN COSTO)
|
||||||
|
If Not ErrorCancelar AndAlso DtMovRemision IsNot Nothing AndAlso DtMovRemision.Rows.Count > 0 Then
|
||||||
|
|
||||||
|
Dim DtDevMovs = DtMovRemision.FiltraParametros("", DistinctColumns:={"CveMovimiento", "CveAlmacen"})
|
||||||
|
|
||||||
|
For Each RowDevolucion As DataRow In DtDevMovs.Rows
|
||||||
|
CveAlmacen = RowDevolucion("CveAlmacen").ToString().ToEntero()
|
||||||
|
|
||||||
|
If Not CancelarMovimientosRemision(CveVenta, CveAlmacen, CveAlmacenGeneral, DtMovRemision.FiltraParametros($"CveMovimiento={RowDevolucion("CveMovimiento")} AND CvePS > 0"), ObjVentas, ObjInventario) Then
|
||||||
|
ErrorCancelar = True
|
||||||
|
MensajeError = "Ocurrió un error al cancelar los movimientos de la remisión."
|
||||||
|
Exit For
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
'VERIFICAR MOVIMIENTOS DE APARTADOS
|
'VERIFICAR MOVIMIENTOS DE APARTADOS
|
||||||
If Not ErrorCancelar Then
|
If Not ErrorCancelar Then
|
||||||
If Not GeneraMovimientosApartados(ObjInventario) Then
|
If Not GeneraMovimientosApartados(ObjInventario) Then
|
||||||
|
|||||||
@@ -116,7 +116,10 @@ Public Class SIGWeb : Implements IHttpHandler, IRequiresSessionState
|
|||||||
Case "sendMailLPM"
|
Case "sendMailLPM"
|
||||||
context.Response.Write(sendMailLPM(context))
|
context.Response.Write(sendMailLPM(context))
|
||||||
Case "getSATColomias"
|
Case "getSATColomias"
|
||||||
getSatColonias(context)
|
getSATColonias(context)
|
||||||
|
|
||||||
|
Case "cancelarRemision"
|
||||||
|
cancelarRemision(context)
|
||||||
End Select
|
End Select
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
ex.GuardaLog(ex.Message)
|
ex.GuardaLog(ex.Message)
|
||||||
@@ -1422,4 +1425,47 @@ Public Class SIGWeb : Implements IHttpHandler, IRequiresSessionState
|
|||||||
Return retorno
|
Return retorno
|
||||||
End Function
|
End Function
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
|
#Region "Get SAT Colonmias"
|
||||||
|
Private Function cancelarRemision(ByVal context As HttpContext) As String
|
||||||
|
Dim retorno As String = ""
|
||||||
|
|
||||||
|
Dim CveVenta As Integer = IfNull(context.Request("CveVenta"), "-1").ToString().ToEntero()
|
||||||
|
|
||||||
|
If CveVenta > 0 Then
|
||||||
|
Dim usuario As Usuario = UsuarioActual(context)
|
||||||
|
If usuario IsNot Nothing AndAlso usuario.CveEmpresa > 0 Then
|
||||||
|
Dim CveAlmacenDevolucion As Integer = 0
|
||||||
|
|
||||||
|
Using ObjInv As New ClsInventarios
|
||||||
|
If ObjInv.GetInv_Mov(CveVenta, usuario.CveEmpresa) Then
|
||||||
|
If ObjInv.DtResultados.Rows.Count > 0 Then
|
||||||
|
CveAlmacenDevolucion = ObjInv.DtResultados.FiltroPrimeroValor("CveAlmacen", "CveConcepto IN (3,40)").ToEntero()
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End Using
|
||||||
|
|
||||||
|
Dim ObjFacturaCancelacion As New Modelos.Factura(usuario, CveVenta, usuario.CveEmpresa, EsCancelacion:=True)
|
||||||
|
ObjFacturaCancelacion.CveAlmacenDevolucion = CveAlmacenDevolucion
|
||||||
|
|
||||||
|
If ObjFacturaCancelacion.TipoDocto = "Rem" Then
|
||||||
|
Dim respuesta = ObjFacturaCancelacion.CancelarFactura(True, New List(Of Integer))
|
||||||
|
If respuesta IsNot Nothing Then
|
||||||
|
retorno = JsonConvert.SerializeObject(respuesta)
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
If Not String.IsNullOrEmpty(retorno) Then
|
||||||
|
context.Response.Write(retorno)
|
||||||
|
Else
|
||||||
|
context.Response.Write("[]")
|
||||||
|
End If
|
||||||
|
|
||||||
|
Return retorno
|
||||||
|
End Function
|
||||||
|
#End Region
|
||||||
End Class
|
End Class
|
||||||
Reference in New Issue
Block a user