diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb
index 3715fdc45..d1ecd1e37 100644
--- a/App_Code/Modelos.vb
+++ b/App_Code/Modelos.vb
@@ -4177,104 +4177,113 @@ Namespace Modelos
Dim CveMovimiento As Integer = 0
Dim Folio As Integer = 0
- If Not ErrorCancelar AndAlso RealizarDevolucionAlmacen AndAlso ObjFactura.SaldoAlmacen <> 0 Then
+ If Not ErrorCancelar AndAlso RealizarDevolucionAlmacen Then
Dim CveAlmacenDevolucion = ObjFactura.CveAlmacenDevolucion
- 'SALIDA DE ALMACEN - SALIDA POR TRASPASO CUANDO ES REMISION - DEVOLUCION (SI ES TRASPASO Y TIENE CONTRATO NO HACE DEVOLUCIóN)
+ 'VERIFICAR SI YA TIENE UNA DEVOLUCION
+ 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)
+ CveMovimiento = ObjInventario.AddMovimiento(CveAlmacenDevolucion, ConceptoMovimiento, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVenta, -1, -1, Observaciones:="", Guia:="", CveContrato:=CveContrato, CveAlmacenDestino:=-1)
+ Folio = ObjInventario.Folio
- CveMovimiento = ObjInventario.AddMovimiento(CveAlmacenDevolucion, ConceptoMovimiento, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVenta, -1, -1, Observaciones:="", Guia:="", CveContrato:=CveContrato, CveAlmacenDestino:=-1)
- Folio = ObjInventario.Folio
-
- If CveMovimiento > 0 Then
- For Each Dr As DataRow In DtExistencias.Rows
- If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, -1, SerieLote:=Dr("SerieLote").ToString, Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, 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
- 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(CveMovimiento, UsuarioActual.CveEmpresa) Then
- DtCostos = ObjInventario.DtResultados
-
- Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"})
- Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {CveAlmacenDevolucion}").ToEntero
- Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {CveAlmacenDevolucion}").ToEntero
- Dim IdCtaContable As Integer = 0
- Dim CveCuenta As Integer = 0
- If tmpCostos.Rows.Count > 0 Then
-
- 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").RoundSQL()
- Dim TotalCostoAcumulado As Decimal = 0
- Dim cont As Integer = 1
-
- Dim CvePrePolizaDev As Integer = ObjConta.AddPrePolizas("Inventario/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")}").RoundSQL()
- 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
- CveCuenta = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaCostosSIG", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero
-
- If Not ErrorCancelar Then
- If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, False, -1 * ValorInventario, SerieFolio, 69, SerieFolio, Fecha, IdCtaContable, -1, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimiento, CveSubProyecto:=ObjFactura.CveSubProyecto, ImporteMX:=-1 * ValorInventario, CveCuenta:=CveCuenta, CveClasificacion:=RowInv("CveClasificacion").ToString.ToEntero) Then
- ErrorCancelar = True
- End If
- End If
-
- cont += 1
- Next
-
- If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, True, -1 * TotalCosto, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimiento, CveSubProyecto:=ObjFactura.CveSubProyecto, ImporteMX:=-1 * TotalCosto, CveCuenta:=CveCuentaAlmacen) 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", "NC") 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
+ If CveMovimiento > 0 Then
+ For Each Dr As DataRow In DtExistencias.Rows
+ If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, -1, SerieLote:=Dr("SerieLote").ToString, Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero) Then
ErrorCancelar = True
- MensajeError = "Ocurrió un Error al ingresar las prepolizas"
+ 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(CveMovimiento, UsuarioActual.CveEmpresa) Then
+ DtCostos = ObjInventario.DtResultados
+
+ Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"})
+ Dim IdCtaContableAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {CveAlmacenDevolucion}").ToEntero
+ Dim CveCuentaAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContableSIG", $"CveAlmacen = {CveAlmacenDevolucion}").ToEntero
+ Dim IdCtaContable As Integer = 0
+ Dim CveCuenta As Integer = 0
+ If tmpCostos.Rows.Count > 0 Then
+
+ 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").RoundSQL()
+ Dim TotalCostoAcumulado As Decimal = 0
+ Dim cont As Integer = 1
+
+ Dim CvePrePolizaDev As Integer = ObjConta.AddPrePolizas("Inventario/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")}").RoundSQL()
+ 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
+ CveCuenta = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaCostosSIG", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero
+
+ If Not ErrorCancelar Then
+ If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, False, -1 * ValorInventario, SerieFolio, 69, SerieFolio, Fecha, IdCtaContable, -1, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimiento, CveSubProyecto:=ObjFactura.CveSubProyecto, ImporteMX:=-1 * ValorInventario, CveCuenta:=CveCuenta, CveClasificacion:=RowInv("CveClasificacion").ToString.ToEntero) Then
+ ErrorCancelar = True
+ End If
+ End If
+
+ cont += 1
+ Next
+
+ If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, True, -1 * TotalCosto, SerieFolio, 68, SerieFolio, Fecha, IdCtaContableAlmacen, -1, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimiento, CveSubProyecto:=ObjFactura.CveSubProyecto, ImporteMX:=-1 * TotalCosto, CveCuenta:=CveCuentaAlmacen) 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", "NC") 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
+ Else
+ 'UTILIZA LA DEVOLUCION YA REALIZADA
+ If ObjInventario.GetInv_Mov(CveVenta, UsuarioActual.CveEmpresa) Then
+ CveMovimiento = ObjInventario.DtResultados.FiltroPrimeroValor("CveMovimiento", $"CvePS IS NULL AND CveConcepto = 18").ToEntero()
+ Else
+ ErrorCancelar = True
+ MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar."
+ End If
End If
If Not ErrorCancelar Then
diff --git a/Compras/PopUpVerFactura.aspx.vb b/Compras/PopUpVerFactura.aspx.vb
index 05a1015ba..2cdfa5f01 100644
--- a/Compras/PopUpVerFactura.aspx.vb
+++ b/Compras/PopUpVerFactura.aspx.vb
@@ -72,7 +72,6 @@ Partial Class PopUpVerFactura
Return AppDomain.CurrentDomain.BaseDirectory & "Empresas\" & UsuarioActual.CveEmpresa & "\"
End Get
End Property
-
Private ReadOnly Property DomicilioFiscalCompu As String
Get
Dim SisEmpresa As New ClsSisEmpresas()
@@ -85,23 +84,31 @@ Partial Class PopUpVerFactura
End If
Return ""
End Get
- End Property
+ End Property
+ 'Private Property SessionPorImpresion As Boolean
+ ' Get
+ ' Return CBool(IfNull(ViewState("SessionPorImpresion"), False, ViewState("SessionPorImpresion")))
+ ' End Get
+ ' Set(value As Boolean)
+ ' ViewState("SessionPorImpresion") = value
+ ' End Set
+ 'End Property
#End Region
-
-
+
+
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
'CREA EL OBJECTO USUARIO A PARTIR DEL TOKEN
If Request.Headers("ADSToken") IsNot Nothing Then
Dim UserParams As Hashtable = Parametros(Decripta((Request.Headers("ADSToken").ToString)))
Dim CveEmpresaToken As Integer = UserParams("CVEEMPRESA").ToString().ToEntero()
+ Dim CveUsuario As Integer = IfNull(UserParams("CVEUSUARIO"), 100, UserParams("CVEUSUARIO").ToString().ToEntero()).ToString().ToEntero()
- Dim UsuarioToken = ValidaUsuarioSistema(CveEmpresaToken)
+ Dim UsuarioToken = ValidaUsuarioSistema(CveEmpresaToken, CveUsuario)
- If UsuarioToken IsNot Nothing Then
+ If UsuarioToken IsNot Nothing AndAlso UsuarioActual Is Nothing Then
Context.Session("UsuarioSIG") = UsuarioToken
End If
-
End If
If Request("RFC") IsNot Nothing AndAlso Request("File") IsNot Nothing Then
@@ -168,15 +175,15 @@ Partial Class PopUpVerFactura
End If
- End Sub
-
+ End Sub
+
#Region "U S U A R I O - T O K E N"
-
- Private Function ValidaUsuarioSistema(CveEmpresa As Integer) As Usuario
+
+ Private Function ValidaUsuarioSistema(CveEmpresa As Integer, Optional CveUsuario As Integer = 100) As Usuario
Dim UsuarioToken As Usuario = Nothing
Dim ObjUsuarios As New ClsSisUsuarios
- If ObjUsuarios.GetUsuarios(100) Then
+ If ObjUsuarios.GetUsuarios(CveUsuario) Then
If ObjUsuarios.DtResultados.Rows.Count > 0 Then
Dim Usuario = ObjUsuarios.DtResultados.Rows(0)("Usuario").ToString()
Dim Contrasenia = ObjUsuarios.DtResultados.Rows(0)("Contraseña").ToString()
diff --git a/Ventas/PV.aspx.vb b/Ventas/PV.aspx.vb
index e3d086277..d2cadd606 100644
--- a/Ventas/PV.aspx.vb
+++ b/Ventas/PV.aspx.vb
@@ -7,6 +7,7 @@ Imports System.IO
Imports System.Linq
Imports System.Security.Cryptography.X509Certificates
Imports System.Globalization
+Imports System.Net.Http
Partial Class PV
Inherits ClsPaginas
@@ -2290,6 +2291,18 @@ Partial Class PV
If ObjFactura.CveCliente > 0 Then
If TmpDT.Rows.Count > 0 Then
Dim Retorno = ObjFactura.EmitirFactura()
+ If Retorno.CveVenta > 0 Then
+ Dim SbAlert As New StringBuilder
+ SbAlert.AppendFormat("{0}
", Retorno.Mensajes(Retorno.Mensajes.Count - 1))
+
+ DescargarFactura(Retorno.CveVenta, UsuarioActual.CveEmpresa)
+
+ SbAlert.AppendFormat("