Files
SIG/OC/OC2.aspx.vb
JORGE LUIS CAUDILLO ESPARZA c35cf91883 Commit inicial Ventas Productivo
2019-08-14 16:40:54 -07:00

4663 lines
225 KiB
VB.net

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 <b>'Producto/Servicio'</b> 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("<br><br>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 += "<br>- " + S
Next
Alert(String.Format("No está autorizado a modificar el SubProyecto <br>{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("<a href='/OC/OC.aspx?OC={0}'>{1}</a>", CveOrdenCompra, Folio), "")
If CveOrdenCompra > 0 Then
Dim ImprimirOC = String.Format("<a class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={0}"">Imprimir Orden de Compra</a> ", 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. <b><font size=""3"" >{1}</font></b>. Ha sido guardada correctamente <br/> {2}", TipoLargo, Folio, If(TipoOC = "OC", ImprimirOC, ""))
Else
Msg.AppendFormat("La {0} No. <b><font size=""3"" >{1}</font></b>. Ha sido guardada correctamente<br><br>Orden de Compra:{2} <br/> {3}", TipoLargo, Folio, LigaOCs, If(TipoOC = "OC", ImprimirOC, ""))
End If
'IMPRIME LIGA A POLIZAS
If IDPolizasGeneradas.Count > 0 Then
Msg.Append("<br/><br/> <b>Polizas generadas:</b>")
For i = 0 To IDPolizasGeneradas.Count - 1
Msg.AppendFormat("<br/> Poliza: <b><a class=""Texto"" target='_blank' href=""/Contabilidad/RegPoliza.aspx?IdPoliza={0}"">{1}</a></b>", 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("<br/> <a class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={0}"">Imprimir Orden de Compra</a> ", Encripta(String.Format("OP=OC&CVEOC={0}", CveOCGeneradas(0))))
Msg.AppendFormat("La {0} No. <b><font size=""3"" >{1}</font></b>. Ha sido guardada correctamente<br><br>Se Generó la Orden de Compra {2} - {3}", TipoLargo, Folio, LigaOCs, ImprimirOC)
Else
Msg.AppendFormat("La {0} No. <b><font size=""3"" >{1}</font></b>. Ha sido guardada correctamente<br><br>Se Generaron las siguientes Ordenes de Compra {2}", TipoLargo, Folio, LigaOCs)
End If
'IMPRIME LIGA A POLIZAS
If IDPolizasGeneradas.Count > 0 Then
Msg.Append("<br/><br/> <b>Polizas generadas:</b>")
For i = 0 To IDPolizasGeneradas.Count - 1
Msg.AppendFormat("<br/> Poliza: <b><a class=""Texto"" target='_blank' href=""/Contabilidad/RegPoliza.aspx?IdPoliza={0}"">{1}</a></b>", 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("<br/><br/><a class=""Texto"" target='_blank' href=""/Contabilidad/RegPoliza.aspx?IdPoliza={0}"">Ver Póliza de cancelación</a>", 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("<a class='Texto' href='/OC/OC.aspx?OC={0}'>{1}</a>", 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("<a class='Texto' href='/OC/OC.aspx?OC={0}'>{1}</a>", e.Row.DBCampo("CveOrdenCompraHija"), e.Row.DBCampo("FolioOrdenCompraHija"))
End If
'CveCompraDetalle Vinculada
e.Row.FCLiteral("LtlCompra").Text = String.Format("<a class='Texto' href='../Compras/Compras.aspx?CveCompra={0}'>{1}</a>", 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}<br><a href='/OC/OC.aspx?OC={1}'>{2}</a>", 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}<br><a href='/OC/OC.aspx?OC={1}' class='Texto'>{2}</a>", 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}<br><a href='/OC/OC.aspx?OC={1}'>{2}</a>", 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}<br><a href='/OC/OC.aspx?OC={1}'>{2}</a>", 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("<a class='Texto thickbox' href='/OC/RepCotizacionesDetalle.aspx?CveOrdenCompra={0}&CveCotizacion={1}&TB_iframe=true&height=600&width=1000;'>{2}</a>", CveOrdenCompra, DtCotizaciones.Rows(i - 1)("CveCotizacion"), If(Not IsDBNull(DtCotizaciones.Rows(i - 1)("CveProveedor")), DtCotizaciones.Rows(i - 1)("RazonSocial"), DtCotizaciones.Rows(i - 1)("Colectiva")))
'<button onclick='showDivEC({1});' class='btn btn-circle btn-sm red'><i class='fa fa-close'><i/></button>",
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}&nbsp;", 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 <b>{2}</b><br><br>", TipoLargo, Folio, Estatus)
strOpciones.Append(" <div style='width: 400px'> ")
strOpciones.Append(" <fieldset> ")
strOpciones.Append(" <legend>Opciones</legend> ")
strOpciones.Append(" <table width=""350px""> ")
'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(" <tr><td><a href=""{0}""><span style=""font-size: 15px""><strong>Supervisar</strong></span></a></td></tr> ", StrSupervisa)
'si se acaba de supervisar y se necesita autorizar
If pCveEstatus = 2 Then
strOpciones.AppendFormat(" <tr><td><a href=""{0}""><span style=""font-size: 15px""><strong>Autorizar</strong></span></a></td></tr> ", StrAutoriza)
strOpciones.AppendFormat(" <tr><td><a href=""{0}""><span style=""font-size: 15px""><strong> Autorizar con Cotización</strong></span></a></td></tr> ", StrReqCotiza)
End If
'si se quiere cancelar
strOpciones.AppendFormat(" <tr><td><a href=""{0}""><span style=""font-size: 15px""><strong>Cancelar</strong></span></a></td></tr> ", StrCancela)
strOpciones.Append(" </table> ")
strOpciones.Append(" </fieldset> ")
strOpciones.Append(" </div> ")
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><br>", Folio)
strOpciones.Append(" <div style='width: 400px'> ")
strOpciones.Append(" <fieldset> ")
strOpciones.Append(" <legend>Opciones</legend> ")
strOpciones.Append(" <table width=""350px""> ")
strOpciones.AppendFormat(" <tr><td><a href=""http://sig.adsistemas.mx/OC/OC=""{0}"" ""><span style=""font-size: 15px""><strong>Ir a OC</strong></span></a></td></tr> ", CveOrdenCompra)
strOpciones.Append(" </table> ")
strOpciones.Append(" </fieldset> ")
strOpciones.Append(" </div> ")
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.<br><br>")
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("<html xmlns=""http://www.w3.org/1999/xhtml""> ")
strBody.Append("<head> ")
strBody.Append(" <style type=""text/css""> ")
strBody.Append(" body ")
strBody.Append(" { ")
strBody.Append(" margin:0px; ")
strBody.Append(" padding:0px 0px 0px 0px; ")
strBody.Append(" font-family: Verdana, Arial, Helvetica, sans-serif; ")
strBody.Append(" font-size: 10px; ")
strBody.Append(" background-color:#F0F0F0; ")
strBody.Append(" } ")
strBody.Append(" a.Texto ")
strBody.Append(" { ")
strBody.Append(" font-size:11px; ")
strBody.Append(" background-color:#F7F6F3; ")
strBody.Append(" text-decoration:none; ")
strBody.Append(" font-weight:bold; ")
strBody.Append(" } ")
strBody.Append(" .Texto ")
strBody.Append(" { ")
strBody.Append(" background-color:#F7F6F3; color:Black; font-family:Verdana; font-size:10px; text-align:center; vertical-align:middle; height:20px;")
strBody.Append(" } ")
strBody.Append(" .TextoAlterno ")
strBody.Append(" { ")
strBody.Append(" background-color:White; color:Black; font-family:Verdana; font-size:10px; text-align:center; ")
strBody.Append(" vertical-align:middle; height:20px;")
strBody.Append(" } ")
strBody.Append(" .BarraIdentidad ")
strBody.Append(" { ")
strBody.Append(" color:#FFFFFF; ")
strBody.Append(" background:#F0F0F0; ")
strBody.Append(" font-weight:bold; ")
strBody.Append(" font-size:19px; ")
strBody.Append(" font-style:oblique; ")
strBody.Append(" } ")
strBody.Append(" .Titulos ")
strBody.Append(" { ")
strBody.Append(" background-color: Gray;")
strBody.Append(" color:White; ")
strBody.Append(" font-family:Verdana; font-size:12px; text-align:center; ")
strBody.Append(" vertical-align:middle; font-weight:bold; height:30px; ")
strBody.Append(" text-decoration:none; ")
strBody.Append(" } ")
strBody.Append(" .Verde {color: #00CC00;} ")
strBody.Append(" .Negro {color: #000000;} ")
strBody.Append(" .Rojo {color: #FF0000;} ")
strBody.Append(" </style> ")
strBody.Append("</head> ")
strBody.Append("<body> ")
strBody.AppendFormat(" <div id=""C_divOC"" style=""width: 550px""> <fieldset> <legend><b>Datos {0}</b></legend> ", TipoLargo)
strBody.Append(" <table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""100%""> ")
strBody.Append(" <tr style=""height: 22px""> ")
strBody.AppendFormat(" <td style=""width: 90px""> Folio:</td><td style=""width: 125px""><b><a href=""http://sig.adsistemas.mx/OC/OC.aspx?OC={0}"">{1}<a></b></td><td style=""width: 90px""> Estatus: </td><td><b>{2}</b></td> ", objOC.CveOrdenCompra, objOC.Folio, objOC.Estatus)
strBody.Append(" </tr> ")
strBody.Append(" <tr style=""height: 22px""> ")
strBody.AppendFormat(" <td style=""width: 90px""> Empresa:</td><td colspan=""3""><b>{0}</b></td> ", objOC.Empresa)
strBody.Append(" </tr> ")
strBody.Append(" <tr style=""height: 20px""> ")
strBody.AppendFormat(" <td>Descripción:</td><td colspan='3'><b>{0}</b></td> ", objOC.Descripcion)
strBody.Append(" </tr> ")
strBody.Append(" <tr style=""height: 20px""> ")
strBody.AppendFormat(" <td>Justificación</td><td colspan=""3""><textarea name=""ctlTJ"" rows=""5"" cols=""20"" readonly=""readonly""id=""ctlTJ"" style=""width: 300px;"">{0}</textarea></td> ", objOC.Justificacion)
strBody.Append(" </tr> ")
strBody.Append(" </table> ")
strBody.Append(" </fieldset> ")
strBody.Append(" </div> ")
'Cargo el detalle
If IncluirDetalles = True Then
strBody.Append(" <div style='width: 550px'> ")
strBody.Append(" <fieldset> ")
strBody.Append(" <legend>Opciones</legend> ")
strBody.Append(" <table width=""550px""> <tr style='background-color:gray;color:White;font-family:Verdana;font-size:10px;text-align:center;vertical-align:middle;font-weight:bold;height:20px;text-decoration:none;'><th scope='col' style='width: 50px'>Cantidad</th><th scope='col' style='width: 50px'>Unidad</th><th scope='col' style='width: 225px'>Producto o Servicio</th>")
strBody.AppendFormat(" <th scope='col' style='width: 100px'>Observacion</th><th scope='col' style='width: 150px'>{0}</th><th scope='col' style='width: 85px'>Activo Fijo</th><th scope='col' style='width: 70px'>P.U.</th><th scope='col' style='width: 85px'>Total</th></tr>", If(UsuarioActual.CveEmpresa = 66, "Proyecto", "Proyecto<br>SubProyecto"))
'verifico los permisos según el estatus
If objOC.GetOrdenesDetalle(CveOrdenCompra) Then
For Each dr As DataRow In objOC.DtResultados.Rows
strBody.AppendFormat("<tr class='Texto'><td>{0}</td><td>{1}</td><td><span style='width: 220px; border-bottom: 1px solid gray;'>{2}</span><br>{3}</td><td>{4}</td><td style='width:150px;'><span style='width: 150px; border-bottom: 1px solid gray;'>{5}</span><br>{6}</td><td>{7}</td><td align='right'>{8}</td><td align='right'>{9}</td></tr>",
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(" </table> ")
strBody.Append(" </fieldset> ")
strBody.Append(" </div> ")
Else
strBody.Append(" <div style='width: 550px; height: 50px'> ")
strBody.Append(" <fieldset> ")
strBody.Append(" <legend>Bitacora</legend> ")
strBody.Append(" <table width=""550px""> ")
strBody.Append(" <tr> ")
strBody.Append(" <td> ")
strBody.AppendFormat(" {0}", Bitacora)
strBody.Append(" </td> ")
If LigaAdjunto <> "" Then strBody.AppendFormat(" <tr><td>El usuario agrego el siguiente archivo: <a href='{0}'>Adjunto</a></td></tr>", LigaAdjunto)
strBody.Append(" </tr> ")
strBody.Append(" </table> ")
strBody.Append(" </fieldset> ")
strBody.Append(" </div> ")
End If
' strBody.Append(Opciones)
strBody.Append("</body></html>")
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("<html xmlns=""http://www.w3.org/1999/xhtml""> ")
strBody.Append("<head> ")
strBody.Append(" <style type=""text/css""> ")
strBody.Append(" body ")
strBody.Append(" { ")
strBody.Append(" margin:0px; ")
strBody.Append(" padding:0px 0px 0px 0px; ")
strBody.Append(" font-family: Verdana, Arial, Helvetica, sans-serif; ")
strBody.Append(" font-size: 10px; ")
strBody.Append(" background-color:#F0F0F0; ")
strBody.Append(" } ")
strBody.Append(" a.Texto ")
strBody.Append(" { ")
strBody.Append(" font-size:11px; ")
strBody.Append(" background-color:#F7F6F3; ")
strBody.Append(" text-decoration:none; ")
strBody.Append(" font-weight:bold; ")
strBody.Append(" } ")
strBody.Append(" .Texto ")
strBody.Append(" { ")
strBody.Append(" background-color:#F7F6F3; color:Black; font-family:Verdana; font-size:10px; text-align:center; vertical-align:middle; height:20px;")
strBody.Append(" } ")
strBody.Append(" .TextoAlterno ")
strBody.Append(" { ")
strBody.Append(" background-color:White; color:Black; font-family:Verdana; font-size:10px; text-align:center; ")
strBody.Append(" vertical-align:middle; height:20px;")
strBody.Append(" } ")
strBody.Append(" .BarraIdentidad ")
strBody.Append(" { ")
strBody.Append(" color:#FFFFFF; ")
strBody.Append(" background:#F0F0F0; ")
strBody.Append(" font-weight:bold; ")
strBody.Append(" font-size:19px; ")
strBody.Append(" font-style:oblique; ")
strBody.Append(" } ")
strBody.Append(" .Titulos ")
strBody.Append(" { ")
strBody.Append(" background-color: Gray;")
strBody.Append(" color:White; ")
strBody.Append(" font-family:Verdana; font-size:12px; text-align:center; ")
strBody.Append(" vertical-align:middle; font-weight:bold; height:30px; ")
strBody.Append(" text-decoration:none; ")
strBody.Append(" } ")
strBody.Append(" .Verde {color: #00CC00;} ")
strBody.Append(" .Negro {color: #000000;} ")
strBody.Append(" .Rojo {color: #FF0000;} ")
strBody.Append(" </style> ")
strBody.Append("</head> ")
strBody.Append("<body> ")
strBody.AppendFormat(" <div id=""C_divOC"" style=""width: 550px""> <fieldset> <legend><b>Datos de Orden de Compra</b></legend> ")
strBody.Append(" <table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""100%""> ")
strBody.Append(" <tr style=""height: 22px""> ")
strBody.AppendFormat(" <td style=""width: 90px""> Folio:</td><td style=""width: 125px""><b>{0}</b></td><td style=""width: 90px""> Estatus: </td><td><b>{1}</b></td> ", objOC.Folio, objOC.Estatus)
strBody.Append(" </tr> ")
strBody.Append(" <tr style=""height: 22px""> ")
strBody.AppendFormat(" <td style=""width: 90px""> Empresa:</td><td colspan=""3""><b>{0}</b></td> ", objOC.Empresa)
strBody.Append(" </tr> ")
strBody.Append(" <tr style=""height: 20px""> ")
strBody.AppendFormat(" <td>Descripción:</td><td colspan='3'><b>{0}</b></td> ", objOC.Descripcion)
strBody.Append(" </tr> ")
strBody.Append(" </table> ")
strBody.Append(" </fieldset> ")
strBody.Append(" </div> ")
'Cargo el detalle
strBody.Append(" <div style='width: 550px'> ")
strBody.Append(" <fieldset> ")
strBody.Append(" <legend>Opciones</legend> ")
strBody.Append(" <table width=""550px""> <tr style='background-color:gray;color:White;font-family:Verdana;font-size:10px;text-align:center;vertical-align:middle;font-weight:bold;height:20px;text-decoration:none;'><th scope='col' style='width: 50px'>Cantidad</th><th scope='col' style='width: 50px'>Unidad</th><th scope='col' style='width: 225px'>Descripción</th>")
strBody.Append(" <th scope='col' style='width: 100px'>Observación</th><th scope='col' style='width: 85px'>Precio</th></tr>")
'verifico los permisos según el estatus
For Each dr As DataRow In DttDetalle.Rows
strBody.AppendFormat("<tr class='Texto'><td style='width:50px;'>{0}</td><td style='width:50px;'>{1}</td><td align='left' style='width:225px;'>{2}</td><td style='width:100px;'>{3}</td><td style='width:85px;'>{4}</td></tr>",
dr("Cantidad").ToString.FormatoNumero, dr("Abreviatura"), dr("PS"), dr("Obs"), dr("Importe").ToString.FormatoNumero)
Next
strBody.Append(" </table> ")
strBody.Append(" </fieldset> ")
strBody.Append(" </div> ")
strBody.Append("</body></html>")
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("<br/ ><p>Motivo de Eliminación</p>")
strBody.Append("<html xmlns=""http://www.w3.org/1999/xhtml""> ")
strBody.Append("<head> ")
strBody.Append(" <style type=""text/css""> ")
strBody.Append(" body ")
strBody.Append(" { ")
strBody.Append(" margin:0px; ")
strBody.Append(" padding:0px 0px 0px 0px; ")
strBody.Append(" font-family: Verdana, Arial, Helvetica, sans-serif; ")
strBody.Append(" font-size: 10px; ")
strBody.Append(" background-color:#F0F0F0; ")
strBody.Append(" } ")
strBody.Append(" a.Texto ")
strBody.Append(" { ")
strBody.Append(" font-size:11px; ")
strBody.Append(" background-color:#F7F6F3; ")
strBody.Append(" text-decoration:none; ")
strBody.Append(" font-weight:bold; ")
strBody.Append(" } ")
strBody.Append(" .Texto ")
strBody.Append(" { ")
strBody.Append(" background-color:#F7F6F3; color:Black; font-family:Verdana; font-size:10px; text-align:center; vertical-align:middle; height:20px;")
strBody.Append(" } ")
strBody.Append(" .TextoAlterno ")
strBody.Append(" { ")
strBody.Append(" background-color:White; color:Black; font-family:Verdana; font-size:10px; text-align:center; ")
strBody.Append(" vertical-align:middle; height:20px;")
strBody.Append(" } ")
strBody.Append(" .BarraIdentidad ")
strBody.Append(" { ")
strBody.Append(" color:#FFFFFF; ")
strBody.Append(" background:#F0F0F0; ")
strBody.Append(" font-weight:bold; ")
strBody.Append(" font-size:19px; ")
strBody.Append(" font-style:oblique; ")
strBody.Append(" } ")
strBody.Append(" .Titulos ")
strBody.Append(" { ")
strBody.Append(" background-color: Gray;")
strBody.Append(" color:White; ")
strBody.Append(" font-family:Verdana; font-size:12px; text-align:center; ")
strBody.Append(" vertical-align:middle; font-weight:bold; height:30px; ")
strBody.Append(" text-decoration:none; ")
strBody.Append(" } ")
strBody.Append(" .Contenido2 ")
strBody.Append(" { ")
strBody.Append(" background-color: White;")
strBody.Append(" font-family:Verdana; font-size:12px; text-align:center; ")
strBody.Append(" vertical-align:middle; font-weight:bold; height:30px; ")
strBody.Append(" text-decoration:none; ")
strBody.Append(" } ")
strBody.Append(" .Verde {color: #00CC00;} ")
strBody.Append(" .Negro {color: #000000;} ")
strBody.Append(" .Rojo {color: #FF0000;} ")
strBody.Append(" </style> ")
strBody.Append("</head> ")
strBody.Append("<body> ")
strBody.AppendFormat("<div class='Titulos'>Por medio del presente correo electrónico se notifica que se ha eliminado la cotización con folio {0}</div><br>", ObjCotizacion.Folio)
strBody.Append("<div class='Contenido2' style='display: table!important'>")
strBody.AppendFormat(" <div id=""C_divOC"" style=""width: 550px""> <fieldset> <legend><b>Datos {0}</b></legend> ", "Cotización")
strBody.Append(" <table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""100%""> ")
strBody.Append(" <tr style=""height: 22px""> ")
strBody.AppendFormat(" <td style=""width: 90px""> Empresa:</td><td colspan=""3""><b>{0}</b></td> ", ObjCotizacion.Empresa)
strBody.Append(" </tr> ")
strBody.Append(" <tr style=""height: 22px""> ")
strBody.AppendFormat(" <td>Fecha Eliminación:</td><td><b>{0}</b></td><td>&nbsp;</td><td><b>&nbsp;</b></td> ", Now.ToShortDateString)
strBody.Append(" </tr> ")
strBody.Append(" </table> ")
strBody.Append(" </fieldset> ")
strBody.Append(" </div> ")
'Cargo el detalle
strBody.Append(" <div style='width: 550px'> ")
strBody.Append(" <fieldset> ")
strBody.Append(" <legend>Productos a Cotizar</legend> ")
strBody.Append(" <table width=""550px""> <tr style='background-color:gray;color:White;font-family:Verdana;font-size:10px;text-align:center;vertical-align:middle;font-weight:bold;height:20px;text-decoration:none;'><th scope='col' style='width: 50px'>Cantidad</th><th scope='col' style='width: 50px'>Unidad</th><th scope='col' style='width: 225px'>Descripción</th>")
strBody.Append(" </tr>")
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("<tr class='Texto'><td style='width:50px;'>{0}</td><td style='width:50px;'>{1}</td><td align='left' style='width:225px;'>{2}</td></tr>", dr("Cantidad").ToString.FormatoNumero, dr("Abreviatura"), dr("PS")) ', dr("Clasificacion"), dr("Codigo"))
Next
'For Each dr As GridViewRow In gvCotizaciones.Rows
' strBody.AppendFormat("<tr class='Texto'><td style='width:50px;'>{0}</td><td style='width:50px;'>{1}</td><td align='left' style='width:225px;'>{2}</td></tr>", dr.Cells(0).ToString.FormatoNumero, dr.Cells(1).ToString, dr.Cells(2).ToString) ', dr("Clasificacion"), dr("Codigo"))
'Next
strBody.Append(" </table> ")
strBody.Append(" </fieldset> ")
strBody.Append(" </div> ")
strBody.AppendFormat("<div><p><b>Motivo de eliminación:</b></p></div>", Motivo)
strBody.AppendFormat("<div><p>{0}</p></div>", Motivo)
'strBody.AppendFormat("<div>Capture la cotizacion <a href='http://sig.adsistemas.mx/OC/CotizacionEnLinea.aspx?CveOrdenCompra={0}&CveProveedor={1}&Validacion={2}'>AQUI</a></div>", CveOrdenCompra, CveProveedor, Encripta(String.Format("{0}|||{1}", CveOrdenCompra, CveProveedor)))
'strBody.AppendFormat("<div>Capture la cotizacion <a href='http://sig.adsistemas.mx/OC/CotizacionEnLinea.aspx?P={0}'>AQUI</a></div>", ModExtensiones.Encripta(String.Format("CveCotizacion={0}", CveCotizacion)))
strBody.Append("</div>")
strBody.Append("</body></html>")
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("<!DOCTYPE html>")
strBody.Append("<html lang=""en""> ")
strBody.Append("<body class=""page-header-fixed page-quick-sidebar-over-content "">")
strBody.Append("<style>")
strBody.Append(".portlet {margin-top: 0px;margin-bottom: 25px;padding: 0px;-webkit-border-radius: 4px;-moz-border-radius: 4px;-ms-border-radius: 4px;-o-border-radius: 4px;border-radius: 4px;padding: 0px !important;border: 1px solid #d78184;border-top: 0;background-color: #cb5a5e;}")
strBody.Append(".portlet > .portlet-title {border-bottom: 0px solid #eee;padding: 0 10px;margin-bottom: 0px;min-height: 41px;-webkit-border-radius: 4px 4px 0 0;-moz-border-radius: 4px 4px 0 0;-ms-border-radius: 4px 4px 0 0;-o-border-radius: 4px 4px 0 0;border-radius: 4px 4px 0 0;color: #fff;}")
strBody.Append(".portlet > .portlet-title {background-color: #cb5a5e;}")
strBody.Append(".portlet > .portlet-title > div {padding: 11px 0 9px 0;}")
strBody.Append(".portlet > .portlet-title > div {float: left;display: inline-block;font-size: 24px;line-height: 18px;padding: 10px 0;}")
strBody.Append(".portlet > .portlet-body {background-color: #fff;padding: 10px;} ")
strBody.Append(".portlet > .portlet-body {clear: both;-webkit-border-radius: 0 0 4px 4px;-moz-border-radius: 0 0 4px 4px;-ms-border-radius: 0 0 4px 4px;-o-border-radius: 0 0 4px 4px;border-radius: 0 0 4px 4px;}")
strBody.Append(".mitablita td:nth-child(1){width: 100px; font-weight:700;}")
strBody.Append("a{ color: #666;padding: 3px 9px; line-height: 1.5;background-color: #fff;border: 1px solid #ccc; text-decoration: none;}a:hover{background-color: #ededed;}")
strBody.Append(".mitablita tr:nth-child(5) td{ text-align: right;}td{min-width:100px; }")
strBody.Append("</style>")
strBody.Append(" <div style=""Width:400px;"">")
strBody.Append(" <div class=""portlet box red"">")
strBody.Append(" <div class=""portlet-title"">")
strBody.Append(" <div class=""caption"">")
strBody.Append(" <i class=""fa fa-cart-plus""></i>Solicitud de anticipo")
strBody.Append(" </div>")
strBody.Append(" </div>")
strBody.Append(" <div class=""portlet-body "">")
strBody.Append(" <table class=""mitablita"">")
strBody.Append(" <tr>")
strBody.Append(" <td>Fecha</td>")
strBody.Append(" <td>")
strBody.Append(DateTime.Now.ToString("dd/MM/yy"))
strBody.Append("</td> </tr>")
strBody.Append(" <tr>")
strBody.Append(" <td>De</td>")
strBody.Append(" <td>")
strBody.Append(UsuarioActual.Nombre)
strBody.Append("</td> </tr>")
strBody.Append(" <tr>")
strBody.Append(" <td>Para</td>")
strBody.Append(" <td>")
strBody.Append(para)
strBody.Append("</td> </tr>")
strBody.Append(" <tr>")
strBody.Append(" <td>Folio</td>")
strBody.Append(" <td>")
strBody.Append(folio)
strBody.Append("</td> </tr>")
strBody.Append(" <td>Importe:</td>")
strBody.Append(" <td>")
strBody.Append(importe)
strBody.Append("</td> </tr>")
strBody.Append("<tr><td colspan=""4"" ><a href=""")
strBody.Append(link)
strBody.Append(""">Ver mas</a></td></tr>")
strBody.Append(" <table>")
strBody.Append(" </div>")
strBody.Append(" </div>")
strBody.Append(" </div>")
strBody.Append(" </div>")
strBody.Append("</body>")
strBody.Append("</html>")
Return strBody.ToString
End Function
#End Region
End Class