Option Explicit On Imports System.Data Imports Extensiones Imports System.IO Imports GemBox.Spreadsheet Imports Newtonsoft.Json Partial Class OC Inherits ClsPaginas Private Shared missing As Object = System.Reflection.Missing.Value #Region "Propiedades" Private Property CveEmpresaActual As Integer Get CveEmpresaActual = ViewState("CveEmpresaActual").ToString.ToEntero End Get Set(value As Integer) ViewState("CveEmpresaActual") = value End Set End Property Private Property EmpresaActualOC As Empresa Get EmpresaActualOC = If(IsNothing(ViewState("EmpresaActualOC")), Nothing, DirectCast(ViewState("EmpresaActualOC"), Empresa)) End Get Set(value As Empresa) ViewState("EmpresaActualOC") = value End Set End Property Private Property CveUsuarioAsignado As Integer Get Return If(IsNothing(ViewState("CveUsuarioAsignado")), -1, ViewState("CveUsuarioAsignado").ToString.ToEntero) End Get Set(value As Integer) ViewState("CveUsuarioAsignado") = 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 CveIEAnticipo As Integer Get CveIEAnticipo = ViewState("CveIEAnticipo").ToString.ToEntero End Get Set(value As Integer) ViewState("CveIEAnticipo") = 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 EsCrearApartirDe As Boolean Get EsCrearApartirDe = If(IsNothing(ViewState("EsCrearApartirDe")), False, DirectCast(ViewState("EsCrearApartirDe"), Boolean)) End Get Set(value As Boolean) ViewState("EsCrearApartirDe") = 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 If ViewState("NumCotizaciones") Is Nothing Then Return -1 Else Return ViewState("NumCotizaciones").ToString.ToEntero End If 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 NumCotizacionesEvaluar As Integer Get NumCotizacionesEvaluar = IfNull(ViewState("NumCotizacionesEvaluar"), "0", ViewState("NumCotizacionesEvaluar")).ToString().ToEntero() End Get Set(value As Integer) ViewState("NumCotizacionesEvaluar") = value End Set End Property Private Property ProveedoresCotizacion As ArrayList Get ProveedoresCotizacion = DirectCast(ViewState("ProveedoresCotizacion"), ArrayList) End Get Set(ByVal value As ArrayList) ViewState("ProveedoresCotizacion") = 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 DtEstatusUsuariosClasificaciones As DataTable Get DtEstatusUsuariosClasificaciones = DirectCast(ViewState("DtEstatusUsuariosClasificaciones"), DataTable) End Get Set(ByVal value As DataTable) ViewState("DtEstatusUsuariosClasificaciones") = value End Set End Property Private Property EsCreaApartirDe As Boolean Get Return If(IsNothing(ViewState("EsCreaApartirDe")), False, CType(ViewState("EsCreaApartirDe"), Boolean)) End Get Set(value As Boolean) ViewState("EsCreaApartirDe") = 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 FolioOCGeneradas As List(Of Integer) Get FolioOCGeneradas = DirectCast(ViewState("FolioOCGeneradas"), List(Of Integer)) End Get Set(ByVal value As List(Of Integer)) ViewState("FolioOCGeneradas") = 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 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 Private Property DtBitacora As DataTable Get Return CType(ViewState("DtBitacora"), DataTable) End Get Set(value As DataTable) ViewState("DtBitacora") = value End Set End Property Private Property EntregaDirecta As Boolean Get EntregaDirecta = CBool(ViewState("EntregaDirecta").ToString) End Get Set(value As Boolean) ViewState("EntregaDirecta") = value End Set End Property Private Property CveVenta As Integer Get Return ViewState("CveVenta").ToString.ToEntero End Get Set(value As Integer) ViewState("CveVenta") = value End Set End Property Private Property TieneVenta As Integer Get Return ViewState("TieneVenta").ToString.ToEntero End Get Set(value As Integer) ViewState("TieneVenta") = value End Set End Property Private Property TieneCompraInv As Integer Get Return ViewState("TieneCompraInv").ToString.ToEntero End Get Set(value As Integer) ViewState("TieneCompraInv") = value End Set End Property Private Property CveCompra As Integer Get Return ViewState("CveCompra").ToString.ToEntero End Get Set(value As Integer) ViewState("CveCompra") = value End Set End Property Private Property CveMovimientoAlmacenVenta As Integer Get Return ViewState("CveMovimientoAlmacenVenta").ToString.ToEntero End Get Set(value As Integer) ViewState("CveMovimientoAlmacenVenta") = value End Set End Property Private Property CveConfianzaProveedor As Integer Get Return IfNull(ViewState("CveConfianzaProveedor"), -1).ToString().ToEntero() End Get Set(value As Integer) ViewState("CveConfianzaProveedor") = value End Set End Property Private Property CveProveedorOriginal As Integer Get Return IfNull(ViewState("CveProveedorOriginal"), -1).ToString().ToEntero() End Get Set(value As Integer) ViewState("CveProveedorOriginal") = value End Set End Property Private Property CveEstatusSupervisada As Integer Get Return IfNull(ViewState("CveEstatusSupervisada"), -1).ToString().ToEntero() End Get Set(value As Integer) ViewState("CveEstatusSupervisada") = value End Set End Property Private Property CveDireccionEnvio As Integer Get If ViewState("CveDireccionEnvio") Is Nothing Then Return -1 Else Return ViewState("CveDireccionEnvio").ToString.ToEntero End If End Get Set(value As Integer) ViewState("CveDireccionEnvio") = value End Set End Property Private Property MonedaTexto As String Get If ViewState("MonedaTexto") Is Nothing Then Return "" Else Return ViewState("MonedaTexto").ToString.ToEntero End If End Get Set(value As String) ViewState("CveDireccionEnvio") = value End Set End Property Private Property NumRow As Integer Private Property SaldoOCAnticipo As Decimal Get If ViewState("SaldoOCAnticipo") Is Nothing Then Return 0 Else Return ViewState("SaldoOCAnticipo").ToString.ToDecimal End If End Get Set(value As Decimal) ViewState("SaldoOCAnticipo") = value End Set End Property Private Property ImporteAnticipos As Decimal Get If ViewState("ImporteAnticipos") Is Nothing Then Return 0 Else Return ViewState("ImporteAnticipos").ToString.ToDecimal End If End Get Set(value As Decimal) ViewState("ImporteAnticipos") = value End Set End Property Private Property CveOrdenTrabajo As Integer Get If ViewState("CveOrdenTrabajo") Is Nothing Then Return -1 Else Return ViewState("CveOrdenTrabajo").ToString.ToEntero End If End Get Set(value As Integer) ViewState("CveOrdenTrabajo") = value End Set End Property Private Property ContratoObraAplciado As Boolean Get If ViewState("ContratoObraAplciado") Is Nothing Then Return False Else Return Boolean.Parse(ViewState("ContratoObraAplciado").ToString) End If End Get Set(value As Boolean) ViewState("ContratoObraAplciado") = 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 GlobalDTCultivosCuadro(UsuarioActual.CveEmpresa) = Nothing CargaDatosAgregarPS() CveProveedorOriginal = -1 'MODALIDAD MULTIEMPRESA CveEmpresaActual = UsuarioActual.CveEmpresa If CveEmpresaActual > 0 Then EmpresaActualOC = UsuarioActual.Empresa End If CargaEstatusUsuariosClasificaciones() TxtObsPS.Attributes.Add("maxlength", "750") 'FUNCIONALIDAD 108' CargarOptionAnticipos() If UsuarioActual.Empresa.Funcionalidad(556) = "1" Then ChkCotizacion.Checked = True ChkCotizacion.Enabled = False End If '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) Else LIContratos.Visible = True EsNuevo = True InicializarValores() HlAgregarExcel.Visible = True LbDescargarExcel.Visible = True TxtDescrip.Attributes.Add("onKeyUp", String.Format("SetText({0}, {1})", TxtDescrip.ClientID, TxtJustificacion.ClientID)) 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, CveEmpresaActual) 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()) Try Ddlcliente.txtText.Value = DrCot("ClienteNombre").ToString() Ddlcliente.txtValue.Value = DrCot("CveCliente").ToString() Catch ex As Exception End Try End If End If End If Dim DtOCGeneradas As DataTable = Nothing If ObjVentas.GetVentasCotizacionesOC(Me.CveVenta, -1, UsuarioActual.CveEmpresa) Then DtOCGeneradas = ObjVentas.DtResultados.Copy() End If If DtOCGeneradas IsNot Nothing AndAlso DtOCGeneradas.Rows.Count > 0 Then ObjVentas.Dispose() BtnGuardar.Enabled = False Alert("Ya existe una OC con esta cotización", TipoMensaje.MsgAdvertencia) Exit Sub End If CargaClasificacionesPopUp(CveCotizacion) 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 BtnGeneraContrato.Visible = True : CargaClientesContrato() CargaEstatusInicialFinal() CargaEstatusUsuarios() CargaEstatusOC() 'Estatus Default 66 If CveEmpresaActual = 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 BtnCancelarPrevio.Enabled = False If CveEstatusInicial = -1 Then Alert("No tiene configurado un Estatus Inicial", TipoMensaje.MsgAdvertencia) : BtnGuardar.Enabled = False PnlProveedor.Visible = True : UPProv.Update() '12/04/2018 'DdlIVA.Visible = True If UsuarioActual.Empresa.UsaAC Then ActivaAC() End If hplAgregarCotizacion.Visible = False hplEnviarCorreo.Visible = False 'ASIGNA ESTATUS OC CboE_SelectedIndexChanged(New Object, New EventArgs) If Request("CveOrdenTrabajo") IsNot Nothing AndAlso Request("CveOrdenTrabajo").ToString.ToEntero > 0 Then CveOrdenTrabajo = Request("CveOrdenTrabajo").ToEntero CargaOT() End If End If 'CARGA TITULO TIPO OC (REQ, OC, OS) lblTitulo.Text = TipoLargo 'VALIDA PERMISOS 'If UsuarioActual.TienePermisoProceso(123) Then ' RFVcodigo.Enabled = True 'End If 'FUNCIONALIDAD 105 CargaFuncionalidad105() 'ACTIVAR MODIFICAR IVA ActivarIVAEditable() 'ACTIVAR RETENCIONES ActivarRetenciones() 'ACTIVA DESCUENTOS ActivarDescuentos() 'BITACORA TEMPORAL InicializaBitacoraTemporal() 'ACTIVA CREAR APARTIR DE ActivaCrearApartirDe() 'ACTIVA CONFIRMACION GUARDAR If UsuarioActual.CveEmpresa = 72 Or UsuarioActual.CveEmpresa = 80 Then BtnGuardar.OnClientClick = "ValidaGuardar();" BtnGuardar.Attributes.Add("data-toggle", "confirmation") BtnGuardar.Attributes.Add("data-popout", "true") BtnGuardar.Attributes.Add("data-original-title", "confirmar") BtnGuardar.Attributes.Add("data-btn-ok-label", "Guardar") BtnGuardar.Attributes.Add("data-html", "true") End If 'CARGA SUCURSALES DEL CLIENTE CargaDdlSucursalCliente() 'CASOS ESPECIALES EMPRESA DEMO Y PRUEBAS If UsuarioActual.CveEmpresa < 2 Then ChkEntregaDirecta.Visible = False End If If UsuarioActual.Empresa.CvePlataforma = 2 Then DivPrioridad.Visible = False LblPrioridad.Visible = False LblFechaEstimada.Visible = False DivFechaEstimada.Visible = False ChkCotizacion.Visible = False tabCotizaciones.Visible = False ThActivoFijo.Visible = False TdActivoFijo.Visible = False THDescuento.Visible = True TDDescuento.Visible = True LblObsPrioridad.Visible = False divtxtprioridad.Visible = False End If CargarCentrosDeCosto(DdlProyecto, DdlSubProyecto, TtituloProyecto, TituloSubProyecto) CargarCentrosDeCosto(Nothing, DdlSubProyectoContrato, LblProyecto, LblSubProyecto) DivProyecto.Visible = DdlProyecto.Visible DdlSubProyecto.Items.Clear() ' aqui tiene otras condiciones especiales DdlSubProyecto.DataSource = DtEstatusUsuarios.FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}) 'If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, CveEmpresaActual, -1, 1), GlobalDTSubProyectos(-1, -1, CveEmpresaActual, 1)) ' DtEstatusUsuarios.FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}) DdlSubProyecto.DataBind() DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlSubProyectoContrato.Items.Clear() DdlSubProyectoContrato.DataSource = DtEstatusUsuarios.FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}) 'If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, CveEmpresaActual, -1, 1), GlobalDTSubProyectos(-1, -1, CveEmpresaActual, 1)) ' DtEstatusUsuarios.FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}) DdlSubProyectoContrato.DataBind() DdlSubProyectoContrato.Items.Insert(0, New ListItem("Seleccione", "-1")) If UsuarioActual.Empresa.Funcionalidad(590).ToString.ToEntero = 1 Then DVCultivosCuadro.Visible = True DdlSubProyecto.AutoPostBack = True DdlCultivosCuadro.DataSource = GlobalDTCultivosCuadro(UsuarioActual.CveEmpresa).FiltraParametros($"CveSubProyecto = {DdlSubProyecto.SelectedValue} AND Estatus =1") DdlCultivosCuadro.DataBind() DdlCultivosCuadro.Items.Insert(0, New ListItem("Seleccione uno", "-1")) End If 'SOLO SE MUESTRA CUANDO ES REGISTRO NUEVO If Not CveOrdenCompra > 0 Then If UsuarioActual.Empresa.EsComercializadora And Not CveCotizacion > 0 Then VerificarClasificaciones(True) Else CargaClasificaciones() End If Else ' NO SE CARGABAN CLASIFICACIONES CUANDO YA ESTABA REGISTRADA If UsuarioActual.Empresa.EsComercializadora And Not CveCotizacion > 0 Then 'NO SE QUE DEBERIA SER AQUI. [IPP] Else CargaClasificaciones() End If End If 'InicializaSolicitarAnticipo() If TipoOC = "REQ" Then BtnSolicitudAnticipo.Visible = False End If Ddlcliente.ddlWS.Attributes.Add("data-coltexto", "N") 'Nuevo Proceso que permite modificar detalles 'If Not UsuarioActual.TienePermisoProceso(131) Then If GlobalDTOCEstatus(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveEstatus = {0}", CveEstatus)).Rows.Count > 0 Then Dim Dr As DataRow Dr = GlobalDTOCEstatus(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveEstatus = {0}", CveEstatus))(0) If (UsuarioActual.TienePermisoProceso(203)) AndAlso Dr("TipoTermino").ToString.ToEntero = 3 AndAlso Dr("Tipo").ToString = "OC" Then CargaClasificaciones() If Not UsuarioActual.TienePermisoProceso(131) Then DesHabilitar() GvD.Columns(10).Visible = True LbAgregar.Enabled = True txtPrecioUnitario.Enabled = True DdlProyecto.Enabled = True DdlSubProyecto.Enabled = True TxtObsPS.Enabled = True CboUnidadMedida.Enabled = True DdlClasificacion.Enabled = True DdlP2.Enabled = True TxtCant.Enabled = True BtnGuardar.Enabled = True BtnCancelar.Enabled = True ElseIf Dr("TipoTermino").ToString.ToEntero = 3 And Dr("Tipo").ToString = "OC" AndAlso Not UsuarioActual.TienePermisoProceso(131) Then DesHabilitar() End If End If 'End If 'NO PERMITE REGISTRAR PS If UsuarioActual.TienePermisoProceso(249) Then HplAddClasificacion.Visible = False HplPS.Visible = False End If UPPDetalle.Update() PermisosPagina() RegistraScript("$get('HdnWidth').value = $('#C_Tab_TabC_DivConceptosContenido').width();") 'NO MOSTRAR LA OPCION DE ENTREGA DIRECTA (ECONOLLANTAS) If UsuarioActual.CveEmpresa = 141 Then DivEntregaDirecta.Visible = False ChkEntregaDirecta.Enabled = False ChkEntregaDirecta.Checked = False End If End If MostrarUsuarioAsignado() Me.Form.DefaultButton = "" End Sub #Region " PERMISOS PAGINA " Private Sub PermisosPagina() ActivarIVAEditable() End Sub Private Sub ActivarIVAEditable() If UsuarioActual.TienePermisoProceso(141) Then TxtIVA.Visible = True LblIVA.Visible = False End If End Sub Protected Sub BtnAplicarIVA_Click(sender As Object, e As EventArgs) AplicarIVA() End Sub Private Sub AplicarIVA() If LblSubTotal.Text.ToDecimal <= 0 Then Alert("Para aplicar un IVA, el SubTotal debe ser mayor a cero.", TipoMensaje.MsgAdvertencia) TxtIVA.Text = "0.00" CalculaGenerales() Exit Sub End If If Math.Round(DdlIVA.SelectedValue.ToDecimal, 2) = 1 Then Alert("Para aplicar un IVA, debe de seleccionar un porcentaje en el combo de IVA.", TipoMensaje.MsgAdvertencia) TxtIVA.Text = "0.00" CalculaGenerales() Exit Sub End If Dim Total As Decimal = 0 For Each Dr As DataRow In DtDetalle.Rows Dim DrPS = GlobalDTPS(CveEmpresaActual, CvePS:=Dr("CvePS").ToString.ToEntero).FiltroPrimero("") If DrPS IsNot Nothing AndAlso DrPS("IVA").ToString.ToEntero = -1 Then Total += Dr("Total").ToString.ToDecimal End If Next Dim Porcentaje = TxtIVA.Text.ToDecimal / Total Dim LastDr As DataRow = Nothing For Each Dr As DataRow In DtDetalle.Rows Dim DrPS = GlobalDTPS(CveEmpresaActual, CvePS:=Dr("CvePS").ToString.ToEntero).FiltroPrimero("") If DrPS IsNot Nothing AndAlso DrPS("IVA").ToString.ToEntero = -1 Then Dr("IVA") = Math.Round(Dr("Total").ToString.ToDecimal * Porcentaje, 6) Dr("IVAPorcentaje") = Math.Round(Porcentaje, 2) ' 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) LastDr = Dr Else Dr("IVA") = 0 Dr("IVAPorcentaje") = 0 End If Next If Not IsNothing(LastDr) Then Dim Fdes As Decimal = TxtIVA.Text.ToDecimal - DtDetalle.SUM("IVA").ToString.ToDecimal If Fdes > 0 Then LastDr("IVA") = Math.Round(LastDr("IVA").ToString.ToDecimal + Fdes, 6) End If End If CalculaGenerales() GvD.DataSource = DtDetalle GvD.DataBind() UPPDetalle.Update() End Sub #End Region #Region " FUNCIONALIDAD 105-141 " Private Sub CargaFuncionalidad105() Dim EsWS = If(UsuarioActual.Empresa.Funcionalidad(105) = "1" Or UsuarioActual.Empresa.Funcionalidad(141) = "1", True, False) DdlP2.setEsWebService(EsWS) If DdlP2.UsaWebService Then If isWithFamily() Then DdlP2.ddlWS.Attributes.Add("data-idSubFamilia", DdlClasificacion.ClientID) Else DdlP2.ddlWS.Attributes.Add("data-cveclasificacion", DdlClasificacion.SelectedValue) End If DdlP2.ddlWS.Attributes.Add("data-pagina", "oc/oc") If UsuarioActual.Empresa.Funcionalidad(141) = "1" Or True Then DdlP2.ddlWS.Attributes.Add("Data-onresult", "CargaExistenciaAlmacenes") CargaSucursal() DdlSubProyecto.AutoPostBack = True End If DdlP2.Attributes.Add("Data-usoclasificacion", "-1") Else CargaPS(-1, DdlP2) '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 ViewState("TipoOC") = "OC" ViewState("CveEstatus") = -1 ViewState("CveEstatusSiguiente") = -1 EditarOC = False CveEstatusFinalOK = -2 'BtnCancelarPrevio.Disabled = True BtnCancelarPrevio.Enabled = False Folio = 0 'ViewState("ArrayCCNombre") = "" ViewState("ArrayCC") = "" ViewState("EjercicioAC") = -1 ViewState("CveUsuario") = -1 CveVenta = -1 TieneVenta = -1 TieneCompraInv = -1 CveCompra = -1 CveMovimientoAlmacenVenta = -1 IDPolizaPresupuestal = -1 CveIEAnticipo = -1 Dim drE As DataRow = GlobalDTOCEstatus(CveEmpresaActual).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("FolioOCGeneradas") = 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(CveEmpresaActual = 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) CargaComboCFDI() CargaMonedas() 'CargaUnidadesMedida() BtnCancelar.Attributes.Add("disabled", "disabled") TxtCancelar.Attributes.Add("onKeyUp", "fncCan(this)") CargaTipoActivoFijo() DrEliminados = New ArrayList CargaProveedores() End Sub Private Sub CreaDTDetalles() DtDetalle = New DataTable DtDetalle.Columns.Add("Cantidad", GetType(Decimal)) 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("IVA", GetType(Decimal)) DtDetalle.Columns.Add("IVAPorcentaje", GetType(Decimal)) DtDetalle.Columns.Add("IEPSPS", GetType(Decimal)) DtDetalle.Columns.Add("IEPSPSPorcentaje", GetType(Decimal)) DtDetalle.Columns.Add("IEPSPSIVA", GetType(Decimal)) DtDetalle.Columns.Add("IEPSPSIVAPorcentaje", GetType(Decimal)) DtDetalle.Columns.Add("RetIVA", GetType(Decimal)) DtDetalle.Columns.Add("RetIVAPorcentaje", GetType(Decimal)) DtDetalle.Columns.Add("RetISR", GetType(Decimal)) DtDetalle.Columns.Add("RetISRPorcentaje", GetType(Decimal)) DtDetalle.Columns.Add("Observacion", GetType(String)) DtDetalle.Columns.Add("CveClasificacion", GetType(Integer)) DtDetalle.Columns.Add("Clasificacion", GetType(String)) DtDetalle.Columns.Add("CveSubFamilia", GetType(Integer)) DtDetalle.Columns.Add("SubFamilia", 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(Decimal)) DtDetalle.Columns.Add("Descuento", GetType(Decimal)) DtDetalle.Columns.Add("Total", GetType(Decimal)) 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)) 'AC 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("CveContratoDetalle", GetType(Integer)) DtDetalle.Columns.Add("CantidadNoEditable", GetType(Decimal)) DtDetalle.Columns.Add("CveVentaDetalleCotizacion", GetType(Integer)) DtDetalle.Columns.Add("CveTipoGastoObra", GetType(Integer)) DtDetalle.Columns.Add("CveCultivoCuadroDetalle", GetType(Integer)) DtDetalle.Columns.Add("Cuadro", GetType(String)) 'DtDetalle.Columns.Add("CveOrdenCompraDetalle", 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 Dim DrPS = GlobalDTPS(CveEmpresaActual, CvePS:=RowV("CvePS").ToString.ToEntero).FiltroPrimero("") If DrPS Is Nothing Then Alert("Ocurrió un error al cargar la información de los productos. Por favor vuelva a intentar.", TipoMensaje.MsgAdvertencia) Exit Sub End If dr("Cantidad") = RowV("Cantidad") dr("CveUnidadMedida") = RowV("CveUM") dr("UM") = RowV("UM") dr("CvePS") = RowV("CvePS") dr("PS") = RowV("CodigoPS") dr("IVA") = 0 dr("IVAPorcentaje") = DrPS("IVA").ToString.ToDecimal dr("RetIVA") = 0 dr("RetIVAPorcentaje") = DrPS("RetIVA").ToString.ToDecimal dr("RetISR") = 0 dr("RetISRPorcentaje") = DrPS("RetISR").ToString.ToDecimal dr("IEPSPS") = 0 dr("IEPSPSPorcentaje") = DrPS("IEPSPorcentaje").ToString.ToDecimal dr("IEPSPSIVA") = 0 dr("IEPSPSIVAPorcentaje") = If(DrPS("IEPSGrabaIVA").ToString = "True", DrPS("IEPSPorcentaje").ToString.ToDecimal, 0) dr("Observacion") = RowV("Obs") dr("CveClasificacion") = RowV("CveClasificacion") dr("Clasificacion") = RowV("Clasificacion") If UsuarioActual.Empresa.Tipo_CentroCosto = 1 Or UsuarioActual.Empresa.Tipo_CentroCosto = 2 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 If UsuarioActual.Empresa.Funcionalidad(583) = "1" Then dr("CveVentaDetalleCotizacion") = RowV("CveVentaDetalle") End If DtDetalle.Rows.Add(dr) Next CargaDatosDetalles() End If ObjVentas.Dispose() End If End Sub Protected Sub CargaEstatusUsuarios() 'Dim objEstatusUsuarios As New ClsOC 'If objEstatusUsuarios.GetEstatusUsuarios(UsuarioActual.CveUsuario, -1, -1, -1, CveEmpresaActual) 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() DtEstatusUsuarios = GlobalDTOCEstatusUsuarios(CveEmpresaActual, UsuarioActual.CveUsuario, TipoOC) End Sub Protected Sub CargaSuperior() If CboE.SelectedValue.ToEntero > 0 Then Dim RowActual As DataRow = GlobalDTOCEstatus(CveEmpresaActual).FiltroPrimero(String.Format("CveEstatus = {0}", CboE.SelectedValue)) If Not IsNothing(RowActual) Then 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 AndAlso DtEstatusUsuarios IsNot Nothing Then Dim TotalT As Decimal = LblTotal.Text.Replace(",", "").Replace("$", "").ToDecimal If DtDetalle IsNot Nothing Then 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 End If uppEstatus.Update() End If 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), CveEmpresaActual) Then Dim DT As DataTable = ObjFolios.DtResultados.FiltraParametros("Estado = 'Activo'") 'Verificar primero en la sucursal del usuario If DT.FiltraParametros("CveSubProyecto = " + UsuarioActual.CveSubProyecto.ToString).Rows.Count > 0 Then ViewState("CveFolio") = DT.FiltraParametros("CveSubProyecto = " + UsuarioActual.CveSubProyecto.ToString).Rows(0)("CveFolio").ToString.ToEntero ViewState("FolioActual") = DT.FiltraParametros("CveSubProyecto = " + UsuarioActual.CveSubProyecto.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 Protected Sub CargaEstatusUsuariosClasificaciones() Dim ObjOC As New ClsOC If ObjOC.GetEstatusUsuariosClasificaciones(-1, UsuarioActual.CveUsuario, -1, -1, CveEmpresaActual) Then DtEstatusUsuariosClasificaciones = ObjOC.DtResultados Else Alert("Ocurrió un error al obtener los permisos del usuario. Por favor vuelva cargar.", TipoMensaje.MsgError) End If ObjOC.Dispose() End Sub #End Region #Region " CARGA DATOS " Private Sub CargaDatos(pCveOrdenCompra As Integer) 'REINICIALIZA TrPendientes.Visible = False Dim objOC As New ClsOC If objOC.GetOC(pCveOrdenCompra, CveEmpresaActual, CveUsuario:=UsuarioActual.CveUsuario) AndAlso objOC.DtResultados.Rows.Count > 0 Then CveEmpresaActual = objOC.CveEmpresa If CveEmpresaActual > 0 Then EmpresaActualOC = CreaObjetoEmpresa(CveEmpresaActual) End If InicializarValores() 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 'PROMOCIONES TxtPromocion.Text = objOC.Promocion ChkPromocion.Checked = TxtPromocion.Text.Trim.Length > 0 If ChkPromocion.Checked Then TxtPromocion.Style.Remove("display") End If PanelContrato.Visible = False MPContrato.Enabled = False 'SOLICITUD DE ANTICIPO CveIEAnticipo = objOC.CveIEAnticipo CveUsuarioAsignado = objOC.CveUsuarioAsignado 'LtImporteIEAnticipo.Text = objOC.ImporteAnticipo.FormatoNumero 'LtFolioIEAnticipo.Text = $"{objOC.FolioIEAnticipo}" CveVenta = objOC.CveVenta TieneVenta = objOC.TieneVenta TieneCompraInv = objOC.TieneCompraInv CveCompra = objOC.CveCompra CveMovimientoAlmacenVenta = objOC.CveMovimientoAlmacenVenta If UsuarioActual.Empresa.Funcionalidad(565) = "1" Then CveConfianzaProveedor = objOC.DtResultados.Rows(0)("CveConfianzaProveedor").ToString.ToEntero 'SI NO TIENE ASIGNADO UN NIVEL DE CONFIANZA SE ASIGNARA EL VALOR DE 'PROVEEDOR NO DEDICADO' If CveConfianzaProveedor <= 0 Then CveConfianzaProveedor = 2 End If End If 'Anticipos CargarOptionAnticipos() CargaAnticiposSolicitudes() 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 ''DATOS DE VENTA If UsuarioActual.Empresa.Funcionalidad(108) = "1" Then Ddlcliente.txtValue.Value = objOC.CveCliente.ToString Ddlcliente.txtText.Value = objOC.NombreCliente 'If Ddlcliente.SelectedValue <> objOC.CveCliente.ToString Then ' Ddlcliente.Items.Insert(1, New ListItem(GlobalDTCliente(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Nombre", $"CveCliente = {objOC.CveCliente}"), objOC.CveCliente.ToString)) 'End If DdlVendedor.SelectedValueExist(objOC.CveVendedor.ToString) If DdlVendedor.SelectedValue <> objOC.CveVendedor.ToString Then DdlVendedor.Items.Insert(1, New ListItem(GlobalDTVendedores(UsuarioActual.CveEmpresa, False).FiltroPrimeroValor("Vendedor", $"CveVendedor = {objOC.CveVendedor}"), objOC.CveVendedor.ToString)) End If End If EntregaDirecta = objOC.EntregaDirecta ChkEntregaDirecta.Checked = EntregaDirecta CambiaEntregaDirecta() TxtLugarEntregaDirecta.Text = objOC.LugarEntrega DdlDireccionEnvio.SelectedValueExist(objOC.CveDireccionEnvio.ToString) DdlUsoCFDI.SelectedValueExist(objOC.CveUsoCFDI.ToString) If objOC.CveDireccionEnvio > 0 And DdlDireccionEnvio.SelectedValue.ToEntero <> objOC.CveDireccionEnvio Then Alert("La dirección de envio no se pudo cargar correctamente. Por favor verifique que la dirección de envio aun este vigente.", TipoMensaje.MsgAdvertencia) End If 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.SelectedValueExist(objOC.CveMoneda.ToString) MonedaTexto = DdlMoneda.SelectedItem.Text Select Case objOC.PorcentajeIVA.ToString.ToDecimal Case 0 DdlIVA.SelectedValue = "1" Case 0.16 DdlIVA.SelectedValue = "1.16" Case 0.08 DdlIVA.SelectedValue = "1.08" End Select 'If objOC.PorcentajeIVA.ToString.ToDecimal = 0 Then DdlIVA.SelectedValue = "1" Else DdlIVA.SelectedValue = "1.16" DdlPrioridad.SelectedValueExist(objOC.Prioridad.ToString) ChkCotizacion.Checked = objOC.RequiereCotizacion If ChkCotizacion.Checked AndAlso UsuarioActual.Empresa.Funcionalidad(565) = "1" Then ChkCotizacion.Enabled = False End If tabCotizaciones.Enabled = objOC.RequiereCotizacion tabCotizaciones.UpdatePanelID = uppOpciones.ID TxtGuia.Text = objOC.Guia TxtFecha.ToolTip = objOC.Fecha.ToString("dd/MM/yyyy HH:mm") TxtFecha.Text = objOC.Fecha.ToString("dd/MM/yyyy") ''RETENSIONES CargaRetenciones(objOC.RetIVA, objOC.RetISR, objOC.IEPS) lblNombreUsuario.Text = objOC.NombreUsuario LblCodigo.Text = objOC.Codigo TxtFolioAdicional.Text = objOC.FolioAdicional If Not IsNothing(objOC.Tipo) Then Select Case objOC.Tipo.ToUpper Case "OC" ViewState("TipoOC") = objOC.Tipo ViewState("TipoLargo") = "Orden de Compra" 'ENTREGA DIRECTA VIEJO If EntregaDirecta Then ChkEntregaDirecta.Checked = True If CveVenta > 0 And CveCompra > 0 And CveMovimientoAlmacenVenta <= 0 Then HLGenerarRecepcion.Visible = True HLGenerarRecepcion.NavigateUrl = $"/Inventarios/RecepcionAlmacen.aspx?CveCompra={CveCompra}&CveVenta={CveVenta}" ElseIf Not CveVenta > 0 Then HLGenerarVenta.Visible = True HLGenerarVenta.NavigateUrl = $"/Ventas/Ventas.aspx?CveOC={pCveOrdenCompra}" End If 'BLOQUEA POR SI YA TIENE VENTA If CveVenta > 0 Then DdlVendedor.Enabled = False Ddlcliente.Enabled = False ChkEntregaDirecta.Enabled = False End If End If HLGenerarVenta.Visible = True HLGenerarVenta.NavigateUrl = $"/Ventas/Ventas.aspx?CveOC={pCveOrdenCompra}" lblFolio.Text = String.Format("OC {0}", objOC.Folio) 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 DdlProveedores.SelectedValue.ToEntero > 0 Then CveProveedorOriginal = objOC.CveProveedor DdlProveedores.SelectedText = GlobalDTCompProveedores(UsuarioActual.CveEmpresa).FiltraParametros($"CveProveedor = {objOC.CveProveedor}").Rows(0)("RazonSocial").ToString Else DdlProveedores.SelectedText = "-" End If 'CARGAMOS LA SUCURSAL SI NO EXISTE SE AGREGA MATRIZ Dim CveProveedorSucursal As Integer = IIf(objOC.CveProveedorSucursal.ToEntero = -1, 0, objOC.CveProveedorSucursal.ToEntero).ToString.ToEntero DivProveedorSucursal.Visible = True DdlProveedorSucursal.DataSource = GlobalDTProveedorSucursales(objOC.CveProveedor, UsuarioActual.CveEmpresa) DdlProveedorSucursal.DataBind() DdlProveedorSucursal.Items.Insert(0, New ListItem("Matriz", "0")) DdlProveedorSucursal.SelectedValueExist(CveProveedorSucursal) 'CARGA CONTACTOS DE LA SUCURSAL PROVEEDOR If objOC.CveProveedorContacto.ToEntero > 0 Then Dim ObjProveedor As ClsCompProveedores = New ClsCompProveedores DivProveedorContacto.Visible = True 'FILTRADO DE CONTACTOS GENERALES O DE MATRIZ SE HACE CON CVESUCURSAL = 0 If ObjProveedor.GetProveedoresContactos(-1, objOC.CveProveedor, CveProveedorSucursal) Then DdlProveedorContacto.DataSource = ObjProveedor.DtResultados DdlProveedorContacto.DataBind() DdlProveedorContacto.SelectedValueExist(objOC.CveProveedorContacto) End If ObjProveedor.Dispose() End If If objOC.CveUsuarioAsignado > 0 Then TrUsuarioAsignado.Visible = True LblUsuarioAsignado.Text = objOC.UsuarioAsignado End If 'CARGA VENTA RELACIONADA If objOC.GetVentasRelacionadas(pCveOrdenCompra) Then If objOC.DtResultados.Rows.Count > 0 Then DivVentaRelacionada.Visible = True GvVentaRelacionadas.DataSource = objOC.DtResultados End If End If 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 If DdlProveedores.SelectedValue.ToEntero > 0 Then DdlProveedores.SelectedText = GlobalDTCompProveedores(CveEmpresaActual).FiltraParametros($"CveProveedor = {objOC.CveProveedor}").Rows(0)("RazonSocial").ToString Else DdlProveedores.SelectedText = "-" End If If objOC.CveProveedorSucursal.ToEntero > 0 Then DivProveedorSucursal.Visible = True DdlProveedorSucursal.DataSource = GlobalDTProveedorSucursales(objOC.CveProveedor, CveEmpresaActual) DdlProveedorSucursal.DataBind() DdlProveedorSucursal.SelectedValueExist(objOC.CveProveedorSucursal.ToString) End If 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() '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(CveEmpresaActual).FiltraParametros(String.Format("Tipo = '{0}' ", TipoOC, objOC.CveEstatus, objOC.CveEstatusSiguiente)) CboE.DataSource = GlobalDTOCEstatus(CveEmpresaActual).FiltraParametros(String.Format("Tipo = '{0}' AND TipoTermino <> 2", TipoOC, objOC.CveEstatus, objOC.CveEstatusSiguiente)) CboE.DataBind() lblPendientes.Text = objOC.Pendiente.ToString If objOC.Pendiente > 0 Then If objOC.Pendiente > 1 Then lblPendientes.Text = objOC.Pendiente.ToString & " Articulos Pendientes de vincular." Else lblPendientes.Text = objOC.Pendiente.ToString & " Articulo Pendiente de vincular." End If TrPendientes.Visible = True Else TrPendientes.Visible = False End If CargaEstatusUsuarios() If CveEstatus = CveEstatusFinalError Then CboE.DataSource = GlobalDTOCEstatus(CveEmpresaActual).FiltraParametros(String.Format("Tipo = '{0}' ", TipoOC, objOC.CveEstatus, objOC.CveEstatusSiguiente)) CboE.DataBind() End If If objOC.GetOrdenesDetalle(pCveOrdenCompra) Then DtDetalle = objOC.DtResultados 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 If DtDetalle IsNot Nothing Then For Each Row As DataRow In DtDetalle.Rows If EditarOC AndAlso Row("CveOrdenCompraPadre").ToString.ToEntero > 0 Then EditarOC = False Exit For End If Next For Each Row As DataRow In DtDetalle.FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}).Rows If Row("CveSubProyecto").ToString.ToEntero > 0 AndAlso CveEstatus > 0 Then If DtEstatusUsuarios.FiltraParametros(String.Format("CveSubProyecto = {0} AND CveEstatus IN ({1},{2})", Row("CveSubProyecto"), CveEstatus, CveEstatusSiguiente)).Rows.Count = 0 Then 'RMF- 2016.06.02 - Cambio de CveEstatus, antes tenia CveEstatusSiguiente se cambio a CveEstatus. SubProyectosNoAutorizados.Add(Row("SubProyecto").ToString) CboE.BackColor = Drawing.Color.Silver CboE.Enabled = False GvD.Columns(10).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 TxtLugarEntregaDirecta.Enabled = False gvCotizaciones.Enabled = True DdlProveedores.Enabled = False DdlIVA.Enabled = False DdlUsoCFDI.Enabled = False ImgCambiaProv.Visible = False OCCancelable = 1 ' por default, es cancelable, sino tiene acceso le niego la cancelacion UPProv.Update() 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 TxtGrid.Text = If(DtDetalle.Rows.Count = 0, "", DtDetalle.Rows.Count.ToString) Else Alert($"Ocurrió un error al cargar los detalles de la {TipoLargo}. Por favor vuelva a intentar", TipoMensaje.MsgError) End If '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 Or CveEstatus = 0) Then GvD.Columns(10).Visible = True 'No permitir la edicion If ChkCotizacion.Checked AndAlso UsuarioActual.Empresa.Funcionalidad(565) = "1" Then ChkCotizacion.Enabled = False Else ChkCotizacion.Enabled = True End If TxtDescrip.Enabled = True TxtJustificacion.Enabled = True TxtFechaEstimadaEntrega.Enabled = True txtLugarEntrega.Enabled = True TxtLugarEntregaDirecta.Enabled = True gvCotizaciones.Enabled = True DdlProveedores.Enabled = True DdlUsoCFDI.Enabled = True DdlIVA.Enabled = True ImgCambiaProv.Visible = True UPProv.Update() End If If objOC.CveEstatus = 0 Then CboE.Items.Add(New ListItem("Pre Solicitud", "0")) ElseIf objOC.TipoTermino = 0 AndAlso objOC.Tipo = "REQ" Then ' no autorizada, está en proceso CboE.Items.Add(New ListItem("Pre Solicitud", "0")) End If 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 OrElse CveEstatus <> CveEstatusFinalOK OrElse UsuarioActual.TienePermisoProceso(148).ToEntero > 0) Then BtnCancelar.Enabled = True 'BtnCancelarPrevio.Disabled = False BtnCancelarPrevio.Enabled = True 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.ddl.SelectedValueExist(objOC.CveProveedor.ToString) DdlIVA.Enabled = True ImgCambiaProv.Visible = True UPProv.Update() End If If DdlProveedores.SelectedValue <> objOC.CveProveedor.ToString Then 'DdlProveedores.Items.Insert(1, New ListItem(GlobalDTCompProveedores(CveEmpresaActual).FiltroPrimeroValor("RazonSocial", $"CveProveedor = {objOC.CveProveedor}"), objOC.CveProveedor.ToString)) End If CargaCotizaciones(CveOrdenCompra) 'Si requiere cotizacion y el estatus siguiente es el final, desabilitar el combo del estatus If UsuarioActual.Empresa.Funcionalidad(556) = "1" AndAlso 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 BtnGuardar.Visible = True trAddDetalle.Visible = True fsSeguimiento.Visible = True fsHistorial.Visible = True CargaHistorial() '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 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=830;" 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(10).Visible = True 'Permitir la edicion ChkCotizacion.Enabled = True TxtDescrip.Enabled = True TxtJustificacion.Enabled = True TxtFechaEstimadaEntrega.Enabled = True txtLugarEntrega.Enabled = True TxtLugarEntregaDirecta.Enabled = True gvCotizaciones.Enabled = True DdlProveedores.Enabled = True DdlUsoCFDI.Enabled = True DdlIVA.Enabled = True ImgCambiaProv.Visible = True UPProv.Update() End If 'ASIGNA ESTATUS OC CboE_SelectedIndexChanged(New Object, New EventArgs) CargaDatosDetalles() '17-04-2018 - Si es OC registrada carga link a PopUpPaqueteriaGuia If ChkEntregaDirecta.Checked And CveOrdenCompra > 0 Then LnkAgregarGuia.Visible = True UpAcciones.Update() End If uppEstatus.Update() UPPEmp.Update() Else ViewState("Tipo") = "REQ" ViewState("TipoOC") = "REQ" ViewState("TipoLargo") = "Requisición" Alert("No se encontro la OC/REQ Solicitada.", TipoMensaje.MsgError) InicializarValores() End If objOC.Dispose() GvVentaRelacionadas.DataBind() 'CARGA MOVTOS DE ALMACEN InicializaMovtosAlmacen() If UsuarioActual.Empresa.Funcionalidad(565) = "1" And pCveOrdenCompra > 0 And TipoOC.ToUpper() = "REQ" Then 'LAS COTIZACIONES RAPIDAS SOLO DEBE APARECER SI EL PROVEEDOR ES DEDICADO If CveConfianzaProveedor = 1 Then RowCotizaciones.Visible = True End If UpIvas.Update() End If uppEstatus.Update() End Sub Protected Sub CargaHistorial() Dim ObjGral As New ClsGenerales If ObjGral.GetHistorialBitacora(-1, CveOrdenCompra, -1, -1, -1, -1, -1, UsuarioActual.CveEmpresa) Then ViewState("DtHistorial") = ObjGral.DtResultados GVH.DataSource = DtHistorial GVH.DataBind() uppHistorial.Update() End If Dim objOC As New ClsOC If objOC.GetOrdenesEstatus(CveOrdenCompra) Then gvEstatus.DataSource = objOC.DtResultados gvEstatus.DataBind() End If uppSeguimientoEstatus.Update() ObjGral.Dispose() 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 NumCotizaciones = 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) ProveedoresCotizacion = New ArrayList For Each Dr2 As DataRow In DtCotizaciones.Rows ProveedoresCotizacion.Add(Dr2("RazonSocial")) Next 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 UsuarioActual.Empresa.Funcionalidad(556) = "1" AndAlso 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 If NumCotizaciones > 0 Then HLImprimirCotizacion.Visible = True HLImprimirCotizacion.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=CotOC&CVEOC={0}", CveOrdenCompra))) End If End Sub #End Region #Region " CARGA C O M B O S " Private Sub CargaMonedas() DdlMoneda.DataSource = GlobalDTMonedas DdlMoneda.DataBind() If CveEmpresaActual.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 isWithFamily() Then DdlClasificacion.DataSource = GlobalDTSubFamilias(CveEmpresaActual).FiltraParametros("EstatusCategoria = 'Activo' AND Estatus = 'Activo'") Else DdlClasificacion.DataSource = GlobalDTClasificaciones(CveEmpresaActual) 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, CveEmpresaActual, -1), GlobalDTProyectos(CveEmpresaActual, -1)) 'DtEstatusUsuarios.FiltraParametros(String.Format("CveEmpresa = {0}", CveEmpresaActual), "", {"CveProyecto", "Proyecto"}) ' GlobalDTProyectos(UsuarioActual.Empresa.CveEmpresa) DdlProyecto.DataBind() DdlProyecto.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlProyectoContrato.Items.Clear() DdlProyectoContrato.DataSource = DtEstatusUsuarios.FiltraParametros("", "", {"CveProyecto", "Proyecto"}) 'If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTProyectosUsuarios(UsuarioActual.CveUsuario, -1, CveEmpresaActual, -1), GlobalDTProyectos(CveEmpresaActual, -1)) 'DtEstatusUsuarios.FiltraParametros(String.Format("CveEmpresa = {0}", CveEmpresaActual), "", {"CveProyecto", "Proyecto"}) ' GlobalDTProyectos(UsuarioActual.Empresa.CveEmpresa) DdlProyectoContrato.DataBind() DdlProyectoContrato.Items.Insert(0, New ListItem("Seleccione", "-1")) End Sub Private Sub CargaSubProyectos() Dim Filtro As String = If(DdlProyecto.SelectedValue.ToEntero > 0 AndAlso UsuarioActual.Empresa.Tipo_CentroCosto.Contiene(4, 5), String.Format("CveProyecto = {0}", DdlProyecto.SelectedValue.ToEntero), "") DdlSubProyecto.Items.Clear() DdlSubProyecto.DataSource = DtEstatusUsuarios.FiltraParametros(Filtro, "", {"CveSubProyecto", "SubProyecto"}) 'If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, DdlProyecto.SelectedValue.ToEntero, CveEmpresaActual, -1, 1), GlobalDTSubProyectos(DdlProyecto.SelectedValue.ToEntero, -1, CveEmpresaActual, 1)) 'DtEstatusUsuarios.FiltraParametros(Filtro, "", {"CveSubProyecto", "SubProyecto"}) ' GlobalDTSubProyectos(DdlProyecto.SelectedValue.ToEntero) 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.DataBind() End Sub Private Sub CargaProveedores() If UsuarioActual.Empresa.Funcionalidad(105) = "1" Then DdlProveedores.setEsWebService(True) DdlProveedores.Attributes.Add("data-metodo", "getproveedores") DdlProveedores.SelectedText = "Seleccione" DdlProveedores.SelectedValue = "-1" DdlProveedores.ddl.AutoPostBack = True DdlProveedorCot.setEsWebService(True) DdlProveedorCot.Attributes.Add("data-metodo", "getproveedores") Else DdlProveedores.DataSource = GlobalDTCompProveedores(CveEmpresaActual) DdlProveedores.DataBind() DdlProveedores.ddl.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlProveedores.ddl.AutoPostBack = True DdlProveedorCot.DataSource = GlobalDTCompProveedores(CveEmpresaActual) DdlProveedorCot.DataBind() DdlProveedorCot.ddl.Items.Insert(0, New ListItem("Seleccione", "-1")) End If UPProv.Update() : UPPEmp.Update() End Sub Private Sub CargaProveedorSucursal() DdlProveedores.DataSource = GlobalDTCompProveedores(CveEmpresaActual) DdlProveedores.DataBind() 'DdlProveedores.Items.Insert(0, New ListItem("Seleccione", "-1")) UPProv.Update() : UPPEmp.Update() End Sub Private Sub CargaEstatusOC() CboE.Items.Clear() 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(CveEmpresaActual).FiltraParametros(String.Format("TipoTermino = 3 AND Tipo = '{0}'", TipoOC)).Rows.Count = 1, GlobalDTOCEstatus(CveEmpresaActual).FiltraParametros(String.Format("TipoTermino = 3 AND Tipo = '{0}'", TipoOC)).Rows(0), Nothing) Dim drFinalOK As DataRow = If(GlobalDTOCEstatus(CveEmpresaActual).FiltraParametros(String.Format("TipoTermino = 1 AND Tipo = '{0}'", TipoOC)).Rows.Count = 1, GlobalDTOCEstatus(CveEmpresaActual).FiltraParametros(String.Format("TipoTermino = 1 AND Tipo = '{0}'", TipoOC)).Rows(0), Nothing) Dim drFinalError As DataRow = If(GlobalDTOCEstatus(CveEmpresaActual).FiltraParametros(String.Format("TipoTermino = 2 AND Tipo = '{0}'", TipoOC)).Rows.Count = 1, GlobalDTOCEstatus(CveEmpresaActual).FiltraParametros(String.Format("TipoTermino = 2 AND Tipo = '{0}'", TipoOC)).Rows(0), Nothing) Dim drSupervisada As DataRow = If(GlobalDTOCEstatus(CveEmpresaActual).FiltraParametros(String.Format("TipoTermino = 0 AND Tipo = '{0}'", TipoOC)).Rows.Count = 1, GlobalDTOCEstatus(CveEmpresaActual).FiltraParametros(String.Format("TipoTermino = 0 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 = "" If Not drSupervisada Is Nothing Then CveEstatusSupervisada = drSupervisada("CveEstatus").ToString.ToEntero End Sub Private Sub CargaComboCFDI() DdlUsoCFDI.DataSource = GlobalDTSATUsosCFDI DdlUsoCFDI.DataBind() 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 CargaPS(DdlClasificacion.SelectedValue.ToEntero, DdlP2) 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 ' filtro = String.Format("CveClasificacion={0}", CveClasificacion) Gvr.FCDropDownList("DdlPS").Items.Clear() Gvr.FCDropDownList("DdlPS").DataSource = GlobalDTPSSimplificado(CveEmpresaActual, CveClasificacion:=CveClasificacion).FiltraParametros("", "PSCodigo") Gvr.FCDropDownList("DdlPS").DataBind() Gvr.FCDropDownList("DdlPS").Items.Insert(0, New ListItem("Seleccione el Producto", "-1")) 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") Dim TxtPU As TextBox = Gvr.FCTextBox("TxtImporteEdit") CboUM.DataSource = GlobalDTProductosServiciosEquivalencias(Cvepsgvd, -1, UsuarioActual.CveEmpresa) 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 ADServerControl.Dropdownlost) 'Dim filtro As String = "" 'If CveClasificacion > 0 Then ' ' If isWithFamily() Then ' ' filtro = String.Format("CveSubFamilia={0}", CveClasificacion) ' ' Else ' filtro = String.Format("CveClasificacion={0}", CveClasificacion) ' 'End If 'Else ' ' If isWithFamily() Then ' ' filtro = "CveSubFamilia > -1" ' ' Else ' filtro = "CveClasificacion > -1" ' ' End If 'End If If UsuarioActual.Empresa.Funcionalidad(105) = "1" Then Objeto.ddlWS.Attributes.Add("data-cveclasificacion", CveClasificacion.ToString) ' Objeto.ddlWS.Attributes.Add("data-pagina", "oc/oc") Objeto.SelectedText = "" Objeto.SelectedValue = "-1" Else Objeto.ddl.Items.Clear() Objeto.ddl.DataSource = GlobalDTPSSimplificado(CveEmpresaActual, CveClasificacion:=CveClasificacion).FiltraParametros("", "PSCodigo") Objeto.ddl.DataBind() 'Objeto.Items.Insert(0, New ListItem("*** Actualizar listado de Productos o Servicios ***", "-2")) Objeto.ddl.Items.Insert(0, New ListItem("Seleccione el Producto", "-1")) End If End Sub Protected Sub HFProducto_ValueChanged(sender As Object, e As EventArgs) Handles DdlP2.selectedindexchange Dim tempdt As DataTable = GlobalDTPS(CveEmpresaActual, CvePS:=DdlP2.SelectedValue.ToEntero) If tempdt.Rows.Count > 0 Then If isWithFamily() Then DdlClasificacion.SelectedValueExist(tempdt.Rows(0)("CveSubFamilia").ToString) Else DdlClasificacion.SelectedValueExist(tempdt.Rows(0)("CveClasificacion").ToString) End If CboUnidadMedida.Items.Clear() CboUnidadMedida.DataSource = GlobalDTProductosServiciosEquivalencias(DdlP2.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa) CboUnidadMedida.DataBind() If CveEmpresaActual = 119 Then txtPrecioUnitario.Text = GlobalDTPS(CveEmpresaActual, CvePS:=DdlP2.SelectedValue.ToEntero).FiltroPrimeroValor("Precio") ElseIf CveEmpresaActual.Contiene(72, 80) Then Dim ObjOC As New ClsOC If ObjOC.GetUltimoCostoPS(DdlP2.SelectedValue.ToEntero) Then If ObjOC.DtResultados.Rows.Count.ToEntero > 0 Then LblUltimoCosto.Visible = True LblUltimoCosto.Text = $"UC: {ObjOC.DtResultados(0)("UltimoCosto").ToString.FormatoNumero}" Else LblUltimoCosto.Visible = False LblUltimoCosto.Text = "" End If End If ObjOC.Dispose() End If End If End Sub #End Region #Region " AGREGAR " Protected Sub LbAgregar_Click(sender As Object, e As EventArgs) Handles LbAgregar.Click 'VALIDA CVEPS If DdlP2.SelectedValue().ToEntero <= 0 Then Alert("El campo 'Producto/Servicio' es necesario, por favor seleccione uno.", TipoMensaje.MsgAdvertencia) Exit Sub End If 'Valida cantidad en contrato Dim TieneError As Boolean = False Dim dttemp As New DataTable ' GlobalDTContratos().FiltraParametros(String.Format("CveSubProyecto = {0}", DdlSubProyecto.SelectedValue.ToString)) dttemp.Columns.Add("CveSubProyecto", GetType(Integer)) dttemp.Columns.Add("CvePS", GetType(Integer)) dttemp.Columns.Add("Cantidad", GetType(Decimal)) dttemp.Columns.Add("PU", GetType(Decimal)) Dim DrPSValidar = dttemp.NewRow DrPSValidar("CveSubProyecto") = DdlSubProyecto.SelectedValue.ToString.ToEntero DrPSValidar("CvePS") = DdlP2.SelectedValue.ToString.ToEntero DrPSValidar("Cantidad") = TxtCant.Text.Trim.ToDecimal DrPSValidar("PU") = txtPrecioUnitario.Text.Trim.ToDecimal dttemp.Rows.Add(DrPSValidar) If UsuarioActual.Empresa.Funcionalidad(545) = "1" Then Dim dtPSInvalidos As String = ValidarPSContrato(dttemp) If dtPSInvalidos <> "" Then Alert(dtPSInvalidos, TipoMensaje.MsgAdvertencia) Exit Sub End If End If If DtDetalle IsNot Nothing Then Dim DrPS = GlobalDTPS(CveEmpresaActual, CvePS:=DdlP2.SelectedValue.ToEntero).FiltroPrimero("") If DrPS Is Nothing Then Alert("Ocurrió un error al cargar la información del producto. Por favor vuelva a intentar.", TipoMensaje.MsgAdvertencia) Exit Sub End If If UsuarioActual.Empresa.Funcionalidad(532) = "1" Then Dim ObjCon As New ClsContratos Dim CvePresupuesto As Integer = 0 Dim Autorizado As Decimal = 0 Dim Ejercido As Decimal = 0 If ObjCon.GetPresupuestos(-1, "-1", DdlSubProyecto.SelectedValue.ToEntero, 2, -1, UsuarioActual.CveEmpresa) Then If ObjCon.DtResultados.Rows.Count > 0 Then CvePresupuesto = ObjCon.DtResultados.Rows(0)("CvePresupuesto").ToString.ToEntero If CvePresupuesto > 0 Then If ObjCon.GetPresupuestosDetalle(CvePresupuesto, -1, UsuarioActual.CveEmpresa) Then If ObjCon.DtResultados.FiltraParametros($"CveClasificacion = {DdlClasificacion.SelectedValue.ToEntero} AND Importe > 0").Rows.Count > 0 Then Autorizado = ObjCon.DtResultados.FiltraParametros($"CveClasificacion = {DdlClasificacion.SelectedValue.ToEntero} AND Importe > 0").Rows(0)("Importe").ToString.ToDecimal End If End If If ObjCon.GetPresupuestosRep(CvePresupuesto, -1, 1, $"01/09/{DateTime.Now.Year - 1}".ToDate, Now, UsuarioActual.CveEmpresa, DdlProyecto.SelectedValue.ToEntero, DdlSubProyecto.SelectedValue.ToEntero, UsuarioActual.CveUsuario, DdlClasificacion.SelectedValue.ToEntero) Then If ObjCon.DtResultados.Rows.Count > 0 Then Ejercido = ObjCon.DtResultados.Rows(0)("Ejercido").ToString.ToDecimal End If End If End If End If End If ObjCon.Dispose() If CvePresupuesto > 0 And Autorizado > 0 Then Dim Diferencia As Decimal = (Ejercido + If(txtPrecioUnitario.Text.ToDecimal > 0, (txtPrecioUnitario.Text.ToDecimal * TxtCant.Text.ToDecimal) - TxtDescuentoAdd.Text.ToDecimal, 0)) - Autorizado If Diferencia > 0 Then Alert($"No hay presupuesto disponible en el subproyecto {DdlSubProyecto.SelectedItem.Text} y la clasificación {DdlClasificacion.SelectedItem.Text} se excede por {Diferencia.FormatoNumero}", TipoMensaje.MsgAdvertencia) Exit Sub End If End If End If Dim RetISR As Decimal = DrPS("RetISR").ToString.ToDecimal Dim RetIVA As Decimal = DrPS("RetIVA").ToString.ToDecimal Dim IvaPS As Decimal = DrPS("IVA").ToString.ToDecimal 'If IvaPS = -1 Then 'IVA DE LA SUCURSAL ' IvaPS = GlobalDTSubProyectos(-1, DdlSubProyecto.SelectedValue.ToEntero).FiltroPrimeroValor("IVA").ToDecimal 'End If Dim IEPSPS As Decimal = DrPS("IEPSPorcentaje").ToString.ToDecimal Dim IEPSPSIVA As Decimal = If(DrPS("IEPSGrabaIVA").ToString = "True", DrPS("IEPSPorcentaje").ToString.ToDecimal, 0) Dim IdCuentaPorEjercer As Integer = If(HdnCveCuentaPorEjercer.Value = String.Empty, -1, HdnCveCuentaPorEjercer.Value.ToEntero) Dim IdCuentaComprometido As Integer = If(HdnCveCuentaComprometido.Value = String.Empty, -1, HdnCveCuentaComprometido.Value.ToEntero) Dim Proyecto As String = If(DdlProyecto.SelectedValue.ToString.ToEntero > 0, DdlProyecto.SelectedItem.Text, "Sin Proyecto") Dim SubProyecto As String = If(DdlSubProyecto.SelectedValue.ToString.ToEntero > 0, DdlSubProyecto.SelectedItem.Text, "Sin SubProyecto") Dim TotalPS As Decimal = If(txtPrecioUnitario.Text.ToDecimal > 0, (txtPrecioUnitario.Text.ToDecimal * TxtCant.Text.ToDecimal) - TxtDescuentoAdd.Text.ToDecimal, 0) Dim ImportePS As Decimal = If(txtPrecioUnitario.Text.ToDecimal > 0, txtPrecioUnitario.Text.ToDecimal, 0) Dim CveOrdenCompraDetalle As Integer = DtDetalle.MAX("CveOrdenCompraDetalle").ToEntero + 100 Dim CantidadVentaMinima As Decimal = DrPS("VentaMinima").ToString.ToDecimal If CantidadVentaMinima > 0 AndAlso TxtCant.Text.ToDecimal > 0 Then If TxtCant.Text.ToDecimal Mod CantidadVentaMinima <> 0 Then Alert(String.Format("El producto se vende solo en cantidades de {0:####.####}", CantidadVentaMinima)) Exit Sub End If End If 'Si es Proveedor Extranjero el IVA es 0% If GlobalDTCompProveedores(CveEmpresaActual).FiltraParametros($"CveProveedor = {DdlProveedores.SelectedValue} AND RFC = 'XEXX010101000'").Rows.Count = 1 Then IvaPS = 0 End If AddPS(TxtCant.Text, DdlP2.SelectedValue.ToEntero, DdlP2.SelectedText, TxtObsPS.Text, ImportePS, TxtDescuentoAdd.Text.ToDecimal, TotalPS, CboUnidadMedida.SelectedValue.ToEntero, IvaPS, IEPSPS, IEPSPSIVA, DdlClasificacion.SelectedValue.ToEntero, CboUnidadMedida.SelectedItem.Text, DdlClasificacion.SelectedItem.Text, DdlProyecto.SelectedValue.ToEntero, Proyecto, DdlSubProyecto.SelectedValue.ToEntero, SubProyecto, LblCodigo.Text, HdnCveActivoFijo.Value.ToEntero, 0, CveOrdenCompraDetalle, CveOrdenCompra, IdCuentaPorEjercer, IdCuentaComprometido, DdlACGeneral1.SelectedValue.ToEntero, DdlACGeneral2.SelectedValue.ToEntero, DdlACGeneral3.SelectedValue.ToEntero, DdlACGeneral4.SelectedValue.ToEntero, DdlACGeneral5.SelectedValue.ToEntero, RetIVA, RetISR, CveCultivoCuadroDetalle:=DdlCultivosCuadro.SelectedValue.ToEntero, Cuadro:=DdlCultivosCuadro.SelectedItem.Text) 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() Total.Text = "0.00" TxtDescuentoAdd.Text = "0.00" End If CargaSuperior() CargaDatosDetalles() UPPDetalle.Update() End Sub Private Sub AddPS(Cantidad As String, CvePS As Integer, PS As String, Observaciones As String, Importe As Decimal, Descuento As Decimal, Total As Decimal, CveUnidadMedida As Integer, IVAPS As Decimal, IEPSPS As Decimal, IEPSPSIVA As Decimal, CveClasificacion As Integer, UM As String, Clasificacion As String, CveProyecto As Integer, Proyecto As String, CveSubProyecto As Integer, SubProyecto As String, CodigoAF As String, CveActivoFijo As Integer, TipoDato As Integer, CveOrdenCompraDetalle As Integer, CveOrdenCompra As Integer, IdCuentaPorEjercer As Integer, IdCuentaComprometido As Integer, CveProgramaOperativo As Integer, CveUnidadAdministrativa As Integer, CveFuenteFinanciamiento As Integer, CveTipoGasto As Integer, CveClasificacionOG As Integer, RetIVA As Decimal, RetISR As Decimal, Optional CveContratoDetalle As Integer = -1, Optional CveTipoGastoObra As Integer = -1, Optional CveCultivoCuadroDetalle As Integer = -1, Optional Cuadro As String = "") If DtDetalle IsNot Nothing Then Dim dr As DataRow = DtDetalle.NewRow dr("Cantidad") = Cantidad dr("CvePS") = CvePS dr("PS") = PS dr("Observacion") = Observaciones dr("Importe") = Math.Round(Importe, 6) dr("Descuento") = Descuento dr("Total") = Math.Round(Total, 2) dr("CveUnidadMedida") = CveUnidadMedida dr("IEPSPSPorcentaje") = IEPSPS dr("IEPSPS") = Math.Round(IEPSPS * Total, 2) dr("IEPSPSIVAPorcentaje") = IEPSPSIVA dr("IEPSPSIVA") = Math.Round(IEPSPSIVA * Total, 2) dr("IVAPorcentaje") = If(IVAPS = -1, Math.Round(DdlIVA.SelectedValue.ToDecimal - 1, 2), IVAPS) Dim TotalGravado As Decimal = Total If IEPSPSIVA > 0 Then TotalGravado = Total * (1 + IEPSPSIVA) 'grava para iva, el importe del IEPS dr("IVA") = Math.Round(dr("IVAPorcentaje").ToString.ToDecimal * TotalGravado, 2) dr("RetIVAPorcentaje") = RetIVA dr("RetIVA") = Math.Round(RetIVA * Total, 2) dr("RetISRPorcentaje") = RetISR dr("RetISR") = Math.Round(RetISR * Total, 2) dr("CveClasificacion") = CveClasificacion dr("UM") = UM dr("Clasificacion") = Clasificacion If isWithFamily() Then dr("CveSubFamilia") = dr("CveClasificacion") dr("SubFamilia") = dr("Clasificacion") End If If UsuarioActual.Empresa.Tipo_CentroCosto = 1 Or UsuarioActual.Empresa.Tipo_CentroCosto = 2 Then dr("CveProyecto") = "-1" dr("Proyecto") = "Sin Proyecto" Else If CveSubProyecto > 0 Then dr("CveProyecto") = CveSubProyecto dr("Proyecto") = Proyecto End If End If dr("CveSubProyecto") = CveSubProyecto dr("SubProyecto") = SubProyecto dr("CodigoAF") = CodigoAF dr("CveActivoFijo") = CveActivoFijo dr("TipoDato") = 0 ' Tipo Dato '0' es Cuando es Nuevo, '1' para editar y '2' viene de la BD dr("CveOrdenCompraDetalle") = CveOrdenCompraDetalle dr("CveOrdenCompra") = CveOrdenCompra dr("IdCuentaPorEjercer") = IdCuentaPorEjercer dr("IdCuentaComprometido") = IdCuentaComprometido dr("CveProgramaOperativo") = CveProgramaOperativo dr("CveUnidadAdministrativa") = CveUnidadAdministrativa dr("CveFuenteFinanciamiento") = CveFuenteFinanciamiento dr("CveTipoGasto") = CveTipoGasto dr("CveClasificacionOG") = CveClasificacionOG dr("CveContratoDetalle") = CveContratoDetalle dr("CveTipoGastoObra") = CveTipoGastoObra dr("CveCultivoCuadroDetalle") = CveCultivoCuadroDetalle dr("Cuadro") = Cuadro DtDetalle.Rows.Add(dr) DtDetalle.AcceptChanges() End If End Sub #End Region #Region " GUARDAR " Private Function ValidaGuardar() As Boolean Dim TieneError = False 'Entrega Directa requiere Cliente y Vendedor If ChkEntregaDirecta.Checked And Ddlcliente.txtValue.Value.ToEntero <= 0 Then Alert("Al ser una Entrega Directa es necesario seleccionar un cliente, por favor seleccione uno.") Return True End If 'VALIDA QUE TENGA REGISTROS If Not GvD.Rows.Count > 0 Then Alert(String.Format("La {0} debe de tener registros", TipoLargo), TipoMensaje.MsgAdvertencia) Return True End If 'VALIDA DESCUENTOS If Not ValidarDescuentos() Then 'Alert("Los descuentos no cuadran. Por favor de verificar.", TipoMensaje.MsgAdvertencia) Return True End If If Ddlcliente.txtValue.Value.ToEntero > 0 And DdlVendedor.SelectedValue.ToEntero <= 0 Then Alert("Debe de seleccionar Un vendedor ", TipoMensaje.MsgAdvertencia) TieneError = 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 Not UsuarioActual.TienePermisoProceso(179) Then 'PERMISO PARA GENERAR CON O ' 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 '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(TxtFecha.Text.ToDate).ToString.ToDecimal), TotalT) If RequiereSubProyecto = True AndAlso CboE.SelectedValue.ToEntero > 0 Then ' cuando se cumpla la restriccion y no sea "Pre Solicitud" If DdlMoneda.SelectedValue <> "1" And GlobalTipoCambio(TxtFecha.Text.ToDate).ToString.ToDecimal = 0 Then Alert("No se pudieron verificar los limites del usuario porque no se pudo cargar el tipo de cambio", TipoMensaje.MsgAdvertencia) Return True End If 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)) If UsuarioActual.CveUsuario <> 100 Then 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(TxtFecha.Text.ToDate)), FormatCurrency(SubPAut.Rows(0)("LimiteSuperior").ToString.ToDecimal / GlobalTipoCambio(TxtFecha.Text.ToDate)))) If UsuarioActual.CveUsuario <> 100 Then TieneError = True End If Next If ChkCotizacion.Checked = True And SubProyectosNoAutorizados.Count > 0 Then SubProyectosNoAutorizados.Add(String.Format("

Total de Cotizaciones: {0}", FormatCurrency(TotalT))) End If If TieneError Then If SubProyectosNoAutorizados.Count > 0 Then Dim ss As String = "" For Each S As String In SubProyectosNoAutorizados ss += "
- " + S Next Alert(String.Format("No está autorizado a modificar el SubProyecto
{0}", ss), TipoMensaje.MsgAdvertencia) End If End If End If Dim PermisoActual As DataTable For Each row As GridViewRow In GvD.Rows If row.DataKey("SubProyecto").ToString = "Seleccione" Then TieneError = True Alert("El campo SubProyecto es obligatorio.", TipoMensaje.MsgAdvertencia) Exit For End If 'SI TIENE ALGUN PERMISO SE VALIDA, SI NO TIENE NINGUNA ES LIBRE If DtEstatusUsuariosClasificaciones IsNot Nothing AndAlso DtEstatusUsuariosClasificaciones.Rows.Count > 0 Then PermisoActual = DtEstatusUsuariosClasificaciones.FiltraParametros($"CveClasificacion = {row.DataKey("CveClasificacion")} AND CveSubProyecto = {row.DataKey("CveSubProyecto")} AND CveEstatus = {CboE.SelectedValue}") If PermisoActual.Rows.Count = 1 Then 'SI TIENE LIMITE INFERIOR SE VALIDA QUE ESTE EN EL RANGO If PermisoActual.Rows(0)("LimiteInferior").ToString.ToDecimal > 0 Then If Not row.DataKey("Importe").ToString.ToDecimal >= PermisoActual.Rows(0)("LimiteInferior").ToString.ToDecimal Then Alert($"No está autorizado a modificar el SubProyecto {row.DataKey("CveClasificacion")} con la Clasificación {row.DataKey("SubProyecto")}. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) If UsuarioActual.CveUsuario <> 100 Then TieneError = True Exit For End If End If 'SI TIENE LIMITE SUPERIOR SE VALIDA QUE ESTE EN EL RANGO If PermisoActual.Rows(0)("LimiteSuperior").ToString.ToDecimal > 0 Then If Not row.DataKey("Importe").ToString.ToDecimal <= PermisoActual.Rows(0)("LimiteSuperior").ToString.ToDecimal Then Alert($"No está autorizado a modificar el SubProyecto {row.DataKey("CveClasificacion")} con la Clasificación {row.DataKey("SubProyecto")}. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) If UsuarioActual.CveUsuario <> 100 Then TieneError = True Exit For End If End If Else Alert($"No está autorizado a modificar el SubProyecto {row.DataKey("SubProyecto")} con la Clasificación {row.DataKey("Clasificacion")}. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) If UsuarioActual.CveUsuario <> 100 Then TieneError = True Exit For End If End If Next If ChkEntregaDirecta.Checked And ((TxtLugarEntregaDirecta.Visible = True And TxtLugarEntregaDirecta.Text.Trim = "") Or (DdlDireccionEnvio.Visible = True And Not DdlDireccionEnvio.SelectedValue.ToEntero > 0)) Then TieneError = True Alert("El campo Lugar Entrega es obligatorio. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) End If If TipoOC = "REQ" And CveOrdenCompra > 0 Then Dim ObjOC As New ClsOC If ObjOC.GetOC(CveOrdenCompra, CveEmpresaActual, CveUsuario:=UsuarioActual.CveUsuario) Then ViewState("CveEstatus") = ObjOC.CveEstatus End If ObjOC.Dispose() If CveEstatus = CveEstatusFinalOK Then Alert("La requisición ya fue autorizada por otro usuario u otra sesión. Favor de verificar.", TipoMensaje.MsgAdvertencia, "location.reload();") TieneError = True 'Response.Redirect(HttpContext.Current.Request.Url.ToString(), True) End If End If 'Valida que este seleccionada una sucursal si el proveedor tiene una If DivProveedorSucursal.Visible = True And DdlProveedorSucursal.SelectedValue.ToEntero = -1 Then Alert("Tiene que seleccionar la sucursal del proveedor.", TipoMensaje.MsgAdvertencia) TieneError = True End If 'Valida que tenga proveedore If (EsNuevo = True AndAlso TipoOC.ToUpper = "OC") AndAlso DdlProveedores.SelectedValue.ToEntero() <= 0 Then Alert("Debe seleccionar un proveedor.", TipoMensaje.MsgAdvertencia) TieneError = True End If 'VALIDA QUE ANTES DE QUE PUEDA MANDARLA A SUPERVISADA SE TIENE QUE SELECCIONAR UN PROVEEDOR If UsuarioActual.Empresa.Funcionalidad(565) = "1" Then If (TipoOC.ToUpper = "REQ" And CboE.SelectedValue.ToEntero.Contiene(CveEstatusSupervisada, CveEstatusFinalOK)) AndAlso DdlProveedores.SelectedValue.ToEntero() <= 0 Then Alert("Debe seleccionar un proveedor.", TipoMensaje.MsgAdvertencia) TieneError = True End If End If 'VALIDA QUE TENGA LAS COTIZACIONES QUE DEBEN TENER If UsuarioActual.Empresa.Funcionalidad(565) = "1" AndAlso (TipoOC.ToUpper = "REQ" And CveEstatusFinalOK = CboE.SelectedValue.ToEntero) Then If CveConfianzaProveedor > 0 Then 'SUMA EL TOTAL DE COTIZACIONES For Each GvRow As GridViewRow In GvBitacoraEva.Rows If GvRow.RowType = DataControlRowType.DataRow Then Me.NumCotizacionesEvaluar += 1 End If Next Me.NumCotizacionesEvaluar += Me.NumCotizaciones If CveConfianzaProveedor = 1 AndAlso Me.NumCotizacionesEvaluar < 1 Then Alert("Para el proveedor seleccionado es necesario tener al menos 1 cotización.", TipoMensaje.MsgAdvertencia) TieneError = True ElseIf CveConfianzaProveedor = 2 AndAlso Me.NumCotizacionesEvaluar < 2 Then Alert("Para el proveedor seleccionado es necesario tener al menos 2 cotizaciones", TipoMensaje.MsgAdvertencia) TieneError = True End If End If End If If Not UsuarioActual.Empresa.Funcionalidad(565) = "1" Then If ChkCotizacion.Checked And DtDetalle.FiltraParametros("ISNULL(CveProveedor,0) <= 0", "CveProveedor").Rows.Count > 0 Then Alert("Todos los conceptos de la Requisición deben tener proveedor ganador seleccionado.", TipoMensaje.MsgAdvertencia) TieneError = True End If End If 'VALIDAR PORCENTAJES DE IVA Dim PorcentajeIVA As Decimal = DdlIVA.SelectedValue.ToDecimal() - 1 Dim PorcentajeIVADetalle As Decimal = Me.DtDetalle.MAX("IVAPorcentaje", "IVAPorcentaje > 0").ToDecimal() If PorcentajeIVADetalle > 0 AndAlso (PorcentajeIVA <> PorcentajeIVADetalle) Then Alert("El IVA de los conceptos no coincide con el IVA a facturar.", TipoMensaje.MsgAdvertencia) TieneError = True End If If UsuarioActual.Empresa.Funcionalidad(545) = "1" Then Dim dtPSInvalidos As String = ValidarPSContrato(DtDetalle.FiltraParametros("", "", {"CveSubProyecto", "CvePS", "Cantidad", "PU"})) If dtPSInvalidos <> "" Then Alert(dtPSInvalidos, TipoMensaje.MsgAdvertencia) TieneError = True End If End If Return TieneError End Function Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) Handles BtnGuardar.Click 'VALIDACIONES PARA GUARDAR If ValidaGuardar() Then Exit Sub Dim MsgError As String = "Hubo un error al registrar" 'VARIABLES Dim CveProveedorSucursal As Integer = -1 Dim CveProveedorContacto As Integer = -1 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 = "" Dim Promocion = TxtPromocion.Text.Trim 'EMPIEZA OBJETOS Y TRASACCIONES Dim OC As New ClsOC Dim OCBitacora As New ClsOIEventos(OC.IniciaTransacSQL()) Dim ObjInventarios As New ClsInventarios(OC.IniciaTransacSQL()) Dim ObjConta As New ClsContabilidad(OC.IniciaTransacSQL()) Dim ObjVentas As New ClsVentas(OC.IniciaTransacSQL()) Dim Conta As ClsContPAQi = Nothing If (UsuarioActual.Empresa.UsaAC AndAlso VerificaPresupuesto) Or UsuarioActual.Empresa.Funcionalidad(200) = "1" Then Conta = New ClsContPAQi(UsuarioActual.Empresa) Conta.IniciaTransacSQL() End If 'LUGAR ENTREGA Dim LugarEntrega = If(txtLugarEntrega.Text.Trim = "", "-1", txtLugarEntrega.Text.Trim) LugarEntrega = If(DivLugarEntrega1.Visible, LugarEntrega, If(TxtLugarEntregaDirecta.Visible, TxtLugarEntregaDirecta.Text.Trim, "")) 'GUARDA' 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) 'If Request("Tipo") IsNot Nothing AndAlso Request("Tipo") = "Req" AndAlso TipoOC = "OC" Then ' CveEstatusNuevo = If(TipoOC = "OC", CveEstatusInicialOC, CboE.SelectedValue.ToEntero) ' Else 'CveEstatusNuevo = If(TipoOC = "OC", CboE.SelectedValue.ToEntero, CveEstatusInicialOC) 'End If End If 'siempre se esta guardando el proveedor If Not ChkCotizacion.Checked OrElse (UsuarioActual.Empresa.Funcionalidad(565) = "1" AndAlso CveConfianzaProveedor > 0) Then CveProveedor = DdlProveedores.SelectedValue.ToEntero CveProveedorSucursal = DdlProveedorSucursal.SelectedValue.ToEntero CveProveedorContacto = IIf(DdlProveedorContacto.SelectedValue.ToEntero = 0, "-1", DdlProveedorContacto.SelectedValue).ToString.ToEntero End If 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), LugarEntrega, UsuarioActual.CveUsuario, CveEmpresaActual, GvD.Rows(0).FCHiddenField("HdnCvePresupuestoEgreso").Value.ToString.ToEntero, pCveProveedor:=CveProveedor, pCveProveedorSucursal:=CveProveedorSucursal, RequiereCotizacion:=ChkCotizacion.Checked, CveCliente:=Ddlcliente.txtValue.Value.ToEntero, CveVendedor:=DdlVendedor.SelectedValue.ToEntero, PrioridadObservacion:=txtobsprioridad.Text, PorcentajeIVA:=Math.Round(DdlIVA.SelectedValue.ToDecimal - 1, 2), IVA:=IVA, RetIVA:=TxtRetIVA.Text.ToDecimal, RetISR:=TxtRetISR.Text.ToDecimal, CveCotizacion:=CveCotizacion, FolioAdicional:=TxtFolioAdicional.Text, EntregaDirecta:=If(ChkEntregaDirecta.Checked, 1, -1), CveDireccionEnvio:=If(DdlDireccionEnvio.Visible, DdlDireccionEnvio.SelectedValue.ToEntero, -1), Guia:=TxtGuia.Text.Trim, IEPS:=TxtIEPS.Text.ToDecimal, UsoCFDI:=DdlUsoCFDI.SelectedValue.ToEntero, Promocion:=Promocion, CveProveedorContacto:=CveProveedorContacto) Then CveOrdenCompraPadre = OC.CveOrdenCompra If CveOrdenCompraPadre > 0 Then For Each dr As DataRow In DtDetalle.Rows If Not OC.AddOrdenCompraDetalle(CveOrdenCompraPadre, dr("Cantidad").ToString.ToDecimal(), dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, dr("Importe").ToString.ToDecimal, dr("CveSubProyecto").ToString.ToEntero(), dr("CveActivoFijo").ToString.ToEntero, dr("Observacion").ToString, UsuarioActual.CveUsuario, Descuento:=dr("Descuento").ToString.ToDecimal, IEPSPS:=dr("IEPSPS").ToString.ToDecimal, IEPSPSIVA:=dr("IEPSPSIVA").ToString.ToDecimal, IVA:=dr("IVA").ToString.ToDecimal, RetIVA:=dr("RetIVA").ToString.ToDecimal, RetISR:=dr("RetISR").ToString.ToDecimal, Total:=dr("Total").ToString.ToDecimal, CveContratoDetalle:=dr("CveContratoDetalle").ToString.ToEntero, IVAPorcentaje:=dr("IVAPorcentaje").ToString.ToDecimal, RetIVAPorcentaje:=dr("RetIVAPorcentaje").ToString.ToDecimal, RetISRPorcentaje:=dr("RetISRPorcentaje").ToString.ToDecimal, IEPSPSPorcentaje:=dr("IEPSPSPorcentaje").ToString.ToDecimal, IEPSPSIVAPorcentaje:=dr("IEPSPSIVAPorcentaje").ToString.ToDecimal, CveTipoGastoObra:=dr("CveTipoGastoObra").ToString.ToEntero, CveCultivoCuadroDetalle:=dr("CveCultivoCuadroDetalle").ToString.ToEntero) Then TieneError = True Exit For End If Next Else TieneError = True End If TipoOC = "OC" Else TieneError = True 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), LugarEntrega, UsuarioActual.CveUsuario, CveEmpresaActual, GvD.Rows(0).FCHiddenField("HdnCvePresupuestoEgreso").Value.ToString.ToEntero, pCveProveedor:=CveProveedor, pCveProveedorSucursal:=CveProveedorSucursal, RequiereCotizacion:=ChkCotizacion.Checked, CveUsuarioAsignado:=DdlUsuariosAsignado.SelectedValue.ToEntero, CveCliente:=Ddlcliente.txtValue.Value.ToEntero, CveVendedor:=DdlVendedor.SelectedValue.ToEntero, PrioridadObservacion:=txtobsprioridad.Text, PorcentajeIVA:=Math.Round(DdlIVA.SelectedValue.ToDecimal - 1, 2), IVA:=IVA, RetIVA:=TxtRetIVA.Text.ToDecimal, RetISR:=TxtRetISR.Text.ToDecimal, CveCotizacion:=CveCotizacion, FolioAdicional:=TxtFolioAdicional.Text, EntregaDirecta:=If(ChkEntregaDirecta.Checked, 1, -1), CveDireccionEnvio:=If(DdlDireccionEnvio.Visible, DdlDireccionEnvio.SelectedValue.ToEntero, -1), Guia:=TxtGuia.Text.Trim, IEPS:=TxtIEPS.Text.ToDecimal, CveIEAnticipo:=CveIEAnticipo, ImporteAnticipo:=ImporteAnticipos, UsoCFDI:=DdlUsoCFDI.SelectedValue.ToEntero, Promocion:=Promocion, CveProveedorContacto:=CveProveedorContacto) Then CveOrdenCompra = OC.CveOrdenCompra CveEstatus = CboE.SelectedValue.ToEntero If TipoOC = "OC" And CboE.SelectedValue.ToEntero > 0 Then ''''' '17/04/2018 - Se cambia por nuevo esquema de paqueterias guias. 'ENTREGA FORANEOS 'If ChkEntregaDirecta.Checked Then ' If Not ObjInventarios.AddEntregaForanea("", False, 1, UsuarioActual.CveEmpresa, CveOrdenCompra) Then ' TieneError = True ' End If 'End If If Not TieneError Then CveOCGeneradas.Add(CveOrdenCompra) FolioOCGeneradas.Add(OC.Folio) End If End If Folio = OC.Folio Else TieneError = True 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, CveOrdenCompra, Folio) <= 0 Then TieneError = True End If End If End If 'TERMINA: USA AC 'AGREGA BITACORA TEMPORAL If DtBitacora IsNot Nothing AndAlso DtBitacora.Rows.Count > 0 Then TieneError = GuardaBitacoraTemporal(OCBitacora) End If For Each dr As DataRow In DtDetalle.Rows If Not OC.AddOrdenCompraDetalle(CveOrdenCompra, dr("Cantidad").ToString.ToDecimal(), dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, dr("Importe").ToString.ToDecimal, dr("CveSubProyecto").ToString.ToEntero(), dr("CveActivoFijo").ToString.ToEntero, dr("Observacion").ToString, UsuarioActual.CveUsuario, CvePresupuestoEgreso:=dr("CvePresupuestoEgreso").ToString.ToEntero, pCveOrdenCompraPadre:=CveOrdenCompraPadre, Descuento:=dr("Descuento").ToString.ToDecimal, IEPSPS:=dr("IEPSPS").ToString.ToDecimal, IEPSPSIVA:=dr("IEPSPSIVA").ToString.ToDecimal, IVA:=dr("IVA").ToString.ToDecimal, RetIVA:=dr("RetIVA").ToString.ToDecimal, RetISR:=dr("RetISR").ToString.ToDecimal, Total:=dr("Total").ToString.ToDecimal, CveContratoDetalle:=dr("CveContratoDetalle").ToString.ToEntero, IVAPorcentaje:=dr("IVAPorcentaje").ToString.ToDecimal, RetIVAPorcentaje:=dr("RetIVAPorcentaje").ToString.ToDecimal, RetISRPorcentaje:=dr("RetISRPorcentaje").ToString.ToDecimal, IEPSPSPorcentaje:=dr("IEPSPSPorcentaje").ToString.ToDecimal, IEPSPSIVAPorcentaje:=dr("IEPSPSIVAPorcentaje").ToString.ToDecimal, CveVentaDetalleCotizacion:=dr("CveVentaDetalleCotizacion").ToString().ToEntero(), CveTipoGastoObra:=dr("CveTipoGastoObra").ToString.ToEntero, CveCultivoCuadroDetalle:=dr("CveCultivoCuadroDetalle").ToString.ToEntero) Then TieneError = True Exit For End If Next If Not TieneError AndAlso UsuarioActual.Empresa.Funcionalidad(583) = "1" Then TieneError = Not ActualizarCotizacion(ObjVentas) End If Else TieneError = True End If If CveOrdenTrabajo > 0 Then Dim ObjAF As New ClsAF(OC.IniciaTransacSQL) If Not ObjAF.UpdateOrdenesTrabajoOC(CveOrdenTrabajo, CveOrdenCompra, UsuarioActual.CveEmpresa) Then TieneError = True End If End If End If If Not TieneError Then If Conta IsNot Nothing Then Conta.Commit() OC.Commit() BtnGuardar.Visible = False 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 If Request("Tipo") IsNot Nothing AndAlso Request("Tipo") = "Req" AndAlso TipoOC = "OC" Then TipoOC = "REQ" End If End If ViewState("LigaOCs") = If(CveEstatusNuevo <> CboE.SelectedValue.ToEntero, String.Format("{1}", CveOrdenCompra, Folio), "") If CveOrdenCompra > 0 Then Dim ImprimirOC = String.Format("Imprimir Orden de Compra ", Encripta(String.Format("OP=OC&CVEOC={0}", CveOrdenCompra))) Dim Msg As New StringBuilder 'Cuando Estatus = "Autorizada" 'If CboE.SelectedValue.ToEntero > 0 Then ' Dim Row As DataRow = GlobalDTOCEstatus(CveEmpresaActual).FiltraParametros(String.Format("CveEstatus = {0}", CboE.SelectedValue)).Rows(0) ' 'If (Row IsNot Nothing AndAlso Row("TipoTermino").ToString.ToEntero = 1) Then EnviarCorreoOrdenCompra(CveOrdenCompra) 'End If 'POSIBLE COMENTAR - QUITAR 'Envío de correo, con el detalle y la información cargada de nuevo If CveEstatus >= 0 Then EnviarCorreoCambioEstatus(CveEstatusSiguiente, CboE.SelectedItem.Text, False) End If If LigaOCs = "" Then Msg.AppendFormat("La {0} No. {1}. Ha sido guardada correctamente
{2}", TipoLargo, Folio, If(TipoOC = "OC", ImprimirOC, "")) Else Msg.AppendFormat("La {0} No. {1}. Ha sido guardada correctamente

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

Polizas generadas:") For i = 0 To IDPolizasGeneradas.Count - 1 Msg.AppendFormat("
Poliza: {1}", IDPolizasGeneradas(i), FoliosPolizas(i)) Next End If ' Alert(Msg.ToString, TipoMensaje.MsgInformacion, $"document.location.href=""/OC/OC.aspx?Tipo={TipoOC}""") 'ES NUEVO Dim Liga1 As String = $"document.location.href=""/OC/OC.aspx?Tipo={TipoOC}""" Dim Liga2 As String = $"document.location.href=""/OC/RepOC.aspx""" Alert(Msg.ToString(), TipoMensaje.MsgDosBotones, Liga1, TextoConfirmacion:="Seguir Registrando", TextoSegundoBoton:="Ir al Reporte", JSBtn2:=Liga2) 'GeneraPDF(CveOrdenCompra) TxtDescrip.Text = "" TxtJustificacion.Text = "" End If 'UPDATE' ElseIf CveOrdenCompra > 0 Then Dim FueModificada As Boolean = False Dim Proveedor As String = "" 'siempre se esta guardando el proveedor If Not ChkCotizacion.Checked OrElse (UsuarioActual.Empresa.Funcionalidad(565) = "1" AndAlso CveConfianzaProveedor > 0) Then CveProveedor = DdlProveedores.SelectedValue.ToEntero Proveedor = DdlProveedores.SelectedText.ToString End If If OC.UpdateOrdenCompra(-1, TxtDescrip.Text, TxtJustificacion.Text, DdlPrioridad.SelectedValue.ToEntero, ChkCotizacion.Checked, If(TxtFechaEstimadaEntrega.Text.Trim = "", "-1", TxtFechaEstimadaEntrega.Text.Trim), LugarEntrega, DdlMoneda.SelectedValue.ToEntero, CveProveedor, CveOrdenCompra, UsuarioActual.CveUsuario, Ddlcliente.txtValue.Value.ToEntero, DdlVendedor.SelectedValue.ToEntero, txtobsprioridad.Text, IVA:=IVA, RetIVA:=TxtRetIVA.Text.ToDecimal, RetISR:=TxtRetISR.Text.ToDecimal, FolioAdicional:=TxtFolioAdicional.Text, EntregaDirecta:=If(ChkEntregaDirecta.Checked, 1, -1), CveDireccionEnvio:=If(DdlDireccionEnvio.Visible, DdlDireccionEnvio.SelectedValue.ToEntero, -1), Guia:=TxtGuia.Text.Trim, IEPS:=TxtIEPS.Text.ToDecimal, UsoCFDI:=DdlUsoCFDI.SelectedValue.ToEntero, Promocion:=Promocion, pCveProveedorSucursal:=DdlProveedorSucursal.SelectedValue.ToEntero, CveProveedorContacto:=CveProveedorContacto, PorcentajeIVA:=Math.Round(DdlIVA.SelectedValue.ToDecimal - 1, 2)) Then If CveProveedorOriginal <> CveProveedor Then If Not ObjConta.UpdateProveedorPoliza(CveOrdenCompra, CveProveedor, Proveedor) Then TieneError = True End If End If Else TieneError = True End If '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, lblFolio.Text.ToEntero) <= 0 Then TieneError = True End If End If End If 'TERMINA: USA AC 'inserto los nuevos detalles If Not TieneError Then For Each dr As DataRow In DtDetalle.FiltraParametros("TipoDato = 0").Rows If Not OC.AddOrdenCompraDetalle(CveOrdenCompra, dr("Cantidad").ToString.ToDecimal(), dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, dr("Importe").ToString.ToDecimal, 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.ToDecimal, IEPSPS:=dr("IEPSPS").ToString.ToDecimal, IEPSPSIVA:=dr("IEPSPSIVA").ToString.ToDecimal, IVA:=dr("IVA").ToString.ToDecimal, RetIVA:=dr("RetIVA").ToString.ToDecimal, RetISR:=dr("RetISR").ToString.ToDecimal, Total:=dr("Total").ToString.ToDecimal, CveContratoDetalle:=dr("CveContratoDetalle").ToString.ToEntero, IVAPorcentaje:=dr("IVAPorcentaje").ToString.ToDecimal, RetIVAPorcentaje:=dr("RetIVAPorcentaje").ToString.ToDecimal, RetISRPorcentaje:=dr("RetISRPorcentaje").ToString.ToDecimal, IEPSPSPorcentaje:=dr("IEPSPSPorcentaje").ToString.ToDecimal, IEPSPSIVAPorcentaje:=dr("IEPSPSIVAPorcentaje").ToString.ToDecimal, CveTipoGastoObra:=dr("CveTipoGastoObra").ToString.ToEntero, CveCultivoCuadroDetalle:=dr("CveCultivoCuadroDetalle").ToString.ToEntero) Then TieneError = True Exit For Else FueModificada = True End If Next End If 'Edito los detalles If Not TieneError Then Dim DtInvOC As New DataTable Dim DtInvOCDiferencias As New DataTable DtInvOCDiferencias.Columns.Add("CveOrdenCompraDetalle", GetType(Integer)) DtInvOCDiferencias.Columns.Add("CveAlmacen", GetType(Integer)) DtInvOCDiferencias.Columns.Add("CveMovimiento", GetType(Integer)) DtInvOCDiferencias.Columns.Add("Diferencia", GetType(Decimal)) DtInvOCDiferencias.Columns.Add("ImporteMovto", GetType(Decimal)) DtInvOCDiferencias.Columns.Add("ImporteMovtoDLLS", GetType(Decimal)) DtInvOCDiferencias.Columns.Add("TipoCambioAjuste", GetType(Decimal)) DtInvOCDiferencias.Columns.Add("ConceptoSalida", GetType(Integer)) DtInvOCDiferencias.Columns.Add("PS", GetType(String)) If ObjInventarios.GetMovimientosOC(CveOrdenCompra, UsuarioActual.CveEmpresa) Then DtInvOC = ObjInventarios.DtResultados.FiltraParametros("CvePS > 0").Copy End If If Not TieneError Then For Each dr As DataRow In DtDetalle.FiltraParametros("TipoDato IN (1)").Rows If OC.UpdateOrdenCompraDetalle(dr("Cantidad").ToString.ToDecimal, dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, dr("Importe").ToString.ToDecimal, 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.ToDecimal, IEPSPS:=dr("IEPSPS").ToString.ToDecimal, IEPSPSIVA:=dr("IEPSPSIVA").ToString.ToDecimal, IVA:=dr("IVA").ToString.ToDecimal, RetIVA:=dr("RetIVA").ToString.ToDecimal, RetISR:=dr("RetISR").ToString.ToDecimal, Total:=dr("Total").ToString.ToDecimal, CveContratoDetalle:=dr("CveContratoDetalle").ToString.ToEntero, IVAPorcentaje:=dr("IVAPorcentaje").ToString.ToDecimal, RetIVAPorcentaje:=dr("RetIVAPorcentaje").ToString.ToDecimal, RetISRPorcentaje:=dr("RetISRPorcentaje").ToString.ToDecimal, IEPSPSPorcentaje:=dr("IEPSPSPorcentaje").ToString.ToDecimal, IEPSPSIVAPorcentaje:=dr("IEPSPSIVAPorcentaje").ToString.ToDecimal) <= 0 Then TieneError = True Exit For Else FueModificada = True 'PARA PREPOLIZA DE AJUSTE ALMACEN POR ADELANTADO Dim DrInvOCDiferencias As DataRow For Each DrInv As DataRow In DtInvOC.FiltraParametros($"CveOrdenCompraDetalle = {dr("CveOrdenCompraDetalle").ToString.ToEntero} AND CveCompraDetalle < 1").Rows DrInvOCDiferencias = DtInvOCDiferencias.NewRow DrInvOCDiferencias("TipoCambioAjuste") = DrInv("TipoCambioAjuste").ToString.ToDecimal DrInvOCDiferencias("Diferencia") = ((dr("Importe").ToString.ToDecimal * DrInv("TipoCambioAjuste").ToString.ToDecimal) - DrInv("PUOriginal").ToString.ToDecimal) * DrInv("Cantidad").ToString.ToDecimal DrInvOCDiferencias("CveAlmacen") = DrInv("CveAlmacen").ToString.ToEntero DrInvOCDiferencias("CveOrdenCompraDetalle") = DrInv("CveOrdenCompraDetalle").ToString.ToEntero DrInvOCDiferencias("ImporteMovto") = dr("Importe").ToString.ToDecimal * DrInv("TipoCambioAjuste").ToString.ToDecimal DrInvOCDiferencias("ImporteMovtoDLLS") = If(DrInv("TipoCambioAjuste").ToString.ToDecimal > 1, dr("Importe").ToString.ToDecimal, -1) DrInvOCDiferencias("CveMovimiento") = DrInv("CveMovimiento").ToString.ToEntero DrInvOCDiferencias("ConceptoSalida") = DrInv("ConceptoSalida").ToString.ToEntero DrInvOCDiferencias("PS") = dr("PS").ToString DtInvOCDiferencias.Rows.Add(DrInvOCDiferencias) Next End If Next End If 'PREPOLIZA DE AJUSTE ALMACEN POR ADELANTADO If Not TieneError Then If DtInvOCDiferencias.Rows.Count > 0 And TipoOC = "OC" Then 'VARIABLES Dim DiferenciaInvOC = 0.0D Dim CveMovimientoAlmacen = -1 Dim CveOCDetalle = -1 Dim CveAlmacen = -1 Dim IdCtaContableAlmacen As Integer = -1 Dim IdCtaContableRecepcionOC = -1 Dim IdCtaContableRecepcionOCME = -1 Dim IdCtaContableRecepcionOCComplementaria = -1 Dim IdCtaContableRecepcionOCER = -1 Dim IdCtaContableRecepcionOCERME = -1 Dim IdCtaContableRecepcionOCERComplementaria = -1 Dim Fecha As Date = Now Dim CveProveedorInvOC As Integer = -1 Dim ProveedorNombre As String = "" Dim SerieFolio As String = "" Dim CvePrePoliza As Integer = -1 Dim ConceptoSalida = -1 Dim TCInvOC = 0.0D Dim ImporteME = 0.0D Dim ImporteMEComp = 0.0D Dim SumatoriaMN = 0.0D Dim SumatoriaME = 0.0D Dim SumatoriaMEComp = 0.0D Dim PS As String = "" If ObjConta.GetRetCuenta(176, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then IdCtaContableRecepcionOC = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero End If If ObjConta.GetRetCuenta(228, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then IdCtaContableRecepcionOCME = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero End If If ObjConta.GetRetCuenta(229, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then IdCtaContableRecepcionOCComplementaria = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero End If If ObjConta.GetRetCuenta(177, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then IdCtaContableRecepcionOCER = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero End If If ObjConta.GetRetCuenta(232, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then IdCtaContableRecepcionOCERME = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero End If If ObjConta.GetRetCuenta(233, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then IdCtaContableRecepcionOCERComplementaria = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero End If If Not TieneError Then Fecha = Now CveProveedor = DdlProveedores.SelectedValue.ToEntero ProveedorNombre = DdlProveedores.SelectedText SerieFolio = $"OC: {Folio}" If DtInvOCDiferencias.FiltraParametros("ConceptoSalida IN (0,1) AND Diferencia <> 0 ").Rows.Count > 0 Then CvePrePoliza = ObjConta.AddPrePolizas("OC/OC-(OCAlmacen)", 74, DiferenciaInvOC, DiferenciaInvOC, 1, Fecha, ProveedorNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) 'AJUSTES EN PREPOLIZA - SALIDA CONTABLE (CON SALIDA DE VENTA O SIN SALIDA) For Each DrDiferencias As DataRow In DtInvOCDiferencias.FiltraParametros("ConceptoSalida IN (0,1)").Rows CveAlmacen = DrDiferencias("CveAlmacen").ToString.ToEntero CveMovimientoAlmacen = DrDiferencias("CveMovimiento").ToString.ToEntero CveOCDetalle = DrDiferencias("CveOrdenCompraDetalle").ToString.ToEntero ConceptoSalida = DrDiferencias("ConceptoSalida").ToString.ToEntero PS = DrDiferencias("PS").ToString DiferenciaInvOC = DrDiferencias("Diferencia").ToString.ToDecimal ' DtInvOCDiferencias.SUMD("Diferencia", $"CveAlmacen = {CveAlmacen} AND CveMovimiento = {CveMovimientoAlmacen} AND ConceptoSalida = {ConceptoSalida}") TCInvOC = DrDiferencias("TipoCambioAjuste").ToString.ToDecimal ' DtInvOCDiferencias.FiltroPrimeroValor("TipoCambioAjuste", $"CveAlmacen = {CveAlmacen} AND CveMovimiento = {CveMovimientoAlmacen} AND ConceptoSalida = {ConceptoSalida}").ToDecimal IdCtaContableAlmacen = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DrDiferencias("CveAlmacen").ToString.ToEntero}").ToEntero If DiferenciaInvOC.RoundSQL() <> 0 Then Dim tCveSubProyecto As Integer = 0 If CvePrePoliza > 0 Then tCveSubProyecto = DtDetalle.FiltroPrimeroValor("CveSubProyecto", "CveOrdenCompraDetalle =" & CveOCDetalle).ToEntero If DdlMoneda.SelectedValue.ToEntero <> 1 And UsuarioActual.CveEmpresa.Contiene(119) Then ImporteME = (DiferenciaInvOC / TCInvOC).RoundSQL() ImporteMEComp = (DiferenciaInvOC - ImporteME).RoundSQL() 'COMPLEMENTARIA 'If ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteME, SerieFolio, 232, SerieFolio, Fecha, If(ConceptoSalida = 0, IdCtaContableAlmacen, IdCtaContableRecepcionOCERME), -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=ImporteME, ImporteME:=ImporteME, CveCuenta:=CveCuentaAlmacen, TipoCambio:=TCInvOC, CveOCDetalle:=CveOCDetalle) Then ' If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMEComp, SerieFolio, 233, SerieFolio, Fecha, IdCtaContableRecepcionOCERComplementaria, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=ImporteMEComp, ImporteME:=ImporteME, TipoCambio:=TCInvOC, CveOCDetalle:=CveOCDetalle) Then ' TieneError = True ' Exit For ' End If 'Else ' TieneError = True ' Exit For 'End If If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, -DiferenciaInvOC, SerieFolio, 177, SerieFolio, Fecha, IdCtaContableRecepcionOCER, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=-DiferenciaInvOC, CveOCDetalle:=CveOCDetalle, CveSubProyecto:=tCveSubProyecto) Then TieneError = True Exit For End If If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteME, SerieFolio, 228, SerieFolio, Fecha, IdCtaContableRecepcionOCME, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=ImporteME, ImporteME:=ImporteME, TipoCambio:=TCInvOC, CveOCDetalle:=CveOCDetalle) Then If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteMEComp, SerieFolio, 229, SerieFolio, Fecha, IdCtaContableRecepcionOCComplementaria, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=ImporteMEComp, ImporteME:=ImporteME, TipoCambio:=TCInvOC, CveOCDetalle:=CveOCDetalle) Then TieneError = True Exit For End If Else TieneError = True Exit For End If Else '2018.11.24 se cambia concepto 176, de cargo a abono negativo., petición MALL '2019.03.26 se cambia concepto 177, de abono a cargo., petición MALL '2019.04.10 se cambia concepto 177, de cargo a abono., petición MALL If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, -DiferenciaInvOC, SerieFolio, If(ConceptoSalida = 0, 177, 177), SerieFolio, Fecha, IdCtaContableRecepcionOCER, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=-DiferenciaInvOC, CveOCDetalle:=CveOCDetalle, CveSubProyecto:=tCveSubProyecto) Then If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DiferenciaInvOC, SerieFolio, 176, SerieFolio, Fecha, IdCtaContableRecepcionOC, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=DiferenciaInvOC, CveOCDetalle:=CveOCDetalle) Then TieneError = True Exit For End If Else TieneError = True Exit For End If End If If Not TieneError Then If Not OCBitacora.AddEventoBitacora(String.Format("Se registró una póliza de ajuste por cambio de precio en producto: {0}", PS), "-1", UsuarioActual.CveUsuario, CveEmpresaActual, CveOC:=CveOrdenCompra) Then TieneError = True End If End If If UsuarioActual.Empresa.Funcionalidad(200) = "1" AndAlso Conta IsNot Nothing Then If Not ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=Conta) Then TieneError = False End If End If End If End If Next End If 'AJUSTES EN INVENTARIO 'For Each DrDiferencias As DataRow In DtInvOCDiferencias.FiltraParametros("ConceptoSalida IN (0,2)", "", {"CveAlmacen", "ConceptoSalida", "CveMovimiento"}).Rows ' CveAlmacen = DrDiferencias("CveAlmacen").ToString.ToEntero ' CveMovimientoAlmacen = DrDiferencias("CveMovimiento").ToString.ToEntero ' ConceptoSalida = DrDiferencias("ConceptoSalida").ToString.ToEntero ' DiferenciaInvOC = DtInvOCDiferencias.SUMD("Diferencia", $"CveAlmacen = {CveAlmacen} And CveMovimiento = {CveMovimientoAlmacen} And ConceptoSalida = {ConceptoSalida}") ' TCInvOC = DtInvOCDiferencias.FiltroPrimeroValor("TipoCambioAjuste", $"CveAlmacen = {CveAlmacen} And CveMovimiento = {CveMovimientoAlmacen} And ConceptoSalida = {ConceptoSalida}").ToDecimal ' IdCtaContableAlmacen = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen = {DrDiferencias("CveAlmacen").ToString.ToEntero}").ToEntero ' 'MODIFICACIÓN CONCEPTO ' If ConceptoSalida = 0 Then ' For Each DrAjuste As DataRow In DtInvOC.FiltraParametros($"CveMovimiento = {CveMovimientoAlmacen} And ConceptoSalida = 0").Rows ' If Not ObjInventarios.UpdateMovimientoDetalle(DrAjuste("Cantidad").ToString.ToDecimal, DrAjuste("CveUM").ToString.ToEntero, DrAjuste("CvePS").ToString.ToEntero, DtInvOCDiferencias.FiltroPrimeroValor("ImporteMovto", $"CveOrdenCompraDetalle = {DrAjuste("CveOrdenCompraDetalle").ToString.ToEntero}").ToDecimal, -1, DrAjuste("CveMovimientoDetalle").ToString.ToEntero, PUTC:=DtInvOCDiferencias.FiltroPrimeroValor("ImporteMovtoDLLS", $"CveOrdenCompraDetalle = {DrAjuste("CveOrdenCompraDetalle").ToString.ToEntero}").ToDecimal) Then ' TieneError = True ' Exit For ' End If ' Next ' End If ' 'SALIDA ADMINISTRATIVA (CON SALIDA POR TRASPASO) -AJUSTE ' If ConceptoSalida = 2 Then ' Dim CveMovimientoSalidaAjuste = ObjInventarios.AddMovimiento(CveAlmacen, 3, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, MovimientoFijo:=True, Modulo:="OC/G") ' For Each DrAjuste As DataRow In DtInvOC.FiltraParametros($"CveMovimiento = {CveMovimientoAlmacen} And ConceptoSalida = 2").Rows ' If Not ObjInventarios.AddMovimientoDetalle(CveMovimientoSalidaAjuste, DrAjuste("Cantidad").ToString.ToDecimal, DrAjuste("CveUM").ToString.ToEntero, DrAjuste("CveUM").ToString.ToEntero, DrAjuste("PU").ToString.ToDecimal, -1, CveOrdenCompraDetalle:=DrAjuste("CveOrdenCompraDetalle").ToString.ToEntero) Then ' TieneError = True ' Exit For ' End If ' Next ' Dim CveMovimientoEntradaAjuste = ObjInventarios.AddMovimiento(CveAlmacen, 2, 1, Now, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Modulo:="OC/G") ' If ObjInventarios.GetMovimientosDetalle(CveMovimientoSalidaAjuste, UsuarioActual.CveEmpresa) Then ' For Each Dr As DataRow In ObjInventarios.DtResultados.Rows ' If Not ObjInventarios.AddMovimientoDetalle(CveMovimientoEntradaAjuste, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, DtInvOCDiferencias.FiltroPrimeroValor("ImporteMovto", $"CveOrdenCompraDetalle = {Dr("CveOrdenCompraDetalle").ToString.ToEntero}").ToDecimal, Dr("CveAF").ToString.ToEntero, -1, Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveOrdenCompraDetalle:=Dr("CveOrdenCompraDetalle").ToString.ToEntero) Then ' TieneError = True ' Exit For ' End If ' Next ' If TieneError Then ' Exit For ' End If ' Else ' TieneError = True ' Exit For ' End If ' End If 'Next End If End If End If End If 'elimino los detalles If Not TieneError Then For Each i As Integer In DrEliminados If Not OC.RemoveOrdenCompraDetalle(i, UsuarioActual.CveUsuario) Then TieneError = True Exit For Else FueModificada = True End If Next End If 'Actualizo el estatus If Not TieneError Then If CboE.SelectedValue.ToEntero <> CveEstatus Then If Not OC.UpdateOrdenCompraEstatus(CboE.SelectedValue.ToEntero, CveOrdenCompra, UsuarioActual.CveUsuario, TxtCancelar.Text) Then TieneError = True End If End If End If 'SI requiere Cotizacion y el estatus a el que se actualizo es el FinalOK, generar las ordenes de compra If Not TieneError Then If TipoOC.ToUpper = "REQ" And CveEstatusFinalOK = CboE.SelectedValue.ToEntero Then If UsuarioActual.Empresa.Funcionalidad(565) = "1" Then If CveConfianzaProveedor > 0 Then If CveConfianzaProveedor = 1 AndAlso Me.NumCotizacionesEvaluar >= 1 Then TieneError = GeneraOrdenes(OC, Conta, ObjInventarios) ElseIf CveConfianzaProveedor = 2 AndAlso Me.NumCotizacionesEvaluar >= 2 Then TieneError = GeneraOrdenes(OC, Conta, ObjInventarios) Else TieneError = True End If Else TieneError = GeneraOrdenes(OC, Conta, ObjInventarios) End If Else TieneError = GeneraOrdenes(OC, Conta, ObjInventarios) End If 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 'COMMIT If Not TieneError Then 'If MonedaTexto <> DdlMoneda.SelectedItem.Text Then ' If Not OCBitacora.AddEventoBitacora(String.Format("Se cambió el valor de moneda de '{0}' a '{1}'", MonedaTexto, DdlMoneda.SelectedItem.Text), "-1", UsuarioActual.CveUsuario, CveEmpresaActual, CveOC:=CveOrdenCompra) Then ' TieneError = True ' End If 'End If OC.Commit() If Conta IsNot Nothing Then Conta.Commit() If LigaOCs = "" Then 'Alert(String.Format("La {0} se guardó correctamente", TipoLargo), TipoMensaje.MsgInformacion) 'Edicion Dim Liga1 As String = $"document.location.href=""/OC/OC.aspx?Tipo={TipoOC}""" Dim Liga2 As String = $"document.location.href=""/OC/RepOC.aspx""" Alert(String.Format("La {0} se guardó correctamente", TipoLargo), TipoMensaje.MsgDosBotones, Liga1, TextoConfirmacion:="Seguir Registrando", TextoSegundoBoton:="Ir al Reporte", JSBtn2:=Liga2) Else Dim ImprimirOC = "" Dim Msg As New StringBuilder If CveOCGeneradas.Count = 1 Then ImprimirOC = String.Format("
Imprimir Orden de Compra ", Encripta(String.Format("OP=OC&CVEOC={0}", CveOCGeneradas(0)))) Msg.AppendFormat("La {0} No. {1}. Ha sido guardada correctamente

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

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

Polizas generadas:") For i = 0 To IDPolizasGeneradas.Count - 1 Msg.AppendFormat("
Poliza: {1}", IDPolizasGeneradas(i), FoliosPolizas(i)) Next End If 'Alert(Msg.ToString, TipoMensaje.MsgInformacion, $"document.location.href=""/OC/OC.aspx?Tipo={TipoOC}""") 'Edicion Dim Liga1 As String = $"document.location.href=""/OC/OC.aspx?Tipo={TipoOC}""" Dim Liga2 As String = $"document.location.href=""/OC/RepOC.aspx""" Alert(Msg.ToString(), TipoMensaje.MsgDosBotones, Liga1, TextoConfirmacion:="Seguir Registrando", TextoSegundoBoton:="Ir al Reporte", JSBtn2:=Liga2) End If DrEliminados.Clear() Else OC.RollBack() If Conta IsNot Nothing Then Conta.RollBack() Alert(MsgError, TipoMensaje.MsgError) 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 If OC IsNot Nothing Then OC.Dispose() If Conta IsNot Nothing Then Conta.Dispose() Else 'TERMINA TODO POR SI OCURRIÓ ALGO RARO If OC IsNot Nothing Then OC.Dispose() If ObjVentas IsNot Nothing Then ObjVentas.Dispose() If Conta IsNot Nothing Then Conta.Dispose() 'MANDA CORREOS SI EL ESTATUS ES MAYOR A 0 If CboE.SelectedValue.ToEntero > 0 Then Notificaciones() End If 'LIMPIA VALORES GENERALES VerificaPresupuesto = False 'RECARGA OC CUANDO SE ACTUALIZA PARA TRAERSE LOS DATOS DE DB If Not EsNuevo Then CargaDatos(CveOrdenCompra) End If End If End Sub Protected Function GeneraOrdenes(ByRef objOrdenCompra As ClsOC, Conta As ClsContPAQi, ByRef ObjInventarios As ClsInventarios) As Boolean 'If Ddlcliente.txtValue.Value.ToEntero > 0 And DdlVendedor.SelectedValue.ToEntero <= 0 Then ' Alert("Debe de seleccionar Un vendedor ", TipoMensaje.MsgAdvertencia) ' Exit Function 'End If 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) Dim FolioOCGeneradasTemp = New List(Of Integer) Dim LugarEntrega = If(txtLugarEntrega.Text.Trim = "", "-1", txtLugarEntrega.Text.Trim) LugarEntrega = If(DivLugarEntrega1.Visible, LugarEntrega, If(TxtLugarEntregaDirecta.Visible, TxtLugarEntregaDirecta.Text.Trim, "")) Dim Promocion = "-1" Promocion = TxtPromocion.Text.Trim Try Dim NoProveedoresCot As Integer = DtDetalle.COUNT("CveProveedor", "CveProveedor > 0") If ChkCotizacion.Checked AndAlso NoProveedoresCot > 0 AndAlso (NumCotizacionesGanadoras > 0 OrElse Not (NumCotizacionesGanadoras <= 0 AndAlso CveConfianzaProveedor = 1)) Then Dim CveProveedor = -1 Dim TotalCot = 0.0, IVACot = 0D, RetIVA = 0.0, RetISR = 0.0, PorIVA = 0.0 Dim IdPoliza = -1 For Each dr As DataRow In DtDetalle.FiltraParametros("CveProveedor > 0", "CveProveedor").Rows 'SI ES DIFERENTE PROVEEDOR AGREGA UNA OC If CveProveedor <> dr("CveProveedor").ToString.ToEntero Then CveProveedor = dr("CveProveedor").ToString.ToEntero PorIVA = Math.Round(DdlIVA.SelectedValue.ToDecimal - 1, 2) 'GlobalDTCompProveedores(CveEmpresaActual).FiltraParametros(String.Format("CveProveedor = {0}", CveProveedor)).Rows(0)("IVA").ToString.ToDecimal IVACot = IVA '(DtDetalle.SUM("Total", String.Format("CveProveedor = {0}", CveProveedor)) * PorIVA).ToString.ToDecimal RetIVA = TxtRetIVA.Text.ToDecimal RetISR = TxtRetISR.Text.ToDecimal If objOrdenCompra.AddOrdenCompra("OC", -1, TxtDescrip.Text, TxtJustificacion.Text, DdlPrioridad.SelectedValue.ToEntero, TxtFecha.Text.ToDate, DdlMoneda.SelectedValue.ToEntero, CveEstatusInicialOC, TxtFechaEstimadaEntrega.Text, LugarEntrega, CveUsuario, CveEmpresaActual, 0, pCveProveedor:=CveProveedor, CveCliente:=Ddlcliente.txtValue.Value.ToEntero, CveVendedor:=DdlVendedor.SelectedValue.ToEntero, PrioridadObservacion:=txtobsprioridad.Text, PorcentajeIVA:=PorIVA, IVA:=IVACot, RetIVA:=RetIVA.ToString.ToDecimal, RetISR:=RetISR.ToString.ToDecimal, IDPoliza:=IdPoliza, CveCotizacion:=CveCotizacion, FolioAdicional:=TxtFolioAdicional.Text, EntregaDirecta:=If(ChkEntregaDirecta.Checked, 1, -1), CveDireccionEnvio:=If(DdlDireccionEnvio.Visible, DdlDireccionEnvio.SelectedValue.ToEntero, -1), IEPS:=TxtIEPS.Text.ToDecimal, CveIEAnticipo:=CveIEAnticipo, ImporteAnticipo:=ImporteAnticipos, Promocion:=Promocion, UsoCFDI:=DdlUsoCFDI.SelectedValue.ToEntero) 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 '17/04/2018 - Se cambia por nuevo esquema de paqueterias guias. 'ENTREGA FORANEOS 'If ChkEntregaDirecta.Checked Then ' If Not ObjInventarios.AddEntregaForanea("", False, 1, UsuarioActual.CveEmpresa, objOrdenCompra.CveOrdenCompra) Then ' HuboError = True ' End If 'End If If Not HuboError Then LigaOcsTemp = String.Format("{0}
{2}", LigaOcsTemp, objOrdenCompra.CveOrdenCompra, objOrdenCompra.Folio) CveOCGeneradasTemp.Add(objOrdenCompra.CveOrdenCompra) FolioOCGeneradasTemp.Add(objOrdenCompra.Folio) End If Else HuboError = True Exit For End If End If 'AGREGA DETALLES If Not objOrdenCompra.AddOrdenCompraDetalle(objOrdenCompra.CveOrdenCompra, dr("Cantidad").ToString.ToDecimal(), dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, dr("Importe").ToString.ToDecimal, dr("CveSubProyecto").ToString.ToEntero(), dr("CveActivoFijo").ToString.ToEntero, dr("Observacion").ToString, UsuarioActual.CveUsuario, CveOrdenCompra, CvePresupuestoEgreso:=dr("CvePresupuestoEgreso").ToString.ToEntero, Descuento:=dr("Descuento").ToString.ToDecimal, IEPSPS:=dr("IEPSPS").ToString.ToDecimal, IEPSPSIVA:=dr("IEPSPSIVA").ToString.ToDecimal, IVA:=dr("IVA").ToString.ToDecimal, RetIVA:=dr("RetIVA").ToString.ToDecimal, RetISR:=dr("RetISR").ToString.ToDecimal, Total:=dr("Total").ToString.ToDecimal, CveContratoDetalle:=dr("CveContratoDetalle").ToString.ToEntero, IVAPorcentaje:=dr("IVAPorcentaje").ToString.ToDecimal, RetIVAPorcentaje:=dr("RetIVAPorcentaje").ToString.ToDecimal, RetISRPorcentaje:=dr("RetISRPorcentaje").ToString.ToDecimal, IEPSPSPorcentaje:=dr("IEPSPSPorcentaje").ToString.ToDecimal, IEPSPSIVAPorcentaje:=dr("IEPSPSIVAPorcentaje").ToString.ToDecimal, CveTipoGastoObra:=dr("CveTipoGastoObra").ToString.ToEntero, CveCultivoCuadroDetalle:=dr("CveCultivoCuadroDetalle").ToString.ToEntero) 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) Dim Index = 0 For Each CveOC As Integer In CveOCGeneradasTemp CveOCGeneradas.Add(CveOC) FolioOCGeneradas.Add(FolioOCGeneradasTemp(Index)) Index += 1 Next End If Else If objOrdenCompra.AddOrdenCompra("OC", -1, TxtDescrip.Text, TxtJustificacion.Text, DdlPrioridad.SelectedValue.ToEntero, TxtFecha.Text.ToDate, DdlMoneda.SelectedValue.ToEntero, CveEstatusInicialOC, TxtFechaEstimadaEntrega.Text, LugarEntrega, CveUsuario, CveEmpresaActual, 0, pCveProveedor:=DdlProveedores.SelectedValue.ToEntero, pCveProveedorSucursal:=DdlProveedorSucursal.SelectedValue.ToEntero, CveUsuarioAsignado:=DdlUsuariosAsignado.SelectedValue.ToEntero(), CveCliente:=Ddlcliente.txtValue.Value.ToEntero, CveVendedor:=DdlVendedor.SelectedValue.ToEntero, PrioridadObservacion:=txtobsprioridad.Text, PorcentajeIVA:=Math.Round(DdlIVA.SelectedValue.ToDecimal - 1, 2), IVA:=IVA, RetIVA:=TxtRetIVA.Text.ToDecimal, RetISR:=TxtRetISR.Text.ToDecimal, IDPoliza:=IDPolizaPresupuestal, CveCotizacion:=CveCotizacion, FolioAdicional:=TxtFolioAdicional.Text, EntregaDirecta:=If(ChkEntregaDirecta.Checked, 1, -1), CveDireccionEnvio:=If(DdlDireccionEnvio.Visible, DdlDireccionEnvio.SelectedValue.ToEntero, -1), IEPS:=TxtIEPS.Text.ToDecimal, CveIEAnticipo:=CveIEAnticipo, ImporteAnticipo:=ImporteAnticipos, UsoCFDI:=DdlUsoCFDI.SelectedValue.ToEntero, Promocion:=Promocion) 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.ToDecimal(), dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, dr("Importe").ToString.ToDecimal, dr("CveSubProyecto").ToString.ToEntero(), dr("CveActivoFijo").ToString.ToEntero, dr("Observacion").ToString, UsuarioActual.CveUsuario, CveOrdenCompra, CvePresupuestoEgreso:=dr("CvePresupuestoEgreso").ToString.ToEntero, Descuento:=dr("Descuento").ToString.ToDecimal, IEPSPS:=dr("IEPSPS").ToString.ToDecimal, IEPSPSIVA:=dr("IEPSPSIVA").ToString.ToDecimal, IVA:=dr("IVA").ToString.ToDecimal, RetIVA:=dr("RetIVA").ToString.ToDecimal, RetISR:=dr("RetISR").ToString.ToDecimal, Total:=dr("Total").ToString.ToDecimal, CveContratoDetalle:=dr("CveContratoDetalle").ToString.ToEntero, IVAPorcentaje:=dr("IVAPorcentaje").ToString.ToDecimal, RetIVAPorcentaje:=dr("RetIVAPorcentaje").ToString.ToDecimal, RetISRPorcentaje:=dr("RetISRPorcentaje").ToString.ToDecimal, IEPSPSPorcentaje:=dr("IEPSPSPorcentaje").ToString.ToDecimal, IEPSPSIVAPorcentaje:=dr("IEPSPSIVAPorcentaje").ToString.ToDecimal, CveTipoGastoObra:=dr("CveTipoGastoObra").ToString.ToEntero, CveCultivoCuadroDetalle:=dr("CveCultivoCuadroDetalle").ToString.ToEntero) Then HuboError = True Exit For End If Next End If '17/04/2018 - Se cambia por nuevo esquema de paqueterias guias. 'ENTREGA FORANEOS 'If ChkEntregaDirecta.Checked Then ' If Not ObjInventarios.AddEntregaForanea("", False, 1, UsuarioActual.CveEmpresa, objOrdenCompra.CveOrdenCompra) Then ' HuboError = True ' End If 'End If If HuboError = False Then ViewState("LigaOCs") = String.Format("{0}
{2}", LigaOCs, objOrdenCompra.CveOrdenCompra, objOrdenCompra.Folio) CveOCGeneradas.Add(objOrdenCompra.CveOrdenCompra) FolioOCGeneradas.Add(objOrdenCompra.Folio) End If Else HuboError = True End If End If Catch ex As Exception HuboError = True End Try Return HuboError End Function 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, If(ConceptoRenglon.Length > 100, ConceptoRenglon.Substring(0, 99), 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(CveEmpresaActual).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 #End Region #Region " CANCELAR OC " Protected Sub BtnCancelar_Click(sender As Object, e As EventArgs) Handles BtnCancelar.Click Dim ObjEventos As New ClsOIEventos 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 -- CUANDO SE GENERO UNA POLIZA NUEVA (NEGATIVA) If PolizaCancelacion > 0 Then Msg.AppendFormat("

Ver Póliza de cancelación", PolizaCancelacion) If Not ObjEventos.AddEventoBitacora(String.Format("Folio de Cancelación: {1}", PolizaCancelacion, Folio), "-1", UsuarioActual.CveUsuario, CveEmpresaActual, CveOC:=CveOrdenCompra) Then TieneError = True End If End If Alert(Msg.ToString, TipoMensaje.MsgInformacion) RegistraScript("$('#DivCancelarCompra').modal('hide');") EnviarCorreoCambioEstatus(CboE.SelectedValue.ToEntero, CboE.SelectedItem.Text) EnviaCorreoSolicitudAnticipoCancelado() 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 = 0 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 < TxtFechaCancelacion.Text.ToDate.Month Or dt.Rows(0)("FechaPol").ToString.ToDate.Year < TxtFechaCancelacion.Text.ToDate.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 '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 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 " GVD " Protected Sub CargaDatosDetalles() GvD.DataSource = DtDetalle GvD.DataBind() TxtGrid.Text = If(DtDetalle IsNot Nothing AndAlso DtDetalle.Rows.Count > 0, DtDetalle.Rows.Count.ToString, "") CalculaGenerales() UPPDetalle.Update() CompruebaAgregar() CargaSuperior() End Sub Protected Sub GvD_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvD.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then Try If e.Row.FCLabel("LtlCantidad") IsNot Nothing Then e.Row.FCLabel("LtlCantidad").Attributes.Add("data-toggle", "tooltip") e.Row.FCLabel("LtlCantidad").Attributes.Add("Title", e.Row.DataKey("CveOrdenCompraDetalle")) End If Catch ex As Exception End Try If Not (e.Row.RowState = DataControlRowState.Edit OrElse e.Row.RowState = 5) Then If e.Row.RowState = DataControlRowState.Normal Or e.Row.RowState = DataControlRowState.Alternate Then If UsuarioActual.Empresa.Tipo_CentroCosto = 1 Or UsuarioActual.Empresa.Tipo_CentroCosto = 2 Then Dim Str As String = e.Row.DBCampo("SubProyecto") If e.Row.DBCampo("Cuadro") <> "" Then Str = String.Format("{0}
{1}", Str, e.Row.DBCampo("Cuadro")) e.Row.FCLiteral("LtlSubProyecto").Text = Str 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(11).Visible = True lblTipoPadreHijo.Visible = True e.Row.FCLiteral("LtlLiga").Text = String.Format("{1}", e.Row.DBCampo("CveOrdenCompraPadre"), e.Row.DBCampo("FolioOrdenCompraPadre")) ElseIf TipoOC = "REQ" AndAlso Not IsDBNull(e.Row.DBCampo("CveOrdenCompraHija")) AndAlso IsNumeric(e.Row.DBCampo("CveOrdenCompraHija")) Then GvD.Columns(11).Visible = True lblTipoPadreHijo.Visible = True e.Row.FCLiteral("LtlLiga").Text = String.Format("{1}", e.Row.DBCampo("CveOrdenCompraHija"), e.Row.DBCampo("FolioOrdenCompraHija")) End If 'CveAFVinculado e.Row.FCLiteral("LitMaq").Text = String.Format("{1}", e.Row.DBCampo("CveActivoFijo"), e.Row.DBCampo("CodigoAF")) 'CveCompraDetalle Vinculada Dim ObjOC As New ClsOC If ObjOC.GetOCVinculadasPendientes(e.Row.DBCampo("CveOrdenCompraDetalle").ToEntero) Then If ObjOC.DtResultados.Rows.Count = 1 Then e.Row.FCLiteral("LtlCompra").Text = String.Format("{1}", ObjOC.DtResultados.FiltroPrimeroValor("CveCompra"), e.Row.DBCampo("FolioCompra")) LblCompra.Visible = True GvD.Columns(12).Visible = True ElseIf ObjOC.DtResultados.Rows.Count > 1 Then LblCompra.Visible = True e.Row.FCLiteral("LtlCompra").Visible = False e.Row.FCLinkButton("LnkCompra").Visible = True e.Row.FCLinkButton("LnkCompra").Enabled = True 'e.Row.FCLinkButton("LnkCompra").CausesValidation = False 'e.Row.FCLinkButton("LnkCompra").OnClientClick = "return true;" 'return true; e.Row.FCLinkButton("LnkCompra").CommandArgument = e.Row.DBCampo("CveOrdenCompraDetalle") GvD.Columns(12).Visible = True Else e.Row.FCLiteral("LtlCompra").Text = "" LblCompra.Visible = True End If End If ObjOC.Dispose() 'CargaPresupuestosEgresos If UsuarioActual.Empresa.UsaAC Then e.Row.FCDropDownList("DdlAC1").Visible = VerificaPresupuesto e.Row.FCDropDownList("DdlAC1").DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveProgramaOperativo", "ProgramaOperativo"}) e.Row.FCDropDownList("DdlAC1").DataBind() e.Row.FCDropDownList("DdlAC2").Visible = VerificaPresupuesto e.Row.FCDropDownList("DdlAC2").DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveUnidadAdministrativa", "UnidadAdministrativa"}) e.Row.FCDropDownList("DdlAC2").DataBind() e.Row.FCDropDownList("DdlAC3").Visible = VerificaPresupuesto e.Row.FCDropDownList("DdlAC3").DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveFuenteFinanciamiento", "FuenteFinanciamiento"}) e.Row.FCDropDownList("DdlAC3").DataBind() e.Row.FCDropDownList("DdlAC4").Visible = VerificaPresupuesto e.Row.FCDropDownList("DdlAC4").DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveTipoGasto", "TipoGasto"}) e.Row.FCDropDownList("DdlAC4").DataBind() ' e.Row.FCLabel("LblClasificacion").Visible = False e.Row.FCDropDownList("DdlAC5").Visible = VerificaPresupuesto 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") End If 'CLASIFICACION If isWithFamily() Then e.Row.FCLabel("LblClasificacion").Text = e.Row.DBCampo("SubFamilia") Else e.Row.FCLabel("LblClasificacion").Text = e.Row.DBCampo("Clasificacion") End If Dim Drr As DataRow = Nothing Drr = GlobalDTOCEstatus(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveEstatus = {0}", CveEstatus))(0) If Drr IsNot Nothing AndAlso UsuarioActual.TienePermisoProceso(203) AndAlso Drr("TipoTermino").ToString.ToEntero = 3 AndAlso Drr("Tipo").ToString = "OC" Then If e.Row.DataKey("CveCompra").ToEntero > 0 Then If e.Row.DBCampo("CantidadNoEditable").ToDecimal >= e.Row.DBCampo("Cantidad").ToDecimal Then '[IPP] PARA PODER EDITAR e.Row.FCLinkButton("imgE").Enabled = False e.Row.FCLinkButton("imgE").ToolTip = "El concepto no se puede editar porque ya esta asignado a una compra" e.Row.FCLinkButton("imgD").Enabled = False e.Row.FCLinkButton("imgD").ToolTip = "El concepto no se puede eliminar porque ya esta asignado a una compra" End If End If End If 'SI EL CONCEPTO YA TIENE ALGUNA RECEPCIÓN A ALMACÉN O VINCULACIÓN A COMPRA NO SE PUEDE ELIMINAR If e.Row.DBCampo("CantidadNoEditable").ToDecimal > 0 Then e.Row.FCLinkButton("imgD").Enabled = False e.Row.FCLinkButton("imgD").ToolTip = "El concepto no se puede eliminar porque ya esta asignado a una compra" e.Row.FCLinkButton("imgD").Attributes.Remove("Data-toggle") e.Row.FCLinkButton("imgD").Attributes.Add("Data-toggle", "tooltip") End If End If If e.Row.RowState = DataControlRowState.Edit OrElse e.Row.RowState = 5 Then e.Row.FCTextBox("TxtObsPS").Attributes.Add("maxlength", "750") Dim FiltroClasificacion = "" 'DDL CLASIFICACION If isWithFamily() Then e.Row.FCDropDownList("DdlClasificacion").DataSource = GlobalDTSubFamilias(CveEmpresaActual) 'GlobalDTClasificaciones(CveEmpresaActual).FiltraParametros("Codigo is null OR Codigo = ''") e.Row.FCDropDownList("DdlClasificacion").DataBind() e.Row.FCDropDownList("DdlClasificacion").SelectedValueExist(e.Row.DBCampo("CveSubFamilia")) FiltroClasificacion = String.Format("CveClasificacionCosto = {0}", e.Row.DBCampo("CveSubFamilia")) Else e.Row.FCDropDownList("DdlClasificacion").DataSource = GlobalDTClasificaciones(CveEmpresaActual) e.Row.FCDropDownList("DdlClasificacion").DataBind() e.Row.FCDropDownList("DdlClasificacion").SelectedValueExist(e.Row.DBCampo("CveClasificacion")) FiltroClasificacion = String.Format("CveClasificacion = {0}", e.Row.DBCampo("CveClasificacion")) End If If CveOrdenCompra > 0 AndAlso (e.Row.DBCampo("CantidadVinculadaCompra").ToDecimal > 0 OrElse e.Row.DBCampo("CantidadSurtidaAlmacen").ToDecimal > 0 OrElse e.Row.DBCampo("CantidadVinculada").ToDecimal > 0) Then e.Row.FCDropDownList("DdlPS").Enabled = False e.Row.FCDropDownList("DdlClasificacion").Enabled = False e.Row.FCDropDownList("CboUnidadMedidaEdit").Enabled = False 'que tenga el permiso que no bloquee If Not UsuarioActual.TienePermisoProceso(329) AndAlso e.Row.DBCampo("CantidadVinculadaCompra").ToDecimal = 0 Then 'permite editar pu, aun estando recibida e.Row.FCTextBox("TxtImporteEdit").Enabled = False e.Row.FCTextBox("TxtDescuentoEdit").Enabled = False End If End If 'DDL PS If e.Row.DBCampo("CveClasificacion").ToString() <> "" Then e.Row.FCDropDownList("DdlPS").DataSource = GlobalDTPS(CveEmpresaActual).FiltraParametros(FiltroClasificacion, "PS") Else e.Row.FCDropDownList("DdlPS").DataSource = GlobalDTPSSimplificado(CveEmpresaActual) End If e.Row.FCDropDownList("DdlPS").DataBind() e.Row.FCDropDownList("DdlPS").SelectedValueExist(e.Row.DBCampo("CvePS")) DdlPS_SelectedIndexChanged1(e.Row.FCDropDownList("DdlPS"), EventArgs.Empty) Dim dr As DataRow = GlobalDTSubProyectos(-1, e.Row.DBCampo("CveSubProyecto").ToEntero, CveEmpresaActual).FiltroPrimero("") If dr IsNot Nothing Then If UsuarioActual.Empresa.Tipo_CentroCosto = 1 Or UsuarioActual.Empresa.Tipo_CentroCosto = 2 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.Tipo_CentroCosto = 1 Or UsuarioActual.Empresa.Tipo_CentroCosto = 2 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 'SI ES POR GENERAR CONTRATO If e.Row.DBCampo("CveContratoDetalle").ToEntero > 0 Then If UsuarioActual.Empresa.Tipo_CentroCosto = 1 Or UsuarioActual.Empresa.Tipo_CentroCosto = 2 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() If e.Row.DBCampo("CveProyecto").ToEntero > 0 Then e.Row.FCDropDownList("DdlProyectoEdit").SelectedValueExist(e.Row.DBCampo("CveProyecto").ToEntero) End If End If If UsuarioActual.Empresa.Tipo_CentroCosto = 1 Or UsuarioActual.Empresa.Tipo_CentroCosto = 2 Then e.Row.FCDropDownList("DdlSubProyectoEdit").DataSource = DtEstatusUsuarios.FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}) Else e.Row.FCDropDownList("DdlSubProyectoEdit").DataSource = DtEstatusUsuarios.FiltraParametros(String.Format("CveProyecto = {0}", e.Row.FCDropDownList("DdlProyectoEdit").SelectedValue.ToEntero), "", {"CveSubProyecto", "SubProyecto"}) ' 'GlobalDTSubProyectos(dr("CveProyecto").ToString.ToEntero) End If e.Row.FCDropDownList("DdlSubProyectoEdit").DataBind() If e.Row.DBCampo("CveSubProyecto").ToEntero > 0 Then e.Row.FCDropDownList("DdlProyectoEdit").SelectedValueExist(e.Row.DBCampo("CveSubProyecto").ToEntero) End If End If If UsuarioActual.Empresa.Funcionalidad(590).ToString.ToEntero = 1 Then 'empresa agricola e.Row.FCDropDownList("DdlCultivosCuadroEdit").Visible = True e.Row.FCDropDownList("DdlCultivosCuadroEdit").DataSource = GlobalDTCultivosCuadro(UsuarioActual.CveEmpresa).FiltraParametros($"CveSubProyecto = {e.Row.DBCampo("CveSubProyecto").ToEntero()} AND Estatus =1") e.Row.FCDropDownList("DdlCultivosCuadroEdit").DataBind() e.Row.FCDropDownList("DdlCultivosCuadroEdit").Items.Insert(0, New ListItem("Seleccione uno", "-1")) e.Row.FCDropDownList("DdlCultivosCuadroEdit").SelectedValueExist(e.Row.DBCampo("CveCultivoCuadroDetalle").ToEntero) 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)) e.Row.FCTextBox("TxtCantEdit").Attributes.Add("onblur", $"ValidarCantidadMenor(this,{e.Row.DBCampo("CantidadNoEditable").ToDecimal});") End If 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() DtDetalle.AcceptChanges() CargaDatosDetalles() End Sub Protected Sub GvD_RowEditing(sender As Object, e As GridViewEditEventArgs) Handles GvD.RowEditing GvD.EditIndex = e.NewEditIndex CargaDatosDetalles() Dim EditingRow As GridViewRow = GvD.Rows(e.NewEditIndex) If Not EsCreaApartirDe AndAlso Not UsuarioActual.TienePermisoProceso(203) Then 'si tiene el proce 131, e va a permitir, sino que lo bloquee If EditingRow.DataKey("TipoDato").ToEntero = 2 Or EditingRow.DataKey("CantidadNoEditable").ToDecimal > 0 Then EditingRow.FCDropDownList("DdlClasificacion").Enabled = False EditingRow.FCDropDownList("DdlPS").Enabled = False EditingRow.FCDropDownList("CboUnidadMedidaEdit").Enabled = False EditingRow.FCDropDownList("DdlProyectoEdit").Enabled = False EditingRow.FCDropDownList("DdlSubProyectoEdit").Enabled = False EditingRow.FCTextBox("LblEditCodigo").Enabled = False End If End If If ContratoObraAplciado Then EditingRow.FCDropDownList("DdlClasificacion").Enabled = False EditingRow.FCDropDownList("DdlPS").Enabled = False EditingRow.FCDropDownList("CboUnidadMedidaEdit").Enabled = False EditingRow.FCDropDownList("DdlProyectoEdit").Enabled = False EditingRow.FCDropDownList("DdlSubProyectoEdit").Enabled = False EditingRow.FCTextBox("LblEditCodigo").Enabled = False End If End Sub Protected Sub GvD_RowUpdating(sender As Object, e As GridViewUpdateEventArgs) Handles GvD.RowUpdating Dim Cantidad, Importe, Descuento As Decimal Dim CveUnidad, CveClasificacion, CveActivoFijo, CvePS, CveSubProyecto, CveProyecto, CveCultivoCuadroDetalle As Integer Dim Obs, UM, Clasificacion, Codigo, PS, SubProyecto, Proyecto, Cuadro As String Dim gvr As GridViewRow = GvD.Rows(e.RowIndex) Cantidad = gvr.FCTextBox("TxtCantEdit").Text.Trim.ToDecimal Importe = gvr.FCTextBox("TxtImporteEdit").Text.Trim.ToDecimal Descuento = gvr.FCTextBox("TxtDescuentoEdit").Text.Trim.ToDecimal 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 'SE TOMAN VALORES EN CASO DE QUE LA CvePS SEA DIFERENTE DE LA ANTERIOR Dim CvePSAnterior = gvr.DataKey("CvePS").ToEntero PS = gvr.DataKey("PS").ToString Dim RetISR = gvr.DataKey("RetISRPorcentaje").ToDecimal Dim RetIVA = gvr.DataKey("RetIVAPorcentaje").ToDecimal 'Dim IvaPS = gvr.DataKey("IVAPorcentaje").ToDecimal Dim IEPSPS = gvr.DataKey("IEPSPSPorcentaje").ToDecimal Dim IEPSPSIVA = gvr.DataKey("IEPSPSIVAPorcentaje").ToDecimal Dim Total = Importe * Cantidad - Descuento 'VALORES DEL PS CvePS = gvr.FCDropDownList("DdlPS").SelectedValue.ToEntero PS = gvr.FCDropDownList("DdlPS").SelectedItem.Text Dim DrPS = GlobalDTPS(CveEmpresaActual, CvePS:=CvePS).FiltroPrimero("") If DrPS Is Nothing Then Alert("Ocurrió un error al cargar la información del producto para actualizar. Por favor vuelva a intentar.", TipoMensaje.MsgAdvertencia) Exit Sub End If Dim IvaPS = DrPS("IVA").ToString.ToDecimal IEPSPS = DrPS("IEPSPorcentaje").ToString.ToDecimal IEPSPSIVA = If(DrPS("IEPSGrabaIVA").ToString = "True", DrPS("IEPSPorcentaje").ToString.ToDecimal, 0) If CvePS <> CvePSAnterior Or Not CveOrdenCompra > 0 Then RetISR = DrPS("RetISR").ToString.ToDecimal RetIVA = DrPS("RetIVA").ToString.ToDecimal 'If IvaPS = -1 Then 'IVA DE LA SUCURSAL ' IvaPS = GlobalDTSubProyectos(-1, gvr.FCDropDownList("DdlSubProyectoEdit").SelectedValue.ToEntero).FiltroPrimeroValor("IVA").ToDecimal 'End If ' IEPSPSIVA = If(DrPS("IEPSGrabaIVA").ToString = "True", DrPS("IEPSPorcentaje").ToString.ToDecimal, 0) End If CveSubProyecto = gvr.FCDropDownList("DdlSubProyectoEdit").SelectedValue.ToEntero SubProyecto = gvr.FCDropDownList("DdlSubProyectoEdit").SelectedItem.Text CveCultivoCuadroDetalle = gvr.FCDropDownList("DdlCultivosCuadroEdit").SelectedValue.ToEntero Cuadro = "" If CveCultivoCuadroDetalle > 0 Then Cuadro = gvr.FCDropDownList("DdlCultivosCuadroEdit").SelectedItem.Text End If If UsuarioActual.Empresa.Tipo_CentroCosto = 1 Or UsuarioActual.Empresa.Tipo_CentroCosto = 2 Then CveProyecto = -1 Proyecto = "Seleccione" Else CveProyecto = gvr.FCDropDownList("DdlProyectoEdit").SelectedValue.ToEntero Proyecto = gvr.FCDropDownList("DdlProyectoEdit").SelectedItem.Text End If If UsuarioActual.Empresa.Funcionalidad(532) = "1" Then Dim ObjCon As New ClsContratos Dim CvePresupuesto As Integer = 0 Dim Autorizado As Decimal = 0 Dim Ejercido As Decimal = 0 If ObjCon.GetPresupuestos(-1, "-1", CveSubProyecto, 2, -1, UsuarioActual.CveEmpresa) Then If ObjCon.DtResultados.Rows.Count > 0 Then CvePresupuesto = ObjCon.DtResultados.Rows(0)("CvePresupuesto").ToString.ToEntero If CvePresupuesto > 0 Then If ObjCon.GetPresupuestosDetalle(CvePresupuesto, -1, UsuarioActual.CveEmpresa) Then If ObjCon.DtResultados.FiltraParametros($"CveClasificacion = {CveClasificacion} And Importe > 0").Rows.Count > 0 Then Autorizado = ObjCon.DtResultados.FiltraParametros($"CveClasificacion = {CveClasificacion} And Importe > 0").Rows(0)("Importe").ToString.ToDecimal End If End If If ObjCon.GetPresupuestosRep(CvePresupuesto, -1, 1, $"01/09/{DateTime.Now.Year - 1}".ToDate, Now, UsuarioActual.CveEmpresa, CveProyecto, CveSubProyecto, UsuarioActual.CveUsuario, CveClasificacion) Then If ObjCon.DtResultados.Rows.Count > 0 Then Ejercido = ObjCon.DtResultados.Rows(0)("Ejercido").ToString.ToDecimal End If End If End If End If End If ObjCon.Dispose() If CvePresupuesto > 0 And Autorizado > 0 Then Dim Diferencia As Decimal = (Ejercido + Total) - Autorizado If Diferencia > 0 Then Alert($"No hay presupuesto disponible en el subproyecto {SubProyecto} y la clasificación {Clasificacion} se excede por {Diferencia.FormatoNumero}", TipoMensaje.MsgAdvertencia) Exit Sub End If End If 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 = "" Dim dr As DataRow() = DtDetalle.Select("CveOrdenCompraDetalle = " & gvr.DataKey("CveOrdenCompraDetalle").ToString.ToEntero) dr(0)("Cantidad") = Cantidad dr(0)("CveUnidadMedida") = CveUnidad dr(0)("UM") = UM dr(0)("CveClasificacion") = CveClasificacion dr(0)("Clasificacion") = Clasificacion If isWithFamily() Then dr(0)("CveSubFamilia") = CveClasificacion dr(0)("SubFamilia") = Clasificacion End If 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") = Total dr(0)("IEPSPS") = IEPSPS * Total dr(0)("IEPSPSPorcentaje") = IEPSPS dr(0)("IEPSPSIVA") = IEPSPSIVA * Total dr(0)("IEPSPSIVAPorcentaje") = IEPSPSIVA 'If DdlIVA.SelectedValue.ToDecimal = 1 Then dr(0)("IVA") = 0 Else dr(0)("IVA") = IvaPS * Total dr(0)("IVAPorcentaje") = If(IvaPS = -1, Math.Round(DdlIVA.SelectedValue.ToDecimal - 1, 2), 0) Dim TotalGravado As Decimal = Total If IEPSPSIVA > 0 Then TotalGravado = Total * (1 + IEPSPSIVA) 'grava para iva, el importe del IEPS dr(0)("IVA") = Math.Round(dr(0)("IVAPorcentaje").ToString.ToDecimal * TotalGravado, 2) dr(0)("RetIVA") = RetIVA * Total dr(0)("RetIVAPorcentaje") = RetIVA dr(0)("RetISR") = RetISR * Total dr(0)("RetISRPorcentaje") = RetISR dr(0)("CveActivoFijo") = CveActivoFijo dr(0)("CodigoAF") = Codigo dr(0)("CveCultivoCuadroDetalle") = CveCultivoCuadroDetalle dr(0)("Cuadro") = Cuadro 'si el tipodato viene de la BD, entonces sufrió una actualización If dr(0)("TipoDato").ToString.ToEntero = 2 Then dr(0)("TipoDato") = 1 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 " DESHABILITAR " Protected Sub DesHabilitar() TxtFechaEstimadaEntrega.Enabled = False TxtDescrip.Enabled = False TxtFolioAdicional.Enabled = False TxtJustificacion.Enabled = False DdlPrioridad.Enabled = False txtobsprioridad.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 BtnGuardar.Enabled = False BtnCancelar.Enabled = False DdlProyecto.Enabled = False DdlSubProyecto.Enabled = False txtPrecioUnitario.Enabled = False gvCotizaciones.Enabled = False DdlProveedorSucursal.Enabled = False DdlProveedorContacto.Enabled = False GvD.Columns(10).Visible = False GvD.Columns(11).Visible = True If Not (BtnCancelarPrevio.Enabled And (CveEstatus <> CveEstatusFinalError OrElse CveEstatus <> CveEstatusFinalOK OrElse UsuarioActual.TienePermisoProceso(148).ToEntero > 0)) Then BtnCancelarPrevio.Enabled = False End If 'PROVEEDOR DdlProveedores.Enabled = False DdlIVA.Enabled = False ImgCambiaProv.Visible = False UPProv.Update() 'DATOS DE VENTA txtLugarEntrega.Enabled = False TxtLugarEntregaDirecta.Enabled = False ChkEntregaDirecta.Enabled = False If UsuarioActual.CveUsuario = CveUsuario And Not (TieneVenta > 0 Or TieneCompraInv > 0) Then 'SI ES EL MISMO USUARIO QUE CREO LA OC PUEDE EDITAR CLIENTE Y VENDEDOR ImgCambiaClienteVendedor.Visible = True Else Ddlcliente.Enabled = False DdlVendedor.Enabled = False End If ChkPromocion.Enabled = False TxtPromocion.ReadOnly = True TxtGuia.ReadOnly = True DdlUsoCFDI.Enabled = False 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(CveEmpresaActual) 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(CveEmpresaActual) 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(CveEmpresaActual).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, CveEmpresaActual, 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 CargaDatosDetalles() UpPresupuestosAC.Update() End Sub Private Sub MuestraPresupuestosEgresos() Dim Width = GvD.Width Dim Width2 = DivConceptosContenido.Style("Width") 'Seccion Grid If VerificaPresupuesto Then GvD.Width = 1750 GvD.Columns(13).Visible = True GvD.Columns(14).Visible = True GvD.Columns(15).Visible = True GvD.Columns(16).Visible = True GvD.Columns(17).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 = Width.ToEntero GvD.Columns(13).Visible = False GvD.Columns(14).Visible = False GvD.Columns(15).Visible = False GvD.Columns(16).Visible = False GvD.Columns(17).Visible = False UpPresupuestosAC.Visible = False End If 'CargaDatosDetalles() UPPDetalle.Update() 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, CveEmpresaActual, 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 MuestraPresupuestosEgresos() 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, CveEmpresaActual) 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 Decimal 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 Decimal 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.ToDecimal 'OBTENEMOS EL REGISTRO DEL PE SELECCIONADO Filtro.AppendFormat("CveProgramaOperativo = {0} and CveUnidadAdministrativa = {1} and CveFuenteFinanciamiento = {2} and CveTipoGasto= {3} and CveClasificacion = {4}", If(Ddl1.SelectedValue.ToString = "", "-1", Ddl1.SelectedValue.ToString), If(Ddl2.SelectedValue.ToString = "", "-1", Ddl2.SelectedValue.ToString), If(Ddl3.SelectedValue.ToString = "", "-1", Ddl3.SelectedValue.ToString), If(Ddl4.SelectedValue.ToString = "", "-1", Ddl4.SelectedValue.ToString), If(Ddl5.SelectedValue.ToString = "", "-1", 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(8).BackColor = Drawing.Color.Green Else Alert("No hay presupuesto asignado", TipoMensaje.MsgAdvertencia) grid.Cells(8).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(8).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 UsuarioActual.Empresa.Funcionalidad(556) = "1" AndAlso 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 ' Sin captura 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", False, True)) > 0 Then Dim index = CType(DirectCast(e.CommandSource, Button).NamingContainer, GridViewRow).RowIndex Dim dr = DtDetalle.Rows(index) If Not Cve(1).ToString.ToUpper = "TRUE" Then Dim Importe = DirectCast(e.CommandSource, Button).Text.ToDecimal Dim Total = Importe * dr("Cantidad").ToString.ToDecimal dr("Importe") = DirectCast(e.CommandSource, Button).Text dr("Total") = dr("Importe").ToString.ToDecimal * dr("Cantidad").ToString.ToDecimal dr("IVA") = dr("IVAPorcentaje").ToString.ToDecimal * Total dr("RetIVA") = dr("RetIVAPorcentaje").ToString.ToDecimal * Total dr("RetISR") = dr("RetISRPorcentaje").ToString.ToDecimal * Total dr("IEPSPS") = dr("IEPSPSPorcentaje").ToString.ToDecimal * Total dr("IEPSPSIVA") = dr("IEPSPSIVAPorcentaje").ToString.ToDecimal * Total dr("CveProveedor") = Cve(2).ToString.ToEntero Else dr("Importe") = "0" dr("Total") = "0" dr("CveProveedor") = Cve(2).ToString.ToEntero End If 'ACTUALIZO DATO EN DB If OC.UpdateOrdenCompraDetalle(dr("Cantidad").ToString.ToDecimal, dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, dr("Importe").ToString.ToDecimal, 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.ToDecimal, IEPSPS:=dr("IEPSPS").ToString.ToDecimal, IEPSPSIVA:=dr("IEPSPSIVA").ToString.ToDecimal, IVA:=dr("IVA").ToString.ToDecimal, RetIVA:=dr("RetIVA").ToString.ToDecimal, RetISR:=dr("RetISR").ToString.ToDecimal, Total:=dr("Total").ToString.ToDecimal, CveContratoDetalle:=dr("CveContratoDetalle").ToString.ToEntero, IVAPorcentaje:=dr("IVAPorcentaje").ToString.ToDecimal, RetIVAPorcentaje:=dr("RetIVAPorcentaje").ToString.ToDecimal, RetISRPorcentaje:=dr("RetISRPorcentaje").ToString.ToDecimal, IEPSPSPorcentaje:=dr("IEPSPSPorcentaje").ToString.ToDecimal, IEPSPSIVAPorcentaje:=dr("IEPSPSIVAPorcentaje").ToString.ToDecimal) <= 0 Then TieneError = True End If CargaDatosDetalles() End If If Not TieneError Then OC.Commit() Else OC.RollBack() Alert("Ocurrió un error al seleccionar ganador en la cotización. Por favor vuelva a intentar.", TipoMensaje.MsgError) End If OC.Dispose() CargaCotizaciones(CveOrdenCompra) End If End If End Sub Protected Sub gvCotizaciones_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles gvCotizaciones.RowDataBound 'Pongo el nombre del proveedor en el encabezado If e.Row.RowType = DataControlRowType.Header Then For i As Integer = 1 To NumCotizaciones e.Row.Cells(i + 2).Text = String.Format("{2}", CveOrdenCompra, DtCotizaciones.Rows(i - 1)("CveCotizacion"), If(Not IsDBNull(DtCotizaciones.Rows(i - 1)("CveProveedor")), DtCotizaciones.Rows(i - 1)("RazonSocial"), DtCotizaciones.Rows(i - 1)("Colectiva")), If(Not IsDBNull(DtCotizaciones.Rows(i - 1)("CveProveedor")), DtCotizaciones.Rows(i - 1)("RazonSocial"), DtCotizaciones.Rows(i - 1)("Colectiva"))) e.Row.Cells(i + 2).Attributes.Add("style", "text-align:center!important") '", Next End If If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.DataKey("Descripcion").ToString = "Total" Then e.Row.Cells(2).Attributes.Add("style", "text-align:right") End If 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)).ToDecimal.ToString("N2") Btn.Visible = True 'Btn.Enabled = True 'Btn.OnClientClick = "return false;" e.Row.Cells(2 + i).Text = String.Format("{0}", e.Row.DBCampo(String.Format("PU{0}", i)).ToDecimal.ToString("N2")) Next Else Dim CellMasBarato As Integer = -1 Dim Monto As Decimal = -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).ToDecimal.ToString("N2") Btn.CommandArgument = String.Format("{0}|{1}|{2}", e.Row.DBCampo(String.Format("CveCotizacionDetalle{0}", i)), False, DtCotizaciones.Rows(i - 1)("CveProveedor").ToString) Btn.Style.Add("cursor:", "pointer") If e.Row.DBCampo(String.Format("PU{0}", i)).ToDecimal > 0 Then If Monto.ToString = "-1" Then Monto = e.Row.DBCampo(String.Format("PU{0}", i)).ToDecimal CellMasBarato = i End If If e.Row.DBCampo(String.Format("PU{0}", i)).ToDecimal < Monto Then CellMasBarato = i Monto = e.Row.DBCampo(String.Format("PU{0}", i)).ToDecimal End If Else Btn.Text = "Sin captura" Btn.Attributes.Add("onclick", "return false;") 'Btn.Enabled = True 'Btn.Visible = False End If Next 'Coloreo el más barato If CellMasBarato > 0 Then e.Row.Cells(CellMasBarato + 2).BackColor = Drawing.Color.LightBlue 'COLOREA GANADORES 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).ToDecimal.ToString("N2") If e.Row.DBCampo("EsGanadora" & i).ToString = "True" Then e.Row.Cells(i + 2).BackColor = Drawing.Color.LightGreen Btn.CommandArgument = String.Format("{0}|{1}|{2}", e.Row.DBCampo(String.Format("CveCotizacionDetalle{0}", i)), True, DtCotizaciones.Rows(i - 1)("CveProveedor").ToString) 'Btn.OnClientClick = "return false;" 'Btn.Enabled = True 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 Body = GeneraCorreoEliminarCotizacion(HdnCveCotizacion.Value.ToEntero, TxtMotivoEliminacion.Text.Trim) 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, CveEmpresaActual, Codigo, Descripcion, CveTipoActivoFijo, CveSubTipoActivoFijo, "-1", -1, -1, -1, -1, -1, "", -1, UsuarioActual.CveEmpresa) 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(CveEmpresaActual) '.FiltraParametros("CveEmpresa = " & CveEmpresaActual) DdlAFTipoActivoFijo.DataBind() DdlAFTipoActivoFijo.Items.Insert(0, New ListItem("Seleccione", "-1")) End Sub Private Sub CargaSubTipoActivoFijo() DdlAFSubTipoActivoFijo.Items.Clear() DdlAFSubTipoActivoFijo.DataSource = GlobalDTSubTipoActivoFijo(CveEmpresaActual).FiltraParametros("CveTipoActivoFijo = '" & DdlAFTipoActivoFijo.SelectedValue & "'") 'DdlSubTipoActivoFijo.DataSource = GlobalDTSubTipoActivoFijo.FiltraParametros("CveEmpresa = " & CveEmpresaActual & " 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, CveEmpresaActual, LblCodigo.Text, "-1", -1, -1, "-1", -1, -1, -1, -1, -1, "", -1, UsuarioActual.CveEmpresa) 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, CveEmpresaActual, HdnCodAFEdit.Value, "-1", -1, -1, "-1", -1, -1, -1, -1, -1, "", UsuarioActual.CveEmpresa) 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.DBCampo("Archivo").ToString.Trim <> "" AndAlso CveOrdenCompra > 0 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 End If End Sub Protected Sub GvBitacoraEva_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvBitacoraEva.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.DBCampo("Archivo").ToString.Trim <> "" AndAlso CveOrdenCompra > 0 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 End If End Sub Protected Sub LnkAddCotEva_Click(sender As Object, e As EventArgs) Handles LnkAddCotEva.Click HdnEsCotizacion.Value = "1" ChkEventoPrioridad.Visible = False HBitacora.InnerText = "Cotización" LblBitacora.InnerText = "Cotización" UPAddEventoBitacora.Update() UpTituloBitacora.Update() RegistraScript("$('#ModalBitacora').modal('show');") End Sub Protected Sub ImgAddObs_Click(sender As Object, e As EventArgs) Handles ImgAddObs.Click HdnEsCotizacion.Value = "0" ChkEventoPrioridad.Visible = True HBitacora.InnerText = "Bitácora" LblBitacora.InnerText = "Bitácora/Observaciones" UPAddEventoBitacora.Update() UpTituloBitacora.Update() RegistraScript("$('#ModalBitacora').modal('show');") End Sub Protected Sub BtnGuardarEventoBitacora_Click(sender As Object, e As EventArgs) Handles BtnGuardarEventoBitacora.Click If CveOrdenCompra > 0 Then GuardaBitacora(HdnEsCotizacion.Value.ToEntero() > 0) Else AgregaBitacoraTemporal() End If End Sub Private Function CreaObjetoEmpresa(CveEmpresa As Integer) As Empresa Dim Retorno As Empresa = Nothing Dim ObjEmpresa As New ClsSisEmpresas() If ObjEmpresa.GetEmpresas(CveEmpresa, "-1", "-1", "-1", "-1") Then If ObjEmpresa.GetEmpresasFuncionalidades(CveEmpresa) Then Dim dttmp As Data.DataTable = ObjEmpresa.DtResultados Dim EmpresasFuncionalidades As New HybridDictionary For Each Row As Data.DataRow In dttmp.Rows EmpresasFuncionalidades.Add(Convert.ToInt32(Row("CveFuncionalidad")), Row("Valor").ToString) Next ObjEmpresa.Empresa.SetFuncionalidades(EmpresasFuncionalidades) End If Retorno = ObjEmpresa.Empresa End If ObjEmpresa.Dispose() Return Retorno End Function #Region " GUARDA DIRECTO " Private Sub GuardaBitacora(Optional EsCotizacion As Boolean = False) Dim ObjEventoBitacora As New ClsOIEventos Dim FileExtension As String = "" Dim Filesgral As List(Of Archivo) = Anexo.getfiles().Archivos Dim Filename As String = "" For Each fileItem As Archivo In Filesgral FileExtension = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)) '.Replace(".", "") Filename = fileItem.filename Next Dim descripcion As String = TxtEventoDescripcion.Text.Trim Dim Prioridad As Integer = If(EsCotizacion, 4, If(ChkEventoPrioridad.Checked, 3, 1)) If ObjEventoBitacora.AddEventoBitacora(descripcion, String.Format("{0}", FileExtension), UsuarioActual.CveUsuario, CveEmpresaActual, CveOC:=CveOrdenCompra, Prioridad:=Prioridad) Then If Filename <> "" Then If EmpresaActualOC IsNot Nothing Then Filename.FilesMove(String.Format("OI{0}", ObjEventoBitacora.CveEvento.ToString), String.Format("{0}\OI", EmpresaActualOC.Ruta), ConcatenarDirectorioBase:=False) Else Filename.FilesMove(String.Format("OI{0}", ObjEventoBitacora.CveEvento.ToString), String.Format("Empresas\{0}\OI", CveEmpresaActual)) End If End If GvEB.DataSource = ObjEventoBitacora.DtResultados TxtEventoDescripcion.Text = "" Anexo.Text = "[]" ChkEventoPrioridad.Checked = False Alert($"La {If(EsCotizacion, "cotización", "bitácora/observación")} se guardó correctamente", TipoMensaje.MsgInformacion) RegistraScript("$('#ModalBitacora').modal('hide')", "hidemodal") 'obtener el Evento de bitacora para enviar el correo If ObjEventoBitacora.GetEvento(ObjEventoBitacora.CveEvento, UsuarioActual.CveUsuario, CveEmpresaActual) 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("{0}Empresas/{1}/OI/{2}", UrlSitio, CveEmpresaActual, ObjEventoBitacora.Archivo)) End If End If End If ObjEventoBitacora.Dispose() GvEB.DataBind() UPEventoBitacora.Update() CargaEventoBitacora() UPAddEventoBitacora.Update() End Sub Private Sub CargaEventoBitacora() Dim ObjEventoBitacora As New ClsOIEventos() If ObjEventoBitacora.GetAgendaBitacora(UsuarioActual.CveUsuario, CveEmpresaActual, CveOC:=CveOrdenCompra) Then If ObjEventoBitacora.DtResultados.FiltraParametros("CveTipoEvento IN (6,2) AND CvePrioridad=3").Rows.Count > 0 Then DivEventoUrgente.Visible = True End If GvEB.DataSource = ObjEventoBitacora.DtResultados.FiltraParametros("CveTipoEvento IN (6,2) AND CvePrioridad <> 4") GvBitacoraEva.DataSource = ObjEventoBitacora.DtResultados.FiltraParametros("CvePrioridad = 4") Else GvEB.DataSource = Nothing End If ObjEventoBitacora.Dispose() GvEB.DataBind() GvBitacoraEva.DataBind() UPEventoBitacora.Update() UpIvas.Update() End Sub #End Region #Region " GUARDA TEMPORAL " Private Sub InicializaBitacoraTemporal() If Not CveOrdenCompra > 0 Then DtBitacora = New DataTable DtBitacora.Columns.Add("FechaIng", GetType(String)) DtBitacora.Columns.Add("FechaInicio", GetType(String)) DtBitacora.Columns.Add("Usuario", GetType(String)) DtBitacora.Columns.Add("CveUsuario", GetType(String)) DtBitacora.Columns.Add("Descripcion", GetType(String)) DtBitacora.Columns.Add("Prioridad", GetType(String)) DtBitacora.Columns.Add("FileExtension", GetType(String)) DtBitacora.Columns.Add("Archivo", GetType(String)) DtBitacora.Columns.Add("CveOrdenCompra", GetType(String)) DtBitacora.Columns.Add("CveEmpresa", GetType(String)) End If End Sub Private Sub AgregaBitacoraTemporal() Dim ObjEventoBitacora As New ClsOIEventos 'Archivo Dim FileExtension As String = "" Dim Filename As String = "" Dim Filesgral As List(Of Archivo) = Anexo.getfiles().Archivos For Each fileItem As Archivo In Filesgral FileExtension = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)).Replace(".", "") Filename = fileItem.filename Next Dim Archivo As New System.IO.FileInfo(String.Format("{0}OI\Temp\OI{1}{2}.{3}", UsuarioActual.Empresa.Ruta, UsuarioActual.CveUsuario, DtDetalle.Rows.Count, FileExtension)) If Archivo.Exists() Then Archivo.Delete() 'File.Delete(String.Format("\Empresas\{0}\OI\Temp\OI{1}{2}.{3}", CveEmpresaActual, UsuarioActual.CveUsuario, DtDetalle.Rows.Count, FileExtension)) End If If Filename <> "" Then If EmpresaActualOC IsNot Nothing Then Filename.FilesMove(String.Format("OI{0}{1}", UsuarioActual.CveUsuario, DtDetalle.Rows.Count), String.Format("{0}OI\Temp", EmpresaActualOC.Ruta), ConcatenarDirectorioBase:=False) Else Filename.FilesMove(String.Format("OI{0}{1}", UsuarioActual.CveUsuario, DtDetalle.Rows.Count), String.Format("Empresas\{0}\OI\Temp", CveEmpresaActual)) End If End If 'AGREGA Dim Dr = DtBitacora.NewRow Dr("FechaIng") = Now Dr("FechaInicio") = "" Dr("Usuario") = UsuarioActual.Usuario Dr("CveUsuario") = UsuarioActual.CveUsuario Dr("Descripcion") = TxtEventoDescripcion.Text.Trim Dr("Prioridad") = If(ChkEventoPrioridad.Checked, 3, 1) Dr("Archivo") = String.Format("{0}OI\Temp\OI{1}{2}.{3}", UsuarioActual.Empresa.Ruta, UsuarioActual.CveUsuario, DtDetalle.Rows.Count, FileExtension) Dr("FileExtension") = String.Format(".{0}", FileExtension) Dr("CveOrdenCompra") = -1 Dr("CveEmpresa") = CveEmpresaActual DtBitacora.Rows.Add(Dr) 'LIMPIA TxtEventoDescripcion.Text = "" ChkEventoPrioridad.Checked = False RegistraScript("$('#ModalBitacora').modal('hide')", "hidemodal") CargaEventoBitacoraTemp() End Sub Private Sub CargaEventoBitacoraTemp() GvEB.DataSource = DtBitacora GvEB.DataBind() UPAddEventoBitacora.Update() UPEventoBitacora.Update() End Sub Private Function GuardaBitacoraTemporal(ObjEventoBitacora As ClsOIEventos) As Boolean Dim Retorno = False Dim Archivo As System.IO.FileInfo = Nothing For Each Dr As DataRow In DtBitacora.Rows If ObjEventoBitacora.AddEventoBitacora(Dr("Descripcion").ToString, Dr("FileExtension").ToString, UsuarioActual.CveUsuario, CveEmpresaActual, CveOC:=CveOrdenCompra, Prioridad:=Dr("Prioridad").ToString.ToEntero) Then Archivo = New System.IO.FileInfo(Dr("Archivo").ToString) If Archivo.Exists() Then File.Move(Archivo.ToString, String.Format("{0}OI\OI{1}{2}", UsuarioActual.Empresa.Ruta, ObjEventoBitacora.CveEvento.ToString, Archivo.Extension)) End If Else Retorno = True Exit For End If Next Return Retorno End Function #End Region 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) If IO.File.Exists(filePath) Then 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 Else UPEventoBitacora.Update() End If End Sub #End Region #Region " GENERAR ANTICIPOS " Private Sub CargarOptionAnticipos() If UsuarioActual.Empresa.Funcionalidad(108) = "1" Then DivVendedor.Visible = True option72.Visible = True DivFolioAdicional.Visible = True generarAnticipo.Visible = True 'Ddlcliente.DataSource = GlobalDTCliente(CveEmpresaActual) 'Ddlcliente.DataBind() 'Ddlcliente.Items.Insert(0, New ListItem(" - ", "-1")) DdlVendedor.DataSource = GlobalDTVendedores(CveEmpresaActual) DdlVendedor.DataBind() DdlVendedor.Items.Insert(0, New ListItem(" - ", "-1")) 'DivLugarEntrega1.Visible = False 'DivLugarEntrega2.Visible = False End If End Sub #End Region #Region " SOLICITAR ANTICIPOS " 'Private Sub InicializaSolicitarAnticipo() ' If CveOrdenCompra > 0 Then ' If CveIEAnticipo > 0 Then ' PorletIEAnticipo.Visible = True ' UpIEAnticipo.Update() ' Else ' If GlobalDTOCEstatus(CveEmpresaActual).FiltroPrimeroValor("TipoTermino", $"CveEstatus = {CveEstatus}").ToEntero.Contiene(0, 3) Then ' BtnSolicitudAnticipo.Visible = True ' DdlSAUsuario.DataSource = GlobalDTUsuarios(-1, CveEmpresaActual) ' DdlSAUsuario.DataBind() ' DdlSAUsuario.Items.Insert(0, New ListItem("Seleccione", "-1")) ' End If ' End If ' End If 'End Sub Protected Sub BtnSolicitarAnticipo_Click(sender As Object, e As EventArgs) Handles BtnSolicitarAnticipo.Click If TxtSAImporte.Text.ToDecimal > SaldoOCAnticipo Then Alert("El importe solicitado supera el saldo de la orden de compra", TipoMensaje.MsgAdvertencia) Exit Sub End If Dim Descripcion As New StringBuilder Descripcion.AppendFormat("Importe anticipo : ${0} ({1}%) - Pagar anticipo - Observacion: {2} ", TxtSAImporte.Text.FormatoNumero, TxtSAImPorcentaje.Text, CveOrdenCompra, TxtSAObservaciones.Text) Descripcion.AppendFormat("Orden de compra : {0} - Ir a la orden de compra - Imprimir OC", Folio, CveOrdenCompra, Encripta(String.Format("OP=OC&CVEOC={0}", CveOrdenCompra))) 'Dim Descripcion = $"Importe anticipo : ${TxtSAImporte.Text.FormatoNumero} ({TxtSAImPorcentaje.Text}%) - Pagar anticipo - Observacion: {TxtSAObservaciones.Text} " Dim Asunto = $"Solicitud de anticipo ({lblFolio.Text})" Dim ObjOC As New ClsOC Dim ObjOI As New ClsOIEventos(ObjOC.IniciaTransacSQL) Dim TieneError = False If ObjOI.AddEventoTarea(Asunto, Descripcion.ToString, 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, CveEmpresaActual) Then If Not ObjOC.AddSolicitudAnticipo(CveOrdenCompra, TxtSAImporte.Text.ToDecimal, CveEmpresaActual) Then TieneError = True End If Else TieneError = True End If If Not ObjOI.AddEventoBitacora($"Solicitud de anticipo de orden de compra por ${TxtSAImporte.Text.FormatoNumero}", "-1", UsuarioActual.CveUsuario, CveEmpresaActual, CveOC:=CveOrdenCompra) Then TieneError = True End If If Not TieneError Then RegistraScript("$('#ModalSolicitarAnticipo').modal('hide');", "ModalSolicitarAnticipoHide") ObjOC.Commit() EnviaCorreoSolicitudAnticipo(ObjOI.CveEvento) 'LIMPIA BtnSolicitudAnticipo.Visible = False DdlSAUsuario.SelectedValue = "-1" TxtSAImporte.Text = "" TxtSAObservaciones.Text = "" TxtSAImPorcentaje.Text = "" Alert("La solicitud de anticipo ha sido enviada correctamente.", TipoMensaje.MsgInformacion) Else ObjOC.RollBack() Alert("Ocurrió un error al hacer la solicitud de anticipo.", TipoMensaje.MsgError) End If ObjOC.Dispose() 'RECARGA LA BITACORA If Not TieneError Then CargaEventoBitacora() End If End Sub Private Sub EnviaCorreoSolicitudAnticipo(CveEvento As Integer) Dim Param As New List(Of String) Dim DtPara As DataTable = GlobalDTUsuarios(DdlSAUsuario.SelectedValue.ToString.ToEntero, CveEmpresaActual) Param.Add(DtPara.Rows(0)("Correo").ToString()) 'Para Param.Add("Solicitud de anticipo de Orden de Compra") 'Asunto Param.Add(GeneraCorreoAnticipo(lblFolio.Text, DtPara.Rows(0)("Nombre").ToString(), String.Format("http://sig.adssistemas.mx/OI/EventoDetalle.aspx?CveTipoEvento=1&CveEvento={0}", CveEvento), TxtSAImporte.Text, DdlProveedores.SelectedText)) Param.Add(String.Format("{0}PDF\OC-{1}.pdf", UsuarioActual.Empresa.Ruta, CveOrdenCompra)) Dim Hilo As New Threading.Thread(AddressOf MandaCorreoAnticipo) Hilo.Start(Param) End Sub Private Sub EnviaCorreoSolicitudAnticipoCancelado() 'If Not CveIEAnticipo > 0 Then 'SI NO SE HA REALIZADO EL ANTICIPO NOTIFICA QUE SE HA CANCELADO Dim ObjOC As New ClsOC If ObjOC.GetSolicitudAnticipoUsuarios(CveOrdenCompra, CveEmpresaActual) Then For Each Dr As DataRow In ObjOC.DtResultados.Rows Dim Param As New List(Of String) Dim DtPara As DataTable = GlobalDTUsuarios(Dr("CveUsuarioPara").ToString.ToEntero, CveEmpresaActual) Param.Add(DtPara.Rows(0)("Correo").ToString()) 'Para Param.Add("Solicitud de anticipo de Orden de Compra Cancelada") 'Asunto Param.Add(GeneraCorreoAnticipo(lblFolio.Text, DtPara.Rows(0)("Nombre").ToString(), String.Format("http://sig.s/OI/EventoDetalle.aspx?CveTipoEvento=1&CveEvento={0}", Dr("CveEvento").ToString.ToEntero), "", DdlProveedores.SelectedText)) Param.Add(String.Format("{0}PDF\OC-{1}.pdf", UsuarioActual.Empresa.Ruta, CveOrdenCompra)) Dim Hilo As New Threading.Thread(AddressOf MandaCorreoAnticipo) Hilo.Start(Param) Next End If ObjOC.Dispose() 'End If End Sub 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) Dim LSRutasMail As New List(Of ClsSisMail.ArchivoMail) If Parametros(3) IsNot Nothing AndAlso Parametros(3) <> "" Then LSRutasMail.Add(New ClsSisMail.ArchivoMail With {.Ruta = Parametros(3).ToString}) End If 'If Mail.MandaCorreo(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body, ArrayAttachment:=ArrayAttachment) Then If Mail.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body, Archivos:=LSRutasMail) Then Alert("Correos enviados") Else Alert("Correos no enviados") End If End Sub Private Function GeneraCorreoAnticipo(folio As String, para As String, link As String, importe As String, Proveedor As String) As String 'NOTA: CUANDO EL IMPORTE SEA "" QUIERE DECIR QUE ES EL CORREO DE CANCELACIÓN Dim Abreviatura As String = GlobalDTMonedas().FiltroPrimeroValor("Abreviatura", $"CveMoneda={DdlMoneda.SelectedValue}") Dim strBody As New StringBuilder strBody.Append("") strBody.Append(" ") strBody.Append("") strBody.Append("") strBody.Append("
") strBody.Append("
") strBody.Append("
") strBody.Append("
") strBody.Append($" Solicitud de anticipo {If(importe.ToDecimal > 0, "", " CANCELADA ")}") strBody.Append("
") strBody.Append("
") strBody.Append("
") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") If importe.ToDecimal > 0 Then strBody.Append(" ") strBody.Append(" ") End If If LblTotal.Text.Trim.ToDecimal > 0 Then strBody.Append(" ") strBody.Append(" ") End If strBody.Append("") strBody.Append("
Empresa") strBody.Append(UsuarioActual.Empresa.Empresa) strBody.Append("
Proveedor") strBody.Append(Proveedor) strBody.Append("
Fecha") strBody.Append(DateTime.Now.ToString("dd/MM/yy")) strBody.Append("
De") strBody.Append(UsuarioActual.Nombre) strBody.Append("
Para") strBody.Append(para) strBody.Append("
Folio") strBody.Append(folio) strBody.Append("
Importe Anticipo:") strBody.AppendFormat("{0} {1}", importe, Abreviatura) strBody.Append("
Importe OC:") strBody.AppendFormat("{0} {1}", LblTotal.Text, Abreviatura) strBody.Append("
Ver mas
") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append("") strBody.Append("") Return strBody.ToString End Function #End Region #Region "C O T I Z A C I O N E S" Protected Sub VerificaSiRequiereCotizacion() If TipoOC = "REQ" Then If ChkCotizacion.Checked Then If UsuarioActual.Empresa.Funcionalidad(565) = "1" Then If CveOrdenCompra > 0 AndAlso CveEstatus.Contiene(CveEstatusSupervisada, CveEstatusFinalOK) Then DdlProveedores.Attributes.Add("disabled", "disabled") DdlProveedores.Enabled = False ImgCambiaProv.Visible = False End If Else PnlProveedor.Visible = False End If UPProv.Update() : UPPEmp.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() : UPPEmp.Update() DdlProveedores.Enabled = True End If BtnGuardar.Enabled = True If CveEstatus = CveEstatusFinalOK Then BtnGuardar.Text = String.Format("Guardar{0}", If(CboE.SelectedValue.ToEntero = CveEstatusFinalOK, " y Generar OC", "")) PnlProveedor.Visible = True DdlProveedores.Enabled = True UPProv.Update() : UPPEmp.Update() End If End If UPPTab.Update() uppOpciones.Update() VerificaCotizacionesGanadoras() End If End Sub Protected Function ActualizarCotizacion(ByRef ObjVentas As ClsVentas) As Boolean Dim OcurrioError As Boolean = False Try Dim PorcentajeGanancia As Decimal = 0.3D For Each Row As DataRow In DtDetalle.Rows Dim CvePS As Integer = Row("CvePS").ToString.ToEntero Dim DrPS = GlobalDTPS(CveEmpresaActual, CvePS:=CvePS).FiltroPrimero("") Dim Cantidad As Decimal = Row("Cantidad").ToString.ToDecimal Dim PU As Decimal = Row("Importe").ToString.ToDecimal() + (Row("Importe").ToString.ToDecimal() * PorcentajeGanancia) Dim TotalCalculableImpuestos = (Cantidad * (PU)) Dim TotalCalculableImpuestosIVA = TotalCalculableImpuestos * (1 + DrPS("IEPSPorcentaje").ToString().ToDecimal) Dim PorcentajeIEPS As Decimal = DrPS("IEPSPorcentaje").ToString.ToDecimal Dim PorcentajeIVA As Decimal = 0D If DrPS("IVA").ToString().Contiene("-1", "") Then PorcentajeIVA = Row("IVAPorcentaje") Else PorcentajeIVA = DrPS("IVA") End If Dim ImporteIEPS As Decimal = (TotalCalculableImpuestos * PorcentajeIEPS).RoundSQL(2) Dim ImporteIVA As Decimal = (TotalCalculableImpuestosIVA * PorcentajeIVA).RoundSQL(2) If Not ObjVentas.UpdateVentaDetalleRemision(Row("CveVentaDetalleCotizacion").ToString.ToEntero, CvePS, Cantidad, PU, ImporteIEPS, PorcentajeIEPS, ImporteIVA, PorcentajeIVA, "", UsuarioActual.CveUsuario) Then OcurrioError = True Exit For End If Next Catch ex As Exception OcurrioError = True OnError("Ocurrió un error al guardar la cotización", ex) End Try Return Not OcurrioError End Function #End Region 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(UsuarioActual.CveEmpresa).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}", GlobalDTPS(CveEmpresaActual, CvePS:=dr("CvePS").ToString.ToEntero).FiltroPrimeroValor("CveSubFamilia"), dr("CveSubProyecto").ToString) 'Dim psclasificacion As String = String.Format("CveSubFamilia='{0}' AND CveSubProyecto={1}", GlobalDTProductosServicios(CveEmpresaActual, -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.ToDecimal - dr("Total").ToString.ToDecimal() 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.ToDecimal() < 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 Public Function isWithFamily() As Boolean Return CveEmpresaActual = 66 End Function Protected Sub DdlProveedores_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlProveedores.selectedindexchange Dim Objeto As New ClsCompProveedores DdlProveedorSucursal.Items.Clear() DdlProveedorSucursal.SelectedValue = Nothing DdlProveedorContacto.Items.Clear() DdlProveedorContacto.SelectedValue = Nothing If DdlProveedores.SelectedValue = "-1" Then DivProveedorSucursal.Visible = False DivProveedorContacto.Visible = False Else If Objeto.GetSucursales(DdlProveedores.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then If Objeto.DtResultados.Rows.Count > 0 Then DivProveedorSucursal.Visible = True DdlProveedorSucursal.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlProveedorSucursal.Items.Insert(1, New ListItem("Matriz", "0")) DdlProveedorSucursal.DataSource = Objeto.DtResultados Else DivProveedorSucursal.Visible = False End If End If If Objeto.GetProveedores(ClsCompProveedores.TipoConsulta.ParaUsoEnEmpresa, DdlProveedores.SelectedValue.ToEntero, "-1", "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa) Then If Objeto.DtResultados.Rows.Count > 0 Then If UsuarioActual.Empresa.Funcionalidad(565) = "1" Then Me.CveConfianzaProveedor = Objeto.DtResultados.FiltroPrimeroValor("CveConfianzaProveedor").ToEntero() 'SI NO TIENE ASIGNADO UN NIVEL DE CONFIANZA SE ASIGNARA EL VALOR DE 'PROVEEDOR NO DEDICADO' If CveConfianzaProveedor <= 0 Then CveConfianzaProveedor = 2 End If End If ChkCotizacion.Checked = CveConfianzaProveedor > 0 ChkCotizacion.Enabled = CveConfianzaProveedor <= 0 End If End If 'MONEDA PREFERENTE If CveOrdenCompra <= 0 Then DdlMoneda.SelectedValueExist(Objeto.CveMonedaPreferente) MonedaTexto = DdlMoneda.SelectedItem.Text End If 'MUESTRA IVA PROVEEDOR EXTRANJERO If GlobalDTCompProveedores(CveEmpresaActual).FiltraParametros($"CveProveedor = {DdlProveedores.SelectedValue} AND RFC = 'XEXX010101000'").Rows.Count = 1 Then 'Alert("Proveedor extranjero") LblLeyendaProveedorIVA.Text = "IVA 0%" 'Si es proveedor extranjero selecciona iva al 0% DdlIVA.SelectedValue = "1" Else LblLeyendaProveedorIVA.Text = "" 'Si es proveedor selecciona iva al 16% 'DdlIVA.SelectedValue = "1.16" End If End If Objeto.Dispose() VerificaSiRequiereCotizacion() If UsuarioActual.Empresa.Funcionalidad(565) = "1" And CveOrdenCompra > 0 And TipoOC.ToUpper() = "REQ" Then 'LAS COTIZACIONES RAPIDAS SOLO DEBE APARECER SI EL PROVEEDOR ES DEDICADO If CveConfianzaProveedor = 1 Then RowCotizaciones.Visible = True End If UpIvas.Update() End If DdlProveedorSucursal.DataBind() UPProv.Update() : UPPEmp.Update() UPPDetalle.Update() uppEstatus.Update() End Sub Protected Sub CboE_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CboE.SelectedIndexChanged CargaProyectos() CargaSubProyectos() CargaSuperior() UPPDetalle.Update() PnlUsuarioAsignado.Visible = False 'RVProveedores.Enabled = False 'Si NO requiere cotizacion y el estatus siguiente es el final, If TipoOC.ToUpper = "REQ" Then If ChkCotizacion.Checked = False Then PnlProveedor.Visible = True : UPProv.Update() Else PnlProveedor.Visible = UsuarioActual.Empresa.Funcionalidad(565) = "1" : UPProv.Update() End If If ChkCotizacion.Checked = False AndAlso CboE.SelectedValue.ToEntero.Contiene(CveEstatusFinalOK) AndAlso TipoOS = False Then BtnGuardar.Text = "Guardar y Generar OC" : uppOpciones.Update() 'RVProveedores.Enabled = True If CveEmpresaActual.Contiene(13, 83, 72, 80) Then PnlUsuarioAsignado.Visible = True DdlUsuariosAsignado.DataSource = GlobalDTUsuarios(CveEmpresa:=CveEmpresaActual).FiltraParametros("Estatus = 1", "Nombre") DdlUsuariosAsignado.DataBind() DdlUsuariosAsignado.Items.Insert(0, New ListItem(" - ", "-1")) DdlUsuariosAsignado.SelectedValueExist(CveUsuarioAsignado) End If 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() End If If ChkCotizacion.Checked = False AndAlso CboE.SelectedValue.ToEntero = CveEstatusFinalError AndAlso TipoOS = False Then BtnGuardar.Text = "Guardar" : uppOpciones.Update() If CveEstatus <> CveEstatusFinalError Then RegistraScript("$get('divCE').style.display='';PosicionaObjeto('C_CboE','divCE'); ") End If Else 'RVProveedores.Enabled = True End If If UsuarioActual.Empresa.UsaAC Then ActivaAC() End If UPPEmp.Update() End Sub #Region " DATOS DE VENTA (PORLET) " Protected Sub ChkEntregaDirecta_CheckedChanged(sender As Object, e As EventArgs) CambiaEntregaDirecta() End Sub Private Sub CambiaEntregaDirecta() DivLugarEntregaDirecta1.Visible = ChkEntregaDirecta.Checked DivLugarEntregaDirecta2.Visible = ChkEntregaDirecta.Checked DivAddDireccionEnvio.Visible = ChkEntregaDirecta.Checked DdlDireccionEnvio.Visible = False TxtLugarEntregaDirecta.Visible = False BtnAgregarDireccion.Visible = False If ChkEntregaDirecta.Checked Then CargaDireccionesEnvioCliente() End If End Sub Protected Sub Ddlcliente_SelectedIndexChanged(sender As Object, e As EventArgs) Handles Ddlcliente.selectedindexchange DdlVendedor.SelectedValueExist(GlobalDTCliente(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveVendedor", $"CveCliente = {Ddlcliente.SelectedValue}")) DdlDireccionEnvio.Visible = False TxtLugarEntregaDirecta.Visible = False BtnAgregarDireccion.Visible = False CargaDdlSucursalCliente() If ChkEntregaDirecta.Checked Then CargaDireccionesEnvioCliente() End If End Sub Private Sub CargaDireccionesEnvioCliente() Dim ObjClientes As New ClsClientes If ObjClientes.DireccionEnvioGet(-1, Ddlcliente.txtValue.Value.ToEntero, -1) Then DdlDireccionEnvio.DataSource = ObjClientes.DtResultados If ObjClientes.DtResultados.Rows.Count > 0 Then DdlDireccionEnvio.Visible = True BtnAgregarDireccion.Visible = True Else TxtLugarEntregaDirecta.Visible = True TxtLugarEntregaDirecta.Text = "" BtnAgregarDireccion.Visible = True End If End If ObjClientes.Dispose() DdlDireccionEnvio.DataBind() DdlDireccionEnvio.SelectedValueExist(CveDireccionEnvio) UpVendedor.Update() End Sub #End Region #Region "ENVIAR CORREO" Private Sub Notificaciones() If UsuarioActual.Empresa.Funcionalidad(140).ToString.ToEntero = 1 Then 'CORREO DE CAMBIA ESTATUS PARA USUARIOS SIGUIENTE ESTATUS If (EsNuevo = False AndAlso CveEstatus <> CboE.SelectedValue.ToEntero) Or EsNuevo = True Then Dim RowActual As DataRow = GlobalDTOCEstatus(CveEmpresaActual).FiltroPrimero(String.Format("CveEstatus = {0}", CboE.SelectedValue)) If RowActual IsNot Nothing Then CveEstatusSiguiente = RowActual("CveEstatusSiguiente").ToString.ToEntero EnviarCorreoCambioEstatus(CveEstatusSiguiente, CboE.SelectedItem.Text) End If 'CORREO MODIFICADA If EsNuevo = False And DtHistorial IsNot Nothing Then Dim Bitacora = DtHistorial.FiltraParametros("CveConceptoHistorialBitacora <> 1").Rows.Count Dim ObjGral As New ClsGenerales If ObjGral.GetHistorialBitacora(-1, CveOrdenCompra, -1, -1, -1, -1, -1, UsuarioActual.CveEmpresa) Then DtHistorial = ObjGral.DtResultados.FiltraParametros("CveConceptoHistorialBitacora <> 1") End If ObjGral.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 If End Sub Private Sub MandaCorreo() Dim Asunto, Para, ArrayCC, RutaPDF, Body As String Asunto = If(IsNothing(ViewState("Asunto")), "", ViewState("Asunto").ToString) Para = If(IsNothing(ViewState("Para")), "", ViewState("Para").ToString) ArrayCC = If(IsNothing(ViewState("ArrayCC")), "", ViewState("ArrayCC").ToString) RutaPDF = If(IsNothing(ViewState("RutaPDF")), "", ViewState("RutaPDF").ToString) Body = If(IsNothing(ViewState("Body")), "", ViewState("Body").ToString) Dim a As String = String.Format("{0} -- {1} --- {2}", Asunto, Para, ArrayCC) 'a.GuardaLog() Dim Mail As New ClsSisMail() Dim LSRutasMail As New List(Of ClsSisMail.ArchivoMail) If RutaPDF <> "" AndAlso File.Exists(RutaPDF) Then LSRutasMail.Add(New ClsSisMail.ArchivoMail With {.Ruta = RutaPDF}) Mail.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body, ArrayCC, LSRutasMail) End Sub Private Sub MandaCorreo2(File As Byte(), Para As String, Asunto As String, Body As String) Dim a As String = String.Format("{0} -- {1} ---- -->", Asunto, Para) 'a.GuardaLog() Dim Mail As New ClsSisMail() Dim LSRutasMail As New List(Of ClsSisMail.ArchivoMail) LSRutasMail.Add(New ClsSisMail.ArchivoMail With {.ArchivoBinario = File, .NombreArchivo = "OrdenCompra.pdf"}) 'Mail.MandaCorreo(ClsPaginas.EmpresaNotificaciones, , , ".pdf", rutaxml, , , ) Mail.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body, Archivos:=LSRutasMail) 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) Dim StrCorreos As New StringBuilder 'Sacar los correos a los que se les notificara 'Aqui seran los que cambiaron de estatus, que son los niveles inferiores If DtHistorial IsNot Nothing Then For Each Row As DataRow In DtHistorial.FiltraParametros("CveConceptoHistorialBitacora = 1").Rows StrCorreos.AppendFormat("{0};", GlobalDTUsuarios(Row("CveUsuario").ToString.ToEntero)(0)("correo").ToString) 'CorreosCCP.Add(GlobalDTUsuarios(Row("CveUsuario").ToString.ToEntero)(0)("correo").ToString) Next End If ''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, CveEmpresaActual) 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") = StrCorreos.ToString 'CorreosCCP.Distinct() ViewState("Asunto") = String.Format("SIG. {0} #{1} Bitacora", TipoLargo, Folio) 'ViewState("RutaPDF") = "" 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() If CBool(GlobalDTUsuarios(CveUsuario)(0)("Estatus").ToString) Then Dim Body As String Dim Correo As String = GlobalDTUsuarios(CveUsuario)(0)("correo").ToString Dim StrCorreos As New StringBuilder '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("CveConceptoHistorialBitacora = 1").Rows StrCorreos.AppendFormat("{0};", GlobalDTUsuarios(Row("CveUsuario").ToString.ToEntero)(0)("correo").ToString) Next Try Body = GeneraCorreo(CveOrdenCompra, "") ViewState("Para") = Correo ViewState("ArrayCC") = StrCorreos.ToString 'CorreosCCP.Distinct() ViewState("Asunto") = String.Format("SIG. {0} #{1} Modificada", TipoLargo, Folio) ViewState("RutaPDF") = "" 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 If End Sub Protected Sub EnviarCorreoCambioEstatus(pCveEstatus As Integer, Estatus As String, Optional NotificarAlert As Boolean = True, Optional AsuntoMail As String = "") Dim strOpciones As New StringBuilder If CveUsuario = -1 Or Not CBool(GlobalDTUsuarios(CveUsuario)(0)("Estatus").ToString) Then CveUsuario = UsuarioActual.CveUsuario Dim Para As String = GlobalDTUsuarios(CveUsuario)(0)("correo").ToString Dim CorreosCCPNombre As New List(Of String) Dim objUsuarios As New ClsSisUsuarios Dim StrCorreos As New StringBuilder 'MANDA CORREO A LOS USUARIOS CON EL ESTATUS SIGUIENTE (MODIFICADO) PARA QUE DEN EL SIGUIENTE PASO If CveEstatusSiguiente > 0 Then If hdnCveSuperior.Value.ToEntero > 0 Then 'SI TIENE SUPERIOR MANDA CORREO A TODOS LOS DEL SIGUIENTE ESTATUS StrCorreos.AppendFormat("{0};", 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, CveEmpresaActual, -1, 1) 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 < LblTotal.Text.ToDecimal) And (IsDBNull(Row("LimiteSuperior")) OrElse Row("LimiteSuperior").ToString.ToDecimal > LblTotal.Text.ToDecimal) Then StrCorreos.AppendFormat("{0};", 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 End If 'MANDA CORREO A TODOS LOS USUARIOS INVOLUCRADOS If DtHistorial IsNot Nothing Then For Each Row As DataRow In DtHistorial.FiltraParametros("CveConceptoHistorialBitacora = 1").Rows StrCorreos.AppendFormat("{0};", GlobalDTUsuarios(Row("CveUsuario").ToString.ToEntero)(0)("correo").ToString) CorreosCCPNombre.Add(GlobalDTUsuarios(Row("CveUsuario").ToString.ToEntero)(0)("nombre").ToString) Next End If strOpciones.AppendFormat("Se ha cambiado la {0} #{1} al estatus {2}

", TipoLargo, Folio, Estatus) strOpciones.Append("
") strOpciones.Append("
") strOpciones.Append(" Opciones ") strOpciones.Append("
") 'verifico los permisos según el estatus 'Const Sitio As String = "rm:90/" Dim StrSupervisa As String = "" '= String.Format("http://{0}/OC/RegOp.aspx?p={1}", Sitio, Encripta(String.Format("Op=SUPERVISAR&Oc={0}&CveUsuario={1}&Fecha={2}", CveOrdenCompra, CveUsuario, Now))) Dim StrAutoriza As String = "" '= String.Format("http://{0}/OC/RegOp.aspx?p={1}", Sitio, Encripta(String.Format("Op=AUTORIZAR&Oc={0}&CveUsuario={1}&Fecha={2}", CveOrdenCompra, CveUsuario, Now))) Dim StrCancela As String = "" ' = String.Format("http://{0}/OC/RegOp.aspx?p={1}", Sitio, Encripta(String.Format("Op=CANCELAR&Oc={0}&CveUsuario={1}&Fecha={2}", CveOrdenCompra, UsuarioActual.CveUsuario, Now))) Dim StrReqCotiza As String = "" '= String.Format("http://{0}/OC/RegOp.aspx?p={1}", Sitio, Encripta(String.Format("Op=REQCONTIZACION&Oc={0}&CveUsuario={1}&Fecha={2}", CveOrdenCompra, CveUsuario, Now))) 'si se acaba de solicitar y se necesita supervisar If pCveEstatus = 1 Then strOpciones.AppendFormat(" ", StrSupervisa) 'si se acaba de supervisar y se necesita autorizar If pCveEstatus = 2 Then strOpciones.AppendFormat(" ", StrAutoriza) strOpciones.AppendFormat(" ", StrReqCotiza) End If 'si se quiere cancelar strOpciones.AppendFormat(" ", StrCancela) strOpciones.Append("
Supervisar
Autorizar
Autorizar con Cotización
Cancelar
") strOpciones.Append(" ") strOpciones.Append("
") 'NOTIFICA QUE OCS SE GENERARON Dim OCsGeneradas As New StringBuilder If FolioOCGeneradas.Count > 0 Then OCsGeneradas.Append("Se generaron la(s) siguiente(s) orden(es) de compra: ") For Each FolioOC In FolioOCGeneradas OCsGeneradas.Append($" #{FolioOC} ") Next End If Dim Body As String = GeneraCorreo(CveOrdenCompra, OCsGeneradas.ToString) 'strOpciones.ToString) 'genero los datos de la OC Try ViewState("Para") = Para ViewState("ArrayCC") = StrCorreos ViewState("Asunto") = String.Format("SIG - La {0} #{1} cambió de estatus.", TipoLargo, Folio) ViewState("RutaPDF") = "" ViewState("Body") = Body Dim Hilo As New System.Threading.Thread(AddressOf MandaCorreo) Hilo.Start() 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 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 ViewState("Asunto") = String.Format("SIG - La {0} #{1} se le ha asignado", TipoLargo, Folio) ViewState("RutaPDF") = "" ViewState("Body") = Body 'ViewState("ArrayCCNombre") = CorreosCCPNombre.Distinct() 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) If CBool(GlobalDTUsuarios(DdlUsuariosAsignado.SelectedValue.ToEntero)(0)("Estatus").ToString) Then 'Dim CorreosCCP As New List(Of String) Dim StrCorreos As New StringBuilder 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) StrCorreos.AppendFormat("{0};", GlobalDTUsuarios(DdlUsuariosAsignado.SelectedValue.ToEntero)(0)("correo").ToString) CorreosCCPNombre.Add(GlobalDTUsuarios(DdlUsuariosAsignado.SelectedValue.ToEntero)(0)("nombre").ToString) End If Dim strOpciones As New StringBuilder strOpciones.AppendFormat("La orden de Compra {0} se le ha asignado br>
", Folio) strOpciones.Append("
") strOpciones.Append("
") strOpciones.Append(" Opciones ") strOpciones.Append(" ") strOpciones.AppendFormat(" ", UrlSitio, CveOrdenCompra) strOpciones.Append("
Ir a OC
") strOpciones.Append("
") strOpciones.Append("
") MandaCorreoUsuario(Para, StrCorreos.ToString, CorreosCCPNombre, NotificarAlert) End If End Sub #End Region #Region " enviarCorreoOrdenDeCompra " Protected Sub EnviarCorreoOrdenCompra(CveOrdenCompra As Integer) Dim CveProveedor As Integer Dim strOpciones As New StringBuilder strOpciones.AppendFormat("Se ha Generado una Orden de Compra.

") Dim Body As String = GeneraCorreoProveedor(CveOrdenCompra, CveProveedor) 'genero los datos de la OC Dim Correo As String = "" 'si tiene seleccionada una sucursal, obtengo su correo, sino tiene especificado tomo el correo principal del proveedor If DdlProveedorSucursal.SelectedValue.ToEntero > 0 Then Correo = GlobalDTProveedorSucursales(CveProveedor, UsuarioActual.CveEmpresa).FiltroPrimeroValor("Correo", $"CveProveedorSucursal={DdlProveedorSucursal.SelectedValue}") If Correo = "" Then Correo = GlobalDTCompProveedores(CveEmpresaActual).FiltraParametros($"CveProveedor = {CveProveedor}")(0)("ContactoMail").ToString Try Dim File As Byte() = NewGeneraBytesOC(CveOrdenCompra) Dim Hilo As New System.Threading.Thread(Sub() MandaCorreo2(File, Correo, "SIG - Se Genero una Orden de Compra", 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, CveEmpresaActual) Then strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat("
Datos {0} ", TipoLargo) strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", UrlSitio, objOC.CveOrdenCompra, objOC.Folio, objOC.Estatus) strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", objOC.Empresa) strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", objOC.Descripcion) strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", objOC.Justificacion) strBody.Append(" ") strBody.Append("
Folio:{2} Estatus: {3}
Empresa:{0}
Descripción:{0}
Justificación
") strBody.Append("
") strBody.Append("
") 'Cargo el detalle If IncluirDetalles = True Then strBody.Append("
") strBody.Append("
") strBody.Append(" Opciones ") strBody.Append(" ") strBody.AppendFormat(" ", If(CveEmpresaActual = 66, "Proyecto", "Proyecto
SubProyecto")) 'verifico los permisos según el estatus If objOC.GetOrdenesDetalle(CveOrdenCompra) Then For Each dr As DataRow In objOC.DtResultados.Rows strBody.AppendFormat("", dr("Cantidad").ToString.FormatoNumero, dr("Abreviatura"), dr("Clasificacion"), dr("PS"), dr("Observacion"), dr("Proyecto"), If(CveEmpresaActual = 66, "", dr("SubProyecto")), dr("Codigo"), If(Not IsDBNull(dr("Importe")), FormatCurrency(dr("Importe").ToString), ""), If(Not IsDBNull(dr("Total")), FormatCurrency(dr("Total").ToString), "")) Next End If strBody.Append("
CantidadUnidadProducto o ServicioObservacion{0}Activo FijoP.U.Total
{0}{1}{2}
{3}
{4}{5}
{6}
{7}{8}{9}
") strBody.Append("
") strBody.Append("
") Else strBody.Append("
") strBody.Append("
") strBody.Append(" Bitacora ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") If LigaAdjunto <> "" Then strBody.AppendFormat(" ", LigaAdjunto) strBody.Append(" ") strBody.Append("
") strBody.AppendFormat(" {0}", Bitacora) strBody.Append("
El usuario agrego el siguiente archivo: Adjunto
") strBody.Append("
") strBody.Append("
") End If 'strBody.Append(Opciones) strBody.Append(Opciones) strBody.Append("") End If objOC.Dispose() 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, CveEmpresaActual) CveProveedor = objOC.CveProveedor Dim DttDetalle As DataTable = Nothing If objOC.GetOrdenesDetalle(CveOrdenCompra) Then DttDetalle = objOC.DtResultados End If strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat("
Datos de Orden de Compra ") strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", objOC.Folio, objOC.Estatus) strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", objOC.Empresa) strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", objOC.Descripcion) strBody.Append(" ") strBody.Append("
Folio:{0} Estatus: {1}
Empresa:{0}
Descripción:{0}
") strBody.Append("
") strBody.Append("
") 'Cargo el detalle strBody.Append("
") strBody.Append("
") strBody.Append(" Opciones ") strBody.Append(" ") strBody.Append(" ") 'verifico los permisos según el estatus For Each dr As DataRow In DttDetalle.Rows strBody.AppendFormat("", dr("Cantidad").ToString.FormatoNumero, dr("Abreviatura"), dr("PS"), dr("Obs"), dr("Importe").ToString.FormatoNumero) Next strBody.Append("
CantidadUnidadDescripciónObservaciónPrecio
{0}{1}{2}{3}{4}
") strBody.Append("
") strBody.Append("
") strBody.Append("") objOC.Dispose() Return strBody.ToString End Function #End Region #Region "Correo Eliminar Cotización" Private Function GeneraCorreoEliminarCotizacion(CveCotizacion As Integer, Motivo As String) As String Dim ObjCotizacion As New ClsOC ObjCotizacion.GetCotizaciones(CveOrdenCompra, CveCotizacion) Dim strBody As New StringBuilder 'strBody.Append("

Motivo de Eliminación

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

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

Motivo de eliminación:

", Motivo) strBody.AppendFormat("

{0}

", Motivo) strBody.Append("
") strBody.Append("") ObjCotizacion.Dispose() Return strBody.ToString End Function #End Region #Region " CARGAR DESDE EXCEL " Protected Sub BtnCargaExcel_Click(sender As Object, e As EventArgs) Handles BtnCargaExcel.Click If TxtExcel.getfiles().Archivos.Count > 0 Then Dim file As Archivo = TxtExcel.getfiles().Archivos(0) Dim Directorio As String = AppDomain.CurrentDomain.BaseDirectory & file.path Dim Tipo As String = If(file.Extension.Contiene("xlsx", "xlsx", "xlsm", "xlsb"), "EXCEL", "CSV") CargarArchivo(Directorio, file.filename, Tipo) Else Alert("No existe el archivo. Favor de subir un archivo excel a la plataforma.", TipoMensaje.MsgError) End If End Sub Private Sub CargarArchivo(Ruta As String, FileName As String, Tipo As String) Dim dt As New DataTable dt = ReadExcelFile(Ruta + FileName, True) Dim ErrorArchivo = False 'Dim Conexion As Odbc.OdbcConnection = Nothing 'Try ' Select Case Tipo ' Case "EXCEL" ' Conexion = New Odbc.OdbcConnection("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + Ruta + FileName + ";") ' Conexion.Open() ' Dim cmd = Conexion.CreateCommand() ' cmd.CommandType = CommandType.Text ' cmd.CommandText = "SELECT * FROM [Hoja1$]" ' Dim DataAdapter = New Odbc.OdbcDataAdapter(cmd) ' DataAdapter.Fill(dt) ' Case Else ' Alert("El archivo no tiene el formato correcto", TipoMensaje.MsgError) ' Exit Sub ' End Select 'Catch ex As Exception ' ErrorArchivo = True ' OnError("Ocurrio un error al leer el archivo
" & ex.Message, ex) 'End Try 'Conexion.Close() If Not ErrorArchivo AndAlso dt IsNot Nothing Then If Not dt.Columns(0).ColumnName = "Cantidad" Then Alert("El nombre de la primera columna debe ser 'Cantidad'.Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If If Not dt.Columns(1).ColumnName = "Código" Then Alert("El nombre de la segunda columna debe ser 'Código'.Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If If Not dt.Columns(2).ColumnName = "Código de Barras" Then Alert("El nombre de la tercera columna debe ser 'Código de Barras'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If If Not dt.Columns(3).ColumnName = "Producto/Servicio" Then Alert("El nombre de la cuarta columna debe ser 'Producto/Servicio'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If If Not dt.Columns(4).ColumnName = "Proyecto" Then Alert("El nombre de la quinta columna debe ser 'Proyecto'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If If Not dt.Columns(5).ColumnName = "Observaciones" Then Alert("El nombre de la sexta columna debe ser 'Observaciones'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If If Not dt.Columns(6).ColumnName = "PU" Then Alert("El nombre de la séptima columna debe ser 'P.U'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If If Not dt.Columns(7).ColumnName = "Descuento" Then Alert("El nombre de la octava columna debe ser 'Descuento'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If dt.TableName = "Datos" If Not ErrorArchivo Then NumRow = 0 Dim RowNoEncontrados As String = String.Empty Dim NumAgregados As Integer = 0 For Each Row As DataRow In dt.Rows Dim Cantidad As String = Row("Cantidad").ToString Dim Codigo As String = Row("Código").ToString.Trim.ToUpper Dim CodigoBarras As String = Row("Código de Barras").ToString.Trim.ToUpper Dim ProductoServicio As String = Row("Producto/Servicio").ToString.Trim.ToUpper Dim Proyecto As String = Row("Proyecto").ToString.Trim.ToUpper Dim Observaciones As String = Row("Observaciones").ToString Dim PrecioUnitario As String = Row("PU").ToString Dim Descuento As Decimal = Row("Descuento").ToString.ToDecimal * Cantidad.ToDecimal 'RMF, cambio a multiplicar por cantidad 2018.04.21 Dim CvePS As Integer = 0 Dim CveProyecto As Integer = 0 Dim CveSubProyecto As Integer = 0 Dim Existe As Boolean = False Dim DrProyecto As DataRow Dim SubProyecto As String = "" NumRow = NumRow + 1 If Proyecto <> "" Then Dim DtSubProyecto As DataTable = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa) DtSubProyecto.CaseSensitive = False DrProyecto = DtSubProyecto.FiltroPrimero($"(SubProyecto) = '{Proyecto}'") If DrProyecto IsNot Nothing Then CveSubProyecto = DrProyecto("CveSubProyecto").ToString.ToEntero CveProyecto = DrProyecto("CveProyecto").ToString.ToEntero SubProyecto = DrProyecto("SubProyecto").ToString End If Else CveProyecto = -1 CveSubProyecto = -1 End If If Codigo.Length > 0 Then Dim StrArray() As String = GetPS("Codigo", Codigo).Split("|"c) If StrArray.Length > 0 Then If CBool(StrArray(0)) = True Then CvePS = StrArray(1).ToEntero Else RowNoEncontrados &= StrArray(1) & "<\BR>" End If End If ElseIf CodigoBarras.Length > 0 Then Dim StrArray() As String = GetPS("CodigoBarras", CodigoBarras).Split("|"c) If StrArray.Length > 0 Then If CBool(StrArray(0)) = True Then CvePS = StrArray(1).ToEntero Else RowNoEncontrados &= StrArray(1) & "<\BR>" End If End If ElseIf ProductoServicio.Length > 0 Then Dim StrArray() As String = GetPS("PS", ProductoServicio).Split("|"c) If StrArray.Length > 0 Then If CBool(StrArray(0)) = True Then CvePS = StrArray(1).ToEntero Else RowNoEncontrados &= StrArray(1) & "<\BR>" End If End If Else RowNoEncontrados &= "<\BR>    - En la fila " & NumRow & " no se especificó código, código de barras ó descripción." End If If Not CvePS > 0 Then Continue For End If 'Agregar PS If DtDetalle IsNot Nothing Then Dim dr As DataRow = DtDetalle.NewRow Dim DrPS = GlobalDTPS(CveEmpresaActual, CvePS:=CvePS).FiltroPrimero("") If DrPS Is Nothing Then Alert("Ocurrió un error al cargar la información de los productos del archivo. Por favor vuelva a intentar.", TipoMensaje.MsgAdvertencia) Continue For End If Dim RetIVA As Decimal = DrPS("RetIVA").ToString.ToDecimal Dim RetISR As Decimal = DrPS("RetISR").ToString.ToDecimal Dim PS As String = DrPS("PS").ToString Dim TotalPS As Decimal = If(PrecioUnitario.ToDecimal > 0, PrecioUnitario.ToDecimal * Cantidad.ToDecimal - Descuento, 0) Dim CveUnidadMedida As Integer = DrPS("CveUnidadMedida").ToString.ToEntero Dim UM As String = DrPS("UnidadMedida").ToString Dim IvaPS As Decimal = DrPS("IVA").ToString.ToDecimal 'If IvaPS = -1 Then ' Dim Drr As DataRow = GlobalDTSubProyectos(-1, DdlSubProyecto.SelectedValue.ToEntero())(0) ' IvaPS = Drr("IVA").ToString().ToDecimal() 'End If Dim IEPSPS As Decimal = DrPS("IEPSPorcentaje").ToString.ToDecimal Dim IEPSPSIVA As Decimal = If(DrPS("IEPSGrabaIVA").ToString = "True", DrPS("IEPSPorcentaje").ToString.ToDecimal, 0) Dim CveClasificacion As Integer = DrPS("CveClasificacion").ToString.ToEntero Dim Clasificacion As String = DrPS("Clasificacion").ToString Dim CveActivoFijo = HdnCveActivoFijo.Value.ToEntero Dim IdCuentaPorEjercer As Integer = If(HdnCveCuentaPorEjercer.Value = String.Empty, -1, HdnCveCuentaPorEjercer.Value.ToEntero) Dim IdCuentaComprometido As Integer = If(HdnCveCuentaComprometido.Value = String.Empty, -1, HdnCveCuentaComprometido.Value.ToEntero) Dim CveOrdenCompraDetalle As Integer = DtDetalle.MAX("CveOrdenCompraDetalle").ToEntero + 100 AddPS(Cantidad, CvePS, PS, Observaciones, PrecioUnitario.ToDecimal, Descuento, TotalPS, CveUnidadMedida, IvaPS, IEPSPS, IEPSPSIVA, CveClasificacion, UM, Clasificacion, CveSubProyecto, Proyecto, CveSubProyecto, SubProyecto, LblCodigo.Text, CveActivoFijo, 0, CveOrdenCompraDetalle, CveOrdenCompra, IdCuentaPorEjercer, IdCuentaComprometido, DdlACGeneral1.SelectedValue.ToEntero, DdlACGeneral2.SelectedValue.ToEntero, DdlACGeneral3.SelectedValue.ToEntero, DdlACGeneral4.SelectedValue.ToEntero, DdlACGeneral5.SelectedValue.ToEntero, RetIVA, RetISR) End If Next 'Cargo el GridView GvD.DataSource = DtDetalle GvD.DataBind() CargaSuperior() CargaDatosDetalles() UPPDetalle.Update() If RowNoEncontrados.Length > 0 Then Alert("Los siguientes Productos o Servicios no se encontraron en la Base de Datos.<\BR>" & RowNoEncontrados, TipoMensaje.MsgAdvertencia) Else Alert("Se Cargaron " & DtDetalle.Rows.Count & " Productos o Servicios correctamente.") End If End If End If End Sub Private Function GetPS(Opt As String, Valor As String) As String Dim StrReturn As String = String.Empty Dim CvePS As Integer = 0 CvePS = GlobalDTPS(UsuarioActual.CveEmpresa, Estatus:=1).FiltroPrimeroValor("CvePS", Opt & " = '" & Valor & "'").ToString.ToEntero If CvePS > 0 Then StrReturn = "True|" & CvePS.ToString Else StrReturn = "False|    - No se encontró " & Valor & " en la fila " & NumRow & ", columna " & Opt End If Return StrReturn End Function Protected Sub BtnDescargar_Click(sender As Object, e As EventArgs) Handles BtnDescargar.Click, LbDescargarExcel.Click Dim Directorio As String = ModExtensiones.DirectorioBaseEmpresas & "Empresas\Grales\FormatoOC.xlsx" Dim Archivo As New IO.FileInfo(Directorio) If Archivo.Exists Then Response.Clear() Response.ClearHeaders() Response.ClearContent() Response.AddHeader("Content-Disposition", "attachment; filename=" + Archivo.Name) Response.AddHeader("Content-Length", Archivo.Length.ToString()) Response.ContentType = "text/plain" Response.Flush() Response.TransmitFile(Archivo.FullName) Response.End() End If End Sub #End Region #Region " CREAR APARTIR DE " Private Sub ActivaCrearApartirDe() If EsNuevo Then Exit Sub End If BtnCrearApartirDe.Visible = True uppOpciones.Update() End Sub Protected Sub BtnCrearApartirDe_Click(sender As Object, e As System.EventArgs) Handles BtnCrearApartirDe.Click EsCreaApartirDe = True 'Habilito los Controles CboE.Enabled = True CboE.BackColor = Drawing.Color.White 'CboE.SelectedIndex = 0 CboE_SelectedIndexChanged(CboE, EventArgs.Empty) GvD.Columns(10).Visible = True 'Permitir la edicion lblTipoPadreHijo.Visible = False GvD.Columns(11).Visible = False LblCompra.Visible = False GvD.Columns(12).Visible = False ChkCotizacion.Visible = True ChkCotizacion.Enabled = True TxtFolioAdicional.Enabled = True DdlPrioridad.Enabled = True txtobsprioridad.Enabled = True TxtDescrip.Enabled = True TxtJustificacion.Enabled = True TxtFechaEstimadaEntrega.Enabled = True txtLugarEntrega.Enabled = True TxtLugarEntregaDirecta.Enabled = True gvCotizaciones.Enabled = True DdlProveedores.Enabled = True DdlUsoCFDI.Enabled = True 'DdlIVA.Enabled = True ImgCambiaProv.Visible = False TrPendientes.Visible = False ImgCambiaClienteVendedor.Visible = False Ddlcliente.Enabled = True DdlVendedor.Enabled = True ChkEntregaDirecta.Enabled = True 'Habilito Controles de PS TxtCant.Enabled = True DdlClasificacion.Enabled = True DdlP2.ddl.Enabled = True DdlP2.Enabled = True CboUnidadMedida.Enabled = True TxtObsPS.Enabled = True DdlProyecto.Enabled = True DdlSubProyecto.Enabled = True txtPrecioUnitario.Enabled = True DdlIVA.Enabled = True DdlMoneda.Enabled = True LbAgregar.Enabled = True 'Limpiar datos generales 'TxtDescrip.Text = "" 'TxtJustificacion.Text = "" TxtFechaEstimadaEntrega.Text = "" 'txtLugarEntrega.Text = "" InicializarValoresCrearApartirDe() 'Reseteo los GVs gvEstatus.DataSource = Nothing gvEstatus.DataBind() fsSeguimiento.Visible = False GVH.DataSource = Nothing GVH.DataBind() fsHistorial.Visible = False GvEB.DataSource = Nothing GvEB.DataBind() 'Cargo Folio, Usuario y Fecha nuevos TxtFecha.Text = Now.ToShortDateString lblNombreUsuario.Text = UsuarioActual.Nombre CargaFolios() BtnGuardar.Enabled = True EsNuevo = True For Each Row As GridViewRow In GvD.Rows Row.Cells(8).Enabled = True Row.Cells(9).Enabled = True Row.FCLinkButton("imgD").Visible = True Row.FCLinkButton("imgE").Visible = True Next GvD.Enabled = True BtnCancelarPrevio.Visible = False BtnCrearApartirDe.Visible = False uppSeguimientoEstatus.Update() UPProv.Update() UPPEmp.Update() UPPDetalle.Update() uppEstatus.Update() uppHistorial.Update() UPEventoBitacora.Update() UpIvas.Update() uppOpciones.Update() UpVendedor.Update() End Sub Private Sub InicializarValoresCrearApartirDe() ViewState("NumCotizacionesGanadoras") = 0 ViewState("TotalCotizacionesGanadoras") = 0 ViewState("CveEstatus") = -1 ViewState("CveEstatusSiguiente") = -1 EditarOC = False CveEstatusFinalOK = -2 'BtnCancelarPrevio.Disabled = True BtnCancelarPrevio.Enabled = False Folio = 0 'ViewState("ArrayCCNombre") = "" ViewState("ArrayCC") = "" ViewState("EjercicioAC") = -1 ViewState("CveUsuario") = -1 CveVenta = -1 TieneVenta = -1 TieneCompraInv = -1 CveCompra = -1 CveMovimientoAlmacenVenta = -1 IDPolizaPresupuestal = -1 Dim drE As DataRow = GlobalDTOCEstatus(CveEmpresaActual).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("FolioOCGeneradas") = 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(CveEmpresaActual = 48, False, True) txtPrecioUnitario.Attributes.Add("onKeyUp", "obtenertotal();") TxtCant.Attributes.Add("onKeyUp", "obtenertotal();") TxtDescrip.Attributes.Add("onKeyUp", String.Format("SetText({0}, {1})", TxtDescrip.ClientID, TxtJustificacion.ClientID)) Dim script As String = "obtenertotal();" ScriptManager.RegisterStartupScript(Me, GetType(Page), "anioactual", script, True) VerificaPresupuesto = False RVSubProyecto.Enabled = If(RequiereSubProyecto = True, True, False) GvD.Columns(11).Visible = False CargaComboCFDI() CargaMonedas() 'CargaClasificaciones() 'CargaUnidadesMedida() BtnCancelar.Attributes.Add("disabled", "disabled") TxtCancelar.Attributes.Add("onKeyUp", "fncCan(this)") trContabilizada.Visible = False HplCompraContabilizada.Text = "" CargaTipoActivoFijo() DrEliminados = New ArrayList DdlSAUsuario.DataSource = GlobalDTUsuarios(-1, CveEmpresaActual) DdlSAUsuario.DataBind() Dim CveProveedorPrevio As String = DdlProveedores.SelectedValue Dim CveProveedorSucursalPrevio As String = DdlProveedorSucursal.SelectedValue CargaProveedores() DdlProveedores.ddl.SelectedValueExist(CveProveedorPrevio) DdlProveedores_SelectedIndexChanged(DdlProveedores, EventArgs.Empty) If DdlProveedorSucursal.Visible Then DdlProveedorSucursal.SelectedValueExist(CveProveedorSucursalPrevio) DdlProveedorSucursal.Enabled = True DdlProveedorContacto.Enabled = True End If CargarOptionAnticipos() HlAgregarExcel.Visible = True LbDescargarExcel.Visible = True CargaEstatusInicialFinal() CargaEstatusUsuarios() CargaEstatusOC() 'Estatus Default 66 If CveEmpresaActual = 66 Then CboE.SelectedValueExist(18) End If TxtFecha.Text = Now.ToString("dd/MM/yyyy") lblNombreUsuario.Text = UsuarioActual.Nombre ViewState("CveOrdenCompra") = 0 CargaFolios() 'BtnCancelarPrevio.Disabled = True BtnCancelarPrevio.Enabled = False If CveEstatusInicial = -1 Then Alert("No tiene configurado un Estatus Inicial", TipoMensaje.MsgAdvertencia) : BtnGuardar.Enabled = False PnlProveedor.Visible = True : UPProv.Update() '12/04/2018 'DdlIVA.Visible = True If UsuarioActual.Empresa.UsaAC Then ActivaAC() End If hplAgregarCotizacion.Visible = False hplEnviarCorreo.Visible = False 'ASIGNA ESTATUS OC CboE_SelectedIndexChanged(New Object, New EventArgs) 'Actualiza Menu Acciones HLImprimir.Visible = False HLImprimirCotizacion.Visible = False generarAnticipo.Visible = False HLGenerarVenta.Visible = False HLGenerarRecepcion.Visible = False BtnSolicitudAnticipo.Visible = False HlAgregarExcel.Visible = True LbDescargarExcel.Visible = True BtnGeneraContrato.Visible = True : CargaClientesContrato() LbVerificarExistencia.Visible = True LnkAgregarGuia.Visible = False HlEvento.Visible = False UpAccionesBitacora.Update() UpContrato.Update() UpAcciones.Update() End Sub #End Region #Region " ACTUALIZA OC " 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, CveEmpresaActual) Then CargaHistorial() Alert("El cambio de proveedor se hizo correctamente", TipoMensaje.MsgInformacion) End If OC.Dispose() End Sub Protected Sub ImgCambiaClienteVendedor_Click(sender As Object, e As ImageClickEventArgs) Handles ImgCambiaClienteVendedor.Click Dim OC As New ClsOC If OC.UpdateClienteVendedorOrdenCompra(Ddlcliente.txtValue.Value.ToEntero, DdlVendedor.SelectedValue.ToEntero, CveOrdenCompra, UsuarioActual.CveUsuario, CveEmpresaActual) Then CargaHistorial() Alert("El cambio de cliente/vendedor se hizo correctamente", TipoMensaje.MsgInformacion) End If OC.Dispose() End Sub #End Region #Region "OC X SURTIR" Private Sub lblPendientes_Click(sender As Object, e As EventArgs) Handles lblPendientes.Click CargaOCxSurtir() RegistraScript(String.Format("$('#{0}').modal();", "DivOCxSurtir")) End Sub Private Sub CargaOCxSurtir() Dim ObjOC As New ClsOC If ObjOC.GetPendietePorSurtirOC("-1", "-1", -1, -1, -1, -1, UsuarioActual.CveEmpresa, CveOrdenCompra) Then GvDatosOCxSurtir.DataSource = ObjOC.DtResultados.FiltraParametros("CodigoPS <> ''") Else GvDatosOCxSurtir.DataSource = Nothing End If GvDatosOCxSurtir.DataBind() ObjOC.Dispose() UpDatosOCxSurtir.Update() End Sub Protected Sub LnkCompra_Click(sender As Object, e As EventArgs) CargaOCVinculada(CType(sender, LinkButton).CommandArgument.ToEntero) ' Alert("Ok") End Sub Private Sub CargaOCVinculada(CveOCDetalle As Integer) Dim ObjOC As New ClsOC If ObjOC.GetOCVinculadasPendientes(CveOCDetalle) Then GvOCVinculada.DataSource = ObjOC.DtResultados Else GvOCVinculada.DataSource = Nothing End If GvOCVinculada.DataBind() ObjOC.Dispose() UpBodyOCVinculada.Update() UpOCVinculada.Update() RegistraScript("$('#DivOCVinculada').modal('show');") End Sub Private Sub LbVerificarExistencia_Click(sender As Object, e As EventArgs) Handles LbVerificarExistencia.Click 'RegistraScript(String.Format("AbrirVentana('/Inventarios/PopUpExistenciasAlmacenDT.aspx?CveOrdenCompra={0}',800,547,'N');", CveOrdenCompra)) VerificarExistencias() End Sub Private Sub VerificarExistencias() Dim tmpDTPS As DataTable = DtDetalle Dim DTAlmacen = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros($" CveTipoAlmacen IN (1,9) ") 'AND CveSucursal = {CveSucursal}") Dim objInv As New ClsInventarios 'Dim consulta As New StringBuilder 'consulta.Append(" ") 'consulta.Append(" DECLARE @TEMP TABLE (CvePS INT, CveSubProyecto INT);") 'For Each row As DataRow In tmpDTPS.Rows ' consulta.AppendFormat("INSERT INTO @TEMP VALUES ({0},{1});", row("CvePS"), row("CveSubProyecto")) 'Next 'consulta.Append(" SELECT CASE WHEN LEN (ISNULL (P.Codigo, '')) = 0 THEN P.PS ELSE CONCAT( P.Codigo, ' - ', P.PS) END AS Producto, SUM(OCPR.Cantidad) AS [Por Recibir] ") 'For Each row As DataRow In DTAlmacen.Rows ' consulta.AppendFormat(" ,SUM(CASE WHEN CS.CveAlmacen={0} THEN CS.Existencia - ISNULL(INV.Cantidad,0) ELSE 0 END) AS [{1}] ", row("CveAlmacen"), row("Almacen")) 'Next 'consulta.Append(" FROM @TEMP T ") 'consulta.Append(" INNER JOIN [ProductosServicios] P ON P.CvePS = T.CvePS ") 'consulta.Append(" LEFT JOIN [Inv_ExistenciasProductos] CS ON P.CvePS = CS.CvePS ") 'consulta.Append(" LEFT JOIN Vw_InventarioPorSurtir INV ON INV.CvePS = P.CvePS AND INV.CveAlmacen = CS.CveAlmacen ") 'consulta.Append(" LEFT JOIN Vw_OC_PorRecibir OCPR ON OCPR.CvePS = P.CvePS AND OCPR.CveAlmacen = CS.CveAlmacen AND OCPR.CveSubProyecto = T.CveSubProyecto") 'consulta.Append(" WHERE P.CveTipoPS = 2") 'consulta.Append(" GROUP BY P.CvePS,P.Codigo,P.PS") 'objInv.GetQuery(consulta.ToString()) objInv.GetExistenciasAlmacenDT(CveOrdenCompra, UsuarioActual.CveEmpresa) ' limpio los almacenes donde no tiene ningun producto existencia For i = objInv.DtResultados.Columns.Count - 1 To 1 Step -1 If Not objInv.DtResultados.Columns(i).ColumnName.Contiene("CvePS", "PSCodigo") AndAlso objInv.DtResultados.SUM(String.Format("[{0}]", objInv.DtResultados.Columns(i).ColumnName)) = 0 Then objInv.DtResultados.Columns.RemoveAt(i) End If Next tmpDTPS = objInv.DtResultados objInv.Dispose() GvExist.DataSource = tmpDTPS GvExist.DataBind() 'ORDENA HACIA LA DERECHA LAS CANTIDAD - OJO!! NO SE USO GV.COLUMNS.COUNT PORQUE LAS COLUMNAS GENERADAS EN BEHIND NO LAS RECONOCE For index = 1 To tmpDTPS.Columns.Count - 1 For Each gvr As GridViewRow In GvExist.Rows gvr.Cells(index).HorizontalAlign = HorizontalAlign.Right Next Next 'GvExist.Columns(1).Visible = False 'GvExist.Columns(2).HeaderText = "Producto" RegistraScript("$('#DivModalExistenciaTotal').modal('show');") UPExist.Update() End Sub #End Region #Region " SUCURSAL PARA EXISTENCIAS DE DDLOST" Protected Sub DdlSubProyecto_SelectedIndexChanged(sender As Object, e As EventArgs) If UsuarioActual.Empresa.Funcionalidad(141) = "1" Or True Then SeleccionaSucursal() End If If UsuarioActual.Empresa.Funcionalidad(590).ToString.ToEntero = 1 Then DdlCultivosCuadro.Items.Clear() DdlCultivosCuadro.DataSource = GlobalDTCultivosCuadro(UsuarioActual.CveEmpresa).FiltraParametros($" CveSubProyecto = {DdlSubProyecto.SelectedValue} AND Estatus =1") DdlCultivosCuadro.DataBind() DdlCultivosCuadro.Items.Insert(0, New ListItem("Seleccione uno", "-1")) End If End Sub Private Sub CargaSucursal() DdlSucursal.DataSource = GlobalDTSubProyectos(-1).FiltraParametros("CveEmpresa = " & UsuarioActual.CveEmpresa) DdlSucursal.DataBind() DdlSucursal.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlSucursal.SelectedValue = "-1" SeleccionaSucursal() End Sub Private Sub SeleccionaSucursal() If DdlSubProyecto.SelectedValue.ToEntero > 0 Then DdlSucursal.SelectedValueExist(DdlSubProyecto.SelectedValue.ToEntero) End If DdlP2.Attributes.Remove("Data-cvesubproyecto") DdlP2.Attributes.Add("Data-cvesubproyecto", DdlSucursal.SelectedValue) End Sub #End Region #Region " TAB ALMACEN " Private Sub InicializaMovtosAlmacen() If CveOrdenCompra > 0 Then Dim ObjInventarios As New ClsInventarios If ObjInventarios.GetMovimientosOC(CveOrdenCompra, CveEmpresaActual) Then TabAlmacen.Visible = True If ObjInventarios.DtResultados.Rows.Count > 0 Then GVInv.DataSource = ObjInventarios.DtResultados If ObjInventarios.DtResultados.Rows.Count > 0 Then DdlMoneda.Enabled = False Dim TipoEstatusTerminado As String = GlobalDTOCEstatus(UsuarioActual.CveEmpresa).FiltroPrimeroValor("TipoTermino", String.Format("CveEstatus = {0}", CboE.SelectedValue)) If TipoEstatusTerminado = "3" Then LnkCambiarMoneda.Visible = True End If End If End If GVInv.DataBind() End If ObjInventarios.Dispose() UpAlmacen.Update() UpAcciones.Update() End If End Sub Protected Sub GVInv_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GVInv.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.DBCampo("CvePS") = "" Then 'TITULO e.Row.FCLiteral("LtProducto").Text = $"{e.Row.DBCampo("CodigoPS")}" e.Row.HorizontalAlign = HorizontalAlign.Center e.Row.Cells(0).Visible = False e.Row.Cells(1).Visible = False e.Row.Cells(2).ColumnSpan = 3 e.Row.Cells(3).Visible = False e.Row.Cells(4).Visible = False e.Row.Cells(5).Visible = False If e.Row.DBCampo("Origen").ToEntero > 0 Then e.Row.CssClass = "SubTotales" Else e.Row.BackColor = Drawing.Color.FromArgb(224, 130, 131) e.Row.ForeColor = Drawing.Color.White e.Row.Font.Bold = True End If Else 'DETALLE If e.Row.DBCampo("Serie") <> "" Then GVInv.Columns(4).Visible = True End If If e.Row.DBCampo("Lote") <> "" Then GVInv.Columns(4).Visible = True End If If e.Row.DBCampo("FechaCaducidad") <> "" Then GVInv.Columns(4).Visible = True End If End If End If End Sub #End Region #Region "TIPO OC: INGRESO / GASTO" Private Sub VerificarClasificaciones(Optional AfterPageLoad As Boolean = False) If AfterPageLoad Then RegistraScript("window.onload = function MuestraClasificaciones() { document.getElementById(""C_BtnMostrarClasificaciones"").click(); }") Else PresionarBotonModal("C_BtnMostrarClasificaciones") End If End Sub Private Sub PresionarBotonModal(Boton As String) Try Dim script As String = $"document.getElementById(""{Boton}"").click();" Dim Pag As Page = DirectCast(System.Web.HttpContext.Current.Handler, Page) ScriptManager.RegisterStartupScript(Pag, Pag.GetType(), Boton, script, True) Pag = Nothing Catch ex As Exception End Try End Sub Private Sub BtnIniciarContrato_Click(sender As Object, e As EventArgs) Handles BtnIniciarContrato.Click CargaClasificacionesPopUp(-1) PresionarBotonModal("C_BtnCerrarClasificaciones") End Sub Private Sub CargaClasificacionesPopUp(CveCotizacion As Integer) DdlClasificacion.Items.Clear() If RblOpcionClasificacion.SelectedValue.ToEntero = 1 Or CveCotizacion > 0 Then DdlClasificacion.DataSource = GlobalDTClasificaciones(CveEmpresaActual, UsoClasificacion:=1) DdlClasificacion.DataBind() DdlClasificacion.Items.Insert(0, New ListItem("Seleccione la Clasificación (Todas)", "-1")) Else DdlClasificacion.DataSource = GlobalDTClasificaciones(CveEmpresaActual, UsoClasificacion:=2) DdlClasificacion.DataBind() DdlClasificacion.Items.Insert(0, New ListItem("Seleccione la Clasificación (Todas)", "-1")) End If UPPDetalle.Update() End Sub #End Region #Region " CALCULA IMPORTES " Protected Sub DdlIVA_SelectedIndexChanged(sender As Object, e As EventArgs) 'SE ACTUALIZA EL IVA DEL DtDetalle SI ES QUE AHORA SE VA A TOMAR EN CUENTA EL IVA For Each Row As DataRow In DtDetalle.Rows If Not Math.Round(DdlIVA.SelectedValue.ToDecimal, 2) = 1 Then Dim DrPS = GlobalDTPS(CveEmpresaActual, CvePS:=Row("CvePS").ToString.ToEntero).FiltroPrimero("") If DrPS IsNot Nothing Then Row("IVAPorcentaje") = If(DrPS("IVA").ToString.ToEntero = -1, Math.Round(DdlIVA.SelectedValue.ToDecimal - 1, 2), 0) Row("IVA") = Row("IVAPorcentaje").ToString.ToDecimal * Row("Total").ToString.ToDecimal Row("RetIVAPorcentaje") = DrPS("RetIVA").ToString.ToDecimal Row("RetIVA") = Row("RetIVAPorcentaje").ToString.ToDecimal * Row("Total").ToString.ToDecimal End If Else Row("IVA") = 0 Row("RetIVA") = 0 Row("IVAPorcentaje") = 0 Row("RetIVAPorcentaje") = 0 End If Next CalculaGenerales() End Sub Private Sub CalculaGenerales() Dim Subtotal As Decimal = DtDetalle.SUM("Total", "Total > 0") + DtDetalle.SUM("Descuento") Dim Descuento As Decimal = DtDetalle.SUM("Descuento") Dim SubTotalIEPSIVA As Decimal = DtDetalle.SUM("IEPSPSIVA") Dim IVA As Decimal = DtDetalle.SUM("IVA") + SubTotalIEPSIVA Dim SubTotalIEPS As Decimal = DtDetalle.SUM("IEPSPS") Dim SubTotalRetIVA As Decimal = DtDetalle.SUM("RetIVA") Dim SubTotalRetISR As Decimal = DtDetalle.SUM("RetISR") 'SUBTOTAL LblSubTotal.Text = (Subtotal).FormatoNumero 'DESCUENTO TxtDescuento.Text = Descuento.FormatoNumero HdnDescuento.Value = Descuento.FormatoNumero 'SUBTOTAL 2 LblSubTotal2.Text = (Subtotal - Descuento).FormatoNumero 'IVA TxtIVA.Text = IVA.ToString.FormatoNumero() LblIVA.Text = IVA.ToString.FormatoNumero() 'IEPS TxtIEPS.Text = SubTotalIEPS.FormatoNumero TrIEPS.Visible = SubTotalIEPS > 0 'RetIVA TxtRetIVA.Text = SubTotalRetIVA.FormatoNumero HdnRetIVA.Value = SubTotalRetIVA.FormatoNumero TrRetIVA.Visible = SubTotalRetIVA > 0 'RetISR TxtRetISR.Text = SubTotalRetISR.FormatoNumero HdnRetISR.Value = SubTotalRetISR.FormatoNumero TrRetISR.Visible = SubTotalRetISR > 0 'TOTAL LblTotal.Text = (Subtotal - Descuento + IVA + SubTotalIEPS - SubTotalRetIVA - SubTotalRetISR).FormatoNumero() 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() If (TrRetIVA.Visible) Then TxtIEPS.Text = "0.00" TxtRetIVA.Text = "0.00" TxtRetISR.Text = "0.00" CalculaGenerales() End If If ImgAplicaRetenciones.ImageUrl = "/Metronic/assets/global/img/portlet-collapse-icon.png" Then ImgAplicaRetenciones.ImageUrl = "/Metronic/assets/global/img/portlet-expand-icon.png" TrRetIVA.Visible = True TrRetISR.Visible = True TrIEPS.Visible = True Else ImgAplicaRetenciones.ImageUrl = "/Metronic/assets/global/img/portlet-collapse-icon.png" If Not TxtRetIVA.Text.ToDecimal > 0 Then TrRetIVA.Visible = False If Not TxtRetISR.Text.ToDecimal > 0 Then TrRetISR.Visible = False If Not TxtIEPS.Text.ToDecimal > 0 Then TrIEPS.Visible = False End If 'ImgAplicaRetenciones.ImageUrl = If(TrRetIVA.Visible, "/Metronic/assets/global/img/portlet-collapse-icon.png", "/Metronic/assets/global/img/portlet-expand-icon.png") End Sub Private Sub AplicaRetenciones() TxtRetIVA.Text = TxtRetIVA.Text.FormatoNumero TxtRetISR.Text = TxtRetISR.Text.FormatoNumero TxtIEPS.Text = TxtIEPS.Text.FormatoNumero End Sub Private Sub CargaRetenciones(RetIVA As Decimal, RetISR As Decimal, IEPS As Decimal) If RetIVA > 0 Or RetISR > 0 Or IEPS > 0 Then TrRetIVA.Visible = True TxtRetIVA.Text = RetIVA.ToString.ToDecimal.FormatoNumero TrRetISR.Visible = True TxtRetISR.Text = RetISR.ToString.ToDecimal.FormatoNumero TrIEPS.Visible = True TxtIEPS.Text = IEPS.ToString.ToDecimal.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 Total = 0.0D Dim Descuento = 0.0D Dim Porcentaje = TxtDescuento.Text.ToDecimal / DtDetalle.SUM("Total") Dim LastDr As DataRow = Nothing For Each Dr As DataRow In DtDetalle.Rows Descuento = ((Math.Truncate((Dr("Total").ToString.ToDecimal * Porcentaje) * 100)) / 100).ToDecimal Dr("Descuento") = Descuento Total = (Dr("Cantidad").ToString.ToDecimal * Dr("Importe").ToString.ToDecimal) - Descuento Dr("Total") = Math.Round(Total, 2) Dr("IVA") = Math.Round(Dr("IVAPorcentaje").ToString.ToDecimal * Total, 2) ' 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) LastDr = Dr Next If Not IsNothing(LastDr) Then Dim Fdes As Decimal = TxtDescuento.Text.ToDecimal - DtDetalle.SUM("Descuento").ToString.ToDecimal If Fdes > 0 Then LastDr("Descuento") = LastDr("Descuento").ToString.ToDecimal + Fdes End If End If 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 CalculaGenerales() 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.ToDecimal If DescuentoConceptos <> DescuentoGeneral Then Alert(String.Format("Los descuentos no cuadran. Por favor de verificar.({0}-{1})", DescuentoConceptos, DescuentoGeneral), TipoMensaje.MsgAdvertencia) Retorno = False End If Return Retorno End Function #End Region #Region "RETIVA" Protected Sub BtnLimpiarRetIVA_Click(sender As Object, e As EventArgs) If HdnRetIVA.Value.ToDecimal > 0 Then TxtRetIVA.Text = HdnRetIVA.Value.FormatoNumero Exit Sub End If For Each Dr As DataRow In DtDetalle.Rows Dr("RetIVA") = 0 Dr("RetIVAPorcentaje") = 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 TxtRetIVA.Text = "0.00" HdnRetIVA.Value = TxtRetIVA.Text CalculaGenerales() GvD.DataSource = DtDetalle GvD.DataBind() UPPDetalle.Update() End Sub Protected Sub BtnAplicarRetIVA_Click(sender As Object, e As EventArgs) AplicarRetIVA() End Sub Private Sub AplicarRetIVA() If LblSubTotal.Text.ToDecimal <= 0 Then Alert("Para aplicar un RetIVA, el SubTotal debe ser mayor a cero.", TipoMensaje.MsgAdvertencia) TxtRetIVA.Text = "0.00" CalculaGenerales() Exit Sub End If TxtRetIVA.Text = TxtRetIVA.Text.FormatoNumero HdnRetIVA.Value = TxtRetIVA.Text Dim Porcentaje As Decimal = TxtRetIVA.Text.ToDecimal / DtDetalle.SUM("Total") Dim LastDr As DataRow = Nothing For Each Dr As DataRow In DtDetalle.Rows 'Dr("RetIVA") = (Math.Truncate((Dr("Total").ToString.ToDecimal * Porcentaje) * 100)) / 100 Dr("RetIVA") = Math.Round((Dr("Total").ToString.ToDecimal * Porcentaje), 2) 'Dr("RetIVA") = Math.Round((Dr("Cantidad").ToString.ToDecimal * Dr("Importe").ToString.ToDecimal * Porcentaje), 2) Dr("RetIVAPorcentaje") = 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) LastDr = Dr Next 'If Not IsNothing(LastDr) Then ' Dim Fdes As Decimal = TxtRetIVA.Text.ToDecimal - DtDetalle.SUM("RetIVA").ToString.ToDecimal ' If Fdes > 0 Then ' LastDr("RetIVA") = LastDr("RetIVA").ToString.ToDecimal + Fdes ' End If 'End If 'Alert(String.Format("Descuento:{0}", DtDetalle.SUM("Descuento"))) CalculaGenerales() GvD.DataSource = DtDetalle GvD.DataBind() UPPDetalle.Update() End Sub #End Region #Region "RETISR" Protected Sub BtnLimpiarRetISR_Click(sender As Object, e As EventArgs) If HdnRetISR.Value.ToDecimal > 0 Then TxtRetISR.Text = HdnRetISR.Value.FormatoNumero Exit Sub End If For Each Dr As DataRow In DtDetalle.Rows Dr("RetISR") = 0 Dr("RetISRPorcentaje") = 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 TxtRetISR.Text = "0.00" HdnRetISR.Value = TxtRetISR.Text CalculaGenerales() GvD.DataSource = DtDetalle GvD.DataBind() UPPDetalle.Update() End Sub Protected Sub BtnAplicarRetISR_Click(sender As Object, e As EventArgs) AplicarRetISR() End Sub Private Sub AplicarRetISR() If LblSubTotal.Text.ToDecimal <= 0 Then Alert("Para aplicar un RetISR, el SubTotal debe ser mayor a cero.", TipoMensaje.MsgAdvertencia) TxtRetISR.Text = "0.00" CalculaGenerales() Exit Sub End If TxtRetISR.Text = TxtRetISR.Text.FormatoNumero HdnRetISR.Value = TxtRetISR.Text Dim Porcentaje = TxtRetISR.Text.ToDecimal / DtDetalle.SUM("Total") Dim LastDr As DataRow = Nothing For Each Dr As DataRow In DtDetalle.Rows Dr("RetISR") = (Math.Truncate((Dr("Total").ToString.ToDecimal * Porcentaje) * 100)) / 100 Dr("RetISRPorcentaje") = 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) LastDr = Dr Next If Not IsNothing(LastDr) Then Dim Fdes As Decimal = TxtRetISR.Text.ToDecimal - DtDetalle.SUM("RetISR").ToString.ToDecimal If Fdes > 0 Then LastDr("RetISR") = LastDr("RetISR").ToString.ToDecimal + Fdes End If End If 'Alert(String.Format("Descuento:{0}", DtDetalle.SUM("Descuento"))) CalculaGenerales() GvD.DataSource = DtDetalle GvD.DataBind() UPPDetalle.Update() End Sub #End Region #Region "CONTRATOS" Private Sub CargaClientesContrato() 'DdlClientes.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa) 'DdlClientes.DataBind() 'DdlClientes.Items.Insert(0, New ListItem("Seleccione", "-1")) 'DdlClienteContrato End Sub Private Sub CargaContratos() Dim ObjContratos As New ClsContratos If ObjContratos.GetContratosDetalle(DdlContratos.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then GvContratos.DataSource = ObjContratos.DtResultados End If ObjContratos.Dispose() GvContratos.DataBind() UpContrato.Update() End Sub Private Sub DdlClienteContrato_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlClienteContrato.selectedindexchange DdlContratos.Items.Clear() ' DdlContratos.DataSource = GlobalDTContratos().FiltraParametros($"CveEmpresa = {UsuarioActual.CveEmpresa} AND CveCliente = {DdlClientes.SelectedValue.ToEntero} AND Estatus = True AND FechaFinal >= '{Now.ToShortDateString}' AND FechaInicial <= '{Now.ToShortDateString}'") Dim ObjContratos As New ClsContratos If ObjContratos.GetContratos(-1, UsuarioActual.CveEmpresa, DdlClienteContrato.SelectedValue.ToEntero, -1, 1) Then If ObjContratos.DtResultados.FiltraParametros("Estatus = True").Rows.Count > 0 Then DdlContratos.DataSource = ObjContratos.DtResultados.FiltraParametros($"Estatus = True AND FechaFinal >= '{Now.ToShortDateString}' AND FechaInicial <= '{Now.ToShortDateString}'") End If End If ObjContratos.Dispose() DdlContratos.DataBind() DdlContratos.Items.Insert(0, New ListItem("Seleccione", "-1")) UpContrato.Update() End Sub Private Sub DdlContratos_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlContratos.SelectedIndexChanged Dim ObjContratos As New ClsContratos If ObjContratos.GetContratosDetalle(DdlContratos.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then GvContratos.DataSource = ObjContratos.DtResultados GvContratos.DataBind() End If ObjContratos.Dispose() UpContrato.Update() End Sub Private Sub BtnAgregarContrato_Click(sender As Object, e As EventArgs) Handles BtnAgregarContrato.Click Dim Selecciono As Boolean = False If DivProyecto.Visible And (Not DdlProyectoContrato.SelectedValue.ToEntero > 0 Or Not DdlSubProyectoContrato.SelectedValue.ToEntero > 0) Then Alert("Tiene que seleccionar un proyecto y un subproyecto", TipoMensaje.MsgAdvertencia) Exit Sub ElseIf Not DdlSubProyectoContrato.SelectedValue.ToEntero > 0 Then Alert("Tiene que seleccionar un subproyecto", TipoMensaje.MsgAdvertencia) Exit Sub End If For Each row As GridViewRow In GvContratos.Rows If row.FCTextBox("TxtCantContrato").Text.Trim.ToDecimal > 0 And row.FCTextBox("TxtPrecioContrato").Text.Trim.ToDecimal > 0 Then Selecciono = True Exit For End If Next If Not Selecciono Then Alert("Tiene que tener al menos un contrato con cantidad y precio mayores que 0", TipoMensaje.MsgAdvertencia) Exit Sub End If DtDetalle.Rows.Clear() For Each row As GridViewRow In GvContratos.Rows If row.FCTextBox("TxtCantContrato").Text.Trim.ToDecimal > 0 And row.FCTextBox("TxtPrecioContrato").Text.Trim.ToDecimal > 0 Then Dim Cantidad As Decimal = row.FCTextBox("TxtCantContrato").Text.Trim.ToDecimal Dim Importe As Decimal = row.FCTextBox("TxtPrecioContrato").Text.Trim.ToDecimal Dim DrPS = GlobalDTPS(CveEmpresaActual, CvePS:=row.DataKey("CvePS").ToEntero).FiltroPrimero("") If DrPS Is Nothing Then Alert("Ocurrió un error al cargar la información del producto. Por favor vuelva a intentar.", TipoMensaje.MsgAdvertencia) Exit Sub End If Dim RetISR As Decimal = DrPS("RetISR").ToString.ToDecimal Dim RetIVA As Decimal = DrPS("RetIVA").ToString.ToDecimal Dim IvaPS As Decimal = DrPS("IVA").ToString.ToDecimal 'If IvaPS = -1 Then 'IVA DE LA SUCURSAL ' IvaPS = GlobalDTSubProyectos(-1, DdlSubProyecto.SelectedValue.ToEntero).FiltroPrimeroValor("IVA").ToDecimal 'End If Dim IEPSPS As Decimal = DrPS("IEPSPorcentaje").ToString.ToDecimal Dim IEPSPSIVA As Decimal = If(DrPS("IEPSGrabaIVA").ToString = "True", DrPS("IEPSPorcentaje").ToString.ToDecimal, 0) Dim IdCuentaPorEjercer As Integer = If(HdnCveCuentaPorEjercer.Value = String.Empty, -1, HdnCveCuentaPorEjercer.Value.ToEntero) Dim IdCuentaComprometido As Integer = If(HdnCveCuentaComprometido.Value = String.Empty, -1, HdnCveCuentaComprometido.Value.ToEntero) Dim TotalPS As Decimal = If(Importe > 0, (Importe * Cantidad), 0) Dim ImportePS As Decimal = If(Importe > 0, Importe, 0) Dim CveOrdenCompraDetalle As Integer = DtDetalle.MAX("CveOrdenCompraDetalle").ToEntero + 100 AddPS(Cantidad.ToString, row.DataKey("CvePS").ToEntero, row.DataKey("CodigoPS").ToString, "", ImportePS, 0, TotalPS, row.DataKey("CveUM").ToEntero, IvaPS, IEPSPS, IEPSPSIVA, row.DataKey("CveClasificacion").ToEntero, row.DataKey("UM"), row.DataKey("ClasificacionPS"), 0, "Sin Proyecto", DdlSubProyectoContrato.SelectedValue.ToEntero, DdlSubProyectoContrato.SelectedItem.Text, "", -1, 0, CveOrdenCompraDetalle, -1, -1, -1, -1, -1, -1, -1, -1, RetIVA, RetISR, CveContratoDetalle:=row.DataKey("CveContratoDetalle").ToEntero) End If Next TxtGrid.Text = If(DtDetalle.Rows.Count = 0, "", DtDetalle.Rows.Count.ToString) Ddlcliente.txtValue.Value = DdlClienteContrato.SelectedValue CargaSuperior() CargaDatosDetalles() UPPDetalle.Update() RegistraScript(String.Format("$('#{0}').modal().hide();", "ModalContrato")) UPPDetalle.Update() UpVendedor.Update() End Sub Protected Sub DdlProyectoContrato_SelectedIndexChanged(sender As Object, e As EventArgs) CargaSubProyectosContratos() End Sub Private Sub CargaSubProyectosContratos() Dim Filtro As String = If(DdlProyectoContrato.SelectedValue.ToEntero > 0, String.Format("CveProyecto = {0}", DdlProyectoContrato.SelectedValue.ToEntero), "") DdlSubProyectoContrato.Items.Clear() If Filtro <> "" Or UsuarioActual.Empresa.Tipo_CentroCosto = 1 Or UsuarioActual.Empresa.Tipo_CentroCosto = 2 Then DdlSubProyectoContrato.DataSource = DtEstatusUsuarios.FiltraParametros(Filtro, "", {"CveSubProyecto", "SubProyecto"}) 'If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, DdlProyecto.SelectedValue.ToEntero, CveEmpresaActual, -1, 1), GlobalDTSubProyectos(DdlProyecto.SelectedValue.ToEntero, -1, CveEmpresaActual, 1)) 'DtEstatusUsuarios.FiltraParametros(Filtro, "", {"CveSubProyecto", "SubProyecto"}) ' GlobalDTSubProyectos(DdlProyecto.SelectedValue.ToEntero) End If DdlSubProyectoContrato.DataBind() DdlSubProyectoContrato.Items.Insert(0, New ListItem("Seleccione", "-1")) End Sub #End Region #Region "PAQUETERIAS GUIAS" Protected Sub LnkAgregarGuia_Click(sender As Object, e As EventArgs) RegistraScript(String.Format("AbrirVentana('/General/PopUpPaqueteriasGuias.aspx?CveOC={0}',800,620);", CveOrdenCompra)) End Sub #End Region #Region "DIRECCION ENVIO" Protected Sub CargaDdlSucursalCliente() Dim ObjCliente As New ClsClientes DdlClienteSucursalEnvio.Items.Clear() If ObjCliente.GetSucursales(Ddlcliente.txtValue.Value.ToEntero) Then If ObjCliente.DtResultados.Rows.Count > 0 Then DdlClienteSucursalEnvio.DataSource = ObjCliente.DtResultados End If End If ObjCliente.Dispose() DdlClienteSucursalEnvio.DataBind() DdlClienteSucursalEnvio.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlClienteSucursalEnvio.SelectedValue = "-1" End Sub Private Sub BtnAgregarDireccionModal_Click(sender As Object, e As EventArgs) Handles BtnAgregarDireccionModal.Click TxtEnvioDireccion.Text = "" TxtEnvioNoExt.Text = "" TxtEnvioNoInt.Text = "" TxtEnvioColonia.Text = "" TxtEnvioCiudad.Text = "" TxtEnvioEstado.Text = "" TxtEnvioContacto.Text = "" 'TxtDepartamento.Text = "" TxtEnvioCP.Text = "" TxtEnvioTel.Text = "" DdlClienteSucursalEnvio.SelectedValue = "-1" UpAddDireccion.Update() RegistraScript("$('#divAddDireccionEnvio').modal();") End Sub Private Sub BtnAgregarDireccion_Click(sender As Object, e As EventArgs) Handles BtnAgregarDireccion.Click If Not Ddlcliente.txtValue.Value.ToEntero > 0 Then Alert("Tiene que tener un cliente seleccionado", TipoMensaje.MsgAdvertencia) Exit Sub End If Dim ObjClientes As New ClsClientes Dim TieneError = False Dim Estatus = If(ChkEstatus.Checked, 1, 0) CveDireccionEnvio = ObjClientes.DireccionEnvioAdd(Ddlcliente.txtValue.Value.ToEntero, TxtEnvioDireccion.Text.Trim, TxtEnvioNoExt.Text.Trim, TxtEnvioNoInt.Text.Trim, TxtEnvioColonia.Text.Trim, TxtEnvioCiudad.Text.Trim, TxtEnvioEstado.Text.Trim, TxtEnvioCP.Text.ToEntero, TxtEnvioContacto.Text.Trim, UsuarioActual.CveUsuario, Estatus, CveClienteSucursal:=DdlClienteSucursalEnvio.SelectedValue.ToEntero, EnvioTel:=TxtEnvioTel.Text.Trim.Replace(" ", "").Replace("(", "").Replace(")", "").Replace("-", "").Replace("_", "")) If CveDireccionEnvio < 0 Then TieneError = True End If If TieneError Then Alert("Ocurrio un error al agregar/actualizar la dirección de envío", TipoMensaje.MsgError) Else RegistraScript("$('#divAddDireccionEnvio').modal('hide');") CargaDireccionesEnvioCliente() End If End Sub #End Region #Region "CONTATCOS DEL PROVEEDOR" Protected Sub DdlProveedorSucursal_SelectedIndexChanged(sender As Object, e As EventArgs) DdlProveedorContacto.Items.Clear() DdlProveedorContacto.SelectedValue = Nothing If DdlProveedorSucursal.SelectedValue <> "-1" Then Dim ObjProveedor As New ClsCompProveedores If ObjProveedor.GetProveedoresContactos(-1, DdlProveedores.SelectedValue.ToEntero, DdlProveedorSucursal.SelectedValue.ToEntero) Then DdlProveedorContacto.DataSource = ObjProveedor.DtResultados DdlProveedorContacto.Items.Insert(0, New ListItem("Seleccione", "-1")) DivProveedorContacto.Visible = ObjProveedor.DtResultados.Rows.Count > 0 End If ObjProveedor.Dispose() DdlProveedorContacto.DataBind() UPProv.Update() Else DivProveedorContacto.Visible = False End If End Sub #End Region #Region "A G R E G A R - P R O D U C T O S S E R V I C I O S" Private Sub CargaDatosAgregarPS() DdlClasificacionPS.Items.Clear() If UsuarioActual.Empresa.UsaAC Then DdlClasificacionPS.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa, UsoClasificacion:=If(UsuarioActual.Empresa.UsaContabilidad, -1, -1)).FiltraParametros(" Codigo = '' OR Codigo IS NULL ", Orderby:="Clasificacion") Else DdlClasificacionPS.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa, UsoClasificacion:=If(UsuarioActual.Empresa.UsaContabilidad, -1, -1)).FiltraParametros("", Orderby:="Clasificacion") End If DdlClasificacionPS.DataBind() DdlClasificacionPS.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlUnidadMedida.Items.Clear() DdlUnidadMedida.DataSource = GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa) DdlUnidadMedida.DataBind() End Sub Protected Sub BtnAgregarPS_Click(sender As Object, e As EventArgs) Dim PS As New Modelos.MProductoServicio() PS.Codigo = TxtCodigo.Text PS.PS = TxtPS.Text PS.CveUnidadMedida = DdlUnidadMedida.SelectedValue.ToEntero() PS.CveClasificacion = DdlClasificacionPS.SelectedValue.ToEntero() PS.CveTipoPS = DdlTipoPS.SelectedValue.ToEntero() PS.AplicaParaVenta = True PS.CveUsuario = UsuarioActual.CveUsuario PS.CveEmpresa = UsuarioActual.CveEmpresa Dim ObjPS As New ClsProductosServicios If ObjPS.AddPSSimplificado(PS) > 0 Then RecargaGlobalEquivalencias() RecargaPSGlobal() Alert("El P/S fue agregado correctamente.") End If ObjPS.Dispose() TxtPS.Text = "" TxtCodigo.Text = "" DdlUnidadMedida.SelectedValueExist(-1) DdlClasificacionPS.SelectedValueExist(-1) DdlTipoPS.SelectedValueExist(-1) UpAgregarPS.Update() RegistraScript("$('#DivAgregarPS').modal('hide');") End Sub Private Sub RecargaPSGlobal() GlobalDTPSSimplificado(UsuarioActual.CveEmpresa) = Nothing 'Dim ObjPS As New ClsProductosServicios 'If ObjPS.GetPSSimplificado(UsuarioActual.CveEmpresa) Then Application(String.Format("GlobalDTPSSimplificado{0}", UsuarioActual.CveEmpresa)) = ObjPS.DtResultados.AsEnumerable() 'ObjPS.Dispose() End Sub Private Sub RecargaGlobalEquivalencias() GeneraGlobalEquivalencias() 'Dim Hilo As New System.Threading.Thread(AddressOf GeneraGlobalEquivalencias) 'Hilo.Start() End Sub Private Sub GeneraGlobalEquivalencias() GlobalDTProductosServiciosEquivalencias(-1, -1, UsuarioActual.CveEmpresa) = Nothing 'Dim dtt As DataTable = GlobalDTProductosServiciosEquivalencias(-1, -1, UsuarioActual.CveEmpresa) 'Dim ObjPS = New ClsProductosServicios 'If ObjPS.GetPSEquivalencias(-1, UsuarioActual.CveEmpresa) Then ' GlobalDTProductosServiciosEquivalencias(-1, -1, UsuarioActual.CveEmpresa) = ObjPS.DtResultados 'End If 'ObjPS.Dispose() End Sub #End Region #Region "C A R G A R E X C E L " Protected Sub BtnCargaExcelCot_Click(sender As Object, e As EventArgs) If TxtExcelCot.getfiles().Archivos.Count > 0 Then Dim file As Archivo = TxtExcelCot.getfiles().Archivos(0) Dim Directorio As String = AppDomain.CurrentDomain.BaseDirectory & file.path CargarArchivoCot(Directorio, file.filename) CargaCotizaciones(CveOrdenCompra) RegistraScript("$('#DivCargaExcelCotizaciones').modal('hide');") Else Alert("No existe el archivo. Favor de subir un archivo excel a la plataforma.", TipoMensaje.MsgError) End If End Sub Protected Sub BtnDescargarFormatoCot_Click(sender As Object, e As EventArgs) 'cantidad, Producto, Precio Unitario, Fecha Entrega, Observación Dim DtPS As DataTable = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa) Dim DtExcel As DataTable = (From row As GridViewRow In GvD.Rows Join rowPS In DtPS On rowPS("CvePS").ToString().ToEntero() Equals row.DataKey("CvePS").ToEntero() Where row.RowType = DataControlRowType.DataRow Select New With { .Cantidad = row.DataKey("Cantidad"), .Codigo = rowPS("Codigo"), .Producto = rowPS("PSCodigo"), .PrecioUnitario = row.DataKey("Importe").ToDecimal(), .FechaEntrega = "", .Observacion = row.DataKey("Observacion") }).QueryToDataTable(True) If DtExcel.Rows.Count < 2 Then Alert("No hay resutados en la busqueda.", TipoMensaje.MsgAdvertencia) Exit Sub End If DtExcel.TableName = "Cotización" 'DtExcel.Columns("Codigo").ColumnName = "Código" 'DtExcel.Columns("PS").ColumnName = "Producto / Servicio" SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet) Dim FileExcel As New ExcelFile() Dim worksheet = FileExcel.Worksheets.Add(DtExcel.TableName) worksheet.InsertDataTable(DtExcel, New InsertDataTableOptions() With { .ColumnHeaders = True, .StartRow = 0, .StartColumn = 0 }) worksheet.Rows(0).Style.FillPattern.SetPattern(FillPatternStyle.Solid, SpreadsheetColor.FromArgb(75, 119, 190), SpreadsheetColor.FromArgb(255, 255, 255)) worksheet.Rows(0).Style.Font.Color = SpreadsheetColor.FromArgb(255, 255, 255) Dim columnCount = worksheet.CalculateMaxUsedColumns() For i = 0 To columnCount worksheet.Columns(i).AutoFit(1, worksheet.Rows(0), worksheet.Rows(worksheet.Rows.Count - 1)) Next FileExcel.Save(Response, "Cotizacion.xlsx", SaveOptions.XlsxDefault) End Sub Protected Sub CargarArchivoCot(Ruta As String, FileName As String) SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet) Dim dt As DataTable = Nothing Dim ErrorArchivo = False Try dt = ReadExcelFile(Ruta + FileName, True) Catch ex As Exception ErrorArchivo = True OnError("Ocurrio un error al leer el archivo
" & ex.Message, ex) End Try If Not ErrorArchivo AndAlso dt IsNot Nothing Then 'cantidad, Producto, Precio Unitario, Fecha Entrega, Observación If DdlProveedorCot.SelectedValue.ToEntero() <= 0 Then Alert("Debe Seleccionar la lista de precios a cargar. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If If Not dt.Columns(0).ColumnName = "Cantidad" Then Alert("El nombre de la tercera columna debe ser 'Cantidad'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If If Not dt.Columns(1).ColumnName = "Codigo" Then Alert("El nombre de la cuarta columna debe ser 'Codigo'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If If Not dt.Columns(2).ColumnName = "Producto" Then Alert("El nombre de la cuarta columna debe ser 'Producto'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If If Not dt.Columns(3).ColumnName = "PrecioUnitario" Then Alert("El nombre de la sexta columna debe ser 'PrecioUnitario'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If If Not dt.Columns(4).ColumnName = "FechaEntrega" Then Alert("El nombre de la sexta columna debe ser 'FechaEntrega'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If If Not dt.Columns(5).ColumnName = "Observacion" Then Alert("El nombre de la sexta columna debe ser 'Observacion'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If dt.TableName = "Datos" Dim ProductosNoCargados As New StringBuilder() Dim RowsCargados As Integer = 0 Dim RowsNoCargados As Integer = 0 Dim TieneError As Boolean = False Dim objCotizacion As New ClsOC objCotizacion.IniciaTransacSQL() Try Dim DtPS As DataTable = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa) Dim DtOCDetalle As DataTable = (From row As GridViewRow In GvD.Rows Join rowPS In DtPS On rowPS("CvePS").ToString().ToEntero() Equals row.DataKey("CvePS").ToEntero() Where row.RowType = DataControlRowType.DataRow Select New With { .CvePS = row.DataKey("CvePS").ToEntero(), .CveUnidadMedida = rowPS("CveUnidadMedida").ToString().ToEntero(), .CveOrdenCompraDetalle = row.DataKey("CveOrdenCompraDetalle").ToString().ToEntero(), .Codigo = rowPS("Codigo") }).QueryToDataTable(True) Dim Folio As String = "" Dim CveProveedor As Integer = DdlProveedorCot.SelectedValue.ToEntero() If CveProveedor > 0 Then If objCotizacion.AddCotizacion(CveOrdenCompra, CveProveedor, -1, Folio, TxtFecha.Text, "", DdlMoneda.SelectedValue.ToEntero, 0, UsuarioActual.CveUsuario) Then For Each dr As DataRow In dt.Rows Dim RowPS = DtOCDetalle.FiltroPrimero(String.Format("Codigo='{0}'", dr("Codigo").ToString())) Dim CveOrdenCompraDetalle As Integer = RowPS("CveOrdenCompraDetalle").ToString().ToEntero() Dim CvePS As Integer = RowPS("CvePS").ToString().ToEntero() Dim CveUnidadMedida As Integer = RowPS("CveUnidadMedida").ToString().ToEntero() Dim Fecha As String = If(String.IsNullOrEmpty(dr("FechaEntrega").ToString()), "", If(IsDate(dr("FechaEntrega").ToString()), dr("FechaEntrega").ToString(), "")) TieneError = Not objCotizacion.AddCotizacionDetalle(objCotizacion.CveCotizacion, CvePS, dr("PrecioUnitario").ToString().ToDecimal(), dr("Cantidad").ToString().ToDecimal, CveUnidadMedida, dr("Cantidad").ToString().ToDecimal, Fecha, dr("Observacion").ToString(), CveOrdenCompraDetalle) If TieneError = True Then Exit For Next End If Else TieneError = False End If Catch ex As Exception TieneError = True OnError("Ocurrió un error al cargar las cotizaciones.", ex) Finally If TieneError Then objCotizacion.RollBack() Alert("Ocurrió un error al cargar las cotizaciones.") Else objCotizacion.Commit() Alert("Las cotizaciones se cargaron correctamente.") End If objCotizacion.Dispose() End Try End If End Sub #End Region Protected Sub DdlMoneda_Change() Handles DdlMoneda.SelectedIndexChanged MonedaTexto = DdlMoneda.SelectedItem.Text End Sub Protected Sub LnkCambiarMoneda_Click(sender As Object, e As EventArgs) Handles LnkCambiarMoneda.Click RegistraScript("$('#DivCambiarMoneda').modal();") End Sub Protected Sub BtnCambiarMoneda_Click() Handles BtnCambiarMoneda.Click Dim ObjInv As New ClsInventarios Dim DtInvOC As DataTable = Nothing If ObjInv.GetMovimientosOC(CveOrdenCompra, UsuarioActual.CveEmpresa) Then DtInvOC = ObjInv.DtResultados End If ObjInv.Dispose() Dim CveMonedaOC As Integer = DdlMoneda.SelectedValue.ToEntero Dim CveProveedor As Integer = DdlProveedores.SelectedValue.ToEntero Dim ProveedorNombre As String = GlobalDTCompProveedores(UsuarioActual.CveEmpresa).FiltroPrimeroValor("RazonSocial", $"CveProveedor = {CveProveedor}").ToString Dim ConceptoPartida As String = String.Format(" Cambio Moneda {0} OC: {1} ", ProveedorNombre, lblFolio.Text) Dim ObjConta As New ClsContabilidad Dim ObjOC As New ClsOC(ObjConta.IniciaTransacSQL) Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("OC/OC-CambioMoneda", 74, 0, 0, 1, Now, ConceptoPartida, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Dim Importe176, Importe228, Importe229 As Decimal Dim ImporteCI176, ImporteMN229, PU, Importe176PU As Decimal Dim Retorno As Boolean = True Dim ErrorPrepoliza As Boolean = False Dim IdCtaContableOC As Integer = 0 Dim IdCtaContableME As Integer = 0 Dim IdCtaContableMEComp As Integer = 0 If ObjConta.GetRetCuenta(176, UsuarioActual.CveEmpresa) Then IdCtaContableOC = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero End If If ObjConta.GetRetCuenta(228, UsuarioActual.CveEmpresa) Then IdCtaContableME = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero End If If ObjConta.GetRetCuenta(229, UsuarioActual.CveEmpresa) Then IdCtaContableMEComp = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero End If '.FiltraParametros($"CvePS > 0 AND CveOrdenCompraDetalle = {dr2("CveOrdenCompraDetalle").ToString.ToEntero}").Copy For Each gvr As GridViewRow In GvD.Rows If ObjOC.OrdenesCompraDetalleCostoPP(gvr.DataKey("CveOrdenCompraDetalle").ToString.ToEntero) AndAlso ObjOC.DtResultados.Rows.Count >= 1 Then Dim Concepto As String = $"{DdlProveedores.SelectedText} OC {ObjOC.DtResultados.FiltroPrimeroValor("Folio").ToString} Inv: {ObjOC.DtResultados.FiltroPrimeroValor("FolioAlmacen").ToString}" Importe176 = ObjOC.DtResultados.FiltroPrimeroValor("Importe176Suma").ToDecimal ': ImporteME176 = ObjOC.DtResultados.FiltroPrimeroValor("ImporteME176").ToDecimal * gvr.DataKey("Cantidad").ToString.ToDecimal : ImporteMN176 = ObjOC.DtResultados.FiltroPrimeroValor("ImporteMN176").ToDecimal * gvr.DataKey("Cantidad").ToString.ToDecimal Importe228 = ObjOC.DtResultados.FiltroPrimeroValor("Importe228Suma").ToDecimal ': ImporteME228 = ObjOC.DtResultados.FiltroPrimeroValor("ImporteME228").ToDecimal * gvr.DataKey("Cantidad").ToString.ToDecimal : ImporteMN228 = ObjOC.DtResultados.FiltroPrimeroValor("ImporteMN228").ToDecimal * gvr.DataKey("Cantidad").ToString.ToDecimal Importe229 = ObjOC.DtResultados.FiltroPrimeroValor("Importe229Suma").ToDecimal : ImporteMN229 = ObjOC.DtResultados.FiltroPrimeroValor("Importe229Suma").ToDecimal ImporteCI176 = ObjOC.DtResultados.FiltroPrimeroValor("ImporteCI176").ToDecimal Importe176PU = ObjOC.DtResultados.FiltroPrimeroValor("Importe176").ToDecimal Dim CveMovimientoAlmacen As Integer = ObjOC.DtResultados.FiltroPrimeroValor("CveMovimientoAlmacen").ToEntero Dim TCAjuste As Decimal = ObjOC.DtResultados.FiltroPrimeroValor("TipoCambioAjuste").ToDecimal If CveMonedaOC = 2 Then CveMonedaOC = 1 PU = ObjOC.DtResultados.FiltroPrimeroValor("Importe228").ToDecimal * TCAjuste ImporteCI176 = ObjOC.DtResultados.FiltroPrimeroValor("ImporteCI228").ToDecimal Importe176 = Importe228 + Importe229 If ObjConta.AddPrePolizasDetalle(CvePrePoliza, 1, -Importe228, lblFolio.Text, 228, Concepto, Now, IdCtaContableME, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, ImporteMX:=-Importe228, ImporteME:=-Importe228, CveOCDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToString.ToEntero, TipoCambio:=TCAjuste, CveMovimientoAlmacen:=CveMovimientoAlmacen) Then If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, 1, -Importe229, lblFolio.Text, 229, Concepto, Now, IdCtaContableMEComp, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, ImporteMX:=-Importe229, ImporteME:=-Importe228, CveOCDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToString.ToEntero, TipoCambio:=TCAjuste, CveMovimientoAlmacen:=CveMovimientoAlmacen) Then ErrorPrepoliza = True Exit For Else If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, 1, Importe176, lblFolio.Text, 176, Concepto, Now, IdCtaContableOC, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, ImporteMX:=Importe176, ImporteME:=Importe176, CveOCDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToString.ToEntero, CveMovimientoAlmacen:=CveMovimientoAlmacen) Then ErrorPrepoliza = True Exit For Else If Not ObjOC.UpdateOrdenCompraDetalleAjuste(CveOrdenCompra, gvr.DataKey("CveOrdenCompraDetalle").ToString.ToEntero, PU, UsuarioActual.CveUsuario) Then Retorno = False Exit For End If End If End If Else ErrorPrepoliza = True Exit For End If Else CveMonedaOC = 2 TCAjuste = TxtTCCambioMoneda.Text.ToDecimal If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, 1, -Importe176, lblFolio.Text, 176, Concepto, Now, IdCtaContableOC, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, ImporteMX:=-Importe176, ImporteME:=-Importe176, CveOCDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToString.ToEntero, CveMovimientoAlmacen:=CveMovimientoAlmacen) Then ErrorPrepoliza = True Exit For Else Importe228 = (Importe176 / TCAjuste) Importe229 = (Importe228 * TCAjuste - Importe228).RoundSQL Importe228 = Importe228.RoundSQL(3) ' se redondea a 3 digitos, por la conversion, y no afecta al CK de complementaria Dim dift As Decimal = Importe176 - Importe228 - Importe229 If dift <> 0 Then Importe229 += dift PU = Importe176PU / TCAjuste If ObjConta.AddPrePolizasDetalle(CvePrePoliza, 1, Importe228, lblFolio.Text, 228, Concepto, Now, IdCtaContableME, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, ImporteMX:=Importe228, ImporteME:=Importe228, CveOCDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToString.ToEntero, TipoCambio:=TCAjuste, CveMovimientoAlmacen:=CveMovimientoAlmacen) Then If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, 1, Importe229, lblFolio.Text, 229, Concepto, Now, IdCtaContableMEComp, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedor, ImporteMX:=Importe229, ImporteME:=Importe228, CveOCDetalle:=gvr.DataKey("CveOrdenCompraDetalle").ToString.ToEntero, TipoCambio:=TCAjuste, CveMovimientoAlmacen:=CveMovimientoAlmacen) Then ErrorPrepoliza = True Exit For Else If Not ObjOC.UpdateOrdenCompraDetalleAjuste(CveOrdenCompra, gvr.DataKey("CveOrdenCompraDetalle").ToString.ToEntero, PU, UsuarioActual.CveUsuario) Then Retorno = False Exit For End If End If Else ErrorPrepoliza = True Exit For End If End If End If Else Alert("Ocurrió un error al procesar la mercancia recibida por adelantado. Por favor comuniquese con asistencia SIG", TipoMensaje.MsgError) ErrorPrepoliza = True Exit For End If 'DtInvOC.FiltraParametros($"CvePS > 0 AND CveOrdenCompraDetalle = {GvD.DataKeys("CveOrdenCompraDetalle").ToString}").Copy() 'If CveMonedaOC = 1 Then ' If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteME, SerieFolio, 228, ConceptoPartida, Fecha, IdCtaContableRecepcionOCME, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=ImporteME, ImporteME:=ImporteME, TipoCambio:=TCInvOC, CveOCDetalle:=CveOCDetalle) Then ' If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteMEComp, SerieFolio, 229, ConceptoPartida, Fecha, IdCtaContableRecepcionOCComplementaria, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=ImporteMEComp, ImporteME:=ImporteME, TipoCambio:=TCInvOC, CveOCDetalle:=CveOCDetalle) Then ' If DifImporte <> 0 AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DifImporte, SerieFolio, 69, ConceptoPartida, Fecha, IdCtaContable69, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=DifImporte, ImporteME:=DifImporte, TipoCambio:=TCInvOC, CveOCDetalle:=CveOCDetalle, CveClasificacion:=CveClasificacionCostoOC) Then ' Retorno = False ' Exit For ' End If ' Else ' Retorno = False ' Exit For ' End If ' Else ' Retorno = False ' Exit For ' End If 'End If Next If Not ErrorPrepoliza Then If Not ObjOC.UpdateOrdenCompraMoneda(CveOrdenCompra, UsuarioActual.CveEmpresa, CveMonedaOC, UsuarioActual.CveUsuario) Then ErrorPrepoliza = True End If End If If Not ErrorPrepoliza Then ObjOC.Commit() Alert("Cambio Aplicado correctamente") Else ObjOC.RollBack() Alert("Sucedió un error con el cambio en la moneda", TipoMensaje.MsgError) End If 'Dim ObjInv As New ClsInventarios 'Dim OC As New ClsOC 'Dim Err As Boolean = False 'If ObjInv.GetMovimientos(CveMovimientoAlmacenVenta, -1, -1, UsuarioActual.CveEmpresa) Then ' Dim TipoMoneda As String = ObjInv.DtResultados.FiltroPrimeroValor("CveMoneda") ' Dim ObjConta As New ClsContabilidad ' Dim IdCtaContableOC As Integer = 0 ' Dim IdCtaContableOCME As Integer = 0 ' Dim IdCtaContableOCComplementaria As Integer = 0 ' If ObjConta.GetRetCuenta(176, UsuarioActual.CveEmpresa) Then ' IdCtaContableOC = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero ' End If ' If ObjConta.GetRetCuenta(228, UsuarioActual.CveEmpresa) Then ' IdCtaContableOCME = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero ' End If ' If ObjConta.GetRetCuenta(229, UsuarioActual.CveEmpresa) Then ' IdCtaContableOCComplementaria = ObjConta.DtResultados.FiltroPrimeroValor("IdCtaContable").ToEntero ' End If ' Dim LugarEntrega = If(txtLugarEntrega.Text.Trim = "", "-1", txtLugarEntrega.Text.Trim) ' LugarEntrega = If(DivLugarEntrega1.Visible, LugarEntrega, If(TxtLugarEntregaDirecta.Visible, TxtLugarEntregaDirecta.Text.Trim, "")) ' Dim CveProveedorContacto As Integer = -1 ' Dim CveProveedor As Integer = -1 ' If Not ChkCotizacion.Checked OrElse (UsuarioActual.Empresa.Funcionalidad(565) = "1" AndAlso CveConfianzaProveedor > 0) Then ' CveProveedor = DdlProveedores.SelectedValue.ToEntero ' CveProveedorContacto = IIf(DdlProveedorContacto.SelectedValue.ToEntero = 0, "-1", DdlProveedorContacto.SelectedValue).ToString.ToEntero ' End If ' Dim IVA = If(TxtIVA.Visible, TxtIVA.Text.ToDecimal, LblIVA.Text.ToDecimal) ' Dim Promocion = TxtPromocion.Text.Trim ' Dim TCDecimal As Decimal = TxtTCCambioMoneda.Text.ToDecimal ' Dim TCDouble As Double = TxtTCCambioMoneda.Text.ToDecimal ' If TipoMoneda = "2" Then ' Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("OC/OC-(OCAlmacen)", 74, 0.0D, 0.0D, 1, Now, DdlProveedores.SelectedText, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) ' If CvePrePoliza > 0 Then ' Dim PrimerImporte As Integer = (0 - LblSubTotal.Text.ToDecimal) ' Dim SegundoImporte As Integer = (0 - LblSubTotal.Text.ToDecimal) ' If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, PrimerImporte, lblFolio.Text, 228, lblFolio.Text, Now, IdCtaContableOCME, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacenVenta, CveOC:=CveOrdenCompra) Then ' If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, SegundoImporte, lblFolio.Text, 229, lblFolio.Text, Now, IdCtaContableOCComplementaria, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacenVenta, CveOC:=CveOrdenCompra) Then ' If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, PrimerImporte + SegundoImporte, lblFolio.Text, 176, lblFolio.Text, Now, IdCtaContableOC, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacenVenta, CveOC:=CveOrdenCompra) Then ' Err = True ' Else ' If Not OC.UpdateOrdenCompra(-1, TxtDescrip.Text, TxtJustificacion.Text, DdlPrioridad.SelectedValue.ToEntero, ChkCotizacion.Checked, If(TxtFechaEstimadaEntrega.Text.Trim = "", "-1", TxtFechaEstimadaEntrega.Text.Trim), ' LugarEntrega, 1, CveProveedor, CveOrdenCompra, UsuarioActual.CveUsuario, Ddlcliente.txtValue.Value.ToEntero, DdlVendedor.SelectedValue.ToEntero, txtobsprioridad.Text, IVA:=(IVA * TCDecimal), RetIVA:=(TxtRetIVA.Text.ToDecimal * TCDecimal), ' RetISR:=(TxtRetISR.Text.ToDecimal * TCDecimal), FolioAdicional:=TxtFolioAdicional.Text, EntregaDirecta:=If(ChkEntregaDirecta.Checked, 1, -1), CveDireccionEnvio:=If(DdlDireccionEnvio.Visible, DdlDireccionEnvio.SelectedValue.ToEntero, -1), ' Guia:=TxtGuia.Text.Trim, IEPS:=TxtIEPS.Text.ToDecimal, UsoCFDI:=DdlUsoCFDI.SelectedValue.ToEntero, Promocion:=Promocion, pCveProveedorSucursal:=DdlProveedorSucursal.SelectedValue.ToEntero, CveProveedorContacto:=CveProveedorContacto, ' PorcentajeIVA:=Math.Round(DdlIVA.SelectedValue.ToDecimal - 1, 2)) Then ' Err = True ' Else ' For Each dr As DataRow In DtDetalle.FiltraParametros("TipoDato IN (1)").Rows ' If OC.UpdateOrdenCompraDetalle(dr("Cantidad").ToString.ToDecimal, dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, (dr("Importe").ToString.ToDecimal * TCDouble), 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.ToDecimal * TCDouble), IEPSPS:=(dr("IEPSPS").ToString.ToDecimal * TCDouble), IEPSPSIVA:=(dr("IEPSPSIVA").ToString.ToDecimal * TCDouble), IVA:=(dr("IVA").ToString.ToDecimal * TCDouble), ' RetIVA:=(dr("RetIVA").ToString.ToDecimal * TCDouble), RetISR:=(dr("RetISR").ToString.ToDecimal * TCDouble), Total:=(dr("Total").ToString.ToDecimal * TCDouble), CveContratoDetalle:=dr("CveContratoDetalle").ToString.ToEntero, ' IVAPorcentaje:=dr("IVAPorcentaje").ToString.ToDecimal, RetIVAPorcentaje:=dr("RetIVAPorcentaje").ToString.ToDecimal, RetISRPorcentaje:=dr("RetISRPorcentaje").ToString.ToDecimal, IEPSPSPorcentaje:=dr("IEPSPSPorcentaje").ToString.ToDecimal, ' IEPSPSIVAPorcentaje:=dr("IEPSPSIVAPorcentaje").ToString.ToDecimal) <= 0 Then ' Err = True ' Exit For ' End If ' Next ' End If ' End If ' Else ' Err = True ' End If ' Else ' Err = True ' End If ' End If ' ElseIf TipoMoneda = "1" Then ' Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("OC/OC-(OCAlmacen)", 74, 0.0D, 0.0D, 1, Now, DdlProveedores.SelectedText, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) ' If CvePrePoliza > 0 Then ' Dim PrimerImporte As Decimal = Decimal.Round(((LblSubTotal.Text.ToDecimal) / TxtTCCambioMoneda.Text.ToDecimal), 2, MidpointRounding.AwayFromZero) ' Dim SegundoImporte As Decimal = LblSubTotal.Text.ToDecimal ' If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, PrimerImporte, lblFolio.Text, 228, lblFolio.Text, Now, IdCtaContableOCME, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacenVenta, CveOC:=CveOrdenCompra) Then ' If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, SegundoImporte, lblFolio.Text, 229, lblFolio.Text, Now, IdCtaContableOCComplementaria, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacenVenta, CveOC:=CveOrdenCompra) Then ' If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, (0 - (PrimerImporte + SegundoImporte)), lblFolio.Text, 176, lblFolio.Text, Now, IdCtaContableOC, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacenVenta, CveOC:=CveOrdenCompra) Then ' Err = True ' Else ' If Not OC.UpdateOrdenCompra(-1, TxtDescrip.Text, TxtJustificacion.Text, DdlPrioridad.SelectedValue.ToEntero, ChkCotizacion.Checked, If(TxtFechaEstimadaEntrega.Text.Trim = "", "-1", TxtFechaEstimadaEntrega.Text.Trim), ' LugarEntrega, 2, CveProveedor, CveOrdenCompra, UsuarioActual.CveUsuario, Ddlcliente.txtValue.Value.ToEntero, DdlVendedor.SelectedValue.ToEntero, txtobsprioridad.Text, IVA:=(IVA / TCDecimal), ' RetIVA:=(TxtRetIVA.Text.ToDecimal / TCDecimal), RetISR:=(TxtRetISR.Text.ToDecimal / TCDecimal), FolioAdicional:=TxtFolioAdicional.Text, EntregaDirecta:=If(ChkEntregaDirecta.Checked, 1, -1), CveDireccionEnvio:=If(DdlDireccionEnvio.Visible, DdlDireccionEnvio.SelectedValue.ToEntero, -1), ' Guia:=TxtGuia.Text.Trim, IEPS:=TxtIEPS.Text.ToDecimal, UsoCFDI:=DdlUsoCFDI.SelectedValue.ToEntero, Promocion:=Promocion, pCveProveedorSucursal:=DdlProveedorSucursal.SelectedValue.ToEntero, CveProveedorContacto:=CveProveedorContacto, ' PorcentajeIVA:=Math.Round(DdlIVA.SelectedValue.ToDecimal - 1, 2)) Then ' Err = True ' Else ' For Each dr As DataRow In DtDetalle.FiltraParametros("TipoDato IN (1)").Rows ' If OC.UpdateOrdenCompraDetalle(dr("Cantidad").ToString.ToDecimal, dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, (dr("Importe").ToString.ToDecimal / TCDouble), 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.ToDecimal / TCDouble), IEPSPS:=(dr("IEPSPS").ToString.ToDecimal / TCDouble), IEPSPSIVA:=(dr("IEPSPSIVA").ToString.ToDecimal / TCDouble), IVA:=(dr("IVA").ToString.ToDecimal / TCDouble), ' RetIVA:=(dr("RetIVA").ToString.ToDecimal / TCDouble), RetISR:=(dr("RetISR").ToString.ToDecimal / TCDouble), Total:=(dr("Total").ToString.ToDecimal / TCDouble), CveContratoDetalle:=dr("CveContratoDetalle").ToString.ToEntero, ' IVAPorcentaje:=dr("IVAPorcentaje").ToString.ToDecimal, RetIVAPorcentaje:=dr("RetIVAPorcentaje").ToString.ToDecimal, RetISRPorcentaje:=dr("RetISRPorcentaje").ToString.ToDecimal, IEPSPSPorcentaje:=dr("IEPSPSPorcentaje").ToString.ToDecimal, ' IEPSPSIVAPorcentaje:=dr("IEPSPSIVAPorcentaje").ToString.ToDecimal) <= 0 Then ' Err = True ' Exit For ' End If ' Next ' End If ' End If ' Else ' Err = True ' End If ' Else ' Err = True ' End If ' End If ' End If ' ObjConta.Dispose() 'End If 'ObjInv.Dispose() 'If Err Then ' Alert("Sucedió un error con el cambio en la moneda", TipoMensaje.MsgError) 'Else ' Alert("Moneda actualizada con exito") 'End If End Sub Private Sub CargaAnticiposSolicitudes() If CveOrdenCompra > 0 Then If CveIEAnticipo > 0 Then PorletIEAnticipo.Visible = True UpIEAnticipo.Update() Else End If End If Dim objbancos As New ClsOC If objbancos.GetOCAnticipoSaldo(CveOrdenCompra, UsuarioActual.CveEmpresa) AndAlso objbancos.DtResultados.Rows.Count > 0 Then SaldoOCAnticipo = objbancos.DtResultados(0)("Saldo").ToString.ToDecimal LblSaldoOCAnticipo.Text = $"Saldo OC ${SaldoOCAnticipo.ToString.FormatoNumero}" If SaldoOCAnticipo > 0 Then DdlSAUsuario.Items.Clear() If GlobalDTOCEstatus(CveEmpresaActual).FiltroPrimeroValor("TipoTermino", $"CveEstatus = {CveEstatus}").ToEntero.Contiene(0, 3) Then BtnSolicitudAnticipo.Visible = True DdlSAUsuario.DataSource = GlobalDTUsuarios(-1, CveEmpresaActual) DdlSAUsuario.DataBind() DdlSAUsuario.Items.Insert(0, New ListItem("Seleccione", "-1")) End If BtnSolicitudAnticipo.Visible = True 'generarAnticipo.Text = "Ver Anticipo" Else BtnSolicitudAnticipo.Visible = False 'generarAnticipo.Text = "Ver Anticipo" 'generarAnticipo.NavigateUrl = String.Format("/Bancos/IE.aspx?CveIE={0}", objbancos.DtResultados.Rows(0)("CveIE")) End If Else ' generarAnticipo.NavigateUrl = String.Format("/Bancos/IE.aspx?CveOrdenCompra={0}&CveProveedor={1}", CveCompra, DdlProveedorContacto.SelectedValue.ToEntero) End If If objbancos.GetOCAnticipo(CveOrdenCompra, UsuarioActual.CveEmpresa) Then If objbancos.DtResultados.Rows.Count > 0 Then PorletIEAnticipo.Visible = True GvAnticpos.DataSource = objbancos.DtResultados ImporteAnticipos = objbancos.DtResultados.SUM("Importe") End If Else GvAnticpos.DataSource = Nothing ImporteAnticipos = 0 End If GvAnticpos.DataBind() objbancos.Dispose() UpAcciones.Update() UpSolicitarAnticipo.Update() End Sub Private Sub MostrarUsuarioAsignado() If CveUsuarioAsignado > 0 Then PnlUsuarioYaAsignado.Visible = True Dim NombreUsuario As String = GlobalDTUsuarios(CveUsuario:=CveUsuarioAsignado).FiltroPrimeroValor("Nombre") LblUsuarioYaAsignado.Text = NombreUsuario End If End Sub 'Private Sub CargaVentaRelacionada() ' Dim GridViewPSAux As GridView = GvD ' Dim CveOCDetalle As New StringBuilder() ' For Each vd As GridViewRow In GridViewPSAux.Rows ' Dim CveVentaDetalle As String = vd.DataKey("CveOrdenCompraDetalle") ' CveOCDetalle.AppendFormat("{0},", CveVentaDetalle) ' Next ' Dim ObjVentas As New ClsOC() ' If ObjVentas.GetVentasRelacionadas(CveOCDetalle.ToString) Then ' Dim V As DataTable = ObjVentas.DtResultados ' If V.Rows.Count > 0 Then ' DivVentaRelacionada.Visible = True ' GvVentaRelacionadas.DataSource = V ' GvVentaRelacionadas.DataBind() ' End If ' End If ' ObjVentas.Dispose() 'End Sub Private Sub CargaOT() If CveOrdenTrabajo > 0 Then Dim ObjAF As New ClsAF Dim CveSubProyecto As Integer = 0 Dim SubProyecto As String = "" Dim CveProyecto As Integer = 0 Dim Proyecto As String = "" If ObjAF.GetOrdenesTrabajo(CveOrdenTrabajo, -1, -1, -1, -1, -1, MinFecha, MaxFecha, Nothing, -1, UsuarioActual.CveEmpresa) Then If ObjAF.DtResultados IsNot Nothing AndAlso ObjAF.DtResultados.Rows.Count > 0 Then lblFolio.Text = $"Folio OT: {ObjAF.DtResultados(0)("Folio").ToString}" CveSubProyecto = ObjAF.DtResultados(0)("CveSubProyecto").ToString.ToEntero SubProyecto = GlobalDTSubProyectos(-1, CveSubProyecto)(0)("SubProyecto").ToString CveProyecto = GlobalDTSubProyectos(-1, CveSubProyecto)(0)("CveProyecto").ToString.ToEntero Proyecto = GlobalDTSubProyectos(-1, CveSubProyecto)(0)("Proyecto").ToString 'DdlAF.SelectedValueExist(ObjAF.DtResultados(0)("CveAF").ToString) 'DdlTipoServicio.SelectedValueExist(ObjAF.DtResultados(0)("CveTipoServicio").ToString) 'TxtServicio.Text = ObjAF.DtResultados(0)("Servicio").ToString DdlPrioridad.SelectedValueExist(ObjAF.DtResultados(0)("Prioridad").ToString) 'txtFechaI.Text = ObjAF.DtResultados(0)("FechaInicio").ToString.ToDate.ToString("dd/MM/yyyy") If ObjAF.DtResultados(0)("FechaFin").ToString.Length > 0 Then 'txtFechaF.Text = ObjAF.DtResultados(0)("FechaFin").ToString.ToDate.ToString("dd/MM/yyyy") End If 'txtFechaFinReal.Text "" 'DdlOrdenesTrabajoEstatus.SelectedValueExist(ObjAF.DtResultados(0)("CveEstatusOT").ToString) Else Alert("No se encontro la orden de trabajo", TipoMensaje.MsgAdvertencia) End If End If If ObjAF.GetOrdenesTrabajoMateriales(CveOrdenTrabajo, UsuarioActual.CveEmpresa) Then For Each DRow As DataRow In ObjAF.DtResultados.Rows Dim Cantidad As Decimal = DRow("Faltante").ToString.ToDecimal If Cantidad > 0 Then Dim CvePS As Integer = DRow("CvePS").ToString.ToEntero Dim PrecioUnitario As Decimal = 0 Dim dr As DataRow = DtDetalle.NewRow Dim DrPS = GlobalDTPS(CveEmpresaActual, CvePS:=CvePS).FiltroPrimero("") If DrPS Is Nothing Then Alert("Ocurrió un error al cargar la información de los productos del archivo. Por favor vuelva a intentar.", TipoMensaje.MsgAdvertencia) Continue For End If Dim RetIVA As Decimal = DrPS("RetIVA").ToString.ToDecimal Dim RetISR As Decimal = DrPS("RetISR").ToString.ToDecimal Dim PS As String = DrPS("PS").ToString Dim TotalPS As Decimal = If(PrecioUnitario > 0, PrecioUnitario * Cantidad, 0) Dim CveUnidadMedida As Integer = DrPS("CveUnidadMedida").ToString.ToEntero Dim UM As String = DrPS("UnidadMedida").ToString Dim IvaPS As Decimal = DrPS("IVA").ToString.ToDecimal 'If IvaPS = -1 Then ' Dim Drr As DataRow = GlobalDTSubProyectos(-1, DdlSubProyecto.SelectedValue.ToEntero())(0) ' IvaPS = Drr("IVA").ToString().ToDecimal() 'End If Dim IEPSPS As Decimal = DrPS("IEPSPorcentaje").ToString.ToDecimal Dim IEPSPSIVA As Decimal = If(DrPS("IEPSGrabaIVA").ToString = "True", DrPS("IEPSPorcentaje").ToString.ToDecimal, 0) Dim CveClasificacion As Integer = DrPS("CveClasificacion").ToString.ToEntero Dim Clasificacion As String = DrPS("Clasificacion").ToString Dim CveActivoFijo = HdnCveActivoFijo.Value.ToEntero Dim IdCuentaPorEjercer As Integer = If(HdnCveCuentaPorEjercer.Value = String.Empty, -1, HdnCveCuentaPorEjercer.Value.ToEntero) Dim IdCuentaComprometido As Integer = If(HdnCveCuentaComprometido.Value = String.Empty, -1, HdnCveCuentaComprometido.Value.ToEntero) Dim CveOrdenCompraDetalle As Integer = DtDetalle.MAX("CveOrdenCompraDetalle").ToEntero + 100 AddPS(Cantidad, CvePS, PS, "", PrecioUnitario, 0, TotalPS, CveUnidadMedida, IvaPS, IEPSPS, IEPSPSIVA, CveClasificacion, UM, Clasificacion, CveProyecto, Proyecto, CveSubProyecto, SubProyecto, LblCodigo.Text, CveActivoFijo, 0, CveOrdenCompraDetalle, CveOrdenCompra, IdCuentaPorEjercer, IdCuentaComprometido, DdlACGeneral1.SelectedValue.ToEntero, DdlACGeneral2.SelectedValue.ToEntero, DdlACGeneral3.SelectedValue.ToEntero, DdlACGeneral4.SelectedValue.ToEntero, DdlACGeneral5.SelectedValue.ToEntero, RetIVA, RetISR) End If Next End If ObjAF.Dispose() GvD.DataSource = DtDetalle GvD.DataBind() End If End Sub Protected Sub LnkAcontratos_Click(sender As Object, e As EventArgs) DdlContratosObra.Items.Clear() DdlContratosObra.DataSource = GlobalDTContratos(UsuarioActual.CveEmpresa).FiltraParametros("CveContratoTipo in (30,31) ") DdlContratosObra.DataBind() DdlContratosObra.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlTipoGasto.Items.Clear() DdlTipoGasto.DataSource = GlobalDTTiposGastos(UsuarioActual.CveEmpresa) DdlTipoGasto.DataBind() DdlTipoGasto.Items.Insert(0, New ListItem("Seleccione", "-1")) RegistraScript("$('#DivmodalConmtrato').modal('show')") UpModalContrato.Update() End Sub Protected Sub DdlContratosCompras_SelectedIndexChanged(sender As Object, e As EventArgs) If DdlContratosObra.SelectedValue.ToEntero > 0 Then Dim ObjContratos As New ClsContratos() If ObjContratos.GetContratosObraCompras(DdlContratosObra.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then If ObjContratos.DtResultados.Rows.Count > 0 Then GvContratosControl.DataSource = ObjContratos.DtResultados BtnAplicarContrato.Visible = True divBusqueda.Visible = True ChkContinualAgregandoControl.Visible = True ChkContinualAgregandoControl.Checked = True Else GvContratosControl.DataSource = Nothing BtnAplicarContrato.Visible = False divBusqueda.Visible = False ChkContinualAgregandoControl.Visible = False ChkContinualAgregandoControl.Checked = False End If End If ObjContratos.Dispose() GvContratosControl.DataBind() UpModalContrato.Update() End If End Sub Protected Sub BtnAplicarContrato_Click(sender As Object, e As EventArgs) DtDetalle.Rows.Clear() Dim CveTipoGastoObra As Integer = DdlTipoGasto.SelectedValue.ToEntero For Each GvRow As GridViewRow In GvContratosControl.Rows Dim CveContratoDetalle As Integer = GvRow.DataKey("CveContratoDetalle").ToEntero Dim Cantidad As Decimal = GvRow.FCTextBox("TxtCantidad").Text.ToDecimal Dim CvePS As Integer = GvRow.DataKey("CvePS").ToEntero Dim PS As String = GvRow.DataKey("PS") Dim PU As Decimal = GvRow.DataKey("PU").ToDecimal Dim TotalPS As Decimal = GvRow.FCTextBox("TxtImporte").Text.ToDecimal Dim CveUnidadMedida As Integer = GvRow.DataKey("CveUnidadMedida") Dim UMAbreviatura As String = GvRow.DataKey("Abreviatura").ToString Dim SubProyecto As String = GvRow.DataKey("SubProyecto") Dim CveSubProyecto As Integer = GvRow.DataKey("CveSubProyecto").ToEntero Dim Codigo As String = "" 'GvRow.DataKey("Codigo") Dim Proyecto As String = GvRow.DataKey("Proyecto") Dim CveProyecto As Integer = GvRow.DataKey("CveProyecto").ToEntero Dim RetISR As Decimal = GvRow.DataKey("RetISR").ToString.ToDecimal Dim RetIVA As Decimal = GvRow.DataKey("RetIVA").ToString.ToDecimal Dim IvaPS As Decimal = GvRow.DataKey("IVA").ToString.ToDecimal Dim CveClasificacion As Integer = GvRow.DataKey("CveClasificacion").ToString.ToEntero Dim Clasificacion As String = GvRow.DataKey("Clasificacion") Dim IEPSPS As Decimal = GvRow.DataKey("IEPSPorcentaje").ToString.ToDecimal Dim IEPSPSIVA As Decimal = If(GvRow.DataKey("IEPSGrabaIVA").ToString = "True", IEPSPS, 0) Dim IdCuentaPorEjercer As Integer = -1 Dim IdCuentaComprometido As Integer = -1 If Cantidad > 0 Then AddPS(Cantidad, CvePS, PS, PS, PU, 0, TotalPS, CveUnidadMedida, IvaPS, IEPSPS, IEPSPSIVA, CveClasificacion, UMAbreviatura, Clasificacion, CveProyecto, Proyecto, CveSubProyecto, SubProyecto, Codigo, -1, 0, -1, -1, IdCuentaPorEjercer, IdCuentaComprometido, -1, -1, -1, -1, -1, RetIVA, RetISR, CveContratoDetalle:=CveContratoDetalle, CveTipoGastoObra:=CveTipoGastoObra, CveCultivoCuadroDetalle:=-1, Cuadro:="") ContratoObraAplciado = True End If Next CargaSuperior() CargaDatosDetalles() If Not ChkContinualAgregandoControl.Checked Then RegistraScript("$('#DivmodalConmtrato').modal('hide')") End If UPPDetalle.Update() End Sub Protected Sub DdlSubProyectoEdit_SelectedIndexChanged(sender As Object, e As EventArgs) Dim GvRow As GridViewRow = CType(CType(sender, DropDownList).BindingContainer, GridViewRow) Dim DdlSubProyectoEdit As DropDownList = GvRow.FCDropDownList("DdlSubProyectoEdit") Dim DdlCultivosCuadroEdit As DropDownList = GvRow.FCDropDownList("DdlCultivosCuadroEdit") Dim CveCultivoCuadroDetalle As Integer = GvRow.DataKey("CveCultivoCuadroDetalle").ToString.ToEntero DdlCultivosCuadroEdit.Items.Clear() DdlCultivosCuadroEdit.DataSource = GlobalDTCultivosCuadro(UsuarioActual.CveEmpresa).FiltraParametros($"CveSubProyecto = {DdlSubProyectoEdit.SelectedValue} AND Estatus =1") DdlCultivosCuadroEdit.DataBind() DdlCultivosCuadroEdit.Items.Insert(0, New ListItem("Seleccione uno", "-1")) DdlCultivosCuadroEdit.SelectedValueExist(CveCultivoCuadroDetalle) End Sub Private Function ValidarPSContrato(DtPS As DataTable) As String Dim Retorno As String = "" Dim objContratos As New ClsContratos Dim TempPS As String = JsonConvert.SerializeObject(DtPS).ToString Dim MensajeProducto As String = "" Dim MensajeCantidad As String = "" Dim MensajeImporte As String = "" If objContratos.ValidaPSContrato(TempPS) Then If objContratos.DtResultados.Rows.Count > 0 Then MensajeProducto = "Los siguientes productos no pertenece al contrato seleccionado: " MensajeCantidad = "Los siguientes productos sobrepasan la cantidad faltante del contrato seleccionado: " MensajeImporte = "Los siguientes productos sobrepasan los importes faltantes del contrato seleccionado: " For Each dr As DataRow In objContratos.DtResultados.Rows If dr("ProductoNoContratado").ToString.ToEntero = 1 Then MensajeProducto += String.Format("
{0}", dr("PS")) ElseIf dr("CantidadSobrePasada").ToString.ToEntero = 1 Then MensajeCantidad += String.Format("
{0} - Cantidad maxima: {1}", dr("PS"), dr("FaltanteCantidad")) ElseIf dr("ImporteSobrePasado").ToString.ToEntero = 1 Then MensajeImporte += String.Format("
{0} - Importe maximo: {1}", dr("PS"), dr("FaltanteImporte")) End If Next End If End If If MensajeProducto.Length <> 64 Then Retorno = MensajeProducto ElseIf MensajeCantidad.Length <> 84 Then Retorno = MensajeCantidad ElseIf MensajeImporte.Length <> 86 Then Retorno = MensajeImporte End If Return Retorno End Function End Class