Imports System.Data Imports System.Drawing Imports Extensiones Partial Class RepCotizaciones Inherits ClsPaginas #Region "Propiedades" 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 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 NumCotizaciones As Integer Get NumCotizaciones = ViewState("NumCotizaciones").ToString.ToEntero End Get Set(value As Integer) ViewState("NumCotizaciones") = 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 #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Page.IsPostBack Then TxtFolio.Focus() Form.DefaultButton = BtnConsultar.UniqueID If Not Request("CveOrdenCompra") Is Nothing AndAlso Request("CveOrdenCompra").ToString.ToEntero > 0 Then CveOrdenCompra = Request("CveOrdenCompra").ToEntero CargaDatosPorCve(CveOrdenCompra) End If End If End Sub Private Sub CargaDatosPorCve(pCveOrdenCompra As Integer) Dim objOrdenCompra As New ClsOC If objOrdenCompra.GetOC(pCveOrdenCompra, UsuarioActual.CveEmpresa) Then CargaDatos(objOrdenCompra) End If objOrdenCompra.Dispose() End Sub Private Sub CargaDatosPorFolio(pFolio As Integer) Dim objOrdenCompra As New ClsOC If objOrdenCompra.GetOC(-1, UsuarioActual.CveEmpresa, pFolio, UsuarioActual.CveSubProyecto, "REQ") Then If objOrdenCompra.CveOrdenCompra > 0 Then CargaDatos(objOrdenCompra) Else Alert(String.Format("No se encontro la Requisición con Folio {0}", pFolio), TipoMensaje.MsgAdvertencia) End If End If objOrdenCompra.Dispose() End Sub Private Sub CargaDatos(objOrdenCompra As ClsOC) CveOrdenCompra = objOrdenCompra.CveOrdenCompra TxtFolio.Text = objOrdenCompra.Folio.ToString LblFolio.Text = objOrdenCompra.Folio.ToString LblDescrip.Text = objOrdenCompra.Descripcion TxtJustificacion.Text = objOrdenCompra.Justificacion LblEmpresa.Text = objOrdenCompra.Empresa LblProyecto.Text = objOrdenCompra.Proyecto LblSubProyecto.Text = objOrdenCompra.SubProyecto LblEstatus.Text = objOrdenCompra.Estatus If UsuarioActual.TienePermisoProceso(69) Then HplAgregar.NavigateUrl = "/OC/RepCotizacionesDetalle.aspx?CveOrdenCompra=" & CveOrdenCompra.ToString & "&TB_iframe=true&height=370&width=720;" HplAgregar.Visible = True End If 'ImgAddFactura.Enabled = True divOC.Visible = True btnGeneraOrdenes.Visible = True CargaDetalle(CveOrdenCompra) End Sub Private Sub CargaDetalle(pCveOrdenCompra As Integer) Dim Cot As New ClsOC Dim Ds As DataSet = Cot.GetCotizacionesTabla(pCveOrdenCompra) For i = 1 To 10 GvD.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 GvD.Columns(i + 2).Visible = True Next GvD.DataSource = Ds.Tables(0) GvD.DataBind() End If Cot.Dispose() End Sub Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs) Handles BtnConsultar.Click CargaDatosPorFolio(TxtFolio.Text.ToEntero) End Sub Protected Sub GvD_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles GvD.RowCommand ''Registro el proveedor seleccionado en la orden de compra If e.CommandName = "RegProv" Then If e.CommandArgument.ToString <> "" Then Dim Cve As String() = e.CommandArgument.ToString.Split("|"c) Dim OC As New ClsOC OC.UpdateCotizacionDetalleGanadora(Cve(0).ToEntero, CType(Cve(1), Boolean)) OC.Dispose() CargaDetalle(CveOrdenCompra) End If End If End Sub Protected Sub GvD_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvD.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"), DtCotizaciones.Rows(i - 1)("RazonSocial")) 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("Btn" & i) 'Btn.Text = e.Row.DBCampo("PrecioUnitario" & i).ToDouble.ToString("N2") 'Btn.Visible = True 'Btn.OnClientClick = "return false;" e.Row.Cells(2 + i).Text = e.Row.DBCampo("PU" & i).ToDouble.ToString("N2") & " " Next Else 'If e.Row.DBCampo("CveProveedor") = "" Then If e.Row.DBCampo("CveCotizacionDetalleGanadora").ToEntero = 0 Then Dim CellMasBarato As Integer = -1 Dim Monto As Double = -1 For i As Integer = 1 To NumCotizaciones If e.Row.DBCampo("PU" & i).ToDouble > 0 Then Dim Btn As Button = e.Row.FCButton("Btn" & i) Btn.Text = e.Row.DBCampo("PU" & i).ToDouble.ToString("N2") Btn.Visible = True Btn.CommandArgument = String.Format("{0}|{1}", e.Row.DBCampo("CveCotizacionDetalle" & i), True) Btn.Style.Add("cursor:", "pointer") If Monto.ToString = "-1" Then Monto = e.Row.DBCampo("PU" & i).ToDouble CellMasBarato = i End If If e.Row.DBCampo("PU" & i).ToDouble < Monto Then CellMasBarato = i Monto = e.Row.DBCampo("PU" & i).ToDouble End If End If Next 'Coloreo el más barato If CellMasBarato > 0 Then e.Row.Cells(CellMasBarato + 2).BackColor = Color.LightBlue Else 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") If dr("CveProveedor").ToString = e.Row.DBCampo("CveProveedorGanador") Then e.Row.Cells(i + 2).BackColor = Color.LightGreen Btn.Visible = True Btn.OnClientClick = "return false;" End If i = i + 1 Next End If End If End If End Sub Protected Sub btnGeneraOrdenes_Click(sender As Object, e As EventArgs) Handles btnGeneraOrdenes.Click 'Dim objOrdenCompra As New ClsOC Dim objCotizacion As New ClsOC Dim Prioridad As Integer = 1 Dim CveMoneda As Integer = 1 Dim HuboError As Boolean = False objCotizacion.IniciaTransacSQL() If objCotizacion.GetCotizacionesDetalle(-1, CveOrdenCompra) Then Dim DtCotizacionesDetalle As DataTable = objCotizacion.DtResultados.FiltraParametros("EsGanadora = 1", "CveCotizacion") If DtCotizacionesDetalle.Rows.Count > 0 Then Dim CveCotizacion As Integer = 0 Dim CveOrdenCompra As Integer = 0 Dim CveEstatusInicialOC As Integer = GlobalDTOCEstatus(UsuarioActual.CveEmpresa).FiltraParametros(" Tipo = 'O' AND TipoTermino = 3").Rows(0)("CveEstatus").ToString.ToEntero For Each Row As DataRow In DtCotizacionesDetalle.Rows If CveCotizacion <> Row("CveCotizacion").ToString.ToEntero Then CveCotizacion = Row("CveCotizacion").ToString.ToEntero If objCotizacion.AddOrdenCompra("OC", Row("CveSubProyecto").ToString.ToEntero, Row("Descripcion").ToString, Row("Justificacion").ToString, Prioridad, Now, CveMoneda, CveEstatusInicialOC, Row("FechaEstimadaEntrega").ToString, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, Row("CveProveedor").ToString.ToEntero, -1) Then CveOrdenCompra = objCotizacion.CveOrdenCompra 'Ingresar los detalles For Each RowD As DataRow In DtCotizacionesDetalle.FiltraParametros("CveCotizacion = " + CveCotizacion.ToString).Rows If Not objCotizacion.AddOrdenCompraDetalle(CveOrdenCompra, RowD("Cantidad").ToString.ToDouble, RowD("CveUnidadMedida").ToString.ToEntero, RowD("CvePS").ToString.ToEntero, 0, -1, If(Not IsDBNull(Row("CveActivoFijo")), Row("CveActivoFijo").ToString.ToEntero, -1), Row("Observacion").ToString, UsuarioActual.CveUsuario) Then HuboError = True End If Next Else HuboError = True End If End If Next End If End If If Not HuboError Then objCotizacion.Commit() Else objCotizacion.RollBack() objCotizacion.Dispose() 'objOrdenCompra.Dispose() End Sub End Class