Merge branch 'master' of http://192.168.10.111:8383/SIG
This commit is contained in:
@@ -11,6 +11,9 @@ Imports Newtonsoft.Json
|
||||
Imports Extensiones
|
||||
Imports MoreLinq
|
||||
|
||||
|
||||
|
||||
|
||||
Partial Class Compras_Compras
|
||||
Inherits ClsPaginas
|
||||
|
||||
@@ -3990,6 +3993,10 @@ Partial Class Compras_Compras
|
||||
|
||||
|
||||
|
||||
If Not ValidaPresupuesto(2) Then
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
'------------------ INICIA VALIDACIONES ------------------
|
||||
|
||||
If MetodoPagoOC = 0 AndAlso RBLPago.SelectedValue.ToEntero <> 2 Then
|
||||
@@ -16599,6 +16606,12 @@ Partial Class Compras_Compras
|
||||
End Sub
|
||||
Protected Sub LbAgregar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LbAgregar.Click
|
||||
|
||||
|
||||
Dim ValImporte As Decimal = (TxtCantidad.Text.ToDecimal * TxtPrecio.Text.ToDecimal).RoundSQL(2)
|
||||
If Not ValidaPresupuesto(1, DdlSubProyecto.SelectedValue.ToEntero, DdlSubProyecto.SelectedItem.Text, DdlClasificacion.SelectedValue.ToEntero, DdlClasificacion.SelectedItem.Text, DdlTipoGasto.SelectedValue.ToEntero, DdlTipoGasto.SelectedItem.Text, ValImporte) Then
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
'VALIDACIONES
|
||||
If Not DdlPS.SelectedValue.ToEntero > 0 Then
|
||||
Alert("Es necesario seleccionar un Producto o Servicio registrado en el sistema.", TipoMensaje.MsgAdvertencia)
|
||||
@@ -16645,39 +16658,43 @@ Partial Class Compras_Compras
|
||||
|
||||
Dim Total As Decimal = (TxtCantidad.Text.ToDecimal * TxtPrecio.Text.ToDecimal) - TxtDescuentoModal.Text.ToDecimal
|
||||
|
||||
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 CveTipoGasto = {DdlTipoGasto.SelectedValue.ToEntero} AND Importe > 0").Rows.Count > 0 Then
|
||||
Autorizado = ObjCon.DtResultados.FiltraParametros($"CveClasificacion = {DdlClasificacion.SelectedValue.ToEntero} AND CveTipoGasto = {DdlTipoGasto.SelectedValue.ToEntero} AND Importe > 0").Rows(0)("Importe").ToString.ToDouble
|
||||
End If
|
||||
End If
|
||||
If ObjCon.GetPresupuestosRep(CvePresupuesto, DdlTipoGasto.SelectedValue.ToEntero, 1, $"01/09/{NowADS().Year - 1}".ToDate, NowADS(), 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 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 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>{DdlSubProyecto.SelectedItem.Text}</b> con la clasificación <b>{DdlClasificacion.SelectedItem.Text}</b> y el tipo de gasto <b>{DdlTipoGasto.SelectedItem.Text}</b>. Se excede por <b>{Diferencia.FormatoNumero}</b>", TipoMensaje.MsgAdvertencia)
|
||||
Exit Sub
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
' If ObjCon.GetPresupuestosDetalle(CvePresupuesto, -1, UsuarioActual.CveEmpresa) Then
|
||||
' If ObjCon.DtResultados.FiltraParametros($"CveClasificacion = {DdlClasificacion.SelectedValue.ToEntero} AND CveTipoGasto = {DdlTipoGasto.SelectedValue.ToEntero} AND Importe > 0").Rows.Count > 0 Then
|
||||
' Autorizado = ObjCon.DtResultados.FiltraParametros($"CveClasificacion = {DdlClasificacion.SelectedValue.ToEntero} AND CveTipoGasto = {DdlTipoGasto.SelectedValue.ToEntero} AND Importe > 0").Rows(0)("Importe").ToString.ToDouble
|
||||
' End If
|
||||
' End If
|
||||
|
||||
' If ObjCon.GetPresupuestosRep(CvePresupuesto, DdlTipoGasto.SelectedValue.ToEntero, 1, $"01/09/{NowADS().Year - 1}".ToDate, NowADS(), 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 + Total) - Autorizado
|
||||
' If Diferencia > 0 Then
|
||||
' Alert($"No hay presupuesto disponible en el subproyecto <b>{DdlSubProyecto.SelectedItem.Text}</b> con la clasificación <b>{DdlClasificacion.SelectedItem.Text}</b> y el tipo de gasto <b>{DdlTipoGasto.SelectedItem.Text}</b>. Se excede por <b>{Diferencia.FormatoNumero}</b>", TipoMensaje.MsgAdvertencia)
|
||||
' Exit Sub
|
||||
' End If
|
||||
' End If
|
||||
|
||||
'End If
|
||||
|
||||
ActualizaTotales = True
|
||||
|
||||
@@ -20237,6 +20254,144 @@ Partial Class Compras_Compras
|
||||
Protected Sub BtnRecolecciónAplicar_Click(sender As Object, e As EventArgs)
|
||||
|
||||
End Sub
|
||||
|
||||
#Region "PRESUPUESTOS"
|
||||
|
||||
''' <summary>
|
||||
''' Valida si hay presupuesto, Se valida con base en CveSubProyecto, CveClasificacion y CveTipoGasto
|
||||
''' </summary>
|
||||
''' <param name="Opcion">Int 1 Indica que es una valiadcion al agregar el Producto o servicio 2 Indica validacion General antes de guardae .</param>
|
||||
''' <param name="ValCveSubProyecto">Usado al validar Presupuesto cuando se agrega un producto o servicio</param>
|
||||
''' <param name="ValSubProyecto">Usado al validar Presupuesto cuando se agrega un producto o servicio</param>
|
||||
''' <param name="ValCveClasificacion">Usado al validar Presupuesto cuando se agrega un producto o servicio</param>
|
||||
''' <param name="ValClasificacion">Usado al validar Presupuesto cuando se agrega un producto o servicio</param>
|
||||
''' <param name="ValCveTipoGasto">Usado al validar Presupuesto cuando se agrega un producto o servicio</param>
|
||||
''' <param name="ValTipoGasto">Usado al validar Presupuesto cuando se agrega un producto o servicio</param>
|
||||
''' <param name="ValImporte">Usado al validar Presupuesto cuando se agrega un producto o servicio </param>
|
||||
''' <returns>Verdadero si hay presupuesto, Falso si no hay presupuesto.</returns>
|
||||
Public Function ValidaPresupuesto(Opcion As Integer, Optional ValCveSubProyecto As Integer = -1, Optional ValSubProyecto As String = "", Optional ValCveClasificacion As Integer = -1, Optional ValClasificacion As String = "",
|
||||
Optional ValCveTipoGasto As Integer = -1, Optional ValTipoGasto As String = "", Optional ValImporte As Decimal = 0) As Boolean
|
||||
|
||||
Dim respuesta As Boolean = False
|
||||
|
||||
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.GetPresupuestosResumen(UsuarioActual.CveEmpresa, -1) Then
|
||||
|
||||
Dim FechaCompra As Date = TxtFecha.Text.ToDate
|
||||
|
||||
Dim resultadosFiltrados = From row In ObjCon.DtResultados.AsEnumerable()
|
||||
Where FechaCompra >= row.Field(Of Date)("FechaInicio") AndAlso
|
||||
FechaCompra <= row.Field(Of Date)("FechaFin")
|
||||
Select row
|
||||
|
||||
|
||||
If resultadosFiltrados.Count > 0 Then
|
||||
|
||||
Dim EnumAgrupado = (From row In TmpDT.AsEnumerable()
|
||||
Group row By
|
||||
SubProyecto = row.Field(Of String)("SubProyecto"),
|
||||
CveSubProyecto = row.Field(Of Integer)("CveSubProyecto"),
|
||||
Clasificacion = row.Field(Of String)("Clasificacion"),
|
||||
CveClasificacion = row.Field(Of Integer)("CveClasificacion"),
|
||||
TipoGasto = row.Field(Of String)("TipoGasto"),
|
||||
CveTipoGasto = row.Field(Of Integer)("CveTipoGasto")
|
||||
Into Group
|
||||
Select New With {
|
||||
.SubProyecto = SubProyecto,
|
||||
.CveSubProyecto = CveSubProyecto,
|
||||
.Clasificacion = Clasificacion,
|
||||
.CveClasificacion = CveClasificacion,
|
||||
.CveTipoGasto = CveTipoGasto,
|
||||
.TipoGasto = TipoGasto,
|
||||
.TotalSum = Group.Sum(Function(r) r.Field(Of Decimal)("Total"))
|
||||
}).ToList()
|
||||
|
||||
|
||||
If Opcion = 1 Then
|
||||
|
||||
Dim saldoTotal As Decimal = (From row In resultadosFiltrados
|
||||
Where row.Field(Of Integer)("CveSubProyecto") = ValCveSubProyecto AndAlso
|
||||
row.Field(Of Integer)("CveClasificacion") = ValCveClasificacion AndAlso
|
||||
row.Field(Of Integer)("CveTipoGasto") = ValCveTipoGasto
|
||||
Select row.Field(Of Decimal)("Saldo")).Sum()
|
||||
If saldoTotal > 0 Then
|
||||
|
||||
Dim TotalAcumuladoTabla As Decimal = (TmpDT.SUM("Total", $" CveSubProyecto = {ValCveSubProyecto} AND CveClasificacion = {ValCveClasificacion} AND CveTipoGasto = {ValCveTipoGasto} "))
|
||||
Dim Diferencia As Decimal = saldoTotal - TotalAcumuladoTabla - ValImporte
|
||||
|
||||
If (Diferencia) < 0 Then
|
||||
Alert($"No hay presupuesto disponible en el subproyecto <b>{ValSubProyecto}</b> con la clasificación <b>{ValClasificacion}</b>, Tipo de gasto <b>{ValTipoGasto}</b>. Se excede por <b>{Diferencia.FormatoNumero}</b>", TipoMensaje.MsgAdvertencia)
|
||||
respuesta = False
|
||||
|
||||
Else
|
||||
respuesta = True
|
||||
End If
|
||||
|
||||
Else
|
||||
Alert($"No hay presupuesto disponible en el subproyecto <b>{ValSubProyecto}</b> con la clasificación <b>{ValClasificacion}</b>, Tipo de gasto <b>{ValTipoGasto}</b> ", TipoMensaje.MsgAdvertencia)
|
||||
respuesta = False
|
||||
End If
|
||||
|
||||
Else
|
||||
For Each item In EnumAgrupado
|
||||
|
||||
Dim saldoTotal As Decimal = (From row In resultadosFiltrados
|
||||
Where row.Field(Of Integer)("CveSubProyecto") = item.CveSubProyecto AndAlso
|
||||
row.Field(Of Integer)("CveClasificacion") = item.CveClasificacion
|
||||
Select row.Field(Of Decimal)("Saldo")).Sum()
|
||||
If saldoTotal > 0 Then
|
||||
|
||||
Dim Diferencia As Decimal = saldoTotal - item.TotalSum
|
||||
|
||||
If (Diferencia) < 0 Then
|
||||
Alert($"No hay presupuesto disponible en el subproyecto <b>{item.SubProyecto}</b> con la clasificación <b>{item.Clasificacion}</b>, Tipo de gasto <b>{item.TipoGasto}</b>. Se excede por <b>{Diferencia.FormatoNumero}</b>", TipoMensaje.MsgAdvertencia)
|
||||
respuesta = False
|
||||
Exit For
|
||||
Else
|
||||
respuesta = True
|
||||
End If
|
||||
|
||||
Else
|
||||
Alert($"No hay presupuesto disponible en el subproyecto <b>{item.SubProyecto}</b> con la clasificación <b>{item.Clasificacion}</b>, Tipo de gasto <b>{item.TipoGasto}</b>", TipoMensaje.MsgAdvertencia)
|
||||
respuesta = False
|
||||
Exit For
|
||||
End If
|
||||
|
||||
Next
|
||||
End If
|
||||
|
||||
|
||||
|
||||
|
||||
Else
|
||||
Alert("No hay presupuestos.", TipoMensaje.MsgAdvertencia)
|
||||
End If
|
||||
Else
|
||||
Alert("No hay presupuestos.", TipoMensaje.MsgAdvertencia)
|
||||
End If
|
||||
|
||||
ObjCon.Dispose()
|
||||
|
||||
|
||||
|
||||
Else
|
||||
respuesta = True
|
||||
End If
|
||||
|
||||
|
||||
Return respuesta
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
#End Region
|
||||
|
||||
End Class
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user