Imports System.Data Imports Extensiones Partial Class OC_CotizacionEnLinea Inherits Page 'debe de heredar de PAGE, no de clspaginas, porque sino valida la sesion en el servidor. #Region "Propiedades" Public Property Empresa As Empresa Private Property CotizacionActiva As Boolean Get CotizacionActiva = CBool(ViewState("CotizacionActiva").ToString) End Get Set(value As Boolean) ViewState("CotizacionActiva") = 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 CveProveedor As Integer Get CveProveedor = ViewState("CveProveedor").ToString.ToEntero End Get Set(value As Integer) ViewState("CveProveedor") = value End Set End Property Private Property CveColectiva As Integer Get CveColectiva = ViewState("CveColectiva").ToString.ToEntero End Get Set(value As Integer) ViewState("CveColectiva") = value End Set End Property Private Property CveEmpresa As Integer Get CveEmpresa = ViewState("CveEmpresa").ToString.ToEntero End Get Set(value As Integer) ViewState("CveEmpresa") = value End Set End Property Private Property CveCotizacion As Integer Get CveCotizacion = ViewState("CveCotizacion").ToString.ToEntero End Get Set(value As Integer) ViewState("CveCotizacion") = value End Set End Property Private Property Validacion As String Get Validacion = ViewState("Validacion").ToString End Get Set(value As String) ViewState("Validacion") = value End Set End Property Private Property CorreoCCP As String Get CorreoCCP = ViewState("CorreoCCP").ToString End Get Set(value As String) ViewState("CorreoCCP") = value End Set End Property Private Property CorreoPara As String Get CorreoPara = ViewState("CorreoPara").ToString End Get Set(value As String) ViewState("CorreoPara") = 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 DiasCredito As Integer Get DiasCredito = ViewState("DiasCredito").ToString.ToEntero End Get Set(value As Integer) ViewState("DiasCredito") = value End Set End Property #End Region #Region "C A R G A D A T O S" Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Page.IsPostBack Then CType(Me.Master, Site).EsPopup = True CType(Me.Master, Site).PopupWidth = 670 'Validar que este activo aun el link 'ViewState("CveOrdenCompra") = If(Not Request("CveOrdenCompra") Is Nothing AndAlso Request("CveOrdenCompra").ToString.ToEntero > 0, Request("CveOrdenCompra").ToEntero, 0) 'ViewState("CveProveedor") = If(Not Request("CveProveedor") Is Nothing AndAlso Request("CveProveedor").ToString.ToEntero > 0, Request("CveProveedor").ToEntero, 0) RegistraScript("$('#mBody').addClass('page-sidebar-closed')") RegistraScript("$('#divMenu').css('display','none')") ViewState("Validacion") = If(Not Request("P") Is Nothing, Request("P").ToString, "") 'If Validacion IsNot Nothing AndAlso Validacion = Encripta(String.Format("{0}|||{1}", CveOrdenCompra, CveProveedor)) Then If Validacion IsNot Nothing Then Dim Cadena As String = ModExtensiones.Decripta(Validacion) If Cadena <> "" Then Dim UrlParametros As Hashtable = Parametros(Cadena) If UrlParametros("CVECOTIZACION") IsNot Nothing AndAlso UrlParametros("CVECOTIZACION").ToString.ToEntero > 0 Then ViewState("CveCotizacion") = UrlParametros("CVECOTIZACION").ToString.ToEntero ' PnlGral.Visible = True CargaMonedas() CargaCotizacion() Else Alert("ERROR", TipoMensaje.MsgError) End If Else Alert("ERROR", TipoMensaje.MsgError) End If Else Alert("ERROR", TipoMensaje.MsgError) End If End If End Sub Protected Sub CargaMonedas() Dim objMonedas As New ClsMonedas If objMonedas.GetMonedas Then ddlMoneda.DataSource = objMonedas.DtResultados ddlMoneda.DataBind() End If objMonedas.Dispose() End Sub Private Sub CargaCotizacion() Dim objCotizacion As New ClsOC If objCotizacion.GetCotizaciones(-1, CveCotizacion) Then ViewState("CveOrdenCompra") = objCotizacion.CveOrdenCompra ViewState("CveEmpresa") = objCotizacion.CveEmpresa ViewState("CveProveedor") = objCotizacion.CveProveedor ViewState("CveColectiva") = objCotizacion.CveColectiva DiasCredito = objCotizacion.DiasCredito lblEmpresa.Text = objCotizacion.Empresa lblSubProyecto.Text = objCotizacion.SubProyecto LbLugarEntrega.Text = objCotizacion.LugarEntrega TxtDiasCredito.Text = objCotizacion.DiasCredito.ToString 'lblFolio.Text = objCotizacion.Folio.ToString TxtFolio.Text = objCotizacion.Folio.ToString ddlMoneda.SelectedValue = objCotizacion.CveMoneda.ToString Dim Emp As New ClsSisEmpresas If Emp.GetEmpresas(CveEmpresa, "-1", "-1", "-1", "-1") Then If Emp.DtResultados.Rows.Count > 0 Then lblTelefono.Text = Emp.DtResultados.Rows(0)("Telefono").ToString End If End If Emp.Dispose() If objCotizacion.CveProveedor > 0 Then Dim objProveedor As New ClsCompProveedores If objProveedor.GetProveedores(ClsCompProveedores.TipoConsulta.ParaUsoEnEmpresa, CveProveedor, "-1", "-1", "-1", "-1", "-1", "-1", "-1", 1, CveEmpresa) Then If objProveedor.DtResultados.Rows.Count > 0 Then lblProveedor.Text = objProveedor.DtResultados.Rows(0)("RazonSocial").ToString End If End If objProveedor.Dispose() ElseIf objCotizacion.CveColectiva > 0 Then Dim objColectiva As New ClsGenerales If objColectiva.GetColectivas(CveColectiva, "-1", "-1", "1", CveEmpresa) Then If objColectiva.DtResultados.Rows.Count > 0 Then lblProveedor.Text = objColectiva.DtResultados.Rows(0)("Colectiva").ToString End If End If objColectiva.Dispose() End If 'Dim CorreosCCP As String() = Nothing Dim StrCorreoPara As String = "" Dim StrCorreos As New StringBuilder Dim Contador As Integer = 1 If objCotizacion.GetOC(CveOrdenCompra, CveEmpresa) Then If objCotizacion.GetEstatusUsuarios(-1, objCotizacion.CveEstatusSiguiente, -1, CveOrdenCompra, CveEmpresa) Then Dim Usr As New ClsSisUsuarios For Each Row As DataRow In objCotizacion.DtResultados.Rows 'Array.Resize(CorreosCCP, If(CorreosCCP IsNot Nothing, UBound(CorreosCCP) + 2, 1)) If Usr.GetUsuarios(Row("CveUsuario").ToString.ToEntero) Then If Usr.DtResultados.Rows.Count > 0 AndAlso Usr.DtResultados.Rows(0) IsNot Nothing Then If Contador = 1 Then StrCorreoPara = Usr.DtResultados.Rows(0)("correo").ToString Contador += 1 Else StrCorreos.AppendFormat("{0};", Usr.DtResultados.Rows(0)("correo").ToString) End If 'CorreosCCP(UBound(CorreosCCP)) = Usr.DtResultados.Rows(0)("correo").ToString End If End If Next Usr.Dispose() End If ViewState("CorreoCCP") = StrCorreos.ToString ViewState("CorreoPara") = StrCorreoPara If objCotizacion.GetCotizacionesDetalle(CveCotizacion, -1) Then DtDetalle = objCotizacion.DtResultados If objCotizacion.DtResultados.COUNT("CveCotizacionDetalle", "PU IS NOT NULL") = 0 Then ViewState("CotizacionActiva") = True Else ViewState("CotizacionActiva") = False GvD.DataSource = DtDetalle GvD.DataBind() End If If CotizacionActiva = False Then Alert("Esta cotización ya fue capturada y no puede ser modificada", TipoMensaje.MsgAdvertencia) : BtnGuardar.Visible = False : GvD.Enabled = False : TxtFolio.Enabled = False : FUArchivo.Enabled = False End If End If objCotizacion.Dispose() End Sub #End Region Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) Handles BtnGuardar.Click Dim objCotizacion As New ClsOC objCotizacion.IniciaTransacSQL() Dim TieneError = False If objCotizacion.UpdateCotizacion(CveProveedor, CveColectiva, TxtFolio.Text, Now.ToShortDateString(), IO.Path.GetExtension(FUArchivo.FileName), ddlMoneda.SelectedValue.ToEntero, TxtDiasCredito.Text.ToEntero, 0, CveCotizacion) Then If FUArchivo.HasFile Then 'verificar que exista el directorio If Not System.IO.Directory.Exists(String.Format("{0}/Empresas/{1}/Cotizaciones/", AppDomain.CurrentDomain.BaseDirectory, CveEmpresa)) Then System.IO.Directory.CreateDirectory(String.Format("{0}/Empresas/{1}/Cotizaciones/", AppDomain.CurrentDomain.BaseDirectory, CveEmpresa)) End If FUArchivo.SaveAs(String.Format("{0}/Empresas/{1}/Cotizaciones/{2}{3}", AppDomain.CurrentDomain.BaseDirectory, CveEmpresa, CveCotizacion, IO.Path.GetExtension(FUArchivo.FileName))) End If For Each dr As GridViewRow In GvD.Rows If Not objCotizacion.UpdateCotizacionDetalle(dr.DataKey("CveCotizacionDetalle").ToEntero, dr.FCTextBox("TxtPU").Text.ToDouble, dr.FCTextBox("txtCantidadSurtir").Text.ToDouble, If(dr.FCTextBox("txtFechaEntrega").Text.Trim = "" Or dr.FCTextBox("txtFechaEntrega").Text = "__/__/____", "-1", dr.FCTextBox("txtFechaEntrega").Text), dr.FCTextBox("txtObservacion").Text.ToString) Then TieneError = True Exit For End If Next If Not TieneError Then objCotizacion.Commit() Alert("Cotización Guardada.", TipoMensaje.MsgInformacion) Else objCotizacion.RollBack() Alert("Ocurrió un error al guardar la cotización.", TipoMensaje.MsgError) End If End If objCotizacion.Dispose() 'Enviar mail If Not TieneError Then Dim Body As String = GeneraCorreo(CveProveedor, CveCotizacion) If Body <> String.Empty AndAlso CorreoPara <> "" Then ViewState("Para") = CorreoPara ViewState("ArrayCC") = CorreoCCP ViewState("Asunto") = "SIG - Cotización Recibida" ViewState("Body") = Body Dim Hilo As New System.Threading.Thread(AddressOf MandaCorreo) Hilo.Start() End If End If TxtFolio.Enabled = False FUArchivo.Enabled = False GvD.Enabled = False BtnGuardar.Enabled = False End Sub #Region " C O R R E O " Private Sub MandaCorreo() Dim Mail As New ClsSisMail() Empresa = ClsPaginas.EmpresaNotificaciones Empresa.Ruta = String.Format("{0}Empresas\{1}\", AppDomain.CurrentDomain.BaseDirectory, CveEmpresa) Mail.SendMail(Empresa, ViewState("Para").ToString, ViewState("Asunto").ToString, ViewState("Body").ToString, ViewState("ArrayCC").ToString) 'Mail.MandaCorreo(Empresa, ViewState("Para").ToString, ViewState("Asunto").ToString, CType(ViewState("ArrayCC"), String()), ViewState("Body").ToString) End Sub Private Function GeneraCorreo(CveProveedor As Integer, CveCotizacion As Integer) As String Dim objCotizacion As New ClsOC Dim strBody As New StringBuilder If objCotizacion.GetOC(CveOrdenCompra, CveEmpresa) Then Dim Folio = "", Descripcion = "", Justificacion = "", Estatus = "", Empresa = "", FechaEstimadaEntrega = "" Folio = objCotizacion.Folio Descripcion = objCotizacion.Descripcion Justificacion = objCotizacion.Justificacion Estatus = objCotizacion.Estatus Empresa = objCotizacion.Empresa FechaEstimadaEntrega = objCotizacion.FechaEstimadaEntrega If objCotizacion.GetCotizaciones(-1, CveCotizacion) Then strBody.Append(" ") strBody.Append("
") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append("