diff --git a/App_Code/ClsBancos.vb b/App_Code/ClsBancos.vb index e4b936d10..a2129f8a1 100644 --- a/App_Code/ClsBancos.vb +++ b/App_Code/ClsBancos.vb @@ -1718,9 +1718,9 @@ Public Class ClsBancos Return Retorno End Function - Public Function CancelarBancos_IE(CveUsuario As Integer, CveIE As Integer, MesAnterior As Boolean, IdPoliza As Integer, FolioPoliza As Integer, Optional FechaCancelacion As Date = MinFecha, Optional TipoMovimiento As Integer = 1) As Boolean + Public Function CancelarBancos_IE(CveUsuario As Integer, CveIE As Integer, MesAnterior As Boolean, IdPoliza As Integer, FolioPoliza As Integer, Optional FechaCancelacion As Date = MinFecha, Optional TipoMovimiento As Integer = 1) As Integer - Dim Retorno As Boolean = False + Dim Retorno As Integer = 0 DataAdapter("PA_Banc_IECancelar") With SqlAdapter.SelectCommand.Parameters @@ -1731,11 +1731,12 @@ Public Class ClsBancos .Add("@FolioPoliza", SqlDbType.Int).Value = FolioPoliza .Add("@FechaCancelacion", SqlDbType.Date).Value = FechaCancelacion .Add("@TipoMovimiento", SqlDbType.Int).Value = TipoMovimiento + .Add("@CvePrePoliza", SqlDbType.Int).Direction = ParameterDirection.Output End With Try SqlAdapter.Fill(Data) - Retorno = True + Retorno = SqlAdapter.SelectCommand.Parameters("@CvePrePoliza").Value.ToString.ToEntero Catch ex As Exception OnError("Ocurrió un error al cancelar el movimiento en bancos.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) End Try diff --git a/App_Code/ClsInventarios.vb b/App_Code/ClsInventarios.vb index bc906fcd4..61f19b032 100644 --- a/App_Code/ClsInventarios.vb +++ b/App_Code/ClsInventarios.vb @@ -360,7 +360,7 @@ Public Class ClsInventarios End Function - Public Function AddAlmacen(Almacen As String, CveTipoAlmacen As Integer, IdCtaContable As Integer, Modalidad As Integer, CveUsuario As Integer, CveEmpresa As Integer, Inventariable As Byte, CveSubProyecto As Integer, Optional Orden As Integer = -1, Optional CveCuenta As Integer = -1, Optional CveUsuarioAutoriza As Integer = -1) As Boolean + Public Function AddAlmacen(Almacen As String, CveTipoAlmacen As Integer, IdCtaContable As Integer, Modalidad As Integer, CveUsuario As Integer, CveEmpresa As Integer, Inventariable As Byte, CveSubProyecto As Integer, Optional Orden As Integer = -1, Optional CveCuenta As Integer = -1, Optional CveUsuarioAutoriza As Integer = -1, Optional CveAlmacenVirtual As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Inv_AlmacenesAdd") @@ -377,7 +377,7 @@ Public Class ClsInventarios .Add("@Orden", SqlDbType.SmallInt).Value = Orden .Add("@CveCuenta", SqlDbType.Int).Value = CveCuenta .Add("@CveUsuarioAutoriza", SqlDbType.Int).Value = CveUsuarioAutoriza - + .Add("@CveAlmacenVirtual", SqlDbType.Int).Value = CveAlmacenVirtual End With Try @@ -396,7 +396,7 @@ Public Class ClsInventarios Return Retorno End Function - Public Function UpdateAlmacen(Almacen As String, CveTipoAlmacen As Integer, IdCtaContable As Integer, Modalidad As Integer, Estatus As Boolean, CveAlmacen As Integer, Inventariable As Byte, CveSubProyecto As Integer, Optional Orden As Integer = -1, Optional CveCuenta As Integer = -1, Optional CveUsuarioAutoriza As Integer = -1) As Boolean + Public Function UpdateAlmacen(Almacen As String, CveTipoAlmacen As Integer, IdCtaContable As Integer, Modalidad As Integer, Estatus As Boolean, CveAlmacen As Integer, Inventariable As Byte, CveSubProyecto As Integer, Optional Orden As Integer = -1, Optional CveCuenta As Integer = -1, Optional CveUsuarioAutoriza As Integer = -1, Optional CveAlmacenVirtual As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Inv_AlmacenesUpdate") @@ -413,6 +413,7 @@ Public Class ClsInventarios .Add("@Orden", SqlDbType.SmallInt).Value = Orden .Add("@CveCuenta", SqlDbType.Int).Value = CveCuenta .Add("@CveUsuarioAutoriza", SqlDbType.Int).Value = CveUsuarioAutoriza + .Add("@CveAlmacenVirtual", SqlDbType.Int).Value = CveAlmacenVirtual End With diff --git a/App_Code/ClsRH.vb b/App_Code/ClsRH.vb index ba2f8a32e..de7538cf9 100644 --- a/App_Code/ClsRH.vb +++ b/App_Code/ClsRH.vb @@ -3634,92 +3634,6 @@ chkAplicaVacacion As Boolean, chkAplicaIncapacidad As Boolean, chkAplicaRetardo #Region "C H E C A D O R E S T A C I O N E S" - Public Function ChecadorEstacionesAdd(CveChecadorTipo As Integer, CveZonaHoraria As Integer, CveUsuario As Integer, CveEmpresa As Integer, ChecadorEstacion As String, Ip As String, Puerto As Integer, Estatus As Integer) As Boolean - Dim Retorno As Boolean = False - DataAdapter("PA_RH_ChecadorEstacionesAdd") - With SqlAdapter.SelectCommand.Parameters - .Add("@CveChecadorTipo", SqlDbType.Int).Value = CveChecadorTipo - .Add("@CveZonaHoraria", SqlDbType.Int).Value = CveZonaHoraria - .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario - .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa - .Add("@ChecadorEstacion", SqlDbType.VarChar).Value = ChecadorEstacion - .Add("@Ip", SqlDbType.VarChar).Value = Ip - .Add("@Puerto", SqlDbType.Int).Value = Puerto - .Add("@Estatus", SqlDbType.Int).Value = Estatus - - End With - Try - SqlAdapter.Fill(Data) - Retorno = True - Catch ex As Exception - OnError("Ocurrió un error al agregar el checador de estaciones.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) - End Try - - Return Retorno - End Function - - Public Function ChecadorEstacionesUpdate(CveChecadorEstacion As Integer, CveChecadorTipo As Integer, CveZonaHoraria As Integer, CveUsuario As Integer, CveEmpresa As Integer, ChecadorEstacion As String, Ip As String, Puerto As Integer, Estatus As Integer) As Boolean - Dim Retorno As Boolean = False - DataAdapter("PA_RH_ChecadorEstacionesUpdate") - With SqlAdapter.SelectCommand.Parameters - .Add("@CveChecadorEstacion", SqlDbType.Int).Value = CveChecadorEstacion - .Add("@CveChecadorTipo", SqlDbType.Int).Value = CveChecadorTipo - .Add("@CveZonaHoraria", SqlDbType.Int).Value = CveZonaHoraria - .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario - .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa - .Add("@ChecadorEstacion", SqlDbType.VarChar).Value = ChecadorEstacion - .Add("@Ip", SqlDbType.VarChar).Value = Ip - .Add("@Puerto", SqlDbType.Int).Value = Puerto - .Add("@Estatus", SqlDbType.Int).Value = Estatus - - End With - Try - SqlAdapter.Fill(Data) - Retorno = True - Catch ex As Exception - OnError("Ocurrió un error al actualizar el checador de estaciones.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) - End Try - - Return Retorno - End Function - - Public Function ChecadorEstacionesRemove(CveChecadorEstacion As Integer) As Boolean - Dim Retorno As Boolean = False - DataAdapter("PA_RH_ChecadorEstacionesRemove") - With SqlAdapter.SelectCommand.Parameters - .Add("@CveChecadorEstacion", SqlDbType.Int).Value = CveChecadorEstacion - - - End With - Try - SqlAdapter.Fill(Data) - Retorno = True - Catch ex As Exception - OnError("Ocurrió un error al eliminar el checador de estaciones.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) - End Try - - Return Retorno - End Function - - Public Function ChecadorEstacionesGet(CveChecadorEstacion As Integer, CveEmpresa As Integer) As Boolean - Dim Retorno As Boolean = False - DataAdapter("PA_RH_ChecadorEstacionesGet") - With SqlAdapter.SelectCommand.Parameters - .Add("@CveChecadorEstacion", SqlDbType.Int).Value = CveChecadorEstacion - .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa - - - End With - Try - SqlAdapter.Fill(Data) - Retorno = True - Catch ex As Exception - OnError("Ocurrió un error al obtener el checador de estaciones.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) - End Try - - Return Retorno - End Function - Public Function DdlChecadorTipoGet(CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_RH_DdlChecadorTipoGet") diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index b2e9e897d..2a0131d71 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -5105,6 +5105,12 @@ Namespace Modelos Dim ValidaVirtual = True Dim DtPSVirtual As New DataTable("DtTamanios") + Dim tCveAlmacen As Integer = -1 + + If ObjInventario.GetMovimientos(CveMovimiento, -1, -1, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then + tCveAlmacen = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen").ToEntero() + End If + If ObjInventario.GetMovimientosDetalleVirtual(CveMovimiento, UsuarioActual.CveEmpresa, CveMovimientoRelacionado:=CveMovimientoRelacionado) Then DtPSVirtual = ObjInventario.DtResultados End If @@ -5113,7 +5119,7 @@ Namespace Modelos Dim CveAlmacenVirtual As Integer = -1 Dim CveMovimientoRelacionadoVirtual As Integer = CveMovimiento - CveAlmacenVirtual = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 24).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto={CveSubProyecto}").ToEntero() + CveAlmacenVirtual = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=tCveAlmacen).FiltroPrimeroValor("CveAlmacenVirtual").ToEntero() If DtPSVirtual IsNot Nothing AndAlso DtPSVirtual.Rows.Count > 0 AndAlso CveAlmacenVirtual > 0 AndAlso CveConceptoMovimientoVirtual > 0 Then CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirtual, CveConceptoMovimientoVirtual, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVenta, -1, -1, diff --git a/Ashx/E141.ashx b/Ashx/E141.ashx index dd8ea7fcf..51b154202 100644 --- a/Ashx/E141.ashx +++ b/Ashx/E141.ashx @@ -1,14 +1,13 @@ <%@ WebHandler Language="VB" Class="E141" %> -Imports System -Imports System.Web +Option Strict On +Option Explicit On + Imports System.Data Imports System.Net.Http -Imports System.Net Imports Newtonsoft.Json Imports Newtonsoft.Json.Linq Imports Extensiones -Imports System.IO Public Class E141 : Implements IHttpHandler @@ -50,7 +49,7 @@ Public Class E141 : Implements IHttpHandler Public ReadOnly Property TokenAutorizacion As String Get If EsProduccion Then - Return "$2y$10$AGCCDbEoGEpd0ys89fuBXedtWlunwUeLRlo4MdeLyxDvJF4GwpL7a" + Return "$2y$10$8Mk3YeIkJESilIwD.U5dG.SsA4JloycJKbaGls8TNEw/AKBE1qane" Else Return "$2y$10$8Mk3YeIkJESilIwD.U5dG.SsA4JloycJKbaGls8TNEw/AKBE1qane" End If @@ -60,7 +59,7 @@ Public Class E141 : Implements IHttpHandler Public ReadOnly Property URLBase As String Get If EsProduccion Then - Return "https://services.fidelityapps.mx/" + Return "https://econollantas-pruebas.fidelityapps.mx" Else Return "https://econollantas-pruebas.fidelityapps.mx/" End If @@ -68,11 +67,11 @@ Public Class E141 : Implements IHttpHandler End Property Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest - context.Response.ContentType = "application/json" - Dim retorno As String = "no se encontro la variable" + Dim retorno As String = "" Try Dim Params = If(context.Request("P") = Nothing, "", context.Request("P").ToString()) + 'DESCARGA DEL PDF If Not String.IsNullOrEmpty(Params) Then Dim UrlParametros As Hashtable = Parametros(Decripta(Params)) @@ -80,41 +79,54 @@ Public Class E141 : Implements IHttpHandler If Not String.IsNullOrEmpty(File) Then ImprimirbytesPDF(context, DescargarFactura(File), File) End If + Else - End If + Dim Metodo = If(context.Request("Metodo") = Nothing, "", context.Request("Metodo").ToString()) + 'OBTENER EXISTENCIAS + If Metodo = "GetExistencia" Then + context.Response.ContentType = "application/json" - Dim Metodo = If(context.Request("Metodo") = Nothing, "", context.Request("Metodo").ToString()) + Dim Codigo = If(context.Request("Sku") = Nothing, "", context.Request("Sku").ToString()) + retorno = GetExistencia(context, Codigo) - Dim FiltrarTodos = If(context.Request("FiltrarTodos") = Nothing, "", context.Request("FiltrarTodos").ToString()) + Else + context.Response.ContentType = "text/html" - If Metodo = "CrearActualizarProductos" Then - retorno = CrearActualizarProductos(If(FiltrarTodos = "1", True, False)) - End If + Dim FiltrarTodos = If(context.Request("FiltrarTodos") = Nothing, "", context.Request("FiltrarTodos").ToString()) - If Metodo = "ActualizarPrecios" Then - retorno = ActualizarPrecios(If(FiltrarTodos = "1", True, False)) - End If + Dim respuesta As Boolean = False - If Metodo = "ActualizarExistencias" Then - retorno = ActualizarExistencias(If(FiltrarTodos = "1", True, False)) - End If + 'TAREAS PROGRAMADAS + Select Case Metodo + Case "CrearActualizarProductos" + respuesta = CrearActualizarProductos(If(FiltrarTodos = "1", True, False)) + Case "ActualizarPrecios" + respuesta = ActualizarPrecios(If(FiltrarTodos = "1", True, False)) + Case "ActualizarExistencias" + respuesta = ActualizarExistencias() + Case "ActualizarVendedores" + respuesta = ActualizarVendedores(If(FiltrarTodos = "1", True, False)) + End Select - If Metodo = "ActualizarVendedores" Then - retorno = ActualizarVendedores(If(FiltrarTodos = "1", True, False)) - End If + If respuesta Then + retorno = "True" + Else + retorno = "False" + End If + + End If + + context.Response.Write(retorno) - If Metodo = "GetExistencia" Then - Dim Codigo = If(context.Request("Sku") = Nothing, "", context.Request("Sku").ToString()) - retorno = GetExistencia(context, Codigo) End If Catch ex As Exception + context.Response.ContentType = "text/html" retorno = ex.ToString() ex.GuardaLog(ex.ToString()) + context.Response.Write(retorno) End Try - - context.Response.Write(retorno) End Sub Private Function GetExistencia(ByVal context As HttpContext, Codigo As String) As String @@ -157,17 +169,23 @@ Public Class E141 : Implements IHttpHandler Using ObjPS As New ClsProductosServicios() If ObjPS.GetExistenciasEmpresa(Codigo, CveEmpresa) Then Dim ArrayPS As New JArray - For Each RowPS As DataRow In ObjPS.DtResultados.Rows - Dim producto As New JObject( - New JProperty("sku", RowPS("Codigo")), - New JProperty("stock", RowPS("Existencia")) - ) - ArrayPS.Add(producto) - Next + If ObjPS.DtResultados.Rows.Count > 0 Then + For Each RowPS As DataRow In ObjPS.DtResultados.Rows + Dim producto As New JObject( + New JProperty("sku", RowPS("Codigo")), + New JProperty("stock", RowPS("Existencia")) + ) + ArrayPS.Add(producto) + Next + respuesta.isSuccess = True + respuesta.message = "La existencia se obtuvo correctamente" + Else + respuesta.isSuccess = True + respuesta.message = "No se encontro ningun producto" + End If respuesta.products = ArrayPS - respuesta.isSuccess = True - respuesta.message = "La existencia se obtuvo correctamente" + Else respuesta.isSuccess = False respuesta.message = "Ocurrió un error al obtener la existencia" @@ -182,6 +200,7 @@ Public Class E141 : Implements IHttpHandler Dim Retorno As String = "{}" Try Using httpClient = New HttpClient() + httpClient.Timeout = New TimeSpan(0, 5, 0) Using request = New HttpRequestMessage(HttpMethod.Post, New Uri(url)) request.Headers.Add("token", TokenAutorizacion) @@ -233,12 +252,10 @@ Public Class E141 : Implements IHttpHandler ' Return Retorno 'End Function #Region "C R E A C I Ó N / A C T U A L I Z A C I Ó N - P R O D U C T O S" - Private Function CrearActualizarProductos(Todos As Boolean) As String - Return EnviarInformacion($"{Me.URLBase}api/services/products/import", GetProductosModificados(Todos)) - End Function - Private Function GetProductosModificados(Todos As Boolean) As String - Dim Retorno As String = "{}" + Private Function CrearActualizarProductos(Todos As Boolean) As Boolean + Dim Retorno As Boolean = False + Dim CountPeticiones As Integer = 0, CountPeticionesExitosas As Integer = 0 Dim DtPS As DataTable = Nothing Using ObjPS As New ClsProductosServicios @@ -250,59 +267,124 @@ Public Class E141 : Implements IHttpHandler If DtPS IsNot Nothing Then - Dim ArrayPS As New JArray - For Each RowPS As DataRow In DtPS.Rows + If DtPS.Rows.Count > 0 AndAlso DtPS.Rows.Count = 1 Then + Dim Dt As DataTable = DtPS.FiltraPorIndices(0, 0) + Dim payload = New JObject() - Dim PSData As String() = RowPS("PS").ToString().Split(" ".ToCharArray()) + payload.Add(New JProperty("products", GenerarPayloadProductos(Dt))) - Dim Measurement As String = "", Size As String = "", alt_code As String = "" + Dim resp = EnviarInformacion($"{Me.URLBase}api/services/products/import", payload.ToString()) - If PSData.Length > 0 Then - Measurement = PSData(0) + CountPeticiones += 1 + + If IsValidJson(resp) Then + Dim respuesta = JObject.Parse(resp) + If respuesta("status").ToString() = "success" Then + CountPeticionesExitosas += 1 + End If End If - If PSData.Length > 1 Then - Size = PSData(1) - End If + Else + Dim TotalIndex As Integer = DtPS.Rows.Count - 1 + Dim TotaRegistrosPorPeticion As Integer = 500 + Dim PrevIndex As Integer = 0 + Dim CurrentIndex As Integer = 0 - alt_code = String.Concat(Measurement, Size) + While PrevIndex < TotalIndex + CurrentIndex += TotaRegistrosPorPeticion - Dim producto As New JObject( - New JProperty("clasificacion", RowPS("Clasificacion")), - New JProperty("category", "Prod"), - New JProperty("pza", RowPS("Unidad")), - New JProperty("sku", RowPS("Codigo")), - New JProperty("name", RowPS("PS")), - New JProperty("measurement", Measurement), - New JProperty("size", Size), - New JProperty("brand", RowPS("Marca")), - New JProperty("price", RowPS("Precio")), - New JProperty("active", RowPS("Estado")), - New JProperty("user", RowPS("UsuarioModifico")), - New JProperty("alt_code", alt_code), - New JProperty("short_description", ""), - New JProperty("description", ""), - New JProperty("currency", 1), - New JProperty("promo_price", RowPS("PrecioPromocion")) - ) + If CurrentIndex > TotalIndex Then + CurrentIndex = TotalIndex + End If - ArrayPS.Add(producto) - Next - Retorno = New JObject(New JProperty("products", ArrayPS)).ToString() + Dim Dt As DataTable = DtPS.FiltraPorIndices(PrevIndex, CurrentIndex) + Dim payload = New JObject() + + 'If Not EsProduccion Then + ' payload.Add(New JProperty("deleteNotIncluded", True)) + 'End If + + payload.Add(New JProperty("products", GenerarPayloadProductos(Dt))) + + PrevIndex = CurrentIndex + + Dim resp = EnviarInformacion($"{Me.URLBase}api/services/products/import", payload.ToString()) + + CountPeticiones += 1 + + If IsValidJson(resp) Then + Dim respuesta = JObject.Parse(resp) + If respuesta("status").ToString() = "success" Then + CountPeticionesExitosas += 1 + End If + End If + + Threading.Thread.Sleep(3000) + End While + End If + + End If + + If CountPeticionesExitosas = CountPeticiones Then + Retorno = True End If Return Retorno End Function + + Private Function GenerarPayloadProductos(DtPS As DataTable) As JArray + Dim ArrayPS As New JArray + For Each RowPS As DataRow In DtPS.Rows + + Dim PSData As String() = RowPS("PS").ToString().Split(" ".ToCharArray()) + + Dim Measurement As String = "", Size As String = "", alt_code As String = "" + + If PSData.Length > 0 Then + Measurement = PSData(0) + End If + + If PSData.Length > 1 Then + Size = PSData(1) + End If + + alt_code = String.Concat(Measurement, Size) + + Dim producto As New JObject( + New JProperty("clasificacion", RowPS("Clasificacion")), + New JProperty("category", "Prod"), + New JProperty("pza", RowPS("Unidad")), + New JProperty("sku", RowPS("Codigo")), + New JProperty("name", RowPS("PS")), + New JProperty("measurement", Measurement), + New JProperty("size", Size), + New JProperty("brand", RowPS("Marca")), + New JProperty("price", RowPS("Precio")), + New JProperty("active", RowPS("Estado")), + New JProperty("user", RowPS("UsuarioModifico")), + New JProperty("alt_code", alt_code), + New JProperty("short_description", ""), + New JProperty("description", ""), + New JProperty("currency", 1), + New JProperty("promo_price", RowPS("PrecioPromocion")) + ) + + ArrayPS.Add(producto) + Next + + Return ArrayPS + End Function #End Region #Region "A C T U A L I Z A R - P R E C I O S" - Private Function ActualizarPrecios(Todos As Boolean) As String - Return EnviarInformacion($"{Me.URLBase}api/services/products/price-import", GetPreciosModificados(Todos)) - End Function + 'Private Function ActualizarPrecios(Todos As Boolean) As String + ' Return EnviarInformacion($"{Me.URLBase}api/services/products/price-import", GetPreciosModificados(Todos)) + 'End Function - Private Function GetPreciosModificados(Todos As Boolean) As String - Dim Retorno As String = "{}" + Private Function ActualizarPrecios(Todos As Boolean) As Boolean + Dim Retorno As Boolean = False + Dim CountPeticiones As Integer = 0, CountPeticionesExitosas As Integer = 0 Dim DtPS As DataTable = Nothing Using ObjPS As New ClsProductosServicios @@ -314,32 +396,90 @@ Public Class E141 : Implements IHttpHandler If DtPS IsNot Nothing Then - Dim ArrayPS As New JArray - For Each RowPS As DataRow In DtPS.Rows + If DtPS.Rows.Count > 0 AndAlso DtPS.Rows.Count = 1 Then + Dim Dt As DataTable = DtPS.FiltraPorIndices(0, 0) + Dim payload = New JObject() - Dim producto As New JObject( - New JProperty("sku", RowPS("Codigo")), - New JProperty("price", RowPS("Precio")), - New JProperty("promo_price", RowPS("PrecioPromocion")) - ) + payload.Add(New JProperty("products", GenerarPayloadPrecios(Dt))) + + + Dim resp = EnviarInformacion($"{Me.URLBase}api/services/products/price-import", payload.ToString()) + + CountPeticiones += 1 + + If IsValidJson(resp) Then + Dim respuesta = JObject.Parse(resp) + If respuesta("status").ToString() = "success" Then + CountPeticionesExitosas += 1 + End If + End If + + Else + Dim TotalIndex As Integer = DtPS.Rows.Count - 1 + Dim TotaRegistrosPorPeticion As Integer = 500 + Dim PrevIndex As Integer = 0 + Dim CurrentIndex As Integer = 0 + + While PrevIndex < TotalIndex + CurrentIndex += TotaRegistrosPorPeticion + + If CurrentIndex > TotalIndex Then + CurrentIndex = TotalIndex + End If + + Dim Dt As DataTable = DtPS.FiltraPorIndices(PrevIndex, CurrentIndex) + Dim payload = New JObject() + + payload.Add(New JProperty("products", GenerarPayloadPrecios(Dt))) + + PrevIndex = CurrentIndex + + Dim resp = EnviarInformacion($"{Me.URLBase}api/services/products/price-import", payload.ToString()) + + CountPeticiones += 1 + + If IsValidJson(resp) Then + Dim respuesta = JObject.Parse(resp) + If respuesta("status").ToString() = "success" Then + CountPeticionesExitosas += 1 + End If + End If + + Threading.Thread.Sleep(3000) + End While + End If - ArrayPS.Add(producto) - Next - Retorno = New JObject(New JProperty("products", ArrayPS)).ToString() End If Return Retorno End Function + + Private Function GenerarPayloadPrecios(DtPS As DataTable) As JArray + Dim ArrayPS As New JArray + For Each RowPS As DataRow In DtPS.Rows + + Dim producto As New JObject( + New JProperty("sku", RowPS("Codigo")), + New JProperty("price", RowPS("Precio")), + New JProperty("promo_price", RowPS("PrecioPromocion")) + ) + + ArrayPS.Add(producto) + Next + + Return ArrayPS + End Function #End Region #Region "A C T U A L I Z A R - E X I S T E N C I A S" - Private Function ActualizarExistencias() As String - Return EnviarInformacion($"{Me.URLBase}api/services/products/stock", GetPSExistencias()) - End Function + 'Private Function ActualizarExistencias() As String + ' Return EnviarInformacion($"{Me.URLBase}api/services/products/stock", GetPSExistencias()) + 'End Function - Private Function GetPSExistencias() As String - Dim Retorno As String = "{}" + Private Function ActualizarExistencias() As Boolean + Dim Retorno As Boolean = False + Dim CountPeticiones As Integer = 0, CountPeticionesExitosas As Integer = 0 Dim DtPS As DataTable = Nothing Using ObjPS As New ClsProductosServicios @@ -350,34 +490,90 @@ Public Class E141 : Implements IHttpHandler End Using If DtPS IsNot Nothing Then + If DtPS.Rows.Count > 0 AndAlso DtPS.Rows.Count = 1 Then - Dim ArrayPS As New JArray - For Each RowPS As DataRow In DtPS.Rows + Dim Dt As DataTable = DtPS.FiltraPorIndices(0, 0) + Dim payload = New JObject() - Dim producto As New JObject( - New JProperty("sku", RowPS("Codigo")), - New JProperty("branch_office_code", "01"), - New JProperty("stock", RowPS("Existencia")) - ) + payload.Add(New JProperty("stock", GenerarPayloadExistencias(Dt))) - ArrayPS.Add(producto) - Next - Retorno = New JObject(New JProperty("stock", ArrayPS)).ToString() + Dim resp = EnviarInformacion($"{Me.URLBase}api/services/products/stock", payload.ToString()) + + CountPeticiones += 1 + + If IsValidJson(resp) Then + Dim respuesta = JObject.Parse(resp) + If respuesta("status").ToString() = "success" Then + CountPeticionesExitosas += 1 + End If + End If + + Else + Dim TotalIndex As Integer = DtPS.Rows.Count - 1 + Dim TotaRegistrosPorPeticion As Integer = 500 + Dim PrevIndex As Integer = 0 + Dim CurrentIndex As Integer = 0 + + While PrevIndex < TotalIndex + CurrentIndex += TotaRegistrosPorPeticion + + If CurrentIndex > TotalIndex Then + CurrentIndex = TotalIndex + End If + + Dim Dt As DataTable = DtPS.FiltraPorIndices(PrevIndex, CurrentIndex) + Dim payload = New JObject() + + payload.Add(New JProperty("stock", GenerarPayloadExistencias(Dt))) + + PrevIndex = CurrentIndex + + Dim resp = EnviarInformacion($"{Me.URLBase}api/services/products/stock", payload.ToString()) + + CountPeticiones += 1 + + If IsValidJson(resp) Then + Dim respuesta = JObject.Parse(resp) + If respuesta("status").ToString() = "success" Then + CountPeticionesExitosas += 1 + End If + End If + + Threading.Thread.Sleep(3000) + End While + End If + End If + + If CountPeticionesExitosas = CountPeticiones Then + Retorno = True End If Return Retorno End Function + + Private Function GenerarPayloadExistencias(DtPS As DataTable) As JArray + Dim ArrayPS As New JArray + For Each RowPS As DataRow In DtPS.Rows + + Dim producto As New JObject( + New JProperty("sku", RowPS("Codigo")), + New JProperty("branch_office_code", "01"), + New JProperty("stock", RowPS("Existencia").ToString()) + ) + + ArrayPS.Add(producto) + Next + + Return ArrayPS + End Function #End Region #Region "A C T U A L I Z A R - E X I S T E N C I A S" - Private Function ActualizarVendedores(Todos As Boolean) As String - Return EnviarInformacion($"{Me.URLBase}api/v1/sellers/import", GetVendedores(Todos)) - End Function - - Private Function GetVendedores(Todos As Boolean) As String - Dim Retorno As String = "{}" + Private Function ActualizarVendedores(Todos As Boolean) As Boolean + Dim Retorno As Boolean = False + Dim CountPeticiones As Integer = 0, CountPeticionesExitosas As Integer = 0 Dim DtVendedores As DataTable = Nothing Using ObjPS As New ClsProductosServicios @@ -410,6 +606,11 @@ Public Class E141 : Implements IHttpHandler Apellido = String.Concat(VendedorData(0), " ", VendedorData(1)) End Select + If VendedorData.Length > 4 Then + Nombre = String.Concat(VendedorData(VendedorData.Length - 1), " ", VendedorData(VendedorData.Length)) + Apellido = String.Concat(VendedorData(0), " ", VendedorData(1)) + End If + Dim vendedor As New JObject( New JProperty("email", RowVendedor("Correo")), New JProperty("password", RowVendedor("Correo")), @@ -426,7 +627,19 @@ Public Class E141 : Implements IHttpHandler ArrayVendedores.Add(vendedor) Next - Retorno = New JObject(New JProperty("sellers", ArrayVendedores)).ToString() + + Dim payload = New JObject(New JProperty("sellers", ArrayVendedores)).ToString() + + Dim resp = EnviarInformacion($"{Me.URLBase}api/v1/sellers/import", payload) + + CountPeticiones += 1 + + If IsValidJson(resp) Then + Dim respuesta = JObject.Parse(resp) + If respuesta("status").ToString() = "success" Then + CountPeticionesExitosas += 1 + End If + End If End If Return Retorno @@ -495,4 +708,28 @@ Public Class E141 : Implements IHttpHandler Return URLParametros End Function + Private Shared Function IsValidJson(ByVal strInput As String) As Boolean + If String.IsNullOrWhiteSpace(strInput) Then + Return False + End If + + strInput = strInput.Trim() + + If (strInput.StartsWith("{") AndAlso strInput.EndsWith("}")) OrElse (strInput.StartsWith("[") AndAlso strInput.EndsWith("]")) Then + + Try + Dim obj = JToken.Parse(strInput) + Return True + Catch jex As JsonReaderException + Console.WriteLine(jex.Message) + Return False + Catch ex As Exception + Console.WriteLine(ex.ToString()) + Return False + End Try + Else + Return False + End If + End Function + End Class \ No newline at end of file diff --git a/Bancos/IE.aspx b/Bancos/IE.aspx index 574ec5150..38f89fdc3 100644 --- a/Bancos/IE.aspx +++ b/Bancos/IE.aspx @@ -1180,7 +1180,10 @@
- + +
+
+
diff --git a/Bancos/IE.aspx.vb b/Bancos/IE.aspx.vb index 716f86cfc..63a198a2d 100644 --- a/Bancos/IE.aspx.vb +++ b/Bancos/IE.aspx.vb @@ -4391,7 +4391,7 @@ Partial Class Bancos_IE Dim IdPolizaNueva = -1 Dim FolioPolizaNueva = -1 - If (IDPoliza > 0 AndAlso (UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.Funcionalidad(200).ToString = "1")) Then + If (IDPoliza > 0 AndAlso (UsuarioActual.Empresa.UsaAC)) Then If ObjAC Is Nothing Then ErrorCancelar = True @@ -4427,7 +4427,7 @@ Partial Class Bancos_IE 'CANCELA IE If Not ErrorCancelar Then - If Not Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, FolioPolizaNueva, TxtFechaCancelacion.Text.ToDate) Then + If Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, FolioPolizaNueva, TxtFechaCancelacion.Text.ToDate) <= 0 Then ErrorCancelar = True MensajeError = "Error al cancelar IE" End If @@ -4458,7 +4458,7 @@ Partial Class Bancos_IE 'CANCELA IE If Not ErrorCancelar Then - If Not Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, False, IdPolizaNueva, FolioPolizaNueva, TxtFechaCancelacion.Text.ToDate) Then + If Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, False, IdPolizaNueva, FolioPolizaNueva, TxtFechaCancelacion.Text.ToDate) <= 0 Then ErrorCancelar = True MensajeError = "Error al cancelar IE" End If @@ -4479,22 +4479,42 @@ Partial Class Bancos_IE Else ' If TxtFechaDocumento.Text.ToDate.Month < TxtFechaCancelacion.Text.ToDate.Month Or TxtFechaDocumento.Text.ToDate.Year < TxtFechaCancelacion.Text.ToDate.Year Then - If TxtFechaDocumento.Text.ToDate < TxtFechaCancelacion.Text.ToDate.FirstDayOfMonth Then + Dim GeneraCancelacionEnCero As Boolean = True + If TxtFechaDocumento.Text.ToDate >= TxtFechaCancelacion.Text.ToDate.FirstDayOfMonth Then 'si es del mismo mes, se genra cancelacion en cero + GeneraCancelacionEnCero = True + End If + + If ChkGeneraCancelacion.Checked AndAlso GeneraCancelacionEnCero Then + GeneraCancelacionEnCero = False + End If + Dim CvePrePolizaCancelacion As Integer = 0 + + If Not GeneraCancelacionEnCero Then 'CANCELA IE MES ANTERIOR - If Not Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, FolioPolizaNueva, TxtFechaCancelacion.Text.ToDate) Then + CvePrePolizaCancelacion = Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, FolioPolizaNueva, TxtFechaCancelacion.Text.ToDate) + If CvePrePolizaCancelacion <= 0 Then ErrorCancelar = True MensajeError = "Error al cancelar IE MES ANTERIOR" End If Else 'CANCELA IE MES ACTUAL - If Not Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, False, IdPolizaNueva, FolioPolizaNueva, TxtFechaCancelacion.Text.ToDate) Then + CvePrePolizaCancelacion = Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, False, IdPolizaNueva, FolioPolizaNueva, TxtFechaCancelacion.Text.ToDate) + If CvePrePolizaCancelacion <= 0 Then ErrorCancelar = True MensajeError = "Error al cancelar IE MES ACTUAL" End If End If + + If UsuarioActual.Empresa.Funcionalidad(200).ToString = "1" Then + If Not ObjConta.ContabilizarPrePoliza(CvePrePolizaCancelacion, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjAC) Then + ErrorCancelar = True + MensajeError = "Error al contabilizar poliza" + End If + End If + End If - If Not ErrorCancelar Then + If Not ErrorCancelar Then If Banc.GetComplementoPagos(-1, CveIE, -1, UsuarioActual.CveEmpresa) Then If Banc.DtResultados.FiltraParametros("", DistinctColumns:={"CveComplementoPago", "SerieFolio", "Fecha", "CveIE"}).Rows.Count > 0 Then If Not Banc.GetFoliosCancelados(UsuarioActual.CveEmpresa) Then @@ -4656,7 +4676,7 @@ Partial Class Bancos_IE 'genera nuevo IE contrario If Not ErrorCancelar Then - If Not Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, FolioPolizaNueva, TxtFechaDevuelto.Text.ToDate, 2) Then + If Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, FolioPolizaNueva, TxtFechaDevuelto.Text.ToDate, 2) <= 0 Then ErrorCancelar = True End If End If @@ -4672,7 +4692,7 @@ Partial Class Bancos_IE Else 'siempre se hace una cancelación - If Not Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, FolioPolizaNueva, TxtFechaDevuelto.Text.ToDate, 2) Then + If Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, FolioPolizaNueva, TxtFechaDevuelto.Text.ToDate, 2) <= 0 Then ErrorCancelar = True End If diff --git a/Bancos/PagoElectronico.aspx.vb b/Bancos/PagoElectronico.aspx.vb index 7374d32e0..7dc726ae8 100644 --- a/Bancos/PagoElectronico.aspx.vb +++ b/Bancos/PagoElectronico.aspx.vb @@ -1584,7 +1584,7 @@ Partial Class Bancos_PagoElectronico Else 'Cuando salio NO exitoso cancelamos el IE - If Not ObjIE.CancelarBancos_IE(UsuarioActual.CveUsuario, ArrayCveIEs(index).ToEntero, False, -1, -1) Then + If ObjIE.CancelarBancos_IE(UsuarioActual.CveUsuario, ArrayCveIEs(index).ToEntero, False, -1, -1) <= 0 Then ErrorDB = True End If End If diff --git a/Bancos/PagoElectronicoGrupos.aspx.vb b/Bancos/PagoElectronicoGrupos.aspx.vb index 94f711266..0a49c92e3 100644 --- a/Bancos/PagoElectronicoGrupos.aspx.vb +++ b/Bancos/PagoElectronicoGrupos.aspx.vb @@ -2818,7 +2818,7 @@ Partial Class Bancos_PagoElectronicoGrupos 'CANCELA IE If Not ErrorCancelar Then - If Not Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, FolioPolizaNueva, FechaCancelacion) Then + If Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, FolioPolizaNueva, FechaCancelacion) <= 0 Then ErrorCancelar = True MensajeError = "Error al cancelar IE" End If @@ -2849,7 +2849,7 @@ Partial Class Bancos_PagoElectronicoGrupos 'CANCELA IE If Not ErrorCancelar Then - If Not Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, False, IdPolizaNueva, FolioPolizaNueva, FechaCancelacion) Then + If Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, False, IdPolizaNueva, FolioPolizaNueva, FechaCancelacion) <= 0 Then ErrorCancelar = True MensajeError = "Error al cancelar IE" End If @@ -2872,13 +2872,13 @@ Partial Class Bancos_PagoElectronicoGrupos ' If TxtFechaDocumento.Text.ToDate.Month < TxtFechaCancelacion.Text.ToDate.Month Or TxtFechaDocumento.Text.ToDate.Year < TxtFechaCancelacion.Text.ToDate.Year Then If FechaDocumento < FechaCancelacion.FirstDayOfMonth Then 'CANCELA IE MES ANTERIOR - If Not Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, FolioPolizaNueva, FechaCancelacion) Then + If Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, FolioPolizaNueva, FechaCancelacion) <= 0 Then ErrorCancelar = True MensajeError = "Error al cancelar IE MES ANTERIOR" End If Else 'CANCELA IE MES ACTUAL - If Not Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, False, IdPolizaNueva, FolioPolizaNueva, FechaCancelacion) Then + If Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, False, IdPolizaNueva, FolioPolizaNueva, FechaCancelacion) <= 0 Then ErrorCancelar = True MensajeError = "Error al cancelar IE MES ACTUAL" End If diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index c73133e33..b67198e7a 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -3969,6 +3969,7 @@ Partial Class Compras_Compras Protected Sub BtnGuardar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnGuardar.Click + '------------------INICIA VALIDACIONES------------------ Dim EstatusCredito As Integer = 0 Dim CveSubProyecto As Integer = 0 @@ -6806,6 +6807,19 @@ Partial Class Compras_Compras importeMovimiento = TmpDT.SUM(If(ListaDocumentos IsNot Nothing AndAlso ListaDocumentos.Count > 0 AndAlso ArrAnticipos IsNot Nothing AndAlso ArrAnticipos.Count > 0 AndAlso TxtTotal.Text.ToDecimal = 0, "ImporteSinImpuestos", "Total"), $"ISNULL(TipoAF,0) <> 2 And ISNULL(CveAlmacen,0) = 0 And ISNULL(AplicaCostoIndirecto,0) <> 1 And ISNULL(CveTipoPS,0) = 2").ToString.ToDecimal importeMN = importeMovimiento * tipoCambioActual * Multiplicador + If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then 'cuando es emp acumuladora + + Dim Valor = (From dr1 In GlobalDTAcumTamaños().FiltraParametros("CveEmpresa = 140").AsEnumerable() + Join dr2 In TmpDT.AsEnumerable On dr1.Field(Of Integer)("CvePSCargo") Equals dr2.Field(Of Integer)("CvePS") + Select New With + { + .Total = dr2.Field(Of Double)("Total") + }).Sum(Function(item) item.Total) + + importeMovimiento += Valor.ToDecimal + importeMN = importeMovimiento * tipoCambioActual * Multiplicador + End If + Dim ConceptoContabilizacionNC = 225 Dim CveMovimientoDevolucion As Integer = -1 diff --git a/Inventarios/CatAlmacenes.aspx b/Inventarios/CatAlmacenes.aspx index 5810385a9..b0bc58374 100644 --- a/Inventarios/CatAlmacenes.aspx +++ b/Inventarios/CatAlmacenes.aspx @@ -151,7 +151,7 @@ - + @@ -314,8 +314,16 @@ - - +
+
+
+
+ + +
+
+
+
+
+ + + + + + + + +
Fecha Agenda - + diff --git a/Ventas/ActualizarPrecios.aspx.vb b/Ventas/ActualizarPrecios.aspx.vb index 1a8909e3f..b63f2978b 100644 --- a/Ventas/ActualizarPrecios.aspx.vb +++ b/Ventas/ActualizarPrecios.aspx.vb @@ -213,7 +213,7 @@ Partial Class Ventas_ActualizarPrecios Correcto = ObjPS.UpdatePSPreciosLista(row.FCTextBox("TxtPrecio").Text.ToDecimal, DdlPrecioLista.SelectedValue.ToEntero, Porcentaje, row.DataKey("CvePS").ToEntero, UsuarioActual.CveUsuario, DateTime.Now, If(RblTipo.SelectedValue = "Imp", True, False), PrecioMinimo:=row.FCTextBox("TxtPrecioMinimo").Text.ToDecimal) If Correcto Then - TieneError = ActualizarPreciosFranquicia(ObjPS, row) + TieneError = ActualizarPreciosFranquicia(ObjPS, row.DataKey("Codigo"), row.DataKey("PS"), row.FCTextBox("TxtPrecio").Text.ToDecimal, row.FCTextBox("TxtPrecioMinimo").Text.ToDecimal, DdlPrecioLista.SelectedItem.Text) Else Exit Sub End If @@ -418,6 +418,7 @@ Partial Class Ventas_ActualizarPrecios Dim DtPS As DataTable = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa) For Each row As DataRow In dt.Rows Dim Correcto As Boolean = False + Dim TieneError As Boolean = False Dim CvePS As Integer = DtPS.FiltroPrimeroValor("CvePS", String.Format("Codigo='{0}' AND CveEmpresa={1}", row(0).ToString(), UsuarioActual.CveEmpresa)).ToEntero Dim CvePrecioLista As Integer = DdlPrecioListaCarga.SelectedValue.ToEntero() Dim PrecioNuevo As Decimal = row("Precio").ToString().ToDecimal() @@ -429,6 +430,7 @@ Partial Class Ventas_ActualizarPrecios Correcto = ObjPS.UpdatePSPreciosLista(PrecioNuevo, CvePrecioLista, Porcentaje, CvePS, UsuarioActual.CveUsuario, DateTime.Now, True) If Correcto Then RowsCargados += 1 + TieneError = ActualizarPreciosFranquicia(ObjPS, row(0).ToString(), row(1).ToString(), PrecioNuevo, 0, DdlPrecioListaCarga.SelectedItem.Text) End If Else If CvePS > 0 AndAlso CvePrecioLista = -2 Then @@ -527,28 +529,35 @@ Partial Class Ventas_ActualizarPrecios End If End Sub - Private Function ActualizarPreciosFranquicia(ObjPS As ClsProductosServicios, row As GridViewRow) As Boolean - Dim FranquiciasStr As String = UsuarioActual.Empresa.Funcionalidad(137) + Private Function ActualizarPreciosFranquicia(ObjPS As ClsProductosServicios, Codigo As String, PS As String, Precio As Decimal, PrecioMinimo As Decimal, PrecioLista As String) As Boolean + Dim FranquiciasStr As String = UsuarioActual.Empresa.Funcionalidad(563) Dim Franquicias = FranquiciasStr.Split(","c) Dim Porcentaje As Decimal = If(TxtPorcentaje.Text = "", -1, TxtPorcentaje.Text.ToDecimal) - Dim Codigo As String = row.DataKey("Codigo") + Dim StrMsg As New StringBuilder For Each Franquicia In Franquicias Dim CveFranquicia As Integer = Franquicia.ToEntero - Dim CvePS As Integer = GlobalDTPS(CveFranquicia).FiltroPrimeroValor("CvePS", String.Format("Codigo LIKE '%{0}%'", Codigo)).ToEntero - Dim CvePrecioLisa As Integer = GlobalDTPrecioListas(CveFranquicia).FiltroPrimeroValor("CvePrecioLista", String.Format("PrecioLista = '{0}'", DdlPrecioLista.SelectedItem.Text)).ToEntero - Dim EmpresaFranquicia As String = GlobalDTEmpresas(CveEmpresa:=CveFranquicia).FiltroPrimeroValor("Empresa") + Dim CvePS As Integer = GlobalDTPS(CveFranquicia, Codigo:=Codigo).FiltroPrimeroValor("CvePS", "").ToEntero + Dim CvePrecioLisa As Integer = GlobalDTPrecioListas(CveFranquicia).FiltroPrimeroValor("CvePrecioLista", String.Format("PrecioLista = '{0}'", PrecioLista)).ToEntero + If CvePS <= 0 Then - Alert(String.Format("El producto '{0}' no se encuentra en la Franquicia '{1}'", row.DataKey("PS"), EmpresaFranquicia), TipoMensaje.MsgAdvertencia) - Return True + Dim EmpresaFranquicia As String = GlobalDTEmpresas(CveEmpresa:=CveFranquicia).FiltroPrimeroValor("Empresa") + StrMsg.AppendFormat("El producto '{0}' no se encuentra en la Franquicia '{1}'", PS, EmpresaFranquicia) + End If If CvePrecioLisa <= 0 Then - Alert(String.Format("El precio lista '{0}' no existe en la Franquicia '{1}'", DdlPrecioLista.SelectedItem.Text, EmpresaFranquicia), TipoMensaje.MsgAdvertencia) - Return True + Dim EmpresaFranquicia As String = GlobalDTEmpresas(CveEmpresa:=CveFranquicia).FiltroPrimeroValor("Empresa") + StrMsg.AppendFormat("El precio lista '{0}' no existe en la Franquicia '{1}'", DdlPrecioLista.SelectedItem.Text, EmpresaFranquicia) End If - If Not ObjPS.UpdatePSPreciosLista(row.FCTextBox("TxtPrecio").Text.ToDecimal, CvePrecioLisa, Porcentaje, CvePS, UsuarioActual.CveUsuario, DateTime.Now, If(RblTipo.SelectedValue = "Imp", True, False), PrecioMinimo:=row.FCTextBox("TxtPrecioMinimo").Text.ToDecimal) Then - Return True + If CvePrecioLisa > 0 AndAlso CvePS > 0 AndAlso Not ObjPS.UpdatePSPreciosLista(Precio, CvePrecioLisa, Porcentaje, CvePS, UsuarioActual.CveUsuario, DateTime.Now, If(RblTipo.SelectedValue = "Imp", True, False), PrecioMinimo:=PrecioMinimo) Then + StrMsg.AppendFormat("No se pudo actualizar el producto") End If Next - Return False + + If StrMsg.ToString = "" Then + Return False + Else + Return True + End If + End Function End Class \ No newline at end of file diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 0d199d7db..39cae58b0 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -2055,7 +2055,7 @@ Partial Class Ventas DdlTipoComprobante.Items.Insert(DdlTipoComprobante.Items.Count, New ListItem("Autorización", "PA")) End If - If UsuarioActual.CveEmpresa <> 141 Then + If Not UsuarioActual.CveEmpresa.Contiene(141, 152, 159, 160, 161, 162, 163) Then LnkAgregarCliente.Visible = False End If @@ -5141,40 +5141,44 @@ Partial Class Ventas End Function Private Sub CargarAlmacenes() + If UsuarioActual.Empresa.UsaInventarios Then + If (CveVenta > 0 And DdlTipoComprobante.SelectedValue <> "Cot") AndAlso Not (UsuarioActual.CveEmpresa = 141 AndAlso EsCreaApartirDe) Then + DivAlmacen.Visible = False + Else + Dim DTAlmacen As DataTable + ddlAlmacen.Items.Clear() + DTAlmacen = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa).FiltraParametros($"CveSubProyecto = {DdlSubProyectoDatos.SelectedValue.ToEntero()}") + ddlAlmacen.DataSource = DTAlmacen + If DTAlmacen Is Nothing Or DTAlmacen.Rows.Count = 0 Then + ddlAlmacen.Items.Insert(0, New ListItem(" Seleccione ", "-1")) + ddlAlmacen.SelectedValue = "-1" + End If + ddlAlmacen.DataBind() + If GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa).FiltraParametros($"CveSubProyecto = {DdlSubProyectoDatos.SelectedValue.ToEntero()}").Rows.Count > 0 Then + ddlAlmacen.SelectedValueExist(UsuarioActual.CveAlmacen) + End If + End If - If (CveVenta > 0 And DdlTipoComprobante.SelectedValue <> "Cot") AndAlso Not (UsuarioActual.CveEmpresa = 141 AndAlso EsCreaApartirDe) Then - DivAlmacen.Visible = False + 'SI TIENE CONTRATO NO SE MUEVE + If Not CveContrato > 0 Then + DdlAlmacenAsignado.Items.Clear() + DdlAlmacenAsignado.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoAlmacen:=-1).FiltraParametros($"CveSubProyecto = {DdlSubProyectoDatos.SelectedValue.ToEntero()} AND CveTipoAlmacen IN (4,10)") + DdlAlmacenAsignado.Items.Insert(0, New ListItem(" Seleccione ", "-1")) + DdlAlmacenAsignado.SelectedValue = "-1" + DdlAlmacenAsignado.DataBind() + DdlAlmacenAsignado.SelectedValueExist(GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $"CveTipoAlmacen = 10 AND CveSubProyecto = {DdlSubProyectoDatos.SelectedValue.ToEntero()}").ToString().ToEntero()) + End If + + If CveContrato > 0 AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ped", "PeC") Then + DdlAlmacenAsignado.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoAlmacen:=-1).FiltraParametros($"CveSubProyecto = {DdlSubProyectoDatos.SelectedValue.ToEntero()}") + DdlAlmacenAsignado.Items.Insert(0, New ListItem(" Seleccione ", "-1")) + DdlAlmacenAsignado.SelectedValue = "-1" + DdlAlmacenAsignado.DataBind() + DdlAlmacenAsignado.SelectedValueExist(GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto = {DdlSubProyectoDatos.SelectedValue}").ToString().ToEntero()) + End If Else - Dim DTAlmacen As DataTable - ddlAlmacen.Items.Clear() - DTAlmacen = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa).FiltraParametros($"CveSubProyecto = {DdlSubProyectoDatos.SelectedValue.ToEntero()}") - ddlAlmacen.DataSource = DTAlmacen - If DTAlmacen Is Nothing Or DTAlmacen.Rows.Count = 0 Then - ddlAlmacen.Items.Insert(0, New ListItem(" Seleccione ", "-1")) - ddlAlmacen.SelectedValue = "-1" - End If + ddlAlmacen.DataSource = Nothing ddlAlmacen.DataBind() - If GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa).FiltraParametros($"CveSubProyecto = {DdlSubProyectoDatos.SelectedValue.ToEntero()}").Rows.Count > 0 Then - ddlAlmacen.SelectedValueExist(UsuarioActual.CveAlmacen) - End If - End If - - 'SI TIENE CONTRATO NO SE MUEVE - If Not CveContrato > 0 Then - DdlAlmacenAsignado.Items.Clear() - DdlAlmacenAsignado.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoAlmacen:=-1).FiltraParametros($"CveSubProyecto = {DdlSubProyectoDatos.SelectedValue.ToEntero()} AND CveTipoAlmacen IN (4,10)") - DdlAlmacenAsignado.Items.Insert(0, New ListItem(" Seleccione ", "-1")) - DdlAlmacenAsignado.SelectedValue = "-1" - DdlAlmacenAsignado.DataBind() - DdlAlmacenAsignado.SelectedValueExist(GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $"CveTipoAlmacen = 10 AND CveSubProyecto = {DdlSubProyectoDatos.SelectedValue.ToEntero()}").ToString().ToEntero()) - End If - - If CveContrato > 0 AndAlso DdlTipoComprobante.SelectedValue.Contiene("Ped", "PeC") Then - DdlAlmacenAsignado.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoAlmacen:=-1).FiltraParametros($"CveSubProyecto = {DdlSubProyectoDatos.SelectedValue.ToEntero()}") - DdlAlmacenAsignado.Items.Insert(0, New ListItem(" Seleccione ", "-1")) - DdlAlmacenAsignado.SelectedValue = "-1" - DdlAlmacenAsignado.DataBind() - DdlAlmacenAsignado.SelectedValueExist(GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto = {DdlSubProyectoDatos.SelectedValue}").ToString().ToEntero()) End If UpINV.Update() @@ -18025,7 +18029,7 @@ Partial Class Ventas CveMovimientoEntradaDev = RowMovimiento("CveMovimiento").ToString().ToEntero() Dim tCveAlmacen = RowMovimiento("CveAlmacen").ToString().ToEntero() CveSubProyecto = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen= {tCveAlmacen}").ToEntero() - CveAlmacenVirtual = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $" CveTipoAlmacen = 24 AND CveSubProyecto={CveSubProyecto}").ToEntero() + CveAlmacenVirtual = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=tCveAlmacen).FiltroPrimeroValor("CveAlmacenVirtual").ToEntero() Else OcurrioError = True