Option Explicit On Option Strict On Imports System.Data Imports Extensiones Imports msExcel = Microsoft.Office.Interop.Excel Imports VBIDE Imports System.IO Imports Microsoft.Reporting.WebForms Partial Class OC Inherits ClsPaginas Private Shared missing As Object = System.Reflection.Missing.Value #Region "Propiedades" Public Property SubTotalOC As String Get SubTotalOC = IIf(IsNothing(ViewState("SubTotalOC")), "0", ViewState("SubTotalOC")).ToString End Get Set(value As String) ViewState("SubTotalOC") = value End Set End Property Private Property TipoOC As String Get TipoOC = ViewState("TipoOC").ToString End Get Set(value As String) ViewState("TipoOC") = value End Set End Property Private Property TipoLargo As String Get TipoLargo = ViewState("TipoLargo").ToString End Get Set(value As String) ViewState("TipoLargo") = value End Set End Property Private Property TipoOS As Boolean Get TipoOS = CBool(ViewState("TipoOS").ToString) End Get Set(value As Boolean) ViewState("TipoOS") = value End Set End Property Private Property CveOrdenCompra As Integer Get CveOrdenCompra = ViewState("CveOrdenCompra").ToString.ToEntero End Get Set(value As Integer) ViewState("CveOrdenCompra") = value End Set End Property Private Property Folio As Integer Get Folio = ViewState("Folio").ToString.ToEntero End Get Set(value As Integer) ViewState("Folio") = value End Set End Property Private Property CveUsuario As Integer Get CveUsuario = ViewState("CveUsuario").ToString.ToEntero End Get Set(value As Integer) ViewState("CveUsuario") = value End Set End Property Private Property CveEstatus As Integer Get CveEstatus = ViewState("CveEstatus").ToString.ToEntero End Get Set(value As Integer) ViewState("CveEstatus") = value End Set End Property Private Property CveEstatusSiguiente As Integer Get CveEstatusSiguiente = ViewState("CveEstatusSiguiente").ToString.ToEntero End Get Set(value As Integer) ViewState("CveEstatusSiguiente") = value End Set End Property Private Property CveEstatusAnterior As Integer Get CveEstatusAnterior = ViewState("CveEstatusAnterior").ToString.ToEntero End Get Set(value As Integer) ViewState("CveEstatusAnterior") = value End Set End Property Private Property CveCotizacion As Integer Get Return If(IsNothing(ViewState("CveCotizacion")), -1, ViewState("CveCotizacion").ToString.ToEntero) End Get Set(value As Integer) ViewState("CveCotizacion") = value End Set End Property Private Property EsNuevo As Boolean Get EsNuevo = DirectCast(ViewState("EsNuevo"), Boolean) End Get Set(value As Boolean) ViewState("EsNuevo") = value End Set End Property Private Property RequiereSubProyecto As Boolean Get RequiereSubProyecto = DirectCast(ViewState("RequiereSubProyecto"), Boolean) End Get Set(value As Boolean) ViewState("RequiereSubProyecto") = value End Set End Property Private Property DtDetalle As DataTable Get DtDetalle = DirectCast(ViewState("DtDetalle"), DataTable) End Get Set(ByVal value As DataTable) ViewState("DtDetalle") = value End Set End Property Private Property DtHistorial As DataTable Get DtHistorial = DirectCast(ViewState("DtHistorial"), DataTable) End Get Set(ByVal value As DataTable) ViewState("DtHistorial") = value End Set End Property Private Property DrEliminados As ArrayList Get DrEliminados = DirectCast(ViewState("DrEliminados"), ArrayList) End Get Set(ByVal value As ArrayList) ViewState("DrEliminados") = value End Set End Property Private Property NumCotizaciones As Integer Get NumCotizaciones = ViewState("NumCotizaciones").ToString.ToEntero End Get Set(value As Integer) ViewState("NumCotizaciones") = value End Set End Property Private Property NumCotizacionesGanadoras As Integer Get NumCotizacionesGanadoras = ViewState("NumCotizacionesGanadoras").ToString.ToEntero End Get Set(value As Integer) ViewState("NumCotizacionesGanadoras") = value End Set End Property Private Property TotalCotizacionesGanadoras As Decimal Get TotalCotizacionesGanadoras = ViewState("TotalCotizacionesGanadoras").ToString.ToDecimal End Get Set(value As Decimal) ViewState("TotalCotizacionesGanadoras") = value End Set End Property Private Property DtCotizaciones As DataTable Get DtCotizaciones = DirectCast(ViewState("DtCotizaciones"), DataTable) End Get Set(ByVal value As DataTable) ViewState("DtCotizaciones") = value End Set End Property Private Property DtEstatusUsuarios As DataTable Get DtEstatusUsuarios = DirectCast(ViewState("DtEstatusUsuarios"), DataTable) End Get Set(ByVal value As DataTable) ViewState("DtEstatusUsuarios") = value End Set End Property Private Property CveEstatusInicial As Integer Get CveEstatusInicial = ViewState("CveEstatusInicial").ToString.ToEntero End Get Set(value As Integer) ViewState("CveEstatusInicial") = value End Set End Property Private Property EstatusInicial As String Get EstatusInicial = ViewState("EstatusInicial").ToString End Get Set(value As String) ViewState("EstatusInicial") = value End Set End Property Private Property CveEstatusFinalOK As Integer Get CveEstatusFinalOK = ViewState("CveEstatusFinalOK").ToString.ToEntero End Get Set(value As Integer) ViewState("CveEstatusFinalOK") = value End Set End Property Private Property EstatusFinalOK As String Get EstatusFinalOK = ViewState("EstatusFinalOK").ToString End Get Set(value As String) ViewState("EstatusFinalOK") = value End Set End Property Private Property CveEstatusFinalError As Integer Get CveEstatusFinalError = ViewState("CveEstatusFinalError").ToString.ToEntero End Get Set(value As Integer) ViewState("CveEstatusFinalError") = value End Set End Property Private Property EstatusFinalError As String Get EstatusFinalError = ViewState("EstatusFinalError").ToString End Get Set(value As String) ViewState("EstatusFinalError") = value End Set End Property Private Property CveEstatusInicialOC As Integer Get CveEstatusInicialOC = ViewState("CveEstatusInicialOC").ToString.ToEntero End Get Set(value As Integer) ViewState("CveEstatusInicialOC") = value End Set End Property Private Property SubProyectosNoAutorizados As List(Of String) Get SubProyectosNoAutorizados = CType(ViewState("SubProyectosNoAutorizados"), Global.System.Collections.Generic.List(Of String)) End Get Set(value As List(Of String)) ViewState("SubProyectosNoAutorizados") = value End Set End Property Private Property DtAC As DataTable Get DtAC = DirectCast(ViewState("DtAC"), DataTable) End Get Set(ByVal value As DataTable) ViewState("DtAC") = value End Set End Property Private Property DtPresupuestos As DataTable Get Return CType(ViewState("DtPresupuestos"), DataTable) End Get Set(value As DataTable) ViewState("DtPresupuestos") = value End Set End Property Private Property VerificaPresupuesto As Boolean Get VerificaPresupuesto = DirectCast(ViewState("VerificaPresupuesto"), Boolean) End Get Set(ByVal value As Boolean) ViewState("VerificaPresupuesto") = value End Set End Property Private Property LigaOCs As String Get LigaOCs = ViewState("LigaOCs").ToString End Get Set(ByVal value As String) ViewState("LigaOCs") = value End Set End Property Public Property CveOCGeneradas As List(Of Integer) Get CveOCGeneradas = DirectCast(ViewState("CveOCGeneradas"), List(Of Integer)) End Get Set(ByVal value As List(Of Integer)) ViewState("CveOCGeneradas") = value End Set End Property Public Property IDPolizasGeneradas As List(Of Integer) Get IDPolizasGeneradas = DirectCast(ViewState("IDPolizasGeneradas"), List(Of Integer)) End Get Set(ByVal value As List(Of Integer)) ViewState("IDPolizasGeneradas") = value End Set End Property Public Property FoliosPolizas As List(Of Integer) Get FoliosPolizas = DirectCast(ViewState("FoliosPolizas"), List(Of Integer)) End Get Set(ByVal value As List(Of Integer)) ViewState("FoliosPolizas") = value End Set End Property Private Property EditarOC As Boolean Get EditarOC = CBool(ViewState("EditarOC").ToString) End Get Set(value As Boolean) ViewState("EditarOC") = value End Set End Property Private Property IVAEditado As Boolean Get IVAEditado = CBool(ViewState("IVAEditado").ToString) End Get Set(value As Boolean) ViewState("IVAEditado") = value End Set End Property Private Property EjercicioAC As Integer Get Return ViewState("EjercicioAC").ToString.ToEntero End Get Set(value As Integer) ViewState("EjercicioAC") = value End Set End Property Private Property IDPolizaPresupuestal As Integer Get Return ViewState("IDPolizaPresupuestal").ToString.ToEntero End Get Set(value As Integer) ViewState("IDPolizaPresupuestal") = value End Set End Property #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Page.IsPostBack Then InicializarValores() CargaProveedores() 'CARGA YA REGISTRADO If Request("OC") IsNot Nothing AndAlso IsNumeric(Request("OC")) AndAlso Request("OC").ToEntero > 0 Then EsNuevo = False ViewState("CveOrdenCompra") = Request("OC") If UsuarioActual.TienePermisoProceso(131) Then EditarOC = True Else EditarOC = False End If CargaDatos(CveOrdenCompra) 'NUEVO Else EsNuevo = True CargarOptionAnticipos() TxtDescrip.Attributes.Add("onKeyUp", String.Format("SetText({0}, {1})", TxtDescrip.ClientID, TxtJustificacion.ClientID)) ImgAddObs.Visible = False CreaDTDetalles() If Not IsNothing(Request("CveCotizacion")) AndAlso IsNumeric(Request("CveCotizacion")) Then CveCotizacion = Request("CveCotizacion").ToString.ToEntero If CveCotizacion > 0 Then TRCotizacion.Visible = True HLCotizacion.NavigateUrl = String.Format("/Ventas/Ventas.aspx?CveVenta={0}", CveCotizacion) Dim ObjVentas As New ClsVentas() If ObjVentas.GetVenta(CveCotizacion, UsuarioActual.CveEmpresa) Then If ObjVentas.DtResultados IsNot Nothing AndAlso ObjVentas.DtResultados.Rows.Count > 0 Then Dim DrCot As DataRow = ObjVentas.DtResultados.Rows(0) If DrCot IsNot Nothing Then HLCotizacion.Text = String.Format("{0}-{1}", DrCot("Serie"), DrCot("Folio")) 'CveVendedor DdlVendedor.SelectedValueExist(DrCot("CveVendedor").ToString()) Ddlcliente.SelectedValueExist(DrCot("CveCliente").ToString()) End If End If End If ObjVentas.Dispose() End If CargaDetallesCotizacion() End If ViewState("TipoOC") = If(Request("Tipo") IsNot Nothing, Request("Tipo").ToUpper, "REQ") If TipoOC = "OC" Then ViewState("TipoLargo") = "Orden de Compra" ElseIf TipoOC = "OS" Then ViewState("TipoLargo") = "Orden de Servicio" Else ViewState("TipoLargo") = "Requisicion" End If If TipoOC = "OC" Then ChkCotizacion.Visible = False If TipoOC = "OS" Then TipoOC = "REQ" TipoOS = True End If CargaEstatusInicialFinal() CargaEstatusUsuarios(-1, True) CargaEstatusOC() CargaEstatusUsuarios(CboE.SelectedValue.ToEntero, True) 'Estatus Default 66 If UsuarioActual.CveEmpresa = 66 Then CboE.SelectedValueExist(18) End If 'Poner el Estatus mas Avanzado ' If DtEstatusUsuarios.Rows.Count > 0 Then CboE.SelectedValue = DtEstatusUsuarios.MAX("Nivel").ToEntero Else DesHabilitar() TxtFecha.Text = Now.ToString("dd/MM/yyyy") lblNombreUsuario.Text = UsuarioActual.Nombre ViewState("CveOrdenCompra") = 0 CargaFolios() BtnCancelarPrevio.Disabled = True If CveEstatusInicial = -1 Then Alert("No tiene configurado un Estatus Inicial", TipoMensaje.MsgAdvertencia) : BtnGuardar.Enabled = False If TipoOC = "OC" AndAlso CboE.SelectedValue.ToEntero = CveEstatusFinalOK Then PnlProveedor.Visible = True End If If (TipoOC = "REQ" OrElse TipoOC = "OS") AndAlso CboE.SelectedValue.ToEntero = CveEstatusFinalOK Then PnlProveedor.Visible = True End If If UsuarioActual.Empresa.UsaAC Then ActivaAC() End If hplAgregarCotizacion.Visible = False hplEnviarCorreo.Visible = False End If 'ASIGNA ESTATUS OC CboE_SelectedIndexChanged(New Object, New EventArgs) 'CARGA TITULO TIPO OC (REQ, OC, OS) lblTitulo.Text = TipoLargo 'VALIDA PERMISOS If UsuarioActual.TienePermisoProceso(123) Then RFVcodigo.Enabled = True End If 'SI REQUIERE COTIZACION If ChkCotizacion.Checked = False AndAlso CveEstatus <> CveEstatusFinalOK Then PnlProveedor.Visible = True : UPProv.Update() RVProveedores.Enabled = False End If 'SOLO MUESTRA SUBPROYECTO If UsuarioActual.Empresa.GralSoloProyecto Then DdlProyecto.Visible = False TituloSubProyecto.Visible = False DdlSubProyecto.DataSource = DtEstatusUsuarios.FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}) 'If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa, 1)) ' DtEstatusUsuarios.FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}) DdlSubProyecto.DataBind() DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1")) End If 'FUNCIONALIDAD 105 CargaFuncionalidad105() 'ACTIVAR MODIFICAR IVA ActivarIVAEditable() 'ACTIVAR RETENCIONES ActivarRetenciones() 'ACTIVA DESCUENTOS ActivarDescuentos() End If Me.Form.DefaultButton = "" End Sub #Region " FUNCIONALIDAD 105 " Private Sub CargaFuncionalidad105() DdlP2.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1") If DdlP2.UsaWebService Then If isWhitFamily() Then DdlP2.ddlWS.Attributes.Add("data-idSubFamilia", DdlClasificacion.ClientID) Else DdlP2.ddlWS.Attributes.Add("data-idClasificacion", DdlClasificacion.ClientID) End If Else DdlP2.ddl.Items.Add(New ListItem("Seleccione", "-1")) DdlP2.ddl.Items.Add(New ListItem("*** Actualizar listado de Productos o Servicios ***", "-2")) End If End Sub #End Region #Region " CARGA VALORES INICIALES " Private Sub InicializarValores() ViewState("NumCotizacionesGanadoras") = 0 ViewState("TotalCotizacionesGanadoras") = 0 IVAEditado = False ViewState("TipoOC") = "OC" ViewState("CveEstatus") = -1 ViewState("CveEstatusSiguiente") = -1 EditarOC = False CveEstatusFinalOK = -2 BtnCancelarPrevio.Disabled = True Folio = 0 ViewState("ArrayCCNombre") = "" ViewState("ArrayCC") = "" ViewState("EjercicioAC") = -1 ViewState("CveUsuario") = -1 IDPolizaPresupuestal = -1 Dim drE As DataRow = GlobalDTOCEstatus(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("Tipo = 'OC' AND TipoTermino = 3")).FiltroPrimero("") If drE IsNot Nothing Then ViewState("CveEstatusInicialOC") = drE("CveEstatus").ToString.ToEntero ViewState("LigaOCs") = "" ViewState("CveOCGeneradas") = New List(Of Integer) ViewState("IDPolizasGeneradas") = New List(Of Integer) ViewState("FoliosPolizas") = New List(Of Integer) Session("FileUpload") = "" Session("FileExtension") = "" Session("FileFolder") = "" TipoOS = False RequiereSubProyecto = If(UsuarioActual.CveEmpresa = 48, False, True) txtPrecioUnitario.Attributes.Add("onKeyUp", "obtenertotal();") TxtCant.Attributes.Add("onKeyUp", "obtenertotal();") Dim script As String = "obtenertotal();" ScriptManager.RegisterStartupScript(Me, GetType(Page), "anioactual", script, True) VerificaPresupuesto = False RVSubProyecto.Enabled = If(RequiereSubProyecto = True, True, False) GvD.Columns(10).Visible = False CargaMonedas() CargaClasificaciones() 'CargaUnidadesMedida() BtnCancelar.Attributes.Add("disabled", "disabled") TxtCancelar.Attributes.Add("onKeyUp", "fncCan(this)") CargaTipoActivoFijo() DrEliminados = New ArrayList DdlSAUsuario.DataSource = GlobalDTUsuarios(-1, UsuarioActual.CveEmpresa) DdlSAUsuario.DataBind() 'If UsuarioActual.TienePermisoProceso(37) Then ' CboUnidadMedida.DataSource = GlobalDTUnidadesMedida ' CboUnidadMedida.DataBind() 'End If End Sub Private Sub CreaDTDetalles() DtDetalle = New DataTable DtDetalle.Columns.Add("Cantidad", GetType(Double)) DtDetalle.Columns.Add("CveUnidadMedida", GetType(Integer)) DtDetalle.Columns.Add("UM", GetType(String)) DtDetalle.Columns.Add("CvePS", GetType(Integer)) DtDetalle.Columns.Add("PS", GetType(String)) DtDetalle.Columns.Add("IVAPS", GetType(Double)) DtDetalle.Columns.Add("Observacion", GetType(String)) DtDetalle.Columns.Add("CveClasificacion", GetType(Integer)) DtDetalle.Columns.Add("Clasificacion", GetType(String)) DtDetalle.Columns.Add("CveProyecto", GetType(Integer)) DtDetalle.Columns.Add("Proyecto", GetType(String)) DtDetalle.Columns.Add("CveSubProyecto", GetType(Integer)) DtDetalle.Columns.Add("SubProyecto", GetType(String)) DtDetalle.Columns.Add("Importe", GetType(Double)) DtDetalle.Columns.Add("Descuento", GetType(Double)) DtDetalle.Columns.Add("Total", GetType(Double)) DtDetalle.Columns.Add("Codigo", GetType(String)) DtDetalle.Columns.Add("CodigoAF", GetType(String)) DtDetalle.Columns.Add("CveActivoFijo", GetType(Integer)) DtDetalle.Columns.Add("TipoDato", GetType(Integer)) ' Tipo Dato '0' es Cuando es Nuevo, '1' para editar y '2' viene de la BD DtDetalle.Columns.Add("CveOrdenCompraDetalle", GetType(Integer)) DtDetalle.Columns.Add("CveOrdenCompra", GetType(Integer)) DtDetalle.Columns.Add("CveOrdenCompraPadre", GetType(Integer)) DtDetalle.Columns.Add("FolioOrdenCompraPadre", GetType(Integer)) DtDetalle.Columns.Add("CveOrdenCompraHija", GetType(Integer)) DtDetalle.Columns.Add("FolioOrdenCompraHija", GetType(Integer)) DtDetalle.Columns.Add("CvePresupuestoEgreso", GetType(Integer)) DtDetalle.Columns.Add("IdCuentaPorEjercer", GetType(String)) DtDetalle.Columns.Add("IdCuentaComprometido", GetType(String)) DtDetalle.Columns.Add("CveProgramaOperativo", GetType(Integer)) DtDetalle.Columns.Add("CveUnidadAdministrativa", GetType(Integer)) DtDetalle.Columns.Add("CveFuenteFinanciamiento", GetType(Integer)) DtDetalle.Columns.Add("CveTipoGasto", GetType(Integer)) DtDetalle.Columns.Add("CveClasificacionOG", GetType(Integer)) DtDetalle.Columns.Add("FolioCompra", GetType(Integer)) DtDetalle.Columns.Add("CveCompra", GetType(Integer)) DtDetalle.Columns.Add("CveProveedor", GetType(Integer)) ' DtDetalle.Columns.Add("ClasificacionOG", GetType(String)) End Sub Private Sub CargaDetallesCotizacion() If CveCotizacion > 0 Then Dim ObjVentas As New ClsVentas If ObjVentas.GetVentaDetalle(CveCotizacion) Then For Each RowV As DataRow In ObjVentas.DtResultados.Rows 'If Not IsNothing(RowV) Then Dim dr As DataRow = DtDetalle.NewRow dr("Cantidad") = RowV("Cantidad") dr("CveUnidadMedida") = RowV("CveUM") dr("UM") = RowV("UM") dr("CvePS") = RowV("CvePS") dr("PS") = RowV("PS") dr("IVAPS") = GlobalDTProductosServicios(UsuarioActual.CveEmpresa, -1, -1, ).FiltraParametros(String.Format("CvePS = {0}", dr("CvePS"))).Rows(0)("IVA").ToString.ToDouble dr("Observacion") = RowV("Obs") dr("CveClasificacion") = RowV("CveClasificacion") dr("Clasificacion") = RowV("Clasificacion") If UsuarioActual.Empresa.GralSoloProyecto Then dr("CveProyecto") = "-1" dr("Proyecto") = "Sin Proyecto" Else dr("CveProyecto") = RowV("CveProyecto") dr("Proyecto") = If(RowV("CveProyecto").ToString.ToEntero > 0, RowV("Proyecto"), "Sin Proyecto") End If dr("CveSubProyecto") = RowV("CveSubProyecto") dr("SubProyecto") = If(RowV("CveSubProyecto").ToString.ToEntero > 0, RowV("SubProyecto"), "Sin SubProyecto") dr("Importe") = 0 dr("Descuento") = 0 dr("Total") = 0 dr("CodigoAF") = "" dr("CveActivoFijo") = -1 dr("TipoDato") = 0 ' Tipo Dato '0' es Cuando es Nuevo, '1' para editar y '2' viene de la BD dr("CveOrdenCompraDetalle") = DtDetalle.MAX("CveOrdenCompraDetalle").ToEntero + 100 dr("CveOrdenCompra") = -1 'dr("CvePresupuestoEgreso") = HdnCvePresupuesto.Value.ToEntero dr("IdCuentaPorEjercer") = -1 dr("IdCuentaComprometido") = -1 dr("CveProgramaOperativo") = -1 dr("CveUnidadAdministrativa") = -1 dr("CveFuenteFinanciamiento") = -1 dr("CveTipoGasto") = -1 dr("CveClasificacionOG") = -1 DtDetalle.Rows.Add(dr) Next CargaDatosDetalles() End If ObjVentas.Dispose() End If End Sub Protected Sub CargaEstatusUsuarios(CveEstatusSiguiente As Integer, Optional HacerMerge As Boolean = False) Dim objEstatusUsuarios As New ClsOC If objEstatusUsuarios.GetEstatusUsuarios(UsuarioActual.CveUsuario, -1, -1, -1, UsuarioActual.CveEmpresa) Then If DtEstatusUsuarios Is Nothing Then DtEstatusUsuarios = objEstatusUsuarios.DtResultados.FiltraParametros(String.Format("Tipo = '{0}'", TipoOC), "CveEstatusSiguiente") ElseIf HacerMerge = True Then DtEstatusUsuarios.Merge(objEstatusUsuarios.DtResultados.FiltraParametros(String.Format("Tipo = '{0}'", TipoOC), "CveEstatusSiguiente")) End If End If objEstatusUsuarios.Dispose() End Sub Protected Sub CargaSuperior() If CboE.SelectedValue.ToEntero > 0 Then Dim RowActual As DataRow = GlobalDTOCEstatus(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveEstatus = {0}", CboE.SelectedValue)).Rows(0) hdnCveSuperior.Value = "-1" 'Si el TipoTermino es diferente de 1 (Autorizada) y 2 (Rechazada), revisar cual seria el superior If RowActual("TipoTermino").ToString.ToEntero <> 1 And RowActual("TipoTermino").ToString.ToEntero <> 2 Then Dim TotalT As Decimal = LblTotal.Text.Replace(",", "").Replace("$", "").ToDecimal For Each Row As DataRow In DtDetalle.FiltraParametros("", "", {"CveSubProyecto"}).Rows For Each RowE As DataRow In DtEstatusUsuarios.FiltraParametros(String.Format("{0} CveEstatus = {1} AND ((LimiteInferior IS NULL OR LimiteInferior <= {2}) AND (LimiteSuperior IS NULL OR LimiteSuperior >= {2})) ", If(Row("CveSubProyecto").ToString <> "", String.Format("CveSubProyecto = {0} AND ", Row("CveSubProyecto").ToString), ""), CboE.SelectedValue, TotalT)).Rows hdnCveSuperior.Value = RowE("CveSuperior").ToString Next Next uppEstatus.Update() End If End If End Sub Private Sub CargaFolios() Dim ObjFolios As New ClsGralFolios() TipoOC = If(TipoOS, "OS", TipoOC) If ObjFolios.GetFolios(If(TipoOC = "REQ", "Req", TipoOC), UsuarioActual.CveEmpresa) Then Dim DT As DataTable = ObjFolios.DtResultados.FiltraParametros("Estado = 'Activo'") 'Verificar primero en la sucursal del usuario If DT.FiltraParametros("CveSucursal = " + UsuarioActual.CveSucursal.ToString).Rows.Count > 0 Then ViewState("CveFolio") = DT.FiltraParametros("CveSucursal = " + UsuarioActual.CveSucursal.ToString).Rows(0)("CveFolio").ToString.ToEntero ViewState("FolioActual") = DT.FiltraParametros("CveSucursal = " + UsuarioActual.CveSucursal.ToString).Rows(0)("FActual").ToString lblFolio.Text = TipoOC + " " + DT.Rows(0)("FActual").ToString ElseIf DT.Rows.Count > 0 Then ViewState("CveFolio") = DT.Rows(0)("CveFolio").ToString.ToEntero ViewState("FolioActual") = DT.Rows(0)("FActual").ToString lblFolio.Text = TipoOC + " " + DT.Rows(0)("FActual").ToString Else Alert("No tiene registrados Folios en esta sucursal.", TipoMensaje.MsgAdvertencia) End If DT.Dispose() End If ObjFolios.Dispose() End Sub #End Region #Region " CARGA C O M B O S " Private Sub CargaMonedas() DdlMoneda.DataSource = GlobalDTMonedas DdlMoneda.DataBind() If UsuarioActual.CveEmpresa.Contiene(13, 14, 24) Then DdlMoneda.Items.Insert(0, New ListItem("Seleccione", "-1")) End If End Sub Private Sub CargaClasificaciones() Dim TipoClasif As Integer = -1 If isWhitFamily() Then DdlClasificacion.DataSource = GlobalDTSubFamilias(UsuarioActual.CveEmpresa) Else DdlClasificacion.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa) End If DdlClasificacion.DataBind() End Sub Private Sub CargaProyectos() DdlProyecto.Items.Clear() DdlProyecto.DataSource = DtEstatusUsuarios.FiltraParametros("", "", {"CveProyecto", "Proyecto"}) 'If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1), GlobalDTProyectos(UsuarioActual.CveEmpresa, -1)) 'DtEstatusUsuarios.FiltraParametros(String.Format("CveEmpresa = {0}", UsuarioActual.CveEmpresa), "", {"CveProyecto", "Proyecto"}) ' GlobalDTProyectos(UsuarioActual.Empresa.CveEmpresa) DdlProyecto.DataBind() DdlProyecto.Items.Insert(0, New ListItem("Seleccione", "-1")) End Sub Private Sub CargaSubProyectos() Dim Filtro As String = If(DdlProyecto.SelectedValue.ToEntero > 0, String.Format("CveProyecto = {0}", DdlProyecto.SelectedValue.ToEntero), "") DdlSubProyecto.Items.Clear() If Filtro <> "" Or UsuarioActual.Empresa.GralSoloProyecto Then DdlSubProyecto.DataSource = DtEstatusUsuarios.FiltraParametros(Filtro, "", {"CveSubProyecto", "SubProyecto"}) 'If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, DdlProyecto.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos(DdlProyecto.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa, 1)) 'DtEstatusUsuarios.FiltraParametros(Filtro, "", {"CveSubProyecto", "SubProyecto"}) ' GlobalDTSubProyectos(DdlProyecto.SelectedValue.ToEntero) End If DdlSubProyecto.DataBind() DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1")) End Sub Private Sub CargaSubProyectosEdit(DdlSP As DropDownList, CveProyectoEdit As Integer) DdlSP.Items.Clear() DdlSP.DataSource = DtEstatusUsuarios.FiltraParametros(String.Format("CveProyecto = {0}", CveProyectoEdit), "", {"CveSubProyecto", "SubProyecto"}) 'GlobalDTSubProyectos(CveProyectoEdit) DdlSP.DataBind() DdlSP.Items.Insert(0, New ListItem("Seleccione", "-1")) End Sub Private Sub CargaUnidadesMedida() CboUnidadMedida.DataSource = GlobalDTUnidadesMedida(UsuarioActual.Empresa.CveEmpresa) 'CboUnidadMedida.DataSource = GlobalDTProductosServiciosEquivalencias(-1, -1) CboUnidadMedida.DataBind() End Sub Private Sub CargaProveedores() DdlProveedores.DataSource = GlobalDTCompProveedores(UsuarioActual.CveEmpresa) DdlProveedores.DataBind() UPProv.Update() End Sub Private Sub CargaEstatusOC() CboE.DataSource = DtEstatusUsuarios.FiltraParametros("TipoTermino <> 2", "Nivel Desc", {"CveEstatus", "Estatus"}) CboE.DataBind() CboE.Items.Add(New ListItem("Pre Solicitud", "0")) End Sub Private Sub CargaEstatusInicialFinal() 'Cargar el Estatus Inicial Dim drInicial As DataRow = If(GlobalDTOCEstatus(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("TipoTermino = 3 AND Tipo = '{0}'", TipoOC)).Rows.Count = 1, GlobalDTOCEstatus(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("TipoTermino = 3 AND Tipo = '{0}'", TipoOC)).Rows(0), Nothing) Dim drFinalOK As DataRow = If(GlobalDTOCEstatus(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("TipoTermino = 1 AND Tipo = '{0}'", TipoOC)).Rows.Count = 1, GlobalDTOCEstatus(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("TipoTermino = 1 AND Tipo = '{0}'", TipoOC)).Rows(0), Nothing) Dim drFinalError As DataRow = If(GlobalDTOCEstatus(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("TipoTermino = 2 AND Tipo = '{0}'", TipoOC)).Rows.Count = 1, GlobalDTOCEstatus(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("TipoTermino = 2 AND Tipo = '{0}'", TipoOC)).Rows(0), Nothing) If Not drInicial Is Nothing Then CveEstatusInicial = drInicial("CveEstatus").ToString.ToEntero : EstatusInicial = drInicial("Estatus").ToString Else CveEstatusInicial = -1 : EstatusInicial = "" If Not drFinalOK Is Nothing Then CveEstatusFinalOK = drFinalOK("CveEstatus").ToString.ToEntero : EstatusFinalOK = drFinalOK("Estatus").ToString Else CveEstatusFinalOK = -1 : EstatusFinalOK = "" If Not drFinalError Is Nothing Then CveEstatusFinalError = drFinalError("CveEstatus").ToString.ToEntero : EstatusFinalError = drFinalError("Estatus").ToString Else CveEstatusFinalError = -1 : EstatusFinalError = "" End Sub #End Region #Region " DDLS: PROYECTO " Protected Sub DdlProyecto_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlProyecto.SelectedIndexChanged CargaSubProyectos() End Sub Protected Sub DdlProyectoEdit_SelectedIndexChanged(sender As Object, e As EventArgs) Dim ddl As DropDownList = DirectCast(sender, DropDownList) Dim DdlSP As DropDownList = Nothing Dim gvr As GridViewRow = DirectCast(ddl.NamingContainer, GridViewRow) DdlSP = GvD.Rows(gvr.RowIndex).FCDropDownList("DdlSubProyectoEdit") If DdlSP IsNot Nothing Then CargaSubProyectosEdit(DdlSP, ddl.SelectedValue.ToEntero) End Sub #End Region #Region " DDLS: CLASIFICACION Y PS " Protected Sub DdlClasificacion_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles DdlClasificacion.SelectedIndexChanged If UsuarioActual.Empresa.Funcionalidad(105) = "" Then CargaPS(DdlClasificacion.SelectedValue.ToEntero, DdlP2.ddl) End If UPPDetalle.Update() End Sub Protected Sub DdlClasificacion_SelectedIndexChanged1(sender As Object, e As EventArgs) Dim Gvr As GridViewRow = CType(CType(sender, DropDownList).BindingContainer, GridViewRow) Dim filtro As String = "" Dim CveClasificacion = DirectCast(sender, DropDownList).SelectedValue.ToEntero If CveClasificacion > 0 Then If isWhitFamily() Then filtro = String.Format("CveSubFamilia={0}", CveClasificacion) Else filtro = String.Format("CveClasificacion={0}", CveClasificacion) End If Gvr.FCDropDownList("DdlPS").Items.Clear() Gvr.FCDropDownList("DdlPS").DataSource = GlobalDTProductosServicios(UsuarioActual.CveEmpresa).FiltraParametros(filtro, "PS") Gvr.FCDropDownList("DdlPS").DataBind() Gvr.FCDropDownList("DdlPS").Items.Insert(0, New ListItem("Seleccione el Producto", "-1")) End If End Sub Protected Sub DdlPS_SelectedIndexChanged1(sender As Object, e As EventArgs) Dim Gvr As GridViewRow = CType(CType(sender, DropDownList).BindingContainer, GridViewRow) Dim filtro As String = "" Dim Cvepsgvd = DirectCast(sender, DropDownList).SelectedValue.ToEntero If Cvepsgvd > 0 Then Dim CboUM As DropDownList = Gvr.FCDropDownList("CboUnidadMedidaEdit") CboUM.DataSource = GlobalDTProductosServiciosEquivalencias(Cvepsgvd, -1) CboUM.DataBind() End If End Sub Protected Sub LbVerInventario_Click(sender As Object, e As EventArgs) Handles LbVerInventario.Click RegistraScript(String.Format("AbrirVentana('/Inventarios/PopUpExistenciasAlmacen.aspx?CvePS={0}',800,547,'N');", DdlP2.SelectedValue)) End Sub Private Sub CargaPS(CveClasificacion As Integer, Objeto As DropDownList) Dim filtro As String = "" If CveClasificacion > 0 Then If isWhitFamily() Then filtro = String.Format("CveSubFamilia={0}", CveClasificacion) Else filtro = String.Format("CveClasificacion={0}", CveClasificacion) End If Else If isWhitFamily() Then filtro = "CveSubFamilia>0" Else filtro = "CveClasificacion>0" End If End If Objeto.Items.Clear() Objeto.DataSource = GlobalDTProductosServicios(UsuarioActual.CveEmpresa).FiltraParametros(filtro, "PS") Objeto.DataBind() 'Objeto.Items.Insert(0, New ListItem("*** Actualizar listado de Productos o Servicios ***", "-2")) Objeto.Items.Insert(0, New ListItem("Seleccione el Producto", "-1")) End Sub Protected Sub HFProducto_ValueChanged(sender As Object, e As EventArgs) Handles DdlP2.selectedindexchange Dim tempdt As DataTable = GlobalDTProductosServicios(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CvePS ='{0}'", DdlP2.SelectedValue)) If tempdt.Rows.Count > 0 Then If isWhitFamily() Then DdlClasificacion.SelectedValue = tempdt.Rows(0)("CveSubFamilia").ToString Else DdlClasificacion.SelectedValue = tempdt.Rows(0)("CveClasificacion").ToString End If CboUnidadMedida.Items.Clear() CboUnidadMedida.DataSource = GlobalDTProductosServiciosEquivalencias(DdlP2.SelectedValue.ToEntero, -1) CboUnidadMedida.DataBind() 'LbVerInventario.Attributes.Add("href", "/Inventarios/PopUpExistenciasAlmacen.aspx?CvePS=" + DdlP2.SelectedValue) End If End Sub #End Region #Region " AGREGAR - GUARDAR " Protected Sub LbAgregar_Click(sender As Object, e As EventArgs) Handles LbAgregar.Click 'VALIDA CVEPS If DdlP2.SelectedValue().ToEntero <= 0 Then Alert("El campo 'Producto/Servicio' es necesario, por favor seleccione uno.", TipoMensaje.MsgAdvertencia) Exit Sub End If Dim CvePOA As Integer = 0 Dim Presupuesto As Double = 0 Dim ErrorPOA = False Dim Importe As Double = TxtCant.Text.ToDouble * txtPrecioUnitario.Text.ToDouble 'USA AC If UsuarioActual.Empresa.UsaAC And TipoOC = "OC" Then Dim ContPaq As New ClsContPAQi(UsuarioActual.Empresa) Presupuesto = ContPaq.GetSaldoCuenta(HdnCveCuentaPorEjercer.Value.ToEntero, 1, UsuarioActual.Empresa.EjercicioActual) If Presupuesto > 0 AndAlso Presupuesto > Importe Then End If ContPaq.Dispose() Presupuesto = Importe 'If LblCvePOA.Text.Length > 0 Then ' 'Dim indice As Integer ' 'indice = DtAC.Rows.IndexOf(DtAC.Select("CvePresupuestoEgreso = " + LblCvePOA.Text).FirstOrDefault()) ' 'Presupuesto = DtAC(indice).Item("Total").ToString.ToDouble 'Else ' ErrorPOA = True 'End If AgregaAC() Else ErrorPOA = True End If 'TERMINA: USA AC 'No POA If ErrorPOA Then Presupuesto = Importe End If If Presupuesto >= Importe Then If DtDetalle IsNot Nothing Then Dim dr As DataRow = DtDetalle.NewRow dr("Cantidad") = TxtCant.Text dr("CveUnidadMedida") = CboUnidadMedida.SelectedValue dr("UM") = CboUnidadMedida.SelectedItem.Text dr("CvePS") = DdlP2.SelectedValue dr("PS") = DdlP2.SelectedText dr("IVAPS") = GlobalDTProductosServicios(UsuarioActual.CveEmpresa, -1, -1, ).FiltraParametros(String.Format("CvePS = {0}", dr("CvePS"))).Rows(0)("IVA").ToString.ToDouble dr("Observacion") = TxtObsPS.Text dr("CveClasificacion") = DdlClasificacion.SelectedValue dr("Clasificacion") = DdlClasificacion.SelectedItem.Text If UsuarioActual.Empresa.GralSoloProyecto Then dr("CveProyecto") = "-1" dr("Proyecto") = "Sin Proyecto" Else dr("CveProyecto") = DdlProyecto.SelectedValue dr("Proyecto") = If(DdlProyecto.SelectedValue.ToString.ToEntero > 0, DdlProyecto.SelectedItem.Text, "Sin Proyecto") End If dr("CveSubProyecto") = DdlSubProyecto.SelectedValue dr("SubProyecto") = If(DdlSubProyecto.SelectedValue.ToString.ToEntero > 0, DdlSubProyecto.SelectedItem.Text, "Sin SubProyecto") dr("Importe") = If(txtPrecioUnitario.Text.ToDouble > 0, txtPrecioUnitario.Text.ToDouble, -1) dr("Descuento") = TxtDescuentoAdd.Text.ToDouble dr("Total") = If(txtPrecioUnitario.Text.ToDouble > 0, txtPrecioUnitario.Text.ToDouble * TxtCant.Text.ToDouble, -1) dr("CodigoAF") = LblCodigo.Text dr("CveActivoFijo") = HdnCveActivoFijo.Value.ToEntero dr("TipoDato") = 0 ' Tipo Dato '0' es Cuando es Nuevo, '1' para editar y '2' viene de la BD dr("CveOrdenCompraDetalle") = DtDetalle.MAX("CveOrdenCompraDetalle").ToEntero + 100 dr("CveOrdenCompra") = CveOrdenCompra 'dr("CvePresupuestoEgreso") = HdnCvePresupuesto.Value.ToEntero dr("IdCuentaPorEjercer") = If(HdnCveCuentaPorEjercer.Value = String.Empty, -1, HdnCveCuentaPorEjercer.Value.ToEntero) dr("IdCuentaComprometido") = If(HdnCveCuentaComprometido.Value = String.Empty, -1, HdnCveCuentaComprometido.Value.ToEntero) dr("CveProgramaOperativo") = DdlACGeneral1.SelectedValue.ToEntero dr("CveUnidadAdministrativa") = DdlACGeneral2.SelectedValue.ToEntero dr("CveFuenteFinanciamiento") = DdlACGeneral3.SelectedValue.ToEntero dr("CveTipoGasto") = DdlACGeneral4.SelectedValue.ToEntero dr("CveClasificacionOG") = DdlACGeneral5.SelectedValue.ToEntero DtDetalle.Rows.Add(dr) CargaDatosDetalles() 'End If 'If UsuarioActual.Empresa.UsaAC AndAlso LblCvePOA.Text.Count > 0 Then ' Me.LbAgregar.Enabled = False ' UpdateAC(LblCvePOA.Text.ToEntero, dr("Total").ToString.ToEntero, False) 'End If TxtCant.Text = "" CboUnidadMedida.SelectedIndex = 0 DdlClasificacion.SelectedIndex = 0 DdlP2.SelectedValue = "-1" DdlP2.SelectedText = "Seleccione un producto o servicio" txtPrecioUnitario.Text = "" TxtObsPS.Text = "" HdnCveActivoFijo.Value = "" LblCodigo.Text = "" LblCvePOA.Text = "" TxtCant.Focus() TxtGrid.Text = If(DtDetalle.Rows.Count = 0, "", DtDetalle.Rows.Count.ToString) Total.Text = "0.00" TxtDescuentoAdd.Text = "0.00" End If Else Me.LbAgregar.Enabled = False LblCvePOA.Text = "" TxtCant.Text = "" txtPrecioUnitario.Text = "" Alert("Después de elegir el Presupuesto de Egreso (POA) se modificó el total del importe y el presupuesto no abarca el gasto. Por favor intente nuevamente", TipoMensaje.MsgAdvertencia) End If CargaSuperior() CargaDatosDetalles() UPPDetalle.Update() End Sub Private Function GuardaAC(Conta As ClsContPAQi, OC As ClsOC, CveOC As Integer, FolioOC As Integer, Optional CveProveedor As Integer = -1) As Integer Dim TieneError = False Dim IDPoliza = -1 Dim Folio = -1 'SI TIENE POLIZA ANTERIOR LA ELIMINA If IDPolizaPresupuestal > 0 Then If Not Conta.RemoveAllMovimientos(IDPolizaPresupuestal) Then TieneError = True End If End If 'INGRESA POLIZA If Not TieneError Then Dim ConceptoRenglon As String = String.Format("GC - OC {0}. {1}", FolioOC, TxtDescrip.Text) Dim Total As Decimal = LblTotal.Text.ToDecimal Dim Fecha As Date = TxtFecha.Text.ToDate If Total > 0 Then Total = Math.Round(Total, 2) 'INGRESA POLIZA SOLO CUANDO NO EXISTE YA UNA If IDPolizaPresupuestal > 0 Then IDPoliza = IDPolizaPresupuestal Else IDPoliza = Conta.AddPoliza(4, ConceptoRenglon, 0, 0, UsuarioActual.CveUsuario, Fecha) Folio = Conta.Folio End If End If If IDPoliza > 0 Then Dim DtPresupuestosTemp As DataTable Dim IdCuentaComprometido, IdCuentaPorEjercer As Integer 'SI VIENE CON PROVEEDOR FILTRA SOLO LOS CONCEPTOS DEL PROVEEDOR Dim DT = If(CveProveedor = -1, DtDetalle.Copy, DtDetalle.FiltraParametros(String.Format("CveProveedor = {0}", CveProveedor)).Copy) Dim Presup = From gvr As DataRow In DT.Rows.Cast(Of DataRow)() Group gvr By Grp = New With { Key .CvePresupuestoEgreso = gvr("CvePresupuestoEgreso").ToString.ToEntero } Into Group Select Grp.CvePresupuestoEgreso, TotalImporte = Group.Sum(Function(r) r("Total").ToString.ToDecimal) Dim tTotalIVA, tTotalGral, tIVA, tDiferenciaIVA, Importe, TotalDetalle As Decimal Dim tPorIVA = 0D, tAjusteTotal = 0D, ipresup = 0 If CveProveedor > 0 Then 'CUANDO VIENE DE COTIZACION tTotalIVA = (DtDetalle.SUM("Total", String.Format("CveProveedor = {0}", CveProveedor)) * tPorIVA).ToString.ToDecimal tPorIVA = GlobalDTCompProveedores(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveProveedor = {0}", CveProveedor)).Rows(0)("IVA").ToString.ToDecimal tTotalGral = DtDetalle.SUM("Total", String.Format("CveProveedor = {0}", CveProveedor)).ToString.ToDecimal Else 'CUANDO NO VIENE DE COTIZACION If TxtIVA.Visible Then tTotalIVA = TxtIVA.Text.ToDecimal Else tTotalIVA = LblIVA.Text.ToDecimal End If tTotalGral = LblTotal.Text.ToDecimal tPorIVA = tTotalIVA / (tTotalGral - tTotalIVA) End If tDiferenciaIVA = tTotalIVA For Each grp In Presup Importe = grp.TotalImporte TotalDetalle += Importe ipresup += 1 If Importe > 0 Then 'saco la proporcion de iva que le corresponde tIVA = Math.Round(Importe * tPorIVA, 2) 'le sumo el iva al concepto Importe += tIVA 'Presupuesto Egresos DtPresupuestosTemp = DtPresupuestos.FiltraParametros(String.Format("CvePresupuestoEgreso = {0}", grp.CvePresupuestoEgreso)) If DtPresupuestosTemp.Rows.Count <> 1 Then TieneError = True : Exit For End If IdCuentaComprometido = DtPresupuestosTemp.Rows(0)("IdCuentaComprometido").ToString.ToEntero IdCuentaPorEjercer = DtPresupuestosTemp.Rows(0)("IdCuentaPorEjercer").ToString.ToEntero If Conta.AddMovimiento(IDPoliza, IdCuentaComprometido, False, Importe, "", ConceptoRenglon, 0, Fecha, "") Then If Not Conta.AddMovimiento(IDPoliza, IdCuentaPorEjercer, True, Importe, "", ConceptoRenglon, 0, Fecha, "") Then TieneError = True : Exit For End If Else TieneError = True : Exit For End If End If Next If Not TieneError Then If Not OC.UpdateOrdenCompraPoliza(IDPoliza, CveOC) Then TieneError = True End If End If If Not TieneError Then If Not Conta.AjustaPoliza(IDPoliza) Then TieneError = True End If End If ElseIf Total > 0 Then TieneError = True End If End If If TieneError Then IDPoliza = -1 Else 'GUARDA ID Y FOLIO PARA MOSTRAR LIGA A POLIZA EN ALERT IDPolizasGeneradas.Add(IDPoliza) FoliosPolizas.Add(Folio) End If Return IDPoliza End Function Private Function ValidaGuardar() As Boolean Dim TieneError = False 'VALIDA DESCUENTOS If Not ValidarDescuentos() Then Alert("Los descuentos no cuadran. Por favor de verificar.", TipoMensaje.MsgAdvertencia) Return True End If 'SI ES REQUISICION, NO REQUIERE COTIZACION Y ES ESTATUSFINALOK... ENTONCES DEBE DE TENER UN PROVEEDOR SELECCIONADO Y LOS PRECIOS CAPTURADOS If (TipoOC = "REQ" And ChkCotizacion.Checked = False And CboE.SelectedValue.ToEntero = CveEstatusFinalOK) OrElse TipoOC = "OC" Then If DtDetalle.FiltraParametros("Importe = -1 OR Importe IS NULL OR Importe = 0").Rows.Count > 0 Then Alert("DEBE CAPTURAR EL PRECIO UNITARIO DE CADA PRODUCTO/SERVICIO", TipoMensaje.MsgAdvertencia) : Return True If DdlProveedores.SelectedValue.ToEntero <= 0 Then Alert("DEBE CAPTURAR EL PROVEEDOR", TipoMensaje.MsgAdvertencia) : Return True End If 'VALIDA SUBPROYECTOS SubProyectosNoAutorizados = New List(Of String) Dim TotalT As Decimal = If(ChkCotizacion.Checked, TotalCotizacionesGanadoras, LblTotal.Text.Replace(",", "").Replace("$", "").ToDecimal) TotalT = If(DdlMoneda.SelectedValue <> "1", (TotalT * GlobalTipoCambio.ToString.ToDecimal), TotalT) If RequiereSubProyecto = True AndAlso CboE.SelectedValue.ToEntero > 0 Then ' cuando se cumpla la restriccion y no sea "Pre Solicitud" For Each Row As DataRow In DtDetalle.FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}).Rows 'Primero Filtrar por SubProyecto Dim SubPAut As DataTable = DtEstatusUsuarios.FiltraParametros(String.Format("CveSubProyecto = {0} AND CveEstatus = {1}", Row("CveSubProyecto"), CboE.SelectedValue)) If SubPAut.Rows.Count = 0 Then SubProyectosNoAutorizados.Add(String.Format("{0}", Row("SubProyecto").ToString)) TieneError = True ElseIf TotalT > 0 AndAlso SubPAut.FiltraParametros(String.Format("((LimiteInferior IS NULL OR LimiteInferior <= {0}) AND (LimiteSuperior IS NULL OR LimiteSuperior >= {0})) ", TotalT)).Rows.Count = 0 Then 'Segundo Filtrar por Limite Inferior y Superior SubProyectosNoAutorizados.Add(String.Format("{0}, {1} - {2} ({3} - {4} Dolares)", Row("SubProyecto").ToString, FormatCurrency(SubPAut.Rows(0)("LimiteInferior").ToString.ToDecimal), FormatCurrency(SubPAut.Rows(0)("LimiteSuperior").ToString.ToDecimal), FormatCurrency(SubPAut.Rows(0)("LimiteInferior").ToString.ToDecimal / GlobalTipoCambio), FormatCurrency(SubPAut.Rows(0)("LimiteSuperior").ToString.ToDecimal / GlobalTipoCambio))) TieneError = True End If Next If ChkCotizacion.Checked = True And SubProyectosNoAutorizados.Count > 0 Then SubProyectosNoAutorizados.Add(String.Format("

Total de Cotizaciones: {0}", FormatCurrency(TotalT))) End If If TieneError Then If SubProyectosNoAutorizados.Count > 0 Then MensajeSubProyectosNoAutorizados() End If End If End If If Not GvD.Rows.Count > 0 Then TieneError = True Alert("La orden de compra debe de tener registros", TipoMensaje.MsgAdvertencia) End If Return TieneError End Function Protected Sub MensajeSubProyectosNoAutorizados() Dim ss As String = "" For Each S As String In SubProyectosNoAutorizados ss += "
- " + S Next Alert(String.Format("No está autorizado a modificar el SubProyecto
{0}", ss), TipoMensaje.MsgAdvertencia) End Sub Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) Handles BtnGuardar.Click 'If UsuarioActual.CveEmpresa = 66 AndAlso notienepresupuesto() Then ' Exit Sub 'End If 'VALIDACIONES PARA GUARDAR If ValidaGuardar() Then Exit Sub 'VARIABLES Dim TieneError As Boolean = False Dim CveProveedor As Integer = -1 Dim GeneraReq = False Dim IDPoliza As Integer = 0 Dim IVA = If(TxtIVA.Visible, TxtIVA.Text.ToDecimal, LblIVA.Text.ToDecimal) If TxtFechaEstimadaEntrega.Text.Trim = "__/__/____" Then TxtFechaEstimadaEntrega.Text = "" 'EMPIEZA OBJETOS Y TRASACCIONES Dim Conta As ClsContPAQi = Nothing Dim OC As New ClsOC If Not TieneError Then OC.IniciaTransacSQL() If UsuarioActual.Empresa.UsaAC AndAlso VerificaPresupuesto Then Conta = New ClsContPAQi(UsuarioActual.Empresa) Conta.IniciaTransacSQL() End If End If If EsNuevo Then 'SI ES NUEVO, ES REQUISICION, ES ESTATUSFINALOK... VA A SER ORDEN DE COMPRA Dim CveEstatusNuevo As Integer = CboE.SelectedValue.ToEntero If (TipoOC = "REQ" AndAlso CboE.SelectedValue.ToEntero = CveEstatusFinalOK) OrElse (TipoOC = "OC") Then GeneraReq = If(TipoOC = "REQ", True, False) ViewState("TipoLargo") = "Orden Compra" CveEstatusNuevo = If(TipoOC = "OC", CboE.SelectedValue.ToEntero, CveEstatusInicialOC) End If 'siempre se esta guardando el proveedor If Not ChkCotizacion.Checked Then CveProveedor = DdlProveedores.SelectedValue.ToEntero Dim CveOrdenCompraPadre As Integer = -1 If GeneraReq Then If Not TieneError Then ' AGREGAR REQUISICION If OC.AddOrdenCompra("REQ", -1, TxtDescrip.Text, TxtJustificacion.Text, DdlPrioridad.SelectedValue.ToEntero, TxtFecha.Text.ToDate, DdlMoneda.SelectedValue.ToEntero, CboE.SelectedValue.ToEntero, If(TxtFechaEstimadaEntrega.Text.Trim = "", "-1", TxtFechaEstimadaEntrega.Text.Trim), If(txtLugarEntrega.Text.Trim = "", "-1", txtLugarEntrega.Text.Trim), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, GvD.Rows(0).FCHiddenField("HdnCvePresupuestoEgreso").Value.ToString.ToEntero, pCveProveedor:=CveProveedor, RequiereCotizacion:=ChkCotizacion.Checked, CveCliente:=Ddlcliente.SelectedValue.ToEntero, CveVendedor:=DdlVendedor.SelectedValue.ToEntero, PrioridadObservacion:=txtobsprioridad.Text, PorcentajeIVA:=DdlIVA.SelectedValue.ToDouble - 1, IVA:=IVA, RetIVA:=TxtRetIVA.Text.ToDecimal, RetISR:=TxtRetISR.Text.ToDecimal, CveCotizacion:=CveCotizacion) Then CveOrdenCompraPadre = OC.CveOrdenCompra If CveOrdenCompraPadre > 0 Then For Each dr As DataRow In DtDetalle.Rows If Not OC.AddOrdenCompraDetalle(CveOrdenCompraPadre, dr("Cantidad").ToString.ToDouble(), dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, dr("Importe").ToString.ToDouble, dr("CveSubProyecto").ToString.ToEntero(), dr("CveActivoFijo").ToString.ToEntero, dr("Observacion").ToString, UsuarioActual.CveUsuario, Descuento:=dr("Descuento").ToString.ToDouble) Then TieneError = True Exit For End If Next Else TieneError = True End If TipoOC = "OC" End If End If End If If Not TieneError Then ' AGREGAR ORDEN DE COMPRA If OC.AddOrdenCompra(If(TipoOS, "OS", TipoOC), -1, TxtDescrip.Text, TxtJustificacion.Text, DdlPrioridad.SelectedValue.ToEntero, TxtFecha.Text.ToDate, DdlMoneda.SelectedValue.ToEntero, CveEstatusNuevo, If(TxtFechaEstimadaEntrega.Text.Trim = "", "-1", TxtFechaEstimadaEntrega.Text.Trim), If(txtLugarEntrega.Text.Trim = "", "-1", txtLugarEntrega.Text.Trim), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, GvD.Rows(0).FCHiddenField("HdnCvePresupuestoEgreso").Value.ToString.ToEntero, pCveProveedor:=CveProveedor, RequiereCotizacion:=ChkCotizacion.Checked, CveUsuarioAsignado:=DdlUsuariosAsignado.SelectedValue.ToEntero, CveCliente:=Ddlcliente.SelectedValue.ToEntero, CveVendedor:=DdlVendedor.SelectedValue.ToEntero, PrioridadObservacion:=txtobsprioridad.Text, PorcentajeIVA:=DdlIVA.SelectedValue.ToDouble - 1, IVA:=IVA, RetIVA:=TxtRetIVA.Text.ToDecimal, RetISR:=TxtRetISR.Text.ToDecimal, CveCotizacion:=CveCotizacion) Then CveOrdenCompra = OC.CveOrdenCompra If TipoOC = "OC" And CboE.SelectedValue.ToEntero > 0 Then CveOCGeneradas.Add(CveOrdenCompra) End If Folio = OC.Folio End If If CveOrdenCompra > 0 Then 'USA AC If UsuarioActual.Empresa.UsaAC AndAlso VerificaPresupuesto Then ' AGREGAR POLIZA ' SI NO TIENE COTIZACION SE GENERA 1 POLIZA If Not ChkCotizacion.Checked Then If GuardaAC(Conta, OC, OC.CveOrdenCompra, OC.Folio) <= 0 Then TieneError = True End If End If End If 'TERMINA: USA AC For Each dr As DataRow In DtDetalle.Rows If Not OC.AddOrdenCompraDetalle(CveOrdenCompra, dr("Cantidad").ToString.ToDouble(), dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, dr("Importe").ToString.ToDouble, dr("CveSubProyecto").ToString.ToEntero(), dr("CveActivoFijo").ToString.ToEntero, dr("Observacion").ToString, UsuarioActual.CveUsuario, CvePresupuestoEgreso:=dr("CvePresupuestoEgreso").ToString.ToEntero, pCveOrdenCompraPadre:=CveOrdenCompraPadre, Descuento:=dr("Descuento").ToString.ToDouble) Then TieneError = True Exit For End If Next Else TieneError = True End If End If If Not TieneError Then If Conta IsNot Nothing Then Conta.Commit() OC.Commit() Else If Conta IsNot Nothing Then Conta.RollBack() If OC IsNot Nothing Then OC.RollBack() Alert("Hubo un error al registrar", TipoMensaje.MsgError) CveOrdenCompra = -1 End If ViewState("LigaOCs") = If(CveEstatusNuevo <> CboE.SelectedValue.ToEntero, String.Format("{1}", CveOrdenCompra, Folio), "") If CveOrdenCompra > 0 Then Dim ImprimirOC = String.Format("Imprimir Orden de Compra ", Encripta(String.Format("OP=OC&CVEOC={0}", CveOrdenCompra))) Dim Msg As New StringBuilder 'Cuando Estatus = "Autorizada" If CboE.SelectedValue.ToEntero > 0 Then Dim Row As DataRow = GlobalDTOCEstatus(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveEstatus = {0}", CboE.SelectedValue)).Rows(0) 'If (Row IsNot Nothing AndAlso Row("TipoTermino").ToString.ToEntero = 1) Then EnviarCorreoOrdenCompra(CveOrdenCompra) End If 'POSIBLE COMENTAR - QUITAR 'Envío de correo, con el detalle y la información cargada de nuevo If CveEstatus > 0 Then EnviarCorreoCambioEstatus(CveEstatusSiguiente, CboE.SelectedItem.Text, False) End If If LigaOCs = "" Then Msg.AppendFormat("La {0} No. {1}. Ha sido guardada correctamente
{2}", TipoLargo, Folio, If(TipoOC = "OC", ImprimirOC, "")) Else Msg.AppendFormat("La {0} No. {1}. Ha sido guardada correctamente

Orden de Compra:{2}
{3}", TipoLargo, Folio, LigaOCs, If(TipoOC = "OC", ImprimirOC, "")) End If 'IMPRIME LIGA A POLIZAS If IDPolizasGeneradas.Count > 0 Then Msg.Append("

Polizas generadas:") For i = 0 To IDPolizasGeneradas.Count - 1 Msg.AppendFormat("
Poliza: {1}", IDPolizasGeneradas(i), FoliosPolizas(i)) Next End If Alert(Msg.ToString, TipoMensaje.MsgInformacion, "document.location.href=""/OC/RepOC.aspx""") 'GeneraPDF(CveOrdenCompra) TxtDescrip.Text = "" TxtJustificacion.Text = "" End If Else If CveOrdenCompra > 0 Then 'siempre se esta guardando el proveedor If Not ChkCotizacion.Checked Then CveProveedor = DdlProveedores.SelectedValue.ToEntero Dim FueModificada As Boolean = False If OC.UpdateOrdenCompra(-1, TxtDescrip.Text, TxtJustificacion.Text, DdlPrioridad.SelectedValue.ToEntero, ChkCotizacion.Checked, If(TxtFechaEstimadaEntrega.Text.Trim = "", "-1", TxtFechaEstimadaEntrega.Text.Trim), If(txtLugarEntrega.Text.Trim = "", "-1", txtLugarEntrega.Text.Trim), DdlMoneda.SelectedValue.ToEntero, CveProveedor, CveOrdenCompra, UsuarioActual.CveUsuario, Ddlcliente.SelectedValue.ToEntero, DdlVendedor.SelectedValue.ToEntero, txtobsprioridad.Text, IVA, RetIVA:=TxtRetIVA.Text.ToDecimal, RetISR:=TxtRetISR.Text.ToDecimal) Then 'USA AC If UsuarioActual.Empresa.UsaAC AndAlso VerificaPresupuesto Then ' AGREGAR POLIZA ' SI NO TIENE COTIZACION SE GENERA 1 POLIZA If Not ChkCotizacion.Checked AndAlso TipoOC.ToUpper <> "REQ" Then If GuardaAC(Conta, OC, CveOrdenCompra, OC.Folio) <= 0 Then TieneError = True End If End If End If 'TERMINA: USA AC 'inserto los nuevos registros If Not TieneError Then For Each dr As DataRow In DtDetalle.FiltraParametros("TipoDato = 0").Rows If Not OC.AddOrdenCompraDetalle(CveOrdenCompra, dr("Cantidad").ToString.ToDouble(), dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, dr("Importe").ToString.ToDouble, dr("CveSubProyecto").ToString.ToEntero, dr("CveActivoFijo").ToString.ToEntero, dr("Observacion").ToString, UsuarioActual.CveUsuario, CvePresupuestoEgreso:=If(TipoOC = "REQ", -1, dr("CvePresupuestoEgreso").ToString.ToEntero), Descuento:=dr("Descuento").ToString.ToDouble) Then TieneError = True Exit For Else FueModificada = True End If Next End If If Not TieneError Then 'Edito los registros For Each dr As DataRow In DtDetalle.FiltraParametros("TipoDato IN (1,2)").Rows If OC.UpdateOrdenCompraDetalle(dr("Cantidad").ToString.ToDouble, dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, dr("Importe").ToString.ToDouble, dr("CveSubProyecto").ToString.ToEntero, dr("CveActivoFijo").ToString.ToEntero, dr("Observacion").ToString, UsuarioActual.CveUsuario, dr("CveOrdenCompraDetalle").ToString.ToEntero, If(TipoOC = "REQ", -1, dr("CvePresupuestoEgreso").ToString.ToEntero), dr("Descuento").ToString.ToDouble) <= 0 Then TieneError = True Exit For Else FueModificada = True End If Next If Not TieneError Then 'elimino los registros For Each i As Integer In DrEliminados If Not OC.RemoveOrdenCompraDetalle(i) Then TieneError = True Exit For Else FueModificada = True End If Next End If If Not TieneError Then 'Actualizo el estatus If CboE.SelectedValue.ToEntero <> CveEstatus Then If OC.UpdateOrdenCompraEstatus(CboE.SelectedValue.ToEntero, CveOrdenCompra, UsuarioActual.CveUsuario, TxtCancelar.Text) Then 'If Not FueModificada Then EnviarCorreoCambioEstatus(CboE.SelectedValue.ToEntero, CboE.SelectedItem.Text) 'SI requiere Cotizacion y el estatus a el que se actualizo es el FinalOK, generar las ordenes de compra If TipoOC.ToUpper = "REQ" And CveEstatusFinalOK = CboE.SelectedValue.ToEntero Then TieneError = Not GeneraOrdenes(OC, Conta) End If End If End If DrEliminados.Clear() 'If FueModificada Then ' EnviarCorreoModificada() 'End If End If 'Si NO requiere cotizacion y el estatus que estamos guardando es el ultimo Generar una orden de compra a partir de una requisicion If TipoOC = "REQ" And ChkCotizacion.Checked = False And CveEstatusSiguiente = CboE.SelectedValue.ToEntero And CveEstatusSiguiente = CveEstatusFinalOK Then End If End If Else TieneError = True End If If Not TieneError Then OC.Commit() If Conta IsNot Nothing Then Conta.Commit() If LigaOCs = "" Then Alert(String.Format("La {0} se guardó correctamente", TipoLargo), TipoMensaje.MsgInformacion) Else Dim ImprimirOC = "" Dim Msg As New StringBuilder If CveOCGeneradas.Count = 1 Then ImprimirOC = String.Format("
Imprimir Orden de Compra ", Encripta(String.Format("OP=OC&CVEOC={0}", CveOCGeneradas(0)))) Msg.AppendFormat("La {0} No. {1}. Ha sido guardada correctamente

Se Generó la Orden de Compra {2} - {3}", TipoLargo, Folio, LigaOCs, ImprimirOC) Else Msg.AppendFormat("La {0} No. {1}. Ha sido guardada correctamente

Se Generaron las siguientes Ordenes de Compra {2}", TipoLargo, Folio, LigaOCs) End If 'IMPRIME LIGA A POLIZAS If IDPolizasGeneradas.Count > 0 Then Msg.Append("

Polizas generadas:") For i = 0 To IDPolizasGeneradas.Count - 1 Msg.AppendFormat("
Poliza: {1}", IDPolizasGeneradas(i), FoliosPolizas(i)) Next End If Alert(Msg.ToString, TipoMensaje.MsgInformacion, "document.location.href=""/OC/RepOC.aspx""") End If Else OC.RollBack() If Conta IsNot Nothing Then Conta.RollBack() Alert("Hubo un error al registrar", TipoMensaje.MsgError) End If 'CargaDatos(CveOrdenCompra) End If End If 'TERMINA TODO POR SI OCURRIÓ ALGO RARO If TieneError Then If OC IsNot Nothing Then OC.RollBack() If UsuarioActual.Empresa.UsaAC AndAlso VerificaPresupuesto Then If Conta IsNot Nothing Then Conta.RollBack() End If Else 'MANDA CORREOS Notificaciones() 'LIMPIA VALORES GENERALES VerificaPresupuesto = False 'CARGA LA OC/REQ CargaDatos(CveOrdenCompra) End If If OC IsNot Nothing Then OC.Dispose() If Conta IsNot Nothing Then Conta.Dispose() End Sub #End Region #Region " CANCELAR OC " Protected Sub BtnCancelar_Click(sender As Object, e As EventArgs) Handles BtnCancelar.Click If CveEstatusFinalError > 0 Then Dim objOrdenCompra As New ClsOC objOrdenCompra.IniciaTransacSQL() Dim TieneError = False 'AC Dim ObjAC As ClsContPAQi = Nothing Dim PolizaCancelacion = -1 If UsuarioActual.Empresa.UsaAC Then ObjAC = New ClsContPAQi(UsuarioActual.Empresa) ObjAC.IniciaTransacSQL() End If If Not objOrdenCompra.UpdateOrdenCompraEstatus(CveEstatusFinalError, CveOrdenCompra, UsuarioActual.CveUsuario, TxtCancelar.Text) Then TieneError = True End If If IDPolizaPresupuestal > 0 AndAlso UsuarioActual.Empresa.UsaAC Then PolizaCancelacion = CancelarAC(ObjAC) If PolizaCancelacion = -1 Then TieneError = True End If End If If Not TieneError Then objOrdenCompra.Commit() If ObjAC IsNot Nothing Then ObjAC.Commit() Dim Msg As New StringBuilder Msg.AppendFormat("La {0} {1}", TipoLargo, If(IDPolizaPresupuestal > 0, "y su poliza asociada fueron cancelados correctamente", "fue cancelada correctamente")) 'POLIZA CANCELACION AC If PolizaCancelacion > 0 Then Msg.AppendFormat("

Ver Póliza de cancelación", PolizaCancelacion) Alert(Msg.ToString, TipoMensaje.MsgInformacion) EnviarCorreoCambioEstatus(CboE.SelectedValue.ToEntero, CboE.SelectedItem.Text) CargaHistorial() CargaDatos(CveOrdenCompra) Else Alert(String.Format("Ocurrió un error al cancelar la {0}. Por favor vuelva a intentar.", TipoLargo)) objOrdenCompra.RollBack() If ObjAC IsNot Nothing Then ObjAC.RollBack() End If objOrdenCompra.Dispose() If ObjAC IsNot Nothing Then ObjAC.Dispose() Else Alert("No tiene configurado un Estatus de Cancelación", TipoMensaje.MsgAdvertencia) End If End Sub Private Function CancelarAC(ObjAC As ClsContPAQi) As Integer ' = 0: OK, NO OCUPO POLIZA DE CANCELACION ' > 0: GENERO POLIZA DE CANCELACION ' < 0: ERROR Dim ErrorCancelar = False Dim IdPolizaNueva = -1 Dim FolioPolizaNueva = -1 If IDPolizaPresupuestal > 0 Then Dim dt As DataTable If ObjAC.GetPoliza(IDPolizaPresupuestal, -1, -1, -1, -1) AndAlso ObjAC.DtResultados.Rows.Count > 0 Then dt = ObjAC.DtResultados If dt.Rows(0)("FechaPol").ToString.ToDate.Month < Now.Month Or dt.Rows(0)("FechaPol").ToString.ToDate.Year < Now.Year Then ' MES ANTERIOR, MOVIMIENTOS CONTRARIOS (NEGATIVOS) 'CREA POLIZA NEGATIVA IdPolizaNueva = ObjAC.AddPoliza(dt.Rows(0)("CodigoTipoPoliza").ToString.ToEntero, String.Format("Cancelacion: {0}", dt.Rows(0)("Concepto").ToString), 0, 0, UsuarioActual.CveUsuario, Now) If IdPolizaNueva > 0 Then FolioPolizaNueva = ObjAC.Folio 'DETALLES POLIZA NEGATIVA For Each dr As DataRow In dt.Rows If Not ObjAC.AddMovimiento(IdPolizaNueva, dr("IdCuenta").ToString.ToEntero, dr("TipoMovto").ToString = "True", dr("Importe").ToString.ToDecimal * -1, dr("Referencia").ToString, String.Format("Cancelacion: {0}", dt.Rows(0)("Concepto").ToString), dr("IdSegNeg").ToString.ToEntero, Now, "") Then ErrorCancelar = True : Exit For End If Next 'AJUSTA POLIZA If Not ErrorCancelar Then If Not ObjAC.AjustaPoliza(IdPolizaNueva) Then ErrorCancelar = True End If End If Else ErrorCancelar = True End If Else ' MES ACTUAL, LIMPIA POLIZA PONIENDO IMPORTE EN CEROS IdPolizaNueva = 0 For Each dr As DataRow In dt.Rows If Not ObjAC.UpdateMovimiento(dr("Id").ToString.ToEntero, dr("IdCuenta").ToString.ToEntero, dr("TipoMovto").ToString = "1", 0, dr("Referencia").ToString, dr("Concepto").ToString, dr("IdSegNeg").ToString.ToEntero, dr("Fecha").ToString.ToDate) Then ErrorCancelar = True : Exit For End If Next 'AJUSTA POLIZA If Not ErrorCancelar Then If Not ObjAC.AjustaPoliza(IDPolizaPresupuestal) Then ErrorCancelar = True End If End If End If End If End If If ErrorCancelar Then IdPolizaNueva = -1 End If Return IdPolizaNueva End Function #End Region #Region "CARGA DATOS" Private Sub CargaDatos(pCveOrdenCompra As Integer) Dim objOC As New ClsOC If objOC.GetOC(pCveOrdenCompra, UsuarioActual.CveEmpresa) Then ViewState("CveOrdenCompra") = pCveOrdenCompra ViewState("Folio") = objOC.Folio ViewState("CveEstatus") = objOC.CveEstatus ViewState("CveEstatusSiguiente") = objOC.CveEstatusSiguiente ViewState("CveEstatusAnterior") = objOC.CveEstatusAnterior ViewState("CveUsuario") = objOC.CveUsuario ViewState("CvePresupuestoEgreso") = objOC.CvePresupuestoEgreso 'Anticipos CargarOptionAnticipos() Dim objbancos As New ClsBancos If objbancos.GetPrePolizasDetalle(-1, -1, pCveOrdenCompra) AndAlso objbancos.DtResultados.Rows.Count > 0 Then BtnSolicitudAnticipo.Visible = False generarAnticipo.Text = "Ver Anticipo" generarAnticipo.NavigateUrl = String.Format("/Bancos/IE.aspx?CveIE={0}", objbancos.DtResultados.Rows(0)("CveIE")) Else generarAnticipo.NavigateUrl = String.Format("/Bancos/IE.aspx?CveOrdenCompra={0}&CveProveedor={1}", pCveOrdenCompra, objOC.CveProveedor.ToString) End If objbancos.Dispose() CveCotizacion = objOC.DtResultados.Rows(0)("CveCotizacion").ToString.ToEntero If CveCotizacion > 0 Then TRCotizacion.Visible = True HLCotizacion.NavigateUrl = String.Format("/Ventas/Ventas.aspx?CveVenta={0}", CveCotizacion) HLCotizacion.Text = objOC.DtResultados.Rows(0)("Cotizacion").ToString End If Ddlcliente.SelectedValue = objOC.CveCliente.ToString DdlVendedor.SelectedValue = objOC.CveVendedor.ToString txtobsprioridad.Text = objOC.PrioridadObservacion TxtFechaEstimadaEntrega.Text = If(objOC.FechaEstimadaEntrega.Year <> 1, objOC.FechaEstimadaEntrega.ToShortDateString(), "") txtLugarEntrega.Text = objOC.LugarEntrega TxtDescrip.Text = objOC.Descripcion TxtJustificacion.Text = objOC.Justificacion DdlMoneda.SelectedValue = objOC.CveMoneda.ToString DdlPrioridad.SelectedValue = objOC.Prioridad.ToString ChkCotizacion.Checked = objOC.RequiereCotizacion tabCotizaciones.Enabled = objOC.RequiereCotizacion tabCotizaciones.UpdatePanelID = uppOpciones.ID TxtFecha.ToolTip = objOC.Fecha.ToString("dd/MM/yyyy HH:mm") TxtFecha.Text = objOC.Fecha.ToString("dd/MM/yyyy") DdlIVA.SelectedValue = (objOC.PorcentajeIVA + 1).ToString TxtIVA.Text = objOC.IVA.ToString.FormatoNumero LblIVA.Text = objOC.IVA.ToString.FormatoNumero If Math.Abs(objOC.IVA - objOC.SubTotal * objOC.PorcentajeIVA) > 1 Then IVAEditado = True End If ''RETENSIONES CargaRetenciones(objOC.RetIVA, objOC.RetISR) lblNombreUsuario.Text = objOC.NombreUsuario LblCodigo.Text = objOC.Codigo If Not IsNothing(objOC.Tipo) Then Select Case objOC.Tipo.ToUpper Case "OC" ViewState("TipoOC") = objOC.Tipo ViewState("TipoLargo") = "Orden de Compra" lblFolio.Text = String.Format("OC {0}", objOC.Folio) lblProveedor.Text = objOC.RazonSocial trProveedor.Visible = True lblTipoPadreHijo.Text = "REQ" ChkCotizacion.Visible = False If UsuarioActual.Empresa.UsaAC Then ActivaAC() End If If objOC.IdPoliza > 0 Then HplCompraContabilizada.Text = "Si" : HplCompraContabilizada.NavigateUrl = String.Format("/Contabilidad/RegPoliza.aspx?IdPoliza={0}", objOC.IdPoliza) : trContabilizada.Visible = True IDPolizaPresupuestal = objOC.IdPoliza Else HplCompraContabilizada.Text = "No" End If DdlProveedores.SelectedValue = objOC.CveProveedor.ToString If objOC.CveUsuarioAsignado > 0 Then TrUsuarioAsignado.Visible = True LblUsuarioAsignado.Text = objOC.UsuarioAsignado End If EditarOC = If(EditarOC, True, False) Case "REQ" ViewState("TipoOC") = objOC.Tipo ViewState("TipoLargo") = "Requisición" lblFolio.Text = "REQ " + objOC.Folio.ToString lblTipoPadreHijo.Text = "OC" ChkCotizacion.Visible = True DdlProveedores.SelectedValue = objOC.CveProveedor.ToString EditarOC = False Case "OS" ViewState("TipoOC") = "REQ" ViewState("TipoLargo") = "Orden de Servicio" lblFolio.Text = "OS " + objOC.Folio.ToString 'lblTipoPadreHijo.Text = "OC" ChkCotizacion.Visible = True TipoOS = True EditarOC = False End Select End If 'If objOC.TipoTermino = 2 Then ' TrCancelacion.Visible = True ' TxtMotivoCancelacion.Text = objOC.Cancelacion 'End If CargaEstatusInicialFinal() CargaHistorial() 'Se agregan a el Combo 'el EstatusActual, que es el que aparecera seleccionado 'el EstatusSiguiente, que si el usuario tiene permiso podra cambiarlo 'el EstatusRechazado, que si el usuario tiene permiso podra cambiarlo 'DtEstatusUsuarios.FiltraParametros("TipoTermino <> 2", "Nivel Desc", {"CveEstatus", "Estatus"}) 'GlobalDTOCEstatus(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("Tipo = '{0}' ", TipoOC, objOC.CveEstatus, objOC.CveEstatusSiguiente)) CboE.DataSource = GlobalDTOCEstatus(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("Tipo = '{0}' AND TipoTermino <> 2", TipoOC, objOC.CveEstatus, objOC.CveEstatusSiguiente)) CboE.DataBind() CargaEstatusUsuarios(CveEstatus, True) CargaEstatusUsuarios(CveEstatusSiguiente, True) CargaEstatusUsuarios(CveEstatusFinalError, True) If CveEstatus = CveEstatusFinalError Then CboE.DataSource = GlobalDTOCEstatus(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("Tipo = '{0}' ", TipoOC, objOC.CveEstatus, objOC.CveEstatusSiguiente)) CboE.DataBind() End If If objOC.GetOrdenesDetalle(pCveOrdenCompra) Then DtDetalle = objOC.DtResultados CargaDatosDetalles() End If 'Recorrer todos los SubProyectos agregados, PARA CUESTIONES DE CAMBIO DE ESTATUS SubProyectosNoAutorizados = New List(Of String) Dim OCCancelable As Integer = 0 Dim OCCancelablePermiso As Integer = 0 For Each Row As DataRow In DtDetalle.Rows If EditarOC AndAlso Row("CveOrdenCompraPadre").ToString.ToEntero > 0 Then EditarOC = False End If Next For Each Row As DataRow In DtDetalle.FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}).Rows If Row("CveSubProyecto").ToString.ToEntero > 0 Then If DtEstatusUsuarios.FiltraParametros(String.Format("CveSubProyecto = {0} AND CveEstatus = {1}", Row("CveSubProyecto"), CveEstatusSiguiente)).Rows.Count = 0 Then SubProyectosNoAutorizados.Add(Row("SubProyecto").ToString) CboE.BackColor = Drawing.Color.Silver CboE.Enabled = False GvD.Columns(9).Visible = False 'No permitir la edicion 'GvD.Columns(9).Visible = True ChkCotizacion.Enabled = False TxtDescrip.Enabled = False TxtJustificacion.Enabled = False TxtFechaEstimadaEntrega.Enabled = False txtLugarEntrega.Enabled = False gvCotizaciones.Enabled = False DdlProveedores.Enabled = False DdlIVA.Enabled = False OCCancelable = 1 ' por default, es cancelable, sino tiene acceso le niego la cancelacion Else If OCCancelable = 0 Then OCCancelable = 2 'sino ha entrado a cancelable End If If DtEstatusUsuarios.FiltraParametros(String.Format("CveSubProyecto = {0} AND CveEstatus = {1}", Row("CveSubProyecto"), CveEstatusFinalError)).Rows.Count = 0 Then OCCancelablePermiso = 1 ' por default, es cancelable, sino tiene acceso le niego la cancelacion Else If OCCancelablePermiso = 0 Then OCCancelablePermiso = 2 'sino ha entrado a cancelable End If End If Next 'EDICION 'CUANDO EL LA REGISRO Y TIENE ACCESO A ESE ESTATUS If objOC.CveUsuario = UsuarioActual.CveUsuario AndAlso DtEstatusUsuarios.FiltraParametros(String.Format(" CveEstatus = {0}", CveEstatus)).Rows.Count >= 1 Then GvD.Columns(9).Visible = True 'No permitir la edicion 'GvD.Columns(9).Visible = True ChkCotizacion.Enabled = True TxtDescrip.Enabled = True TxtJustificacion.Enabled = True TxtFechaEstimadaEntrega.Enabled = True txtLugarEntrega.Enabled = True gvCotizaciones.Enabled = True DdlProveedores.Enabled = True DdlIVA.Enabled = True End If If objOC.CveEstatus = 0 Then CboE.Items.Add(New ListItem("Pre Solicitud", "0")) CboE.SelectedValueExist(objOC.CveEstatus.ToString) 'es decir, si tiene permiso por ser el usuario que aprueba en el estatus actual o tiene el permiso para cancelar en el catalogo If (OCCancelable = 2 OrElse OCCancelablePermiso = 2) And (CveEstatus <> CveEstatusFinalError Or CveEstatus <> CveEstatusFinalOK) Then BtnCancelar.Enabled = True BtnCancelarPrevio.Disabled = False If IDPolizaPresupuestal > 0 Then BtnCancelar.ToolTip = String.Format("¿Está seguro que desea cancelar la {0} y la poliza asociada?", TipoLargo) Else BtnCancelar.ToolTip = String.Format("¿Está seguro que desea cancelar la {0}?", TipoLargo) End If End If 'Permisos, para cambiar el proveedor en una OC If objOC.Tipo.ToUpper = "OC" AndAlso UsuarioActual.TienePermisoProceso(111) Then DdlProveedores.Enabled = True DdlProveedores.SelectedValue = objOC.CveProveedor.ToString End If CargaCotizaciones(CveOrdenCompra) 'Si requiere cotizacion y el estatus siguiente es el final, desabilitar el combo del estatus If ChkCotizacion.Checked AndAlso objOC.CveEstatusSiguiente = CveEstatusFinalOK AndAlso (gvCotizaciones.Rows.Count = 0 Or NumCotizacionesGanadoras < gvCotizaciones.Rows.Count - 1) Then CboE.Enabled = False LblMsgEstatus.Visible = True LblMsgEstatus.Text = "Cotización requerida para avanzar" BtnGuardar.Enabled = False Else BtnGuardar.Enabled = True CboE.Enabled = True LblMsgEstatus.Visible = False End If 'For Each Row As DataRow In DtDetalle.FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}).Rows ' If Row("CveSubProyecto").ToString.ToEntero > 0 AndAlso DtEstatusUsuarios.FiltraParametros(String.Format("CveSubProyecto = {0}", Row("CveSubProyecto"))).Rows.Count > 0 Then ' BtnCancelarPrevio.Enabled = True ' End If 'Next 'Si sigue Habilitado el boton, verificar si el estatus es cancelable 'If BtnCancelarPrevio.Enabled = True Then BtnCancelarPrevio.Enabled = objOC.EsCancelable ' BtnCancelarPrevio.Enabled = objOC.EsCancelable 'HplImprimir.Attributes.Add("onclick", "AbrirVentana('/OC/RepImprimirC.aspx?Reporte=OC&OC=" & OC.CveOrdenCompra & "',700,500,'')") 'Cuando es el Rol de compras 'If R.CveEstatus = 3 AndAlso UsuarioActual.CveRol = 6 Then ' ImgCotizaciones.Visible = True 'End If 'If OC.CveActivoFijo > 0 Then CboActivoFijo.SelectedValue = OC.CveActivoFijo.ToString TxtGrid.Text = If(DtDetalle.Rows.Count = 0, "", DtDetalle.Rows.Count.ToString) BtnGuardar.Visible = True trAddDetalle.Visible = True fsSeguimiento.Visible = True fsHistorial.Visible = True 'cuando esta autorizada se habilita el imprimir OrElse (objOC.Tipo.ToUpper = "REQ" AndAlso objOC.TipoTermino = 1) If UsuarioActual.Empresa.Funcionalidad(107) = "" OrElse (objOC.Tipo.ToUpper = "OC") Then HLImprimir.Visible = True HLImprimir.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=OC&CVEOC={0}", CveOrdenCompra))) End If GvD.Columns(5).Visible = True ' tbEstatus.Visible = False ImgAddObs.Attributes.Add("onclick", "javascript: PosicionaObjeto(this.id,'DivEventoBitacora',null,-250,-250); $('#DivEventoBitacora').show(1000);") HlEvento.Visible = True HlEvento.NavigateUrl = "/OI/PopUpAgenda.aspx?CveTipoEvento=2&CveOC=" & CveOrdenCompra & "&TB_iframe=true&height=370&width=600;" hplAgregarCotizacion.NavigateUrl = "/OC/RepCotizacionesDetalle.aspx?CveOrdenCompra=" & CveOrdenCompra & "&TB_iframe=true&height=600&width=1000;" hplEnviarCorreo.NavigateUrl = "/OC/CotizacionEnvio.aspx?CveOrdenCompra=" & CveOrdenCompra & "&TB_iframe=true&height=600&width=900;" CargaEventoBitacora() If CveEstatus = CveEstatusFinalError Or CveEstatus = CveEstatusFinalOK Then DesHabilitar() Else VerificaSiRequiereCotizacion() If EditarOC Then CboE.Enabled = True GvD.Columns(9).Visible = True 'Permitir la edicion 'GvD.Columns(9).Visible = True ChkCotizacion.Enabled = True TxtDescrip.Enabled = True TxtJustificacion.Enabled = True TxtFechaEstimadaEntrega.Enabled = True txtLugarEntrega.Enabled = True gvCotizaciones.Enabled = True DdlProveedores.Enabled = True DdlIVA.Enabled = True End If uppEstatus.Update() UPPEmp.Update() Else ViewState("Tipo") = "REQ" ViewState("TipoLargo") = "Requisición" End If objOC.Dispose() End Sub Protected Sub CargaDatosDetalles() GvD.DataSource = DtDetalle GvD.DataBind() CalculaGenerales() CalculaDescuentoGeneral() UPPDetalle.Update() CompruebaAgregar() CargaSuperior() End Sub Protected Sub CargaHistorial() Dim objOC As New ClsOC If objOC.GetOrdenesHistorial(CveOrdenCompra) Then ViewState("DtHistorial") = objOC.DtResultados GVH.DataSource = DtHistorial.FiltraParametros("CveConceptoHistorialOrdenCompra <> 1") GVH.DataBind() uppHistorial.Update() End If If objOC.GetOrdenesEstatus(CveOrdenCompra) Then gvEstatus.DataSource = objOC.DtResultados gvEstatus.DataBind() End If uppSeguimientoEstatus.Update() objOC.Dispose() End Sub Protected Sub btnCargaCotizaciones_Click(sender As Object, e As EventArgs) Dim objCotizacion As New ClsOC 'ACTUALIZA REQUIERE COTIZACION DE LA REQ If Not objCotizacion.UpdateOrdenCompraCotizacion(CveOrdenCompra) Then Alert("Ocurrió un error al actualizar el estatus Decimal cotización.", TipoMensaje.MsgError) End If objCotizacion.Dispose() CargaCotizaciones(CveOrdenCompra) End Sub Protected Sub CargaCotizaciones(CveOrdenCompra As Integer) NumCotizacionesGanadoras = 0 TotalCotizacionesGanadoras = 0 Dim objCotizaciones As New ClsOC '------------------------------------------------------------------------ Dim Ds As DataSet = objCotizaciones.GetCotizacionesTabla(CveOrdenCompra) For i = 1 To 10 gvCotizaciones.Columns(i + 2).Visible = False Next If Ds IsNot Nothing AndAlso Ds.Tables.Count = 2 Then DtCotizaciones = Ds.Tables(1) NumCotizaciones = DtCotizaciones.Rows.Count For i = 1 To NumCotizaciones gvCotizaciones.Columns(i + 2).Visible = True Next gvCotizaciones.DataSource = Ds.Tables(0) gvCotizaciones.DataBind() End If objCotizaciones.Dispose() uppCotizaciones.Update() If gvCotizaciones.Rows.Count = 0 Then 'btnGeneraOrdenes.Visible = False uppOpciones.Update() Else 'btnGeneraOrdenes.Enabled = If(gvCotizaciones.Rows.Count - 1 = NumCotizacionesGanadoras And CveEstatusSiguiente = CveEstatusFinalOK, True, False) 'If ChkCotizacion.Checked AndAlso objOC.CveEstatusSiguiente = CveEstatusFinalOK AndAlso NumCotizacionesGanadoras < gvCotizaciones.Rows.Count - 1 Then If ChkCotizacion.Checked AndAlso CveEstatusSiguiente = CveEstatusFinalOK AndAlso NumCotizacionesGanadoras < gvCotizaciones.Rows.Count - 1 Then CboE.Enabled = False LblMsgEstatus.Visible = True LblMsgEstatus.Text = "Cotización requerida para avanzar" BtnGuardar.Enabled = False Else BtnGuardar.Enabled = True CboE.Enabled = True LblMsgEstatus.Visible = False End If uppEstatus.Update() uppOpciones.Update() End If End Sub #End Region #Region " GVD " Protected Sub GvD_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvD.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.RowState = DataControlRowState.Normal Or e.Row.RowState = DataControlRowState.Alternate Then If UsuarioActual.Empresa.GralSoloProyecto Then e.Row.FCLiteral("LtlSubProyecto").Text = e.Row.DBCampo("SubProyecto") End If End If e.Row.Cells(0).ToolTip = e.Row.DBCampo("CvePresupuestoEgreso") 'comente esta linea, RMF: 2015.04.20 'If DtEstatusUsuarios.FiltraParametros(String.Format("CveSubProyecto = {0}", e.Row.DBCampo("CveSubProyecto"))).Rows.Count = 0 Then e.Row.FCImageButton("ImgEdit").Visible = False : e.Row.FCImageButton("ImgDelete").Visible = False If TipoOC = "OC" AndAlso Not IsDBNull(e.Row.DBCampo("CveOrdenCompraPadre")) AndAlso IsNumeric(e.Row.DBCampo("CveOrdenCompraPadre")) Then GvD.Columns(10).Visible = True lblTipoPadreHijo.Visible = True 'EditarOC = False e.Row.FCLiteral("LtlLiga").Text = String.Format("{1}", e.Row.DBCampo("CveOrdenCompraPadre"), e.Row.DBCampo("FolioOrdenCompraPadre")) ElseIf TipoOC = "REQ" AndAlso Not IsDBNull(e.Row.DBCampo("CveOrdenCompraHija")) AndAlso IsNumeric(e.Row.DBCampo("CveOrdenCompraHija")) Then GvD.Columns(10).Visible = True lblTipoPadreHijo.Visible = True e.Row.FCLiteral("LtlLiga").Text = String.Format("{1}", e.Row.DBCampo("CveOrdenCompraHija"), e.Row.DBCampo("FolioOrdenCompraHija")) End If 'CveCompraDetalle Vinculada e.Row.FCLiteral("LtlCompra").Text = String.Format("{1}", e.Row.DBCampo("CveCompra"), e.Row.DBCampo("FolioCompra")) If e.Row.DBCampo("CveCompra") <> "" And LblCompra.Visible = False Then LblCompra.Visible = True GvD.Columns(11).Visible = True End If 'CargaPresupuestosEgresos If UsuarioActual.Empresa.UsaAC And VerificaPresupuesto Then e.Row.FCDropDownList("DdlAC1").Visible = True e.Row.FCDropDownList("DdlAC1").DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveProgramaOperativo", "ProgramaOperativo"}) e.Row.FCDropDownList("DdlAC1").DataBind() If e.Row.DBCampo("CveProgramaOperativo").ToEntero > 0 Then e.Row.FCDropDownList("DdlAC1").DataSource = e.Row.DBCampo("CveProgramaOperativo") e.Row.FCDropDownList("DdlAC2").Visible = True e.Row.FCDropDownList("DdlAC2").DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveUnidadAdministrativa", "UnidadAdministrativa"}) e.Row.FCDropDownList("DdlAC2").DataBind() If e.Row.DBCampo("CveUnidadAdministrativa").ToEntero > 0 Then e.Row.FCDropDownList("DdlAC2").DataSource = e.Row.DBCampo("CveUnidadAdministrativa") e.Row.FCDropDownList("DdlAC3").Visible = True e.Row.FCDropDownList("DdlAC3").DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveFuenteFinanciamiento", "FuenteFinanciamiento"}) e.Row.FCDropDownList("DdlAC3").DataBind() If e.Row.DBCampo("CveFuenteFinanciamiento").ToEntero > 0 Then e.Row.FCDropDownList("DdlAC3").DataSource = e.Row.DBCampo("CveFuenteFinanciamiento") e.Row.FCDropDownList("DdlAC4").Visible = True e.Row.FCDropDownList("DdlAC4").DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveTipoGasto", "TipoGasto"}) e.Row.FCDropDownList("DdlAC4").DataBind() If e.Row.DBCampo("CveTipoGasto").ToEntero > 0 Then e.Row.FCDropDownList("DdlAC4").DataSource = e.Row.DBCampo("CveTipoGasto") ' e.Row.FCLabel("LblClasificacion").Visible = False e.Row.FCDropDownList("DdlAC5").Visible = True e.Row.FCDropDownList("DdlAC5").DataSource = DtPresupuestos.FiltraParametros("NOT CodigoCOG like '1%'", DistinctColumns:={"CveClasificacion", "CodigoClasificacion"}, Orderby:="CodigoClasificacion") e.Row.FCDropDownList("DdlAC5").DataBind() If e.Row.DBCampo("CveProgramaOperativo").ToString.ToEntero > 0 Then e.Row.FCDropDownList("DdlAC1").SelectedValue = e.Row.DBCampo("CveProgramaOperativo") If e.Row.DBCampo("CveUnidadAdministrativa").ToString.ToEntero > 0 Then e.Row.FCDropDownList("DdlAC2").SelectedValue = e.Row.DBCampo("CveUnidadAdministrativa") If e.Row.DBCampo("CveFuenteFinanciamiento").ToString.ToEntero > 0 Then e.Row.FCDropDownList("DdlAC3").SelectedValue = e.Row.DBCampo("CveFuenteFinanciamiento") If e.Row.DBCampo("CveTipoGasto").ToString.ToEntero > 0 Then e.Row.FCDropDownList("DdlAC4").SelectedValue = e.Row.DBCampo("CveTipoGasto") If e.Row.DBCampo("CveClasificacionOG").ToString.ToEntero > 0 Then e.Row.FCDropDownList("DdlAC5").SelectedValue = e.Row.DBCampo("CveClasificacionOG") 'e.Row.FCDropDownList("DdlAC5").SelectedValue = e.Row.DBCampo("CveClasificacion") Else e.Row.Cells(12).Visible = False e.Row.Cells(13).Visible = False e.Row.Cells(14).Visible = False e.Row.Cells(15).Visible = False e.Row.Cells(16).Visible = False End If End If If e.Row.RowState = DataControlRowState.Edit OrElse e.Row.RowState = 5 Then 'e.Row.Cells(7).Width = Unit.Pixel(82) e.Row.FCDropDownList("DdlPS").DataSource = GlobalDTProductosServicios(UsuarioActual.CveEmpresa) e.Row.FCDropDownList("DdlPS").DataBind() e.Row.FCDropDownList("DdlPS").SelectedValueExist(e.Row.DBCampo("CvePS")) DdlPS_SelectedIndexChanged1(e.Row.FCDropDownList("DdlPS"), EventArgs.Empty) If isWhitFamily() Then e.Row.FCDropDownList("DdlClasificacion").DataSource = GlobalDTSubFamilias(UsuarioActual.CveEmpresa) 'GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltraParametros("Codigo is null OR Codigo = ''") Else e.Row.FCDropDownList("DdlClasificacion").DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa) End If e.Row.FCDropDownList("DdlClasificacion").DataBind() e.Row.FCDropDownList("DdlClasificacion").SelectedValueExist(e.Row.DBCampo("CveClasificacion")) Dim dr As DataRow = GlobalDTSubProyectos(e.Row.DBCampo("CveProyecto").ToEntero, e.Row.DBCampo("CveSubProyecto").ToEntero).FiltraParametros("CveEmpresa = " & UsuarioActual.CveEmpresa).FiltroPrimero("") If dr IsNot Nothing Then If UsuarioActual.Empresa.GralSoloProyecto Then e.Row.FCDropDownList("DdlProyectoEdit").Visible = False Else e.Row.FCDropDownList("DdlProyectoEdit").DataSource = DtEstatusUsuarios.FiltraParametros("", "", {"CveProyecto", "Proyecto"}) 'GlobalDTProyectos(UsuarioActual.Empresa.CveEmpresa) e.Row.FCDropDownList("DdlProyectoEdit").DataBind() e.Row.FCDropDownList("DdlProyectoEdit").SelectedValue = dr("CveProyecto").ToString End If If UsuarioActual.Empresa.GralSoloProyecto Then e.Row.FCDropDownList("DdlSubProyectoEdit").DataSource = DtEstatusUsuarios.FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}) Else e.Row.FCDropDownList("DdlSubProyectoEdit").DataSource = DtEstatusUsuarios.FiltraParametros(String.Format("CveProyecto = {0}", dr("CveProyecto").ToString.ToEntero), "", {"CveSubProyecto", "SubProyecto"}) ' 'GlobalDTSubProyectos(dr("CveProyecto").ToString.ToEntero) End If e.Row.FCDropDownList("DdlSubProyectoEdit").DataBind() e.Row.FCDropDownList("DdlSubProyectoEdit").SelectedValue = e.Row.DBCampo("CveSubProyecto") End If e.Row.FCTextBox("LblEditCodigo").Attributes.Add("onkeyup", String.Format("EnterAFEdit(event,this,{0},{1});", e.Row.FCHiddenField("HdnCveActivoFijo").ClientID, e.Row.FCHiddenField("HdnCodigoAF").ClientID)) e.Row.FCTextBox("LblEditCodigo").Attributes.Add("onblur", String.Format("AFBlurEdit(this,{0},{1});", e.Row.FCHiddenField("HdnCveActivoFijo").ClientID, e.Row.FCHiddenField("HdnCodigoAF").ClientID)) e.Row.FCImage("ImgAF").Attributes.Add("onclick", String.Format("AbrirVentana('/AF/PopUpBuscarAF.aspx?OPCION=OCE&RI={0}',950,600,'N');", e.Row.RowIndex)) e.Row.FCTextBox("TxtDescuentoEdit").Attributes.Add("onkeyup", String.Format("FormatoMoneda(this);ValidaDescuentoDetalle(this,{0});", e.Row.FCTextBox("TxtImporteEdit").ClientID)) e.Row.FCTextBox("TxtImporteEdit").Attributes.Add("onkeyup", String.Format("ValidaDescuentoDetalle({0},this);", e.Row.FCTextBox("TxtImporteEdit").ClientID)) Else End If End Sub Protected Sub GvD_RowDeleting(sender As Object, e As GridViewDeleteEventArgs) Handles GvD.RowDeleting If GvD.Rows(e.RowIndex).DataKey("TipoDato").Contiene("1", "2") Then 'cuando viene de la bd o es editado, solo lo borraré DrEliminados.Add(GvD.Rows(e.RowIndex).DataKey("CveOrdenCompraDetalle").ToString.ToEntero) End If Dim dr As DataRow() = DtDetalle.Select("CveOrdenCompraDetalle = " & GvD.Rows(e.RowIndex).DataKey("CveOrdenCompraDetalle").ToString.ToEntero) ' If UsuarioActual.Empresa.UsaAC Then UpdateAC(dr(0).Item("CvePresupuestoEgreso").ToString.ToEntero, dr(0).Item("Total").ToString.ToEntero, True) dr(0).Delete() CargaDatosDetalles() End Sub Protected Sub GvD_RowEditing(sender As Object, e As GridViewEditEventArgs) Handles GvD.RowEditing GvD.EditIndex = e.NewEditIndex 'DdlPS_SelectedIndexChanged1(GvD.Rows(e.NewEditIndex).FCDropDownList("CboUnidadMedidaEdit"), EventArgs.Empty) CargaDatosDetalles() 'Dim EditingRow As GridViewRow = GvD.Rows(e.NewEditIndex) 'Dim CboUM As DropDownList = EditingRow.FCDropDownList("CboUnidadMedidaEdit") 'CboUM.DataSource = GlobalDTUnidadesMedida 'CboUM.DataBind() 'CboUM.SelectedValue = EditingRow.DataKey("CveUnidadMedida").ToString 'Dim CboClasif As DropDownList = EditingRow.FCDropDownList("DdlClasificacion") 'CboClasif.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa) 'CboClasif.DataBind() 'CboClasif.SelectedValue = EditingRow.DataKey("CveClasificacion").ToString() 'Dim CboPS As DropDownList = EditingRow.FCDropDownList("DdlPS") 'Dim filtro As String = "" 'Dim CveClasificacion = EditingRow.DataKey("CveClasificacion").ToEntero 'If CveClasificacion > 0 Then ' If isWhitFamily() Then ' filtro = String.Format("CveSubFamilia={0}", CveClasificacion) ' Else ' filtro = String.Format("CveClasificacion={0}", CveClasificacion) ' End If 'End If 'CboPS.Items.Clear() 'CboPS.ClearSelection() 'CboPS.DataSource = GlobalDTProductosServicios(UsuarioActual.CveEmpresa).FiltraParametros(filtro, "PS") 'CboPS.DataBind() 'CboPS.Items.Insert(0, New ListItem("*** Actualizar listado de Productos o Servicios ***", "-2")) 'CboPS.Items.Insert(0, New ListItem("Seleccione el Producto", "-1")) 'CboPS.SelectedValueExist(EditingRow.DataKey("CvePS").ToString()) 'EditingRow.FCTextBox("TxtObsPS").Text = EditingRow.DataKey("Observacion").ToString() 'HdnEditCveActivoFijo.Value = EditingRow.DataKey("CveActivoFijo").ToString 'HdnEditCodigo.Value = EditingRow.DataKey("Codigo").ToString End Sub Protected Sub GvD_RowUpdating(sender As Object, e As GridViewUpdateEventArgs) Handles GvD.RowUpdating Dim Cantidad, Importe, Descuento As Double Dim CveUnidad, CveClasificacion, CveActivoFijo, CvePS, CveSubProyecto, CveProyecto As Integer Dim Obs, UM, Clasificacion, Codigo, PS, SubProyecto, Proyecto As String Dim gvr As GridViewRow = GvD.Rows(e.RowIndex) Cantidad = gvr.FCTextBox("TxtCantEdit").Text.Trim.ToDouble Importe = If(gvr.FCTextBox("TxtImporteEdit").Text.Trim = "", -1, gvr.FCTextBox("TxtImporteEdit").Text.Trim.ToDouble) Descuento = If(gvr.FCTextBox("TxtDescuentoEdit").Text.Trim = "", 0, gvr.FCTextBox("TxtDescuentoEdit").Text.Trim.ToDouble) Obs = gvr.FCTextBox("TxtObsPS").Text.Trim CveUnidad = gvr.FCDropDownList("CboUnidadMedidaEdit").SelectedValue.ToEntero UM = gvr.FCDropDownList("CboUnidadMedidaEdit").SelectedItem.Text CveClasificacion = gvr.FCDropDownList("DdlClasificacion").SelectedValue.ToEntero Clasificacion = gvr.FCDropDownList("DdlClasificacion").SelectedItem.Text CvePS = gvr.FCDropDownList("DdlPS").SelectedValue.ToEntero PS = gvr.FCDropDownList("DdlPS").SelectedItem.Text CveSubProyecto = gvr.FCDropDownList("DdlSubProyectoEdit").SelectedValue.ToEntero SubProyecto = gvr.FCDropDownList("DdlSubProyectoEdit").SelectedItem.Text If UsuarioActual.Empresa.GralSoloProyecto Then CveProyecto = -1 Proyecto = "Seleccione" Else CveProyecto = gvr.FCDropDownList("DdlProyectoEdit").SelectedValue.ToEntero Proyecto = gvr.FCDropDownList("DdlProyectoEdit").SelectedItem.Text End If 'Agarra el nuevo AF si se modifico o deja el pasado CveActivoFijo = If(gvr.FCHiddenField("HdnCveActivoFijo").Value.ToEntero > 0, gvr.FCHiddenField("HdnCveActivoFijo").Value.ToEntero, HdnEditCveActivoFijo.Value.ToEntero) Codigo = If(gvr.FCHiddenField("HdnCodigoAF").Value <> "-1", gvr.FCHiddenField("HdnCodigoAF").Value, HdnEditCodigo.Value) HdnEditCveActivoFijo.Value = "" HdnEditCodigo.Value = "" 'gvr.FCHiddenField("HdnEditCveActivoFijo").Value.ToEntero 'gvr.FCLabel("LblEditCodigo").Text 'Dim CveOrdenCompraDetalle As Integer = GvD.DataKeys(e.RowIndex)("CveOrdenCompraDetalle").ToString.ToEntero 'Dim pCveOrdenCompra As Integer = GvD.DataKeys(e.RowIndex)("CveOrdenCompra").ToString.ToEntero Dim dr As DataRow() = DtDetalle.Select("CveOrdenCompraDetalle = " & gvr.DataKey("CveOrdenCompraDetalle").ToString.ToEntero) 'Dim totalanterior As Double = dr(0)("Total").ToString.ToDouble dr(0)("Cantidad") = Cantidad dr(0)("CveUnidadMedida") = CveUnidad dr(0)("UM") = UM dr(0)("CveClasificacion") = CveClasificacion dr(0)("Clasificacion") = Clasificacion dr(0)("CvePS") = CvePS dr(0)("PS") = PS dr(0)("Observacion") = Obs dr(0)("CveSubProyecto") = CveSubProyecto dr(0)("SubProyecto") = SubProyecto dr(0)("CveProyecto") = CveProyecto dr(0)("Proyecto") = Proyecto dr(0)("Importe") = Importe dr(0)("Descuento") = Descuento dr(0)("Total") = Importe * Cantidad dr(0)("CveActivoFijo") = CveActivoFijo dr(0)("Codigo") = Codigo 'si el tipodato viene de la BD, entonces sufrió una actualización If dr(0)("TipoDato").ToString.ToEntero = 2 Then dr(0)("TipoDato") = 1 ' dr.AcceptChanges() DtDetalle.AcceptChanges() GvD.EditIndex = -1 CargaDatosDetalles() ' If UsuarioActual.Empresa.UsaAC Then UpdateAC(dr(0).Item("CvePresupuestoEgreso").ToString.ToEntero, totalanterior - dr(0).Item("Total").ToString.ToEntero, True) End Sub Protected Sub GvD_RowCancelingEdit(sender As Object, e As GridViewCancelEditEventArgs) Handles GvD.RowCancelingEdit GvD.EditIndex = -1 CargaDatosDetalles() End Sub #End Region #Region "GENERAR ORDENES" Protected Function GeneraOrdenes(ByRef objOrdenCompra As ClsOC, Conta As ClsContPAQi) As Boolean ' Dim objOrdenCompra As New ClsOC 'objOrdenCompra.IniciaTransacSQL() If TipoOS Then Return False Dim CveCotizacion As Integer = 0 Dim CveColectiva As Integer = 0 Dim HuboError As Boolean = False Dim IVA = If(TxtIVA.Visible, TxtIVA.Text.ToDecimal, LblIVA.Text.ToDecimal) Dim LigaOcsTemp = "" Dim CveOCGeneradasTemp = New List(Of Integer) Try If ChkCotizacion.Checked Then Dim CveProveedor = -1 Dim TotalCot = 0.0, IVACot = 0D, RetIVA = 0.0, RetISR = 0.0, PorIVA = 0.0, Porcentaje = 0.0 Dim IdPoliza = -1 For Each dr As DataRow In DtDetalle.FiltraParametros("", "CveProveedor").Rows 'SI ES DIFERENTE PROVEEDOR AGREGA UNA OC If CveProveedor <> dr("CveProveedor").ToString.ToEntero Then CveProveedor = dr("CveProveedor").ToString.ToEntero Porcentaje = DtDetalle.SUM("Total", String.Format("CveProveedor = {0}", CveProveedor)) / DtDetalle.SUM("Total") PorIVA = GlobalDTCompProveedores(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveProveedor = {0}", CveProveedor)).Rows(0)("IVA").ToString.ToDouble IVACot = (DtDetalle.SUM("Total", String.Format("CveProveedor = {0}", CveProveedor)) * PorIVA).ToString.ToDecimal RetIVA = TxtRetIVA.Text.ToDecimal * Porcentaje RetISR = TxtRetISR.Text.ToDecimal * Porcentaje If objOrdenCompra.AddOrdenCompra("OC", -1, TxtDescrip.Text, TxtJustificacion.Text, DdlPrioridad.SelectedValue.ToEntero, TxtFecha.Text.ToDate, DdlMoneda.SelectedValue.ToEntero, CveEstatusInicialOC, TxtFechaEstimadaEntrega.Text, txtLugarEntrega.Text, CveUsuario, UsuarioActual.CveEmpresa, 0, pCveProveedor:=CveProveedor, CveCliente:=Ddlcliente.SelectedValue.ToEntero, CveVendedor:=DdlVendedor.SelectedValue.ToEntero, PrioridadObservacion:=txtobsprioridad.Text, PorcentajeIVA:=PorIVA, IVA:=IVACot, RetIVA:=RetIVA.ToString.ToDecimal, RetISR:=RetISR.ToString.ToDecimal, IDPoliza:=IdPoliza, CveCotizacion:=CveCotizacion) Then 'CREA POLIZA POR CADA PROVEEDOR If UsuarioActual.Empresa.UsaAC AndAlso VerificaPresupuesto AndAlso objOrdenCompra.Folio > 0 Then IdPoliza = GuardaAC(Conta, objOrdenCompra, objOrdenCompra.CveOrdenCompra, objOrdenCompra.Folio, CveProveedor) If IdPoliza <= 0 Then HuboError = True Exit For End If End If LigaOcsTemp = String.Format("{0}
{2}", LigaOcsTemp, objOrdenCompra.CveOrdenCompra, objOrdenCompra.Folio) CveOCGeneradasTemp.Add(objOrdenCompra.CveOrdenCompra) Else HuboError = True Exit For End If End If 'AGREGA DETALLES If Not objOrdenCompra.AddOrdenCompraDetalle(objOrdenCompra.CveOrdenCompra, dr("Cantidad").ToString.ToDouble(), dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, dr("Importe").ToString.ToDouble, dr("CveSubProyecto").ToString.ToEntero(), dr("CveActivoFijo").ToString.ToEntero, dr("Observacion").ToString, UsuarioActual.CveUsuario, CveOrdenCompra, CvePresupuestoEgreso:=dr("CvePresupuestoEgreso").ToString.ToEntero, Descuento:=dr("Descuento").ToString.ToDouble) Then HuboError = True Exit For End If Next 'SI NO HUBO ERROR AGREGA LAS LIGAS OC DE TODAS LAS OC GENERADAS If Not HuboError Then ViewState("LigaOCs") = String.Format("{0}{1}", LigaOCs, LigaOcsTemp) For Each CveOC As Integer In CveOCGeneradasTemp CveOCGeneradas.Add(CveOC) Next End If 'ANTERIOR 24 FEBRERO 'If objOrdenCompra.GetCotizacionesDetalle(-1, CveOrdenCompra) Then ' Dim DtCotizacionesDetalle As DataTable = objOrdenCompra.DtResultados.FiltraParametros("EsGanadora = 1", "CveCotizacion") ' If DtCotizacionesDetalle.Rows.Count > 0 Then ' For Each Row As DataRow In DtCotizacionesDetalle.Rows ' Dim CveProveedor As Integer = 0 ' If CveCotizacion <> Row("CveCotizacion").ToString.ToEntero Then ' CveCotizacion = Row("CveCotizacion").ToString.ToEntero ' 'Si CveProveedor es NULL, el Ganador fue una Colectiva... Tomar la Colectiva y hacerlo proveedor ' If IsDBNull(Row("CveProveedor")) Then ' Dim objProveedor As New ClsCompProveedores ' If objProveedor.AddProveedor("", Row("Colectiva").ToString, Row("Colectiva").ToString, "", Row("RFCColectiva").ToString, "", "", "", Row("CorreoColectiva").ToString, "", ' 0, 0, "", 0, 0, 0, -1, "", -1, "", -1, "", -1, "", -1, "", -1, "", -1, "", -1, "", -1, "", -1, "", -1, "", -1, "", -1, "", -1, "", -1, "", -1, "", -1, "", -1, "", -1, UsuarioActual.CveUsuario, "", "", False, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then ' 'Actualizar global dt ' If objProveedor.GetProveedores(ClsCompProveedores.TipoConsulta.ParaGlobalDT, -1, "-1", "-1", "-1", "-1", "-1", "-1", "-1", -1) Then ' Application("GlobalDTCompProveedores") = objProveedor.DtResultados ' End If ' CveProveedor = objProveedor.CveProveedor ' CveColectiva = Row("CveColectiva").ToString.ToEntero ' 'Quitarlo de las Colectivas ' ' If CveColectiva > 0 Then Dim objColectiva As New ClsGenerales : objColectiva.RemoveColectivas(CveColectiva, UsuarioActual.CveEmpresa) : objColectiva.Dispose() ' Else ' HuboError = True ' End If ' objProveedor.Dispose() ' Else ' CveProveedor = Row("CveProveedor").ToString.ToEntero ' End If ' If HuboError = False Then ' If objOrdenCompra.AddOrdenCompra("OC", Row("CveSubProyecto").ToString.ToEntero, Row("Descripcion").ToString, Row("Justificacion").ToString, Row("Prioridad").ToString.ToEntero, Now, Row("CveMoneda").ToString.ToEntero, CveEstatusInicialOC, ' If(Not IsDBNull(Row("FechaEstimadaEntrega")), Row("FechaEstimadaEntrega").ToString, "-1"), If(Row("LugarEntrega").ToString.Trim = "", "-1", ' Row("LugarEntrega").ToString.Trim), CveUsuario, UsuarioActual.CveEmpresa, 0, pCveProveedor:=CveProveedor, RequiereCotizacion:=ChkCotizacion.Checked, ' CveCliente:=Ddlcliente.SelectedValue.ToEntero, CveVendedor:=DdlVendedor.SelectedValue.ToEntero, PrioridadObservacion:=txtobsprioridad.Text, ' PorcentajeIVA:=DdlIVA.SelectedValue.ToDouble - 1, IVA:=IVA, RetIVA:=TxtRetIVA.Text.ToDecimal, RetISR:=TxtRetISR.Text.ToDecimal, IDPoliza:=IDPolizaPresupuestal) Then ' 'CveOrdenCompra = objOrdenCompra.CveOrdenCompra ' 'Ingresar los detalles ' For Each RowD As DataRow In DtCotizacionesDetalle.FiltraParametros("CveCotizacion = " + CveCotizacion.ToString).Rows ' If Not objOrdenCompra.AddOrdenCompraDetalle(objOrdenCompra.CveOrdenCompra, RowD("Cantidad").ToString.ToDouble, RowD("CveUnidadMedida").ToString.ToEntero, RowD("CvePS").ToString.ToEntero, RowD("PU").ToString.ToDouble, RowD("CveSubProyecto").ToString.ToEntero, If(Not IsDBNull(RowD("CveActivoFijo")), RowD("CveActivoFijo").ToString.ToEntero, -1), RowD("ObservacionOCD").ToString, CveUsuario, CveOrdenCompra, -1, 0.0) Then ' HuboError = True ' Exit For ' End If ' Next ' End If ' End If ' If HuboError = False Then ' ViewState("LigaOCs") = String.Format("{0}
{2}", LigaOCs, objOrdenCompra.CveOrdenCompra, objOrdenCompra.Folio) ' CveOCGeneradas.Add(objOrdenCompra.CveOrdenCompra) ' End If ' End If ' Next ' End If 'Else ' HuboError = True 'End If Else 'cuando no requiere cotizacion 'se debe de agrupar pr subproyecto, 'Dim SubProyectos = From d In DtDetalle.AsEnumerable() ' Group d By Grp = New With { ' Key .CveSubProyecto = d("CveSubProyecto").ToString.ToEntero ' } Into Group ' Select Grp.CveSubProyecto 'For Each obj In SubProyectos ' If objOrdenCompra.AddOrdenCompra("OC", obj.ToEntero, TxtDescrip.Text, TxtJustificacion.Text, DdlPrioridad.SelectedValue.ToEntero, TxtFecha.Text.ToDate, DdlMoneda.SelectedValue.ToEntero, CveEstatusInicialOC, ' TxtFechaEstimadaEntrega.Text, txtLugarEntrega.Text, CveUsuario, UsuarioActual.CveEmpresa, 0, pCveProveedor:=DdlProveedores.SelectedValue.ToEntero, CveCliente:=Ddlcliente.SelectedValue.ToEntero, ' CveVendedor:=DdlVendedor.SelectedValue.ToEntero, PrioridadObservacion:=txtobsprioridad.Text, ' PorcentajeIVA:=DdlIVA.SelectedValue.ToDouble - 1) Then ' For Each dr As GridViewRow In GvD.Rows ' If Not objOrdenCompra.AddOrdenCompraDetalle(objOrdenCompra.CveOrdenCompra, dr.DataKey("Cantidad").ToString.ToDouble(), dr.DataKey("CveUnidadMedida").ToString.ToEntero, dr.DataKey("CvePS").ToString.ToEntero, dr.DataKey("Importe").ToString.ToDouble, dr.DataKey("CveSubProyecto").ToString.ToEntero(), dr.DataKey("CveActivoFijo").ToString.ToEntero, dr.DataKey("Observacion").ToString, UsuarioActual.CveUsuario, CveOrdenCompra, CvePresupuestoEgreso:=dr.FCHiddenField("HdnCvePresupuestoEgreso").Value.ToString.ToEntero) Then ' HuboError = True ' Exit For ' End If ' Next ' If HuboError = False Then ' ViewState("LigaOCs") = String.Format("{0}
{2}", LigaOCs, objOrdenCompra.CveOrdenCompra, objOrdenCompra.Folio) ' CveOCGeneradas.Add(objOrdenCompra.CveOrdenCompra) ' End If ' End If 'Next If objOrdenCompra.AddOrdenCompra("OC", -1, TxtDescrip.Text, TxtJustificacion.Text, DdlPrioridad.SelectedValue.ToEntero, TxtFecha.Text.ToDate, DdlMoneda.SelectedValue.ToEntero, CveEstatusInicialOC, TxtFechaEstimadaEntrega.Text, txtLugarEntrega.Text, CveUsuario, UsuarioActual.CveEmpresa, 0, pCveProveedor:=DdlProveedores.SelectedValue.ToEntero, CveCliente:=Ddlcliente.SelectedValue.ToEntero, CveVendedor:=DdlVendedor.SelectedValue.ToEntero, PrioridadObservacion:=txtobsprioridad.Text, PorcentajeIVA:=DdlIVA.SelectedValue.ToDouble - 1, IVA:=IVA, RetIVA:=TxtRetIVA.Text.ToDecimal, RetISR:=TxtRetISR.Text.ToDecimal, IDPoliza:=IDPolizaPresupuestal, CveCotizacion:=CveCotizacion) Then 'USA AC If UsuarioActual.Empresa.UsaAC AndAlso VerificaPresupuesto Then ' AGREGAR POLIZA ' SI NO TIENE COTIZACION SE GENERA 1 POLIZA If Not ChkCotizacion.Checked Then If GuardaAC(Conta, objOrdenCompra, objOrdenCompra.CveOrdenCompra, objOrdenCompra.Folio) <= 0 Then HuboError = True End If End If End If 'TERMINA: USA AC 'CveOrdenCompra = objOrdenCompra.CveOrdenCompra If Not HuboError Then For Each dr As DataRow In DtDetalle.Rows If Not objOrdenCompra.AddOrdenCompraDetalle(objOrdenCompra.CveOrdenCompra, dr("Cantidad").ToString.ToDouble(), dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, dr("Importe").ToString.ToDouble, dr("CveSubProyecto").ToString.ToEntero(), dr("CveActivoFijo").ToString.ToEntero, dr("Observacion").ToString, UsuarioActual.CveUsuario, CveOrdenCompra, CvePresupuestoEgreso:=dr("CvePresupuestoEgreso").ToString.ToEntero, Descuento:=dr("Descuento").ToString.ToDouble) Then HuboError = True Exit For End If Next End If If HuboError = False Then ViewState("LigaOCs") = String.Format("{0}
{2}", LigaOCs, objOrdenCompra.CveOrdenCompra, objOrdenCompra.Folio) CveOCGeneradas.Add(objOrdenCompra.CveOrdenCompra) End If End If End If 'Cambiar de estatus a la requisicion -- "Se genero Orden de Compra" 'If objOrdenCompra.UpdateOrdenCompraEstatus(CveEstatusSiguiente, CveOrdenCompra, UsuarioActual.CveUsuario, "") Then ' 'EnviarCorreoCambioEstatus(CveEstatusSiguiente, GlobalDTOCEstatus.FiltraParametros("CveEstatus = " + CveEstatusSiguiente.ToString).Rows(0)("Estatus").ToString) 'End If 'If HuboError = False Then ' objOrdenCompra.Commit() 'GeneraPDF(objOrdenCompra.CveOrdenCompra) 'Enviar correo 'EnviarCorreoOrdenCompra(objOrdenCompra.CveOrdenCompra, CveProveedor) 'Quitarlo de las Colectivas 'If CveColectiva > 0 Then Dim objColectiva As New ClsGenerales : objColectiva.RemoveColectivas(Row("CveColectiva").ToString.ToEntero, UsuarioActual.CveEmpresa) : objColectiva.Dispose() 'Else ' objOrdenCompra.RollBack() 'End If Catch ex As Exception HuboError = True End Try Return Not HuboError End Function Protected Sub DesHabilitar() TxtFechaEstimadaEntrega.Enabled = False txtLugarEntrega.Enabled = False TxtDescrip.Enabled = False TxtJustificacion.Enabled = False DdlPrioridad.Enabled = False DdlMoneda.Enabled = False TxtCant.Enabled = False CboUnidadMedida.Enabled = False DdlClasificacion.Enabled = False DdlP2.Enabled = False DdlP2.ddl.Enabled = False TxtObsPS.Enabled = False HplMaq.Enabled = False LbAgregar.Enabled = False If CveEstatusFinalError <= 0 Then CboE.Enabled = False ChkCotizacion.Enabled = False hplAgregarCotizacion.Visible = False hplEnviarCorreo.Visible = False 'btnGeneraOrdenes.Visible = False BtnGuardar.Enabled = False BtnCancelar.Enabled = False 'BtnCancelarPrevio.Enabled = False DdlProyecto.Enabled = False DdlSubProyecto.Enabled = False txtPrecioUnitario.Enabled = False gvCotizaciones.Enabled = False GvD.Enabled = False 'GvD.Columns(5).Visible = False GvD.Columns(9).Visible = False GvD.Columns(10).Visible = True BtnCancelarPrevio.Disabled = True End Sub #End Region #Region "AMORNIZACION CONTABLE - A C" #Region "ANTERIOR AC -- YA NO SE USA" Private Sub CargaCombosPOA() CargaFuenteFinanciamiento() CargaTipoGasto() CargaUnidadAdministrativa() CargaClasificacionOG() End Sub Private Sub CargaFuenteFinanciamiento() CboFuenteFinanciamiento.DataSource = GlobalDTAC_FuentesFinanciamiento(UsuarioActual.CveEmpresa) CboFuenteFinanciamiento.DataBind() CboFuenteFinanciamiento.Items.Insert(0, New ListItem("Todos", "-1")) End Sub Private Sub CargaTipoGasto() CboTipoGasto.DataSource = GlobalDTAC_TipoGasto CboTipoGasto.DataBind() CboTipoGasto.Items.Insert(0, New ListItem("Todos", "-1")) End Sub Private Sub CargaUnidadAdministrativa() CboUnidadAdministrativa.DataSource = GlobalDTAC_UnidadesAdministrativas(UsuarioActual.CveEmpresa) CboUnidadAdministrativa.DataBind() CboUnidadAdministrativa.Items.Insert(0, New ListItem("Todos", "-1")) End Sub Private Sub CargaClasificacionOG() Dim Filtro As New StringBuilder ' Filtro.AppendFormat("Afectable= '{0}'", "Si") CboClasificacionOG.DataSource = GlobalDTACClasificadorObjetoGasto(UsuarioActual.CveEmpresa).FiltraParametros("Afectable = 1 AND NOT Codigo like '1%' ", "CodigoClasificacion") CboClasificacionOG.DataBind() CboClasificacionOG.Items.Insert(0, New ListItem("Todos", "-1")) End Sub Protected Sub consultarAC_Click(sender As Object, e As EventArgs) Dim filtro As New StringBuilder If CboFuenteFinanciamiento.SelectedValue.ToEntero > 0 Then filtro.AppendFormat("CveFuenteFinanciamiento= {0}", CboFuenteFinanciamiento.SelectedValue.ToString) End If If CboUnidadAdministrativa.SelectedValue.ToEntero > 0 Then filtro.AppendFormat("{1} CveUnidadAdministrativa= {0}", CboUnidadAdministrativa.SelectedValue.ToString, If(filtro.Length > 0, "AND", "")) End If If CboTipoGasto.SelectedValue.ToEntero > 0 Then filtro.AppendFormat("{1} CveTipoGasto= {0}", CboTipoGasto.SelectedValue.ToString, If(filtro.Length > 0, "AND", "")) End If If CboClasificacionOG.SelectedValue.ToEntero > 0 Then filtro.AppendFormat("{1} CveClasificadorOG= {0}", CboClasificacionOG.SelectedValue.ToString, If(filtro.Length > 0, "AND", "")) End If GvAC.DataSource = DtAC.FiltraParametros(filtro.ToString) GvAC.DataBind() End Sub Protected Sub SeleccionarPOA_Click(ByVal sender As Object, ByVal e As EventArgs) Dim gvr As GridViewRow = CType(CType(sender, LinkButton).BindingContainer, GridViewRow) Dim Clave As String = gvr.DataKey("CvePresupuestoEgreso") Dim CuentaporEjercer = gvr.DataKey("IdCuentaPorEjercer") Dim CuentaComprometido = gvr.DataKey("IdCuentaComprometido") Dim Presupuesto As String = gvr.DataKey("Total") If Presupuesto.ToEntero < TxtImporte.Text.ToEntero Then Alert("El Presupuesto seleccionado no cubre el gasto. Favor de seleccionar otro.", TipoMensaje.MsgAdvertencia) Else LblCvePOA.Text = Clave.ToString HdnCveCuentaPorEjercer.Value = CuentaporEjercer.ToString HdnCveCuentaComprometido.Value = CuentaComprometido.ToString LbAgregar.Enabled = True UpPoaClave.Update() UPPDetalle.Update() Alert("Presupuesto Seleccionado correctamente!.", TipoMensaje.MsgInformacion) End If End Sub Protected Sub GvAC_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvAC.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then e.Row.Cells(0).Attributes.Add("onclick", "tb_remove();") e.Row.Cells(1).Attributes.Add("onclick", "tb_remove();") e.Row.Cells(2).Attributes.Add("onclick", "tb_remove();") e.Row.Cells(3).Attributes.Add("onclick", "tb_remove();") e.Row.Cells(4).Attributes.Add("onclick", "tb_remove();") e.Row.Cells(5).Attributes.Add("onclick", "tb_remove();") e.Row.Cells(6).Attributes.Add("onclick", "tb_remove();") End If End Sub #End Region Private Sub ActivaAC() 'SI ES REQ Y YA ESTA AUTORIZADA NO MUESTRA PE If TipoOC = "REQ" AndAlso CveEstatus = CveEstatusFinalOK Then Exit Sub End If 'VALIDA SI NECESITA AC VerificaPresupuesto = If(CboE.SelectedValue.ToEntero = CveEstatusFinalOK, True, False) VerificaPresupuesto = If(TipoOC = "OC", True, VerificaPresupuesto) 'Seccion Grid If VerificaPresupuesto Then TxtFecha.Attributes.Add("onblur", "CambiaFecha();") CargaPresupuesto() Else TxtFecha.Attributes.Add("onblur", "") BtnGuardar.Enabled = True End If MuestraPresupuestosEgresos() End Sub Private Sub CargaPresupuesto() Dim AC As New ClsAC Dim Ejercicio = If(IsDate(TxtFecha.Text), Year(TxtFecha.Text.ToDate), UsuarioActual.Empresa.EjercicioActual) If AC.GetPresupuestoEgresos(-1, True, Ejercicio, UsuarioActual.CveEmpresa, True) Then DtPresupuestos = AC.DtResultados.Copy Else Alert("Ocurrio un error al cargar los Presupuestos. Por favor vuelva a cargar la página", TipoMensaje.MsgError) End If AC.Dispose() EjercicioAC = Ejercicio UPPDetalle.Update() UpPresupuestosAC.Update() End Sub Private Sub MuestraPresupuestosEgresos() 'Seccion Grid If VerificaPresupuesto Then GvD.Width = 1750 GvD.Columns(12).Visible = True GvD.Columns(13).Visible = True GvD.Columns(14).Visible = True GvD.Columns(15).Visible = True GvD.Columns(16).Visible = True 'Panel General UpPresupuestosAC.Visible = True DdlACGeneral1.DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveProgramaOperativo", "ProgramaOperativo"}) DdlACGeneral1.DataBind() DdlACGeneral2.DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveUnidadAdministrativa", "UnidadAdministrativa"}) DdlACGeneral2.DataBind() DdlACGeneral3.DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveFuenteFinanciamiento", "FuenteFinanciamiento"}) DdlACGeneral3.DataBind() DdlACGeneral4.DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveTipoGasto", "TipoGasto"}) DdlACGeneral4.DataBind() 'carga los que no sean de nomina DdlACGeneral5.DataSource = DtPresupuestos.FiltraParametros("NOT CodigoCOG like '1%'", DistinctColumns:={"CveClasificacion", "CodigoClasificacion"}, Orderby:="CodigoClasificacion") DdlACGeneral5.DataBind() UpPresupuestosAC.Update() If TipoOC = "REQ" Then CalculaSaldoACGeneral() Else RegistraScript("$get('DivPresupuestoEgresosGeneral').style.display = 'none';") BtnVerPE.Visible = True End If Else GvD.Width = 1000 GvD.Columns(12).Visible = False GvD.Columns(13).Visible = False GvD.Columns(14).Visible = False GvD.Columns(15).Visible = False GvD.Columns(16).Visible = False UpPresupuestosAC.Visible = False End If CargaDatosDetalles() UPPTab.Update() ConservaAC() CompruebaAgregar() End Sub #Region " CAMBIA EJERICIO AC " Protected Sub BtnCambiaFecha_Click(sender As Object, e As EventArgs) CambiaEjercicioAC() End Sub Private Sub CambiaEjercicioAC(Optional CargaTodo As Boolean = True) Dim Ejercicio = If(IsDate(TxtFecha.Text), Year(TxtFecha.Text.ToDate), UsuarioActual.Empresa.EjercicioActual) If Ejercicio = EjercicioAC Then Exit Sub End If If Ejercicio <> EjercicioAC Then Dim AC As New ClsAC If AC.GetPresupuestoEgresos(-1, True, Ejercicio, UsuarioActual.CveEmpresa, True) Then DtPresupuestos = AC.DtResultados.Copy Else Alert("Ocurrio un error al cargar los Presupuestos. Por favor vuelva a cargar la página", TipoMensaje.MsgError) End If AC.Dispose() EjercicioAC = Ejercicio 'CAMBIA LOS COMBOS DE TODOS LOS DETALLES DEL GRID For Each gvr As GridViewRow In GvD.Rows gvr.FCDropDownList("DdlAC1").SelectedValue = DdlACGeneral1.SelectedValue gvr.FCDropDownList("DdlAC2").SelectedValue = DdlACGeneral2.SelectedValue gvr.FCDropDownList("DdlAC3").SelectedValue = DdlACGeneral3.SelectedValue gvr.FCDropDownList("DdlAC4").SelectedValue = DdlACGeneral4.SelectedValue gvr.FCDropDownList("DdlAC5").SelectedValue = DdlACGeneral5.SelectedValue Next End If UPPDetalle.Update() UpPresupuestosAC.Update() End Sub #End Region Protected Sub InfoPOA(sender As Object, e As EventArgs) Dim AC As New ClsAC Dim cvepe As String = CType(sender, LinkButton).Text.ToString Dim filtro As New StringBuilder Dim datos As New StringBuilder filtro.AppendFormat("CvePresupuestoEgreso = {0}", cvepe) If AC.GetPresupuestoEgresos(cvepe.ToEntero, True, -1, UsuarioActual.CveEmpresa) Then For Each dr As DataRow In AC.DtResultados.FiltraParametros(filtro.ToString).Rows datos.AppendFormat("Proyecto = {0} {1}", dr("ProgramaOperativo").ToString, vbCr) datos.AppendFormat("Fuente Financiamiento = {0} {1}", dr("FuenteFinanciamiento").ToString, vbCr) datos.AppendFormat("Unidad Administrativa = {0} {1}", dr("UnidadAdministrativa").ToString, vbCr) datos.AppendFormat("Tipo de Gasto = {0} {1}", dr("TipoGasto").ToString, vbCr) datos.AppendFormat("Clasificador del Objeto de Gasto = {0} {1}", dr("Clasificacion").ToString, vbCr) Next CType(sender, LinkButton).ToolTip = datos.ToString End If End Sub Private Sub ConservaAC() 'Guarda valores AC en TmpDT Dim Index = 0 For Each gvr As GridViewRow In GvD.Rows DtDetalle.Rows(Index)("CveProgramaOperativo") = gvr.FCDropDownList("DdlAC1").SelectedValue.ToEntero DtDetalle.Rows(Index)("CveUnidadAdministrativa") = gvr.FCDropDownList("DdlAC2").SelectedValue.ToEntero DtDetalle.Rows(Index)("CveFuenteFinanciamiento") = gvr.FCDropDownList("DdlAC3").SelectedValue.ToEntero DtDetalle.Rows(Index)("CveTipoGasto") = gvr.FCDropDownList("DdlAC4").SelectedValue.ToEntero DtDetalle.Rows(Index)("CveClasificacionOG") = gvr.FCDropDownList("DdlAC5").SelectedValue.ToEntero Index += 1 Next End Sub Private Sub ConservaACDetalle(Gvr As GridViewRow) 'Guarda valores AC en TmpDT DtDetalle.Rows(Gvr.RowIndex)("CveProgramaOperativo") = Gvr.FCDropDownList("DdlAC1").SelectedValue.ToEntero DtDetalle.Rows(Gvr.RowIndex)("CveUnidadAdministrativa") = Gvr.FCDropDownList("DdlAC2").SelectedValue.ToEntero DtDetalle.Rows(Gvr.RowIndex)("CveFuenteFinanciamiento") = Gvr.FCDropDownList("DdlAC3").SelectedValue.ToEntero DtDetalle.Rows(Gvr.RowIndex)("CveTipoGasto") = Gvr.FCDropDownList("DdlAC4").SelectedValue.ToEntero DtDetalle.Rows(Gvr.RowIndex)("CveClasificacionOG") = Gvr.FCDropDownList("DdlAC5").SelectedValue.ToEntero End Sub Protected Sub CompruebaSaldoAC(sender As Object, e As EventArgs) ConservaACDetalle(CType(CType(sender, DropDownList).NamingContainer, GridViewRow)) CompruebaAgregar() GvD.DataSource = DtDetalle GvD.DataBind() End Sub Protected Sub CambiaACGeneral(sender As Object, e As EventArgs) 'If ChkACGeneral.Checked Then 'CAMBIA LOS COMBOS DE TODOS LOS DETALLES DEL GRID For Each gvr As GridViewRow In GvD.Rows gvr.FCDropDownList("DdlAC1").SelectedValue = DdlACGeneral1.SelectedValue gvr.FCDropDownList("DdlAC2").SelectedValue = DdlACGeneral2.SelectedValue gvr.FCDropDownList("DdlAC3").SelectedValue = DdlACGeneral3.SelectedValue gvr.FCDropDownList("DdlAC4").SelectedValue = DdlACGeneral4.SelectedValue gvr.FCDropDownList("DdlAC5").SelectedValue = DdlACGeneral5.SelectedValue Next 'REESCRIBE LOS VALORES NUEVOS EN DT ConservaAC() CompruebaAgregar() ' UpPS.Update() CalculaSaldoACGeneral() ' End If End Sub Private Sub CalculaSaldoACGeneral() Dim ContPaq As New ClsContPAQi(UsuarioActual.Empresa) Dim DtPresupuestosTemp = DtPresupuestos.FiltraParametros(String.Format("CveProgramaOperativo = {0} and CveUnidadAdministrativa = {1} and CveFuenteFinanciamiento = {2} and CveTipoGasto= {3} and CveClasificacion = {4}", DdlACGeneral1.SelectedValue.ToString, DdlACGeneral2.SelectedValue.ToString, DdlACGeneral3.SelectedValue.ToString, DdlACGeneral4.SelectedValue.ToString, DdlACGeneral5.SelectedValue.ToString)) If DtPresupuestosTemp IsNot Nothing AndAlso DtPresupuestosTemp.Rows.Count > 0 Then LbACGeneralSaldo.Text = ContPaq.GetSaldoCuenta(DtPresupuestosTemp.Rows(0)("IdCuentaPorEjercer").ToString.ToEntero, 0, TxtFecha.Text.ToDate.Year).ToString.FormatoNumero Else LbACGeneralSaldo.Text = "0.00" End If ContPaq.Dispose() End Sub Private Sub CompruebaAgregar() If GvD.Rows.Count = 0 Then Exit Sub If UsuarioActual.Empresa.UsaAC And VerificaPresupuesto Then Dim ContPaq As New ClsContPAQi(UsuarioActual.Empresa) Dim disponible As Double Dim ErrorPresupuesto = False Dim Ddl1 As DropDownList Dim Ddl2 As DropDownList Dim Ddl3 As DropDownList Dim Ddl4 As DropDownList Dim Ddl5 As DropDownList Dim Total As Double Dim DtPresupuestosTemp As DataTable Dim Filtro As New StringBuilder For Each grid As GridViewRow In GvD.Rows Ddl1 = grid.FCDropDownList("DdlAC1") Ddl2 = grid.FCDropDownList("DdlAC2") Ddl3 = grid.FCDropDownList("DdlAC3") Ddl4 = grid.FCDropDownList("DdlAC4") Ddl5 = grid.FCDropDownList("DdlAC5") Total = grid.FCLiteral("LtlTotal").Text.ToDouble 'OBTENEMOS EL REGISTRO DEL PE SELECCIONADO Filtro.AppendFormat("CveProgramaOperativo = {0} and CveUnidadAdministrativa = {1} and CveFuenteFinanciamiento = {2} and CveTipoGasto= {3} and CveClasificacion = {4}", Ddl1.SelectedValue.ToString, Ddl2.SelectedValue.ToString, Ddl3.SelectedValue.ToString, Ddl4.SelectedValue.ToString, Ddl5.SelectedValue.ToString) DtPresupuestosTemp = DtPresupuestos.FiltraParametros(Filtro.ToString) Filtro.Clear() If DtPresupuestosTemp.Rows.Count > 0 Then disponible = ContPaq.GetSaldoCuenta(DtPresupuestosTemp.Rows(0)("IdCuentaPorEjercer").ToString.ToEntero, 0, TxtFecha.Text.ToDate.Year) If disponible > 0 AndAlso disponible > Total Then 'Alert("Si hay dinero: ") DtDetalle.Rows(grid.RowIndex)("CvePresupuestoEgreso") = DtPresupuestosTemp.Rows(0)("CvePresupuestoEgreso").ToString DtDetalle.Rows(grid.RowIndex)("IdCuentaComprometido") = DtPresupuestosTemp.Rows(0)("IdCuentaComprometido").ToString DtDetalle.Rows(grid.RowIndex)("IdCuentaPorEjercer") = DtPresupuestosTemp.Rows(0)("IdCuentaPorEjercer").ToString grid.Cells(7).BackColor = Drawing.Color.Green Else Alert("No hay presupuesto asignado", TipoMensaje.MsgAdvertencia) grid.Cells(7).BackColor = Drawing.Color.Red ErrorPresupuesto = True Exit For End If DtDetalle.Rows(grid.RowIndex)("CvePresupuestoEgreso") = DtPresupuestosTemp.Rows(0)("CvePresupuestoEgreso").ToString Else DtDetalle.Rows(grid.RowIndex)("CvePresupuestoEgreso") = "-1" Alert("No hay presupuesto asignado", TipoMensaje.MsgAdvertencia) grid.Cells(7).BackColor = Drawing.Color.Red ErrorPresupuesto = True Exit For End If Next If ErrorPresupuesto Then BtnGuardar.Enabled = False Else BtnGuardar.Enabled = True End If uppOpciones.Update() UPPDetalle.Update() ContPaq.Dispose() End If End Sub Private Sub AgregaAC() Dim dr As DataRow For Each gvr As GridViewRow In GvD.Rows dr = DtDetalle.Rows(gvr.RowIndex) dr("CveProgramaOperativo") = gvr.FCDropDownList("DdlAC1").SelectedValue.ToEntero dr("CveUnidadAdministrativa") = gvr.FCDropDownList("DdlAC2").SelectedValue.ToEntero dr("CveFuenteFinanciamiento") = gvr.FCDropDownList("DdlAC3").SelectedValue.ToEntero dr("CveTipoGasto") = gvr.FCDropDownList("DdlAC4").SelectedValue.ToEntero dr("CveClasificacionOG") = gvr.FCDropDownList("DdlAC5").SelectedValue.ToEntero Next DtDetalle.AcceptChanges() End Sub Protected Sub UpdateAC(CvePresupuestoEgreso As Integer, Importe As Integer, TipoMovimiento As Boolean) '' True = suma ||| False = resta Dim indice As Integer = DtAC.Rows.IndexOf(DtAC.Select("CvePresupuestoEgreso = " + CvePresupuestoEgreso.ToString).FirstOrDefault()) Dim Total As Integer = DtAC(indice).Item("Total").ToString.ToEntero If TipoMovimiento Then DtAC(indice).Item("Total") = Math.Round((Total + Importe), 2) Else DtAC(indice).Item("Total") = Math.Round((Total - Importe), 2) End If GvAC.DataSource = DtAC GvAC.DataBind() UpdatePanel2.Update() End Sub #End Region #Region "COTIZACIONES" Protected Sub ChkCotizacion_CheckedChanged(sender As Object, e As EventArgs) Handles ChkCotizacion.CheckedChanged VerificaSiRequiereCotizacion() End Sub Protected Sub VerificaCotizacionesGanadoras() 'If CveEstatusFinalOK = CboE.SelectedValue.ToEntero AndAlso NumCotizacionesGanadoras <> GvD.Rows.Count Then ' BtnGuardar.Enabled = False ' uppOpciones.Update() 'End If If ChkCotizacion.Checked AndAlso CveEstatusSiguiente = CveEstatusFinalOK AndAlso (gvCotizaciones.Rows.Count = 0 Or NumCotizacionesGanadoras < gvCotizaciones.Rows.Count - 1) Then CboE.Enabled = False LblMsgEstatus.Visible = True LblMsgEstatus.Text = "Cotización requerida para avanzar" Else CboE.Enabled = True LblMsgEstatus.Visible = False LblMsgEstatus.Text = "" End If uppEstatus.Update() End Sub Protected Sub gvCotizaciones_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles gvCotizaciones.RowCommand ''Registro el proveedor seleccionado en la orden de compra If e.CommandName = "RegProv" Then If e.CommandArgument.ToString <> "" Then Dim OC As New ClsOC OC.IniciaTransacSQL() Dim TieneError = False Dim Cve As String() = e.CommandArgument.ToString.Split("|"c) If OC.UpdateCotizacionDetalleGanadora(Cve(0).ToEntero, If(Cve(1).ToString.ToUpper = "TRUE", True, False)) > 0 Then If Cve(1).ToString.ToUpper = "TRUE" Then Dim index = CType(DirectCast(e.CommandSource, Button).NamingContainer, GridViewRow).RowIndex Dim dr = DtDetalle.Rows(index) dr("Importe") = DirectCast(e.CommandSource, Button).Text dr("Total") = dr("Importe").ToString.ToDecimal * dr("Cantidad").ToString.ToDecimal dr("CveProveedor") = Cve(2).ToString.ToEntero 'ACTUALIZO DATO EN DB If OC.UpdateOrdenCompraDetalle(dr("Cantidad").ToString.ToDouble, dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, dr("Importe").ToString.ToDouble, dr("CveSubProyecto").ToString.ToEntero, dr("CveActivoFijo").ToString.ToEntero, dr("Observacion").ToString.ToString, UsuarioActual.CveUsuario, dr("CveOrdenCompraDetalle").ToString.ToEntero, dr("CvePresupuestoEgreso").ToString.ToEntero, dr("Descuento").ToString.ToDouble) <= 0 Then TieneError = True End If CargaDatosDetalles() End If End If If Not TieneError Then OC.Commit() Else OC.RollBack() Alert("Ocurrió un error al seleccionar ganador en la cotización. Por favor vuelva a intentar.", TipoMensaje.MsgError) End If OC.Dispose() CargaCotizaciones(CveOrdenCompra) End If End If End Sub Protected Sub gvCotizaciones_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles gvCotizaciones.RowDataBound 'Pongo el nombre del proveedor en el encabezado If e.Row.RowType = DataControlRowType.Header Then For i As Integer = 1 To NumCotizaciones e.Row.Cells(i + 2).Text = String.Format("{2}", CveOrdenCompra, DtCotizaciones.Rows(i - 1)("CveCotizacion"), If(Not IsDBNull(DtCotizaciones.Rows(i - 1)("CveProveedor")), DtCotizaciones.Rows(i - 1)("RazonSocial"), DtCotizaciones.Rows(i - 1)("Colectiva"))) '", Next End If If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.DBCampo("CveOrdenCompraDetalle") = "" Then 'si es el totalizador e.Row.CssClass = "SubTotales" For i As Integer = 1 To NumCotizaciones Dim Btn As Button = e.Row.FCButton(String.Format("Btn{0}", i)) Btn.Text = e.Row.DBCampo(String.Format("PU{0}", i)).ToDouble.ToString("N2") Btn.Visible = True Btn.OnClientClick = "return false;" e.Row.Cells(2 + i).Text = String.Format("{0} ", e.Row.DBCampo(String.Format("PU{0}", i)).ToDouble.ToString("N2")) Next Else Dim CellMasBarato As Integer = -1 Dim Monto As Double = -1 For i As Integer = 1 To NumCotizaciones Dim Btn As Button = e.Row.FCButton(String.Format("Btn{0}", i)) Btn.Text = e.Row.DBCampo("PU" & i).ToDouble.ToString("N2") Btn.CommandArgument = String.Format("{0}|{1}|{2}", e.Row.DBCampo(String.Format("CveCotizacionDetalle{0}", i)), True, DtCotizaciones.Rows(i - 1)("CveProveedor").ToString) Btn.Style.Add("cursor:", "pointer") If e.Row.DBCampo(String.Format("PU{0}", i)).ToDouble > 0 Then If Monto.ToString = "-1" Then Monto = e.Row.DBCampo(String.Format("PU{0}", i)).ToDouble CellMasBarato = i End If If e.Row.DBCampo(String.Format("PU{0}", i)).ToDouble < Monto Then CellMasBarato = i Monto = e.Row.DBCampo(String.Format("PU{0}", i)).ToDouble End If Else Btn.Text = "Sin captura" Btn.Enabled = False 'Btn.Visible = False End If Next 'Coloreo el más barato If CellMasBarato > 0 Then e.Row.Cells(CellMasBarato + 2).BackColor = Drawing.Color.LightBlue If e.Row.DBCampo("CveCotizacionDetalleGanadora").ToEntero > 0 Then NumCotizacionesGanadoras = NumCotizacionesGanadoras + 1 TotalCotizacionesGanadoras += e.Row.DBCampo("TotalCotizacionDetalleGanadora").ToDecimal Dim i As Integer = 1 For Each dr As DataRow In DtCotizaciones.Rows Dim Btn As Button = e.Row.FCButton("Btn" & i) ' Btn.Text = e.Row.DBCampo("PU" & i).ToDouble.ToString("N2") 'Btn.CommandArgument = String.Format("{0}|{1}", e.Row.DBCampo("CveCotizacionDetalle" & i), True) If If(Not IsDBNull(dr("CveProveedor")), dr("CveProveedor").ToString.ToEntero, dr("CveColectiva").ToString.ToEntero) = e.Row.DBCampo("CveProveedorGanador").ToEntero Then e.Row.Cells(i + 2).BackColor = Drawing.Color.LightGreen Btn.OnClientClick = "return false;" End If i = i + 1 Next End If End If End If End Sub Private Sub BtnEliminarCotizacion_Click(sender As Object, e As EventArgs) Handles BtnEliminarCotizacion.Click 'Dim ObjCotizaciones As New ClsOC ''ObjCotizaciones.RemoveCotizacion(HdnCveCotizacion.Value.ToEntero) 'Alert(String.Format("CveCotizacion: {0}", HdnCveCotizacion.Value)) 'ObjCotizaciones.Dispose() Dim Body = GeneraCorreoEliminarCotizacion(HdnCveCotizacion.Value.ToEntero, txtMotivoEliminacion.Text) Dim Mail As New ClsSisMail() Mail.MandaCorreo(ClsPaginas.EmpresaNotificaciones, "91danielcota@gmail.com", "SIG - Eliminación de Cotización [Prueba]", Body) RegistraScript("hideDivEC();") End Sub #End Region #Region " ACTIVOS FIJOS " Protected Sub GVAF_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GVAF.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.RowIndex = 0 Then e.Row.Cells(0).Width = Unit.Pixel(55) e.Row.Cells(1).Width = Unit.Pixel(350) e.Row.Cells(2).Width = Unit.Pixel(80) 'e.Row.Cells(3).Width = Unit.Pixel(200) 'e.Row.Cells(4).Width = Unit.Pixel(80) End If End If End Sub Protected Sub LnkAFSeleccionar_Click(sender As Object, e As EventArgs) Dim gvr As GridViewRow = CType(CType(sender, LinkButton).BindingContainer, GridViewRow) HdnAFCveActivoFijo.Value = gvr.DataKey("CveActivoFijo") HdnAFCodigo.Value = gvr.DataKey("Codigo") CargaAF() GVAF.SelectedIndex = gvr.RowIndex 'carga las últimas compras BtnAFAceptar.Visible = True CargaComprasActivoFijo(gvr.DataKey("CveActivoFijo").ToEntero) End Sub Protected Sub BtnBuscarAF_Click(sender As Object, e As EventArgs) Handles BtnBuscarAF.Click GVAF.SelectedIndex = -1 HdnAFCveActivoFijo.Value = "" HdnAFCodigo.Value = "" GVAFC.Visible = False GVAFC.DataBind() BtnAFAceptar.Visible = False CargaAF() End Sub Private Sub CargaComprasActivoFijo(pCveActivoFijo As Integer) Dim ObjActivoFijo As New ClsAF() If ObjActivoFijo.GetActivosFijosCompras(pCveActivoFijo, DdlClasificacion.SelectedValue.ToEntero) Then GVAFC.DataSource = ObjActivoFijo.DtResultados Else GVAFC.DataSource = Nothing End If ObjActivoFijo.Dispose() GVAFC.DataBind() GVAFC.Visible = True End Sub Private Sub CargaAF() Dim Codigo As String = "-1" Dim Descripcion As String = "-1" Dim CveTipoActivoFijo As Integer = -1 Dim CveSubTipoActivoFijo As Integer = -1 If TxtAFCodigo.Text.Trim <> String.Empty Then Codigo = TxtAFCodigo.Text.Trim If TxtAFDescripcion.Text.Trim <> String.Empty Then Descripcion = TxtAFDescripcion.Text.Trim If DdlAFTipoActivoFijo.SelectedValue <> String.Empty Then CveTipoActivoFijo = DdlAFTipoActivoFijo.SelectedValue.ToEntero If DdlAFSubTipoActivoFijo.SelectedValue <> String.Empty Then CveSubTipoActivoFijo = DdlAFSubTipoActivoFijo.SelectedValue.ToEntero Dim ObjAF As New ClsAF() If ObjAF.GetActivosFijos(-1, UsuarioActual.CveEmpresa, Codigo, Descripcion, CveTipoActivoFijo, CveSubTipoActivoFijo, "-1", -1, -1, -1, -1, -1, "") Then If ObjAF.DtResultados.Rows.Count > 0 Then GVAF.DataSource = ObjAF.DtResultados Else GVAF.DataSource = Nothing Alert("No se encontraron registros con los parámetros solicitados.", Extensiones.TipoMensaje.MsgAdvertencia) End If GVAF.DataBind() End If ObjAF.Dispose() End Sub Private Sub CargaTipoActivoFijo() DdlAFTipoActivoFijo.Items.Clear() DdlAFTipoActivoFijo.DataSource = GlobalDTTipoActivoFijo(UsuarioActual.CveEmpresa) '.FiltraParametros("CveEmpresa = " & UsuarioActual.CveEmpresa) DdlAFTipoActivoFijo.DataBind() DdlAFTipoActivoFijo.Items.Insert(0, New ListItem("Seleccione", "-1")) End Sub Private Sub CargaSubTipoActivoFijo() DdlAFSubTipoActivoFijo.Items.Clear() DdlAFSubTipoActivoFijo.DataSource = GlobalDTSubTipoActivoFijo(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoActivoFijo = '" & DdlAFTipoActivoFijo.SelectedValue & "'") 'DdlSubTipoActivoFijo.DataSource = GlobalDTSubTipoActivoFijo.FiltraParametros("CveEmpresa = " & UsuarioActual.CveEmpresa & " AND CveTipoActivoFijo = '" & DdlTipoActivoFijo.SelectedValue & "'") DdlAFSubTipoActivoFijo.DataBind() DdlAFSubTipoActivoFijo.Items.Insert(0, New ListItem("Seleccione", "-1")) End Sub Protected Sub DdlAFTipoActivoFijo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlAFTipoActivoFijo.SelectedIndexChanged CargaSubTipoActivoFijo() End Sub Protected Sub GVAFC_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GVAFC.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.RowIndex = 0 Then e.Row.CssClass = "Totales" ElseIf e.Row.FCLiteral("LtlFecha").Text = String.Empty Then e.Row.CssClass = "SubTotales" End If End If End Sub Protected Sub BtnAFAceptar_Click(sender As Object, e As EventArgs) Handles BtnAFAceptar.Click If HdnEditCveActivoFijo.Value.Trim = "" Then LblCodigo.Text = HdnAFCodigo.Value HdnCveActivoFijo.Value = HdnAFCveActivoFijo.Value UPPDetalle.Update() HdnAFCodigo.Value = "" HdnAFCveActivoFijo.Value = "" GVAF.DataBind() GVAFC.Visible = False BtnAFAceptar.Visible = False RegistraScript("$get('divActivosFijos').style.display='none';") Else 'LblCodigo.Text = HdnAFCodigo.Value GvD.Rows(GvD.EditIndex).FCLabel("LblEditCodigo").Text = HdnAFCodigo.Value HdnEditCodigo.Value = HdnAFCodigo.Value HdnEditCveActivoFijo.Value = HdnAFCveActivoFijo.Value 'UPPDetalle.Update() 'HdnAFCodigo.Value = "" 'HdnAFCveActivoFijo.Value = "" GVAF.DataBind() GVAFC.Visible = False BtnAFAceptar.Visible = False RegistraScript("$get('divActivosFijos').style.display='none';") UPPDetalle.Update() End If End Sub Protected Sub BtnVinculaAF_Click(sender As Object, e As EventArgs) If HdnCveActivoFijo.Value.ToEntero = -2 Then If LblCodigo.Text.Trim = "" Then Exit Sub Dim ObjAF As New ClsAF If ObjAF.GetActivosFijos(-1, UsuarioActual.CveEmpresa, LblCodigo.Text, "-1", -1, -1, "-1", -1, -1, -1, -1, -1, "") Then If ObjAF.DtResultados.Rows.Count = 1 Then HdnCodigoAF.Value = ObjAF.DtResultados.Rows(0)("Codigo").ToString HdnCveActivoFijo.Value = ObjAF.DtResultados.Rows(0)("CveActivoFijo").ToString Else HdnCodigoAF.Value = "-1" HdnCveActivoFijo.Value = "-1" LblCodigo.Text = "" Alert("No se encontró un Activo Fijo con el código proporcionado.", TipoMensaje.MsgAdvertencia) End If End If ObjAF.Dispose() Else LblCodigo.Text = HdnCodigoAF.Value End If UPPDetalle.Update() End Sub Protected Sub BtnVinculaAFEdit_Click(sender As Object, e As EventArgs) Dim ObjAF As New ClsAF If ObjAF.GetActivosFijos(-1, UsuarioActual.CveEmpresa, HdnCodAFEdit.Value, "-1", -1, -1, "-1", -1, -1, -1, -1, -1, "") Then If ObjAF.DtResultados.Rows.Count = 1 Then RegistraScript(String.Format("EnterAFEditOK('{0}','{1}');", ObjAF.DtResultados.Rows(0)("CveActivoFijo").ToString, ObjAF.DtResultados.Rows(0)("Codigo").ToString)) Else Alert("No se encontró un Activo Fijo con el código proporcionado.", TipoMensaje.MsgAdvertencia) RegistraScript(String.Format("EnterAFEditOK({0},{1});", "-1", "-1")) End If End If ObjAF.Dispose() End Sub #End Region #Region "E V E N T O - B I T A C O R A" Protected Sub GVEventoBitacora_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvEB.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.RowIndex = 0 Then e.Row.Cells(0).Width = Unit.Pixel(200) e.Row.Cells(1).Width = Unit.Pixel(200) e.Row.Cells(2).Width = Unit.Pixel(100) e.Row.Cells(3).Width = Unit.Pixel(450) e.Row.Cells(4).Width = Unit.Pixel(50) End If If e.Row.DBCampo("Archivo").ToString <> "" Then e.Row.FCLinkButton("LinkArchivo").Visible = True e.Row.FCLinkButton("LinkArchivo").CommandArgument = String.Format("OI\{0}", e.Row.DBCampo("Archivo").ToString) ScriptManager.GetCurrent(Me).RegisterPostBackControl(e.Row.FCLinkButton("LinkArchivo")) 'Registro un evento Postbacktrigger, que recargue toda la pagina para que funcione End If e.Row.Cells(3).HorizontalAlign = HorizontalAlign.Left End If End Sub Protected Sub BtnGuardarEventoBitacora_Click(sender As Object, e As EventArgs) Handles BtnGuardarEventoBitacora.Click Dim ObjEventoBitacora As New ClsOIEventos Dim Extension = Session("FileExtension").ToString Dim Archivo = Session("FileUpload").ToString Dim Ruta = Session("FileFolder").ToString If ObjEventoBitacora.AddEventoBitacora(TxtEventoDescripcion.Text.Trim, If(Session("FileExtension").ToString.Length > 0, Session("FileExtension").ToString, "-1"), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveOC:=CveOrdenCompra) Then 'Renombrar archivo If Session("FileExtension").ToString.Length > 0 AndAlso Session("FileUpload").ToString.Length > 0 AndAlso Session("FileFolder").ToString.Length > 0 Then If Not Directory.Exists(String.Format("{0}Empresas\{1}\OI", Request.PhysicalApplicationPath, UsuarioActual.CveEmpresa)) Then Directory.CreateDirectory(String.Format("{0}Empresas\{1}\OI", Request.PhysicalApplicationPath, UsuarioActual.CveEmpresa)) End If Ruta = String.Format("{0}Empresas\{1}\OI\", Request.PhysicalApplicationPath, UsuarioActual.CveEmpresa) System.IO.File.Move(Archivo, String.Format("{0}OI{1}{2}", Ruta, ObjEventoBitacora.CveEvento.ToString, Extension)) End If GvEB.DataSource = ObjEventoBitacora.DtResultados TxtEventoDescripcion.Text = "" Alert("La bitácora/observación se guardó correctamente", TipoMensaje.MsgInformacion) 'obtener el Evento de bitacora para enviar el correo If ObjEventoBitacora.GetEvento(ObjEventoBitacora.CveEvento, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then If ObjEventoBitacora.DtResultados IsNot Nothing AndAlso ObjEventoBitacora.DtResultados.Rows.Count > 0 Then Dim dr As DataRow = ObjEventoBitacora.DtResultados.Rows(0) EnviarCorreoBitacora(String.Format("{0}, {1} comento: ""{2}""", dr("FechaIng"), dr("Usuario"), dr("Descripcion")), String.Format("http://sig.adsistemas.mx/Empresas/{0}/OI/{1}", UsuarioActual.CveEmpresa, ObjEventoBitacora.Archivo)) End If End If End If ObjEventoBitacora.Dispose() GvEB.DataBind() UPEventoBitacora.Update() CargaEventoBitacora() End Sub Private Sub CargaEventoBitacora() Dim ObjEventoBitacora As New ClsOIEventos() If ObjEventoBitacora.GetAgendaBitacora(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveOC:=CveOrdenCompra) Then GvEB.DataSource = ObjEventoBitacora.DtResultados.FiltraParametros("CveTipoEvento = 6 OR CveTipoEvento = 2") Else GvEB.DataSource = Nothing End If ObjEventoBitacora.Dispose() GvEB.DataBind() UPEventoBitacora.Update() End Sub Protected Sub CargarArchivo(ByVal sender As Object, ByVal e As AjaxControlToolkit.AsyncFileUploadEventArgs) Handles AFU.UploadedComplete If AFU.HasFile Then Dim UploadFolder As String = String.Format("{0}\Temp\", UsuarioActual.Empresa.Ruta) If Not Directory.Exists(UploadFolder) Then Directory.CreateDirectory(UploadFolder) End If Dim Extension As String = System.IO.Path.GetExtension(AFU.PostedFile.FileName) If File.Exists(String.Format("{0}{1}{2}", UploadFolder, UsuarioActual.CveUsuario.ToString, Extension)) Then File.Delete(String.Format("{0}{1}{2}", UploadFolder, UsuarioActual.CveUsuario.ToString, Extension)) AFU.SaveAs(UploadFolder & UsuarioActual.CveUsuario.ToString & Extension) Session("FileUpload") = UploadFolder & UsuarioActual.CveUsuario.ToString & Extension Session("FileExtension") = Extension Session("FileFolder") = UploadFolder End If End Sub Protected Sub DownloadFile(ByVal sender As Object, ByVal e As EventArgs) Dim filePath As String = String.Format("{0}{1}", UsuarioActual.Empresa.Ruta, CType(sender, LinkButton).CommandArgument) Dim Archivo As New System.IO.FileInfo(filePath) HttpContext.Current.Response.Clear() HttpContext.Current.Response.ClearContent() HttpContext.Current.Response.ContentType = "application/octet-stream" HttpContext.Current.Response.AppendHeader("Content-disposition", "attachment; filename=" + Path.GetFileName(filePath)) HttpContext.Current.Response.AddHeader("Content-Length", Archivo.Length.ToString()) HttpContext.Current.Response.TransmitFile(filePath) HttpContext.Current.Response.Flush() HttpContext.Current.Response.End() Archivo = Nothing End Sub #End Region #Region " ANTICIPOS " Private Sub CargarOptionAnticipos() If UsuarioActual.Empresa.Funcionalidad(108) = "1" Then option72B.Visible = True option72.Visible = True trSolicitarAnticipo.Visible = True Ddlcliente.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa) Ddlcliente.DataBind() DdlVendedor.DataSource = GlobalDTVendedores(UsuarioActual.CveEmpresa) DdlVendedor.DataBind() End If Ddlcliente.Items.Insert(0, New ListItem(" - ", "-1")) 'Ddlcliente.DataBind() DdlVendedor.Items.Insert(0, New ListItem(" - ", "-1")) 'DdlVendedor.DataBind() BtnSolicitudAnticipo.Visible = True End Sub Protected Sub btnsolicitaranticipo_Click(sender As Object, e As EventArgs) Handles BtnSolicitarAnticipo.Click If CveOrdenCompra.ToEntero > 0 Then Dim Descripcion As String = String.Format("Importe anticipo : {0} {1} ", TxtSAImporte.Text, TxtSAObservaciones.Text) Dim objOI As New ClsOIEventos If objOI.AddEventoTarea(String.Format("Solicitud de anticipo (Orden de Compra {0})", lblFolio.Text), Descripcion, 1, UsuarioActual.CveUsuario, DdlSAUsuario.SelectedValue.ToString.ToEntero, DateTime.Now, DateTime.Now.AddMinutes(15), -1, 1, -1, "-1", -1, -1, -1, -1, -1, CveOrdenCompra.ToEntero, -1, -1, UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa) Then Alert("La Solicitud ha sido enviada", TipoMensaje.MsgInformacion) 'GeneraPDF(CveOrdenCompra) TxtSAImporte.Text = "" TxtSAObservaciones.Text = "" TxtSAImPorcentaje.Text = "" Dim Param As New List(Of String) Dim DtPara As DataTable = GlobalDTUsuarios(DdlSAUsuario.SelectedValue.ToString.ToEntero, UsuarioActual.CveEmpresa) Param.Add(DtPara.Rows(0)("Correo").ToString()) 'Para 'Param.Add("caudillo_90@hotmail.com") 'Para Param.Add("Anticipo de Orden de Compra") 'Asunto Param.Add(GeneraCorreo(lblFolio.Text, DtPara.Rows(0)("Nombre").ToString(), String.Format("/OI/EventoDetalle.aspx?CveTipoEvento=1&CveEvento={0}", objOI.CveEvento), TxtSAImporte.Text)) 'Body Param.Add(String.Format("{0}PDF\OC-{1}.pdf", UsuarioActual.Empresa.Ruta, CveOrdenCompra)) ' Param.Add(If(Row.DataKey("Comprobante").ToString <> "", String.Format("{0}IE\{1}", UsuarioActual.Empresa.Ruta, Row.DataKey("Comprobante").ToString), "")) 'Archivo Adjunto Dim Hilo As New Threading.Thread(AddressOf MandaCorreoanticipo) Hilo.Start(Param) Else End If objOI.Dispose() Else Alert("Debe tener una orden de compra activa", TipoMensaje.MsgAdvertencia) End If End Sub Private Function notienepresupuesto() As Boolean Dim notienerecursos = False Dim SinRecursos As New StringBuilder SinRecursos.AppendFormat("No se cuenta con los Recursos Suficientes en los siguientes subproyectos ") Dim subproyectosSr As New List(Of Integer) Dim filtro As New StringBuilder 'me traigo los proyectos y subproyectos para traer presupuesots de la bd Dim subproyectos As New List(Of Integer) For Each Row As DataRow In DtDetalle.FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}).Rows Dim RowCon As DataRow = GlobalDTContratos.FiltroPrimero(String.Format("CveSubProyecto={0}", Row("CveSubProyecto"))) If Not IsNothing(RowCon) Then filtro.AppendFormat(",{0}", Row("CveSubProyecto")) subproyectos.Add(Row("CveSubProyecto").ToString.ToEntero) End If Next 'me traigo los presupuestos de la base de datos Dim dtpresupuestos As New DataTable Dim objContratos As New ClsContratos If objContratos.GetContratosPresupuesto(filtro.ToString) Then dtpresupuestos = objContratos.DtResultados End If objContratos.Dispose() 'resto los importes actuales a los presupuestos obtenidos de la bd For Each dr As DataRow In DtDetalle.Rows Dim psclasificacion As String = String.Format("CveSubFamilia='{0}' AND CveSubProyecto={1}", GlobalDTProductosServicios(UsuarioActual.CveEmpresa, -1, -1).FiltroPrimero(String.Format("CvePS={0}", dr("CvePS").ToString.ToEntero))("CveSubFamilia").ToString, dr("CveSubProyecto").ToString) 'Dim psclasificacion As String = String.Format("CveSubFamilia='{0}' AND CveSubProyecto={1}", GlobalDTProductosServicios(UsuarioActual.CveEmpresa, -1, -1).FiltroPrimero(String.Format("CvePS={0}", dr("CvePS").ToString.ToEntero))("CveSubFamilia").ToString, dr("CveSubProyecto").ToString) If dtpresupuestos.Rows.Count > 0 AndAlso dtpresupuestos.Select(psclasificacion).Count > 0 Then Dim rowpresupuesto As DataRow = dtpresupuestos.Select(psclasificacion)(0) rowpresupuesto("Importe") = rowpresupuesto("Importe").ToString.ToDouble - dr("Total").ToString.ToDouble() Else If subproyectos.Contains(dr("CveSubProyecto").ToString.ToEntero) Then notienerecursos = True If Not subproyectosSr.Contains(dr("CveSubProyecto").ToString.ToEntero) Then subproyectosSr.Add(dr("CveSubProyecto").ToString.ToEntero) SinRecursos.AppendFormat(",{0}", dr("SubProyecto").ToString) End If End If End If Next dtpresupuestos.AcceptChanges() ' For Each rowpresupuesto As DataRow In dtpresupuestos.Rows If (rowpresupuesto("Importe").ToString.ToDouble() < 0) Then If Not subproyectosSr.Contains(rowpresupuesto("CveSubProyecto").ToString.ToEntero) Then subproyectosSr.Add(rowpresupuesto("CveSubProyecto").ToString.ToEntero) SinRecursos.AppendFormat(",{0}", rowpresupuesto("SubProyecto").ToString) End If notienerecursos = True End If Next If (notienerecursos) Then Alert(SinRecursos.ToString, TipoMensaje.MsgAdvertencia) End If dtpresupuestos.Dispose() Return notienerecursos End Function #End Region #Region " COTIZACIONES " Protected Sub VerificaSiRequiereCotizacion() If TipoOC = "REQ" Then If ChkCotizacion.Checked Then PnlProveedor.Visible = False UPProv.Update() BtnGuardar.Text = "Guardar" tabCotizaciones.Enabled = True Else tabCotizaciones.Enabled = False ''temporal, si es nueva, le podras mover el proveedor, pero si ya esta registrada, debes de tener permisos para hacerlo If CveOrdenCompra = 0 OrElse (CveOrdenCompra > 0 AndAlso UsuarioActual.TienePermisoProceso(106) AndAlso ChkCotizacion.Checked = False) Then PnlProveedor.Visible = True : UPProv.Update() 'CVPU.Enabled = True End If If CveEstatus = CveEstatusFinalOK Then BtnGuardar.Enabled = True : BtnGuardar.Text = String.Format("Guardar{0}", If(CboE.SelectedValue.ToEntero = CveEstatusFinalOK, " y Generar OC", "")) : uppOpciones.Update() PnlProveedor.Visible = True UPProv.Update() End If End If UPPTab.Update() VerificaCotizacionesGanadoras() End If 'If TipoOC = "REQ" And CveEstatus <> CveEstatusFinalOK And CveEstatus <> CveEstatusFinalError Then ' If ChkCotizacion.Checked Then ' PnlProveedor.Visible = False ' UPProv.Update() ' BtnGuardar.Text = "Guardar" ' tabCotizaciones.Enabled = True ' Else ' BtnGuardar.Enabled = True : BtnGuardar.Text = String.Format("Guardar{0}", If(CboE.SelectedValue.ToEntero = CveEstatusFinalOK, " y Generar OC", "")) : uppOpciones.Update() ' PnlProveedor.Visible = True ' UPProv.Update() ' End If 'End If End Sub #End Region Public Function isWhitFamily() As Boolean Return UsuarioActual.CveEmpresa = 66 End Function Protected Sub DdlProveedores_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlProveedores.SelectedIndexChanged End Sub Protected Sub ImgCambiaProv_Click(sender As Object, e As ImageClickEventArgs) Handles ImgCambiaProv.Click Dim OC As New ClsOC If OC.UpdateProveedorOrdenCompra(DdlProveedores.SelectedValue.ToEntero, CveOrdenCompra, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then CargaHistorial() Alert("El cambio de proveedor se hizo correctamente", TipoMensaje.MsgInformacion) End If OC.Dispose() End Sub Protected Sub CboE_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CboE.SelectedIndexChanged CargaEstatusUsuarios(CboE.SelectedValue.ToEntero) CargaProyectos() CargaSubProyectos() CargaSuperior() UPPDetalle.Update() PnlUsuarioAsignado.Visible = False 'Si NO requiere cotizacion y el estatus siguiente es el final, If TipoOC.ToUpper = "REQ" Then If ChkCotizacion.Checked = False AndAlso CboE.SelectedValue.ToEntero.Contiene(CveEstatusFinalOK) AndAlso TipoOS = False Then BtnGuardar.Text = "Guardar y Generar OC" : uppOpciones.Update() PnlProveedor.Visible = True : UPProv.Update() If UsuarioActual.CveEmpresa = 13 Then PnlUsuarioAsignado.Visible = True DdlUsuariosAsignado.DataSource = GlobalDTUsuarios(CveEmpresa:=UsuarioActual.CveEmpresa) DdlUsuariosAsignado.DataBind() DdlUsuariosAsignado.Items.Insert(0, New ListItem(" - ", "-1")) End If 'CVPU.Enabled = True RVProveedores.Enabled = True Else VerificaCotizacionesGanadoras() If CboE.SelectedValue.ToEntero.Contiene(CveEstatusFinalOK) AndAlso LblMsgEstatus.Text = "" Then BtnGuardar.Text = "Guardar y Generar OC" Else BtnGuardar.Text = "Guardar" End If uppOpciones.Update() PnlProveedor.Visible = False : UPProv.Update() 'CVPU.Enabled = False End If 'temporal If ChkCotizacion.Checked = False AndAlso CveEstatus <> CveEstatusFinalOK Then PnlProveedor.Visible = True : UPProv.Update() 'CVPU.Enabled = True RVProveedores.Enabled = False End If If ChkCotizacion.Checked = False AndAlso CboE.SelectedValue.ToEntero = CveEstatusFinalError AndAlso TipoOS = False Then BtnGuardar.Text = "Guardar" : uppOpciones.Update() PnlProveedor.Visible = False : UPProv.Update() 'CVPU.Enabled = True RVProveedores.Enabled = True If CveEstatus <> CveEstatusFinalError Then RegistraScript("$get('divCE').style.display='';PosicionaObjeto('C_CboE','divCE'); ") End If End If If UsuarioActual.Empresa.UsaAC Then ActivaAC() End If 'If TipoOC.ToUpper = "REQ" AndAlso ChkCotizacion.Checked = False AndAlso CboE.SelectedValue.ToEntero = CveEstatusFinalOK Then ' trProveedor.Visible = True ' UPPEmp.Update() 'End If 'Si NO requiere cotizacion y el estatus siguiente es el final, el Boton Guardar sera Guardar Y Generar Orden ' If CveOrdenCompra > 0 AndAlso ChkCotizacion.Checked = False AndAlso CveEstatusSiguiente = CveEstatusFinalOK Then BtnGuardar.Text = "Guardar y Generar OC" : uppOpciones.Update() End Sub #Region "Calcula Generales" Private Sub CalculaGenerales() Dim Subtotal As Double = DtDetalle.SUM("Total", "Total > 0") Dim SubTotalIVA As Double = DtDetalle.SUM("Total", "Total > 0 AND IVAPS <> 0") Dim Descuento As Double = DtDetalle.SUM("Descuento") Dim DescuentoIVA As Double = DtDetalle.SUM("Descuento", "IVAPS <> 0") LblSubTotal.Text = (Subtotal).FormatoNumero 'IVA 'SI EL IVA YA FUE EDITADO CONSERVA EL IVA INGRESADO POR EL USUARIO Dim IVA = If(IVAEditado, TxtIVA.Text.ToDouble, If(SubTotalIVA - DescuentoIVA > 0, (SubTotalIVA - DescuentoIVA) * (DdlIVA.SelectedValue.ToDouble - 1), 0)) If TxtIVA.Visible Then TxtIVA.Text = IVA.ToString.FormatoNumero Else LblIVA.Text = IVA.ToString.FormatoNumero End If 'RETENCIONES Dim Retenciones = 0D If UsuarioActual.Empresa.Funcionalidad(111) = "1" Then Retenciones = TxtRetIVA.Text.ToDecimal Retenciones += TxtRetISR.Text.ToDecimal End If LblTotal.Text = (Subtotal - Descuento + IVA - Retenciones).FormatoNumero SubTotalOC = (Subtotal - Descuento + IVA - Retenciones).ToString() End Sub #End Region #Region " IVA - EDITABLE " Private Sub ActivarIVAEditable() If UsuarioActual.TienePermisoProceso(141) Then TxtIVA.Visible = True LblIVA.Visible = False End If End Sub Private Sub AplicaIVA() TxtIVA.Text = TxtIVA.Text.FormatoNumero IVAEditado = True End Sub #End Region #Region " RETENCIONES " Private Sub ActivarRetenciones() If UsuarioActual.Empresa.Funcionalidad(116) = "1" Then ImgAplicaRetenciones.Visible = True End If End Sub Protected Sub ImgAplicaRetenciones_Click(sender As Object, e As ImageClickEventArgs) MuestraRetenciones() End Sub Private Sub MuestraRetenciones() ImgAplicaRetenciones.ImageUrl = If(TrRetIVA.Visible, "/Metronic/assets/global/img/portlet-collapse-icon.png", "/Metronic/assets/global/img/portlet-expand-icon.png") TrRetIVA.Visible = Not TrRetIVA.Visible TrRetISR.Visible = Not TrRetISR.Visible End Sub Private Sub AplicaRetenciones() TxtRetIVA.Text = TxtRetIVA.Text.FormatoNumero TxtRetISR.Text = TxtRetISR.Text.FormatoNumero End Sub Private Sub CargaRetenciones(RetIVA As Double, RetISR As Double) If RetIVA > 0 Then TrRetIVA.Visible = True TxtRetIVA.Text = RetIVA.ToString.FormatoNumero End If If RetISR > 0 Then TrRetISR.Visible = True TxtRetISR.Text = RetISR.ToString.FormatoNumero End If End Sub #End Region #Region " DESCUENTOS " Private Sub ActivarDescuentos() If UsuarioActual.Empresa.Funcionalidad(111) = "1" Then TDDescuento.Visible = True TrDescuento.Visible = True THDescuento.Visible = True GvD.Columns(7).Visible = True End If End Sub Protected Sub BtnAplicarDescuento_Click(sender As Object, e As EventArgs) AplicarDescuentos() End Sub Private Sub AplicarDescuentos() If LblSubTotal.Text.ToDecimal <= 0 Then Alert("Para aplicar un descuento, el SubTotal debe ser mayor a cero.", TipoMensaje.MsgAdvertencia) TxtDescuento.Text = "0.00" Exit Sub End If TxtDescuento.Text = TxtDescuento.Text.FormatoNumero HdnDescuento.Value = TxtDescuento.Text Dim Porcentaje = TxtDescuento.Text.ToDecimal / DtDetalle.SUM("Total") For Each Dr As DataRow In DtDetalle.Rows Dr("Descuento") = Dr("Total").ToString.ToDecimal * Porcentaje ' Tipo Dato '0' es Cuando es Nuevo, '1' para editar y '2' viene de la BD Dr("TipoDato") = If(Dr("TipoDato").ToString.ToEntero = 0, 0, 1) Next CalculaGenerales() GvD.DataSource = DtDetalle GvD.DataBind() UPPDetalle.Update() End Sub Protected Sub BtnLimpiarDescuento_Click(sender As Object, e As EventArgs) If HdnDescuento.Value.ToDecimal > 0 Then TxtDescuento.Text = HdnDescuento.Value.FormatoNumero Exit Sub End If For Each Dr As DataRow In DtDetalle.Rows Dr("Descuento") = 0 ' Tipo Dato '0' es Cuando es Nuevo, '1' para editar y '2' viene de la BD Dr("TipoDato") = If(Dr("TipoDato").ToString.ToEntero = 0, 0, 1) Next TxtDescuento.Text = "0.00" HdnDescuento.Value = TxtDescuento.Text GvD.DataSource = DtDetalle GvD.DataBind() UPPDetalle.Update() End Sub Private Function ValidarDescuentos() As Boolean Dim Retorno = True Dim DescuentoConceptos = DtDetalle.SUM("Descuento") Dim DescuentoGeneral = TxtDescuento.Text.ToDouble If DescuentoConceptos <> DescuentoGeneral Then Retorno = False End If Return Retorno End Function Private Sub CalculaDescuentoGeneral() TxtDescuento.Text = DtDetalle.SUM("Descuento").ToString.FormatoNumero HdnDescuento.Value = TxtDescuento.Text End Sub #End Region #Region "ENVIAR CORREO" Private Sub Notificaciones() 'CORREO DE CAMBIA ESTATUS If (EsNuevo = False AndAlso CveEstatus <> CboE.SelectedValue.ToEntero) Or EsNuevo = True Then Dim RowActual As DataRow = GlobalDTOCEstatus(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveEstatus = {0}", CboE.SelectedValue)) If RowActual IsNot Nothing Then CveEstatusSiguiente = RowActual("CveEstatusSiguiente").ToString.ToEntero If CveEstatusSiguiente > 0 Then EnviarCorreoCambioEstatus(CveEstatusSiguiente, CboE.SelectedItem.Text) End If End If 'CORREO MODIFICADA If EsNuevo = False Then Dim Bitacora = DtHistorial.FiltraParametros("CveConceptoHistorialOrdenCompra <> 1").Rows.Count Dim objOC As New ClsOC If objOC.GetOrdenesHistorial(CveOrdenCompra) Then DtHistorial = objOC.DtResultados.FiltraParametros("CveConceptoHistorialOrdenCompra <> 1") End If objOC.Dispose() If Bitacora < DtHistorial.Rows.Count Then EnviarCorreoModificada() End If End If 'CORREO PROVEEDOR - SE GENERO OC If CveOCGeneradas.Count > 0 Then For i = 0 To CveOCGeneradas.Count - 1 EnviarCorreoOrdenCompra(CveOCGeneradas(i)) Next If DdlUsuariosAsignado.SelectedValue.ToEntero > 0 Then CorreoUsuarioAsignado(CveEstatusSiguiente, CboE.SelectedItem.Text) End If End If ''CORREO CANCELACIÓN 'If CanceladoOC Then 'End If ''CORREO COTIZACIÓN ''CORREO BITACORA 'If Bitacora Then 'End If End Sub Private Sub MandaCorreo() Dim CCPs As New StringBuilder For Each correo As String In CType(ViewState("ArrayCC"), String()) CCPs.AppendFormat("{0},", correo) Next Dim a As String = (ViewState("Asunto").ToString & " --" & ViewState("Para").ToString & " --- " & CCPs.ToString & "--->" & ViewState("ArrayCCNombre").ToString) a.GuardaLog() Dim Mail As New ClsSisMail() Mail.MandaCorreo(ClsPaginas.EmpresaNotificaciones, ViewState("Para").ToString, ViewState("Asunto").ToString, ViewState("RutaPDF").ToString, IfNull(ViewState("RutaXML"), "").ToString, CType(ViewState("ArrayCC"), String()), ViewState("Body").ToString) End Sub Private Sub MandaCorreo2(mybites As Byte(), Asunto As String, Para As String, Body As String, rutaxml As String) Dim a As String = String.Format("{0} -- {1} ---- -->", Asunto, Para) a.GuardaLog() Dim Mail As New ClsSisMail() Mail.MandaCorreo(ClsPaginas.EmpresaNotificaciones, Para, Asunto, "OrdenCompra.pdf", rutaxml, Nothing, Body, mybites) End Sub Protected Sub EnviarCorreoBitacora(Bitacora As String, LigaAdjunto As String) Dim Body As String 'Dim ArrayCC As String() Dim Correo As String = GlobalDTUsuarios(CveUsuario)(0)("correo").ToString Dim CorreosCCP As New List(Of String) 'Sacar los correos a los que se les notificara 'Aqui seran los que cambiaron de estatus, que son los niveles inferiores For Each Row As DataRow In DtHistorial.FiltraParametros("CveConceptoHistorialOrdenCompra = 1").Rows CorreosCCP.Add(GlobalDTUsuarios(Row("CveUsuario").ToString.ToEntero)(0)("correo").ToString) Next ''Aqui seran todos los usuarios que tienen habilitado el estatus actual 'Dim objOC As New ClsOC ''PENDIENTE POR EL SUBPROYECTO 'If objOC.GetEstatusUsuarios(-1, CveEstatus, -1, -1, UsuarioActual.CveEmpresa) Then ' For Each Row As DataRow In objOC.DtResultados.Rows ' Array.Resize(CorreosCCP, If(CorreosCCP IsNot Nothing, UBound(CorreosCCP) + 2, 1)) ' CorreosCCP(UBound(CorreosCCP)) = GlobalDTUsuarios(Row("CveUsuario").ToString.ToEntero)(0)("correo").ToString ' Next 'End If 'objOC.Dispose() Try Body = GeneraCorreo(CveOrdenCompra, "", False, Bitacora, LigaAdjunto) ViewState("Para") = Correo ViewState("ArrayCC") = CorreosCCP.Distinct().ToArray ViewState("Asunto") = String.Format("SIG. {0} #{1} Bitacora", TipoLargo, Folio) ViewState("RutaPDF") = "" ViewState("RutaXML") = "" ViewState("Body") = Body Dim Hilo As New System.Threading.Thread(AddressOf MandaCorreo) Hilo.Start() ' Alert("Se enviara correo por cambio Modificacion") Catch ex As Exception OnError("Ocurrió error al mandar MAIL de bitacora", ex) End Try End Sub Protected Sub EnviarCorreoModificada() Dim Body As String 'Dim ArrayCC As String() Dim Correo As String = GlobalDTUsuarios(CveUsuario)(0)("correo").ToString Dim CorreosCCP As New List(Of String) 'Sacar los correos a los que se les notificara 'Aqui seran los que cambiaron de estatus, que son los niveles inferiores For Each Row As DataRow In DtHistorial.FiltraParametros("CveConceptoHistorialOrdenCompra = 1").Rows CorreosCCP.Add(GlobalDTUsuarios(Row("CveUsuario").ToString.ToEntero)(0)("correo").ToString) Next ''Sacar los correos a los que se les notificara 'Dim objOC As New ClsOC ''PENDIENTE POR EL SUBPROYECTO 'If objOC.GetEstatusUsuarios(-1, CveEstatus, -1, -1, UsuarioActual.CveEmpresa) Then ' For Each Row As DataRow In objOC.DtResultados.Rows ' Array.Resize(CorreosCCP, If(CorreosCCP IsNot Nothing, UBound(CorreosCCP) + 2, 1)) ' CorreosCCP(UBound(CorreosCCP)) = GlobalDTUsuarios(Row("CveUsuario").ToString.ToEntero)(0)("correo").ToString ' Next 'End If 'objOC.Dispose() Try Body = GeneraCorreo(CveOrdenCompra, "") ViewState("Para") = Correo ViewState("ArrayCC") = CorreosCCP.Distinct().ToArray ViewState("Asunto") = String.Format("SIG. {0} #{1} Modificada", TipoLargo, Folio) ViewState("RutaPDF") = "" ViewState("RutaXML") = "" ViewState("Body") = Body Dim Hilo As New System.Threading.Thread(AddressOf MandaCorreo) Hilo.Start() ' Alert("Se enviara correo por cambio Modificacion") Catch ex As Exception OnError("Ocurrió error al mandar MAIL de modificación", ex) End Try End Sub Protected Sub EnviarCorreoCambioEstatus(pCveEstatus As Integer, Estatus As String, Optional NotificarAlert As Boolean = True) Dim strOpciones As New StringBuilder If CveUsuario = -1 Then CveUsuario = UsuarioActual.CveUsuario Dim Para As String = GlobalDTUsuarios(CveUsuario)(0)("correo").ToString Dim CorreosCCP As New List(Of String) Dim CorreosCCPNombre As New List(Of String) Dim objUsuarios As New ClsSisUsuarios 'debe de mandar el correo direccionado al siguiente estatus, no el actual 'Sacar los correos a los que se les notificara If hdnCveSuperior.Value.ToEntero > 0 Then 'SI TIENE SUPERIOR MANDA CORREO A TODOS LOS DEL SIGUIENTE ESTATUS CorreosCCP.Add(GlobalDTUsuarios(hdnCveSuperior.Value.ToEntero)(0)("correo").ToString) Else 'SI NO TIENE SUPERIOR LO BUSCA PARA MANDAR CORREO Dim objOC As New ClsOC For Each RowSP As DataRow In DtDetalle.FiltraParametros("", "", {"CveSubProyecto"}).Rows If RowSP("CveSubProyecto").ToString.ToEntero > 0 Then If objOC.GetEstatusUsuarios(-1, pCveEstatus, RowSP("CveSubProyecto").ToString.ToEntero, -1, UsuarioActual.CveEmpresa) Then For Each Row As DataRow In objOC.DtResultados.Rows 'INCLUIR FILTRO DE LIMITE SUPERIOR E INFERIOR If (IsDBNull(Row("LimiteInferior")) OrElse Row("LimiteInferior").ToString.ToDecimal < Total.Text.ToDecimal) And (IsDBNull(Row("LimiteSuperior")) OrElse Row("LimiteSuperior").ToString.ToDecimal > Total.Text.ToDecimal) Then CorreosCCP.Add(GlobalDTUsuarios(Row("CveUsuario").ToString.ToEntero)(0)("correo").ToString) CorreosCCPNombre.Add(GlobalDTUsuarios(Row("CveUsuario").ToString.ToEntero)(0)("nombre").ToString) End If Next End If End If Next objOC.Dispose() End If If pCveEstatus = CveEstatusFinalError Then For Each Row As DataRow In DtHistorial.FiltraParametros("CveConceptoHistorialOrdenCompra = 1").Rows CorreosCCP.Add(GlobalDTUsuarios(Row("CveUsuario").ToString.ToEntero)(0)("correo").ToString) CorreosCCPNombre.Add(GlobalDTUsuarios(Row("CveUsuario").ToString.ToEntero)(0)("nombre").ToString) Next End If 'SI TIENE ASIGNADO TAMBIEN SE LE MANDA CORREO 'If DdlUsuariosAsignado.SelectedValue.ToEntero > 0 Then ' CorreosCCP.Add(GlobalDTUsuarios(DdlUsuariosAsignado.SelectedValue.ToEntero)(0)("correo").ToString) ' CorreosCCPNombre.Add(GlobalDTUsuarios(DdlUsuariosAsignado.SelectedValue.ToEntero)(0)("nombre").ToString) 'End If strOpciones.AppendFormat("Se ha cambiado la {0} #{1} al estatus {2}

", TipoLargo, Folio, Estatus) strOpciones.Append("
") strOpciones.Append("
") strOpciones.Append(" Opciones ") strOpciones.Append(" ") 'verifico los permisos según el estatus 'Const Sitio As String = "rm:90/" Dim StrSupervisa As String = "" '= String.Format("http://{0}/OC/RegOp.aspx?p={1}", Sitio, Encripta(String.Format("Op=SUPERVISAR&Oc={0}&CveUsuario={1}&Fecha={2}", CveOrdenCompra, CveUsuario, Now))) Dim StrAutoriza As String = "" '= String.Format("http://{0}/OC/RegOp.aspx?p={1}", Sitio, Encripta(String.Format("Op=AUTORIZAR&Oc={0}&CveUsuario={1}&Fecha={2}", CveOrdenCompra, CveUsuario, Now))) Dim StrCancela As String = "" ' = String.Format("http://{0}/OC/RegOp.aspx?p={1}", Sitio, Encripta(String.Format("Op=CANCELAR&Oc={0}&CveUsuario={1}&Fecha={2}", CveOrdenCompra, UsuarioActual.CveUsuario, Now))) Dim StrReqCotiza As String = "" '= String.Format("http://{0}/OC/RegOp.aspx?p={1}", Sitio, Encripta(String.Format("Op=REQCONTIZACION&Oc={0}&CveUsuario={1}&Fecha={2}", CveOrdenCompra, CveUsuario, Now))) 'si se acaba de solicitar y se necesita supervisar If pCveEstatus = 1 Then strOpciones.AppendFormat(" ", StrSupervisa) 'si se acaba de supervisar y se necesita autorizar If pCveEstatus = 2 Then strOpciones.AppendFormat(" ", StrAutoriza) strOpciones.AppendFormat(" ", StrReqCotiza) End If 'si se quiere cancelar strOpciones.AppendFormat(" ", StrCancela) strOpciones.Append("
Supervisar
Autorizar
Autorizar con Cotización
Cancelar
") strOpciones.Append("
") strOpciones.Append("
") Dim Body As String = GeneraCorreo(CveOrdenCompra, "") 'strOpciones.ToString) 'genero los datos de la OC Try ViewState("Para") = Para ViewState("ArrayCC") = CorreosCCP.Distinct().ToArray ViewState("Asunto") = String.Format("SIG - La {0} #{1} cambió de estatus", TipoLargo, Folio) ViewState("RutaPDF") = "" ViewState("Body") = Body ViewState("ArrayCCNombre") = CorreosCCPNombre.Distinct().ToArray Dim Hilo As New System.Threading.Thread(AddressOf MandaCorreo) Hilo.Start() ' If NotificarAlert = True Then Alert("Se enviara correo por cambio de Estatus") Catch ex As Exception If NotificarAlert = True Then OnError("Ocurrió error al mandar MAIL por cambio de Estatus", ex) End Try End Sub #Region "ENVIAR CORREO USUARIO ASIGNADO" Protected Sub MandaCorreoUsuario(Para As String, CorreosCCP As List(Of String), CorreosCCPNombre As List(Of String), Optional NotificarAlert As Boolean = True) Dim strOpciones As New StringBuilder Dim Body As String = GeneraCorreo(CveOrdenCompra, "") 'strOpciones.ToString) 'genero los datos de la OC Try ViewState("Para") = Para ViewState("ArrayCC") = CorreosCCP.Distinct().ToArray ViewState("Asunto") = String.Format("SIG - La {0} #{1} se le ha asignado", TipoLargo, Folio) ViewState("RutaPDF") = "" ViewState("Body") = Body ViewState("ArrayCCNombre") = CorreosCCPNombre.Distinct().ToArray Dim Hilo As New System.Threading.Thread(AddressOf MandaCorreo) Hilo.Start() ' If NotificarAlert = True Then Alert("Se enviara correo por cambio de Estatus") Catch ex As Exception If NotificarAlert = True Then OnError("Ocurrió error al mandar MAIL por cambio de Estatus", ex) End Try End Sub Protected Sub CorreoUsuarioAsignado(pCveEstatus As Integer, Estatus As String, Optional NotificarAlert As Boolean = True) Dim CorreosCCP As New List(Of String) Dim CorreosCCPNombre As New List(Of String) Dim Para As String = GlobalDTUsuarios(DdlUsuariosAsignado.SelectedValue.ToEntero)(0)("correo").ToString 'SI TIENE ASIGNADO TAMBIEN SE LE MANDA CORREO If DdlUsuariosAsignado.SelectedValue.ToEntero > 0 Then CorreosCCP.Add(GlobalDTUsuarios(DdlUsuariosAsignado.SelectedValue.ToEntero)(0)("correo").ToString) CorreosCCPNombre.Add(GlobalDTUsuarios(DdlUsuariosAsignado.SelectedValue.ToEntero)(0)("nombre").ToString) End If Dim strOpciones As New StringBuilder strOpciones.AppendFormat("La orden de Compra {0} se le ha asignado br>
", Folio) strOpciones.Append("
") strOpciones.Append("
") strOpciones.Append(" Opciones ") strOpciones.Append(" ") strOpciones.AppendFormat(" ", CveOrdenCompra) strOpciones.Append("
Ir a OC
") strOpciones.Append("
") strOpciones.Append("
") MandaCorreoUsuario(Para, CorreosCCP, CorreosCCPNombre, NotificarAlert) End Sub #End Region #Region "enviarCorreoOrdenDeCompra" Protected Sub EnviarCorreoOrdenCompra(CveOrdenCompra As Integer) Dim CveProveedor As Integer Dim strOpciones As New StringBuilder strOpciones.AppendFormat("Se ha Generado una Orden de Compra.

") Dim Body As String = GeneraCorreoProveedor(CveOrdenCompra, CveProveedor) 'genero los datos de la OC Dim Correo As String = GlobalDTCompProveedores(UsuarioActual.CveEmpresa).FiltraParametros("CveProveedor = " + CveProveedor.ToString)(0)("ContactoMail").ToString Try Dim mybites As Byte() = GeneraBytesOC(CveOrdenCompra) Dim Hilo As New System.Threading.Thread(Sub() MandaCorreo2(mybites, "SIG - Se Genero una Orden de Compra", Correo, Body, "")) Hilo.Start() Catch ex As Exception OnError("Ocurrió error al mandar MAIL de Orden de Compra", ex) End Try End Sub #End Region Private Function GeneraCorreo(CveOrdenCompra As Integer, Opciones As String, Optional IncluirDetalles As Boolean = True, Optional Bitacora As String = "", Optional LigaAdjunto As String = "") As String Dim strBody As New StringBuilder Dim objOC As New ClsOC If objOC.GetOC(CveOrdenCompra, UsuarioActual.CveEmpresa) Then strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat("
Datos {0} ", TipoLargo) strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", objOC.CveOrdenCompra, objOC.Folio, objOC.Estatus) strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", objOC.Empresa) strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", objOC.Descripcion) strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", objOC.Justificacion) strBody.Append(" ") strBody.Append("
Folio:{1} Estatus: {2}
Empresa:{0}
Descripción:{0}
Justificación
") strBody.Append("
") strBody.Append("
") 'Cargo el detalle If IncluirDetalles = True Then strBody.Append("
") strBody.Append("
") strBody.Append(" Opciones ") strBody.Append(" ") strBody.AppendFormat(" ", If(UsuarioActual.CveEmpresa = 66, "Proyecto", "Proyecto
SubProyecto")) 'verifico los permisos según el estatus If objOC.GetOrdenesDetalle(CveOrdenCompra) Then For Each dr As DataRow In objOC.DtResultados.Rows strBody.AppendFormat("", dr("Cantidad").ToString.FormatoNumero, dr("Abreviatura"), dr("Clasificacion"), dr("PS"), dr("Observacion"), dr("Proyecto"), If(UsuarioActual.CveEmpresa = 66, "", dr("SubProyecto")), dr("Codigo"), If(Not IsDBNull(dr("Importe")), FormatCurrency(dr("Importe").ToString), ""), If(Not IsDBNull(dr("Total")), FormatCurrency(dr("Total").ToString), "")) Next End If strBody.Append("
CantidadUnidadProducto o ServicioObservacion{0}Activo FijoP.U.Total
{0}{1}{2}
{3}
{4}{5}
{6}
{7}{8}{9}
") strBody.Append("
") strBody.Append("
") Else strBody.Append("
") strBody.Append("
") strBody.Append(" Bitacora ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") If LigaAdjunto <> "" Then strBody.AppendFormat(" ", LigaAdjunto) strBody.Append(" ") strBody.Append("
") strBody.AppendFormat(" {0}", Bitacora) strBody.Append("
El usuario agrego el siguiente archivo: Adjunto
") strBody.Append("
") strBody.Append("
") End If ' strBody.Append(Opciones) strBody.Append("") End If Return strBody.ToString End Function Private Function GeneraCorreoProveedor(CveOrdenCompra As Integer, ByRef CveProveedor As Integer) As String Dim strBody As New StringBuilder Dim objOC As New ClsOC objOC.GetOC(CveOrdenCompra, UsuarioActual.CveEmpresa) CveProveedor = objOC.CveProveedor Dim DttDetalle As DataTable = Nothing If objOC.GetOrdenesDetalle(CveOrdenCompra) Then DttDetalle = objOC.DtResultados End If strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat("
Datos de Orden de Compra ") strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", objOC.Folio, objOC.Estatus) strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", objOC.Empresa) strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", objOC.Descripcion) strBody.Append(" ") strBody.Append("
Folio:{0} Estatus: {1}
Empresa:{0}
Descripción:{0}
") strBody.Append("
") strBody.Append("
") 'Cargo el detalle strBody.Append("
") strBody.Append("
") strBody.Append(" Opciones ") strBody.Append(" ") strBody.Append(" ") 'verifico los permisos según el estatus For Each dr As DataRow In DttDetalle.Rows strBody.AppendFormat("", dr("Cantidad").ToString.FormatoNumero, dr("Abreviatura"), dr("PS"), dr("Obs"), dr("Importe").ToString.FormatoNumero) Next strBody.Append("
CantidadUnidadDescripciónObservaciónPrecio
{0}{1}{2}{3}{4}
") strBody.Append("
") strBody.Append("
") strBody.Append("") Return strBody.ToString End Function #End Region #Region "Correo" Private Function GeneraCorreoEliminarCotizacion(CveCotizacion As Integer, Motivo As String) As String Dim ObjCotizacion As New ClsOC ObjCotizacion.GetCotizaciones(CveOrdenCompra, CveCotizacion) Dim strBody As New StringBuilder 'strBody.Append("

Motivo de Eliminación

") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat("
Por medio del presente correo electrónico se notifica que se ha eliminado la cotización con folio {0}

", ObjCotizacion.Folio) strBody.Append("
") strBody.AppendFormat("
Datos {0} ", "Cotización") strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", ObjCotizacion.Empresa) strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", Now.ToShortDateString) strBody.Append(" ") strBody.Append("
Empresa:{0}
Fecha Eliminación:{0}  
") strBody.Append("
") strBody.Append("
") 'Cargo el detalle strBody.Append("
") strBody.Append("
") strBody.Append(" Productos a Cotizar ") strBody.Append(" ") strBody.Append(" ") Dim dtConceptos As DataTable = Nothing If ObjCotizacion.GetOrdenesDetalle(CveOrdenCompra) Then dtConceptos = ObjCotizacion.DtResultados End If For Each dr As DataRow In dtConceptos.Rows strBody.AppendFormat("", dr("Cantidad").ToString.FormatoNumero, dr("Abreviatura"), dr("PS")) ', dr("Clasificacion"), dr("Codigo")) Next 'For Each dr As GridViewRow In gvCotizaciones.Rows ' strBody.AppendFormat("", dr.Cells(0).ToString.FormatoNumero, dr.Cells(1).ToString, dr.Cells(2).ToString) ', dr("Clasificacion"), dr("Codigo")) 'Next strBody.Append("
CantidadUnidadDescripción
{0}{1}{2}
{0}{1}{2}
") strBody.Append("
") strBody.Append("
") strBody.AppendFormat("

Motivo de eliminación:

", Motivo) strBody.AppendFormat("

{0}

", Motivo) 'strBody.AppendFormat("
Capture la cotizacion AQUI
", CveOrdenCompra, CveProveedor, Encripta(String.Format("{0}|||{1}", CveOrdenCompra, CveProveedor))) 'strBody.AppendFormat("
Capture la cotizacion AQUI
", ModExtensiones.Encripta(String.Format("CveCotizacion={0}", CveCotizacion))) strBody.Append("
") strBody.Append("") ObjCotizacion.Dispose() Return strBody.ToString End Function Private Sub MandaCorreoanticipo(data As Object) Dim Parametros As List(Of String) = DirectCast(data, List(Of String)) Dim Mail As New ClsSisMail() Dim Para As String = Parametros(0) Dim Asunto As String = Parametros(1) Dim Body As String = Parametros(2) Dim ArrayAttachment As New List(Of String) If Parametros(3) IsNot Nothing AndAlso Parametros(3) <> "" Then ArrayAttachment.Add(Parametros(3).ToString) End If If Mail.MandaCorreo(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body, ArrayAttachment:=ArrayAttachment) Then Alert("Correos enviados") Else Alert("Correos no enviados") End If End Sub Private Function GeneraCorreo(folio As String, para As String, link As String, importe As String) As String Dim strBody As New StringBuilder strBody.Append("") strBody.Append(" ") strBody.Append("") strBody.Append("") strBody.Append("
") strBody.Append("
") strBody.Append("
") strBody.Append("
") strBody.Append(" Solicitud de anticipo") strBody.Append("
") strBody.Append("
") strBody.Append("
") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append("") strBody.Append("
Fecha") strBody.Append(DateTime.Now.ToString("dd/MM/yy")) strBody.Append("
De") strBody.Append(UsuarioActual.Nombre) strBody.Append("
Para") strBody.Append(para) strBody.Append("
Folio") strBody.Append(folio) strBody.Append("
Importe:") strBody.Append(importe) strBody.Append("
Ver mas
") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append("") strBody.Append("") Return strBody.ToString End Function #End Region End Class