From 71424af70a98435057ae59d3803d3cb93bf2b05e Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 25 Sep 2020 14:00:24 -0700 Subject: [PATCH 01/40] -- carga excel. que seccion, use selectevalueexist --- Inventarios/EntradasSalidas.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Inventarios/EntradasSalidas.aspx.vb b/Inventarios/EntradasSalidas.aspx.vb index 5d912970f..659934309 100644 --- a/Inventarios/EntradasSalidas.aspx.vb +++ b/Inventarios/EntradasSalidas.aspx.vb @@ -4196,7 +4196,7 @@ Partial Class Inventarios_EntradasSalidas ElProductoChange() TxtnSerie.Text = Serie TxtnLote.Text = Lote - DdlSeccionAlmacen.SelectedValue = CveSeccionAlmacen.ToString + DdlSeccionAlmacen.SelectedValueExist(CveSeccionAlmacen.ToString) TxtnFechaCaducidad.Text = If(Caducidad = "", MinFecha.ToString, Caducidad) AgregarPS() txtPrecio.Text = "" From e37ba1efc5b5a546997b42baedbb204a6a025b0a Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 25 Sep 2020 14:00:50 -0700 Subject: [PATCH 02/40] - que al utilizar elcodigo de barras, se condere como el dato cargado, y no bloquee --- Inventarios/PopUpExistenciasAlmacen.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Inventarios/PopUpExistenciasAlmacen.aspx.vb b/Inventarios/PopUpExistenciasAlmacen.aspx.vb index 8ad38121e..b71e823e5 100644 --- a/Inventarios/PopUpExistenciasAlmacen.aspx.vb +++ b/Inventarios/PopUpExistenciasAlmacen.aspx.vb @@ -95,7 +95,7 @@ Partial Class Inventarios_Default End Sub Private Sub CargaDatos(CvePS As Integer, Tipo As Integer) - If ValidarFiltrosSeleccionados() Then + If ValidarFiltrosSeleccionados() OrElse CvePS > 0 Then Dim ObjInventarios As New ClsInventarios() If ObjInventarios.GetExistenciasProducto(CvePS, -1, UsuarioActual.CveEmpresa, -1, FechaMovto:=DateTime.Today.AddDays(1).ToString("yyyy/MM/dd HH:mm"), ExcluyeApartados:=-1, ExcluyeAdelantado:=1, CveSubProyecto:=DdlSubProyecto.SelectedValue.ToEntero, TopSelect:=100) Then From b07912aad2ebdb9f3a07a1c845ac8b013b1c158f Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Sat, 26 Sep 2020 13:27:39 -0700 Subject: [PATCH 03/40] se agrego un reporte personalisado de repIva --- Contabilidad/RepIVA.aspx.cs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/Contabilidad/RepIVA.aspx.cs b/Contabilidad/RepIVA.aspx.cs index 969d38b25..7593aa05d 100644 --- a/Contabilidad/RepIVA.aspx.cs +++ b/Contabilidad/RepIVA.aspx.cs @@ -215,9 +215,20 @@ public partial class Contabilidad_RepIVA : ClsPaginas string Formato = TT.ActiveTabIndex == 0 ? "RepIVA.rpt" : (Opcion == "EXCEL2" ? "RepIVAAcreditable2.rpt" : "RepIVAAcreditable.rpt"); Opcion = (Opcion == "EXCEL2" ? "EXCEL" : Opcion); para.Add(new CrystalParametro("Excel", Formato)); - string Ruta = (ModExtensiones.DirectorioBaseEmpresas + $@"Empresas\Grales\Formatos\{Formato}"); + System.IO.FileInfo Archivo = new System.IO.FileInfo(string.Format("{0}/Formatos/{1}", UsuarioActual.Empresa.Ruta, Formato)); + string Ruta;// = (Archivo.Exists ? string.Format("{0}/{1}", UsuarioActual.Empresa.Ruta, Formato ): ModExtensiones.DirectorioBaseEmpresas + $@"Empresas\Grales\Formatos\{Formato}"); + + Alert(string.Format("{0}/Formatos/{1}", UsuarioActual.Empresa.Ruta, Formato)); + if (Archivo.Exists) + { + Ruta = string.Format("{0}/Formatos/{1}", UsuarioActual.Empresa.Ruta, Formato); + ImprimirbytesPDF(ImprimirPDFCrystal(Ruta, Dt, para, "Reporte de IVA", Opcion), "Reporte de IVA", Opcion); + }else + { + Ruta = ModExtensiones.DirectorioBaseEmpresas + $@"Empresas\Grales\Formatos\{Formato}"; + ImprimirbytesPDF(ImprimirSubRepPDFCrystal(Ruta,Dt,para, DtIEPSA,DtIVAA,"RepIEPSPorcentaje.rpt","RepIVAPorcentaje.rpt", "Reporte de IVA", Opcion), "Reporte de IVA", Opcion); + } Ruta.GuardaLogAD(); - ImprimirbytesPDF(ImprimirSubRepPDFCrystal(Ruta,Dt,para, DtIEPSA,DtIVAA,"RepIEPSPorcentaje.rpt","RepIVAPorcentaje.rpt", "Reporte de IVA", Opcion), "Reporte de IVA", Opcion); //ImprimirbytesPDF(ImprimirPDFCrystal(Ruta, Dt, para, "Reporte de IVA", Opcion), "Reporte de IVA", Opcion); } else From 739c3c36d7881e30b153daf160dc691df0063e36 Mon Sep 17 00:00:00 2001 From: Rakcsle Supertramp Date: Sat, 26 Sep 2020 14:49:35 -0700 Subject: [PATCH 04/40] talamhu --- App_Code/ClsCompras.vb | 5 ++++- Compras/Compras.aspx.vb | 4 ++-- TareasProgramadas/Tareas119.ashx | 19 ++++++++++--------- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/App_Code/ClsCompras.vb b/App_Code/ClsCompras.vb index 33dc7e050..ad35ebb1e 100644 --- a/App_Code/ClsCompras.vb +++ b/App_Code/ClsCompras.vb @@ -588,7 +588,10 @@ Public Class ClsCompras End If Catch ex As SqlException If ex.Message.Contains("FK_Inv_MovimientosDetalle_Inv_MovimientosDetalleEntrada") Then - Alert(String.Format("No se puede eliminar la compra, porque tiene movimientos de salida de Almacen relacionados."), TipoMensaje.MsgAdvertencia) + Alert(String.Format("No se puede eliminar la compra, porque tiene movimientos de salida de Almacen relacionados."), TipoMensaje.MsgAdvertencia) + + ElseIf ex.Message.Contains("50015") Then + Alert("No se puede eliminar na compra debido a que el perido esta cerrado.", TipoMensaje.MsgAdvertencia) Else Me.OnError("Ocurrió un error al eliminar la Compra.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End If diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 3c40bd9b8..594394245 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -6729,10 +6729,10 @@ Partial Class Compras_Compras End If - If UsuarioActual.CveEmpresa.Contiene(119) Then + If UsuarioActual.CveEmpresa.Contiene(119) Then Dim ContienePSNeteoBonif As Boolean = False For Each Dr As DataRow In TmpDT.Rows - If Dr("CveClasificacion").ToString.ToEntero.Contiene(20319) Then 'clasificación de Bonificación, no se incluirá en el neteo + If Dr("CveClasificacion").ToString.ToEntero.Contiene(20319) Or DdlTipoCompra.SelectedValue.ToEntero = 11 Then 'clasificación de Bonificación, no se incluirá en el neteo ContienePSNeteoBonif = True Exit For End If diff --git a/TareasProgramadas/Tareas119.ashx b/TareasProgramadas/Tareas119.ashx index 3801b68c5..a123a8239 100644 --- a/TareasProgramadas/Tareas119.ashx +++ b/TareasProgramadas/Tareas119.ashx @@ -92,7 +92,8 @@ public class TareasJam : IHttpHandler - ////"ftp://us2.hostedftp.com/", "agrojam", "A12345678"; + //"ftp://us2.hostedftp.com/", "agrojam", "A12345678"; + //string FTPServer = "ftp://127.0.0.1/"; //string TFPUsr = "Toor"; //string FTPPass = "agj-3500"; @@ -321,10 +322,10 @@ public class TareasJam : IHttpHandler if (CargaProductos) { - CargaVentas = CargarArchivos(FInfoVentas, FTPServer, TFPUsr, FTPPass); + CargaVentas = CargarArchivos(FInfoVentas, $"{FTPServer}/Ventas", TFPUsr, FTPPass); if (CargaVentas) { - CargaVentas = VerificarArchivo(FInfoVentas, FInfoVentas.Length, FTPServer, TFPUsr, FTPPass); + CargaVentas = VerificarArchivo(FInfoVentas, FInfoVentas.Length, $"{FTPServer}/Ventas", TFPUsr, FTPPass); } } @@ -338,10 +339,10 @@ public class TareasJam : IHttpHandler if (CargaProductos & CargaVentas) { - CargaClientes = CargarArchivos(FInfoClientes, FTPServer, TFPUsr, FTPPass); + CargaClientes = CargarArchivos(FInfoClientes, $"{FTPServer}/Clientes", TFPUsr, FTPPass); if (CargaClientes) { - CargaClientes = VerificarArchivo(FInfoClientes, FInfoClientes.Length, FTPServer, TFPUsr, FTPPass); + CargaClientes = VerificarArchivo(FInfoClientes, FInfoClientes.Length, $"{FTPServer}/Clientes", TFPUsr, FTPPass); } } @@ -355,10 +356,10 @@ public class TareasJam : IHttpHandler if (CargaProductos & CargaVentas& CargaClientes ) { - CargaAlmacenes = CargarArchivos(FInfoAlmacenes, FTPServer, TFPUsr, FTPPass); + CargaAlmacenes = CargarArchivos(FInfoAlmacenes, $"{FTPServer}/Stock", TFPUsr, FTPPass); if (CargaClientes) { - CargaAlmacenes = VerificarArchivo(FInfoAlmacenes, FInfoAlmacenes.Length, FTPServer, TFPUsr, FTPPass); + CargaAlmacenes = VerificarArchivo(FInfoAlmacenes, FInfoAlmacenes.Length, $"{FTPServer}/Stock", TFPUsr, FTPPass); } } @@ -434,7 +435,7 @@ public class TareasJam : IHttpHandler ClsSisMail Correo = new ClsSisMail(); string Para = "julian@adssistemas.mx;rene.molina@adssistemas.mx;oscar.irigoyen@adssistemas.mx"; - // string Para = "oscar.irigoyen@adssistemas.mx"; + //string Para = "oscar.irigoyen@adssistemas.mx"; string Asunto = ErrorProceso ? $"Carga Layout Corteva {DateTime.Now.ToString("yyyy-MM-dd")}" : $"Carga Layout Corteva Error {DateTime.Now.ToString("yyyy-MM-dd")}"; Correo.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Cuerpo, Archivos:ListaArchivos); @@ -446,7 +447,7 @@ public class TareasJam : IHttpHandler } - private bool CargarArchivos(FileInfo FInfo, string FTPServer, string FTPUsr, string FTPPass) + private bool CargarArchivos(FileInfo FInfo, string FTPServer, string FTPUsr, string FTPPass ) { bool Respuesta; //var FInfo = new FileInfo(RutaArchivo); From c60179f2b21155d6caeff562ae0d087ffb38429d Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Sat, 26 Sep 2020 16:09:32 -0700 Subject: [PATCH 05/40] Cambio entre portales (portal del cliente) --- App_Code/ClsSisUsuarios.vb | 94 +++++++++- Sistemas/PopUpAddUsuario.aspx | 48 ++++-- Sistemas/PopUpAddUsuario.aspx.vb | 16 +- Sistemas/PopUpSeleccionarEmpresa.aspx | 208 ++++++++++++----------- Sistemas/PopUpSeleccionarEmpresa.aspx.vb | 134 ++++++++------- Site.master.vb | 6 +- 6 files changed, 325 insertions(+), 181 deletions(-) diff --git a/App_Code/ClsSisUsuarios.vb b/App_Code/ClsSisUsuarios.vb index 8a7d501e9..298590f13 100644 --- a/App_Code/ClsSisUsuarios.vb +++ b/App_Code/ClsSisUsuarios.vb @@ -413,8 +413,67 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function + + + Public Function ValidaUsuarioPortalCliente(Clave As String, Usuario As String, Password As String) As Usuario + Dim Retorno As Usuario = Nothing + DataAdapter("PA_Sis_UsuariosGet") + + With SqlAdapter.SelectCommand.Parameters + .Add("@CveUsuario", SqlDbType.Int).Value = -1 + .Add("@CveRol", SqlDbType.Int).Value = -1 + .Add("@Usuario", SqlDbType.VarChar).Value = Usuario + .Add("@Contraseña", SqlDbType.VarChar).Value = Password + .Add("@EsLogIn", SqlDbType.Bit).Value = 1 + End With + + Try + SqlAdapter.Fill(Data) + If Data.Rows.Count > 0 Then + Retorno = New Usuario + + Retorno.CveUsuario = Data.Rows(0)("CveUsuario").ToString.ToEntero + Retorno.Usuario = Usuario + Retorno.Contraseña = Data.Rows(0)("Contraseña").ToString + Retorno.Nombre = Data.Rows(0)("Nombre").ToString + Retorno.CveRol = Data.Rows(0)("CveRol").ToString.ToEntero + Retorno.Rol = Data.Rows(0)("Rol").ToString + 'Retorno.NombreEmpresa = Data.Rows(0)("Empresa").ToString + Retorno.CveEmpresa = Data.Rows(0)("CveEmpresa").ToString.ToEntero + Retorno.CveCliente = Clave.ToEntero + Retorno.ClienteGPS = False + Retorno.Portal = True + Retorno.Referencia = Data.Rows(0)("Referencia").ToString + Retorno.EsSupervisorRH = If(Data.Rows(0)("EsSupervisorRH").ToString = "1", True, False) + 'Retorno.Liga = Data.Rows(0)("Liga").ToString + 'cargo los modulos del usuario y genero el menú + Dim dttmp As DataTable = GetUsuariosRolesModulos(Retorno.CveUsuario, Retorno.CveCliente) + + Dim UsuariosModulos As New HybridDictionary + For Each Row As DataRow In dttmp.Rows + UsuariosModulos.Add(Convert.ToInt32(Row("CveModulo")), Row("CveModulo").ToString) + Next + Retorno.Modulos = UsuariosModulos + ''cargo los procesos del usuario + dttmp = GetUsuariosRolesProcesos(Retorno.CveUsuario) + Dim UsuariosProcesos As New HybridDictionary + For Each Row As DataRow In dttmp.Rows + UsuariosProcesos.Add(Convert.ToInt32(Row("CveProceso")), Row("CveProceso").ToString) + Next + Retorno.Procesos = UsuariosProcesos + End If + + Catch ex As SqlException + OnError("Ocurrio un error al Iniciar Acceso a Sitio.", ex) + Retorno = Nothing + End Try + + Return Retorno + End Function + + #Region "U S U A R I O - I N D I C A D O R E S" Public Function getUsuarioIndicadores(_CveUsuario As Integer, _CveEmpresa As Integer, _CveRol As Integer) As DataTable @@ -2671,12 +2730,37 @@ Public Class ClsSisUsuarios End Try Return Retorno - End Function + End Function + + Public Function GetUsuarioCliente(CveUsuario As Integer, CveCliente As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Sis_UsuariosClienteGet") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveCliente", SqlDbType.Int).Value = CveCliente + .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch Ex1 As SqlException + If Ex1.Message.Contains("Número: 2627;") Then + Alert("Ya existe un Usuario con el mismo nombre: " & Usuario & ".", TipoMensaje.MsgAdvertencia) + Else + Me.OnError("Ocurrió un error al guardar el nuevo usuario", Ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End If + Catch ex As Exception + OnError("Ocurrió un error al guardar el nuevo usuario.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + End Function + #End Region - - + + #Region "U S U A R I O S - PyME" - + Public Function AddUsuariosModulosPyMe(CveUsuario As Integer, Rol As String) As Boolean Dim Retorno As Boolean = False diff --git a/Sistemas/PopUpAddUsuario.aspx b/Sistemas/PopUpAddUsuario.aspx index 631fef59b..9517c20a9 100644 --- a/Sistemas/PopUpAddUsuario.aspx +++ b/Sistemas/PopUpAddUsuario.aspx @@ -21,6 +21,17 @@ #GvPermisosComandos tr td:nth-child(n+3), #GVNotificaciones tr th:nth-child(n+2) { width: 50px; } + .CustomSpinner { + position: fixed; + background-image: url(/Imagenes/Loading.gif); + background-repeat: no-repeat, repeat; + background-size: contain; + top: 60px; + right: 25px; + z-index: 500000; + height: 40px; + width: 40px; + } @@ -430,6 +441,7 @@ + - + + diff --git a/Sistemas/PopUpSeleccionarEmpresa.aspx.vb b/Sistemas/PopUpSeleccionarEmpresa.aspx.vb index c950fc162..04470a006 100644 --- a/Sistemas/PopUpSeleccionarEmpresa.aspx.vb +++ b/Sistemas/PopUpSeleccionarEmpresa.aspx.vb @@ -19,30 +19,31 @@ Partial Class PopUpSeleccionarEmpresa End Sub Private Sub GetEmpresas() - - Dim Dt As Data.DataTable = GlobalDTUsuarios(UsuarioActual.CveUsuario) If Dt IsNot Nothing Then If Dt.Rows.Count > 0 Then LtlTotalRegistros.Text = Dt.Rows.Count.ToString.FormatoNumero(0) - GV.DataSource = Dt.FiltraParametros("CvePlataforma = 1 OR (CvePlataforma = 3 AND CveCliente IS NULL)", "Empresa") - GVCliente.DataSource = Dt.FiltraParametros("CvePlataforma = 3 AND CveCliente IS NOT NULL", "Empresa") + GvEmpresas.DataSource = Dt.FiltraParametros("CvePlataforma = 1 OR (CvePlataforma = 3 AND CveCliente IS NULL)", "Empresa") + GvPortalRastreo.DataSource = Dt.FiltraParametros("CvePlataforma = 3 AND CveCliente IS NOT NULL", "Empresa") + GvPortalCliente.DataSource = Dt.FiltraParametros("CvePlataforma = 6 AND CveCliente IS NOT NULL", "Empresa") Else LtlTotalRegistros.Text = "0" - GV.DataSource = Nothing + GvEmpresas.DataSource = Nothing Alert("No se encontraron registros con los parametros solicitados.", Extensiones.TipoMensaje.MsgAdvertencia) End If End If - GV.DataBind() - GVCliente.DataBind() + GvEmpresas.DataBind() + GvPortalRastreo.DataBind() + GvPortalCliente.DataBind() + UPDatos.Update() TblBusqueda.Visible = True End Sub - Protected Sub GV_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles GV.RowCommand + Protected Sub GvEmpresas_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles GvEmpresas.RowCommand If e.CommandName = "Cambia" Then Dim gvr As GridViewRow = DirectCast(DirectCast(e.CommandSource, LinkButton).BindingContainer, GridViewRow) @@ -80,35 +81,7 @@ Partial Class PopUpSeleccionarEmpresa End If End Sub - - Private Sub GuardaLogR(Mensaje As String) - Dim ArchivoW As IO.StreamWriter - Dim MensajeLog As String = "" - Dim continuar As Boolean = True - Try - If Not IsNothing(System.Web.HttpContext.Current) Then - If Not IsNothing(System.Web.HttpContext.Current.Request) Then - - MensajeLog = $"{HttpContext.Current.Request.Url.ToString()}{Environment.NewLine}" - End If - End If - Catch - End Try - MensajeLog = $"{System.Environment.NewLine}'{DateTime.Now:dd/MM/yyyy hh:mm}' -- {MensajeLog}{Mensaje.Trim()}{Environment.NewLine}" - - Try - ArchivoW = New IO.StreamWriter(String.Format("{0}\LogSession.txt", AppDomain.CurrentDomain.BaseDirectory), True, System.Text.Encoding.UTF8) - Catch - Exit Sub - End Try - Try - ArchivoW.Write(MensajeLog) - Catch - End Try - ArchivoW.Close() - ArchivoW.Dispose() - End Sub - Protected Sub gvUsuarios_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) Handles GVCliente.RowCommand + Protected Sub GvPortalRastreo_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) Handles GvPortalRastreo.RowCommand If e.CommandName = "Cambia" Then Dim gvr As GridViewRow = DirectCast(DirectCast(e.CommandSource, LinkButton).BindingContainer, GridViewRow) @@ -142,32 +115,49 @@ Partial Class PopUpSeleccionarEmpresa End If End If - End Sub + End Sub + + Protected Sub GvPortalCliente_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) Handles GvPortalCliente.RowCommand + If e.CommandName = "Cambia" Then + Dim gvr As GridViewRow = DirectCast(DirectCast(e.CommandSource, LinkButton).BindingContainer, GridViewRow) + If gvr IsNot Nothing Then - Protected Sub BtnSetWindows_Click(sender As Object, e As System.EventArgs) Handles BtnSetWindows.Click - RegistraScript(String.Format("$get('tdContenido').style.height='{0}px'; $get('tdContenido').style.width='{1}px'", HdnAlto.Value.ToEntero - 30, HdnAncho.Value.ToEntero - 30)) - End Sub + Dim ObjUsuario As New ClsSisUsuarios + Dim Usuario As Usuario = Nothing + Usuario = ObjUsuario.ValidaUsuarioPortalCliente(gvr.DataKey("CveCliente"), gvr.DataKey("Usuario"), gvr.DataKey("Contraseña")) + + ObjUsuario.Dispose() - Private Sub CreaObjetoEmpresa() - Dim ObjEmpresa As New ClsSisEmpresas() - If ObjEmpresa.GetEmpresas(UsuarioActual.CveEmpresa, "-1", "-1", "-1", "-1") Then - 'Session("Empresa") = ObjEmpresa - If ObjEmpresa.GetEmpresasFuncionalidades(UsuarioActual.CveEmpresa) Then - Dim dttmp As Data.DataTable = ObjEmpresa.DtResultados + If Usuario IsNot Nothing Then + Dim dt As Data.DataTable = GlobalDTUsuarios(Usuario.CveUsuario) + + Dim ModoSimulacion As Boolean = ADSSession.ADSSessionConfig.sessionUser.ModoSimulacion + Usuario.ModoSimulacion = ModoSimulacion + ADSSession.ADSSessionConfig.sessionUser = Usuario + ADSSession.ADSSessionConfig.sessionDpage = False + + If dt IsNot Nothing Then + If dt.Rows.Count >= 1 Then + If dt.Rows.Count > 1 Then Usuario.MultipleEmpresa = True + Usuario.CvePlataforma = 6 + UsuarioActual.CveEmpresa = gvr.DataKey("CveEmpresa").ToEntero() + ADSSession.ADSSessionConfig.SessionManager(ADSSession.OpcionSession.CambiarEmpresa, Nothing, UsuarioActual.CveEmpresa) + CreaObjetoEmpresa(Usuario) + 'si la contraseña es la prederminada, pide la nueva contraseña + 'FormsAuthentication.RedirectFromLoginPage(Encripta(Usuario.CveUsuario.ToString), False) + RegistraScript("Ir4();") + End If + End If + dt.Dispose() + End If - Dim EmpresasFuncionalidades As New HybridDictionary - For Each Row As Data.DataRow In dttmp.Rows - EmpresasFuncionalidades.Add(Convert.ToInt32(Row("CveFuncionalidad")), Row("Valor").ToString) - Next - ObjEmpresa.Empresa.SetFuncionalidades(EmpresasFuncionalidades) End If - UsuarioActual.Empresa = ObjEmpresa.Empresa - Else - Session("Empresa") = Nothing End If - ObjEmpresa.Dispose() + End Sub + Protected Sub BtnSetWindows_Click(sender As Object, e As System.EventArgs) Handles BtnSetWindows.Click + RegistraScript(String.Format("$get('tdContenido').style.height='{0}px'; $get('tdContenido').style.width='{1}px'", HdnAlto.Value.ToEntero - 30, HdnAncho.Value.ToEntero - 30)) End Sub Private Sub CreaObjetoEmpresa(ByRef UsuarioActual As Usuario) @@ -190,9 +180,35 @@ Partial Class PopUpSeleccionarEmpresa Session("Empresa") = Nothing End If ObjEmpresa.Dispose() + End Sub + + + Private Sub GuardaLogR(Mensaje As String) + Dim ArchivoW As IO.StreamWriter + Dim MensajeLog As String = "" + Dim continuar As Boolean = True + Try + If Not IsNothing(System.Web.HttpContext.Current) Then + If Not IsNothing(System.Web.HttpContext.Current.Request) Then + + MensajeLog = $"{HttpContext.Current.Request.Url.ToString()}{Environment.NewLine}" + End If + End If + Catch + End Try + MensajeLog = $"{System.Environment.NewLine}'{DateTime.Now:dd/MM/yyyy hh:mm}' -- {MensajeLog}{Mensaje.Trim()}{Environment.NewLine}" + + Try + ArchivoW = New IO.StreamWriter(String.Format("{0}\LogSession.txt", AppDomain.CurrentDomain.BaseDirectory), True, System.Text.Encoding.UTF8) + Catch + Exit Sub + End Try + Try + ArchivoW.Write(MensajeLog) + Catch + End Try + ArchivoW.Close() + ArchivoW.Dispose() End Sub - - - End Class \ No newline at end of file diff --git a/Site.master.vb b/Site.master.vb index a2c4eb732..f9498674c 100644 --- a/Site.master.vb +++ b/Site.master.vb @@ -122,15 +122,11 @@ Partial Class Site '2018.08.14, se movió de la linea 59 a la actual CargaTipoCambio() - + CargaUsuario() If UsuarioActual.Portal = False Then CreaMenu() 'Configuracion() - CargaUsuario() CargaBuscadores() - Else - LtMasterPerfil.Text = UsuarioActual.Rol - LtMasterUsuario.Text = UsuarioActual.Usuario End If End If From 4aaf6eb8130d8a35762e1595190609ee27c2d74f Mon Sep 17 00:00:00 2001 From: rrene Date: Mon, 28 Sep 2020 08:27:42 -0700 Subject: [PATCH 06/40] - columna de descripcion de compra --- Compras/RepComprasDetalle.aspx | 3 ++- Compras/RepComprasDetalle.aspx.vb | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Compras/RepComprasDetalle.aspx b/Compras/RepComprasDetalle.aspx index 6eb03716b..405e52e78 100644 --- a/Compras/RepComprasDetalle.aspx +++ b/Compras/RepComprasDetalle.aspx @@ -410,6 +410,7 @@ + @@ -481,7 +482,7 @@ - + diff --git a/Compras/RepComprasDetalle.aspx.vb b/Compras/RepComprasDetalle.aspx.vb index 6c9f43f77..a4da96cb2 100644 --- a/Compras/RepComprasDetalle.aspx.vb +++ b/Compras/RepComprasDetalle.aspx.vb @@ -606,7 +606,8 @@ Partial Class Compras_RepComprasDetalle GvDatos.Columns(9).Visible = ChkRazon.Checked GvDatos.Columns(10).Visible = ChkFolio.Checked GvDatos.Columns(11).Visible = ChkFecha.Checked - GvDatos.Columns(12).Visible = ChkObs.Checked + GvDatos.Columns(12).Visible = ChkObs.Checked + GvDatos.Columns(13).Visible = ChkDescripcion.Checked UPDatos.Update() End Sub From c70dd071821cd9342e004ff7ebf603c6e338553a Mon Sep 17 00:00:00 2001 From: rrene Date: Mon, 28 Sep 2020 08:27:56 -0700 Subject: [PATCH 07/40] -- cuando es costo, que muestre clasificaciones --- Contabilidad/RegPrePoliza.aspx | 1 + Contabilidad/RegPrePoliza.aspx.vb | 25 +++++++++++++++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/Contabilidad/RegPrePoliza.aspx b/Contabilidad/RegPrePoliza.aspx index 734a5ec1a..c29f117a8 100644 --- a/Contabilidad/RegPrePoliza.aspx +++ b/Contabilidad/RegPrePoliza.aspx @@ -190,6 +190,7 @@

+

diff --git a/Contabilidad/RegPrePoliza.aspx.vb b/Contabilidad/RegPrePoliza.aspx.vb index 914c95ef6..cd307959c 100644 --- a/Contabilidad/RegPrePoliza.aspx.vb +++ b/Contabilidad/RegPrePoliza.aspx.vb @@ -568,8 +568,18 @@ Partial Class ContabilidadC_RegPrePoliza Else TxtTC.Text = "" TxtTC.Visible = False - End If - + End If + + If DdlConceptosContables.SelectedValue.ToEntero.Contiene(69) Then + CargaClasificaciones() + DdlClasificaciones.Visible = True + Else + TxtTC.Text = "" + DdlClasificaciones.Visible = False + End If + + + End Sub Private Sub DdlProveedores_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlProveedores.SelectedIndexChanged @@ -631,6 +641,12 @@ Partial Class ContabilidadC_RegPrePoliza DdlClientes.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa) DdlClientes.DataBind() ' DdlClientes.Items.Insert(0, New ListItem(" - ", "-1")) + End Sub + + Private Sub CargaClasificaciones() + DdlClasificaciones.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa) + DdlClasificaciones.DataBind() + ' DdlClientes.Items.Insert(0, New ListItem(" - ", "-1")) End Sub Private Sub CargaVentas(CveCliente As Integer) @@ -942,6 +958,7 @@ Partial Class ContabilidadC_RegPrePoliza 'MENSAJE PRINCIPAL MensajeAlert.AppendFormat("

Folio de Salida: {1}", ObjMov.ContaIdPoliza, ObjMov.ContaFolio) + MensajeAlert.AppendFormat("

Prepóliza: {1}", CvePrePoliza, ObjMov.ContaFolio) 'Alert(MensajeAlert.ToString, ModExtensiones.TipoMensaje.MsgInformacion) Else Alert("Ocurrio un error al contabilizar, pongase en contacto con Soporte Técnico") @@ -1209,7 +1226,7 @@ Partial Class ContabilidadC_RegPrePoliza dr("CveProveedor") = DdlProveedores.SelectedValue.ToEntero dr("CveCompra") = DdlCompras.SelectedValue.ToEntero dr("CvePersonal") = DdlPersonal.SelectedValue.ToEntero - dr("CveClasificacion") = -1 + dr("CveClasificacion") = DdlClasificaciones.SelectedValue.ToEntero dr("CveCliente") = DdlClientes.SelectedValue.ToEntero dr("CveVenta") = DdlVentas.SelectedValue.ToEntero End If @@ -1278,7 +1295,7 @@ Partial Class ContabilidadC_RegPrePoliza dr("CveProveedor") = DdlProveedores.SelectedValue.ToEntero dr("CveCompra") = DdlCompras.SelectedValue.ToEntero dr("CvePersonal") = DdlPersonal.SelectedValue.ToEntero - dr("CveClasificacion") = -1 + dr("CveClasificacion") = DdlClasificaciones.SelectedValue.ToEntero dr("CveCliente") = DdlClientes.SelectedValue.ToEntero dr("CveVenta") = DdlVentas.SelectedValue.ToEntero dr("TC") = TxtTC.Text.ToDouble From a3a0e6e36cd7500a3f14509fef8d6ae4448f6ee0 Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Mon, 28 Sep 2020 10:19:39 -0700 Subject: [PATCH 08/40] =?UTF-8?q?se=20quit=C3=B3=20la=20columna=20de=20Cve?= =?UTF-8?q?Compra=20a=20la=20tabla=20de=20fletes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App_Code/ClsCompras.vb | 33 ++++ Compras/Compras.aspx.vb | 19 +- Inventarios/Fletes.aspx | 71 ++++++-- Inventarios/Fletes.aspx.vb | 345 +++++++++++++++++++------------------ 4 files changed, 275 insertions(+), 193 deletions(-) diff --git a/App_Code/ClsCompras.vb b/App_Code/ClsCompras.vb index 33dc7e050..fe1e33d06 100644 --- a/App_Code/ClsCompras.vb +++ b/App_Code/ClsCompras.vb @@ -3071,6 +3071,39 @@ Public Class ClsCompras Return Retorno End Function + Public Function GetFletesCompras(CveFlete As Integer, CveEmpresa As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Comp_FletesComprasGet") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveFlete", SqlDbType.Int).Value = CveFlete + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + End With + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al querer obtener las compras relacionadas.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + Return Retorno + End Function + + Public Function AddFletesCompras(CveFlete As Integer, Optional CveCompra As Integer = -1, Optional CveOC As Integer = -1) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Comp_FletesComprasAdd") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveFlete", SqlDbType.Int).Value = CveFlete + .Add("@CveCompra", SqlDbType.Int).Value = CveCompra + .Add("@CveOC", SqlDbType.Int).Value = CveOC + End With + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al querer agregar las compras relacionadas.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + Return Retorno + End Function + #Region "REPORTE PUE SIN PAGO" Public Function GetPUESinPago(FI As DateTime, FF As DateTime, CveProveedor As Integer, CveSubProyecto As Integer, CveEmpresa As Integer, Optional CveUsuario As Integer = -1) As Boolean diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 14d802679..13afb3f39 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -19218,13 +19218,13 @@ Partial Class Compras_Compras Dr = ObjInventario.DtResultados.Rows(0) End If End If - If Dr IsNot Nothing Then - If Dr("CveCompra").ToString.ToEntero > 0 And RblFleteImportacionOpcion.SelectedValue.ToEntero = 1 Then - Alert("Este flete ya tiene compra asignada", TipoMensaje.MsgAdvertencia) - ObjInventario.Dispose() - Exit Sub - End If - End If + 'If Dr IsNot Nothing Then + ' If Dr("CveCompra").ToString.ToEntero > 0 And RblFleteImportacionOpcion.SelectedValue.ToEntero = 1 Then + ' Alert("Este flete ya tiene compra asignada", TipoMensaje.MsgAdvertencia) + ' ObjInventario.Dispose() + ' Exit Sub + ' End If + 'End If ObjInventario.Dispose() End If @@ -19257,8 +19257,11 @@ Partial Class Compras_Compras If Not ObjInventario.UpdateFlete(CveFlete, Dr("Descripcion").ToString, Dr("Fecha").ToString.ToDate, -1, CveCompra, UsuarioActual.CveUsuario) Then ErrorTrans = True End If + If Not ObjCompras.AddFletesCompras(CveFlete, CveCompra:=CveCompra) Then + ErrorTrans = True + End If Else - ErrorTrans = True + ErrorTrans = True End If Case 2 If Not ObjInventario.AddFleteDetalle(CveFlete, CveCompra) Then diff --git a/Inventarios/Fletes.aspx b/Inventarios/Fletes.aspx index 5e83888b3..5461ff213 100644 --- a/Inventarios/Fletes.aspx +++ b/Inventarios/Fletes.aspx @@ -63,34 +63,34 @@ -
+ <%--

Modalidad -
-
+
--%> + <%--
-
-
-
+
--%> + <%--
+ <%-- +
--%> -
+ <%-- -
-
-
+
--%> + <%--
--%> + <%--
--%> + <%--
Proveedor:
@@ -107,12 +107,51 @@
-
+
--%> +
+ + +
+
+
+ + Compras +
+
+ +
+
+
+
+
+ + + + + + + + <%-- + +
+ +
+
+
--%> +
+
+
+
+
+
+
+
+
@@ -128,13 +167,13 @@
- --%>
diff --git a/Inventarios/Fletes.aspx.vb b/Inventarios/Fletes.aspx.vb index d0d318b96..27c2b1c77 100644 --- a/Inventarios/Fletes.aspx.vb +++ b/Inventarios/Fletes.aspx.vb @@ -81,27 +81,27 @@ Partial Class Compras_Fletes TxtFecha.Text = ObjInv.DtResultados.Rows(0)("Fecha").ToString If ObjInv.DtResultados.Rows(0)("CveOC").ToString.ToEntero > 0 Then - DdlModalidad.SelectedValue = "1" + 'DdlModalidad.SelectedValue = "1" Else - DdlModalidad.SelectedValue = "2" + 'DdlModalidad.SelectedValue = "2" End If - CambiaModalidad() - HdnCveOC.Value = ObjInv.DtResultados.Rows(0)("CveOC").ToString - HdnCveCompra.Value = ObjInv.DtResultados.Rows(0)("CveCompra").ToString + 'CambiaModalidad() + 'HdnCveOC.Value = ObjInv.DtResultados.Rows(0)("CveOC").ToString + 'HdnCveCompra.Value = ObjInv.DtResultados.Rows(0)("CveCompra").ToString - LbOCProveedor.Text = ObjInv.DtResultados.Rows(0)("RazonSocial").ToString - HLOCFolio.Text = ObjInv.DtResultados.Rows(0)("FolioDocumento").ToString - HLOCFolio.NavigateUrl = If(HdnCveOC.Value.ToEntero > 0, $"/OC/OC.aspx?OC={HdnCveOC.Value}", $"/Compras/Compras.aspx?CveCompra={HdnCveCompra.Value}") - LbOCImporte.Text = $"{ObjInv.DtResultados.Rows(0)("TotalDocumento").ToString.FormatoNumero} {ObjInv.DtResultados.Rows(0)("Moneda").ToString}" + 'LbOCProveedor.Text = ObjInv.DtResultados.Rows(0)("RazonSocial").ToString + 'HLOCFolio.Text = ObjInv.DtResultados.Rows(0)("FolioDocumento").ToString + 'HLOCFolio.NavigateUrl = If(HdnCveOC.Value.ToEntero > 0, $"/OC/OC.aspx?OC={HdnCveOC.Value}", $"/Compras/Compras.aspx?CveCompra={HdnCveCompra.Value}") + 'LbOCImporte.Text = $"{ObjInv.DtResultados.Rows(0)("TotalDocumento").ToString.FormatoNumero} {ObjInv.DtResultados.Rows(0)("Moneda").ToString}" If ObjInv.GetFleteDetalle(CveFlete) Then DtCompras = ObjInv.DtResultados Else Alert("Ocurrió un error al cargar el detalle del flete", TipoMensaje.MsgError) End If - + CargarComprasRelacionadas() Else - Alert("No se encontró el flete", TipoMensaje.MsgInformacion) + Alert("No se encontró el flete", TipoMensaje.MsgAdvertencia) End If Else Alert("Ocurrió un error al cargar el flete", TipoMensaje.MsgError) @@ -123,168 +123,168 @@ Partial Class Compras_Fletes #Region " VINCULA DOCUMENTO PRINCIPAL - OC | COMPRA " Protected Sub DdlModalidad_SelectedIndexChanged(sender As Object, e As EventArgs) - CambiaModalidad() + 'CambiaModalidad() UpRegistro.Update() End Sub - Private Sub CambiaModalidad() - HdnCveOC.Value = "-1" - HdnCveCompra.Value = "-1" + 'Private Sub CambiaModalidad() + ' HdnCveOC.Value = "-1" + ' HdnCveCompra.Value = "-1" - LbOCProveedor.Text = "" - HLOCFolio.Text = "" - HLOCFolio.NavigateUrl = "#" - LbOCImporte.Text = "" + ' LbOCProveedor.Text = "" + ' HLOCFolio.Text = "" + ' HLOCFolio.NavigateUrl = "#" + ' LbOCImporte.Text = "" - DivVincularOC.Visible = DdlModalidad.SelectedValue = "1" - DivVincularCompra.Visible = DdlModalidad.SelectedValue = "2" - End Sub + ' DivVincularOC.Visible = DdlModalidad.SelectedValue = "1" + ' DivVincularCompra.Visible = DdlModalidad.SelectedValue = "2" + 'End Sub - Protected Sub BtnVincularOC_Click(sender As Object, e As EventArgs) - VinculaOC() - End Sub - Private Sub VinculaOC() - If HdnCveOC.Value <> "-1" AndAlso IsNumeric(HdnCveOC.Value) AndAlso HdnCveOC.Value.ToEntero > 0 Then - Dim ObjInv As New ClsInventarios - Dim ObjOC As New ClsOC - If ObjInv.GetFletes(UsuarioActual.CveEmpresa, CveOC:=HdnCveOC.Value.ToEntero) AndAlso ObjInv.DtResultados.Rows.Count = 0 Then - If ObjOC.GetOC(HdnCveOC.Value.ToEntero, UsuarioActual.CveEmpresa) Then - If ObjOC.DtResultados.Rows.Count > 0 Then - LbOCProveedor.Text = ObjOC.DtResultados.Rows(0)("RazonSocial").ToString - HLOCFolio.Text = $"{ObjOC.DtResultados.Rows(0)("Folio").ToString}" - HLOCFolio.NavigateUrl = $"/OC/OC.aspx?OC={HdnCveOC.Value}" - LbOCImporte.Text = $"$ {ObjOC.DtResultados.Rows(0)("Total").ToString.FormatoNumero} {ObjOC.DtResultados.Rows(0)("Moneda").ToString}" - End If - Else - HdnCveOC.Value = "-1" - End If - Else - Alert($"La orden de compra ya forma parte del flete: {ObjInv.DtResultados.Rows(0)("Folio")}. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - End If - ObjInv.Dispose() - ObjOC.Dispose() - End If - UpRegistro.Update() - End Sub - Protected Sub BtnVincularCompra_Click(sender As Object, e As EventArgs) - VincularCompra() - End Sub - Private Sub VincularCompra() + 'Protected Sub BtnVincularOC_Click(sender As Object, e As EventArgs) + ' VinculaOC() + 'End Sub + 'Private Sub VinculaOC() + ' If HdnCveOC.Value <> "-1" AndAlso IsNumeric(HdnCveOC.Value) AndAlso HdnCveOC.Value.ToEntero > 0 Then + ' Dim ObjInv As New ClsInventarios + ' Dim ObjOC As New ClsOC + ' If ObjInv.GetFletes(UsuarioActual.CveEmpresa, CveOC:=HdnCveOC.Value.ToEntero) AndAlso ObjInv.DtResultados.Rows.Count = 0 Then + ' If ObjOC.GetOC(HdnCveOC.Value.ToEntero, UsuarioActual.CveEmpresa) Then + ' If ObjOC.DtResultados.Rows.Count > 0 Then + ' LbOCProveedor.Text = ObjOC.DtResultados.Rows(0)("RazonSocial").ToString + ' HLOCFolio.Text = $"{ObjOC.DtResultados.Rows(0)("Folio").ToString}" + ' HLOCFolio.NavigateUrl = $"/OC/OC.aspx?OC={HdnCveOC.Value}" + ' LbOCImporte.Text = $"$ {ObjOC.DtResultados.Rows(0)("Total").ToString.FormatoNumero} {ObjOC.DtResultados.Rows(0)("Moneda").ToString}" + ' End If + ' Else + ' HdnCveOC.Value = "-1" + ' End If + ' Else + ' Alert($"La orden de compra ya forma parte del flete: {ObjInv.DtResultados.Rows(0)("Folio")}. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + ' End If + ' ObjInv.Dispose() + ' ObjOC.Dispose() + ' End If + ' UpRegistro.Update() + 'End Sub + 'Protected Sub BtnVincularCompra_Click(sender As Object, e As EventArgs) + ' VincularCompra() + 'End Sub + 'Private Sub VincularCompra() - If Not (HdnCveCompra.Value <> "-1" AndAlso IsNumeric(HdnCveCompra.Value) AndAlso HdnCveCompra.Value.ToEntero > 0) Then - Alert("No hay compra seleccionaada", TipoMensaje.MsgAdvertencia) - Exit Sub - End If + ' If Not (HdnCveCompra.Value <> "-1" AndAlso IsNumeric(HdnCveCompra.Value) AndAlso HdnCveCompra.Value.ToEntero > 0) Then + ' Alert("No hay compra seleccionaada", TipoMensaje.MsgAdvertencia) + ' Exit Sub + ' End If - Dim ObjCompras As New ClsCompras - Dim ObjInv As New ClsInventarios - Dim ErrorAgregar = False - Dim RowCompras As DataRow = Nothing + ' Dim ObjCompras As New ClsCompras + ' Dim ObjInv As New ClsInventarios + ' Dim ErrorAgregar = False + ' Dim RowCompras As DataRow = Nothing - If ObjCompras.GetCompras(HdnCveCompra.Value.ToEntero, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) Then - RowCompras = ObjCompras.DtResultados.Rows(0) - If Not (ObjInv.GetFleteDetalle(-1, HdnCveCompra.Value.ToEntero) AndAlso ObjInv.DtResultados.Rows.Count = 0) Then - ErrorAgregar = True - Alert($"La compra ya forma parte del flete: {ObjCompras.DtResultados.Rows(0)("Folio")}. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - End If - Else - ErrorAgregar = True - Alert("Ocurrió un error al cargar la información de la compra. Por favor comuniquese con atención SIG.", TipoMensaje.MsgError) - End If + ' If ObjCompras.GetCompras(HdnCveCompra.Value.ToEntero, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) Then + ' RowCompras = ObjCompras.DtResultados.Rows(0) + ' If Not (ObjInv.GetFleteDetalle(-1, HdnCveCompra.Value.ToEntero) AndAlso ObjInv.DtResultados.Rows.Count = 0) Then + ' ErrorAgregar = True + ' Alert($"La compra ya forma parte del flete: {ObjCompras.DtResultados.Rows(0)("Folio")}. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + ' End If + ' Else + ' ErrorAgregar = True + ' Alert("Ocurrió un error al cargar la información de la compra. Por favor comuniquese con atención SIG.", TipoMensaje.MsgError) + ' End If - If Not ErrorAgregar Then - If DtCompras.FiltraParametros($"CveCompra = {RowCompras("CveCompra").ToString.ToEntero}").Rows.Count > 0 Then - ErrorAgregar = True - Alert("La compra seleccionada ya es parte del flete. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - End If - End If + ' If Not ErrorAgregar Then + ' If DtCompras.FiltraParametros($"CveCompra = {RowCompras("CveCompra").ToString.ToEntero}").Rows.Count > 0 Then + ' ErrorAgregar = True + ' Alert("La compra seleccionada ya es parte del flete. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + ' End If + ' End If - If Not ErrorAgregar Then - LbOCProveedor.Text = ObjCompras.DtResultados.Rows(0)("RazonSocial").ToString - HLOCFolio.Text = $"{ObjCompras.DtResultados.Rows(0)("Folio").ToString}" - HLOCFolio.NavigateUrl = $"/Compras/Compras.aspx?CveCompra={HdnCveCompra.Value}" - LbOCImporte.Text = $"$ {ObjCompras.DtResultados.Rows(0)("Total").ToString.FormatoNumero} {ObjCompras.DtResultados.Rows(0)("Moneda").ToString}" - Else - HdnCveCompra.Value = "-1" - End If + ' If Not ErrorAgregar Then + ' LbOCProveedor.Text = ObjCompras.DtResultados.Rows(0)("RazonSocial").ToString + ' HLOCFolio.Text = $"{ObjCompras.DtResultados.Rows(0)("Folio").ToString}" + ' HLOCFolio.NavigateUrl = $"/Compras/Compras.aspx?CveCompra={HdnCveCompra.Value}" + ' LbOCImporte.Text = $"$ {ObjCompras.DtResultados.Rows(0)("Total").ToString.FormatoNumero} {ObjCompras.DtResultados.Rows(0)("Moneda").ToString}" + ' Else + ' HdnCveCompra.Value = "-1" + ' End If - ObjCompras.Dispose() - ObjInv.Dispose() + ' ObjCompras.Dispose() + ' ObjInv.Dispose() - End Sub + 'End Sub #End Region #Region " AGREGA COMPRA GASTO " - Protected Sub BtnVincularCompraGasto_Click(sender As Object, e As EventArgs) - AgregaCompraGasto() - End Sub - Protected Sub ImgAgregarCompraGasto_Click(sender As Object, e As ImageClickEventArgs) - AgregaCompraGasto() - End Sub - Private Sub AgregaCompraGasto() + 'Protected Sub BtnVincularCompraGasto_Click(sender As Object, e As EventArgs) + ' AgregaCompraGasto() + 'End Sub + 'Protected Sub ImgAgregarCompraGasto_Click(sender As Object, e As ImageClickEventArgs) + ' AgregaCompraGasto() + 'End Sub + 'Private Sub AgregaCompraGasto() - If Not (HdnCveCompraGasto.Value <> "-1" AndAlso IsNumeric(HdnCveCompraGasto.Value) AndAlso HdnCveCompraGasto.Value.ToEntero > 0) Then - Alert("No hay compra de gasto seleccionaada", TipoMensaje.MsgAdvertencia) - Exit Sub - End If + ' If Not (HdnCveCompraGasto.Value <> "-1" AndAlso IsNumeric(HdnCveCompraGasto.Value) AndAlso HdnCveCompraGasto.Value.ToEntero > 0) Then + ' Alert("No hay compra de gasto seleccionaada", TipoMensaje.MsgAdvertencia) + ' Exit Sub + ' End If - Dim ObjCompras As New ClsCompras - Dim ObjInv As New ClsInventarios(ObjCompras.IniciaTransacSQL) - Dim ErrorAgregar = False - Dim RowCompras As DataRow = Nothing + ' Dim ObjCompras As New ClsCompras + ' Dim ObjInv As New ClsInventarios(ObjCompras.IniciaTransacSQL) + ' Dim ErrorAgregar = False + ' Dim RowCompras As DataRow = Nothing - If ObjCompras.GetCompras(HdnCveCompraGasto.Value.ToEntero, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) Then - RowCompras = ObjCompras.DtResultados.Rows(0) - If Not (ObjInv.GetFleteDetalle(-1, HdnCveCompraGasto.Value.ToEntero) AndAlso ObjInv.DtResultados.Rows.Count = 0) Then - ErrorAgregar = True - Alert($"La compra ya forma parte del flete: {ObjCompras.DtResultados.Rows(0)("Folio")}. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - End If - Else - ErrorAgregar = True - Alert("Ocurrió un error al cargar la información de la compra. Por favor comuniquese con atención SIG.", TipoMensaje.MsgError) - End If + ' If ObjCompras.GetCompras(HdnCveCompraGasto.Value.ToEntero, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa) Then + ' RowCompras = ObjCompras.DtResultados.Rows(0) + ' If Not (ObjInv.GetFleteDetalle(-1, HdnCveCompraGasto.Value.ToEntero) AndAlso ObjInv.DtResultados.Rows.Count = 0) Then + ' ErrorAgregar = True + ' Alert($"La compra ya forma parte del flete: {ObjCompras.DtResultados.Rows(0)("Folio")}. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + ' End If + ' Else + ' ErrorAgregar = True + ' Alert("Ocurrió un error al cargar la información de la compra. Por favor comuniquese con atención SIG.", TipoMensaje.MsgError) + ' End If - If HdnCveCompraGasto.Value.ToEntero = HdnCveOC.Value.ToEntero Then - ErrorAgregar = True - Alert("La Compra seleccionada como gasto es la orden de compra del pedimento. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - End If + ' If HdnCveCompraGasto.Value.ToEntero = HdnCveOC.Value.ToEntero Then + ' ErrorAgregar = True + ' Alert("La Compra seleccionada como gasto es la orden de compra del pedimento. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + ' End If - If Not ErrorAgregar Then - If DtCompras.FiltraParametros($"CveCompra = {RowCompras("CveCompra").ToString.ToEntero}").Rows.Count > 0 Then - ErrorAgregar = True - Alert("La compra seleccionada ya es parte del flete. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - End If - End If + ' If Not ErrorAgregar Then + ' If DtCompras.FiltraParametros($"CveCompra = {RowCompras("CveCompra").ToString.ToEntero}").Rows.Count > 0 Then + ' ErrorAgregar = True + ' Alert("La compra seleccionada ya es parte del flete. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + ' End If + ' End If - If Not ErrorAgregar Then - If Not GvDatos.Rows.Count > 0 Then - DtCompras = RowCompras.Table.Clone - DtCompras.Columns.Add("CveFleteDetalle", Type.GetType("System.Int32")) - End If - If CveFlete > 0 Then - If Not ObjInv.AddFleteDetalle(CveFlete, RowCompras("CveCompra").ToString.ToEntero) Then - ErrorAgregar = True - Alert("Ocurrió un error al agregar la compra. Por favor intente de nuevo.", TipoMensaje.MsgError) - End If - End If - End If + ' If Not ErrorAgregar Then + ' If Not GvDatos.Rows.Count > 0 Then + ' DtCompras = RowCompras.Table.Clone + ' DtCompras.Columns.Add("CveFleteDetalle", Type.GetType("System.Int32")) + ' End If + ' If CveFlete > 0 Then + ' If Not ObjInv.AddFleteDetalle(CveFlete, RowCompras("CveCompra").ToString.ToEntero) Then + ' ErrorAgregar = True + ' Alert("Ocurrió un error al agregar la compra. Por favor intente de nuevo.", TipoMensaje.MsgError) + ' End If + ' End If + ' End If - If Not ErrorAgregar Then - ObjCompras.Commit() - DtCompras.ImportRow(RowCompras) - CargaGrid() - If CveFlete > 0 Then - Alert("La orden de compra se agregó correctamente.", TipoMensaje.MsgInformacion) - End If - Else - ObjCompras.RollBack() - End If + ' If Not ErrorAgregar Then + ' ObjCompras.Commit() + ' DtCompras.ImportRow(RowCompras) + ' CargaGrid() + ' If CveFlete > 0 Then + ' Alert("La orden de compra se agregó correctamente.", TipoMensaje.MsgInformacion) + ' End If + ' Else + ' ObjCompras.RollBack() + ' End If - HdnCveCompraGasto.Value = "-1" - ObjCompras.Dispose() - ObjInv.Dispose() + ' HdnCveCompraGasto.Value = "-1" + ' ObjCompras.Dispose() + ' ObjInv.Dispose() - End Sub + 'End Sub Private Sub GvDireccionesEnvio_RowDeleting(sender As Object, e As GridViewDeleteEventArgs) Handles GvDatos.RowDeleting Dim TieneError = False If CveFlete > 0 AndAlso GvDatos.Rows(e.RowIndex).DataKey("CveFleteDetalle").ToEntero > 0 Then @@ -312,18 +312,18 @@ Partial Class Compras_Fletes #Region " GUARDAR " Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) - Select Case DdlModalidad.SelectedValue.ToEntero - Case 1 - If Not HdnCveOC.Value.ToEntero > 0 Then - Alert("Tiene que tener vinculada una OC", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - Case 2 - If Not HdnCveCompra.Value.ToEntero > 0 Then - Alert("Tiene que tener vinculada una Compra", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - End Select + 'Select Case DdlModalidad.SelectedValue.ToEntero + ' Case 1 + ' 'If Not HdnCveOC.Value.ToEntero > 0 Then + ' ' Alert("Tiene que tener vinculada una OC", TipoMensaje.MsgAdvertencia) + ' ' Exit Sub + ' 'End If + ' Case 2 + ' 'If Not HdnCveCompra.Value.ToEntero > 0 Then + ' ' Alert("Tiene que tener vinculada una Compra", TipoMensaje.MsgAdvertencia) + ' ' Exit Sub + ' 'End If + 'End Select If Not DtCompras.Rows.Count > 0 Then Alert("Tiene que tener compras de gastos agregadas", TipoMensaje.MsgAdvertencia) @@ -336,7 +336,7 @@ Partial Class Compras_Fletes Dim CveFleteTemporal As Integer = 0 If CveFlete < 0 Then - If ObjInv.AddFlete(LblFolio.Text, TxtDescripcion.Text.Trim, TxtFecha.Text.ToDate, HdnCveOC.Value.ToEntero, HdnCveCompra.Value.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + If ObjInv.AddFlete(LblFolio.Text, TxtDescripcion.Text.Trim, TxtFecha.Text.ToDate, -1, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then CveFleteTemporal = ObjInv.CveFlete Else ErrorFlete = True @@ -352,7 +352,7 @@ Partial Class Compras_Fletes ErrorFlete = True End If Else - If Not ObjInv.UpdateFlete(CveFlete, TxtDescripcion.Text, TxtFecha.Text.ToDate, HdnCveOC.Value.ToEntero, HdnCveCompra.Value.ToEntero, UsuarioActual.CveUsuario) Then + If Not ObjInv.UpdateFlete(CveFlete, TxtDescripcion.Text, TxtFecha.Text.ToDate, -1, -1, UsuarioActual.CveUsuario) Then ErrorFlete = True End If End If @@ -410,25 +410,32 @@ Partial Class Compras_Fletes If Archivo.Exists Then Dim ImporteGrid As Double = DtCompras.SUM("SubTotal") - Dim ImporteStr As String = LbOCImporte.Text.Split(" "c)(0) - Dim ImporteData As Double = ImporteStr.ToDouble() + 'Dim ImporteStr As String = LbOCImporte.Text.Split(" "c)(0) + 'Dim ImporteData As Double = ImporteStr.ToDouble() Dim params As New List(Of ReportParameter) params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) params.Add(New ReportParameter("Folio", LblFolio.Text)) params.Add(New ReportParameter("Descripcion", TxtDescripcion.Text)) params.Add(New ReportParameter("Fecha", TxtFecha.Text)) - params.Add(New ReportParameter("Modalidad", If(DdlModalidad.SelectedValue = "-1", "Por Orden de Compra", "Factura de Compra"))) - params.Add(New ReportParameter("Proveedor", LbOCProveedor.Text)) - params.Add(New ReportParameter("FolioModalidad", HLOCFolio.Text)) - params.Add(New ReportParameter("Importe", (ImporteGrid + ImporteData).ToString())) + params.Add(New ReportParameter("Modalidad", "Factura de Compra")) + params.Add(New ReportParameter("Proveedor", "")) + params.Add(New ReportParameter("FolioModalidad", "")) + params.Add(New ReportParameter("Importe", (ImporteGrid).ToString())) ImprimirPDF(UsuarioActual.Empresa.Ruta & "Formatos/Fletes.rdlc", DtCompras, params, String.Format("Costo Indirecto - {0}", LblFolio.Text), RDSName:="DataSet1") End If End Sub - + Private Sub CargarComprasRelacionadas() + Dim ObjCompras As New ClsCompras + If ObjCompras.GetFletesCompras(CveFlete, UsuarioActual.CveEmpresa) Then + GvComprasVinculadas.DataSource = ObjCompras.DtResultados + End If + ObjCompras.Dispose() + GvComprasVinculadas.DataBind() + End Sub End Class From 53bf07107965df7b834abaf0f9bc382bd04f5577 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Mon, 28 Sep 2020 18:33:51 -0700 Subject: [PATCH 09/40] Cambio entre portales (portal del proveedor) --- App_Code/ClsSisUsuarios.vb | 109 ++++++++++++++++++++++- Sistemas/PopUpAddUsuario.aspx.vb | 16 +++- Sistemas/PopUpSeleccionarEmpresa.aspx | 17 ++++ Sistemas/PopUpSeleccionarEmpresa.aspx.vb | 62 ++++++++++--- 4 files changed, 191 insertions(+), 13 deletions(-) diff --git a/App_Code/ClsSisUsuarios.vb b/App_Code/ClsSisUsuarios.vb index 298590f13..c1f9e640a 100644 --- a/App_Code/ClsSisUsuarios.vb +++ b/App_Code/ClsSisUsuarios.vb @@ -416,7 +416,7 @@ Public Class ClsSisUsuarios End Function - Public Function ValidaUsuarioPortalCliente(Clave As String, Usuario As String, Password As String) As Usuario + Public Function ValidaUsuarioPortalCliente(CveCliente As Integer, Usuario As String, Password As String) As Usuario Dim Retorno As Usuario = Nothing DataAdapter("PA_Sis_UsuariosGet") @@ -442,7 +442,7 @@ Public Class ClsSisUsuarios Retorno.Rol = Data.Rows(0)("Rol").ToString 'Retorno.NombreEmpresa = Data.Rows(0)("Empresa").ToString Retorno.CveEmpresa = Data.Rows(0)("CveEmpresa").ToString.ToEntero - Retorno.CveCliente = Clave.ToEntero + Retorno.CveCliente = CveCliente Retorno.ClienteGPS = False Retorno.Portal = True Retorno.Referencia = Data.Rows(0)("Referencia").ToString @@ -473,6 +473,64 @@ Public Class ClsSisUsuarios Return Retorno End Function + Public Function ValidaUsuarioPortalProveedor(CveProveedor As Integer, Usuario As String, Password As String) As Usuario + Dim Retorno As Usuario = Nothing + + DataAdapter("PA_Sis_UsuariosGet") + + With SqlAdapter.SelectCommand.Parameters + .Add("@CveUsuario", SqlDbType.Int).Value = -1 + .Add("@CveRol", SqlDbType.Int).Value = -1 + .Add("@Usuario", SqlDbType.VarChar).Value = Usuario + .Add("@Contraseña", SqlDbType.VarChar).Value = Password + .Add("@EsLogIn", SqlDbType.Bit).Value = 1 + End With + + Try + SqlAdapter.Fill(Data) + If Data.Rows.Count > 0 Then + Retorno = New Usuario + + Retorno.CveUsuario = Data.Rows(0)("CveUsuario").ToString.ToEntero + Retorno.Usuario = Usuario + Retorno.Contraseña = Data.Rows(0)("Contraseña").ToString + Retorno.Nombre = Data.Rows(0)("Nombre").ToString + Retorno.CveRol = Data.Rows(0)("CveRol").ToString.ToEntero + Retorno.Rol = Data.Rows(0)("Rol").ToString + 'Retorno.NombreEmpresa = Data.Rows(0)("Empresa").ToString + Retorno.CveEmpresa = Data.Rows(0)("CveEmpresa").ToString.ToEntero + Retorno.CveProveedor = CveProveedor + Retorno.ClienteGPS = False + Retorno.Portal = True + Retorno.Referencia = Data.Rows(0)("Referencia").ToString + Retorno.EsSupervisorRH = If(Data.Rows(0)("EsSupervisorRH").ToString = "1", True, False) + 'Retorno.Liga = Data.Rows(0)("Liga").ToString + 'cargo los modulos del usuario y genero el menú + Dim dttmp As DataTable = GetUsuariosRolesModulos(Retorno.CveUsuario, Retorno.CveProveedor) + + Dim UsuariosModulos As New HybridDictionary + For Each Row As DataRow In dttmp.Rows + UsuariosModulos.Add(Convert.ToInt32(Row("CveModulo")), Row("CveModulo").ToString) + Next + + Retorno.Modulos = UsuariosModulos + ''cargo los procesos del usuario + dttmp = GetUsuariosRolesProcesos(Retorno.CveUsuario) + Dim UsuariosProcesos As New HybridDictionary + For Each Row As DataRow In dttmp.Rows + UsuariosProcesos.Add(Convert.ToInt32(Row("CveProceso")), Row("CveProceso").ToString) + Next + Retorno.Procesos = UsuariosProcesos + End If + + Catch ex As SqlException + OnError("Ocurrio un error al Iniciar Acceso a Sitio.", ex) + Retorno = Nothing + End Try + + Return Retorno + End Function + #Region "U S U A R I O - I N D I C A D O R E S" Public Function getUsuarioIndicadores(_CveUsuario As Integer, _CveEmpresa As Integer, _CveRol As Integer) As DataTable @@ -2740,6 +2798,30 @@ Public Class ClsSisUsuarios .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario End With + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch Ex1 As SqlException + If Ex1.Message.Contains("Número: 2627;") Then + Alert("Ya existe un Usuario con el mismo nombre: " & Usuario & ".", TipoMensaje.MsgAdvertencia) + Else + Me.OnError("Ocurrió un error al guardar el nuevo usuario", Ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End If + Catch ex As Exception + OnError("Ocurrió un error el acceso a clientes.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + End Function + + Public Function AddUsuarioProveedor(CveUsuario As Integer, CveProveedor As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Sis_UsuariosProveedoresAdd") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveProveedor", SqlDbType.Int).Value = CveProveedor + .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario + End With + Try SqlAdapter.Fill(Data) Retorno = True @@ -2755,6 +2837,29 @@ Public Class ClsSisUsuarios Return Retorno End Function + Public Function GetUsuarioProveedor(CveUsuario As Integer, CveProveedor As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Sis_UsuariosProveedorGet") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveProveedor", SqlDbType.Int).Value = CveProveedor + .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch Ex1 As SqlException + If Ex1.Message.Contains("Número: 2627;") Then + Alert("Ya existe un Usuario con el mismo nombre: " & Usuario & ".", TipoMensaje.MsgAdvertencia) + Else + Me.OnError("Ocurrió un error al guardar el nuevo usuario", Ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End If + Catch ex As Exception + OnError("Ocurrió un error al obtener el acceso a proveedores.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + End Function #End Region diff --git a/Sistemas/PopUpAddUsuario.aspx.vb b/Sistemas/PopUpAddUsuario.aspx.vb index 58101c3ed..22ed375a3 100644 --- a/Sistemas/PopUpAddUsuario.aspx.vb +++ b/Sistemas/PopUpAddUsuario.aspx.vb @@ -371,7 +371,8 @@ Partial Class Sistemas_PopUpAddUsuario ' Return 'End If - If UsuarioActual.Empresa.CvePlataforma = 1 Then + 'SI ES UN USUARIO DEL ERP, DEBE DARLE ACCESO AL CLIENTE + If UsuarioActual.Empresa.CvePlataforma = 1 AndAlso CveCliente > 0 Then Dim DtClientesAcceso As DataTable = Nothing If Not HuboError AndAlso ObjUsuarios.GetUsuarioCliente(CveUsuario, CveCliente) Then 'DEBE AGREGAR EL USUARIO AL CLIENTE @@ -383,6 +384,19 @@ Partial Class Sistemas_PopUpAddUsuario Else HuboError = True End If + 'SI ES UN USUARIO DEL ERP, DEBE DARLE ACCESO AL PROVEEDOR + ElseIf UsuarioActual.Empresa.CvePlataforma = 1 AndAlso CveProveedor > 0 Then + Dim DtProveedoresAcceso As DataTable = Nothing + If Not HuboError AndAlso ObjUsuarios.GetUsuarioProveedor(CveUsuario, CveProveedor) Then + 'DEBE AGREGAR EL USUARIO AL PROVEEDOR + If ObjUsuarios.DtResultados.Rows.Count = 0 Then + If Not HuboError AndAlso Not ObjUsuarios.AddUsuarioProveedor(CveUsuario, CveProveedor) Then + HuboError = True + End If + End If + Else + HuboError = True + End If ElseIf UsuarioActual.Empresa.CvePlataforma = 3 Then If Not ObjUsuarios.UpdateUsuario(LtlUsuario.Text.Trim, TxtNombre.Text, -1, TxtEmail.Text, -1, -1, False, True, -1, CveUsuario, -1, -1) Then HuboError = True diff --git a/Sistemas/PopUpSeleccionarEmpresa.aspx b/Sistemas/PopUpSeleccionarEmpresa.aspx index 4ba92eb82..38fdabe9d 100644 --- a/Sistemas/PopUpSeleccionarEmpresa.aspx +++ b/Sistemas/PopUpSeleccionarEmpresa.aspx @@ -75,6 +75,20 @@ + + + + Portal del Proveedor + + + + + + + +
@@ -110,6 +124,9 @@ function Ir4() { gotourl('/PortalCliente/PortalCliente.aspx'); } + function Ir5() { + gotourl('/PortalProveedor/PortalProveedor.aspx'); + } function buscarDT() { $('.TxtBusqueda').on('keyup', function () { diff --git a/Sistemas/PopUpSeleccionarEmpresa.aspx.vb b/Sistemas/PopUpSeleccionarEmpresa.aspx.vb index 04470a006..d0f150423 100644 --- a/Sistemas/PopUpSeleccionarEmpresa.aspx.vb +++ b/Sistemas/PopUpSeleccionarEmpresa.aspx.vb @@ -12,8 +12,6 @@ Partial Class PopUpSeleccionarEmpresa Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not IsPostBack Then CType(Me.Master, BaseMasterPage).EsPopup = True - 'CType(Me.Master, BaseMasterPage).PopupWidth = HdnAncho.Value.ToEntero - 'RegistraScript("alertSize();") GetEmpresas() End If End Sub @@ -26,10 +24,14 @@ Partial Class PopUpSeleccionarEmpresa LtlTotalRegistros.Text = Dt.Rows.Count.ToString.FormatoNumero(0) GvEmpresas.DataSource = Dt.FiltraParametros("CvePlataforma = 1 OR (CvePlataforma = 3 AND CveCliente IS NULL)", "Empresa") GvPortalRastreo.DataSource = Dt.FiltraParametros("CvePlataforma = 3 AND CveCliente IS NOT NULL", "Empresa") - GvPortalCliente.DataSource = Dt.FiltraParametros("CvePlataforma = 6 AND CveCliente IS NOT NULL", "Empresa") + GvPortalCliente.DataSource = Dt.FiltraParametros("CvePlataforma = 6 AND CveCliente IS NOT NULL", "Empresa") + GvPortalProveedor.DataSource = Dt.FiltraParametros("CvePlataforma = 7 AND CveProveedor IS NOT NULL", "Empresa") Else LtlTotalRegistros.Text = "0" GvEmpresas.DataSource = Nothing + GvPortalRastreo.DataSource = Nothing + GvPortalCliente.DataSource = Nothing + GvPortalProveedor.DataSource = Nothing Alert("No se encontraron registros con los parametros solicitados.", Extensiones.TipoMensaje.MsgAdvertencia) End If End If @@ -37,6 +39,7 @@ Partial Class PopUpSeleccionarEmpresa GvEmpresas.DataBind() GvPortalRastreo.DataBind() GvPortalCliente.DataBind() + GvPortalProveedor.DataBind() UPDatos.Update() @@ -116,7 +119,6 @@ Partial Class PopUpSeleccionarEmpresa End If End Sub - Protected Sub GvPortalCliente_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) Handles GvPortalCliente.RowCommand If e.CommandName = "Cambia" Then Dim gvr As GridViewRow = DirectCast(DirectCast(e.CommandSource, LinkButton).BindingContainer, GridViewRow) @@ -125,7 +127,7 @@ Partial Class PopUpSeleccionarEmpresa Dim ObjUsuario As New ClsSisUsuarios Dim Usuario As Usuario = Nothing - Usuario = ObjUsuario.ValidaUsuarioPortalCliente(gvr.DataKey("CveCliente"), gvr.DataKey("Usuario"), gvr.DataKey("Contraseña")) + Usuario = ObjUsuario.ValidaUsuarioPortalCliente(gvr.DataKey("CveCliente").ToEntero(), gvr.DataKey("Usuario"), gvr.DataKey("Contraseña")) ObjUsuario.Dispose() @@ -155,7 +157,48 @@ Partial Class PopUpSeleccionarEmpresa End If End If - End Sub + End Sub + Protected Sub GvPortalProveedor_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs) Handles GvPortalProveedor.RowCommand + If e.CommandName = "Cambia" Then + Dim gvr As GridViewRow = DirectCast(DirectCast(e.CommandSource, LinkButton).BindingContainer, GridViewRow) + + If gvr IsNot Nothing Then + + Dim ObjUsuario As New ClsSisUsuarios + Dim Usuario As Usuario = Nothing + Usuario = ObjUsuario.ValidaUsuarioPortalProveedor(gvr.DataKey("CveProveedor").ToEntero(), gvr.DataKey("Usuario"), gvr.DataKey("Contraseña")) + + ObjUsuario.Dispose() + + If Usuario IsNot Nothing Then + Dim dt As Data.DataTable = GlobalDTUsuarios(Usuario.CveUsuario) + + Dim ModoSimulacion As Boolean = ADSSession.ADSSessionConfig.sessionUser.ModoSimulacion + Usuario.ModoSimulacion = ModoSimulacion + ADSSession.ADSSessionConfig.sessionUser = Usuario + ADSSession.ADSSessionConfig.sessionDpage = False + + If dt IsNot Nothing Then + If dt.Rows.Count >= 1 Then + If dt.Rows.Count > 1 Then Usuario.MultipleEmpresa = True + Usuario.CvePlataforma = 7 + UsuarioActual.CveEmpresa = gvr.DataKey("CveEmpresa").ToEntero() + ADSSession.ADSSessionConfig.SessionManager(ADSSession.OpcionSession.CambiarEmpresa, Nothing, UsuarioActual.CveEmpresa) + CreaObjetoEmpresa(Usuario) + 'si la contraseña es la prederminada, pide la nueva contraseña + 'FormsAuthentication.RedirectFromLoginPage(Encripta(Usuario.CveUsuario.ToString), False) + RegistraScript("Ir5();") + End If + End If + dt.Dispose() + End If + + End If + + End If + End Sub + +#Region "F U N C I O N E S" Protected Sub BtnSetWindows_Click(sender As Object, e As System.EventArgs) Handles BtnSetWindows.Click RegistraScript(String.Format("$get('tdContenido').style.height='{0}px'; $get('tdContenido').style.width='{1}px'", HdnAlto.Value.ToEntero - 30, HdnAncho.Value.ToEntero - 30)) End Sub @@ -181,8 +224,6 @@ Partial Class PopUpSeleccionarEmpresa End If ObjEmpresa.Dispose() End Sub - - Private Sub GuardaLogR(Mensaje As String) Dim ArchivoW As IO.StreamWriter Dim MensajeLog As String = "" @@ -209,6 +250,7 @@ Partial Class PopUpSeleccionarEmpresa End Try ArchivoW.Close() ArchivoW.Dispose() - End Sub - + End Sub +#End Region + End Class \ No newline at end of file From 81b2ef824a71383455819b7f7d7ab4fa46fff85c Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Tue, 29 Sep 2020 15:55:12 -0700 Subject: [PATCH 10/40] Cambios entre portales --- Sistemas/PopUpSeleccionarEmpresa.aspx | 2 +- Sistemas/PopUpSeleccionarEmpresa.aspx.vb | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Sistemas/PopUpSeleccionarEmpresa.aspx b/Sistemas/PopUpSeleccionarEmpresa.aspx index 38fdabe9d..efd3192d7 100644 --- a/Sistemas/PopUpSeleccionarEmpresa.aspx +++ b/Sistemas/PopUpSeleccionarEmpresa.aspx @@ -29,7 +29,7 @@
- diff --git a/Sistemas/PopUpSeleccionarEmpresa.aspx.vb b/Sistemas/PopUpSeleccionarEmpresa.aspx.vb index d0f150423..32de18d83 100644 --- a/Sistemas/PopUpSeleccionarEmpresa.aspx.vb +++ b/Sistemas/PopUpSeleccionarEmpresa.aspx.vb @@ -21,11 +21,20 @@ Partial Class PopUpSeleccionarEmpresa If Dt IsNot Nothing Then If Dt.Rows.Count > 0 Then - LtlTotalRegistros.Text = Dt.Rows.Count.ToString.FormatoNumero(0) - GvEmpresas.DataSource = Dt.FiltraParametros("CvePlataforma = 1 OR (CvePlataforma = 3 AND CveCliente IS NULL)", "Empresa") + Dim NumRegistros As Integer = 0 + GvEmpresas.DataSource = Dt.FiltraParametros("(CvePlataforma = 1 OR (CvePlataforma = 3 AND CveCliente IS NULL)) AND CvePlataformaUsuario NOT IN (6,7)", "Empresa") + NumRegistros += DirectCast(GvEmpresas.DataSource, System.Data.DataTable).Rows.Count + GvPortalRastreo.DataSource = Dt.FiltraParametros("CvePlataforma = 3 AND CveCliente IS NOT NULL", "Empresa") + NumRegistros += DirectCast(GvPortalRastreo.DataSource, System.Data.DataTable).Rows.Count + GvPortalCliente.DataSource = Dt.FiltraParametros("CvePlataforma = 6 AND CveCliente IS NOT NULL", "Empresa") - GvPortalProveedor.DataSource = Dt.FiltraParametros("CvePlataforma = 7 AND CveProveedor IS NOT NULL", "Empresa") + NumRegistros += DirectCast(GvPortalCliente.DataSource, System.Data.DataTable).Rows.Count + + GvPortalProveedor.DataSource = Dt.FiltraParametros("CvePlataforma = 7 AND CveProveedor IS NOT NULL", "Empresa") + NumRegistros += DirectCast(GvPortalProveedor.DataSource, System.Data.DataTable).Rows.Count + + LtlTotalRegistros.Text = NumRegistros.ToString().FormatoNumero(0) Else LtlTotalRegistros.Text = "0" GvEmpresas.DataSource = Nothing From f53dc040c2af42edf6c6772e7f8b868058714e3e Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Tue, 29 Sep 2020 15:55:29 -0700 Subject: [PATCH 11/40] Validacion en WS --- asmx/WSApp.asmx | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/asmx/WSApp.asmx b/asmx/WSApp.asmx index fa5c03748..7917b12e9 100644 --- a/asmx/WSApp.asmx +++ b/asmx/WSApp.asmx @@ -548,15 +548,19 @@ Public Class WSApp Salida.CveSubProyecto = UsuarioActual.CveSubProyecto Salida.Procesos = UsuarioActual.Procesos.Values.Cast(Of String).ToList() - If ObjClientes.GetClientes(UsuarioActual.CveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa) Then + If UsuarioActual.CveCliente > 0 AndAlso ObjClientes.GetClientes(UsuarioActual.CveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa) Then If ObjClientes.DtResultados.Rows.Count > 0 Then Salida.Cliente = ObjClientes.Nombre Salida.CvePrecioLista = ObjClientes.CvePrecioLista - Salida.CveEstatusCliente = If(ObjClientes.Estatus, 1, 0) - End If - End If - - retorno = JsonConvert.SerializeObject(Salida) + Salida.CveEstatusCliente = If(ObjClientes.Estatus, 1, 0) + + retorno = JsonConvert.SerializeObject(Salida) + End If + Else + retorno = "{}" + End If + + Else retorno = "{}" End If From 6a6c7a70d8b90595b05f01a46d1a41d3406a1b9c Mon Sep 17 00:00:00 2001 From: Rakcsle Supertramp Date: Tue, 29 Sep 2020 16:56:48 -0700 Subject: [PATCH 12/40] Talamus --- TareasProgramadas/Tareas119.ashx | 56 +++++++++++++++++--------------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/TareasProgramadas/Tareas119.ashx b/TareasProgramadas/Tareas119.ashx index a123a8239..9617b6a33 100644 --- a/TareasProgramadas/Tareas119.ashx +++ b/TareasProgramadas/Tareas119.ashx @@ -94,14 +94,14 @@ public class TareasJam : IHttpHandler //"ftp://us2.hostedftp.com/", "agrojam", "A12345678"; - //string FTPServer = "ftp://127.0.0.1/"; - //string TFPUsr = "Toor"; - //string FTPPass = "agj-3500"; + string FTPServer = "ftp://127.0.0.1/"; + string TFPUsr = "Toor"; + string FTPPass = "agj-3500"; - string FTPServer = "ftp://us2.hostedftp.com"; - string TFPUsr = "agrojam"; - string FTPPass = "A12345678"; + //string FTPServer = "ftp://us2.hostedftp.com"; + //string TFPUsr = "agrojam"; + //string FTPPass = "A12345678"; bool ErrorProceso = false; @@ -198,8 +198,8 @@ public class TareasJam : IHttpHandler DTAlmacenes.AcceptChanges(); - DataTable dtCloned = DTVentas.Clone(); - dtCloned.Columns[3].DataType = typeof(string); + DataTable dtCloned = DTVentas.Clone(); + dtCloned.Columns[3].DataType = typeof(DateTime); foreach (DataRow row in DTVentas.Rows) { @@ -207,17 +207,17 @@ public class TareasJam : IHttpHandler } DTVentas = dtCloned; - foreach(DataRow dRow in DTVentas.Rows) + foreach (DataRow dRow in DTVentas.Rows) { - string tmpString = dRow[3].ToString().ToDate().ToString("yyyy/MM/dd"); - dRow[3] = tmpString; + DateTime tmpDate = dRow[3].ToString().ToDate().ToString("yyyy/MM/dd").ToDate(); + dRow[3] = tmpDate; } DTVentas.AcceptChanges(); - dtCloned = DTAlmacenes.Clone(); - dtCloned.Columns[3].DataType = typeof(string); + dtCloned = DTAlmacenes.Clone(); + dtCloned.Columns[3].DataType = typeof(DateTime); foreach (DataRow row in DTAlmacenes.Rows) { @@ -225,10 +225,10 @@ public class TareasJam : IHttpHandler } DTAlmacenes = dtCloned; - foreach(DataRow dRow in DTAlmacenes.Rows) + foreach (DataRow dRow in DTAlmacenes.Rows) { - string tmpString = dRow[3].ToString().ToDate().ToString("yyyy/MM/dd"); - dRow[3] = tmpString; + DateTime tmpDate = dRow[3].ToString().ToDate().ToString("yyyy/MM/dd").ToDate(); + dRow[3] = tmpDate; } DTAlmacenes.AcceptChanges(); @@ -252,6 +252,16 @@ public class TareasJam : IHttpHandler SpreadsheetInfo.SetLicense(Extensiones.ModExtensiones.SerialGemBoxSpreadsheet()); + var workbookAlmacenes = new ExcelFile(); + var worksheetAlmacenes = workbookAlmacenes.Worksheets.Add("Almacenes"); + worksheetAlmacenes.InsertDataTable(DTAlmacenes, new InsertDataTableOptions() + { + ColumnHeaders = true, + StartRow = 0 + }); + worksheetAlmacenes.Columns[3].Style.NumberFormat = "yyyy/MM/dd"; + workbookAlmacenes.Save(RutaAlmacenes); + var workbookProductos = new ExcelFile(); var worksheetProductos = workbookProductos.Worksheets.Add("Productos"); worksheetProductos.InsertDataTable(DTProductos, new InsertDataTableOptions() @@ -268,6 +278,7 @@ public class TareasJam : IHttpHandler ColumnHeaders = true, StartRow = 0 }); + worksheetVentas.Columns[3].Style.NumberFormat = "yyyy/MM/dd"; workbookVentas.Save(RutaVentas); @@ -281,14 +292,7 @@ public class TareasJam : IHttpHandler workbookClientes.Save(RutaClientes); - var workbookAlmacenes = new ExcelFile(); - var worksheetAlmacenes = workbookAlmacenes.Worksheets.Add("Almacenes"); - worksheetAlmacenes.InsertDataTable(DTAlmacenes, new InsertDataTableOptions() - { - ColumnHeaders = true, - StartRow = 0 - }); - workbookAlmacenes.Save(RutaAlmacenes); + var FInfoProductos = new FileInfo(RutaProductos); @@ -434,8 +438,8 @@ public class TareasJam : IHttpHandler ClsSisMail Correo = new ClsSisMail(); - string Para = "julian@adssistemas.mx;rene.molina@adssistemas.mx;oscar.irigoyen@adssistemas.mx"; - //string Para = "oscar.irigoyen@adssistemas.mx"; + // string Para = "julian@adssistemas.mx;rene.molina@adssistemas.mx;oscar.irigoyen@adssistemas.mx"; + string Para = "oscar.irigoyen@adssistemas.mx"; string Asunto = ErrorProceso ? $"Carga Layout Corteva {DateTime.Now.ToString("yyyy-MM-dd")}" : $"Carga Layout Corteva Error {DateTime.Now.ToString("yyyy-MM-dd")}"; Correo.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Cuerpo, Archivos:ListaArchivos); From 1ebf415d92435f220936eefe98fb2549002f8012 Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Tue, 29 Sep 2020 18:42:01 -0700 Subject: [PATCH 13/40] =?UTF-8?q?se=20agreg=C3=B3=20otra=20tabla=20para=20?= =?UTF-8?q?juntar=20varios=20costos=20indirectos=20en=20un=20solo=20flete?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App_Code/ClsInventarios.vb | 25 ++++++++++++++ Inventarios/Fletes.aspx | 12 +++---- Inventarios/RepFletes.aspx | 62 ++++++++++++++++++++++++----------- Inventarios/RepFletes.aspx.vb | 21 ++++++++---- 4 files changed, 88 insertions(+), 32 deletions(-) diff --git a/App_Code/ClsInventarios.vb b/App_Code/ClsInventarios.vb index 95962b005..293c971d4 100644 --- a/App_Code/ClsInventarios.vb +++ b/App_Code/ClsInventarios.vb @@ -4543,6 +4543,31 @@ Public Class ClsInventarios Return Retorno End Function + Public Function GetFletesRep(CveEmpresa As Integer, Optional CveFlete As Integer = -1, Optional Folio As String = "-1", Optional CveProveedor As Integer = -1, + Optional CveOC As Integer = -1, Optional CveCompra As Integer = -1, Optional FechaInicio As Date = MinFecha, + Optional FechaFin As Date = MaxFecha, Optional TipoGasto As Integer = -1) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Inv_FletesRep") + With SqlAdapter.SelectCommand.Parameters + .Add("@Folio", SqlDbType.VarChar).Value = Folio + .Add("@CveProveedor", SqlDbType.Int).Value = CveProveedor + .Add("@FechaInicio", SqlDbType.Date).Value = FechaInicio + .Add("@FechaFin", SqlDbType.Date).Value = FechaFin + .Add("@CveOC", SqlDbType.Int).Value = CveOC + .Add("@CveCompra", SqlDbType.Int).Value = CveCompra + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + .Add("@CveFlete", SqlDbType.Int).Value = CveFlete + .Add("@TipoGasto", SqlDbType.Int).Value = TipoGasto + End With + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al obtener el reporte de flete.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + Return Retorno + End Function + Public Function RecepcionAlmacenFleteGet(CveFlete As Integer, CveOrdenCompra As Integer, CveCompra As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Inv_RecepcionAlmacenFleteGet") diff --git a/Inventarios/Fletes.aspx b/Inventarios/Fletes.aspx index 5461ff213..bcd2bac64 100644 --- a/Inventarios/Fletes.aspx +++ b/Inventarios/Fletes.aspx @@ -120,7 +120,7 @@
- Compras + COMPRAS DE PRODUCTOS
@@ -133,7 +133,7 @@ - + <%-- @@ -162,7 +162,7 @@
- Compras Gasto + Costo Indirecto
@@ -185,13 +185,13 @@ - + - + <%-- - + --%>
diff --git a/Inventarios/RepFletes.aspx b/Inventarios/RepFletes.aspx index 0c39960a0..16f6d5ba8 100644 --- a/Inventarios/RepFletes.aspx +++ b/Inventarios/RepFletes.aspx @@ -17,9 +17,9 @@ -
  • + <%--
  • Registrar Nuevo Flete -
  • + --%>
    @@ -42,12 +42,12 @@
    Proveedor:
    -
    +
    -
    Fecha Inicio:
    -
    -
    +
    Fecha Inicio:
    +
    +
    @@ -58,9 +58,9 @@
    -
    Fecha Fin:
    -
    -
    +
    Fecha Fin:
    +
    +
    @@ -71,6 +71,14 @@
    +
    Opción:
    +
    + + + + + +
    @@ -81,8 +89,8 @@ - - + <%-- + --%>
    Facturas de Costo IndirectoDocumento (OC/Compra)Facturas de Costo IndirectoDocumento (OC/Compra)
    @@ -91,17 +99,33 @@
    - + - - - - - - + + + + + + + + + + + + + + + + <%-- + + --%> + + + + <%-- - + --%> diff --git a/Inventarios/RepFletes.aspx.vb b/Inventarios/RepFletes.aspx.vb index 3c4d2787d..92cbf419b 100644 --- a/Inventarios/RepFletes.aspx.vb +++ b/Inventarios/RepFletes.aspx.vb @@ -40,7 +40,8 @@ Partial Class Compras_RepFletes Private Sub CargaDatos() Dim ObjInv As New ClsInventarios If TxtFolio.Text <> "" Then TxtFechaI.Text = MinFecha.ToShortDateString : TxtFechaF.Text = MaxFecha.ToShortDateString - If ObjInv.GetFletes(UsuarioActual.CveEmpresa, -1, If(TxtFolio.Text = "", "-1", TxtFolio.Text), DdlProveedor.SelectedValue.ToString.ToEntero, -1, -1, TxtFechaI.Text.ToDate, TxtFechaF.Text.ToDate) Then + If ObjInv.GetFletesRep(UsuarioActual.CveEmpresa, -1, If(TxtFolio.Text = "", "-1", TxtFolio.Text), DdlProveedor.SelectedValue.ToString.ToEntero, -1, -1, + TxtFechaI.Text.ToDate, TxtFechaF.Text.ToDate, TipoGasto:=DdlTipoGasto.SelectedValue.ToEntero()) Then DtFletes = ObjInv.DtResultados End If ObjInv.Dispose() @@ -55,13 +56,19 @@ Partial Class Compras_RepFletes Protected Sub GvDatos_RowDataBound(sender As Object, e As GridViewRowEventArgs) If e.Row.RowType = DataControlRowType.DataRow Then - Dim Modalidad = e.Row.DBCampo("Modalidad").ToString.ToEntero - Dim Liga = If(Modalidad = 1, "/OC/OC.aspx?OC", "/Compras/Compras.aspx?CveCompra") + Dim TipoCon As Integer = e.Row.DBCampo("TipoCon").ToString.ToEntero + Dim CveFlete As Integer = e.Row.DBCampo("CveFlete").ToEntero() + Dim Url As String = If(TipoCon = -1, String.Format("/Compras/Compras.aspx?CveCompra={0}", CveFlete), String.Format("/Inventarios/Fletes.aspx?CveFlete={0}", CveFlete)) + e.Row.FCHyperLink("HlkFolio").NavigateUrl = Url + e.Row.FCHyperLink("HlkFecha").NavigateUrl = Url + e.Row.FCHyperLink("HlkDescripcion").NavigateUrl = Url + 'Dim Modalidad = e.Row.DBCampo("Modalidad").ToString.ToEntero + 'Dim Liga = If(Modalidad = 1, "/OC/OC.aspx?OC", "/Compras/Compras.aspx?CveCompra") - e.Row.Cells(4).Text = $"{If(Modalidad = 1, "OC: ", "Compra: ")}{e.Row.DBCampo("FolioDocumento")}" - e.Row.Cells(5).Text = $"{e.Row.DBCampo("FechaDocumento").ToDate.ToShortDateString}" - e.Row.Cells(6).Text = $"{e.Row.DBCampo("DescripcionDocumento")}" - e.Row.Cells(7).Text = $"{e.Row.DBCampo("TotalDocumento")}" + 'e.Row.Cells(4).Text = $"{If(Modalidad = 1, "OC: ", "Compra: ")}{e.Row.DBCampo("FolioDocumento")}" + 'e.Row.Cells(5).Text = $"{e.Row.DBCampo("FechaDocumento").ToDate.ToShortDateString}" + 'e.Row.Cells(6).Text = $"{e.Row.DBCampo("DescripcionDocumento")}" + 'e.Row.Cells(7).Text = $"{e.Row.DBCampo("TotalDocumento")}" End If End Sub From d3b24d810b46644cd14ddc6502c2824fd06f71ac Mon Sep 17 00:00:00 2001 From: Rakcsle Supertramp Date: Tue, 29 Sep 2020 20:06:47 -0700 Subject: [PATCH 14/40] Cargar Tipos de comrpa segun tipo de documento --- Compras/Compras.aspx.vb | 41 +++++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index f5e9f3ecb..963b4f3a6 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -1743,8 +1743,26 @@ Partial Class Compras_Compras Select Case TipoComprobante Case "ingreso" : DdlTipoComprobante.SelectedValue = "Fac" : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("NC")) : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("DEV")) Case "egreso" : DdlTipoComprobante.SelectedValue = "NC" : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Fac")) : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Ant")) : ChkAplicaNotaCredito.Enabled = False - Case "I" : DdlTipoComprobante.SelectedValue = "Fac" : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("NC")) : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("DEV")) - Case "E" : DdlTipoComprobante.SelectedValue = "NC" : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Fac")) : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Ant")) : ChkAplicaNotaCredito.Enabled = False + Case "I" + DdlTipoComprobante.SelectedValue = "Fac" + DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("NC")) + DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("DEV")) + DdlTipoCompra.Items.Remove(DdlTipoCompra.Items.FindByValue("6")) + DdlTipoCompra.Items.Remove(DdlTipoCompra.Items.FindByValue("11")) + Case "E" + DdlTipoComprobante.SelectedValue = "NC" + DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Fac")) + DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Ant")) + ChkAplicaNotaCredito.Enabled = False + + + + DdlTipoCompra.Items.Clear() + DdlTipoCompra.Items.Add(New ListItem("Seleccione", "-1")) + DdlTipoCompra.Items.Add(New ListItem("NC Con Productos", "6")) + DdlTipoCompra.Items.Add(New ListItem("NC Por Devolución", "11")) + + End Select 'DIV ALIAS @@ -10144,7 +10162,7 @@ Partial Class Compras_Compras ' ErrorPrepoliza = True ' End If Case 6 - Dim CveProveedorConcepto As Integer = 0, CveAcreedor As Integer = 0, CveIE As Integer = 0, CveColectiva As Integer = 0, CveCreditoDetalle As Integer = 0 + Dim CveProveedorConcepto As Integer = 0, CveIE As Integer = 0, CveCreditoDetalle As Integer = 0 Dim ConceptoPersonal As String = "", Concepto As String = "" If Not ObjConta.GetPrePolizasDetalle(CvePrePoliza) Then @@ -10152,9 +10170,7 @@ Partial Class Compras_Compras Else If ObjConta.DtResultados.FiltraParametros("CveConceptoContable IN (6,68,49,205,176)").Rows.Count > 0 Then CveProveedorConcepto = ObjConta.DtResultados.FiltraParametros("CveConceptoContable = 6 OR CveConceptoContable = 68 OR CveConceptoContable = 49 OR CveConceptoContable = 205 OR CveConceptoContable = 176").Rows(0)("CveProveedor").ToString.ToEntero - CveAcreedor = ObjConta.DtResultados.FiltraParametros("CveConceptoContable = 6 OR CveConceptoContable = 68 OR CveConceptoContable = 49 OR CveConceptoContable = 205 OR CveConceptoContable = 176").Rows(0)("CveAcreedor").ToString.ToEntero CveIE = ObjConta.DtResultados.FiltraParametros("CveConceptoContable = 6 OR CveConceptoContable = 68 OR CveConceptoContable = 49 OR CveConceptoContable = 205 OR CveConceptoContable = 176").Rows(0)("CveIE").ToString.ToEntero - CveColectiva = ObjConta.DtResultados.FiltraParametros("CveConceptoContable = 6 OR CveConceptoContable = 68 OR CveConceptoContable = 49 OR CveConceptoContable = 205 OR CveConceptoContable = 176").Rows(0)("CveColectiva").ToString.ToEntero CveCreditoDetalle = ObjConta.DtResultados.FiltraParametros("CveConceptoContable = 6 OR CveConceptoContable = 68 OR CveConceptoContable = 49 OR CveConceptoContable = 205 OR CveConceptoContable = 176").Rows(0)("CveCreditoDetalle").ToString.ToEntero Concepto = ObjConta.DtResultados.FiltraParametros("CveConceptoContable = 6 OR CveConceptoContable = 68 OR CveConceptoContable = 49 OR CveConceptoContable = 205 OR CveConceptoContable = 176").Rows(0)("Concepto").ToString End If @@ -10195,7 +10211,7 @@ Partial Class Compras_Compras End If If importeMovimiento <> 0 Then - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Row2("CodAF").ToString, 49, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveActivoFijo:=Row2("CveActivoFijo").ToString.ToEntero, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CvePersonal:=CvePersonal, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Row2("CodAF").ToString, 49, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveActivoFijo:=Row2("CveActivoFijo").ToString.ToEntero, CveIE:=CveIE, CvePersonal:=CvePersonal, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta) Then ErrorPrepoliza = True End If End If @@ -10242,7 +10258,7 @@ Partial Class Compras_Compras CveCuenta = 0 End If - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, 68, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CvePersonal:=CvePersonal, CveMovimientoAlmacen:=CveMovimientoInventario, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, 68, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveIE:=CveIE, CvePersonal:=CvePersonal, CveMovimientoAlmacen:=CveMovimientoInventario, CveCreditoDetalle:=CveCreditoDetalle, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, Contabilizable:=SeContabiliza) Then ErrorPrepoliza = True End If @@ -10358,7 +10374,7 @@ Partial Class Compras_Compras 'AGREGA MOVIMIENTO If importeMovimiento <> 0 Then Concepto = $"{NombreProveedor} {TxtSerie.Text} - {TxtFolio.Text}" - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, 6, Concepto, FechaMovimiento, IdCtaContable, IdSegmentoNegocio, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveAcreedor:=CveAcreedor, CveIE:=CveIE, CveColectiva:=CveColectiva, CveCreditoDetalle:=CveCreditoDetalle, CveClasificacion:=Row2("CveClasificacion").ToString.ToEntero, CveSubProyecto:=Row2("CveSubProyecto").ToString.ToEntero, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, CveTipoGasto:=Row2("CveTipoGasto").ToString.ToEntero) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, 6, Concepto, FechaMovimiento, IdCtaContable, IdSegmentoNegocio, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveIE:=CveIE, CveCreditoDetalle:=CveCreditoDetalle, CveClasificacion:=Row2("CveClasificacion").ToString.ToEntero, CveSubProyecto:=Row2("CveSubProyecto").ToString.ToEntero, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, CveTipoGasto:=Row2("CveTipoGasto").ToString.ToEntero) Then ErrorPrepoliza = True End If End If @@ -10476,6 +10492,10 @@ Partial Class Compras_Compras _TipoComprobante = ValorXML(nodo, "tipoDeComprobante") TipoCambio = ValorXML(nodo, "TipoCambio", "1").ToDouble + + + + If Version = "3.3" Then Dim drm As DataRow = GlobalDTVtaMetodoPago.FiltroPrimero(String.Format("ClaveMetodoPagoSAT = '{0}'", ValorXML(nodo, "MetodoPago"))) If drm IsNot Nothing Then @@ -16333,7 +16353,10 @@ Partial Class Compras_Compras End Sub Protected Sub DdlTipoComprobante_SelectedIndexChanged(sender As Object, e As EventArgs) + + If DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV", "Ant") Then + If DdlTipoComprobante.SelectedValue = "NC" Then DivReembolso.Visible = False RBLPago.Items(2).Enabled = False @@ -16359,7 +16382,9 @@ Partial Class Compras_Compras End If + UPCondicionesPago.Update() + End Sub From f47f62b344bfc6f6a9d17cf3c865451ad52f74a8 Mon Sep 17 00:00:00 2001 From: rrene Date: Tue, 29 Sep 2020 21:12:13 -0700 Subject: [PATCH 15/40] -- cambios en liberria, con cmabios del PAC, con vigor apartir del 2 de oct2020 --- Bin/GoCfdi.dll | Bin 339968 -> 342528 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Bin/GoCfdi.dll b/Bin/GoCfdi.dll index 11a4ee92f3be0f5b665e8f247e5e2dd9ca0de6b6..2aedb7722af3fa84a3ebd80e83cd7f16d38b8aa6 100644 GIT binary patch delta 68464 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 DB!%92 delta 65578 zcmdSC2Y6If*EYP*naN~kGD&7K={=-PDgiQx2_BBg-O`+tyS#jw$$vjfu1=v)3dg zeXrodl44QYy{j@yz7L8fd-vm(b0sWS7-j$e7*Z!Nq%s=-z{C zdZejP#CxYtgSt)WuPdcljG2p@sHS>xld0Ba>jdK_hbZ9W@D-Vbm5D%1lxU*S_0L?r zq_{zWJe|OgW^SsXN)T?LO8;!8ONbj3X|5B*4G1lCLW?#3WL>VLL=4jfI;b@QJyj= zRT||ZgOaCF94mA^!m=BRsNN@v@}yNl1A=KU6WkAr+DW>oD?l$O&QmgZ@8W!1rxY(j zJeFOSz*9=5)EgOcrx61OO(jdu7BGsh&H2!^AA|xZq zo0f!W)B_R-nqJ38vX1HHvW`|LzoWcM{(t2TFK^n{u*bvKHEkwrO1D{DmQu1PojWU% zpwUxN+A7Q|={5$MQ8ddv70oW%T>C4=_a>di?g|t83Il+XF&EP!7f6@?x}F)$ zE?&=;X5-;OVe>L;CTfd{EN#kjUdSJ+Ce{;XCH@QR{69(2%Fq=3uzAb;K&13k5|o>s z*ON=crCE!Li^gSIi)&k^!?F@3$sOT}D7_W-{dcYDtgJ!%4Xn(lq@1Gik*>(noB!M5 z%PVV=XcY6jfPvq;3H^$xzB8-Xi5u=Xhy!T zDw*?^P5;YO{HkRK82{4zbc^`~QDu*+QrQavRq7e`9V7xqpn9MA1<}*iS5Yt6SCtnj zA`a@_@+_X*>f`^ud$-9=<%NCR{M%d`?_X_`HaV%rdeT|U+!Yb*H$Jd;M&u{L(G31< zb-FbJyu`m12VXcgS;^pER+qJkC&PYzluh>SSdCdp2DDC4XT1a}$0daNCN|oETKzasjOychK!?^2()-8x!qSY$S(xP2x(vRsZ9y`HhLzZu>UmKtU^Gwt zi`vHfeH*C4;Fb{W^Jh49<6~%_wXcN9t_LC1xOYJ@hv@qfl!y?D^;I@GMhangi!s-y zz(CEY0{&n-k6QaGf2&>5uQHnQdyX3tH?45!`*vmv525M`0*po`b>4IOjTwd?qajyZ(~NFp+%RZkJg8bV^+ zQ`1CA=Dl%k&Tp(~l2G#ogd8D4Bj4aFYjV`-Z}46CnEM9*wkA(~>J9GdRHE*EgLmkZ z9Dj~V#c8E{ac_zMP3Y9MYzz8nwAn)+ZgYgM5*+VV0yItZVlK1IvyGrN&g$9Dk910R z?jRUxjf?c`#GS8_TRW%wcM;JXXZGyIO`J)5jBwlHOfH+}ZIE1M&mIzSxE!Sxmn|un z7mZ?jWik2~;kLW%81~%JuISQ1OjD+*{@d)1amAFj5r(}(8e?6trFs0x&S}cq{H@M~ z8T&xgYm0Nmp*A~egH0~GXCF6pDI8_^vmc_K1EeI%WlKb7higpTaPp4FF)K zcFS}R-5BQAjE%f^w@US~jZ|~q8(?2h^DI#_`VSUt5$s8tb)x5nXhsmrK0r||h$FNh z-uYHoW$QptO=_K3h}+&HguY0Ve=5Jcr-e`KuFc=D7CH-mhlHl{HcjWTO<_7Mn;Bm{ zGr{fL96loFE$We^w%H8Fl6Xar3fbh){7+$O@=!=?K|(I-oxg62XqydNMB99}MYK)C zR?#*YTPZ?nr>(qG&+fsxJlAhEbUhl-wPRbDp>}?-XR_L4JKxkVQSH3_0;QRJNH34f zA&Pit+agmbhbC<2YkQTey>|#ZZ`wh2^3vY%mSsCcc695lZAl1+YFM`;JUiwG+7L|2 zj(1QhBN?m#eKvRg3mR(_l;$0zDla=T>PxUR4%@(_plB>8D z#kAzYRznQ_--c_-+D!?I`6`)L_A3o3-VrRV__bQ`^tZzd84H43*QvL@E!utN+i3Sh zKDN7+|JJX#so}X8&dUn5&Ptw3N`giqAG}+6|NiOf6L0fL{Y&Dn-xF3@;~vow;$H(J zbZPS89=%eFSU6U4S9yjtMP`0p z`Hmqrop1N&$Iaen5PEA%v2O=>s^n5^ygvA}-47{o&Yx{7-e1wvZ=GZ1`#5_J<&MDM|3Rd>aKFzUrub(bFuAJT6J1)<~aL9Oj%vs_Z~ z;e$HGKMauY|e!#y3FZDy7G^A;}tsfc+e;1Jxxo}~m5SOqXb=7|U!Kkd{TR$=sJQh$; zx1UFk&XAc3!Dge2EK)HaJ31lnmXE`t*ceXu>SNyZvW^+1!&r)hX3@HpNah$UrNrp1 zW*z3QUsjdSkpx4RLsuQm**!Jb=om3Bl%!Jd~vWi?=&nSe)$pIJ3Sq?9N`m&b(UMXc*;3#kxUcW;|N+2 zKbfCmrA>s%cj5^31gHI|VbD;}&HSx#8II!tVi6xWJU8X3V}{f@vcvNq+H%lNDvYV#E9DXmm#HP_pFfYzVlP=8d8w7S*}KW&L@p*qaOa8 zKRdFiy7dcw7{uvca{H)qb;MV^&8Vho#VLNnsHW|HKV>L<2T|0TmFf*02QF;r)nA8a zH=XSoc@fBN2!>{N)vm9@Lhbk_jBqOmp^2476ji3qF&HVOMeWbif($rsm{og{QhaFJo_$3mxP~;{;7qIdTeMa zU9_jRLP2d7Y8=;99rhDHHm)i@`)9+~M-jZhWOV*#-s#Fx_0?av_sTN$`d|6uSC*^l zZ+zdCZPX3Far;$m)CIruZdWxezVoc1qD`QGQFXF|>N!;T2VZ(smVfLYhWL-DPwS3C zTx3p^E2`AUoZNGIEcMJ8W>7TuFV+#mLlo2}GqhrNLr++zGZ3 zuTG191yrqy#b#+FNQc4{0HUlN&Z^mPZHN}}s%v_V z{UAU%M1y)vaA|6=&dkUEfn5mQ)Z0lVHuD(Y4&s)!_Oyr3WNJ2!2AHR%nBRQYFhw_X zCO>{nt81Gn2BE#EBr?cEm&;Y!gZXMyWwIOFeBpLXWU%*IRc@F2f~wY|lopfER9=5= z567b>gR+1hytYkhFS9}DLH!_T8qU8iXFzcOJ_*r~^ws5LgKMp#{ zU%xIp!Dmsz#yqSe`GNYBm{eCPJx3E6c)x|8pOVI#Uhhy}ws6;->3jrkKd|tQ6Vqcd zTp32HvPi!0dXHKe$=}3Bw@Cii!|5^Eu53f#@<<*#p-{a&l2=bC&w40Q!Q>GYI(a+; zqBcm}HDO@l+ki4~C0+Cm*v-lZPD$qX7e={pR%STh8*8PaJnx3VMYrNsi}$r+L=cWl zv4zELp^ZOrL!P?C#`o8!kV5rMoA9;&%?|ZroAC9;I~?lQHu&mM&hz`P&*)8$BlOPc zwkzS2Wg(G57m+QAWD9AVjzqHaan$cD`y-wmQ_o_f2YJx!oa3#@wiF2EnblF;jia!N=ZMVtGSy7v4DZ|5xGoK$<;r z^3|$2ns1(5Q}S!H9*64TqG!l;HTfqWbL!*!2M%63C09KXgZ!8k?DU=go&)Encqj)7 zeZ|!NgYkj3_u~WY{yaX;+xUmRqK=}mLz_`Fwmqa}MPo;WkVIoU(AaLixW_Z=<3vcWYyCGa~KHNP) z6KpwIrJ8*E4S+q?7jA_=JT$%iuSAqn*T6s#nz0?$(mt4GcElSh%)ZkGh&KD22|V+b zjGD>>Lj!G7^@&f+K=fFm-~Xhf?v^Y^kdlY_Q@6Bow@Ng$UPfAJ<8v}wJ8ce&?Y_MZQ_XbE5XxTA-pz)e|THA+n*X1gvL~)lo*iR zFM+4;-F;9++1Tm!+TyoB*Ro-Dpmq`nt^Jxb{^IQ!1#{AL@sb*CTDvMetX6pZ;>-j- zsoENM4aBu%r6+VIwn02AU9L56__NZGP4b=LdUu21`<HeIRuh+%Y}vogPbhGX=3 z%VC z+4A_k{!;Zs9)Hu{RJ}W&pY}H`&MPpa^Ma!VsyIs2XD|eJ(i{XgATA%zi{1j}^qJZ2 z8HHiN-B^gcO)NMKdK~jPJy3dUxL+PnRsFon-i=UBE;g8t2&R}Ez5+F5e9J8fUvid} z@F{mBI=g@oYYH^WA|JZr9S+O2pvx)5;>Rrv`{a(Y*hg?HLx&k+X$eo7m2u5VqR9bf zjFyj7LWp6CNW=0U@9P=M|0_!k@p5fQu$6^b+ZzP^P{8K}K=q4f^-}LE<6q7yQQMVs z_v{WSC(CtB)qhbcXq9`*_=MT%$rGCzTs*%7Qv@chfUhhcF@Zz zkoTSl3Ret&sW8FvEJRTIh&y{b-odSwd%yEDvvSm#&G zz*R}vXOR!f(k*>a0~~w$t}tBQHQq!8kow=#aBGf+6fy;1nF=IO~_2IOZ3ynnWW zUokgLo+ZQYhPmZ=+gs|cX>AhH+O{fT)_Ze%swGuC^X?M$a24-;cZZaQR)#%ve4vNd zRzC=G zc8$NVT{pCa$tC}L4I96(EkzI`qkP@yH2PjPR(z=z+|XJ`xz`;I`R16 z-jr6uK?oVM=mi;l6p%GfhKRl@k(7DudBK8arp4_Q{&-oE`f__db%DpU5%6Tk_!xQ> zQQtFu)ShozkfWY$&p*RQVh3)yFGsEDz>Dt7F%9UT@X0mtG2#eH%gV_exc9!Cn7JJ= z5=2W+V`BK3yaaV|2mZ=^IeE_!CsvDrj~oq1@(S2uMGi^Qef00b zDy%N6p<+Z0|9)XsG&Qpk7oNJP+$zQqa=QUXW_4ttoIGyQY^&_VXDk{WJ+xDB!LJsT zrHX_Ip1RgrwQ4DF1w`Y`&6bM?+VTweRxs(y&VP zhmRx}YQ{%UgN980i8ykFatuMzESc7ck9{Dk&CDOQ-mWpZ-7ki~(W@YUz-XhBc!>zRIQ_X8oE7g11#j%`Z_K$a zcw@J{rygJ}bmu|v<@W-0Q}|#tDV%!o;jUM2bOPgzlZk}%C0v^YK%ukjDp10XmtQAR zsMMC;II>HRp?8|}@##Qs9N(q$?;m!kr+VWE&y&IWpj_y|hZQ6|_@Ozx(<7}5;sHZ) zc{mjbJq5wjsV5%EwOm7-XzqF}o*#WAIzhn;(~SMBL^Cxj4$VQEtvIeM&gdWXBsuUR z_5a07&65`A=1oK8S~A`q7!1Q+!QWp|;itE%F)yJnq#_T*5co)6!^b4~*0sji6JSWm z$bM+*X1H9~)OF$1i$4{OAKO2$@RUkt^yiN}TADuxj0++i+NKEfH;?8-h(KfM=x&XD zy8|zH%h6A0^KPab6z|@uEFTSkZ(_KZZ!eVFE#mw;!Ccnl;cm#gOodB)z7yf3D||nNllu59mxUENW6RALRo*2`^8JDJAgLhmjg3@YM&sx6#Y&a+1-%$PjpW zU7v_Tze2zm&w3)Kdp~%hX`PE(@t8>Kf4_xWB^G76wy>`m-1Wr8zh?0E6FubD4}^ur zvX193>+B@&q9W~<*382G~MtinL&bWe#Jpbb(Rf0A3b!C#4m_w7esoT zAc-f5_^Xv9>9AfBj}q~OAksN}Q1Ly2_=bb$taSV7I6J7oGQl&Bb=!#g<_jVnwFcF9 ziy+desU!+>uM|Y_>VfdVW`+@c1yQ_xAczq}tQN%8etK*!s3}Cv6;$!MyCAkEVvHb) zH{J!YB@zFKBzNgeby>U_5kD71V+q}+jEMUM(O5;d5yjsS#G#$A7L?`Nljur86-$;p zYJ!18yk8J$H6bOZ5V1}W&tAr-JmvP657l}15^td3iMOtVmSse2Cy3(oQ4lv1u}~1j zp`ajcAYz;#(g~leZ#xms<4b}TUpJ$ocZhgO5J&qB>TaUGC#Z7`;z1&A6hz}0a+{Bd z_^cq(6Ixl*`$T*|5T7xMA0?t+5MMTkUl4JEAnqG##PBQS3a0 zWC9Ui5X3Wv6B$H&SP&OphP|LH--M{M1l4#=vP}yj-YAI1o04rZi8w+K#mkwZCL0m) zRZSS0IBd-`&m>zSR$#H#8Y|9t2ey$B)%YeRE#3GR|7oXoqnGRxnq&5%?V+0{^$CgI zBY*`{+v93yIEEmy_b7?5W2Np0%$CiE@d+>Hs7Dlj?~5tXLfqmV0Ewx`_?j21lcv+! zLG`pIE5;AQWDh*qbDXQIJNdVO=&8nql{i$%5J(fBuo}npTcL{Pno^&k=4M@ucM6zN zfnLQ2|H9ia9Mzx1MJwm0n)QMykKw(KYepDM;^Ev_*iD;fX$U=|2pF<+q~^~>49OUE zX`V3Tw^2AEyhuS|$mG!>JU(yrnqIOgPQc};sV8xDFwb^;optJ`6d{`ZKckz7NLPgS zbKJ2=6DH^{=+5H(l2}+1EVw>p#J#imT`!GH-#SK_?1~C}H&)Iy>=>lK;^$v#9!+|M zPP@f>inn{YlNx(D_rIKw^))d>L$PCJc+w%ha;v{7(E4(|=H)(db(hlu+$UD&4Y>Dg z<*qe}ar7Dl$k!}Gutg$l<>Lb6XCZhI^7f09Pll3{HQhf4$Y?`f-R1oFnwDz96+Cfm zmS@xzFhy?kXbCix7GHLgrwATJSt89|EKw{7z(GD{ZLV^VH>{11Mz&i#H9CE{pzm1Q zqUEDdC5#nq=p*Qv3_ad&a6$LTjbdt&7L`a5X5Y#yc=;>6BU90d)VfqY^Oa1s$5{Tv zD;3$Z$D%PJ!W-ilUIQj!&)59SD+4k`_t^wV&v8`YR7^?t&cnJYKQU|667RSC@>iSX zXm~m>M51kpi+$TrAYdoYndrW(^^+LanQg)Kp3{)RH!v(V7yW;+Z!d&r90E}|wOl73 z2qpUt0YkU99V8Ql5#H~3@@pB&ku_DXEmKB*1il=?zD6ro)Az$&R$tsWol5JlYNw=D z8q|D@M%CvqkV1B(LCqxU=aM>O9B;NR-haQrOeE&(lKGTDZAR4PlDgiY4kPM(Nj+y! z2N3mUNo{_mZs2&Lj+NAj2K82=_A+Dd3Jd2Oewlx>{22FsM6;y4WNwe83?8N#xm5c-K{Y z;T!Rl-y6(g(5r__X8d^F77tN7ROFFYNzdxi<2;hK5fjh*9|b0*@q8Jl130w6C%wuCtnbWhHdyji&ls5IMGIJHD4)$o zZ7WPwU~&{YR^-Mb^pMH@1b=K>YKa?cLw^DRp+C}_g!}lvO`^eLVyqzWliLd2-Ke@m zdty|g!$;GX+1HDwZBJDO@T%>7TMxO0DAXZ?w!F|$Qe^Ti0MFuWKto5FERmKGUOYvj ziO&L;f8y)6C%d}~-O!vEZRq}L`}mxTY8BI<+ftGN&3xhxkJ3YA^|L!}P`2}goh3?7 z-f3q~)1qq>p1mu+T`MCktFiWyi-oA*6BF0{@>@w1T9V@2P_oeddcGV0*Zn@A?umN9%irCb#Xb!D+p;uAc=)KG#dR{cM z>HW)Q^@)6&+nn%dLN&+TeG>T;A!)Y>DR(vAp5%Z(-=S`H(lQ~5HReZtj6lDf~W_NM328bZv#rr!>6@B+k5VT~+5flg{p;Zesi<{o= z*||5lJe4Z6i~6Ey$dI+6vKVtrM2saS5^o1yK_cu}VfaGxFTUXIl$apZr1_P%J0|oY z&7xiGs>vIRaNwJ-+_tAiIl_DGX|D9;^?OSFrPpB;sKv$mGo@Eak|jx$@d?HZgQ0px zK|`EHo`Ab79*lhQjd_Q7SIO=f4L;86eg)m)J3qe!5{_t>jkSVB)GBXo&RwN%Wuj&wG0|lefTh-tV$`|H3V^x*Xm?xG7*I#YpWTDCDyFuEU3? zDc|=_3ZL^%TV*-l@=iacA9w95u%u3aVOx3oeHneXB8buY$UAU3wg=)TWr*z7Q_pu~ z3FzXdX^1W+Kk8X>lP2~Q+E%0EfgHYTU$U~5pWIjE-w$E2RHc2SxXE&5Rd~;n`PMA^ zy|SD7`oNmy`AIIz^894q`vRo6BA4f<`i={bW?P=0?)zHYXSmGE^D})v3y@`VS(khM zCUrIy->Ke<`l3oQ^s&>5lT+&I=lR0@NlJfsp5`Bqp+&P>1_6Z~*47mu8#_`Fg;@xN z=YKUgFviWh9BBFfd2oV4qDN$c!gCHLT{D1sEK8aC529e7iswxBsOI4F} z+@NGlu5Us2o=@N`BH>0tI#3PTf_|x|9UrSEDR?HYCh*=&&Ps;P^%0hHhvq7azKr*Z$}0s*0-mR`1%g=qoe%j zL?3lj4;l@p_xRC|`1%??^-!5IgfBakSoJL;CpBc5?_0_@L|Gb~-5A^^( zR->1&cuaYoZ(xQ_AcYq4}is07((OK;CLSp$1iBb7o=(;U(5M)IEuYu){|@%JbPK>*2||R#+PE zsHTvZ0?~j^$t2o4AX=}9mf&@a8s7L(MaCmwy5s?tc>Je%V;6bMKmTZE3(*GB-s-9F zK&|U!SVEmG$dapt`s%*?zQ_!RY`fjC32m_Hro}KJ#PEO>p3;brVW{N>tIuD8CcE3t_JtkA#QK7)pz*iKqKU+|J6 z1+BY~xL);r!DZ>URyt7GFHttyMrG-%S00?3z?iT2yd%wXhKsHumPc5}2JCQJe9{hn z^hk!A=puoJNlCHBQH4Sjf(+o z#P!~J6thUxMP5IBY)n|)0Y6Z;^h4B5^pLvmqq@6BMq+ow*eJg2cxq=^|3`uPqcoG= z*GW-W@kuERg3?NdMvBgYG(Ug*Ram?B#6!xDYkHsTrzHM}pwR}W*i~E_kM#NwcGS1y zFMhhK`6;kyRY{{=Q&-bc?6Q1?Q}vFQ-9=<5s)={UA8VqzsHL9$>_MrE6!)*aL*z=Zu($WY>KAF<2G6@b<8o?tRW%WGEV}i?nqA} zeOO(Qwyb1t67IdpxQKmRinuYOBd03NZ%>+v0~kEgDQU)JAta|QGq?;kn0gr-l`)D~ zOo^ri*LxpB6JlANPI@igC4^jN`J4g$#%;&`76;(ITM&%krwn5Bu&UXeW#5hYq9CmC z1KkmgFS{c(ejL$58h<5s9PQS`%*J6L8uM@2clwKK(2|3{G|?}94*M$ChT}SW!h|I6 z5kBjy!HMh0!e|e6fwV|}N7(E6nV41ZV?h&Hs@TuD-3pAh)+>+EFGfEiq`&t-O{ zNRiBMlA)v3H=0O9KqSJICPlnLWUelPUv<)~c3E5*Qe=}5`B)c;42VR!vZRRX+X_F; zH*qnR`uT7TJ49-Em+v}c{y-^& zu13QJjmZ(HxFk=d*hhN4<4eEmS~`||75&>TdNmH5WG}|?i0F_EXNp>X9ZGVP+f17_CX&1weJh-L6H4uqfbRb7m zDP(oWU^5j%I~+6n4_f|8-uled7$26NsR|k&j-5$VuHwI*xxzYLreGN#{bRnL%<(Ly zT()F6#~_Qa_cziJ#I^SvS;2+a1+|?G*~B zo*me3dGYMV;=zFoh9T91(<7Xr(Z&;RL(_xAbApjr-@& zs&$<~7As1u4NUcff@Co6LdMgq@r+eT_BVq8qMFipwT{%4Ij~BgdSN>b*HJs(21xWY zmxh`=Erb_FjbhiPdMZH`HFl##h7iUp)ud0io?a zFG7|nWwC}fTO&PDjR$N>JO@{n(YZYO_q3$RBGG)^k^4#aB2suxZCdWB<{f`e@?(I( zserq}!fLd>fVAxbr5G5Ia#&=ke_Jr}Sf;i{L)8-pvqh*XS-|XR0|}`Mna-w&T1A%0 zBZ3ypG;JVi$FDU|>fxZKt>S0)NP1|6D}FNs*ABQ&orC(kv&b^prz|WF3VqUzQDJVN zfZdX~cp7!zs1g=gOdExG8nG{QtTxQCM0zwOJtG!83)QaH5&06HQR-jd84-nN7jo=ugW-Na9vO-w_Vmkv#&Sdl|jaL61H?@8gVKk(DnzdPeF>u6?om1a}X zgfz8|AQrB&C7_uaRx}2G>G$|STJ#6}tBs4u#`}V76v5YW=+3a&FHE5jiU+_SMf#spfR5Oh(U5-J*DOQV6L1?O~mR*^9RpT$seJV zLXwuE))6fR$E*mAI9$}TWZ=2@E?So0DDhwHUqSXS3$`Drr$>JS?{vOg^;9qVrNBFO2bIH!cQQ^rdt$9T$vz4z`dZa5%JOy#&70XyiW&PNL}qF znI9h`!YP3WCz<(~vz9>D!y$qkOZ2W+Cc575e>&r^ve3-$CC&d>>v{w)-t`9lWds$+ ziT`5qYBKqSV3UJ_`a>Y7N;7UhpC5d^M@trP{>>mLLy!|gs+l4 zYl7_w>SD@G|6LbrDZAL;&crIi-agXafC_XmqFuU+(L8s7^+de1_3O#{b<%n~1v7a% z%50b4jYmtcn<*JgIBlAt9BS<7P!h9i#8~0QDW*LeA!W@IEnckO?LIfWP4jeV9GIdM zcOH&<1Is!>VsRC6LO&uzhER~qEsc{DCB@xD_0&q6^mU`!xKL4Y(^Q%DIGhNohfpzV z{7^yIl*YcQl8cWi^r1FBs4Croj;hKUpoJzvuYGJ%epdhwMkpy|gH#$RJYA_i1f%|T zp^X;7Sc|Y*MTMSj#8vBVZ@j{yB>D|mY`9RfE_+*uEb+A2SA-G?gL>BJR;##X{Mq~d-B~j_x_`OBRuxdoVAZ8f~W?oc5 zV~6~MG(urO99%66F5SZ7tTI)>~` z-lo0DCdz8;P2R$%=KwDH-eiklB-YPCRpOV}lj`R*o{WL-!P^WfLE8+H659+S{4Z=X zNT0}Zxy?ZHVw-Unh{4;8CI}A}+IKZBv?*yB;WA>y8!Cb%fSS1>YNq8$EprJuTjVDO^2Tzc?2jk>&F<6o%84YYE+shbxfLnv70wMQIEYsDWvay=l#^ij_*no=K7h=;CDiF47e{@}lq zC0=k@`4qWZ55y#bQa$u6Vh{Cq@lqK2`>zP1Ck_<7zn`V3;u-B?=+yfA;tTsbm7xAk zQlh^T;eVmOlRgnh+21jMqN6?vVsL-=$e#LWgVbSjB*PaRB8 zqmw5ZO1hvcrUx%1=f8;A4DYQ(%!iSEZB8pWEb1jLewJ0oPNe4 zKE@L7F`;E>(<>LuT1sF_ehA?R9*g{D2+F~TSpVmiNR=^>ms)XCGhWcoi75NI|6==g zydZAzV(}6fw2I&X1{8|a7(~iAeh^r9}&g`PLQ02U&KL-Lbb~RdJ~0hTppK>^~IPM zbc96IOM8Z8t;Jgw@a%#q=f7X>8xze^)EJm(2#K*TWYzyfhzy}1nY$YAO;A!Um}iy? zDSe*7REhxV^9=DYSI}T_(Rt>{kg}Nkg31yPWvOcgm%Y+h%dQA1EL%>mn0SecMb-uv zHp;FHDI03^%EtYP;mg)tXbVpzH3+7$76dxrqEBO0f{|GNG_-2d*wYtIV^o5sF_IF~ z7!m##rZLhdnn_M$^AJU~?imn`Y0PDx)?CgCM8 z_flAIYV4n^B>CHt-{GgPPoaw7p}rl28?=U0XdJ~w5i=J-%$T_T<)y7m!FX%!(lzzsL?0{G%dpb$^HyX!e zKwi*=d?@{ZA&(~&wCa1a@g0&EbRi!~ugOrf=P6iakolS3UTCU4jj4JaO5TF$Q8OHg#X2n zH!kJ~5ijk?8ggWHup<}JN0I z+YLvEgY>%RW`6MRGISxrmwp)ZrqC0XTtvLIAM3~u{CaaBxq|$7I>e8Be(diY-I4l> zI5O8FM;Rtcy$kVzbgfHy~O*R({c|^RlBX5x->jRElus92xr6o1?awt*%XNPGU zPIpO-SkMw?;8S>syU&jr)s~#K1xR_J5Jx9wxgZ zL>Bwwp#9H|#^WAw=syD=v7x-3f)}WBSBRca`*wxZx%*#acMI9TGljP=D%&`qNF4d! z2)|=PE8Ei;RjlN+e1triu@|M~!l4QC?Ln3v=#FX2(;Yi;Zx39i_QWMBawf?^x^Y~w z;`ZZE4n^MqNi<{=rp_dQU4}_K>Jf`>&laSRPq_uZF+fajFWTJGtM7F1q_8M-+DC<+ zeYzg;_$Lu`xoGzlqO7+!iUl6uh=a_=wk3)qYD9qBSYD!}L_Hl&_&SW>&$#shg-ujX zAJo8#hfduKdp-CJkp6 z>JEXFUuG&Ov3UBC@pxsdp2Ujpz>b4%RPokd($xOo)|0eWCt3(+XXQ|i!zY(oT9mzg zNqPgmtXmR~@nAq>>vE-wKkpXCa%V7hKR#=R;C}El-}N_MI~Aqap*@TZxm97gmknl~ zT9s^Mx!o`8S&PqV-~kx(ayw7-(vVF5R5a$WrLX4NsJYK6Ef|^?UNdY^*Z}RDW_|_bzo@>ivTx< zeb=d5sfC?tf6rhGn_qbCKvdS^p22pO*%pCQNA}xbGI`4zaUO24wZOv-#Os{Vi-J=yo<2_jdMH z3!=Q#greoiNyl|4qGe&z%U>vqVH4Vuq2_Wo?o9*TsBujDS^kI^_E>s1d?}_~hnor$ zS!p_5XE%@Skjj>Jp65wqZ*_|8U}2-n$e{PT)AjoZy8a@rF($en(u#bI$z9sX!p7yL zceS&X`R7YAnIo@d*GzV*^ki=|V)6LGO!iOS$=;dla1*+A%|71(KRdWFlfbN=Cwtr3 zo+7gJmE6yp$FREm&zonm+V&@V$FN88$o3CF$GfFD6s=|b=^9Z?P1dsK`H~oRE##Z9 zYci%-@jYwdcdrg};eBnZ{mt#HW6t>!JDZYA*Q>JM0HrVwS3j%s5a>yO{gC?xD%hVv zsxQl=1Q{!urkj~413h$Inn?|G-2l4ZDWY=7LzI68i)%Jz&x91D zAdW33(E7UH6NQ z^a<#h>;sWLS)$eNc2E+%D=1}^q-X?k+rsV?%~U5UST)$u!p?3)8(Y}K%oW{e3^_r= z3dR}wpOZCh`LM00xMzOAP3;J}F?tendeOtS3dPMT1*)?UuM*$SBHk;kq^eBm%zj}? zwv#;`RZ?}CGMu$m2<=HLsp^UEbJhs-LMfqf_!=Pb&Xf=u&xQzec>&#`!L+lr!bGP5T&fJqNWo{K*c3X#a=5fk$ma0-nr}tQAo&=OBc-?D= z_aw^}yn(%l_aw^`yt5sNw}KT2o>lNxuwua*FL*0iso+iMN#$0u3V|L?^G93Cl&4s8 zmD1$L>}X3*_AKit3Yt1bTgEBRvsxi~u1BO9;b~im)Tc)gHy+pY)B`0fpvJI?3 zp!NL-ZDMnUmNz?|tR1IpV+%#OgFR2yP6EO!KX7+Qr;~m#x3fmU?ADu@+u5Un`9=pS zxPvVbyw`dVZwFf@P3uIwo$N`$`?DAEcCx1hFS~|#yV$dWS0;G7*b9O;O_bZsUKG5m zP@jL2vYV|D%p76q+w2v=Oc0j7&DIHCnJBo2y(xH2grR#F_A_Xv`?`MBwI|!lHmeL@ z!yeY-tFHGd``8X4xxQ#v-=1tg+b2+ueuNIP_e8lVMOSq1>1Xe;j|B7kzJNdK#?Bb}}}Ho7Kf&~>l4f4!LQv#fOeeQ+vD zJ(!b)>x9lk>DA4F`zI}QKf9W)E^%!+knUr;QZ3{A)Ah49bggfje5 ziLRH4>)}MYZzJxX6ZbwLvs+Mnf|4sJbH%+`+br29UxbloiO@1c7?+b2j(1*xA9y#kGBOPh4M$?u%>xn1Q$sabJe(^D!fE{Um|RdO=)MQ^$ZZIF%wjUR;}t ztG|o*crJw)H>XempC}MaDHGwnN6-sXNhVoPr2N?gDtk_pwF&NB;(nu$e^uO%6W6}t zx>sCHLc=n@5PC>l9}tWraXl?4!4=s0U4?4?-(7DIalKPqWn5>vuZ6bf-TsOA2=-Ol z9_-DX!Y3}Sr-gAj;<{N}r31lcO%M%QEGj!Hn>DCGZP8OuW2XCNT$jYvQU1?}nHgrp z@f1p;V5PzLXG8_kk1wL{L|LCO?m1zQlw2;VY#K-D_N=upKGRUl8 zH^jaF5?;Dk-}09+PL*Z9hU@2P>rvTIkuskrZ^r#*aX(Uw94|Pir;N?q5!*uPY}$kC z1EvGG4pQF7^#)J|WMjx=bF8~MPr+DvorXT?ypzHInF2Og2U`w9&BGeAdC760)fy_W z>_ov`8Zx&eH77K5RdYgT1!}M+_ao%YVfZ)4>Mkv?DA)^0q-N3v{yF&_3V9I@v@6{eVn5El>j++UM6;HyhFn z>t8Ck5u1SoHlR|X+=#zo6Idl4vk-6K0M(huPHD)|!|F_86|E$1md)x+VXHKBaNrO% zjajQD??7R!Go6hVXb!t;K%z5)jc+Y^-wen`iX^wi`k(y0Qyrq_vf=aq28H4q74h!O%ho%y6j{HjJ^yFL#<_96red8?>pprAzPsF{_gAqYSehQ zmpYk;JpqLJ=U9DcnIiU##%zaIjEmSo4P})$@%Zhqh8!hR@Y5KdYUs5rLf;6~VBMAF z1o~Oy%_^FL=XHN-yoE(hATyq)QhjHU>SfG9$Pc^K3@2cM#ynm<1v{Y(ff}q|S37|U zG+qk2T2of8@rs*cE5%xAyax1&3f58M%`-cJdT6{hRa00qHbCR`sd5615Xe8r`Z&5; zb2d(6uCY0RCTImuR8GMU_4_p5PnAxfI*m6Tyh=7p<4psv5~nB9!|fOaTCxW;-n;#r zKua`Ud8;Y-zRXI=^IKcDasvKGW2V+lVXfG!TEVhfC(v6OZ%c)fRkK|hdbwf>Yt0U5 zsAo}ur8WCVLt}~(z&oj-kxl!lZP?cu@;0q@wqZYM$j=I=u(s@+2IC8zK;{m@3zn=p zSvxjfL)W)+vi9t>hFU2dogLVaE>dz=A18i(=OYdMiP57kJ3vQwNau&U40QGrCuW33 z)ed(KWT(Wgcn(|WZ#&L8l+EuYMR&Hm(Rl@P^pWVNsvDi-8U9A3P;)xc$*yPB{UzF7 z?8FYXlur7fbY9YbBV9~>|e@5`36oL)9_s6=PG-r}6fW)G97L$UuJ z=S^(%a0&Ys-{ZWM^%x=1LAJ-(u4d z9EwFkt1q2fnRTK>Gi$$f`nR!N8eAXslXEBAHc2uMvsuo!nR&8A&CP!}_c6ybi3-g3 zI6r1HZ<1(1w^`03tQ2RuRK=WbR@Vs@UnkKIE$?xD!`4riXpHrk^E)x-kmP07MAwgg zR(*$Lc49fMvuy8O67}lhWF}?eT#2?;SGdeduCx(#=gDgJF-!nSOnvzapYA&I&=3R$Hxu~DKT zhr+6qnuj$W&ca$Ljz=W=Bx9_rm6HCLMBWOotFtoxafu#keXFax^7&GUS~YR9-pYz6 zB+73x+}TGN?_VxqPxDOIKxOp`iDp7{m~v#LM3W#oT)7`_dQsRehvXRL$g>h%Rz1&k zm2zm6L{U{sTt4Nm|41|k`7~YG^`b-@&?{yrYgbG3271LzCH`faf1vc^KF_;mD{Ehs z==Zk6oePyiuM=uud#k3IA5yIABzoR5&D^N8)6fUtJ*-R=2z`6-delyEh5VDl=3j1t&lO3vA%d(*{h-Gc0<%>l~D!;m4dhkb=N-<-3K*M>UgZ+Non1nggA$4HA(a#P_()N8xP`rJE$ryM#Z0J z7ihrXj&V-aX_M$cp+DB?R>x~_%HUpc@#h-Cl?GpP%#ABlKiAMcAdi}kJs=sA5xXF+NFAb~=0L^jd<|tq zKM+@5r&>Z%A_F890b%ll+ z>;s*h)wKrN7S~mE;J2oz+-zrBR8MuZK-l6bFUR##=leBy5Xca+lJ+6=XxmK`O zY+6)56@LYsnu4t@+8ftjouZ+~?ZaJz)!7DmKW>Ct&Zgf`Am&fDQ*qa-p9^LKyBifwQY(`rZ@u-WxEs~E8cMQ%@48uCWuSlJ zW~k}OB#D_4Yr5@ZThv1ux*6NnE$RskJqn#$)w3FU4m!80X8M7B z)OTkUmbq%WK-mA?U!?$gH0B@8rm*cQ-klYqHf%AstHGP^9cmwqcT$;xQ~vQ9`VOZe zJJiV{K7n5Y@0tT_us%I%sbaVKx+dDa$rQF*J)ohHSQYM8k7(#s z%M|vu`iq7(S)4!&zhgljZpSWikD9EZ{n$nBQS&r(CT9xUtG3gS-wdUD)gBro+ul*f zYKTmGN1dpli8(v*9AmbIZq8AFf+MqEyiHyz&oJs)sWo} z+YYE7X^@W64ytD~67L#wcuJ)+Ll5H;vg^$878gC12^X^0xse@xw` zL2A)sAuW1bMK=8ecj(1Xk^9^_Zb6`(qB|N3}j3y{Z-8tXpZ%v{^Q(#gecV! z8G4QTPeaSdj7jeE1|pq`$=@wVscIT+D4oJAreN=NL`rXWTQwee-{7_zh?K^d?g-Ku zYkJtw*~9G)(FsK3zlo931?~hx&B%-g-AM)_rD>*(K}yq2hYY35-Ps{ZbwoO!b~iD! zjLi6tJI_F*(_=c9;}3+i$mDDy^YWqo%iU!mN_9j^-*h)M)Qrs7;%;UjQrgl~CA7$9 zsxtKn(%B|Nr$Bzq`~B{AhMJKXAGkXhh?I6V`GS;oG0ioUe&+5TqEts@=qYzkL(9mF zAKbkSL^}JM{sS$DzqE9KX`7*RxqC>6QXP@fzuZF&H6t@j@$?sOWD}Co(WY;L3?1|T zl=tQFQB~*rXSsJ~GLwX4$RsQYB!(qn51SwX6T&Kx1+g`Vniv$RqM}d%!8?7!)bE;0g+oG;Y*_prW9tzvq4LO-S6S?dSW)FEG!%+j-A>&Uw$d z%iKka^wT|Bsxxekw|}L2HgUB5!)~xB)r%cd+6yk#`yGzl*MX}S2`D#Rr#5ig{WJ6o=0c(ZJyqPQa~y6Tj+1ZIqaE&#IA=ajPjtBDIG;XGU*~X}t^QNRZTdEceXf5T zxWx`PNKF;D>vaw{QpJI5yurPrNs`ucl%yRK?rKQO@hROC7Bp~_q<_?pu}?~TYf$q= zdbd->(t?2r;U-S&IdYnpu&lw&_>@rze`?^!=?eWxgVRCHE43%n?iupAO82li&iqyS z7Dva&f2;Izho#J4rQdZp%KZEFDTkxXzhB37vYmbyU7YZM9^r5*rZ{1>4m#YI{*r_T z_2Ukg)Vw5NjXvsdzxPi{SgSKSJE4KI9?~TaTNZmw!a9AA!`%pOy?)u|#85ds;bEQD zg$s(BsPcqOx?ck~KjBIJAafycC5{2M=@X7_-SA}z&*-jQ?Q-vXar#wfH*l2++bw-J zvmudzDf67Jag>|Sc_3kjKC7EuFyg&1Zny5;z4yoYnmDcJ$mtQ>15qFL_>|8R@YAT%2=ZwdDvSEi4%9SSFh@Hr9b8dlN!vd= zQf8gj8v$Q~oAD{pftUu4oW>i28aeeF;~JdqPDnIn+Z<1|MB`;gN86Z0<3op|nU-ku z=xHDS@u`+1V+2@Q%V?@48511t`IuIL7RF+Sdk0)gW4FzTy`Ho{E8~>IbwaWw8=hWv z>UHuy?oTnsF&7d?Fe};`jdLy4SVcPg{wFBe(hN^;yZT8u19+B^>Tomh)7e=@7l)gR z-|^CoAr5ype#c8U8Yfgcr=RQ|t>8UJfmNK_97N|Zx5VjOlaU12a1g6nG1GZS1Gn8@Vm!_q&Y1XH`z9Km0d_gzUK6<7C~!FG z{afHFV`2mM_rO%+dFDc5H4<@#(IVR}x2Vus6PRgS>ac@-e+yW~vl)h zZZ>jq>~aql{v)u(SnO~Ud`IG+H6Cx^zV%x#7#X=_8WL_)_(qdC`ld0%(a{v$YwTyv zK7q2&_{`yGd$7+CgSkQvZ4cfuS~whS58g7`IUHSQ@V1fdaC8yE+g6kLyWbe$C}|bg zZ#T-dp6-x__1n3RYw2iTs zq?(8H}O=1 zm+>k7#BUln3RIc-jeKfzVxDD>+R}p5M7P=4X+1|yJ0#LOpz8zemgsBX$Z0e4jz&)7 z%*uv9Qxg-K_^jv1XLe#D>Fndb@hL+RTQqT+Y(Ce>X^OeO!Re7eS`(-B9624EnBL%J ze9HL5_6-~bnrW&br+c)M*#aE;-|o_GO`O(qLOcLFW=9%&p8V@(dfa zIB|sO8A>f&co*|A#>JJ&m9F1fxVL1TRkiBWTBDf zT@H5(&hU;jH#l4$OrVkGYYtbzmM0wUa^_kMqbexZai6`J&fLNlPvsSX>u>8kD{xpd z(#*9v%kwafYet&qIm&|kjfv-(V;%0I{0O*u6dGUqtDu9)eg%()KNA2WTFxxnGZ z_uC;xn@b(;a%`4Hn=5RNy^JyIr@cjyjxqnn%J=1Csl;t%ZacUDxUU)&%r}#Vb0><8 z8BZtL_m(|?tHz`l(1&m|Bkp?!eVdDLQCGsxis+8DWH-@IcOl%#c%IdnnDf4aO6=#t zCy*7kYh0Sg^o51w=roPr65Eo^>a$7ys)y)RZHRuE>4Z#@$YjDdQN0pA1f)e(f84t# z26jOH<1$z-@D*H3oNy(y>D8%3XLk4>qV)?aXu)AE<*x3SLhU$=3+uFa8U194SJ8S? z90cO_I`pMmoHIb+ZolQwMv0lQ^omCz_lXs00VGsO-{+1ay-~HdDiUN zaOACqlg$%sZ`JlC<`Hy-7RwMFuH{D#E3qC}FRA6kp{pFVI0nRB;^;tA+yxhS_B!0T z#izrleZvt7?j*=25986{S}f^Cl9lI>hp_fy z?x*cMN4_0Gmc~%B?2ifzaXYk9OILY=4w^l%tDkO~o3k z4IU>NT`4+!FBD28DTbhI(-3X>bOb8JG!E-N35lLzg3f2Y=XfguA_P-5UuS6}P z);xI(o+{`%bS6wO5SnL%A(q0@M4iI-|jscpP6+OyJ7i;L2WrFGH;2$}&-nOI(4mbPG3Vk7x#Yl(-GCd!2;ch2g*r z&L~x%uy!?9!Lt@rnen5wSgX-Frl`SOcZns)Nw?#)hDVniY0-?w{z)XGDeecl#C2$~ zTO7es>JbAlzoW#SVH8jS2GJ*m0kI^*Gp-=#wY37xLxuqj(G96;ilZ0;mx#B(VDexT zJ>pLovna7-6ghgDdxaJmyrYq4`R_shth=A|MjjM573&ScGDO8--N(_aK7IT4ym;p4!VxUWm9ZrGfVknjP8-_`XhdA@oIOmsO zmML)umSNn{AC3H%q7b92#7jIQA%f&Xm@1A@BSx+OXmW@y4v}6fOnpWnMsbK<4$1f`oPvbh&&Xp|_12TO}?5EeRbd$4ym#=^F7P7@aY6j(pDPk>*x{K4qEuO)a$|EREqC^C(!TiRk z`$S*ZM2ml*K#X`0V}=`1;6jPN!bXcCXbnLthv{es^B~@h21qd_KsZj3{RE&EzwJO0 z`Y}_YEU*7L!-%o>%g*Or47zMy;wDroW*5jqv3mNCs9uUEyAUp6%T!)&_cpR8trC5p z)#4(y$ptE5?=9vcbVXrN{y&pR4DFF=-q;x8Zj2Casz9gVehtX$S9p>eKO+Aj%Q0wW zy`Sq)R*CoQT95~Z@KFAnIC!QZcn*`qEspW_(T?{;ZovVJH@00|V8P(}b}R83%YBeb zLAzy2OvDh_-D`*|x!Y-{O>r+al{adV#ci!`({bKj?E`8@PCI0#Sc1%O;c|2ekviGq z49Yz`DBXur5G!D#giU8AlcaScq%2Y5X5N;L;ZkRDCRy{Dxd|x6-I(P{*mN1kZqwi0 zJ-2t*>vz)aJ^V@zePCIndZ`=j#7~4U!UbF{kkJpyi^GxERGu(Q!1j z@&nFW+r?yD(Jn;=BT4FAEM*rXA%_cisNcgUr;5F4F{+R}AIK%`NFKP++`Oeg%nNv+ zqXy1@`>^4Ex}T5Ae$f99@BfdpXKe#2aakJ0yDWq7r?riei}R-Gyr4{KEW!FuBI67y zAp54%)z0=albd#pmeZ#17p8^TJ47Y zK50cQ>obVD{UctaPt#g-!2X>f$Wn@j8Kd&a^3z_lGFC;Op4dO;&HC@UJ7aHl{{L8X zXY7vC?M%EO|Nqmj`>zB?$G`uJas8#iVg3IlY4S_mov}CT408CFOw`6(za7|xX}qn| zxCr&T5{pDl7tu3y@qG_xuqatPr+>O-XOhonn$Eob|C$8+>Ck^#JFOp||DpYGEmmaG zK+tZuiA$_$dv(DuY7LAqM}Do1yUC{L2Ar~xf)MLJeKp;|qBEa3;{C(>k~q~?9^K{r|skQA2<48o2E<3nO5xhv~Y~~>nf&} zH9j1}gNA-qa=Onr|9`%~_nn@0LBsT24+fudGWnE~i?heg=R|O3l~3w4*wgRdc303j zs$Wpx7uh#G@Mx&)2g>671D)Uck?4M)z^}J&5?p=$pXm|If4ty)XTACVZ~brDbIAYy z(;aZi|NqM!aP0s8@`K2q-UwaBC#RmwA1zkOD6uvV5AOovmolIiPgGfp%h0nJ`!nVe zT6oGEDT)}28B2iyJnMqwQyFplZC)!pdXOXw`B6Q~B)MJ#Ocnjr+Psb;7l?~4fbhoj zWTvMwE@R0`#wQqS8Lead6|dLkbroqqJkJx@Tl5D~Wh5!qNd-l?DIsdyMPjm!&o33r zAiqki6tCi@tWte2f4Z28%k3*5_n*HIk^n42`dFLQxMZE|Lwb16)oi&A&llv-MZ30t z#q&ROu^ zDmJpajbcjc0O)dDRQ3cUE#xwx&u=525a%GEZEUkm?7)3fJ01FquI-?;K5N}s?tv&v zF4ThtPlfAV1920YIMt~m99?<#0QrP|BQ+PMMyd;vNS6_EqlhacT$MaV?vpE9{TBE{ zs}kUPrYmus+eR@h8n>^(^UbmrI2YPMz30nZP1l%E!|)7Qt*sHOhz2kQECIal={qtpl251IWhXK zqJOIX#v85hj2wfslyrE=gSfo)A(d+^OZ!}vA{0|wA-OCqMu*tNRE@Wp>LTNFk*-U1 zuW_YfGK}y@Vcm0VUp-kK&mN$Qjb>@%ft$vZ>dD4TJSU{sn1x&Jij5Ci#bHE`7*DBU zla1%OHlaE{2iFI9rXi7n!GP#nn4+ZX6U%KRLy{KE6s)a zU`NWK&w*L;I`~o17Ny1Lk$}yZXycNUjiHxb+13tb=Q^zM*I}reF6Cl%!TcnTv+? zcdky@*>BWVcT^q&1M{;p5r#xX0E-50(jRhCEX=;_aYZ30gzF|c=xHN2Y&%vf(+QF#-*L|PB!Vb_Jy#-W=vgIxC59_MB(1i zHq*C;>)oet{a=6IK6L=kd=8oO+w6`GnGc@-dh|)C-v;Jq9Ex6MuIl zpS4FObra1kF&1B~#Z+Lrm<8-CZUy#Y9Ke{z@=@Y0$j@iVMT}))6(m=Q7nAbv+~@4v zJaK~<47^E<%B^5Y1xqR*nUz$jlR6ub}Zk2;nO%-daSyJa92gh=)$UfaclBX*QD~}~*4wAf#EdE+TgA>Xn@k#CXH>wSRG<@1*=!GWFP4z!kSYT2d^ zHpnWrsbiZuW0!?UrO7Qexy2^6IE^J~EJu#MH*xIi^)Ygtmuk~)^uv3(ueOBXl5#SL)r zkhyrsTs&m1zlsrq)7U1BZPHedUAx4+gLBy^myPn+(MZ?ZXm=^gOIcpV z@-nWVjLQaDTfy=QmRGR60u_HbxRSM1TxAt&t5{ow8jt2$TUlMr>S|V3v$~qqHLR^; z*TPM$)NXE{o7?B6_NB5so#lBBk~WXEC9ExDd64M}rYqP(g~djdtf*qeR;H_&u4bcZ zwy9xx9m|D>L-BAZ9uCFBp|Cui+PhFmqe8;TInE3wlclV zL6X!kUF#r8gpUGBWz1nLVGJ@>GHzu&6jLYmhu!rdKk(jp=Pn%K$eZ zK=vyWiC&pV^fsoqFwJoWv zY{iaRu^*<>n9gN7m+6wWWD{hpWZcSF)7Bz|NF_{V%wa5H3^G0AjM&@~nNLGN~}1m4}FW*BM3aJCskru{~oBV+o;^6lA87aVulZsA};+uaeQ#;?6!b!0u<4jHwp;`qcpE zol}xuEqZ3x0BZ-96jY1b&fQu}u4@>@c&>)AgfYli$+(qq`*fO$Ln>%0rcC57yv+$e z0OjLMHZDsR1^8};@51nkd*m1^-+0K_YV0%)82>U(8STtI<}mYov(%hrR+#h6Rptis zF>{M~ztt11U&umLV=;4DV|3>u~7q}W<>oZYE#q~QKmP}o969swRep7BJX7Hjo!K5 zMc$R(N4#6SySyKHh0pDa@g?|DeLa1-zG1#mzCzyxzDd5BzL0O8Z<+5Q-xl9XzBhdb zeee1H?GK4){>)3}CSNZA3S} z8yFQ+32f8+LEwG<4ZxdY9|yh{^E@!B*?!=zgm;0{WBv^slkgevpx=KAUr_-AKLNFj zjRr0Z&%0M{vvv=zPK18&4&Y6$UBJGbUj}w^k;K!7v^Vr5OwK1v>he19_jyELIe_rV zWWqocVO$E~V1sa7C&E|{VOAb_Q(WrFE+okrMv`=^Gcmi{5-!Ok?8q(-_anL+SG<7T z74{`bgsb_yH__cWxHmYgfoGE>YY5?UJqSxPDbO3b?*q2zNRq})wHub4Z;>L}I0$Un z;a#AwD@k^ZqQdXBAv&uy;g%tXfTu=N)LCN)XK@Q2X365dB#Gg0k4ds`EV<+?lDzC9 ze3e7=umtuNM6=SU@DlEvSXSE|-nb{O$)dtV+_Ej)?K{&*@|K(Mdd8QySDxWse1&_| z4#@Vuy5J}*R~H;-q*5fo$@jm-UZB;a!yCK4HQUQZ%@_lWG$^YJNYXfI$1asl9-f>c$J@~upTM5t6q;zSxGXREV7 z^#dvdm<~ySY6nRnP~lnW?a^<2fFAr@(E;+YK!r!4cZB?GphujqG9VuZRCt_uCS9!3 z4__W}f$9XsZ-BUmOLT_hx2g*y7XlR?S>6@$0YHx^R^1>U55xs6cv`#^gMc1!k?H|C zo(>85x%gQ|iX5OvT&#LRehE;CT+s{i!9XSQ5ULDssgzaL9{gCN#4F-_;H%;S;A`Ty zz}H1F@VK}Lg+2!=@rAe;^a-F6C&i_pzXYN!vJ~_=KqUsqGSJyT1Sl^DJqV~oj+_KK z7pQP+{bbO2KqZD)@+vSxfl3UMQ$P;~DltM{3wk6_iSs1A1!5FX;SFFnfX)XhQ6Q&- zE(9u3ByR*g7Kj@WJ0 zSpoV|pc18WF6hgEN|ecYpeF*AxLn>2`U;>DljNPCuLLTbU!M>9cR(esl79ewHBgBu zav|tzfJ$5|7lFPGsKivcgrc}!E&+3c41=BqRAM@Q@4-EjKqYR(86qiW0F{_2?*lyx zhztAW3edBGO3aZfLEj9-Js3Cxh1Y-pm6(TjV<|CTt_CiWYk!ATma71N{b2 zi8p06=)FMPd5V`{N%0m?iMJ)ad1OCOi35076-MD5d?|5I?t-EQh@1E13!wiARH9D4 z1o~Yd?)Jb>TT;9a#Qn1JRp6)cb>MONCgh(3k)(L96p|E(yCT)wpc8;f1k?f0i9jWi z)IrcKfatBZsuo}ERUNRidJmYTJ^=PohhWqji2GjDN1*!xF}>7b&^bU%DfKbv!9azd zDvtq2sZSvp4MeJ{fEKoQK6n_9Ju~eDB+)S$o0#-*B%=$0PXA5sNc8DCP=A}4J2ILI zN!ACq;WReHZf49>56N&HcEexCm=xSCWdC8uRxCrQe7r590G~p9E|!*_qDFY9sNdi- z5ufYv3F5N=pXJ^uqtsdukK^+kKBah2?+y4Y!smW`BKYjYM@3IjXW`QupJDi1h|llv znT^i^d@4DnaM5a+94=ff`$g8QmZ?VMm51bSjBwTlIWfFqgRF{NyitaIkyD%HjqZrG zU4E$|b9cy6Z{#pu0;nE)O^$R$E`3WT8IfDwk#1Lb^}BLzr1yKWmyB5N%eAg>)?wKq zeEwm%E7IwROmjsp{7lYMk$-(IH_OO|6Y`|S&O^AfQmw-GE>ek+w@%5$8&vSAaMpU2 z9f^KeeW4>|kE)5SRq$()bqU}7g6bQ2=tVWVnF__*q7w&Hw@B(iwJ=TvKd?p7M^&5f z%%kdFGgXMR>%$*!QfZO1kEz_|D)@zM@^?eGi}W+~q<9rvNuq9%)=9d~RKbtJ8G9Dp+R=FD=l?kwJxeqbGdLdi=cl zUU>OEs$KX`zt=s&7q3@wVYKIF^DG=kWQR9S*J*|bR@fAF8p7AESC^{LrM9b&?@_-G zuY6Q>Yba=iH)QMI$~PPNL`Xq$H}kZUjoJDF6)O6!6Ig~KA77~ZyTdP*=n>&NO7-AK zo6B^q8SA?Vw=JK85AK-MbHZOw(!Y;XT&b^!ZjRji?6v(}*33IGZ1tq!UE=Pz=fd#p z8+C`k9uu!%jE!}rN*N!TYkw^XM{d*;{GkK3vep1I1v-E5F#an~sX2jn?2Ob?Li!|%0JydGsO(InW=Nz9V1y0nB8xcJ0aT_Tnf-Y+9j`j!d^9O7F!S~P~hfpTPOffwk=&)N2)?c1N zA%luW14s~j&mY|8a>M*Uc-bWn)wEH~1yp;Of6JI_Vx9~wt z9)ibX!T8Ik+CiNJh5y`d(^)Z-73I_YX z55?nuI26>KTE$S|P&_+YX8YdeFJBg4eqZ?6puRFTZ``6=D8J!C3TT&qIzGvU%OA=Ld*!>fyJ9!;kQ(GdeaZgb(a5dP zd&@cpVq1=aL zag5X2;9|1ue3u?3r-!eN4Kd#w~2I)baR7rGga~L zyL7ULeD5YMZoYnyxfXglIYZhX^Cpx(8!T2%%^aVEOT@uwzv7Ij><84Pj7dhNPIu@W4W-0`~LwU C+-FGu From 68144d5373f4d86ec1bd32542dbe64ac801cdf03 Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Tue, 29 Sep 2020 21:47:12 -0700 Subject: [PATCH 16/40] - --- App_Code/ClsCompras.vb | 356 +++++++++++++++++----------------- Compras/Compras.aspx.vb | 4 +- Inventarios/RepFletes.aspx | 3 +- Inventarios/RepFletes.aspx.vb | 14 +- 4 files changed, 192 insertions(+), 185 deletions(-) diff --git a/App_Code/ClsCompras.vb b/App_Code/ClsCompras.vb index eea2fc4d8..584994987 100644 --- a/App_Code/ClsCompras.vb +++ b/App_Code/ClsCompras.vb @@ -19,13 +19,13 @@ Public Class ClsCompras Private StrSQL As StringBuilder 'Atributos de la clase - Private disposedValue As Boolean = False ' Para detectar llamadas redundantes - 'REGISTRAR CONEXIONES ABIERTAS - Private CveConexion As Integer = 0 - Private EsTransaccionCompartida As Boolean = False - + Private disposedValue As Boolean = False ' Para detectar llamadas redundantes + 'REGISTRAR CONEXIONES ABIERTAS + Private CveConexion As Integer = 0 + Private EsTransaccionCompartida As Boolean = False + #End Region - + #Region "Propiedades" Public ReadOnly Property DtResultados() As DataTable Get @@ -60,12 +60,12 @@ Public Class ClsCompras SqlConexion.Open() Catch ex As Exception OnError("Ocurrió un error al intentar conectarse a la base de datos.", ex) - End Try + End Try Else SqlConexion = TransaccionCompartida.Connection - SqlTransacc = TransaccionCompartida + SqlTransacc = TransaccionCompartida EsTransaccionCompartida = True - End If + End If SqlAdapter = New SqlDataAdapter("", SqlConexion) ConexionAdd() @@ -80,18 +80,18 @@ Public Class ClsCompras End With Data = New DataTable If SqlTransacc IsNot Nothing Then SqlAdapter.SelectCommand.Transaction = SqlTransacc - End Sub - + End Sub + #Region "Conexiones" - + Private Sub ConexionAdd() If Not EsTransaccionCompartida AndAlso ConfigurationManager.AppSettings("RegistraConexion") IsNot Nothing AndAlso ConfigurationManager.AppSettings("RegistraConexion").ToString() = "1" Then - Try - DataAdapter("PA_Sis_RegistrarConexion") - With SqlAdapter.SelectCommand.Parameters - .Add("@Clase", SqlDbType.VarChar).Value = Me.GetType().Name - .Add("@Modulo", SqlDbType.VarChar).Value = String.Format("{0}?{1}", HttpContext.Current.Request.Url.AbsolutePath.ToString, HttpContext.Current.Request.QueryString.ToString) - .Add("@IDConexion", SqlDbType.Int).Direction = ParameterDirection.Output + Try + DataAdapter("PA_Sis_RegistrarConexion") + With SqlAdapter.SelectCommand.Parameters + .Add("@Clase", SqlDbType.VarChar).Value = Me.GetType().Name + .Add("@Modulo", SqlDbType.VarChar).Value = String.Format("{0}?{1}", HttpContext.Current.Request.Url.AbsolutePath.ToString, HttpContext.Current.Request.QueryString.ToString) + .Add("@IDConexion", SqlDbType.Int).Direction = ParameterDirection.Output End With SqlAdapter.Fill(Data) CveConexion = SqlAdapter.SelectCommand.Parameters("@IDConexion").Value.ToString.ToEntero @@ -116,9 +116,9 @@ Public Class ClsCompras CveConexion = 0 End If - End Sub + End Sub #End Region - + Public Function GetCompras(CveCompra As Integer, Serie As String, Folio As String, CveProveedor As Integer, IdPoliza As Integer, CveEmpresa As Integer, Optional ProveedorRFC As String = "-1") As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Comp_ComprasGet") @@ -143,7 +143,7 @@ Public Class ClsCompras Return Retorno End Function - Public Function GetCompras(CveEmpresa As Integer, TipoDocto As String, Folio As String, FolioFiscal As String, Codigo As String, Proveedor As String, FechaI As String, + Public Function GetCompras(CveEmpresa As Integer, TipoDocto As String, Folio As String, FolioFiscal As String, Codigo As String, Proveedor As String, FechaI As String, FechaF As String, Descripcion As String, Observaciones As String, Optional CveProveedor As Integer = -1, Optional TopSelect As Integer = 10000) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Comp_ComprasGetBuscar") @@ -199,8 +199,8 @@ Public Class ClsCompras Dim Retorno As Boolean = False - DataAdapter("PA_Comp_CompraAdd") - + DataAdapter("PA_Comp_CompraAdd") + With SqlAdapter.SelectCommand.Parameters .Add("@TipoDocto", SqlDbType.VarChar).Value = TipoDocto .Add("@Descripcion", SqlDbType.VarChar).Value = Descripcion @@ -588,10 +588,10 @@ Public Class ClsCompras End If Catch ex As SqlException If ex.Message.Contains("FK_Inv_MovimientosDetalle_Inv_MovimientosDetalleEntrada") Then - Alert(String.Format("No se puede eliminar la compra, porque tiene movimientos de salida de Almacen relacionados."), TipoMensaje.MsgAdvertencia) - - ElseIf ex.Message.Contains("50015") Then - Alert("No se puede eliminar na compra debido a que el perido esta cerrado.", TipoMensaje.MsgAdvertencia) + Alert(String.Format("No se puede eliminar la compra, porque tiene movimientos de salida de Almacen relacionados."), TipoMensaje.MsgAdvertencia) + + ElseIf ex.Message.Contains("50015") Then + Alert("No se puede eliminar na compra debido a que el perido esta cerrado.", TipoMensaje.MsgAdvertencia) Else Me.OnError("Ocurrió un error al eliminar la Compra.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End If @@ -1765,11 +1765,11 @@ Public Class ClsCompras SqlAdapter.Fill(Data) OnError = True Catch ex As Exception - If ex.Message.Contains("Desbordamiento de SqlDateTime. Debe estar entre 1/1/1753 12:00:00 AM y 12/31/9999 11:59:59 PM.") Then - Alert("Fechas fuera de rango, debe estar entre 1/1/1753 12:00:00 AM y 12/31/9999 11:59:59 PM", TipoMensaje.MsgAdvertencia) - Else + If ex.Message.Contains("Desbordamiento de SqlDateTime. Debe estar entre 1/1/1753 12:00:00 AM y 12/31/9999 11:59:59 PM.") Then + Alert("Fechas fuera de rango, debe estar entre 1/1/1753 12:00:00 AM y 12/31/9999 11:59:59 PM", TipoMensaje.MsgAdvertencia) + Else Me.OnError("Ocurrió un error al obtener la bitácora.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) - End If + End If End Try Return OnError @@ -2218,10 +2218,10 @@ Public Class ClsCompras End Try Return Retorno - End Function - + End Function + #End Region - + #Region " DEVOLUCIONES COMPRAS - IPP FEBRERO 2018 " Public Function ComprasDetalleDevolucionesAdd(CveCompraDetalle As Integer, CveCompraNC As Integer, Cantidad As Double, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False @@ -2242,11 +2242,11 @@ Public Class ClsCompras End Try Return Retorno - End Function + End Function #End Region - + #Region "TIPOS DE GASTOS" - + Public Function GetTipoGasto(CveTipoGasto As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Comp_TiposGastosGet") @@ -2264,17 +2264,17 @@ Public Class ClsCompras End Try Return Retorno - End Function - + End Function + Public Function AddTipoGasto(TipoGasto As String, Estatus As Boolean, FechaIng As String, CveUsuario As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Comp_TiposGastosAdd") With SqlAdapter.SelectCommand.Parameters - .Add("@TipoGasto", SqlDbType.NVarChar).Value = TipoGasto - .Add("@Estatus", SqlDbType.Bit).Value = Estatus - .Add("@FechaIng", SqlDbType.DateTime).Value = FechaIng - .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario + .Add("@TipoGasto", SqlDbType.NVarChar).Value = TipoGasto + .Add("@Estatus", SqlDbType.Bit).Value = Estatus + .Add("@FechaIng", SqlDbType.DateTime).Value = FechaIng + .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa End With @@ -2286,17 +2286,17 @@ Public Class ClsCompras End Try Return Retorno - End Function - + End Function + Public Function UpdateTipoGasto(CveTipoGasto As Integer, TipoGasto As String, Estatus As Boolean, CveUsuario As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Comp_TiposGastosUpdate") With SqlAdapter.SelectCommand.Parameters - .Add("@CveTipoGasto", SqlDbType.Int).Value = CveTipoGasto - .Add("@TipoGasto", SqlDbType.NVarChar).Value = TipoGasto - .Add("@Estatus", SqlDbType.Bit).Value = Estatus - .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario + .Add("@CveTipoGasto", SqlDbType.Int).Value = CveTipoGasto + .Add("@TipoGasto", SqlDbType.NVarChar).Value = TipoGasto + .Add("@Estatus", SqlDbType.Bit).Value = Estatus + .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa End With @@ -2308,8 +2308,8 @@ Public Class ClsCompras End Try Return Retorno - End Function - + End Function + Public Function RemoveTipoGasto(CveTipoGasto As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Comp_TiposGastosRemove") @@ -2326,51 +2326,51 @@ Public Class ClsCompras End Try Return Retorno - End Function - - + End Function + + #End Region - + #Region "VINCULAR PAGO" - 'Public Function GetVincularPago(CveProveedor As Integer, CveCompra As Integer, Tipo As Integer, FechaInicio As Date, FechaFin As Date, CveEmpresa As Integer, Optional CveTipoProveedor As Integer = -1) As Boolean - ' Dim Retorno As Boolean = False - ' DataAdapter("PA_Comp_VincularPagoGet") - ' With SqlAdapter.SelectCommand.Parameters - ' .Add("@CveProveedor", SqlDbType.Int).Value = CveProveedor - ' .Add("@CveCompra", SqlDbType.Int).Value = CveCompra - ' .Add("@Tipo", SqlDbType.Int).Value = Tipo - ' .Add("@FechaInicio", SqlDbType.Date).Value = FechaInicio - ' .Add("@FechaFin", SqlDbType.Date).Value = FechaFin - ' .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa - ' .Add("@CveTipoProveedor", SqlDbType.Int).Value = CveTipoProveedor - ' End With - ' Try - ' SqlAdapter.Fill(Data) - ' Retorno = True - ' Catch ex As Exception - ' OnError("Ocurrió un error al obtener los pagos a vincular.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) - ' End Try - ' Return Retorno - 'End Function - - 'Public Function GetVincularPago(CveProveedor As Integer, Monto As Decimal, XMLPagos As String, CveEmpresa As Integer) As Boolean - ' Dim Retorno As Boolean = False - ' DataAdapter("PA_Comp_VincularComplementoPagoGet") - ' With SqlAdapter.SelectCommand.Parameters - ' .Add("@CveProveedor", SqlDbType.Int).Value = CveProveedor - ' .Add("@Monto", SqlDbType.Float).Value = Monto - ' .Add("@XMLPagos", SqlDbType.Xml).Value = XMLPagos - ' .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa - ' End With - ' Try - ' SqlAdapter.Fill(Data) - ' Retorno = True - ' Catch ex As Exception - ' OnError("Ocurrió un error al obtener la vinculación de complemento de pago.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) - ' End Try - ' Return Retorno - 'End Function - + 'Public Function GetVincularPago(CveProveedor As Integer, CveCompra As Integer, Tipo As Integer, FechaInicio As Date, FechaFin As Date, CveEmpresa As Integer, Optional CveTipoProveedor As Integer = -1) As Boolean + ' Dim Retorno As Boolean = False + ' DataAdapter("PA_Comp_VincularPagoGet") + ' With SqlAdapter.SelectCommand.Parameters + ' .Add("@CveProveedor", SqlDbType.Int).Value = CveProveedor + ' .Add("@CveCompra", SqlDbType.Int).Value = CveCompra + ' .Add("@Tipo", SqlDbType.Int).Value = Tipo + ' .Add("@FechaInicio", SqlDbType.Date).Value = FechaInicio + ' .Add("@FechaFin", SqlDbType.Date).Value = FechaFin + ' .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + ' .Add("@CveTipoProveedor", SqlDbType.Int).Value = CveTipoProveedor + ' End With + ' Try + ' SqlAdapter.Fill(Data) + ' Retorno = True + ' Catch ex As Exception + ' OnError("Ocurrió un error al obtener los pagos a vincular.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + ' End Try + ' Return Retorno + 'End Function + + 'Public Function GetVincularPago(CveProveedor As Integer, Monto As Decimal, XMLPagos As String, CveEmpresa As Integer) As Boolean + ' Dim Retorno As Boolean = False + ' DataAdapter("PA_Comp_VincularComplementoPagoGet") + ' With SqlAdapter.SelectCommand.Parameters + ' .Add("@CveProveedor", SqlDbType.Int).Value = CveProveedor + ' .Add("@Monto", SqlDbType.Float).Value = Monto + ' .Add("@XMLPagos", SqlDbType.Xml).Value = XMLPagos + ' .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + ' End With + ' Try + ' SqlAdapter.Fill(Data) + ' Retorno = True + ' Catch ex As Exception + ' OnError("Ocurrió un error al obtener la vinculación de complemento de pago.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + ' End Try + ' Return Retorno + 'End Function + Public Function AddComplementoPago(CveIE As Integer, CveCompra As Integer, Importe As Decimal, CvePrePolizaDetalle As Integer, CveFactura As Integer) As Integer Dim Retorno As Integer = 0 DataAdapter("PA_Comp_ComplementoPagoAdd") @@ -3003,8 +3003,8 @@ Public Class ClsCompras OnError("Ocurrió un error al obtener el reporte de anticipos - nc - exc detalle .", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) End Try Return Retorno - End Function - + End Function + #End Region Public Function GetCxPProgramado(CveCompra As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False @@ -3020,8 +3020,8 @@ Public Class ClsCompras OnError("Ocurrió un error al obtener la información de la compra programada.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) End Try Return Retorno - End Function - + End Function + Public Function GetCancelarNC(CveCompra As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Conta_CancelarNCGet") @@ -3036,79 +3036,79 @@ Public Class ClsCompras OnError("Ocurrió un error al obtener los datos para cancelar la nc.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) End Try Return Retorno - End Function - - Public Function UpdateFechaVencimientoCompra(CveCompra As Integer, FechaVencimiento As Date, CveEmpresa As Integer) As Boolean - Dim Retorno As Boolean = False - DataAdapter("PA_Comp_ComprasFechaVencimientoUpdate") - With SqlAdapter.SelectCommand.Parameters - .Add("@CveCompra", SqlDbType.Int).Value = CveCompra - .Add("@FechaVencimiento", SqlDbType.Date).Value = FechaVencimiento - .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa - End With - Try - SqlAdapter.Fill(Data) - Retorno = True - Catch ex As Exception - OnError("Ocurrió un error al actualizar la fecha de vencimiento de la compra.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) - End Try - Return Retorno - End Function - - Public Function GetRepEvaluacionesProveedores(CveEmpresa As Integer, CveProveedor As Integer, FechaI As Date, FechaF As Date, Evaluado As Integer) As Boolean - Dim Retorno As Boolean = False - DataAdapter("PA_Comp_RepEvaluacionesProveedoresGet") - With SqlAdapter.SelectCommand.Parameters - .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa - .Add("@CveProveedor", SqlDbType.Int).Value = CveProveedor - .Add("@FechaI", SqlDbType.DateTime).Value = FechaI - .Add("@FechaF", SqlDbType.DateTime).Value = FechaF - .Add("@Evaluado", SqlDbType.Int).Value = Evaluado - End With - Try - SqlAdapter.Fill(Data) - Retorno = True - Catch ex As Exception - OnError("Ocurrió un error al querer obtener el reporte de evaluaciones de proveedores.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) - End Try - Return Retorno - End Function - - Public Function GetFletesCompras(CveFlete As Integer, CveEmpresa As Integer) As Boolean - Dim Retorno As Boolean = False - DataAdapter("PA_Comp_FletesComprasGet") - With SqlAdapter.SelectCommand.Parameters - .Add("@CveFlete", SqlDbType.Int).Value = CveFlete - .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa - End With - Try - SqlAdapter.Fill(Data) - Retorno = True - Catch ex As Exception - OnError("Ocurrió un error al querer obtener las compras relacionadas.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) - End Try - Return Retorno - End Function - - Public Function AddFletesCompras(CveFlete As Integer, Optional CveCompra As Integer = -1, Optional CveOC As Integer = -1) As Boolean - Dim Retorno As Boolean = False - DataAdapter("PA_Comp_FletesComprasAdd") - With SqlAdapter.SelectCommand.Parameters - .Add("@CveFlete", SqlDbType.Int).Value = CveFlete - .Add("@CveCompra", SqlDbType.Int).Value = CveCompra - .Add("@CveOC", SqlDbType.Int).Value = CveOC - End With - Try - SqlAdapter.Fill(Data) - Retorno = True - Catch ex As Exception - OnError("Ocurrió un error al querer agregar las compras relacionadas.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) - End Try - Return Retorno - End Function - + End Function + + Public Function UpdateFechaVencimientoCompra(CveCompra As Integer, FechaVencimiento As Date, CveEmpresa As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Comp_ComprasFechaVencimientoUpdate") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveCompra", SqlDbType.Int).Value = CveCompra + .Add("@FechaVencimiento", SqlDbType.Date).Value = FechaVencimiento + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + End With + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al actualizar la fecha de vencimiento de la compra.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + Return Retorno + End Function + + Public Function GetRepEvaluacionesProveedores(CveEmpresa As Integer, CveProveedor As Integer, FechaI As Date, FechaF As Date, Evaluado As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Comp_RepEvaluacionesProveedoresGet") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + .Add("@CveProveedor", SqlDbType.Int).Value = CveProveedor + .Add("@FechaI", SqlDbType.DateTime).Value = FechaI + .Add("@FechaF", SqlDbType.DateTime).Value = FechaF + .Add("@Evaluado", SqlDbType.Int).Value = Evaluado + End With + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al querer obtener el reporte de evaluaciones de proveedores.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + Return Retorno + End Function + + Public Function GetFletesCompras(CveFlete As Integer, CveEmpresa As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Comp_FletesComprasGet") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveFlete", SqlDbType.Int).Value = CveFlete + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + End With + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al querer obtener las compras relacionadas.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + Return Retorno + End Function + + Public Function AddFletesCompras(CveFlete As Integer, Optional CveCompra As Integer = -1, Optional CveOC As Integer = -1) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Comp_FletesComprasAdd") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveFlete", SqlDbType.Int).Value = CveFlete + .Add("@CveCompra", SqlDbType.Int).Value = CveCompra + .Add("@CveOC", SqlDbType.Int).Value = CveOC + End With + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al querer agregar las compras relacionadas.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + Return Retorno + End Function + #Region "REPORTE PUE SIN PAGO" - + Public Function GetPUESinPago(FI As DateTime, FF As DateTime, CveProveedor As Integer, CveSubProyecto As Integer, CveEmpresa As Integer, Optional CveUsuario As Integer = -1) As Boolean Dim retorno As Boolean = False DataAdapter("PA_Comp_PUESinPagoGet", CommandType.StoredProcedure) @@ -3127,10 +3127,10 @@ Public Class ClsCompras OnError("Ocurrió un error al obtener las compras con método de pago PUE.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) End Try Return retorno - End Function - + End Function + #End Region -#Region "Reporte de REQ-OC-Compra-Inv" +#Region "Reporte de REQ-OC-Compra-Inv" Public Function GetRepReqOCCompraInv(FI As Date, FF As Date, CveProveedor As Integer, CveSubProyecto As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Comp_ReqOCCompraInvGet") @@ -3151,9 +3151,9 @@ Public Class ClsCompras End Try Return Retorno - End Function -#End Region -#Region "Reporte de Precios de Compras" + End Function +#End Region +#Region "Reporte de Precios de Compras" Public Function GetRepComprasPrecios(CveProveedor As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Comp_ComprasPreciosGet") @@ -3170,8 +3170,8 @@ Public Class ClsCompras OnError("Ocurrió un error al obtener el reporte de Precios de Compras.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) End Try Return Retorno - End Function -#End Region + End Function +#End Region End Class diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 963b4f3a6..211db915c 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -4489,7 +4489,7 @@ Partial Class Compras_Compras CveConceptoContableAlmacen = 205 End If Else - CveConceptoContableAlmacen = 225 + CveConceptoContableAlmacen = 225 End If 'Condiciones para los casos de facturas que son en 0 pero que se utiliza el almacen @@ -6747,7 +6747,7 @@ Partial Class Compras_Compras End If - If UsuarioActual.CveEmpresa.Contiene(119) Then + If UsuarioActual.CveEmpresa.Contiene(119) Then Dim ContienePSNeteoBonif As Boolean = False For Each Dr As DataRow In TmpDT.Rows If Dr("CveClasificacion").ToString.ToEntero.Contiene(20319) Or DdlTipoCompra.SelectedValue.ToEntero = 11 Then 'clasificación de Bonificación, no se incluirá en el neteo diff --git a/Inventarios/RepFletes.aspx b/Inventarios/RepFletes.aspx index 16f6d5ba8..f3cd9cdf1 100644 --- a/Inventarios/RepFletes.aspx +++ b/Inventarios/RepFletes.aspx @@ -43,7 +43,8 @@

    Proveedor:
    - + + <%----%>
    Fecha Inicio:
    diff --git a/Inventarios/RepFletes.aspx.vb b/Inventarios/RepFletes.aspx.vb index 92cbf419b..418cb8a08 100644 --- a/Inventarios/RepFletes.aspx.vb +++ b/Inventarios/RepFletes.aspx.vb @@ -24,12 +24,18 @@ Partial Class Compras_RepFletes End Sub Private Sub InicializaValores() + DdlProveedores.setEsWebService(True) + DdlProveedores.Attributes.Add("data-metodo", "getproveedores") + DdlProveedores.SelectedText = "Seleccione" + DdlProveedores.SelectedValue = "-1" + DdlProveedores.ddl.AutoPostBack = True + TxtFechaI.Text = Date.Now.AddDays(-Now.DayOfYear + 1).ToShortDateString TxtFechaF.Text = Date.Now.ToShortDateString - DdlProveedor.DataSource = GlobalDTCompProveedores(UsuarioActual.CveEmpresa) - DdlProveedor.DataBind() - DdlProveedor.Items.Insert(0, New ListItem("Todos", "-1")) + 'DdlProveedor.DataSource = GlobalDTCompProveedores(UsuarioActual.CveEmpresa) + 'DdlProveedor.DataBind() + 'DdlProveedor.Items.Insert(0, New ListItem("Todos", "-1")) End Sub @@ -40,7 +46,7 @@ Partial Class Compras_RepFletes Private Sub CargaDatos() Dim ObjInv As New ClsInventarios If TxtFolio.Text <> "" Then TxtFechaI.Text = MinFecha.ToShortDateString : TxtFechaF.Text = MaxFecha.ToShortDateString - If ObjInv.GetFletesRep(UsuarioActual.CveEmpresa, -1, If(TxtFolio.Text = "", "-1", TxtFolio.Text), DdlProveedor.SelectedValue.ToString.ToEntero, -1, -1, + If ObjInv.GetFletesRep(UsuarioActual.CveEmpresa, -1, If(TxtFolio.Text = "", "-1", TxtFolio.Text), DdlProveedores.SelectedValue.ToString.ToEntero, -1, -1, TxtFechaI.Text.ToDate, TxtFechaF.Text.ToDate, TipoGasto:=DdlTipoGasto.SelectedValue.ToEntero()) Then DtFletes = ObjInv.DtResultados End If From 339d4f0efb8fc78dc6ddc69b56960506009e5285 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 30 Sep 2020 09:46:56 -0700 Subject: [PATCH 17/40] -- recepcion por costo indirecto de multiples facturas(fletes) --- App_Code/ClsCompras.vb | 33 ---------------- App_Code/ClsInventarios.vb | 59 ++++++++++++++++++++++++++++ Compras/Compras.aspx.vb | 37 ++++++----------- Inventarios/Fletes.aspx.vb | 16 +++----- Inventarios/RecepcionAlmacen.aspx | 8 +++- Inventarios/RecepcionAlmacen.aspx.vb | 28 ++++++++++++- 6 files changed, 110 insertions(+), 71 deletions(-) diff --git a/App_Code/ClsCompras.vb b/App_Code/ClsCompras.vb index eea2fc4d8..ad35ebb1e 100644 --- a/App_Code/ClsCompras.vb +++ b/App_Code/ClsCompras.vb @@ -3074,39 +3074,6 @@ Public Class ClsCompras Return Retorno End Function - Public Function GetFletesCompras(CveFlete As Integer, CveEmpresa As Integer) As Boolean - Dim Retorno As Boolean = False - DataAdapter("PA_Comp_FletesComprasGet") - With SqlAdapter.SelectCommand.Parameters - .Add("@CveFlete", SqlDbType.Int).Value = CveFlete - .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa - End With - Try - SqlAdapter.Fill(Data) - Retorno = True - Catch ex As Exception - OnError("Ocurrió un error al querer obtener las compras relacionadas.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) - End Try - Return Retorno - End Function - - Public Function AddFletesCompras(CveFlete As Integer, Optional CveCompra As Integer = -1, Optional CveOC As Integer = -1) As Boolean - Dim Retorno As Boolean = False - DataAdapter("PA_Comp_FletesComprasAdd") - With SqlAdapter.SelectCommand.Parameters - .Add("@CveFlete", SqlDbType.Int).Value = CveFlete - .Add("@CveCompra", SqlDbType.Int).Value = CveCompra - .Add("@CveOC", SqlDbType.Int).Value = CveOC - End With - Try - SqlAdapter.Fill(Data) - Retorno = True - Catch ex As Exception - OnError("Ocurrió un error al querer agregar las compras relacionadas.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) - End Try - Return Retorno - End Function - #Region "REPORTE PUE SIN PAGO" Public Function GetPUESinPago(FI As DateTime, FF As DateTime, CveProveedor As Integer, CveSubProyecto As Integer, CveEmpresa As Integer, Optional CveUsuario As Integer = -1) As Boolean diff --git a/App_Code/ClsInventarios.vb b/App_Code/ClsInventarios.vb index 293c971d4..4f57d07db 100644 --- a/App_Code/ClsInventarios.vb +++ b/App_Code/ClsInventarios.vb @@ -4588,6 +4588,65 @@ Public Class ClsInventarios End Function #End Region +#Region " FLETES COMPRAS " + + Public Function GetFletesCompras(CveFlete As Integer, CveEmpresa As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Inv_FletesComprasGet") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveFlete", SqlDbType.Int).Value = CveFlete + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + End With + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al querer obtener las compras relacionadas.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + Return Retorno + End Function + + Public Function AddFletesCompras(CveFlete As Integer, Optional CveCompra As Integer = -1, Optional CveOC As Integer = -1) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Inv_FletesComprasAdd") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveFlete", SqlDbType.Int).Value = CveFlete + .Add("@CveCompra", SqlDbType.Int).Value = CveCompra + .Add("@CveOC", SqlDbType.Int).Value = CveOC + End With + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al querer agregar las compras relacionadas.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + Return Retorno + End Function + + Public Function PendientesAlmacenFletesComprasGet(CveFlete As Integer, CveProveedor As Integer) As Boolean + Dim Retorno As Boolean = False + + DataAdapter("PA_Inv_PendientesAlmacenFletesComprasGet") + + With SqlAdapter.SelectCommand.Parameters + .Add("@CveFlete", SqlDbType.Int).Value = CveFlete + .Add("@CveProveedor", SqlDbType.Int).Value = CveProveedor + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al obtener las Importaciones pendientes de almacen.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + + Return Retorno + End Function + + +#End Region + + #Region " FLETES DETALLE " Public Function AddFleteDetalle(CveFlete As Integer, CveCompra As Integer) As Boolean Dim Retorno As Boolean = False diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 963b4f3a6..e37fd5697 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -4561,19 +4561,13 @@ Partial Class Compras_Compras Case 237 Select Case FleteImportacionOpcion Case 1 - Dim Dr As DataRow = Nothing - If ObjInventario.GetFletes(UsuarioActual.CveEmpresa, CveFlete) Then - If ObjInventario.DtResultados.Rows.Count > 0 Then - Dr = ObjInventario.DtResultados.Rows(0) - End If - End If - If Dr IsNot Nothing Then - If Not ObjInventario.UpdateFlete(CveFlete, Dr("Descripcion").ToString, Dr("Fecha").ToString.ToDate, -1, CveCompra, UsuarioActual.CveUsuario) Then - ErrorOC = True - End If - Else + If Not ObjInventario.AddFletesCompras(CveFlete, CveCompra) Then ErrorOC = True End If + ''actualiza la compra para que no se surta en almacen. sino por el flete o importación + 'If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2) Then + ' ErrorOC = True + 'End If Case 2 If Not ObjInventario.AddFleteDetalle(CveFlete, CveCompra) Then ErrorOC = True @@ -19272,22 +19266,13 @@ Partial Class Compras_Compras Case 237 Select Case FleteImportacionOpcion Case 1 - Dim Dr As DataRow = Nothing - If ObjInventario.GetFletes(UsuarioActual.CveEmpresa, CveFlete) Then - If ObjInventario.DtResultados.Rows.Count > 0 Then - Dr = ObjInventario.DtResultados.Rows(0) - End If - End If - If Dr IsNot Nothing Then - If Not ObjInventario.UpdateFlete(CveFlete, Dr("Descripcion").ToString, Dr("Fecha").ToString.ToDate, -1, CveCompra, UsuarioActual.CveUsuario) Then - ErrorTrans = True - End If - If Not ObjCompras.AddFletesCompras(CveFlete, CveCompra:=CveCompra) Then - ErrorTrans = True - End If - Else - ErrorTrans = True + If Not ObjInventario.AddFletescompras(CveFlete, CveCompra) Then + ErrorTrans = True End If + '''actualiza la compra para que no se surta en almacen. sino por el flete o importación + ''If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2) Then + '' ErrorTrans = True + ''End If Case 2 If Not ObjInventario.AddFleteDetalle(CveFlete, CveCompra) Then ErrorTrans = True diff --git a/Inventarios/Fletes.aspx.vb b/Inventarios/Fletes.aspx.vb index 27c2b1c77..31217cb1a 100644 --- a/Inventarios/Fletes.aspx.vb +++ b/Inventarios/Fletes.aspx.vb @@ -99,7 +99,11 @@ Partial Class Compras_Fletes Else Alert("Ocurrió un error al cargar el detalle del flete", TipoMensaje.MsgError) End If - CargarComprasRelacionadas() + + If ObjInv.GetFletesCompras(CveFlete, UsuarioActual.CveEmpresa) Then + GvComprasVinculadas.DataSource = ObjInv.DtResultados + End If + Else Alert("No se encontró el flete", TipoMensaje.MsgAdvertencia) End If @@ -109,6 +113,7 @@ Partial Class Compras_Fletes ObjInv.Dispose() CargaGrid() + GvComprasVinculadas.DataBind() UpRegistro.Update() End Sub @@ -428,14 +433,5 @@ Partial Class Compras_Fletes End Sub - Private Sub CargarComprasRelacionadas() - Dim ObjCompras As New ClsCompras - If ObjCompras.GetFletesCompras(CveFlete, UsuarioActual.CveEmpresa) Then - GvComprasVinculadas.DataSource = ObjCompras.DtResultados - End If - ObjCompras.Dispose() - GvComprasVinculadas.DataBind() - End Sub - End Class diff --git a/Inventarios/RecepcionAlmacen.aspx b/Inventarios/RecepcionAlmacen.aspx index e0791c45f..44dbb2eb4 100644 --- a/Inventarios/RecepcionAlmacen.aspx +++ b/Inventarios/RecepcionAlmacen.aspx @@ -79,7 +79,13 @@
    - + +
    +
    + +
    +
    +
    diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index 2872e1c6c..53d9e0acb 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -613,6 +613,8 @@ Partial Class Inventarios_RecepcionAlmacen Case 4 LblFletes.Visible = True DivFletes.Visible = True + LblIndirectoFactura.Visible = True + DivDdlIndirectoFactura.Visible = True End Select CargaFoliosRecepcion() @@ -711,6 +713,30 @@ Partial Class Inventarios_RecepcionAlmacen DdlFletes.DataBind() DdlFletes.Items.Insert(0, New ListItem("Seleccione", "-1")) End Sub + + Protected Sub DdlFletes_SelectedIndexChanged(sender As Object, e As EventArgs) + CargaFletesFactura() + End Sub + Private Sub CargaFletesFactura() + + DdlIndirectoFactura.Items.Clear() + + Dim ObjInventarios As New ClsInventarios + If DdlFletes.SelectedValue.ToEntero > 0 Then + If ObjInventarios.GetFletesCompras(DdlFletes.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then + DdlIndirectoFactura.DataSource = ObjInventarios.DtResultados + Else + Alert("Ocurrió un error al obtener las Compras pendientes de recibir del proveedor. Por favor vuelva a intentar", TipoMensaje.MsgError) + End If + End If + ObjInventarios.Dispose() + + DdlIndirectoFactura.DataBind() + DdlIndirectoFactura.Items.Insert(0, New ListItem("Todos", "-1")) + + End Sub + + #End Region #Region " CARGA POR SURTIR - GV " @@ -1119,7 +1145,7 @@ Partial Class Inventarios_RecepcionAlmacen If ObjInventario.DtResultados.Rows.Count > 0 Then CveFleteSurtir = pCveImportacion CveFleteOrdenCompra = ObjInventario.DtResultados.Rows(0)("CveOC").ToString.ToEntero - CveFleteCompra = ObjInventario.DtResultados.Rows(0)("CveCompra").ToString.ToEntero + CveFleteCompra = DdlIndirectoFactura.SelectedValue.ToEntero 'ObjInventario.DtResultados.Rows(0)("CveCompra").ToString.ToEntero CveImportacionCompra = CveFleteCompra ' se iguala para que al guardar el movimiento, se toma esta variable LbProveedor.Text = ObjInventario.DtResultados.Rows(0)("RazonSocial").ToString HLFolio.Text = ObjInventario.DtResultados.Rows(0)("Folio").ToString From f2707061ad92d21c9287fa8b08d2bb51a553220d Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 30 Sep 2020 09:47:27 -0700 Subject: [PATCH 18/40] -- que tome la cantidad -- considere almacenes mermas --- Inventarios/AjustesSeccionAlmacen.aspx.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Inventarios/AjustesSeccionAlmacen.aspx.vb b/Inventarios/AjustesSeccionAlmacen.aspx.vb index 8a46beef4..171409d9b 100644 --- a/Inventarios/AjustesSeccionAlmacen.aspx.vb +++ b/Inventarios/AjustesSeccionAlmacen.aspx.vb @@ -13,7 +13,7 @@ Partial Class Inventarios_AjustesSeccionAlmacen End Sub Private Sub CargaCombos() - Dim DtAlmacenes As DataTable = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoAlmacen:=-1).FiltraParametros("CveTipoAlmacen in (1,14)") + Dim DtAlmacenes As DataTable = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoAlmacen:=-1).FiltraParametros("CveTipoAlmacen in (1,14,16)") DdlAlmacen.DataSource = DtAlmacenes DdlAlmacen.DataBind() @@ -121,7 +121,7 @@ Partial Class Inventarios_AjustesSeccionAlmacen For Each Row As DataRow In resultado.Rows Dim CvePS = Row("CvePS").ToString().ToEntero() - 'Dim Cantidad As Decimal = Row("Cantidad").ToString().ToDecimal() + Dim Cantidad As Decimal = Row("Cantidad").ToString().ToDecimal() Dim PU As Decimal = Row("PUOriginal").ToString().ToDecimal() Dim CveUM As Integer = Row("CveUM").ToString().ToEntero() Dim CveSeccionAlmacen As Integer = Lista(Row("CvePS").ToString().ToEntero()) 'GvD.Rows(ind).FCDropDownList("DDlS").SelectedValue.ToEntero ' IfNull(Row("CveSeccionAlmacen"), "-1").ToString().ToEntero() From bd36e4617f5e83af08b1a884c4ed5c5515912ce5 Mon Sep 17 00:00:00 2001 From: Rakcsle Supertramp Date: Wed, 30 Sep 2020 15:38:43 -0700 Subject: [PATCH 19/40] Carga de DdlSubProyectos --- Ventas/Clientes.aspx.vb | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Ventas/Clientes.aspx.vb b/Ventas/Clientes.aspx.vb index 1e3cdac65..4601aba6d 100644 --- a/Ventas/Clientes.aspx.vb +++ b/Ventas/Clientes.aspx.vb @@ -1196,15 +1196,14 @@ Partial Class Clientes End Sub - Private Sub CargaSubProyectoss() - DdlSubProyecto.DataSource = GlobalDTSubProyectos(-1).FiltraParametros("CveEmpresa = " & UsuarioActual.CveEmpresa) - DdlSubProyecto.DataBind() + Private Sub CargaSubProyectoss() + + 'DdlSubProyecto.DataSource = GlobalDTSubProyectos(-1).FiltraParametros("CveEmpresa = " & UsuarioActual.CveEmpresa) + DdlSubProyecto.DataSource = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa) - 'If UsuarioActual.CveSucursal = -1 Then - ' DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1")) - 'Else - ' DdlSubProyecto.SelectedValue = UsuarioActual.CveSucursal.ToString - 'End If + DdlSubProyecto.DataBind() + + End Sub Private Sub CargaMetodosPago() DdlMetodoPago.DataSource = GlobalDTMetodosPago.FiltraParametros("Estatus = 'Activo'", "ClaveSAT") '.FiltraParametros("CveMetodoPago > 0 ") From 338acaf0b341c72d39c9c9c2d5dac8165a1e54ca Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Wed, 30 Sep 2020 19:42:31 -0700 Subject: [PATCH 20/40] SOPORTES, ACTIVOS FIJIS (Interno,externo), generar remision del pescadito --- .../RepPedidosDevolucionesXContrato.aspx | 6 +- .../RepPedidosDevolucionesXContrato.aspx.vb | 6 +- asmx/WSApp.asmx | 121 +++++++++++------- 3 files changed, 80 insertions(+), 53 deletions(-) diff --git a/Contratos/RepPedidosDevolucionesXContrato.aspx b/Contratos/RepPedidosDevolucionesXContrato.aspx index 834e5f7d5..335c87aea 100644 --- a/Contratos/RepPedidosDevolucionesXContrato.aspx +++ b/Contratos/RepPedidosDevolucionesXContrato.aspx @@ -140,7 +140,8 @@ - + +
    @@ -180,7 +181,8 @@ - + +
    diff --git a/Contratos/RepPedidosDevolucionesXContrato.aspx.vb b/Contratos/RepPedidosDevolucionesXContrato.aspx.vb index dcaf3497f..0c7ce6161 100644 --- a/Contratos/RepPedidosDevolucionesXContrato.aspx.vb +++ b/Contratos/RepPedidosDevolucionesXContrato.aspx.vb @@ -111,7 +111,8 @@ Partial Class Ventas_RepPedidosDevolucionesXContrato e.Row.Attributes.Add("style", "background-color:#B9B5B4 !important;") e.Row.Cells(1).Text = "" e.Row.Cells(5).Text = "" - e.Row.Cells(6).Text = "" + e.Row.Cells(6).Text = "" + e.Row.Cells(7).Text = "" Dim Texto = $"Pedido: {e.Row.DBCampo("SerieFolio")} | " Texto += If(e.Row.DBCampo("CveMovimiento").ToString = "", " SIN MOVIMIENTO DE ALMACÉN", $"Folio Almacén: {e.Row.DBCampo("Folio")}") @@ -134,7 +135,8 @@ Partial Class Ventas_RepPedidosDevolucionesXContrato e.Row.Attributes.Add("style", "background-color:#B9B5B4 !important;") e.Row.Cells(1).Text = "" e.Row.Cells(5).Text = "" - e.Row.Cells(6).Text = "" + e.Row.Cells(6).Text = "" + e.Row.Cells(7).Text = "" Dim Texto = $"Devolución: {e.Row.DBCampo("SerieFolio")} | " Texto += If(e.Row.DBCampo("CveMovimiento").ToString = "", " SIN MOVIMIENTO DE ALMACÉN", $"Folio Almacén: {e.Row.DBCampo("Folio")}") diff --git a/asmx/WSApp.asmx b/asmx/WSApp.asmx index 7917b12e9..df4519040 100644 --- a/asmx/WSApp.asmx +++ b/asmx/WSApp.asmx @@ -43,6 +43,7 @@ Public Class WSApp ObjPS.Dispose() End Get End Property + Property GlobalDTMonedas() As DataTable Get GlobalDTMonedas = DirectCast(Application("GlobalDTMonedas"), DataTable) @@ -326,33 +327,42 @@ Public Class WSApp Application("GlobalDTCompProveedores") = value End Set End Property - Property GlobalDTProductosServicios(CveEmpresa As Integer, Optional CveClasificacion As Integer = -1, Optional CveClasificacionCosto As Integer = -1, Optional Estatus As Integer = 1, Optional CvePS As Integer = -1, Optional AplicaParaVenta As Integer = -1, Optional CveTipoPS As Integer = -1) As DataTable - Get - If CveEmpresa = -1 Then - GlobalDTProductosServicios = DirectCast(Application("GlobalDTProductosServicios"), EnumerableRowCollection(Of DataRow)).CopyToDataTable - Else - - Dim Cons = DirectCast(Application("GlobalDTProductosServicios"), EnumerableRowCollection(Of DataRow)) - Cons = Cons.Where((Function(a) Convert.ToInt32(a!CveEmpresa) = CveEmpresa)) - If CveClasificacion >= 0 Then Cons = Cons.Where((Function(a) Convert.ToInt32(a!CveClasificacion) = CveClasificacion)) - If CveClasificacionCosto >= 0 Then Cons = Cons.Where((Function(a) Convert.ToInt32(a!CveClasificacionCosto) = CveClasificacionCosto)) - If Estatus >= 0 Then Cons = Cons.Where((Function(a) Convert.ToInt32(a!CveEstado) = Estatus)) - If CvePS >= 0 Then Cons = Cons.Where((Function(a) Convert.ToInt32(a!CvePS) = CvePS)) - If AplicaParaVenta >= 0 Then Cons = Cons.Where((Function(a) Convert.ToInt32(a!AplicaParaVenta) = AplicaParaVenta)) - If CveTipoPS >= 0 Then Cons = Cons.Where((Function(a) Convert.ToInt32(a!CveTipoPS) = CveTipoPS)) - - 'Try, generado para cuando el resultado no tiene valores(The source contains no DataRows.), no detenga la ejecucion, no se le puso un count previo, porque el costo se duplica, al preguntar y luego ordenar y convertir a datatable - Try - GlobalDTProductosServicios = Cons.OrderBy(Function(a) a!PS).CopyToDataTable - Catch ex As Exception - GlobalDTProductosServicios = New DataTable - End Try - End If - - End Get - Set(value As DataTable) - Application("GlobalDTProductosServicios") = value - End Set + Public Property GlobalDTPSSimplificado(CveEmpresa As Integer, Optional CveClasificacion As Integer = -1, Optional PSCodigo As String = "-1", Optional Estatus As Integer = 1, Optional AplicaParaVenta As Integer = -1, Optional CvePS As Integer = -1) As DataTable + Get + Dim AppNombre As String = String.Format("GlobalDTPSSimplificado-{0}", CveEmpresa) + If CveEmpresa <> -1 Then + 'sino existe, recarga los datos + If Application(AppNombre) Is Nothing Then + Dim ObjPS As New ClsProductosServicios + If ObjPS.GetPSSimplificado(CveEmpresa) Then Application(AppNombre) = ObjPS.DtResultados.AsEnumerable() + ObjPS.Dispose() + + End If + + + Dim Cons = DirectCast(Application(AppNombre), EnumerableRowCollection(Of DataRow)) + + Cons = Cons.Where((Function(a) Convert.ToInt32(a!CveEmpresa) = CveEmpresa)) + If CveClasificacion >= 0 Then Cons = Cons.Where((Function(a) Convert.ToInt32(a!CveClasificacion) = CveClasificacion)) + If PSCodigo <> "-1" Then Cons = Cons.Where((Function(a) Convert.ToString(a!PSCodigo) = PSCodigo)) + If Estatus >= 0 Then Cons = Cons.Where((Function(a) Convert.ToInt32(a!CveEstado) = Estatus)) + If AplicaParaVenta >= 0 Then Cons = Cons.Where((Function(a) Convert.ToInt32(a!AplicaParaVenta) = AplicaParaVenta)) + If CvePS >= 0 Then Cons = Cons.Where((Function(a) Convert.ToInt32(a!CvePS) = CvePS)) + + Try + GlobalDTPSSimplificado = Cons.OrderBy(Function(a) a!PSCodigo).CopyToDataTable + Catch ex As Exception + GlobalDTPSSimplificado = New DataTable + End Try + + Else + GlobalDTPSSimplificado = DirectCast(Application(AppNombre), EnumerableRowCollection(Of DataRow)).CopyToDataTable + End If + End Get + Set(value As DataTable) + Dim AppNombre As String = String.Format("GlobalDTPSSimplificado-{0}", CveEmpresa) + Application(AppNombre) = value + End Set End Property Property GlobalDTClasificaciones(Optional CveEmpresa As Integer = -1, Optional CveCategoria As Integer = -1) As DataTable Get @@ -715,26 +725,39 @@ Public Class WSApp End If If ListaPS IsNot Nothing Then Dim Continuar As Boolean = False - Dim ObjPS As New ClsProductosServicios - For Each PS In ListaPS - If ObjPS.GetPSExistencias(PS.CvePS, -1, -1, CveEmpresa, -1, FechaMovto:=DateTime.Today.AddDays(1).ToString("yyyy/MM/dd HH:mm")) Then - If ObjPS.DtResultados.Rows.Count > 0 Then - Dim Existencia As Decimal = ObjPS.DtResultados.Rows(0)("Existencia").ToString().ToDecimal() - Dim CveTipoPS As Integer = ObjPS.DtResultados.Rows(0)("CveTipoPS").ToString().ToEntero() - - Continuar = (CveTipoPS = 2 AndAlso Existencia > 0) OrElse (CveTipoPS = 1) - - If Not Continuar Then - Retorno.Mensajes.Add($"El producto/servicio {ObjPS.DtResultados.Rows(0)("PS")} no tiene existencia.") - Exit For - End If - Else - Continuar = False - Retorno.Mensajes.Add("No se pudo comprobar la existencia.") - Exit For - End If - End If - Next + Dim ObjPS As New ClsProductosServicios + Try + For Each PS In ListaPS + Dim CveTipoPS As Integer = GlobalDTPSSimplificado(CveEmpresa, CvePS:=PS.CvePS).FiltroPrimeroValor("CveTipoPS").ToEntero() + If CveTipoPS > 0 Then + If CveTipoPS = 2 Then + If ObjPS.GetPSExistencias(PS.CvePS, -1, -1, CveEmpresa, -1, FechaMovto:=DateTime.Today.AddDays(1).ToString("yyyy/MM/dd HH:mm")) Then + If ObjPS.DtResultados.Rows.Count > 0 Then + Dim Existencia As Decimal = ObjPS.DtResultados.Rows(0)("Existencia").ToString().ToDecimal() + 'Dim CveTipoPS As Integer = ObjPS.DtResultados.Rows(0)("CveTipoPS").ToString().ToEntero() + + Continuar = Existencia > 0 + + If Not Continuar Then + Retorno.Mensajes.Add($"El producto/servicio {ObjPS.DtResultados.Rows(0)("PS")} no tiene existencia.") + Exit For + End If + Else + Continuar = False + Retorno.Mensajes.Add("No se pudo comprobar la existencia.") + Exit For + End If + End If + End If + Else + Continuar = False + Retorno.Mensajes.Add("No se pudo comprobar si es producto o servicio.") + End If + Next + Catch ex As Exception + OnError("Ocurrió un error al consultar la existencia", ex) + Continuar = False + End Try ObjPS.Dispose() If Continuar Then @@ -1374,8 +1397,8 @@ Public Class WSApp Row("Total") = (PS.Cantidad.Value * PS.Precio) Row("TotalImporte") = Math.Round(PS.Cantidad.Value * PS.Precio, 2) - - Row("SATClaveProdServ") = DrPS("SATClavePS") + + Row("SATClaveProdServ") = DrPS("SATClavePS") Row("SATClaveUM") = DrPS("SATClaveUnidadMedida") Row("EntregaDirecta") = EntregaDirecta From be84bb2f7dc54d03857b1345d77e910c689e3d33 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 1 Oct 2020 09:09:31 -0700 Subject: [PATCH 21/40] -- correccion de carga en gridview de solicitud de cancelaciones de proveedores --- Inicio.aspx | 10 +++++----- Inicio.aspx.vb | 3 ++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Inicio.aspx b/Inicio.aspx index d7c9313e4..f1548a284 100644 --- a/Inicio.aspx +++ b/Inicio.aspx @@ -907,7 +907,7 @@ + CssClass="table table-striped table-advance table-hover Widthall ScrollAD" data-sort="true" GridLines="None" Width="99%"> @@ -916,10 +916,10 @@
    - - - - + + + + <%-- diff --git a/Inicio.aspx.vb b/Inicio.aspx.vb index 657238190..d3b03624b 100644 --- a/Inicio.aspx.vb +++ b/Inicio.aspx.vb @@ -36,7 +36,7 @@ Partial Class Inicio If objventas.GetFacturasCanceladasPendientes(sb.ToString(), CveEmpresa) Then retorno = True End If - + gvCancelaPendiente.DataSource = objventas.DtResultados Else If showalert Then Alert("No se encontraron cancelaciones pendientes", ModExtensiones.TipoMensaje.MsgError) @@ -50,6 +50,7 @@ Partial Class Inicio retorno = False Me.OnError("Error al obtener cancelaciones pendientes: ", ex, "") End Try + gvCancelaPendiente.DataBind() Return retorno End Function From 6ef3ae0071f10847cbc856919c4bc76cce8d02f0 Mon Sep 17 00:00:00 2001 From: Rakcsle Supertramp Date: Thu, 1 Oct 2020 13:53:06 -0700 Subject: [PATCH 22/40] Correcion Filtro Estatus Cliente --- Bancos/PolizaCheque.aspx.vb | 100 +++++++++++++++++++----------------- Ventas/CatClientes.aspx | 2 +- 2 files changed, 53 insertions(+), 49 deletions(-) diff --git a/Bancos/PolizaCheque.aspx.vb b/Bancos/PolizaCheque.aspx.vb index 56533019e..f27450da1 100644 --- a/Bancos/PolizaCheque.aspx.vb +++ b/Bancos/PolizaCheque.aspx.vb @@ -403,54 +403,58 @@ Partial Class Bancos_PolizaCheque CodigoCuenta = "" NombreCuenta = "" - If drt("IdCtaContable").ToString.ToEntero > 0 Then 'DtCuentasContables - Dim drr As DataRow = DtCuentasContables.FiltroPrimero(String.Format("Id={0}", drt("IdCtaContable").ToString)) - - - If drr IsNot Nothing Then - IdCuenta = drt("IdCtaContable").ToString.ToEntero - CodigoCuenta = drr("CuentaFormato").ToString() - NombreCuenta = drr("Nombre").ToString() - 'Cuenta = drr("Nombre").ToString() - End If - EsComodin = 0 - - - ElseIf drt("CveConcepto").ToString = "30" Then - 'saco la clave de la cuenta bancaria seleccionada - If DdlCuenta.SelectedValue.ToEntero > 0 And drt("CveConcepto").ToString = "30" Then 'DtCuentasContables - Dim drr As DataRow = DtCuentasContables.FiltroPrimero(String.Format("Id={0}", IdCuentaBancos(DdlCuenta.SelectedValue.ToEntero))) - If drr IsNot Nothing Then - IdCuenta = drr("Id").ToString.ToEntero - CodigoCuenta = drr("CuentaFormato").ToString() - NombreCuenta = drr("Nombre").ToString() - ' Cuenta = drr("Nombre").ToString() - EsComodin = 1 - Else - - ' Rad.Checked = False - If UsuarioActual.CveEmpresa <> 126 Then - Alert("La Cuenta Bancaria no se ha vinculado a la cuenta contable", TipoMensaje.MsgAdvertencia) - GvMov.DataBind() - UPMovs.Update() - Exit Sub - End If - - End If - End If - ElseIf drt("CveConcepto").ToString.ToEntero = 135 And IdCtaFondoGarantia > 0 Then - - Dim drr As DataRow = DtCuentasContables.FiltroPrimero(String.Format("Id={0}", IdCtaFondoGarantia)) - - IdCuenta = IdCtaFondoGarantia - CodigoCuenta = drr("CuentaFormato").ToString() - NombreCuenta = drr("Nombre").ToString() - 'Cuenta = drr("Nombre").ToString() - - EsComodin = 0 - - End If - + If UsuarioActual.Empresa.UsaContabilidad Then + If drt("IdCtaContable").ToString.ToEntero > 0 Then 'DtCuentasContables + Dim drr As DataRow = DtCuentasContables.FiltroPrimero(String.Format("Id={0}", drt("IdCtaContable").ToString)) + + + If drr IsNot Nothing Then + IdCuenta = drt("IdCtaContable").ToString.ToEntero + CodigoCuenta = drr("CuentaFormato").ToString() + NombreCuenta = drr("Nombre").ToString() + 'Cuenta = drr("Nombre").ToString() + End If + EsComodin = 0 + + + ElseIf drt("CveConcepto").ToString = "30" Then + 'saco la clave de la cuenta bancaria seleccionada + If DdlCuenta.SelectedValue.ToEntero > 0 And drt("CveConcepto").ToString = "30" Then 'DtCuentasContables + Dim drr As DataRow = DtCuentasContables.FiltroPrimero(String.Format("Id={0}", IdCuentaBancos(DdlCuenta.SelectedValue.ToEntero))) + If drr IsNot Nothing Then + IdCuenta = drr("Id").ToString.ToEntero + CodigoCuenta = drr("CuentaFormato").ToString() + NombreCuenta = drr("Nombre").ToString() + ' Cuenta = drr("Nombre").ToString() + EsComodin = 1 + Else + + ' Rad.Checked = False + If UsuarioActual.CveEmpresa <> 126 Then + Alert("La Cuenta Bancaria no se ha vinculado a la cuenta contable", TipoMensaje.MsgAdvertencia) + GvMov.DataBind() + UPMovs.Update() + Exit Sub + End If + + End If + End If + ElseIf drt("CveConcepto").ToString.ToEntero = 135 And IdCtaFondoGarantia > 0 Then + + Dim drr As DataRow = DtCuentasContables.FiltroPrimero(String.Format("Id={0}", IdCtaFondoGarantia)) + + IdCuenta = IdCtaFondoGarantia + CodigoCuenta = drr("CuentaFormato").ToString() + NombreCuenta = drr("Nombre").ToString() + 'Cuenta = drr("Nombre").ToString() + + EsComodin = 0 + + End If + End If + + + Dim dr As DataRow = DtMovimientos.NewRow dr("IdCuenta") = IdCuenta dr("CodigoCuenta") = CodigoCuenta & "
    " & NombreCuenta diff --git a/Ventas/CatClientes.aspx b/Ventas/CatClientes.aspx index 08b7edadf..cb3868201 100644 --- a/Ventas/CatClientes.aspx +++ b/Ventas/CatClientes.aspx @@ -60,7 +60,7 @@ Todos Activo - Inactivo + Inactivo
    From e1a5d171ba97d88d730ed99a4089d287d45df11e Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Fri, 2 Oct 2020 12:53:36 -0700 Subject: [PATCH 23/40] - --- Compras/PopUpVerFactura.aspx.vb | 10 +- Empresas/72/Formatos/Factura.rdlc | 44 ++----- Empresas/72/Formatos/NotaCredito.rdlc | 158 +++++++---------------- Empresas/72/Formatos/NotaDevolucion.rdlc | 108 +++------------- Empresas/72/Formatos/Pedido.rdlc | 77 ++--------- Empresas/72/Formatos/Remision.rdlc | 100 ++++---------- General/RepPaqueteriasGuias.aspx.cs | 2 +- Inventarios/RepFletes.aspx | 10 ++ Inventarios/RepFletes.aspx.vb | 51 +++++++- Ventas/CatPS.aspx | 26 +++- Ventas/CatPS.aspx.vb | 12 ++ 11 files changed, 210 insertions(+), 388 deletions(-) diff --git a/Compras/PopUpVerFactura.aspx.vb b/Compras/PopUpVerFactura.aspx.vb index 409b4be64..482e6026a 100644 --- a/Compras/PopUpVerFactura.aspx.vb +++ b/Compras/PopUpVerFactura.aspx.vb @@ -2703,6 +2703,9 @@ Partial Class PopUpVerFactura params.Add(New ReportParameter("LogoPath", "")) End If + Dim DepartamentoRecibe As String = GlobalDTRHPersonal(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Departamento", String.Format("NombreCompleto = '{0}'", Recibio)) + Dim DepartamentoEntrego As String = GlobalDTRHPersonal(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Departamento", String.Format("NombreCompleto = '{0}'", Capturo)) + params.Add(New ReportParameter("Empresa", UsuarioActual.Empresa.Empresa)) params.Add(New ReportParameter("Concepto", "Salida por resguardo")) params.Add(New ReportParameter("Almacen", Almacen)) @@ -2712,12 +2715,17 @@ Partial Class PopUpVerFactura params.Add(New ReportParameter("Descuentos", "")) params.Add(New ReportParameter("IVA", "")) params.Add(New ReportParameter("Total", "")) - 'params.Add(New ReportParameter("NombreEntrego", String.Format("ENTREGÓ{0}{1}", vbCrLf, Capturo))) + params.Add(New ReportParameter("NombreEntrego", String.Format("ENTREGÓ{0}{1}", vbCrLf, Capturo))) params.Add(New ReportParameter("NombreRecibio", Recibio)) params.Add(New ReportParameter("PuestoRecibio", PuestoEntrego)) params.Add(New ReportParameter("PuestoEntrego", PuestoRecibio)) + If UsuarioActual.CveEmpresa = 72 Then + params.Add(New ReportParameter("Sucursal", SubProyecto)) + params.Add(New ReportParameter("DepartamenteRecibio", DepartamentoRecibe)) + params.Add(New ReportParameter("DepartamentoEntrego", DepartamentoEntrego)) + End If params.Add(New ReportParameter("FechaMovimiento", FechaMovimiento.ToString("dd/MM/yyyy"))) params.Add(New ReportParameter("UsuarioImprimio", NombreCapturo)) params.Add(New ReportParameter("Observaciones", Observaciones)) diff --git a/Empresas/72/Formatos/Factura.rdlc b/Empresas/72/Formatos/Factura.rdlc index f55ce53db..fef85c978 100644 --- a/Empresas/72/Formatos/Factura.rdlc +++ b/Empresas/72/Formatos/Factura.rdlc @@ -787,7 +787,7 @@ Start true - 9.87049in + 9.18657in 0.06548in 1.67778in 8.23221in @@ -1367,7 +1367,7 @@ true - 7.30179in + 6.61787in 0.05817in 1.3508in 8.23035in @@ -3408,7 +3408,7 @@ Textbox54 - 6.7921in + 6.10818in 0.16632cm 0.36385in 4.94037in @@ -3444,7 +3444,7 @@ Textbox33 - 17.25192cm + 15.51477cm 12.71485cm 0.44794cm 8.33799cm @@ -3474,7 +3474,7 @@ Textbox5 - 18.31722cm + 16.58007cm 0.16632cm 0.0882cm 20.88652cm @@ -3732,7 +3732,7 @@ Textbox5 - 14.71903cm + 12.98188cm 0.14775cm 0.0882cm 20.90509cm @@ -4038,7 +4038,7 @@ DsOC - 15.01537cm + 13.27822cm 3.16661cm 1.61479cm 15.04148cm @@ -4067,7 +4067,7 @@ Textbox5 - 16.9459cm + 15.20875cm 0.22358cm 0.0882cm 20.90509cm @@ -4097,24 +4097,6 @@ - - Embedded - BannerFacturaSIG - Fit - 12.35498cm - 0.14775cm - 2.18766cm - 10.48062cm - 25 - - =iif(len(Parameters!Observaciones.Value) > 100, true,false) - - - - - true true @@ -4140,7 +4122,7 @@ 2.22035in 0.18861in 6.06817in - 26 + 25 @@ -4416,7 +4398,7 @@ 0.06548in 0.34081in 2.08542in - 27 + 26 @@ -4910,11 +4892,11 @@ true - 22.07352cm + 20.33637cm 0.14775cm 2.97096cm 20.69254cm - 28 + 27 =Microsoft.VisualBasic.Interaction.IIF(First(Fields!SerieFolio.Value, "DataSet4") <> "", False, True) @@ -4925,7 +4907,7 @@ - 29.49675cm + 27.72404cm - Culiacán, Sin. + Culiacán, Sin. Tijuana, B.C - + . - - - - - Tijuana, B.C + Aguascalientes, Ags. - . + - + - - - Aguascalientes, Ags. - - - - - - - - - - @@ -1678,21 +1647,13 @@ - + - - - - (664) - 645 1814 + 645 1814 - - - - - - - - (449) - - 1.69533cm - 6.74703cm - 0.38833cm - 0cm - 10 - - - - - - 1.72708cm - 9.41258cm - 0.38833cm - 0cm - 11 - - - - true true @@ -1907,7 +1828,7 @@ 0.48382cm 1.14285cm 4.08234cm - 12 + 10 @@ -2169,7 +2090,7 @@ 5.29091in 1.51932in 2.9844in - 13 + 11 @@ -2748,7 +2669,7 @@ 0.17067in 0.37206in 8.10465in - 14 + 12 @@ -2777,7 +2698,7 @@ 0.4335cm 0.43419cm 20.41027cm - 15 + 13 @@ -2788,21 +2709,6 @@ 2pt - - Embedded - Microsoft - Fit - 8.23074cm - 0.5393cm - 2.37313cm - 11.6363cm - 16 - - - - true true @@ -2822,7 +2728,7 @@ 14.3522cm 0.14316cm 6.66711cm - 17 + 14 @@ -2859,7 +2765,7 @@ 3.58384in 0.18861in 4.69148in - 18 + 15 @@ -2977,15 +2883,39 @@ 14.3787cm 0.48004cm 6.64061cm - 19 + 16 + + 1.53874cm + 6.09322cm + 0.38617cm + 0cm + 17 + + + + + + 1.53874cm + 8.82941cm + 0.38617cm + 0cm + 18 + + + + - 20.24114cm + 19.3151cm - Culiacán, Sin. + Culiacán, Sin. Tijuana, B.C - + . - - - - - Tijuana, B.C + Aguascalientes, Ags. - . + - + - - - Aguascalientes, Ags. - - - - - - - - - - @@ -1178,21 +1147,13 @@ - + - - - - (664) - 645 1814 + 645 1814 - - - - - - - - (449) - - Embedded - Microsoft - Fit - 8.19546cm - 0.116cm - 2.03729cm - 11.6363cm - 17 - - - - true true @@ -2308,7 +2238,7 @@ 14.54911cm 0.14316cm 6.66711cm - 18 + 17 @@ -2345,7 +2275,7 @@ 3.1938in 0.18861in 5.15904in - 19 + 18 @@ -2463,7 +2393,7 @@ 14.57561cm 0.48004cm 6.64061cm - 20 + 19 @@ -2471,7 +2401,7 @@ - 17.08592cm + 15.763cm - Culiacán, Sin. + Culiacán, Sin. Tijuana, B.C - + . - - - - - Tijuana, B.C + Aguascalientes, Ags. - . + - + - - - Aguascalientes, Ags. - - - - - - - - - - @@ -380,21 +349,13 @@ - + - - - - (664) - 645 1814 + 645 1814 - - - - - - - - (449) - =Microsoft.VisualBasic.Interaction.IIF(Parameters!Sucursal.Value = "MATRIZ", "(662) 214 2200", Microsoft.VisualBasic.Interaction.IIF(Parameters!Sucursal.Value = "Tijuana", "(664) 645 1814", Microsoft.VisualBasic.Interaction.IIF(Parameters!Sucursal.Value = "Culiacán", "(667) 715 8533", Microsoft.VisualBasic.Interaction.IIF(Parameters!Sucursal.Value = "Aguascalientes", "(449) 913 4418", "")))) + =Microsoft.VisualBasic.Interaction.IIF(Parameters!Sucursal.Value = "MATRIZ" or Parameters!Sucursal.Value = "Hermosillo", "(662) 214 2200", Microsoft.VisualBasic.Interaction.IIF(Parameters!Sucursal.Value = "Tijuana", "(664) 645 1814", Microsoft.VisualBasic.Interaction.IIF(Parameters!Sucursal.Value = "Culiacán", "(667) 715 8533", Microsoft.VisualBasic.Interaction.IIF(Parameters!Sucursal.Value = "Aguascalientes", "(449) 913 4418", "")))) - Culiacán, Sin. + Culiacán, Sin. - - - - - + - + - + - + | - + | Textbox10 0.13104cm - 3.45239cm + 3.23917cm 2.14312cm - 9.51761cm + 10.69394cm 4 - - 1.69533cm - 6.87784cm - 0.38833cm - 0cm - 7 - - - - - - 1.72708cm - 9.54339cm - 0.38833cm - 0cm - 8 - - - - true true @@ -1874,7 +1842,7 @@ 9.54339cm 5.00803cm 6.98968cm - 9 + 7 @@ -1986,7 +1954,7 @@ 16.60715cm 4.98157cm 4.44569cm - 10 + 8 @@ -2569,7 +2537,7 @@ 0.06548in 0.37206in 8.22304in - 11 + 9 @@ -2595,7 +2563,7 @@ 0.16632cm 0.14316cm 20.88652cm - 12 + 10 @@ -2607,24 +2575,6 @@ 2pt - - Embedded - BannerFacturaSIG - Fit - 11.12025cm - 0.22358cm - 2.18766cm - 10.48062cm - 13 - - =iif(len(Parameters!Observaciones.Value) > 100, true,false) - - - - - true true @@ -2644,7 +2594,7 @@ 15.11602cm 0.14316cm 5.93682cm - 14 + 11 @@ -2681,7 +2631,7 @@ 1.063in 0.18861in 7.22552in - 15 + 12 @@ -2707,11 +2657,11 @@ Textbox5 - 14.44724cm + 12.31999cm 0.16632cm 0.0882cm 20.66427cm - 16 + 13 @@ -2745,7 +2695,7 @@ 0.19807cm 0.34219cm 14.74156cm - 17 + 14 @@ -2863,7 +2813,7 @@ 15.11602cm 0.48004cm 5.93682cm - 18 + 15 @@ -2895,7 +2845,7 @@ 5.58063cm 0.6cm 5.12357cm - 19 + 16 =iif(Parameters!EstatusFactura.Value<>"",False,True) @@ -2935,7 +2885,7 @@ 5.58063cm 0.6cm 5.12357cm - 20 + 17 =iif(Parameters!EstatusEntrega.Value<>"",False,True) @@ -2951,7 +2901,7 @@ - 18.76339cm + 16.69964cm