Validacion Contrato prodctos

This commit is contained in:
HECTOR RODRIGUEZ
2021-07-23 21:20:02 -07:00
parent 919203ab20
commit 377d6a048b

View File

@@ -10,6 +10,7 @@ Imports System.Text.RegularExpressions
Imports System.Threading.Tasks Imports System.Threading.Tasks
Imports System.Xml Imports System.Xml
Imports Extensiones Imports Extensiones
Imports Newtonsoft.Json
Partial Class Compras_Compras Partial Class Compras_Compras
Inherits ClsPaginas Inherits ClsPaginas
@@ -4280,7 +4281,11 @@ Partial Class Compras_Compras
Next Next
If ErrorValidacion Then Exit Sub If ErrorValidacion Then Exit Sub
Dim dtPSInvalidos As String = ValidarPSContrato(TmpDT.FiltraParametros("", "", {"CveSubProyecto", "CvePS", "Cantidad", "PU"}))
If dtPSInvalidos <> "" Then
Alert(dtPSInvalidos, TipoMensaje.MsgAdvertencia)
Exit Sub
End If
'RECORRO LOS PRODUCTOS O SERVICIOS PARA REGISTRARLOS LOS QUE NO EXISTEN EN EL CATÁLOGO 'RECORRO LOS PRODUCTOS O SERVICIOS PARA REGISTRARLOS LOS QUE NO EXISTEN EN EL CATÁLOGO
Dim tCve As Integer Dim tCve As Integer
@@ -4586,7 +4591,7 @@ Partial Class Compras_Compras
Else Else
CveConceptoContableAlmacen = 205 CveConceptoContableAlmacen = 205
End If End If
If OCVinculada AndAlso DdlOCVinculaInv.visible AndAlso Not (CveImportacion > 0 Or CveFlete > 0) Then If OCVinculada AndAlso DdlOCVinculaInv.Visible AndAlso Not (CveImportacion > 0 Or CveFlete > 0) Then
CveConceptoContableAlmacen = DdlOCVinculaInv.SelectedValue.ToEntero CveConceptoContableAlmacen = DdlOCVinculaInv.SelectedValue.ToEntero
End If End If
If UsuarioActual.CveEmpresa.Contiene(72, 80, 140, 141) And Not (CveImportacion > 0 Or CveFlete > 0) Then 'se comento, RMF. 2020.08.19, no le hallo sentido If UsuarioActual.CveEmpresa.Contiene(72, 80, 140, 141) And Not (CveImportacion > 0 Or CveFlete > 0) Then 'se comento, RMF. 2020.08.19, no le hallo sentido
@@ -9056,7 +9061,7 @@ Partial Class Compras_Compras
PorcentajeImpuesto = TmpDT.MAX("IVAPorcentaje").ToDecimal PorcentajeImpuesto = TmpDT.MAX("IVAPorcentaje").ToDecimal
IdCtaContable = If(IdCtaIVAXAcreditar > 0, IdCtaIVAXAcreditar, 0) IdCtaContable = If(IdCtaIVAXAcreditar > 0, IdCtaIVAXAcreditar, 0)
If chkImportacion.checked Then If chkImportacion.Checked Then
ConceptoContable = 287 ConceptoContable = 287
End If End If
@@ -9109,7 +9114,7 @@ Partial Class Compras_Compras
PorcentajeImpuesto = TmpDT.MAX("IVAPorcentaje").ToDecimal PorcentajeImpuesto = TmpDT.MAX("IVAPorcentaje").ToDecimal
IdCtaContable = If(IdCtaIVAAcreditable > 0, IdCtaIVAAcreditable, 0) IdCtaContable = If(IdCtaIVAAcreditable > 0, IdCtaIVAAcreditable, 0)
If chkImportacion.checked Then If chkImportacion.Checked Then
ConceptoContable = 288 ConceptoContable = 288
End If End If
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) And Not IdCtaContable > 0 Then If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) And Not IdCtaContable > 0 Then
@@ -11200,7 +11205,7 @@ Partial Class Compras_Compras
Dim subproyectos As New List(Of Integer) Dim subproyectos As New List(Of Integer)
For Each Row As DataRow In TmpDT.FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}).Rows For Each Row As DataRow In TmpDT.FiltraParametros("", "", {"CveSubProyecto", "SubProyecto"}).Rows
Dim RowCon As DataRow = GlobalDTContratos.FiltroPrimero(String.Format("CveSubProyecto={0}", Row("CveSubProyecto"))) Dim RowCon As DataRow = GlobalDTContratos(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveSubProyecto={0}", Row("CveSubProyecto")))
If Not IsNothing(RowCon) Then If Not IsNothing(RowCon) Then
filtro.AppendFormat(",{0}", Row("CveSubProyecto")) filtro.AppendFormat(",{0}", Row("CveSubProyecto"))
subproyectos.Add(Row("CveSubProyecto").ToString.ToEntero) subproyectos.Add(Row("CveSubProyecto").ToString.ToEntero)
@@ -15043,7 +15048,7 @@ Partial Class Compras_Compras
dt = ObjContabilidad.DtResultados dt = ObjContabilidad.DtResultados
For Each dr As DataRow In dt.Rows For Each dr As DataRow In dt.Rows
If Not ObjContabilidad.UpdatePrepolizasDetalle(dr("CvePrePolizaDetalle").ToString.ToEntero, dr("Concepto").ToString, dr("CveSubProyecto").ToString.ToEntero, dr("IdCtaContable").ToString.ToEntero, CBool(dr("TipoMovto").ToString), 0, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then If Not ObjContabilidad.UpdatePrePolizasDetalle(dr("CvePrePolizaDetalle").ToString.ToEntero, dr("Concepto").ToString, dr("CveSubProyecto").ToString.ToEntero, dr("IdCtaContable").ToString.ToEntero, CBool(dr("TipoMovto").ToString), 0, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
ErrorCancelar = True : Exit For ErrorCancelar = True : Exit For
End If End If
Next Next
@@ -18103,40 +18108,55 @@ Partial Class Compras_Compras
ActualizaTotales = True ActualizaTotales = True
Dim ObjContratos As New ClsContratos Dim ObjContratos As New ClsContratos
Dim TieneError As Boolean = False Dim TieneError As Boolean = False
Dim Mensaje As String = "" Dim dttemp As New DataTable ' GlobalDTContratos().FiltraParametros(String.Format("CveSubProyecto = {0}", DdlSubProyecto.SelectedValue.ToString))
Dim dttemp As DataTable = GlobalDTContratos(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveSubProyecto = {0}", DdlSubProyecto.SelectedValue.ToString)) dttemp.Columns.Add("CveSubProyecto", GetType(Integer))
If dttemp IsNot Nothing AndAlso dttemp.Rows.Count > 0 Then dttemp.Columns.Add("CvePS", GetType(Integer))
Dim drContrato As DataRow = dttemp.Rows(0) dttemp.Columns.Add("Cantidad", GetType(Decimal))
If ObjContratos.GetContratosDetalle(drContrato("CveContrato").ToString.ToEntero) Then dttemp.Columns.Add("PU", GetType(Decimal))
Dim dtContratodetalle As DataTable = ObjContratos.DtResultados.FiltraParametros(String.Format("CvePS = {0}", DdlPS.SelectedValue.ToString))
If dtContratodetalle IsNot Nothing AndAlso dtContratodetalle.Rows.Count > 0 Then
Dim drContratoDetalle As DataRow = dtContratodetalle(0)
If Convert.ToBoolean(drContratoDetalle("LimitarCantidad")) Then
If ObjContratos.GetReporteContratosAvancesDetalleControl(drContrato("CveContrato").ToString.ToEntero, UsuarioActual.CveEmpresa) Then
Dim dtContratodetalleControl As DataTable = ObjContratos.DtResultados.FiltraParametros(String.Format("CvePS = {0}", DdlPS.SelectedValue.ToString))
If dtContratodetalleControl IsNot Nothing AndAlso dtContratodetalleControl.Rows.Count > 0 Then
Dim drContratoDetalleControl As DataRow = dtContratodetalleControl(0)
If TxtCantidad.Text.Trim.ToDouble > drContratoDetalleControl("FaltanteCantidad").ToString.ToDouble Then
Mensaje = String.Format("La cantidad del Producto/Servicio debe ser menor o igual a {0}", drContratoDetalleControl("FaltanteCantidad").ToString)
TieneError = True
End If
Else
Mensaje = "Este producto no pertenece al contrato seleccionado."
TieneError = True
End If
Else
Mensaje = "Error al consultar el contrato."
End If
End If
Else
Mensaje = "Este producto no pertenece al contrato seleccionado."
TieneError = True
End If
Else
Mensaje = "Error al consultar el contrato."
End If Dim DrPS = dttemp.NewRow
DrPS("CveSubProyecto") = DdlSubProyecto.SelectedValue.ToString.ToEntero
DrPS("CvePS") = DdlPS.SelectedValue.ToString.ToEntero
DrPS("Cantidad") = TxtCantidad.Text.Trim.ToDecimal
DrPS("PU") = TxtPrecio.Text.Trim.ToDecimal
dttemp.Rows.Add(DrPS)
Dim dtPSInvalidos As String = ValidarPSContrato(dttemp)
If dtPSInvalidos <> "" Then
TieneError = True
End If End If
'If dttemp IsNot Nothing AndAlso dttemp.Rows.Count > 0 Then
' Dim drContrato As DataRow = dttemp.Rows(0)
' If ObjContratos.GetContratosDetalle(drContrato("CveContrato").ToString.ToEntero) Then
' Dim dtContratodetalle As DataTable = ObjContratos.DtResultados.FiltraParametros(String.Format("CvePS = {0}", DdlPS.SelectedValue.ToString))
' If dtContratodetalle IsNot Nothing AndAlso dtContratodetalle.Rows.Count > 0 Then
' Dim drContratoDetalle As DataRow = dtContratodetalle(0)
' If Convert.ToBoolean(drContratoDetalle("LimitarCantidad")) Then
' If ObjContratos.GetReporteContratosAvancesDetalleControl(drContrato("CveContrato").ToString.ToEntero, UsuarioActual.CveEmpresa) Then
' Dim dtContratodetalleControl As DataTable = ObjContratos.DtResultados.FiltraParametros(String.Format("CvePS = {0}", DdlPS.SelectedValue.ToString))
' If dtContratodetalleControl IsNot Nothing AndAlso dtContratodetalleControl.Rows.Count > 0 Then
' Dim drContratoDetalleControl As DataRow = dtContratodetalleControl(0)
' If TxtCantidad.Text.Trim.ToDouble > drContratoDetalleControl("FaltanteCantidad").ToString.ToDouble Then
' Mensaje = String.Format("La cantidad del Producto/Servicio debe ser menor o igual a {0}", drContratoDetalleControl("FaltanteCantidad").ToString)
' TieneError = True
' End If
' Else
' Mensaje = "Este producto no pertenece al contrato seleccionado."
' TieneError = True
' End If
' Else
' Mensaje = "Error al consultar el contrato."
' End If
' End If
' Else
' Mensaje = "Este producto no pertenece al contrato seleccionado."
' TieneError = True
' End If
' Else
' Mensaje = "Error al consultar el contrato."
' End If
'End If
ObjContratos.Dispose() ObjContratos.Dispose()
If Not TieneError Then If Not TieneError Then
Select Case Modalidad Select Case Modalidad
@@ -18181,9 +18201,10 @@ Partial Class Compras_Compras
GuardaAC() GuardaAC()
End If End If
Else Else
Alert(Mensaje, TipoMensaje.MsgAdvertencia) Alert(dtPSInvalidos, TipoMensaje.MsgAdvertencia)
End If End If
'If UsuarioActual.Empresa.Funcionalidad(577).ToString = "1" Then 'If UsuarioActual.Empresa.Funcionalidad(577).ToString = "1" Then
' 'If UsuarioActual.CveRol = 1 Then ' 'If UsuarioActual.CveRol = 1 Then
@@ -20777,7 +20798,7 @@ Partial Class Compras_Compras
DdlContratosObra.Items.Clear() DdlContratosObra.Items.Clear()
DdlContratosObra.DataSource = GlobalDTContratos.FiltraParametros(String.Format($"CveContratoTipo in (30,31) AND CveEmpresa = {UsuarioActual.CveEmpresa}")) DdlContratosObra.DataSource = GlobalDTContratos(UsuarioActual.CveEmpresa).FiltraParametros(String.Format($"CveContratoTipo in (30,31) AND CveEmpresa = {UsuarioActual.CveEmpresa}"))
DdlContratosObra.DataBind() DdlContratosObra.DataBind()
DdlContratosObra.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlContratosObra.Items.Insert(0, New ListItem("Seleccione", "-1"))
@@ -20894,6 +20915,41 @@ Partial Class Compras_Compras
End If End If
End Sub End Sub
Private Function ValidarPSContrato(DtPS As DataTable) As String
Dim Retorno As String = ""
Dim objContratos As New ClsContratos
Dim TempPS As String = JsonConvert.SerializeObject(DtPS).ToString
Dim MensajeProducto As String = ""
Dim MensajeCantidad As String = ""
Dim MensajeImporte As String = ""
If objContratos.ValidaPSContrato(TempPS) Then
If objContratos.DtResultados.Rows.Count > 0 Then
MensajeProducto = "Los siguientes productos no pertenece al contrato seleccionado: "
MensajeCantidad = "Los siguientes productos sobrepasan la cantidad faltante del contrato seleccionado: "
MensajeImporte = "Los siguientes productos sobrepasan los importes faltantes del contrato seleccionado: "
For Each dr As DataRow In objContratos.DtResultados.Rows
If dr("ProductoNoContratado").ToString.ToEntero = 1 Then
MensajeProducto += String.Format("<br/> {0}", dr("PS"))
ElseIf dr("CantidadSobrePasada").ToString.ToEntero = 1 Then
MensajeCantidad += String.Format("<br/> {0} - Cantidad maxima: {1}", dr("PS"), dr("FaltanteCantidad"))
ElseIf dr("ImporteSobrePasado").ToString.ToEntero = 1 Then
MensajeImporte += String.Format("<br/> {0} - Importe maximo: {1}", dr("PS"), dr("FaltanteImporte"))
End If
Next
End If
End If
If MensajeProducto.Length <> 64 Then
Retorno = MensajeProducto
ElseIf MensajeCantidad.Length <> 84 Then
Retorno = MensajeCantidad
ElseIf MensajeImporte.Length <> 86 Then
Retorno = MensajeImporte
End If
Return Retorno
End Function
#End Region #End Region