Files
SIG/OC/OC.aspx.vb

8499 lines
432 KiB
VB.net

Option Explicit On
Imports System.Data
Imports Extensiones
Imports System.IO
Imports GemBox.Spreadsheet
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 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 Double
Get
If ViewState("SaldoOCAnticipo") Is Nothing Then
Return 0
Else
Return ViewState("SaldoOCAnticipo").ToString.ToDouble
End If
End Get
Set(value As Double)
ViewState("SaldoOCAnticipo") = value
End Set
End Property
Private Property ImporteAnticipos As Double
Get
If ViewState("ImporteAnticipos") Is Nothing Then
Return 0
Else
Return ViewState("ImporteAnticipos").ToString.ToDouble
End If
End Get
Set(value As Double)
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
CargaDatosAgregarPS()
CveProveedorOriginal = -1
'MODALIDAD MULTIEMPRESA
CveEmpresaActual = UsuarioActual.CveEmpresa
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}")
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(9).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.ToDouble, 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 Double = 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.ToDouble
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(Double))
DtDetalle.Columns.Add("CveUnidadMedida", GetType(Integer))
DtDetalle.Columns.Add("UM", GetType(String))
DtDetalle.Columns.Add("CvePS", GetType(Integer))
DtDetalle.Columns.Add("PS", GetType(String))
DtDetalle.Columns.Add("IVA", GetType(Double))
DtDetalle.Columns.Add("IVAPorcentaje", GetType(Double))
DtDetalle.Columns.Add("IEPSPS", GetType(Double))
DtDetalle.Columns.Add("IEPSPSPorcentaje", GetType(Double))
DtDetalle.Columns.Add("IEPSPSIVA", GetType(Double))
DtDetalle.Columns.Add("IEPSPSIVAPorcentaje", GetType(Double))
DtDetalle.Columns.Add("RetIVA", GetType(Double))
DtDetalle.Columns.Add("RetIVAPorcentaje", GetType(Double))
DtDetalle.Columns.Add("RetISR", GetType(Double))
DtDetalle.Columns.Add("RetISRPorcentaje", GetType(Double))
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(Double))
DtDetalle.Columns.Add("Descuento", GetType(Double))
DtDetalle.Columns.Add("Total", GetType(Double))
DtDetalle.Columns.Add("Codigo", GetType(String))
DtDetalle.Columns.Add("CodigoAF", GetType(String))
DtDetalle.Columns.Add("CveActivoFijo", GetType(Integer))
DtDetalle.Columns.Add("TipoDato", GetType(Integer)) ' Tipo Dato '0' es Cuando es Nuevo, '1' para editar y '2' viene de la BD
DtDetalle.Columns.Add("CveOrdenCompraDetalle", GetType(Integer))
DtDetalle.Columns.Add("CveOrdenCompra", GetType(Integer))
DtDetalle.Columns.Add("CveOrdenCompraPadre", GetType(Integer))
DtDetalle.Columns.Add("FolioOrdenCompraPadre", GetType(Integer))
DtDetalle.Columns.Add("CveOrdenCompraHija", GetType(Integer))
DtDetalle.Columns.Add("FolioOrdenCompraHija", GetType(Integer))
'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(Double))
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.ToDouble
dr("RetIVA") = 0
dr("RetIVAPorcentaje") = DrPS("RetIVA").ToString.ToDouble
dr("RetISR") = 0
dr("RetISRPorcentaje") = DrPS("RetISR").ToString.ToDouble
dr("IEPSPS") = 0
dr("IEPSPSPorcentaje") = DrPS("IEPSPorcentaje").ToString.ToDouble
dr("IEPSPSIVA") = 0
dr("IEPSPSIVAPorcentaje") = If(DrPS("IEPSGrabaIVA").ToString = "True", DrPS("IEPSPorcentaje").ToString.ToDouble, 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
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 = $"<a class=""Texto"" href=""/Bancos/IE.aspx?CveIE={objOC.CveIEAnticipo}"" target=""_blank"">{objOC.FolioIEAnticipo}</a>"
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.ToDouble
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.ToDouble = 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(9).Visible = False 'No permitir la edicion
'GvD.Columns(9).Visible = True
ChkCotizacion.Enabled = False
TxtDescrip.Enabled = False
TxtJustificacion.Enabled = False
TxtFechaEstimadaEntrega.Enabled = False
txtLugarEntrega.Enabled = False
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(9).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"))
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(9).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 <b>'Producto/Servicio'</b> es necesario, por favor seleccione uno.", TipoMensaje.MsgAdvertencia)
Exit Sub
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 Double = 0
Dim Ejercido As Double = 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.ToDouble
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.ToDouble
End If
End If
End If
End If
End If
ObjCon.Dispose()
If CvePresupuesto > 0 And Autorizado > 0 Then
Dim Diferencia As Double = (Ejercido + If(txtPrecioUnitario.Text.ToDouble > 0, (txtPrecioUnitario.Text.ToDouble * TxtCant.Text.ToDouble) - TxtDescuentoAdd.Text.ToDouble, 0)) - Autorizado
If Diferencia > 0 Then
Alert($"No hay presupuesto disponible en el subproyecto <b>{DdlSubProyecto.SelectedItem.Text}</b> y la clasificación <b>{DdlClasificacion.SelectedItem.Text}</b> se excede por <b>{Diferencia.FormatoNumero}</b>", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
End If
Dim RetISR As Double = DrPS("RetISR").ToString.ToDouble
Dim RetIVA As Double = DrPS("RetIVA").ToString.ToDouble
Dim IvaPS As Double = DrPS("IVA").ToString.ToDouble
'If IvaPS = -1 Then 'IVA DE LA SUCURSAL
' IvaPS = GlobalDTSubProyectos(-1, DdlSubProyecto.SelectedValue.ToEntero).FiltroPrimeroValor("IVA").ToDouble
'End If
Dim IEPSPS As Double = DrPS("IEPSPorcentaje").ToString.ToDouble
Dim IEPSPSIVA As Double = If(DrPS("IEPSGrabaIVA").ToString = "True", DrPS("IEPSPorcentaje").ToString.ToDouble, 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 Double = If(txtPrecioUnitario.Text.ToDouble > 0, (txtPrecioUnitario.Text.ToDouble * TxtCant.Text.ToDouble) - TxtDescuentoAdd.Text.ToDouble, 0)
Dim ImportePS As Double = If(txtPrecioUnitario.Text.ToDouble > 0, txtPrecioUnitario.Text.ToDouble, 0)
Dim CveOrdenCompraDetalle As Integer = DtDetalle.MAX("CveOrdenCompraDetalle").ToEntero + 100
'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.ToDouble, 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 Double, Descuento As Double, Total As Double, CveUnidadMedida As Integer, IVAPS As Double, IEPSPS As Double, IEPSPSIVA As Double, 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 Double, RetISR As Double, 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.ToDouble - 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.ToDouble * 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("<br><br>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 += "<br>- " + S
Next
Alert(String.Format("No está autorizado a modificar el SubProyecto <br>{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 <b>Lugar Entrega</b> 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
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.ToDouble - 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.ToDouble(), dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, dr("Importe").ToString.ToDouble,
dr("CveSubProyecto").ToString.ToEntero(), dr("CveActivoFijo").ToString.ToEntero, dr("Observacion").ToString, UsuarioActual.CveUsuario, Descuento:=dr("Descuento").ToString.ToDouble,
IEPSPS:=dr("IEPSPS").ToString.ToDouble, IEPSPSIVA:=dr("IEPSPSIVA").ToString.ToDouble, IVA:=dr("IVA").ToString.ToDouble, RetIVA:=dr("RetIVA").ToString.ToDouble,
RetISR:=dr("RetISR").ToString.ToDouble, Total:=dr("Total").ToString.ToDouble, CveContratoDetalle:=dr("CveContratoDetalle").ToString.ToEntero, IVAPorcentaje:=dr("IVAPorcentaje").ToString.ToDouble,
RetIVAPorcentaje:=dr("RetIVAPorcentaje").ToString.ToDouble, RetISRPorcentaje:=dr("RetISRPorcentaje").ToString.ToDouble, IEPSPSPorcentaje:=dr("IEPSPSPorcentaje").ToString.ToDouble,
IEPSPSIVAPorcentaje:=dr("IEPSPSIVAPorcentaje").ToString.ToDouble, 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.ToDouble - 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.ToDouble(), dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, dr("Importe").ToString.ToDouble, dr("CveSubProyecto").ToString.ToEntero(), dr("CveActivoFijo").ToString.ToEntero,
dr("Observacion").ToString, UsuarioActual.CveUsuario, CvePresupuestoEgreso:=dr("CvePresupuestoEgreso").ToString.ToEntero, pCveOrdenCompraPadre:=CveOrdenCompraPadre, Descuento:=dr("Descuento").ToString.ToDouble, IEPSPS:=dr("IEPSPS").ToString.ToDouble,
IEPSPSIVA:=dr("IEPSPSIVA").ToString.ToDouble, IVA:=dr("IVA").ToString.ToDouble, RetIVA:=dr("RetIVA").ToString.ToDouble, RetISR:=dr("RetISR").ToString.ToDouble, Total:=dr("Total").ToString.ToDouble, CveContratoDetalle:=dr("CveContratoDetalle").ToString.ToEntero,
IVAPorcentaje:=dr("IVAPorcentaje").ToString.ToDouble, RetIVAPorcentaje:=dr("RetIVAPorcentaje").ToString.ToDouble, RetISRPorcentaje:=dr("RetISRPorcentaje").ToString.ToDouble, IEPSPSPorcentaje:=dr("IEPSPSPorcentaje").ToString.ToDouble,
IEPSPSIVAPorcentaje:=dr("IEPSPSIVAPorcentaje").ToString.ToDouble, 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("<a href='/OC/OC.aspx?OC={0}'>{1}</a>", CveOrdenCompra, Folio), "")
If CveOrdenCompra > 0 Then
Dim ImprimirOC = String.Format("<a class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={0}"">Imprimir Orden de Compra</a> ", Encripta(String.Format("OP=OC&CVEOC={0}", CveOrdenCompra)))
Dim Msg As New StringBuilder
'Cuando Estatus = "Autorizada"
'If CboE.SelectedValue.ToEntero > 0 Then
' Dim Row As DataRow = GlobalDTOCEstatus(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. <b><font size=""3"" >{1}</font></b>. Ha sido guardada correctamente <br/> {2}", TipoLargo, Folio, If(TipoOC = "OC", ImprimirOC, ""))
Else
Msg.AppendFormat("La {0} No. <b><font size=""3"" >{1}</font></b>. Ha sido guardada correctamente<br><br>Orden de Compra:{2} <br/> {3}", TipoLargo, Folio, LigaOCs, If(TipoOC = "OC", ImprimirOC, ""))
End If
'IMPRIME LIGA A POLIZAS
If IDPolizasGeneradas.Count > 0 Then
Msg.Append("<br/><br/> <b>Polizas generadas:</b>")
For i = 0 To IDPolizasGeneradas.Count - 1
Msg.AppendFormat("<br/> Poliza: <b><a class=""Texto"" target='_blank' href=""/Contabilidad/RegPoliza.aspx?IdPoliza={0}"">{1}</a></b>", IDPolizasGeneradas(i), FoliosPolizas(i))
Next
End If
Alert(Msg.ToString, TipoMensaje.MsgInformacion, "document.location.href=""/OC/RepOC.aspx""")
'GeneraPDF(CveOrdenCompra)
TxtDescrip.Text = ""
TxtJustificacion.Text = ""
End If
'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.ToDouble - 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.ToDouble(), dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, dr("Importe").ToString.ToDouble, dr("CveSubProyecto").ToString.ToEntero, dr("CveActivoFijo").ToString.ToEntero, dr("Observacion").ToString, UsuarioActual.CveUsuario, CvePresupuestoEgreso:=If(TipoOC = "REQ", -1, dr("CvePresupuestoEgreso").ToString.ToEntero), Descuento:=dr("Descuento").ToString.ToDouble, IEPSPS:=dr("IEPSPS").ToString.ToDouble, IEPSPSIVA:=dr("IEPSPSIVA").ToString.ToDouble, IVA:=dr("IVA").ToString.ToDouble, RetIVA:=dr("RetIVA").ToString.ToDouble, RetISR:=dr("RetISR").ToString.ToDouble, Total:=dr("Total").ToString.ToDouble, CveContratoDetalle:=dr("CveContratoDetalle").ToString.ToEntero, IVAPorcentaje:=dr("IVAPorcentaje").ToString.ToDouble, RetIVAPorcentaje:=dr("RetIVAPorcentaje").ToString.ToDouble, RetISRPorcentaje:=dr("RetISRPorcentaje").ToString.ToDouble, IEPSPSPorcentaje:=dr("IEPSPSPorcentaje").ToString.ToDouble, IEPSPSIVAPorcentaje:=dr("IEPSPSIVAPorcentaje").ToString.ToDouble, 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(Double))
DtInvOCDiferencias.Columns.Add("ImporteMovto", GetType(Double))
DtInvOCDiferencias.Columns.Add("ImporteMovtoDLLS", GetType(Double))
DtInvOCDiferencias.Columns.Add("TipoCambioAjuste", GetType(Double))
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.ToDouble, dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, dr("Importe").ToString.ToDouble, dr("CveSubProyecto").ToString.ToEntero,
dr("CveActivoFijo").ToString.ToEntero, dr("Observacion").ToString, UsuarioActual.CveUsuario, dr("CveOrdenCompraDetalle").ToString.ToEntero, If(TipoOC = "REQ", -1, dr("CvePresupuestoEgreso").ToString.ToEntero), dr("Descuento").ToString.ToDouble,
IEPSPS:=dr("IEPSPS").ToString.ToDouble, IEPSPSIVA:=dr("IEPSPSIVA").ToString.ToDouble, IVA:=dr("IVA").ToString.ToDouble, RetIVA:=dr("RetIVA").ToString.ToDouble, RetISR:=dr("RetISR").ToString.ToDouble, Total:=dr("Total").ToString.ToDouble, CveContratoDetalle:=dr("CveContratoDetalle").ToString.ToEntero, IVAPorcentaje:=dr("IVAPorcentaje").ToString.ToDouble, RetIVAPorcentaje:=dr("RetIVAPorcentaje").ToString.ToDouble, RetISRPorcentaje:=dr("RetISRPorcentaje").ToString.ToDouble, IEPSPSPorcentaje:=dr("IEPSPSPorcentaje").ToString.ToDouble, IEPSPSIVAPorcentaje:=dr("IEPSPSIVAPorcentaje").ToString.ToDouble) <= 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.ToDouble
DrInvOCDiferencias("Diferencia") = ((dr("Importe").ToString.ToDouble * DrInv("TipoCambioAjuste").ToString.ToDouble) - DrInv("PUOriginal").ToString.ToDouble) * DrInv("Cantidad").ToString.ToDouble
DrInvOCDiferencias("CveAlmacen") = DrInv("CveAlmacen").ToString.ToEntero
DrInvOCDiferencias("CveOrdenCompraDetalle") = DrInv("CveOrdenCompraDetalle").ToString.ToEntero
DrInvOCDiferencias("ImporteMovto") = dr("Importe").ToString.ToDouble * DrInv("TipoCambioAjuste").ToString.ToDouble
DrInvOCDiferencias("ImporteMovtoDLLS") = If(DrInv("TipoCambioAjuste").ToString.ToDouble > 1, dr("Importe").ToString.ToDouble, -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.ToDouble, DrAjuste("CveUM").ToString.ToEntero, DrAjuste("CvePS").ToString.ToEntero, DtInvOCDiferencias.FiltroPrimeroValor("ImporteMovto", $"CveOrdenCompraDetalle = {DrAjuste("CveOrdenCompraDetalle").ToString.ToEntero}").ToDouble, -1, DrAjuste("CveMovimientoDetalle").ToString.ToEntero, PUTC:=DtInvOCDiferencias.FiltroPrimeroValor("ImporteMovtoDLLS", $"CveOrdenCompraDetalle = {DrAjuste("CveOrdenCompraDetalle").ToString.ToEntero}").ToDouble) 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.ToDouble, DrAjuste("CveUM").ToString.ToEntero, DrAjuste("CveUM").ToString.ToEntero, DrAjuste("PU").ToString.ToDouble, -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.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, DtInvOCDiferencias.FiltroPrimeroValor("ImporteMovto", $"CveOrdenCompraDetalle = {Dr("CveOrdenCompraDetalle").ToString.ToEntero}").ToDouble, 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)
Else
Dim ImprimirOC = ""
Dim Msg As New StringBuilder
If CveOCGeneradas.Count = 1 Then
ImprimirOC = String.Format("<br/> <a Class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={0}"">Imprimir Orden de Compra</a> ", Encripta(String.Format("OP=OC&CVEOC={0}", CveOCGeneradas(0))))
Msg.AppendFormat("La {0} No. <b><font size=""3"" >{1}</font></b>. Ha sido guardada correctamente<br><br>Se Generó la Orden de Compra {2} - {3}", TipoLargo, Folio, LigaOCs, ImprimirOC)
Else
Msg.AppendFormat("La {0} No. <b><font size=""3"" >{1}</font></b>. Ha sido guardada correctamente<br><br>Se Generaron las siguientes Ordenes de Compra {2}", TipoLargo, Folio, LigaOCs)
End If
'IMPRIME LIGA A POLIZAS
If IDPolizasGeneradas.Count > 0 Then
Msg.Append("<br/><br/> <b>Polizas generadas:</b>")
For i = 0 To IDPolizasGeneradas.Count - 1
Msg.AppendFormat("<br/> Poliza: <b><a class=""Texto"" target='_blank' href=""/Contabilidad/RegPoliza.aspx?IdPoliza={0}"">{1}</a></b>", IDPolizasGeneradas(i), FoliosPolizas(i))
Next
End If
Alert(Msg.ToString, TipoMensaje.MsgInformacion, "document.location.href=""/OC/RepOC.aspx""")
End If
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.ToDouble - 1, 2) 'GlobalDTCompProveedores(CveEmpresaActual).FiltraParametros(String.Format("CveProveedor = {0}", CveProveedor)).Rows(0)("IVA").ToString.ToDouble
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}<br><a href='/OC/OC.aspx?OC={1}'>{2}</a>", 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.ToDouble(), dr("CveUnidadMedida").ToString.ToEntero,
dr("CvePS").ToString.ToEntero, dr("Importe").ToString.ToDouble, dr("CveSubProyecto").ToString.ToEntero(),
dr("CveActivoFijo").ToString.ToEntero, dr("Observacion").ToString, UsuarioActual.CveUsuario, CveOrdenCompra,
CvePresupuestoEgreso:=dr("CvePresupuestoEgreso").ToString.ToEntero, Descuento:=dr("Descuento").ToString.ToDouble,
IEPSPS:=dr("IEPSPS").ToString.ToDouble, IEPSPSIVA:=dr("IEPSPSIVA").ToString.ToDouble, IVA:=dr("IVA").ToString.ToDouble,
RetIVA:=dr("RetIVA").ToString.ToDouble, RetISR:=dr("RetISR").ToString.ToDouble, Total:=dr("Total").ToString.ToDouble,
CveContratoDetalle:=dr("CveContratoDetalle").ToString.ToEntero, IVAPorcentaje:=dr("IVAPorcentaje").ToString.ToDouble,
RetIVAPorcentaje:=dr("RetIVAPorcentaje").ToString.ToDouble, RetISRPorcentaje:=dr("RetISRPorcentaje").ToString.ToDouble,
IEPSPSPorcentaje:=dr("IEPSPSPorcentaje").ToString.ToDouble, IEPSPSIVAPorcentaje:=dr("IEPSPSIVAPorcentaje").ToString.ToDouble,
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.ToDouble - 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.ToDouble(), dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, dr("Importe").ToString.ToDouble, dr("CveSubProyecto").ToString.ToEntero(), dr("CveActivoFijo").ToString.ToEntero, dr("Observacion").ToString, UsuarioActual.CveUsuario, CveOrdenCompra, CvePresupuestoEgreso:=dr("CvePresupuestoEgreso").ToString.ToEntero, Descuento:=dr("Descuento").ToString.ToDouble, IEPSPS:=dr("IEPSPS").ToString.ToDouble, IEPSPSIVA:=dr("IEPSPSIVA").ToString.ToDouble, IVA:=dr("IVA").ToString.ToDouble, RetIVA:=dr("RetIVA").ToString.ToDouble, RetISR:=dr("RetISR").ToString.ToDouble, Total:=dr("Total").ToString.ToDouble, CveContratoDetalle:=dr("CveContratoDetalle").ToString.ToEntero, IVAPorcentaje:=dr("IVAPorcentaje").ToString.ToDouble, RetIVAPorcentaje:=dr("RetIVAPorcentaje").ToString.ToDouble, RetISRPorcentaje:=dr("RetISRPorcentaje").ToString.ToDouble, IEPSPSPorcentaje:=dr("IEPSPSPorcentaje").ToString.ToDouble, IEPSPSIVAPorcentaje:=dr("IEPSPSIVAPorcentaje").ToString.ToDouble, 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}<br><a href='/OC/OC.aspx?OC={1}'>{2}</a>", 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("<br/><br/><a class=""Texto"" target='_blank' href=""/Contabilidad/RegPoliza.aspx?IdPoliza={0}"">Ver Póliza de cancelación</a>", PolizaCancelacion)
If Not ObjEventos.AddEventoBitacora(String.Format("Folio de Cancelación: <a target='_blank' href=""/Contabilidad/RegPoliza.aspx?IdPoliza={0}"">{1}</a>", 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}<br/>{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(10).Visible = True
lblTipoPadreHijo.Visible = True
e.Row.FCLiteral("LtlLiga").Text = String.Format("<a class='Texto' href='/OC/OC.aspx?OC={0}'>{1}</a>", e.Row.DBCampo("CveOrdenCompraPadre"), e.Row.DBCampo("FolioOrdenCompraPadre"))
ElseIf TipoOC = "REQ" AndAlso Not IsDBNull(e.Row.DBCampo("CveOrdenCompraHija")) AndAlso IsNumeric(e.Row.DBCampo("CveOrdenCompraHija")) Then
GvD.Columns(10).Visible = True
lblTipoPadreHijo.Visible = True
e.Row.FCLiteral("LtlLiga").Text = String.Format("<a class='Texto' href='/OC/OC.aspx?OC={0}'>{1}</a>", e.Row.DBCampo("CveOrdenCompraHija"), e.Row.DBCampo("FolioOrdenCompraHija"))
End If
'CveAFVinculado
e.Row.FCLiteral("LitMaq").Text = String.Format("<a class='Texto' href='../AF/AF.aspx?CveActivoFijo={0}'>{1}</a>", 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("<a class='Texto' target='_blank' href='../Compras/Compras.aspx?CveCompra={0}'>{1}</a>", ObjOC.DtResultados.FiltroPrimeroValor("CveCompra"), e.Row.DBCampo("FolioCompra"))
LblCompra.Visible = True
GvD.Columns(11).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(11).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").ToDouble >= e.Row.DBCampo("Cantidad").ToDouble 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").ToDouble > 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 e.Row.DBCampo("CantidadVinculadaCompra").ToDouble > 0 OrElse e.Row.DBCampo("CantidadSurtidaAmacen").ToDouble > 0 OrElse e.Row.DBCampo("CantidadVinculada").ToDouble > 0 Then
e.Row.FCDropDownList("DdlPS").Enabled = False
e.Row.FCDropDownList("DdlClasificacion").Enabled = False
e.Row.FCDropDownList("CboUnidadMedidaEdit").Enabled = False
e.Row.FCTextBox("TxtImporteEdit").Enabled = False
e.Row.FCTextBox("TxtDescuentoEdit").Enabled = False
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}")
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").ToDouble});")
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 Double
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.ToDouble
Importe = gvr.FCTextBox("TxtImporteEdit").Text.Trim.ToDouble
Descuento = gvr.FCTextBox("TxtDescuentoEdit").Text.Trim.ToDouble
Obs = gvr.FCTextBox("TxtObsPS").Text.Trim
CveUnidad = gvr.FCDropDownList("CboUnidadMedidaEdit").SelectedValue.ToEntero
UM = gvr.FCDropDownList("CboUnidadMedidaEdit").SelectedItem.Text
CveClasificacion = gvr.FCDropDownList("DdlClasificacion").SelectedValue.ToEntero
Clasificacion = gvr.FCDropDownList("DdlClasificacion").SelectedItem.Text
'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").ToDouble
Dim RetIVA = gvr.DataKey("RetIVAPorcentaje").ToDouble
'Dim IvaPS = gvr.DataKey("IVAPorcentaje").ToDouble
Dim IEPSPS = gvr.DataKey("IEPSPSPorcentaje").ToDouble
Dim IEPSPSIVA = gvr.DataKey("IEPSPSIVAPorcentaje").ToDouble
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.ToDouble
IEPSPSIVA = If(DrPS("IEPSGrabaIVA").ToString = "True", DrPS("IEPSPorcentaje").ToString.ToDecimal, 0)
If CvePS <> CvePSAnterior Or Not CveOrdenCompra > 0 Then
RetISR = DrPS("RetISR").ToString.ToDouble
RetIVA = DrPS("RetIVA").ToString.ToDouble
'If IvaPS = -1 Then 'IVA DE LA SUCURSAL
' IvaPS = GlobalDTSubProyectos(-1, gvr.FCDropDownList("DdlSubProyectoEdit").SelectedValue.ToEntero).FiltroPrimeroValor("IVA").ToDouble
'End If
' IEPSPSIVA = If(DrPS("IEPSGrabaIVA").ToString = "True", DrPS("IEPSPorcentaje").ToString.ToDouble, 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 Double = 0
Dim Ejercido As Double = 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.ToDouble
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.ToDouble
End If
End If
End If
End If
End If
ObjCon.Dispose()
If CvePresupuesto > 0 And Autorizado > 0 Then
Dim Diferencia As Double = (Ejercido + Total) - Autorizado
If Diferencia > 0 Then
Alert($"No hay presupuesto disponible en el subproyecto <b>{SubProyecto}</b> y la clasificación <b>{Clasificacion}</b> se excede por <b>{Diferencia.FormatoNumero}</b>", 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.ToDouble = 1 Then dr(0)("IVA") = 0 Else dr(0)("IVA") = IvaPS * Total
dr(0)("IVAPorcentaje") = If(IvaPS = -1, Math.Round(DdlIVA.SelectedValue.ToDouble - 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.ToDouble * 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(9).Visible = False
GvD.Columns(10).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(12).Visible = True
GvD.Columns(13).Visible = True
GvD.Columns(14).Visible = True
GvD.Columns(15).Visible = True
GvD.Columns(16).Visible = True
'Panel General
UpPresupuestosAC.Visible = True
DdlACGeneral1.DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveProgramaOperativo", "ProgramaOperativo"})
DdlACGeneral1.DataBind()
DdlACGeneral2.DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveUnidadAdministrativa", "UnidadAdministrativa"})
DdlACGeneral2.DataBind()
DdlACGeneral3.DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveFuenteFinanciamiento", "FuenteFinanciamiento"})
DdlACGeneral3.DataBind()
DdlACGeneral4.DataSource = DtPresupuestos.FiltraParametros("", DistinctColumns:={"CveTipoGasto", "TipoGasto"})
DdlACGeneral4.DataBind()
'carga los que no sean de nomina
DdlACGeneral5.DataSource = DtPresupuestos.FiltraParametros("NOT CodigoCOG like '1%'", DistinctColumns:={"CveClasificacion", "CodigoClasificacion"}, Orderby:="CodigoClasificacion")
DdlACGeneral5.DataBind()
UpPresupuestosAC.Update()
If TipoOC = "REQ" Then
CalculaSaldoACGeneral()
Else
RegistraScript("$get('DivPresupuestoEgresosGeneral').style.display = 'none';")
BtnVerPE.Visible = True
End If
Else
'GvD.Width = Width.ToEntero
GvD.Columns(12).Visible = False
GvD.Columns(13).Visible = False
GvD.Columns(14).Visible = False
GvD.Columns(15).Visible = False
GvD.Columns(16).Visible = False
UpPresupuestosAC.Visible = False
End If
'CargaDatosDetalles()
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 Double
Dim ErrorPresupuesto = False
Dim Ddl1 As DropDownList
Dim Ddl2 As DropDownList
Dim Ddl3 As DropDownList
Dim Ddl4 As DropDownList
Dim Ddl5 As DropDownList
Dim Total As Double
Dim DtPresupuestosTemp As DataTable
Dim Filtro As New StringBuilder
For Each grid As GridViewRow In GvD.Rows
Ddl1 = grid.FCDropDownList("DdlAC1")
Ddl2 = grid.FCDropDownList("DdlAC2")
Ddl3 = grid.FCDropDownList("DdlAC3")
Ddl4 = grid.FCDropDownList("DdlAC4")
Ddl5 = grid.FCDropDownList("DdlAC5")
Total = grid.FCLiteral("LtlTotal").Text.ToDouble
'OBTENEMOS EL REGISTRO DEL PE SELECCIONADO
Filtro.AppendFormat("CveProgramaOperativo = {0} and CveUnidadAdministrativa = {1} and CveFuenteFinanciamiento = {2} and CveTipoGasto= {3} and CveClasificacion = {4}", 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.ToDouble, dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, dr("Importe").ToString.ToDouble, dr("CveSubProyecto").ToString.ToEntero, dr("CveActivoFijo").ToString.ToEntero,
dr("Observacion").ToString.ToString, UsuarioActual.CveUsuario, dr("CveOrdenCompraDetalle").ToString.ToEntero, dr("CvePresupuestoEgreso").ToString.ToEntero, dr("Descuento").ToString.ToDouble, IEPSPS:=dr("IEPSPS").ToString.ToDouble, IEPSPSIVA:=dr("IEPSPSIVA").ToString.ToDouble, IVA:=dr("IVA").ToString.ToDouble, RetIVA:=dr("RetIVA").ToString.ToDouble, RetISR:=dr("RetISR").ToString.ToDouble, Total:=dr("Total").ToString.ToDouble, CveContratoDetalle:=dr("CveContratoDetalle").ToString.ToEntero, IVAPorcentaje:=dr("IVAPorcentaje").ToString.ToDouble, RetIVAPorcentaje:=dr("RetIVAPorcentaje").ToString.ToDouble, RetISRPorcentaje:=dr("RetISRPorcentaje").ToString.ToDouble, IEPSPSPorcentaje:=dr("IEPSPSPorcentaje").ToString.ToDouble, IEPSPSIVAPorcentaje:=dr("IEPSPSIVAPorcentaje").ToString.ToDouble) <= 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("<a class=' Texto thickbox col-md-12 truncate' style='width:200px;' title='{2}' data-toggle='tooltip' href='/OC/RepCotizacionesDetalle.aspx?CveOrdenCompra={0}&CveCotizacion={1}&TB_iframe=true&height=600&width=800;'>{2}</a>", CveOrdenCompra, DtCotizaciones.Rows(i - 1)("CveCotizacion"), If(Not IsDBNull(DtCotizaciones.Rows(i - 1)("CveProveedor")), DtCotizaciones.Rows(i - 1)("RazonSocial"), DtCotizaciones.Rows(i - 1)("Colectiva")), 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")
'<button onclick='showDivEC({1});' class='btn btn-circle btn-sm red'><i class='fa fa-close'><i/></button>",
Next
End If
If e.Row.RowType = DataControlRowType.DataRow Then
If e.Row.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)).ToDouble.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)).ToDouble.ToString("N2"))
Next
Else
Dim CellMasBarato As Integer = -1
Dim Monto As Double = -1
For i As Integer = 1 To NumCotizaciones
Dim Btn As Button = e.Row.FCButton(String.Format("Btn{0}", i))
Btn.Text = e.Row.DBCampo("PU" & i).ToDouble.ToString("N2")
Btn.CommandArgument = String.Format("{0}|{1}|{2}", e.Row.DBCampo(String.Format("CveCotizacionDetalle{0}", i)), False, DtCotizaciones.Rows(i - 1)("CveProveedor").ToString)
Btn.Style.Add("cursor:", "pointer")
If e.Row.DBCampo(String.Format("PU{0}", i)).ToDouble > 0 Then
If Monto.ToString = "-1" Then
Monto = e.Row.DBCampo(String.Format("PU{0}", i)).ToDouble
CellMasBarato = i
End If
If e.Row.DBCampo(String.Format("PU{0}", i)).ToDouble < Monto Then
CellMasBarato = i
Monto = e.Row.DBCampo(String.Format("PU{0}", i)).ToDouble
End If
Else
Btn.Text = "Sin captura"
Btn.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).ToDouble.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
#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
Filename.FilesMove(String.Format("OI{0}", ObjEventoBitacora.CveEvento.ToString), String.Format("Empresas\{0}\OI", CveEmpresaActual))
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
Filename.FilesMove(String.Format("OI{0}{1}", UsuarioActual.CveUsuario, DtDetalle.Rows.Count), String.Format("Empresas\{0}\OI\Temp", CveEmpresaActual))
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}%) - <a target=""_blank"" href=""/Bancos/IE.aspx?Opcion=EGSSINFACT&CveOC={2}"">Pagar anticipo</a> - <b>Observacion:</b> {2} ", TxtSAImporte.Text.FormatoNumero, TxtSAImPorcentaje.Text, CveOrdenCompra, TxtSAObservaciones.Text)
Descripcion.AppendFormat("Orden de compra : {0} - <a target=""_blank"" href=""/OC/OC.aspx?OC={1}"">Ir a la orden de compra</a> - <a target=""_blank"" href=""/Compras/PopUpVerFactura.aspx?P={2}"">Imprimir OC</a>", Folio, CveOrdenCompra, Encripta(String.Format("OP=OC&CVEOC={0}", CveOrdenCompra)))
'Dim Descripcion = $"Importe anticipo : ${TxtSAImporte.Text.FormatoNumero} ({TxtSAImPorcentaje.Text}%) - <a target=""_blank"" href=""/Bancos/IE.aspx?Opcion=EGSSINFACT&CveOC={CveOrdenCompra}"">Pagar anticipo</a> - <b>Observacion:</b> {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.ToDouble, 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("<!DOCTYPE html>")
strBody.Append("<html lang=""en""> ")
strBody.Append("<body class=""page-header-fixed page-quick-sidebar-over-content "">")
strBody.Append("<style>")
strBody.Append(".portlet {margin-top: 0px;margin-bottom: 25px;padding: 0px;-webkit-border-radius: 4px;-moz-border-radius: 4px;-ms-border-radius: 4px;-o-border-radius: 4px;border-radius: 4px;padding: 0px !important;border: 1px solid #d78184;border-top: 0;background-color: #cb5a5e;}")
strBody.Append(".portlet > .portlet-title {border-bottom: 0px solid #eee;padding: 0 10px;margin-bottom: 0px;min-height: 41px;-webkit-border-radius: 4px 4px 0 0;-moz-border-radius: 4px 4px 0 0;-ms-border-radius: 4px 4px 0 0;-o-border-radius: 4px 4px 0 0;border-radius: 4px 4px 0 0;color: #fff;}")
strBody.Append(".portlet > .portlet-title {background-color: #cb5a5e;}")
strBody.Append(".portlet > .portlet-title > div {padding: 11px 0 9px 0;}")
strBody.Append(".portlet > .portlet-title > div {float: left;display: inline-block;font-size: 24px;line-height: 18px;padding: 10px 0;}")
strBody.Append(".portlet > .portlet-body {background-color: #fff;padding: 10px;} ")
strBody.Append(".portlet > .portlet-body {clear: both;-webkit-border-radius: 0 0 4px 4px;-moz-border-radius: 0 0 4px 4px;-ms-border-radius: 0 0 4px 4px;-o-border-radius: 0 0 4px 4px;border-radius: 0 0 4px 4px;}")
strBody.Append(".mitablita td:nth-child(1){width: 100px; font-weight:700;}")
strBody.Append("a{ color: #666;padding: 3px 9px; line-height: 1.5;background-color: #fff;border: 1px solid #ccc; text-decoration: none;}a:hover{background-color: #ededed;}")
strBody.Append(".mitablita tr:nth-child(5) td{ text-align: right;}td{min-width:100px; }")
strBody.Append("</style>")
strBody.Append(" <div style=""Width:400px;"">")
strBody.Append(" <div class=""portlet box red"">")
strBody.Append(" <div class=""portlet-title"">")
strBody.Append(" <div class=""caption"">")
strBody.Append($" <i class=""fa fa-cart-plus""></i>Solicitud de anticipo {If(importe.ToDouble > 0, "", " <b>CANCELADA</b> ")}")
strBody.Append(" </div>")
strBody.Append(" </div>")
strBody.Append(" <div class=""portlet-body "">")
strBody.Append(" <table class=""mitablita"">")
strBody.Append(" <tr>")
strBody.Append(" <td>Empresa</td>")
strBody.Append(" <td>")
strBody.Append(UsuarioActual.Empresa.Empresa)
strBody.Append("</td> </tr>")
strBody.Append(" <tr>")
strBody.Append(" <tr>")
strBody.Append(" <td>Proveedor</td>")
strBody.Append(" <td>")
strBody.Append(Proveedor)
strBody.Append("</td> </tr>")
strBody.Append(" <tr>")
strBody.Append(" <tr>")
strBody.Append(" <td>Fecha</td>")
strBody.Append(" <td>")
strBody.Append(DateTime.Now.ToString("dd/MM/yy"))
strBody.Append("</td> </tr>")
strBody.Append(" <tr>")
strBody.Append(" <td>De</td>")
strBody.Append(" <td>")
strBody.Append(UsuarioActual.Nombre)
strBody.Append("</td> </tr>")
strBody.Append(" <tr>")
strBody.Append(" <td>Para</td>")
strBody.Append(" <td>")
strBody.Append(para)
strBody.Append("</td> </tr>")
strBody.Append(" <tr>")
strBody.Append(" <td>Folio</td>")
strBody.Append(" <td>")
strBody.Append(folio)
strBody.Append("</td> </tr>")
If importe.ToDouble > 0 Then
strBody.Append(" <td>Importe Anticipo:</td>")
strBody.Append(" <td>")
strBody.AppendFormat("{0} {1}", importe, Abreviatura)
strBody.Append("</td> </tr>")
End If
If LblTotal.Text.Trim.ToDouble > 0 Then
strBody.Append(" <td>Importe OC:</td>")
strBody.Append(" <td>")
strBody.AppendFormat("{0} {1}", LblTotal.Text, Abreviatura)
strBody.Append("</td> </tr>")
End If
strBody.Append("<tr><td colspan=""4"" ><a href=""")
strBody.Append(link)
strBody.Append(""">Ver mas</a></td></tr>")
strBody.Append(" <table>")
strBody.Append(" </div>")
strBody.Append(" </div>")
strBody.Append(" </div>")
strBody.Append(" </div>")
strBody.Append("</body>")
strBody.Append("</html>")
Return strBody.ToString
End Function
#End Region
#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.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.ToDouble - dr("Total").ToString.ToDouble()
Else
If subproyectos.Contains(dr("CveSubProyecto").ToString.ToEntero) Then
notienerecursos = True
If Not subproyectosSr.Contains(dr("CveSubProyecto").ToString.ToEntero) Then
subproyectosSr.Add(dr("CveSubProyecto").ToString.ToEntero)
SinRecursos.AppendFormat(",{0}", dr("SubProyecto").ToString)
End If
End If
End If
Next
dtpresupuestos.AcceptChanges()
'
For Each rowpresupuesto As DataRow In dtpresupuestos.Rows
If (rowpresupuesto("Importe").ToString.ToDouble() < 0) Then
If Not subproyectosSr.Contains(rowpresupuesto("CveSubProyecto").ToString.ToEntero) Then
subproyectosSr.Add(rowpresupuesto("CveSubProyecto").ToString.ToEntero)
SinRecursos.AppendFormat(",{0}", rowpresupuesto("SubProyecto").ToString)
End If
notienerecursos = True
End If
Next
If (notienerecursos) Then
Alert(SinRecursos.ToString, TipoMensaje.MsgAdvertencia)
End If
dtpresupuestos.Dispose()
Return notienerecursos
End Function
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 <b>{2}</b><br><br>", TipoLargo, Folio, Estatus)
strOpciones.Append(" <div style='width: 400px'> ")
strOpciones.Append(" <fieldset> ")
strOpciones.Append(" <legend>Opciones</legend> ")
strOpciones.Append(" <table width=""350px""> ")
'verifico los permisos según el estatus
'Const Sitio As String = "rm:90/"
Dim StrSupervisa As String = "" '= String.Format("http://{0}/OC/RegOp.aspx?p={1}", Sitio, Encripta(String.Format("Op=SUPERVISAR&Oc={0}&CveUsuario={1}&Fecha={2}", CveOrdenCompra, CveUsuario, Now)))
Dim StrAutoriza As String = "" '= String.Format("http://{0}/OC/RegOp.aspx?p={1}", Sitio, Encripta(String.Format("Op=AUTORIZAR&Oc={0}&CveUsuario={1}&Fecha={2}", CveOrdenCompra, CveUsuario, Now)))
Dim StrCancela As String = "" ' = String.Format("http://{0}/OC/RegOp.aspx?p={1}", Sitio, Encripta(String.Format("Op=CANCELAR&Oc={0}&CveUsuario={1}&Fecha={2}", CveOrdenCompra, UsuarioActual.CveUsuario, Now)))
Dim StrReqCotiza As String = "" '= String.Format("http://{0}/OC/RegOp.aspx?p={1}", Sitio, Encripta(String.Format("Op=REQCONTIZACION&Oc={0}&CveUsuario={1}&Fecha={2}", CveOrdenCompra, CveUsuario, Now)))
'si se acaba de solicitar y se necesita supervisar
If pCveEstatus = 1 Then strOpciones.AppendFormat(" <tr><td><a href=""{0}""><span style=""font-size: 15px""><strong>Supervisar</strong></span></a></td></tr> ", StrSupervisa)
'si se acaba de supervisar y se necesita autorizar
If pCveEstatus = 2 Then
strOpciones.AppendFormat(" <tr><td><a href=""{0}""><span style=""font-size: 15px""><strong>Autorizar</strong></span></a></td></tr> ", StrAutoriza)
strOpciones.AppendFormat(" <tr><td><a href=""{0}""><span style=""font-size: 15px""><strong> Autorizar con Cotización</strong></span></a></td></tr> ", StrReqCotiza)
End If
'si se quiere cancelar
strOpciones.AppendFormat(" <tr><td><a href=""{0}""><span style=""font-size: 15px""><strong>Cancelar</strong></span></a></td></tr> ", StrCancela)
strOpciones.Append(" </table> ")
strOpciones.Append(" </fieldset> ")
strOpciones.Append(" </div> ")
'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($" #<b>{FolioOC}</b> ")
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><br>", Folio)
strOpciones.Append(" <div style='width: 400px'> ")
strOpciones.Append(" <fieldset> ")
strOpciones.Append(" <legend>Opciones</legend> ")
strOpciones.Append(" <table width=""350px""> ")
strOpciones.AppendFormat(" <tr><td><a href=""{0}OC/OC=""{1}"" ""><span style=""font-size: 15px""><strong>Ir a OC</strong></span></a></td></tr> ", UrlSitio, CveOrdenCompra)
strOpciones.Append(" </table> ")
strOpciones.Append(" </fieldset> ")
strOpciones.Append(" </div> ")
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.<br><br>")
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("<html xmlns=""http://www.w3.org/1999/xhtml""> ")
strBody.Append("<head> ")
strBody.Append(" <style type=""text/css""> ")
strBody.Append(" body ")
strBody.Append(" { ")
strBody.Append(" margin:0px; ")
strBody.Append(" padding:0px 0px 0px 0px; ")
strBody.Append(" font-family: Verdana, Arial, Helvetica, sans-serif; ")
strBody.Append(" font-size: 10px; ")
strBody.Append(" background-color:#F0F0F0; ")
strBody.Append(" } ")
strBody.Append(" a.Texto ")
strBody.Append(" { ")
strBody.Append(" font-size:11px; ")
strBody.Append(" background-color:#F7F6F3; ")
strBody.Append(" text-decoration:none; ")
strBody.Append(" font-weight:bold; ")
strBody.Append(" } ")
strBody.Append(" .Texto ")
strBody.Append(" { ")
strBody.Append(" background-color:#F7F6F3; color:Black; font-family:Verdana; font-size:10px; text-align:center; vertical-align:middle; height:20px;")
strBody.Append(" } ")
strBody.Append(" .TextoAlterno ")
strBody.Append(" { ")
strBody.Append(" background-color:White; color:Black; font-family:Verdana; font-size:10px; text-align:center; ")
strBody.Append(" vertical-align:middle; height:20px;")
strBody.Append(" } ")
strBody.Append(" .BarraIdentidad ")
strBody.Append(" { ")
strBody.Append(" color:#FFFFFF; ")
strBody.Append(" background:#F0F0F0; ")
strBody.Append(" font-weight:bold; ")
strBody.Append(" font-size:19px; ")
strBody.Append(" font-style:oblique; ")
strBody.Append(" } ")
strBody.Append(" .Titulos ")
strBody.Append(" { ")
strBody.Append(" background-color: Gray;")
strBody.Append(" color:White; ")
strBody.Append(" font-family:Verdana; font-size:12px; text-align:center; ")
strBody.Append(" vertical-align:middle; font-weight:bold; height:30px; ")
strBody.Append(" text-decoration:none; ")
strBody.Append(" } ")
strBody.Append(" .Verde {color: #00CC00;} ")
strBody.Append(" .Negro {color: #000000;} ")
strBody.Append(" .Rojo {color: #FF0000;} ")
strBody.Append(" </style> ")
strBody.Append("</head> ")
strBody.Append("<body> ")
strBody.AppendFormat(" <div id=""C_divOC"" style=""width: 550px""> <fieldset> <legend><b>Datos {0}</b></legend> ", TipoLargo)
strBody.Append(" <table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""100%""> ")
strBody.Append(" <tr style=""height: 22px""> ")
strBody.AppendFormat(" <td style=""width: 90px""> Folio:</td><td style=""width: 125px""><b><a href=""{0}OC/OC.aspx?OC={1}"">{2}<a></b></td><td style=""width: 90px""> Estatus: </td><td><b>{3}</b></td> ", UrlSitio, objOC.CveOrdenCompra, objOC.Folio, objOC.Estatus)
strBody.Append(" </tr> ")
strBody.Append(" <tr style=""height: 22px""> ")
strBody.AppendFormat(" <td style=""width: 90px""> Empresa:</td><td colspan=""3""><b>{0}</b></td> ", objOC.Empresa)
strBody.Append(" </tr> ")
strBody.Append(" <tr style=""height: 20px""> ")
strBody.AppendFormat(" <td>Descripción:</td><td colspan='3'><b>{0}</b></td> ", objOC.Descripcion)
strBody.Append(" </tr> ")
strBody.Append(" <tr style=""height: 20px""> ")
strBody.AppendFormat(" <td>Justificación</td><td colspan=""3""><textarea name=""ctlTJ"" rows=""5"" cols=""20"" readonly=""readonly""id=""ctlTJ"" style=""width: 300px;"">{0}</textarea></td> ", objOC.Justificacion)
strBody.Append(" </tr> ")
strBody.Append(" </table> ")
strBody.Append(" </fieldset> ")
strBody.Append(" </div> ")
'Cargo el detalle
If IncluirDetalles = True Then
strBody.Append(" <div style='width: 550px'> ")
strBody.Append(" <fieldset> ")
strBody.Append(" <legend>Opciones</legend> ")
strBody.Append(" <table width=""550px""> <tr style='background-color:gray;color:White;font-family:Verdana;font-size:10px;text-align:center;vertical-align:middle;font-weight:bold;height:20px;text-decoration:none;'><th scope='col' style='width: 50px'>Cantidad</th><th scope='col' style='width: 50px'>Unidad</th><th scope='col' style='width: 225px'>Producto o Servicio</th>")
strBody.AppendFormat(" <th scope='col' style='width: 100px'>Observacion</th><th scope='col' style='width: 150px'>{0}</th><th scope='col' style='width: 85px'>Activo Fijo</th><th scope='col' style='width: 70px'>P.U.</th><th scope='col' style='width: 85px'>Total</th></tr>", If(CveEmpresaActual = 66, "Proyecto", "Proyecto<br>SubProyecto"))
'verifico los permisos según el estatus
If objOC.GetOrdenesDetalle(CveOrdenCompra) Then
For Each dr As DataRow In objOC.DtResultados.Rows
strBody.AppendFormat("<tr class='Texto'><td>{0}</td><td>{1}</td><td><span style='width: 220px; border-bottom: 1px solid gray;'>{2}</span><br>{3}</td><td>{4}</td><td style='width:150px;'><span style='width: 150px; border-bottom: 1px solid gray;'>{5}</span><br>{6}</td><td>{7}</td><td align='right'>{8}</td><td align='right'>{9}</td></tr>",
dr("Cantidad").ToString.FormatoNumero, dr("Abreviatura"), dr("Clasificacion"), dr("PS"), dr("Observacion"), dr("Proyecto"), If(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(" </table> ")
strBody.Append(" </fieldset> ")
strBody.Append(" </div> ")
Else
strBody.Append(" <div style='width: 550px; height: 50px'> ")
strBody.Append(" <fieldset> ")
strBody.Append(" <legend>Bitacora</legend> ")
strBody.Append(" <table width=""550px""> ")
strBody.Append(" <tr> ")
strBody.Append(" <td> ")
strBody.AppendFormat(" {0}", Bitacora)
strBody.Append(" </td> ")
If LigaAdjunto <> "" Then strBody.AppendFormat(" <tr><td>El usuario agrego el siguiente archivo: <a href='{0}'>Adjunto</a></td></tr>", LigaAdjunto)
strBody.Append(" </tr> ")
strBody.Append(" </table> ")
strBody.Append(" </fieldset> ")
strBody.Append(" </div> ")
End If
'strBody.Append(Opciones)
strBody.Append(Opciones)
strBody.Append("</body></html>")
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("<html xmlns=""http://www.w3.org/1999/xhtml""> ")
strBody.Append("<head> ")
strBody.Append(" <style type=""text/css""> ")
strBody.Append(" body ")
strBody.Append(" { ")
strBody.Append(" margin:0px; ")
strBody.Append(" padding:0px 0px 0px 0px; ")
strBody.Append(" font-family: Verdana, Arial, Helvetica, sans-serif; ")
strBody.Append(" font-size: 10px; ")
strBody.Append(" background-color:#F0F0F0; ")
strBody.Append(" } ")
strBody.Append(" a.Texto ")
strBody.Append(" { ")
strBody.Append(" font-size:11px; ")
strBody.Append(" background-color:#F7F6F3; ")
strBody.Append(" text-decoration:none; ")
strBody.Append(" font-weight:bold; ")
strBody.Append(" } ")
strBody.Append(" .Texto ")
strBody.Append(" { ")
strBody.Append(" background-color:#F7F6F3; color:Black; font-family:Verdana; font-size:10px; text-align:center; vertical-align:middle; height:20px;")
strBody.Append(" } ")
strBody.Append(" .TextoAlterno ")
strBody.Append(" { ")
strBody.Append(" background-color:White; color:Black; font-family:Verdana; font-size:10px; text-align:center; ")
strBody.Append(" vertical-align:middle; height:20px;")
strBody.Append(" } ")
strBody.Append(" .BarraIdentidad ")
strBody.Append(" { ")
strBody.Append(" color:#FFFFFF; ")
strBody.Append(" background:#F0F0F0; ")
strBody.Append(" font-weight:bold; ")
strBody.Append(" font-size:19px; ")
strBody.Append(" font-style:oblique; ")
strBody.Append(" } ")
strBody.Append(" .Titulos ")
strBody.Append(" { ")
strBody.Append(" background-color: Gray;")
strBody.Append(" color:White; ")
strBody.Append(" font-family:Verdana; font-size:12px; text-align:center; ")
strBody.Append(" vertical-align:middle; font-weight:bold; height:30px; ")
strBody.Append(" text-decoration:none; ")
strBody.Append(" } ")
strBody.Append(" .Verde {color: #00CC00;} ")
strBody.Append(" .Negro {color: #000000;} ")
strBody.Append(" .Rojo {color: #FF0000;} ")
strBody.Append(" </style> ")
strBody.Append("</head> ")
strBody.Append("<body> ")
strBody.AppendFormat(" <div id=""C_divOC"" style=""width: 550px""> <fieldset> <legend><b>Datos de Orden de Compra</b></legend> ")
strBody.Append(" <table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""100%""> ")
strBody.Append(" <tr style=""height: 22px""> ")
strBody.AppendFormat(" <td style=""width: 90px""> Folio:</td><td style=""width: 125px""><b>{0}</b></td><td style=""width: 90px""> Estatus: </td><td><b>{1}</b></td> ", objOC.Folio, objOC.Estatus)
strBody.Append(" </tr> ")
strBody.Append(" <tr style=""height: 22px""> ")
strBody.AppendFormat(" <td style=""width: 90px""> Empresa:</td><td colspan=""3""><b>{0}</b></td> ", objOC.Empresa)
strBody.Append(" </tr> ")
strBody.Append(" <tr style=""height: 20px""> ")
strBody.AppendFormat(" <td>Descripción:</td><td colspan='3'><b>{0}</b></td> ", objOC.Descripcion)
strBody.Append(" </tr> ")
strBody.Append(" </table> ")
strBody.Append(" </fieldset> ")
strBody.Append(" </div> ")
'Cargo el detalle
strBody.Append(" <div style='width: 550px'> ")
strBody.Append(" <fieldset> ")
strBody.Append(" <legend>Opciones</legend> ")
strBody.Append(" <table width=""550px""> <tr style='background-color:gray;color:White;font-family:Verdana;font-size:10px;text-align:center;vertical-align:middle;font-weight:bold;height:20px;text-decoration:none;'><th scope='col' style='width: 50px'>Cantidad</th><th scope='col' style='width: 50px'>Unidad</th><th scope='col' style='width: 225px'>Descripción</th>")
strBody.Append(" <th scope='col' style='width: 100px'>Observación</th><th scope='col' style='width: 85px'>Precio</th></tr>")
'verifico los permisos según el estatus
For Each dr As DataRow In DttDetalle.Rows
strBody.AppendFormat("<tr class='Texto'><td style='width:50px;'>{0}</td><td style='width:50px;'>{1}</td><td align='left' style='width:225px;'>{2}</td><td style='width:100px;'>{3}</td><td style='width:85px;'>{4}</td></tr>",
dr("Cantidad").ToString.FormatoNumero, dr("Abreviatura"), dr("PS"), dr("Obs"), dr("Importe").ToString.FormatoNumero)
Next
strBody.Append(" </table> ")
strBody.Append(" </fieldset> ")
strBody.Append(" </div> ")
strBody.Append("</body></html>")
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("<br/ ><p>Motivo de Eliminación</p>")
strBody.Append("<html xmlns=""http://www.w3.org/1999/xhtml""> ")
strBody.Append("<head> ")
strBody.Append(" <style type=""text/css""> ")
strBody.Append(" body ")
strBody.Append(" { ")
strBody.Append(" margin:0px; ")
strBody.Append(" padding:0px 0px 0px 0px; ")
strBody.Append(" font-family: Verdana, Arial, Helvetica, sans-serif; ")
strBody.Append(" font-size: 10px; ")
strBody.Append(" background-color:#F0F0F0; ")
strBody.Append(" } ")
strBody.Append(" a.Texto ")
strBody.Append(" { ")
strBody.Append(" font-size:11px; ")
strBody.Append(" background-color:#F7F6F3; ")
strBody.Append(" text-decoration:none; ")
strBody.Append(" font-weight:bold; ")
strBody.Append(" } ")
strBody.Append(" .Texto ")
strBody.Append(" { ")
strBody.Append(" background-color:#F7F6F3; color:Black; font-family:Verdana; font-size:10px; text-align:center; vertical-align:middle; height:20px;")
strBody.Append(" } ")
strBody.Append(" .TextoAlterno ")
strBody.Append(" { ")
strBody.Append(" background-color:White; color:Black; font-family:Verdana; font-size:10px; text-align:center; ")
strBody.Append(" vertical-align:middle; height:20px;")
strBody.Append(" } ")
strBody.Append(" .BarraIdentidad ")
strBody.Append(" { ")
strBody.Append(" color:#FFFFFF; ")
strBody.Append(" background:#F0F0F0; ")
strBody.Append(" font-weight:bold; ")
strBody.Append(" font-size:19px; ")
strBody.Append(" font-style:oblique; ")
strBody.Append(" } ")
strBody.Append(" .Titulos ")
strBody.Append(" { ")
strBody.Append(" background-color: Gray;")
strBody.Append(" color:White; ")
strBody.Append(" font-family:Verdana; font-size:12px; text-align:center; ")
strBody.Append(" vertical-align:middle; font-weight:bold; height:30px; ")
strBody.Append(" text-decoration:none; ")
strBody.Append(" } ")
strBody.Append(" .Contenido2 ")
strBody.Append(" { ")
strBody.Append(" background-color: White;")
strBody.Append(" font-family:Verdana; font-size:12px; text-align:center; ")
strBody.Append(" vertical-align:middle; font-weight:bold; height:30px; ")
strBody.Append(" text-decoration:none; ")
strBody.Append(" } ")
strBody.Append(" .Verde {color: #00CC00;} ")
strBody.Append(" .Negro {color: #000000;} ")
strBody.Append(" .Rojo {color: #FF0000;} ")
strBody.Append(" </style> ")
strBody.Append("</head> ")
strBody.Append("<body> ")
strBody.AppendFormat("<div class='Titulos'>Por medio del presente correo electrónico se notifica que se ha eliminado la cotización con folio {0}</div><br>", ObjCotizacion.Folio)
strBody.Append("<div class='Contenido2' style='display: table!important'>")
strBody.AppendFormat(" <div id=""C_divOC"" style=""width: 550px""> <fieldset> <legend><b>Datos {0}</b></legend> ", "Cotización")
strBody.Append(" <table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""100%""> ")
strBody.Append(" <tr style=""height: 22px""> ")
strBody.AppendFormat(" <td style=""width: 90px""> Empresa:</td><td colspan=""3""><b>{0}</b></td> ", ObjCotizacion.Empresa)
strBody.Append(" </tr> ")
strBody.Append(" <tr style=""height: 22px""> ")
strBody.AppendFormat(" <td>Fecha Eliminación:</td><td><b>{0}</b></td><td>&nbsp;</td><td><b>&nbsp;</b></td> ", Now.ToShortDateString)
strBody.Append(" </tr> ")
strBody.Append(" </table> ")
strBody.Append(" </fieldset> ")
strBody.Append(" </div> ")
'Cargo el detalle
strBody.Append(" <div style='width: 550px'> ")
strBody.Append(" <fieldset> ")
strBody.Append(" <legend>Productos a Cotizar</legend> ")
strBody.Append(" <table width=""550px""> <tr style='background-color:gray;color:White;font-family:Verdana;font-size:10px;text-align:center;vertical-align:middle;font-weight:bold;height:20px;text-decoration:none;'><th scope='col' style='width: 50px'>Cantidad</th><th scope='col' style='width: 50px'>Unidad</th><th scope='col' style='width: 225px'>Descripción</th>")
strBody.Append(" </tr>")
Dim dtConceptos As DataTable = Nothing
If ObjCotizacion.GetOrdenesDetalle(CveOrdenCompra) Then
dtConceptos = ObjCotizacion.DtResultados
End If
For Each dr As DataRow In dtConceptos.Rows
strBody.AppendFormat("<tr class='Texto'><td style='width:50px;'>{0}</td><td style='width:50px;'>{1}</td><td align='left' style='width:225px;'>{2}</td></tr>", dr("Cantidad").ToString.FormatoNumero, dr("Abreviatura"), dr("PS")) ', dr("Clasificacion"), dr("Codigo"))
Next
'For Each dr As GridViewRow In gvCotizaciones.Rows
' strBody.AppendFormat("<tr class='Texto'><td style='width:50px;'>{0}</td><td style='width:50px;'>{1}</td><td align='left' style='width:225px;'>{2}</td></tr>", dr.Cells(0).ToString.FormatoNumero, dr.Cells(1).ToString, dr.Cells(2).ToString) ', dr("Clasificacion"), dr("Codigo"))
'Next
strBody.Append(" </table> ")
strBody.Append(" </fieldset> ")
strBody.Append(" </div> ")
strBody.AppendFormat("<div><p><b>Motivo de eliminación:</b></p></div>", Motivo)
strBody.AppendFormat("<div><p>{0}</p></div>", Motivo)
strBody.Append("</div>")
strBody.Append("</body></html>")
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.patch
Dim Tipo As String = If(file.Extencion.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 <br/>" & 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 Double = Row("Descuento").ToString.ToDouble * Cantidad.ToDouble '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>&nbsp;&nbsp;&nbsp;&nbsp;- 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 Double = DrPS("RetIVA").ToString.ToDouble
Dim RetISR As Double = DrPS("RetISR").ToString.ToDouble
Dim PS As String = DrPS("PS").ToString
Dim TotalPS As Double = If(PrecioUnitario.ToDouble > 0, PrecioUnitario.ToDouble * Cantidad.ToDouble - Descuento, 0)
Dim CveUnidadMedida As Integer = DrPS("CveUnidadMedida").ToString.ToEntero
Dim UM As String = DrPS("UnidadMedida").ToString
Dim IvaPS As Double = DrPS("IVA").ToString.ToDouble
'If IvaPS = -1 Then
' Dim Drr As DataRow = GlobalDTSubProyectos(-1, DdlSubProyecto.SelectedValue.ToEntero())(0)
' IvaPS = Drr("IVA").ToString().ToDouble()
'End If
Dim IEPSPS As Double = DrPS("IEPSPorcentaje").ToString.ToDouble
Dim IEPSPSIVA As Double = If(DrPS("IEPSGrabaIVA").ToString = "True", DrPS("IEPSPorcentaje").ToString.ToDouble, 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.ToDouble, 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|&nbsp;&nbsp;&nbsp;&nbsp;- 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(9).Visible = True 'Permitir la edicion
lblTipoPadreHijo.Visible = False
GvD.Columns(10).Visible = False
LblCompra.Visible = False
GvD.Columns(11).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(10).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())
' 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}")
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 = $"<a class=""Texto"" target='_blank' href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={e.Row.DBCampo("CveMovimiento")}"">{e.Row.DBCampo("CodigoPS")}</a>"
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.ToDouble, 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.ToDouble - 1, 2), 0)
Row("IVA") = Row("IVAPorcentaje").ToString.ToDouble * Row("Total").ToString.ToDouble
Row("RetIVAPorcentaje") = DrPS("RetIVA").ToString.ToDouble
Row("RetIVA") = Row("RetIVAPorcentaje").ToString.ToDouble * Row("Total").ToString.ToDouble
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 Double = DtDetalle.SUM("Total", "Total > 0") + DtDetalle.SUM("Descuento")
Dim Descuento As Double = DtDetalle.SUM("Descuento")
Dim SubTotalIEPSIVA As Double = DtDetalle.SUM("IEPSPSIVA")
Dim IVA As Double = DtDetalle.SUM("IVA") + SubTotalIEPSIVA
Dim SubTotalIEPS As Double = DtDetalle.SUM("IEPSPS")
Dim SubTotalRetIVA As Double = DtDetalle.SUM("RetIVA")
Dim SubTotalRetISR As Double = 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.ToDouble > 0 Then TrRetIVA.Visible = False
If Not TxtRetISR.Text.ToDouble > 0 Then TrRetISR.Visible = False
If Not TxtIEPS.Text.ToDouble > 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 Double, RetISR As Double, IEPS As Double)
If RetIVA > 0 Or RetISR > 0 Or IEPS > 0 Then
TrRetIVA.Visible = True
TxtRetIVA.Text = RetIVA.ToString.ToDouble.FormatoNumero
TrRetISR.Visible = True
TxtRetISR.Text = RetISR.ToString.ToDouble.FormatoNumero
TrIEPS.Visible = True
TxtIEPS.Text = IEPS.ToString.ToDouble.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.ToDouble
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) 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) 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.ToDouble > 0 And row.FCTextBox("TxtPrecioContrato").Text.Trim.ToDouble > 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.ToDouble > 0 And row.FCTextBox("TxtPrecioContrato").Text.Trim.ToDouble > 0 Then
Dim Cantidad As Double = row.FCTextBox("TxtCantContrato").Text.Trim.ToDouble
Dim Importe As Double = row.FCTextBox("TxtPrecioContrato").Text.Trim.ToDouble
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 Double = DrPS("RetISR").ToString.ToDouble
Dim RetIVA As Double = DrPS("RetIVA").ToString.ToDouble
Dim IvaPS As Double = DrPS("IVA").ToString.ToDouble
'If IvaPS = -1 Then 'IVA DE LA SUCURSAL
' IvaPS = GlobalDTSubProyectos(-1, DdlSubProyecto.SelectedValue.ToEntero).FiltroPrimeroValor("IVA").ToDouble
'End If
Dim IEPSPS As Double = DrPS("IEPSPorcentaje").ToString.ToDouble
Dim IEPSPSIVA As Double = If(DrPS("IEPSGrabaIVA").ToString = "True", DrPS("IEPSPorcentaje").ToString.ToDouble, 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 Double = If(Importe > 0, (Importe * Cantidad), 0)
Dim ImportePS As Double = 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.patch
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 <br/>" & 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().ToDouble, CveUnidadMedida,
dr("Cantidad").ToString().ToDouble, 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.ToDouble
' 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.ToDouble - 1, 2)) Then
' Err = True
' Else
' For Each dr As DataRow In DtDetalle.FiltraParametros("TipoDato IN (1)").Rows
' If OC.UpdateOrdenCompraDetalle(dr("Cantidad").ToString.ToDouble, dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, (dr("Importe").ToString.ToDouble * 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.ToDouble * TCDouble), IEPSPS:=(dr("IEPSPS").ToString.ToDouble * TCDouble), IEPSPSIVA:=(dr("IEPSPSIVA").ToString.ToDouble * TCDouble), IVA:=(dr("IVA").ToString.ToDouble * TCDouble),
' RetIVA:=(dr("RetIVA").ToString.ToDouble * TCDouble), RetISR:=(dr("RetISR").ToString.ToDouble * TCDouble), Total:=(dr("Total").ToString.ToDouble * TCDouble), CveContratoDetalle:=dr("CveContratoDetalle").ToString.ToEntero,
' IVAPorcentaje:=dr("IVAPorcentaje").ToString.ToDouble, RetIVAPorcentaje:=dr("RetIVAPorcentaje").ToString.ToDouble, RetISRPorcentaje:=dr("RetISRPorcentaje").ToString.ToDouble, IEPSPSPorcentaje:=dr("IEPSPSPorcentaje").ToString.ToDouble,
' IEPSPSIVAPorcentaje:=dr("IEPSPSIVAPorcentaje").ToString.ToDouble) <= 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.ToDouble - 1, 2)) Then
' Err = True
' Else
' For Each dr As DataRow In DtDetalle.FiltraParametros("TipoDato IN (1)").Rows
' If OC.UpdateOrdenCompraDetalle(dr("Cantidad").ToString.ToDouble, dr("CveUnidadMedida").ToString.ToEntero, dr("CvePS").ToString.ToEntero, (dr("Importe").ToString.ToDouble / 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.ToDouble / TCDouble), IEPSPS:=(dr("IEPSPS").ToString.ToDouble / TCDouble), IEPSPSIVA:=(dr("IEPSPSIVA").ToString.ToDouble / TCDouble), IVA:=(dr("IVA").ToString.ToDouble / TCDouble),
' RetIVA:=(dr("RetIVA").ToString.ToDouble / TCDouble), RetISR:=(dr("RetISR").ToString.ToDouble / TCDouble), Total:=(dr("Total").ToString.ToDouble / TCDouble), CveContratoDetalle:=dr("CveContratoDetalle").ToString.ToEntero,
' IVAPorcentaje:=dr("IVAPorcentaje").ToString.ToDouble, RetIVAPorcentaje:=dr("RetIVAPorcentaje").ToString.ToDouble, RetISRPorcentaje:=dr("RetISRPorcentaje").ToString.ToDouble, IEPSPSPorcentaje:=dr("IEPSPSPorcentaje").ToString.ToDouble,
' IEPSPSIVAPorcentaje:=dr("IEPSPSIVAPorcentaje").ToString.ToDouble) <= 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 Double = 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 Double = DrPS("RetIVA").ToString.ToDouble
Dim RetISR As Double = DrPS("RetISR").ToString.ToDouble
Dim PS As String = DrPS("PS").ToString
Dim TotalPS As Double = If(PrecioUnitario > 0, PrecioUnitario * Cantidad, 0)
Dim CveUnidadMedida As Integer = DrPS("CveUnidadMedida").ToString.ToEntero
Dim UM As String = DrPS("UnidadMedida").ToString
Dim IvaPS As Double = DrPS("IVA").ToString.ToDouble
'If IvaPS = -1 Then
' Dim Drr As DataRow = GlobalDTSubProyectos(-1, DdlSubProyecto.SelectedValue.ToEntero())(0)
' IvaPS = Drr("IVA").ToString().ToDouble()
'End If
Dim IEPSPS As Double = DrPS("IEPSPorcentaje").ToString.ToDouble
Dim IEPSPSIVA As Double = If(DrPS("IEPSGrabaIVA").ToString = "True", DrPS("IEPSPorcentaje").ToString.ToDouble, 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.FiltraParametros(String.Format($"CveContratoTipo in (30,31) AND CveEmpresa = {UsuarioActual.CveEmpresa}"))
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
Else
GvContratosControl.DataSource = Nothing
BtnAplicarContrato.Visible = 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 Double = GvRow.FCTextBox("TxtCantidad").Text.ToDouble
Dim CvePS As Integer = GvRow.DataKey("CvePS").ToEntero
Dim PS As String = GvRow.DataKey("PS")
Dim PU As Double = GvRow.DataKey("PU").ToDouble
Dim TotalPS As Double = GvRow.FCTextBox("TxtImporte").Text.ToDouble
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 Double = GvRow.DataKey("RetISR").ToString.ToDouble
Dim RetIVA As Double = GvRow.DataKey("RetIVA").ToString.ToDouble
Dim IvaPS As Double = GvRow.DataKey("IVA").ToString.ToDouble
Dim CveClasificacion As Integer = GvRow.DataKey("CveClasificacion").ToString.ToEntero
Dim Clasificacion As String = GvRow.DataKey("Clasificacion")
Dim IEPSPS As Double = GvRow.DataKey("IEPSPorcentaje").ToString.ToDouble
Dim IEPSPSIVA As Double = 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()
RegistraScript("$('#DivmodalConmtrato').modal('hide')")
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}")
DdlCultivosCuadroEdit.DataBind()
DdlCultivosCuadroEdit.Items.Insert(0, New ListItem("Seleccione uno", "-1"))
DdlCultivosCuadroEdit.SelectedValueExist(CveCultivoCuadroDetalle)
End Sub
End Class