diff --git a/App_Code/ClsContratos.vb b/App_Code/ClsContratos.vb index 85d9d1e0d..30857a704 100644 --- a/App_Code/ClsContratos.vb +++ b/App_Code/ClsContratos.vb @@ -383,7 +383,7 @@ Public Class ClsContratos Optional CveContratosEstatus As Integer = -1, Optional CveContratoTipo As Integer = -1, Optional TipoCambio As Double = 1.0, Optional CveSucursalCliente As Integer = -1, Optional CveAlmacenOrigen As Integer = -1, Optional CveAlmacenDestino As Integer = -1, Optional PorcentajeComision As Integer = -1, Optional TipoGarantia As Integer = -1, Optional Folio As Integer = -1, Optional FechaVenc As Date = Nothing, Optional EstatusFianza As Integer = -1, Optional CveContratoPlantilla As Integer = -1, Optional CveCuentaEquipo As Integer = -1, Optional CveVendedor As Integer = -1, Optional Observaciones As String = "", Optional CveDireccionEnvio As Integer = -1, Optional AplicaImpuestosLocales As Boolean = False, Optional CorreoNotificacionPedDev As String = "", Optional FacturacionCicilica As Boolean = False, Optional FacturacionCiclicaAutomatico As Boolean = False, - Optional DiaMesFacturacion As Integer = 1) As Boolean + Optional DiaMesFacturacion As Integer = 1, Optional CvePeriodo As Integer = -1) As Boolean Dim Retorno = False DataAdapter("PA_Con_ContratosUpdate") @@ -436,7 +436,8 @@ Public Class ClsContratos .Add("@CorreoNotificacionPedDev", SqlDbType.VarChar).Value = CorreoNotificacionPedDev .Add("@FacturacionCicilica", SqlDbType.Bit).Value = FacturacionCicilica .Add("@FacturacionCiclicaAutomatico", SqlDbType.Bit).Value = FacturacionCiclicaAutomatico - .Add("@DiaMesFacturacion", SqlDbType.TinyInt).Value = DiaMesFacturacion + .Add("@DiaMesFacturacion", SqlDbType.TinyInt).Value = DiaMesFacturacion + .Add("@CvePeriodo", SqlDbType.Int).Value = CvePeriodo End With Try @@ -728,7 +729,7 @@ Public Class ClsContratos Return Retorno End Function - Public Function CicloComercialUpdate(CveCicloComercial As Integer, FueFacturado As Boolean, CveEmpresa As Integer) As Boolean + Public Function CicloComercialUpdate(CveCicloComercial As Integer, FueFacturado As Boolean, CveEmpresa As Integer, Optional CveVenta As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Con_CicloComercialUpdate") @@ -736,6 +737,7 @@ Public Class ClsContratos .Add("@FueFacturado", SqlDbType.Bit).Value = FueFacturado .Add("@CveCicloComercial", SqlDbType.Int).Value = CveCicloComercial .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + .Add("@CveVenta", SqlDbType.Int).Value = CveVenta End With Try @@ -1003,13 +1005,13 @@ Public Class ClsContratos Return Retorno End Function - Public Function AddContratosAvance(CveContratoDetalle As Integer, Cantidad As Double, Fecha As DateTime, CveUsuario As Integer, Optional CveEstimacion As Integer = -1) As Boolean + Public Function AddContratosAvance(CveContratoDetalle As Integer, Cantidad As Double, Fecha As Date, CveUsuario As Integer, Optional CveEstimacion As Integer = -1) As Boolean Dim Retorno = False DataAdapter("PA_Con_ContratosAvanceAdd") With SqlAdapter.SelectCommand.Parameters .Add("@CveContratoDetalle", SqlDbType.Int).Value = CveContratoDetalle .Add("@Cantidad", SqlDbType.Int).Value = Cantidad - .Add("@Fecha", SqlDbType.Date).Value = Fecha.ToString("yyyy/MM/dd") + .Add("@Fecha", SqlDbType.Date).Value = Fecha .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario .Add("@CveEstimacion", SqlDbType.Int).Value = CveEstimacion End With @@ -1076,9 +1078,32 @@ Public Class ClsContratos End Try Return Retorno - End Function + End Function #End Region + +#Region "ESTIMACION" + + Public Function GetContratosAvanceEstimacion(CveContrato As Integer, CveEmpresa As Integer) As Boolean + Dim Retorno = False + DataAdapter("PA_Con_ContratosAvanceEstimacionGet") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveContrato", SqlDbType.Int).Value = CveContrato + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al cargar los avances del Contrato.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + + Return Retorno + End Function + +#End Region + #Region " S E C C I O N E S " Public Function GetSecciones() As Boolean Dim Retorno As Boolean = False diff --git a/App_Code/ClsInventarios.vb b/App_Code/ClsInventarios.vb index f2b494a2e..fd1d81437 100644 --- a/App_Code/ClsInventarios.vb +++ b/App_Code/ClsInventarios.vb @@ -1589,6 +1589,58 @@ Public Class ClsInventarios End Function + Public Function GetExistenciasCaducidad(CvePS As Integer, CveAlmacen As Integer, CveUsuario As Integer, CveEmpresa As Integer, Optional CveAlmacenes As String = "-1") As Boolean + Dim Retorno As Boolean = False + + DataAdapter("PA_Inv_ExistenciaCaducidadGet") + + With SqlAdapter.SelectCommand.Parameters + .Add("@CvePS", SqlDbType.Int).Value = CvePS + .Add("@CveAlmacen", SqlDbType.VarChar).Value = CveAlmacen + .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + .Add("@CveAlmacenes", SqlDbType.VarChar).Value = CveAlmacenes + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch Ex1 As SqlException + + Me.OnError("Ocurrió un error al obtener el kardex de almacen.", Ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + + Catch ex As Exception + OnError("Ocurrió un error al obtener el kardex de almacen.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + + End Function + + Public Function GetProductosCaducidad(CveProveedor As Integer, FechaInicio As Date, FechaFin As Date, CveSubProyecto As Integer, CveClasificacion As Integer) As Boolean + Dim Retorno As Boolean = False + + DataAdapter("PA_Inv_ProductosCaducidadGet") + + With SqlAdapter.SelectCommand.Parameters + .Add("@CveProveedor", SqlDbType.Int).Value = CveProveedor + .Add("@FechaInicio", SqlDbType.Date).Value = FechaInicio + .Add("@FechaFin", SqlDbType.Date).Value = FechaFin + .Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto + .Add("@CveClasificacion", SqlDbType.Int).Value = CveClasificacion + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al obtener el listo de caducidad de productos.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + + End Function + #End Region #Region " INVENTARIOS - REPORTES " @@ -5208,13 +5260,13 @@ Public Class ClsInventarios Return Retorno End Function - Public Function DeleteMovimientosProyectados(TipoMovto As Integer) As Boolean + Public Function DeleteMovimientosProyectados(TipoMovto As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("Inv_MovimientosProyectadosDelete") With SqlAdapter.SelectCommand.Parameters .Add("@TipoMovto", SqlDbType.TinyInt).Value = TipoMovto - + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa End With Try diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 8fe10c062..82bb1cb39 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -38,14 +38,14 @@ Public Class ClsPaginas - Public ReadOnly Property EsProduccion As Boolean - Get - If IsNothing(System.Configuration.ConfigurationManager.AppSettings("EsProduccion")) Then - Return False - Else - Return (System.Configuration.ConfigurationManager.AppSettings("EsProduccion").ToString() = "1") - End If - End Get + Public ReadOnly Property EsProduccion As Boolean + Get + If IsNothing(System.Configuration.ConfigurationManager.AppSettings("EsProduccion")) Then + Return False + Else + Return (System.Configuration.ConfigurationManager.AppSettings("EsProduccion").ToString() = "1") + End If + End Get End Property #Region "Propiedades" @@ -3783,6 +3783,7 @@ Public Class ClsPaginas PaginaDict.Add("/Contratos/Contrato2.aspx".ToUpper(), -1) PaginaDict.Add("/Flotillas/CatMantenimientos.aspx".ToUpper(), -1) PaginaDict.Add("/Inventarios/PaqueteDetalles.aspx".ToUpper(), -1) + PaginaDict.Add("/Inventarios/RepProductosPorCaducar.aspx".ToUpper(), 693) diff --git a/App_Code/ClsProductosServicios.vb b/App_Code/ClsProductosServicios.vb index 9d400ef08..f809ab9d8 100644 --- a/App_Code/ClsProductosServicios.vb +++ b/App_Code/ClsProductosServicios.vb @@ -56,8 +56,8 @@ Public Class ClsProductosServicios Public Property CveMetodoInventario As Integer Public Property CveTipoPS As Integer Public Property Estado2 As Integer - Public Property CveMarca As Integer - + Public Property CveMarca As Integer + Public Property IEPSPorcentaje As Double Public Property AplicaIEPS As Boolean @@ -202,11 +202,11 @@ Public Class ClsProductosServicios CveConexion = 0 End If - End Sub + End Sub #End Region - Public Function GetPS(CvePS As Integer, CveClasificacion As Integer, CveEmpresa As Integer, Optional Codigo As String = "-1", Optional Codigo2 As String = "-1", - Optional CodigoBarras As String = "-1", Optional PS As String = "-1", Optional EsPaquete As Integer = -1, Optional CveSubProyecto As Integer = -1, - Optional pAplicaParaVenta As Integer = -1, Optional pEstado As Integer = -1, Optional CveClasificacionCosto As Integer = -1, Optional CveTipoPS As Integer = -1, + Public Function GetPS(CvePS As Integer, CveClasificacion As Integer, CveEmpresa As Integer, Optional Codigo As String = "-1", Optional Codigo2 As String = "-1", + Optional CodigoBarras As String = "-1", Optional PS As String = "-1", Optional EsPaquete As Integer = -1, Optional CveSubProyecto As Integer = -1, + Optional pAplicaParaVenta As Integer = -1, Optional pEstado As Integer = -1, Optional CveClasificacionCosto As Integer = -1, Optional CveTipoPS As Integer = -1, Optional CveCompuesto As Integer = -1, Optional SATClavePS As String = "-1", Optional TopSelect As Integer = 10000) As Boolean Dim Retorno As Boolean = False @@ -404,7 +404,7 @@ Public Class ClsProductosServicios Optional CveFraccionArancelaria As Integer = -1, Optional CveClasificacionDetalle As Integer = -1, Optional CveTamaño As Integer = -1, Optional CveModelo As Integer = -1, Optional CveMedida As Integer = -1, Optional CveRinTamaño As Integer = -1, Optional ClaveImpuestoEmpaque As String = "", Optional ClaveImpuestoUM As String = "", Optional ClaveCategoriaToxicidad As String = "", Optional ClaveImpuestoTipoProducto As String = "", Optional Litraje As Double = -1, Optional EsOutSourcing As Boolean = False, Optional AplicaSerie As Boolean = False, Optional AplicaLote As Boolean = False, - Optional AplicaCaducidad As Boolean = False, Optional AplicaSeccion As Boolean = False) As Integer + Optional AplicaCaducidad As Boolean = False, Optional AplicaSeccion As Boolean = False, Optional TiempoCaducidad As Integer = -1) As Integer Dim Retorno As Integer = -1 DataAdapter("PA_ProductosServiciosAdd") @@ -483,6 +483,7 @@ Public Class ClsProductosServicios .Add("@AplicaLote", SqlDbType.Bit).Value = AplicaLote .Add("@AplicaCaducidad", SqlDbType.Bit).Value = AplicaCaducidad .Add("@AplicaSeccion", SqlDbType.Bit).Value = AplicaSeccion + .Add("@TiempoCaducidad", SqlDbType.SmallInt).Value = TiempoCaducidad End With Try @@ -629,7 +630,7 @@ Public Class ClsProductosServicios Optional CveFraccionArancelaria As Integer = -1, Optional CveUsuarioModifico As Integer = -1, Optional CveClasificacionDetalle As Integer = -1, Optional CveTamaño As Integer = -1, Optional CveModelo As Integer = -1, Optional CveMedida As Integer = -1, Optional CveRinTamaño As Integer = -1, Optional ClaveImpuestoEmpaque As String = "", Optional ClaveImpuestoUM As String = "", Optional ClaveCategoriaToxicidad As String = "", Optional ClaveImpuestoTipoProducto As String = "", Optional Litraje As Double = -1, Optional EsOutSourcing As Boolean = False, - Optional AplicaSerie As Boolean = False, Optional AplicaLote As Boolean = False, Optional AplicaCaducidad As Boolean = False, Optional AplicaSeccion As Boolean = False) As Boolean + Optional AplicaSerie As Boolean = False, Optional AplicaLote As Boolean = False, Optional AplicaCaducidad As Boolean = False, Optional AplicaSeccion As Boolean = False, Optional TiempoCaducidad As Integer = -1) As Boolean Dim Retorno As Boolean = False @@ -710,6 +711,7 @@ Public Class ClsProductosServicios .Add("@AplicaLote", SqlDbType.Bit).Value = AplicaLote .Add("@AplicaCaducidad", SqlDbType.Bit).Value = AplicaCaducidad .Add("@AplicaSeccion", SqlDbType.Bit).Value = AplicaSeccion + .Add("@TiempoCaducidad", SqlDbType.SmallInt).Value = TiempoCaducidad End With Try @@ -1683,10 +1685,10 @@ Public Class ClsProductosServicios End Try Return Retorno - End Function + End Function #End Region - - + + #Region "Precios Lista" Public Function GetPSPreciosLista(CveEmpresa As Integer, CvePrecioLista As Integer, Optional CveClasificacion As Integer = -1, Optional CvePS As Integer = -1, Optional CveProveedor As Integer = -1, Optional Estado As Integer = -1, Optional Marcas As String = "-1", Optional CveModelo As Integer = -1) As Boolean @@ -1844,7 +1846,7 @@ Public Class ClsProductosServicios End Try Return Retorno - End Function + End Function Public Function GetPSExistenciasWS(CvePS As Integer, CvePrecioLista As Integer, CveUnidadMedida As Integer, CveEmpresa As Integer, CveAlmacen As Integer, Optional CveSeccionAlmacen As Integer = -1, Optional CveTipoAlmacen As Integer = -1, Optional CveSubProyecto As Integer = -1, Optional FechaMovto As String = "-1", Optional Serie As String = "-1", Optional CveVendedor As Integer = -1, Optional CveCliente As Integer = -1, @@ -1853,38 +1855,38 @@ Public Class ClsProductosServicios Dim Retorno As Boolean = False DataAdapter("PA_Vta_ProductosExistenciasWSGet") - With SqlAdapter.SelectCommand.Parameters - .Add("@CvePS", SqlDbType.Int).Value = CvePS - .Add("@CvePrecioLista", SqlDbType.Int).Value = CvePrecioLista - .Add("@CveUnidadMedida", SqlDbType.Int).Value = CveUnidadMedida - .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa - .Add("@CveAlmacen", SqlDbType.Int).Value = CveAlmacen - .Add("@CveSeccionAlmacen", SqlDbType.Int).Value = CveSeccionAlmacen - .Add("@CveTipoAlmacen", SqlDbType.Int).Value = CveTipoAlmacen - .Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto - .Add("@FechaMovto", SqlDbType.DateTime).Value = DateTime.ParseExact(FechaMovto, "yyyy/MM/dd HH:mm", Nothing) - .Add("@Serie", SqlDbType.VarChar).Value = Serie - .Add("@Lote", SqlDbType.VarChar).Value = Lote - .Add("@Batch", SqlDbType.VarChar).Value = Batch - .Add("@CveVendedor", SqlDbType.Int).Value = CveVendedor - .Add("@CveCliente", SqlDbType.Int).Value = CveCliente - .Add("@ExcluyeAdelantado", SqlDbType.Int).Value = ExcluyeAdelantado - .Add("@PendientePorSurtir", SqlDbType.Int).Value = PendientePorSurtir - .Add("@ExcluyeApartados", SqlDbType.Int).Value = ExcluyeApartados - .Add("@RestringirAlmacenes", SqlDbType.Int).Value = RestringirAlmacenes - End With + With SqlAdapter.SelectCommand.Parameters + .Add("@CvePS", SqlDbType.Int).Value = CvePS + .Add("@CvePrecioLista", SqlDbType.Int).Value = CvePrecioLista + .Add("@CveUnidadMedida", SqlDbType.Int).Value = CveUnidadMedida + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + .Add("@CveAlmacen", SqlDbType.Int).Value = CveAlmacen + .Add("@CveSeccionAlmacen", SqlDbType.Int).Value = CveSeccionAlmacen + .Add("@CveTipoAlmacen", SqlDbType.Int).Value = CveTipoAlmacen + .Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto + .Add("@FechaMovto", SqlDbType.DateTime).Value = DateTime.ParseExact(FechaMovto, "yyyy/MM/dd HH:mm", Nothing) + .Add("@Serie", SqlDbType.VarChar).Value = Serie + .Add("@Lote", SqlDbType.VarChar).Value = Lote + .Add("@Batch", SqlDbType.VarChar).Value = Batch + .Add("@CveVendedor", SqlDbType.Int).Value = CveVendedor + .Add("@CveCliente", SqlDbType.Int).Value = CveCliente + .Add("@ExcluyeAdelantado", SqlDbType.Int).Value = ExcluyeAdelantado + .Add("@PendientePorSurtir", SqlDbType.Int).Value = PendientePorSurtir + .Add("@ExcluyeApartados", SqlDbType.Int).Value = ExcluyeApartados + .Add("@RestringirAlmacenes", SqlDbType.Int).Value = RestringirAlmacenes + End With Try SqlAdapter.Fill(Data) Retorno = True Catch ex As Exception OnError("Ocurrió un error al obtener las productos y sus existencias.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) - End Try - + End Try + Return Retorno - End Function - + End Function + #End Region - + #Region "Porcentaje Productos" Public Function GetPorcentajeProductos(CveCliente As Integer) As Boolean Dim Retorno As Boolean = False diff --git a/App_Code/ClsVentas.vb b/App_Code/ClsVentas.vb index e3bb58624..6a4739cf8 100644 --- a/App_Code/ClsVentas.vb +++ b/App_Code/ClsVentas.vb @@ -107,40 +107,40 @@ Public Class ClsVentas Data = New DataTable End Sub -#Region "Conexiones" +#Region "Conexiones" - Private Sub ConexionAdd() - If Not EsTransaccionCompartida AndAlso ConfigurationManager.AppSettings("RegistraConexion") IsNot Nothing AndAlso ConfigurationManager.AppSettings("RegistraConexion").ToString() = "1" Then + Private Sub ConexionAdd() + If Not EsTransaccionCompartida AndAlso ConfigurationManager.AppSettings("RegistraConexion") IsNot Nothing AndAlso ConfigurationManager.AppSettings("RegistraConexion").ToString() = "1" Then Try DataAdapter("PA_Sis_RegistrarConexion") With SqlAdapter.SelectCommand.Parameters .Add("@Clase", SqlDbType.VarChar).Value = Me.GetType().Name .Add("@Modulo", SqlDbType.VarChar).Value = String.Format("{0}?{1}", HttpContext.Current.Request.Url.AbsolutePath.ToString, HttpContext.Current.Request.QueryString.ToString) .Add("@IDConexion", SqlDbType.Int).Direction = ParameterDirection.Output - End With - SqlAdapter.Fill(Data) - CveConexion = SqlAdapter.SelectCommand.Parameters("@IDConexion").Value.ToString.ToEntero - Catch ex As Exception - OnError("Ocurrió un error registrar la conexión.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) - End Try - - End If - End Sub - - Private Sub ConexionClose() - If CveConexion > 0 AndAlso ConfigurationManager.AppSettings("RegistraConexion") IsNot Nothing AndAlso ConfigurationManager.AppSettings("RegistraConexion").ToString() = "1" Then - - DataAdapter(String.Format("UPDATE Sis_Conexiones SET FechaCierre = GETDATE() WHERE CveConexion = {0}", CveConexion), CommandType.Text) - - Try - SqlAdapter.Fill(Data) - - Catch ex As Exception - OnError("Ocurrió un error registrar la conexión.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) - End Try - CveConexion = 0 - End If - + End With + SqlAdapter.Fill(Data) + CveConexion = SqlAdapter.SelectCommand.Parameters("@IDConexion").Value.ToString.ToEntero + Catch ex As Exception + OnError("Ocurrió un error registrar la conexión.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + End If + End Sub + + Private Sub ConexionClose() + If CveConexion > 0 AndAlso ConfigurationManager.AppSettings("RegistraConexion") IsNot Nothing AndAlso ConfigurationManager.AppSettings("RegistraConexion").ToString() = "1" Then + + DataAdapter(String.Format("UPDATE Sis_Conexiones SET FechaCierre = GETDATE() WHERE CveConexion = {0}", CveConexion), CommandType.Text) + + Try + SqlAdapter.Fill(Data) + + Catch ex As Exception + OnError("Ocurrió un error registrar la conexión.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + CveConexion = 0 + End If + End Sub #End Region @@ -462,7 +462,7 @@ Public Class ClsVentas Optional TipoDocto As String = "Cot", Optional Vigencia As Date = MinFecha, Optional CondicionesPago As Integer = -1, Optional AtencionA As String = "-1", Optional PedidoContrato As String = "-1", Optional CveFormaPago33 As Integer = -1, Optional CveMetodoPago33 As Integer = -1, Optional CveCliente As Integer = -1, Optional CveClienteSucursal As Integer = -1, Optional OrdenCompra As String = "-1", Optional RetIVA As Double = -1, - Optional RetISR As Double = -1, Optional Kilometraje As Double = 0) As Boolean + Optional RetISR As Double = -1, Optional Kilometraje As Double = 0, Optional CveUsoCFDi As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Vta_VentasUpdate") @@ -493,6 +493,7 @@ Public Class ClsVentas .Add("@CveClienteSucursal", SqlDbType.Int).Value = CveClienteSucursal .Add("@OrdenCompra", SqlDbType.VarChar).Value = OrdenCompra .Add("@Kilometraje", SqlDbType.Float).Value = Kilometraje + .Add("@CveUsoCFDi", SqlDbType.SmallInt).Value = CveUsoCFDi End With Try diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index 2f8750b96..0ed55e76e 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -855,7 +855,7 @@ Namespace Modelos End If If CveCicloComercial > 0 AndAlso ErrorList.Count = 0 Then - If Not ObjContr.CicloComercialUpdate(Me.CveCicloComercial, True, UsuarioActual.CveEmpresa) Then + If Not ObjContr.CicloComercialUpdate(Me.CveCicloComercial, True, UsuarioActual.CveEmpresa, CveVenta:=CveVenta) Then ErrorList.Add("No se pudo actualizar ") End If End If diff --git a/Ashx/SIGFacturacionCiclica.ashx b/Ashx/SIGFacturacionCiclica.ashx new file mode 100644 index 000000000..ca832ce20 --- /dev/null +++ b/Ashx/SIGFacturacionCiclica.ashx @@ -0,0 +1,709 @@ +<%@ WebHandler Language="VB" Class="SIGFacturacionCiclica" %> +'Option Explicit On +'Option Strict On + +Imports System +Imports System.Web +Imports System.Data +Imports Newtonsoft.Json.Linq +Imports Extensiones +Imports System.IO +Imports Microsoft.AspNet.SignalR + +Public Class SIGFacturacionCiclica : Implements IHttpHandler, IRequiresSessionState + Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest + context.Response.ContentType = "text/plain" + Dim retorno = False + Try + If context.Request("Metodo") IsNot Nothing Then + Select Case context.Request("Metodo") + Case "EjecutaServicio" + ModExtensiones.GuardaLogAD("Servicio Ejecutado...........", "LogFacturacionCiclica") + retorno = IniciaFacturacionMasiva() + End Select + + End If + + Catch ex As Exception + ex.GuardaLog(ex.Message) + End Try + + If retorno Then + context.Response.Write("True") + Else + context.Response.Write("False") + End If + End Sub + + Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable + Get + Return False + End Get + End Property + + Private Function Parametros(Cadena As String) As Hashtable + Dim P1() As String = Cadena.Split("&"c) + Dim Tmp As String + Dim P2() As String + + Dim URLParametros As New Hashtable + + For Each Tmp In P1 + P2 = Tmp.Replace("%26%", "&").Split("="c) + URLParametros.Add(P2(0).ToString.ToUpper, P2(1)) + Next + Return URLParametros + End Function + +#Region "V A L I D A - D A T O S" + Private Function ValidaUsuarioSistema(CveEmpresa As Integer) As Usuario + Dim UsuarioActual As Usuario = Nothing + Dim ObjUsuarios As New ClsSisUsuarios + If ObjUsuarios.GetUsuarios(100) Then + If ObjUsuarios.DtResultados.Rows.Count > 0 Then + Dim Usuario = ObjUsuarios.DtResultados.Rows(0)("Usuario").ToString() + Dim Contrasenia = ObjUsuarios.DtResultados.Rows(0)("Contraseña").ToString() + UsuarioActual = ObjUsuarios.ValidaUsuario(Usuario, Contrasenia, IMEI, CveEmpresa) + UsuarioActual.CveEmpresa = CveEmpresa + CreaObjetoEmpresa(UsuarioActual) + End If + End If + ObjUsuarios.Dispose() + Return UsuarioActual + End Function + Private Sub CreaObjetoEmpresa(ByRef UsuarioActual As Usuario) + + Dim ObjEmpresa As New ClsSisEmpresas() + If ObjEmpresa.GetEmpresas(UsuarioActual.CveEmpresa, "-1", "-1", "-1", "-1") Then + If ObjEmpresa.GetEmpresasFuncionalidades(UsuarioActual.CveEmpresa) Then + Dim dttmp As Data.DataTable = ObjEmpresa.DtResultados + + Dim EmpresasFuncionalidades As New HybridDictionary + For Each Row As Data.DataRow In dttmp.Rows + EmpresasFuncionalidades.Add(Convert.ToInt32(Row("CveFuncionalidad")), Row("Valor").ToString) + Next + ObjEmpresa.Empresa.SetFuncionalidades(EmpresasFuncionalidades) + End If + + UsuarioActual.Empresa = ObjEmpresa.Empresa + End If + ObjEmpresa.Dispose() + End Sub + +#End Region + + Private Function IniciaFacturacionMasiva() As Boolean + Dim Retorno As Boolean = True + Dim FechaRef As DateTime = DateTime.Now + Dim DTCicloComercial As DataTable = Nothing + + Using ObjContratos As New ClsContratos + If ObjContratos.CicloComercialGet(-1, -1, -1, -1, FechaRef, FechaRef, -1) Then + DTCicloComercial = ObjContratos.DtResultados.FiltraParametros("FueFacturado = 0 AND FacturacionCiclicaAutomatico = 1") + End If + End Using + + If DTCicloComercial IsNot Nothing Then + For Each RowEmpresa As DataRow In DTCicloComercial.FiltraParametros("", DistinctColumns:={"CveEmpresa"}).Rows + Dim CveEmpresa As Integer = RowEmpresa("CveEmpresa").ToString().ToEntero() + Dim UsuarioActual = ValidaUsuarioSistema(CveEmpresa) + If UsuarioActual IsNot Nothing Then + Retorno = EjecutarFacturacionMasiva(UsuarioActual, DTCicloComercial.FiltraParametros($"CveEmpresa = {CveEmpresa}")) + End If + Next + End If + + Return Retorno + End Function + + Private Function EjecutarFacturacionMasiva(UsuarioActual As Usuario, DTCicloComercial As DataTable) As Boolean + Dim Retorno As Boolean = False + + If DTCicloComercial IsNot Nothing Then + For Each Row As DataRow In DTCicloComercial.Rows + + If Row("Observaciones").ToString().Contains("{DIA}") Then + Row("Observaciones") = Row("Observaciones").ToString().Replace("{DIA}", DateTime.Now.Day.ToString()) + End If + + If Row("Observaciones").ToString().Contains("{MES}") Then + Dim fecha As DateTime = DateTime.Now + Dim formatoFecha = Globalization.CultureInfo.CurrentCulture.DateTimeFormat + Dim nombreMes = formatoFecha.GetMonthName(fecha.Month).ToUpper() + + Row("Observaciones") = Row("Observaciones").ToString().Replace("{MES}", nombreMes) + End If + + If Row("Observaciones").ToString().Contains("{AÑO}") Then + Row("Observaciones") = Row("Observaciones").ToString().Replace("{AÑO}", DateTime.Now.Year.ToString()) + End If + + If Row("Observaciones").ToString().Contains("{TC}") Then + Row("Observaciones") = Row("Observaciones").ToString().Replace("{TC}", GlobalTipoCambio(Now).FormatoNumero) + End If + + Dim Resp = EmitirImprimir(UsuarioActual, Row) + + If Resp.CveVenta > 0 Then + Retorno = True + End If + + Next + + End If + + Return Retorno + End Function + + Private Function EmitirImprimir(UsuarioActual As Usuario, RowCiclo As DataRow) As Modelos.Factura.MMensajeFactura + Dim Resp As New Modelos.Factura.MMensajeFactura + + Dim ObjFactura = CreaObjetosVenta(UsuarioActual, RowCiclo) + + If ObjFactura Is Nothing Then + Resp.Mensajes.Add("Ocurrió un error al procesar los datos de la Venta ") + ObjFactura = Nothing + Return Resp + End If + + If ObjFactura.CveCliente > 0 Then + If ObjFactura.DtDetalle.Rows.Count > 0 Then + Resp = ObjFactura.EmitirFactura() + Else + Resp.Mensajes.Add("No se pudo completar facturación por que no se encontraron partidas ") + End If + Else + Resp.Mensajes.Add("No se pudo completar facturación por que no se encontraro el cliente ") + End If + + Return Resp + End Function + +#Region "P R E P A R A - V E N T A" + Private Function CreaDTVentas() As DataTable + Dim TmpDT = New DataTable + TmpDT.Columns.Add("CveVenta", GetType(Integer)) + TmpDT.Columns.Add("Consec", GetType(Integer)) + TmpDT.Columns.Add("Cantidad", GetType(Decimal)) + TmpDT.Columns.Add("Codigo", GetType(String)) + TmpDT.Columns.Add("CveUM", GetType(Integer)) + TmpDT.Columns.Add("UM", GetType(String)) + TmpDT.Columns.Add("SATClaveUM", GetType(String)) + TmpDT.Columns.Add("CveClasificacion", GetType(Integer)) + TmpDT.Columns.Add("Clasificacion", GetType(String)) + TmpDT.Columns.Add("CvePS", GetType(Integer)) + TmpDT.Columns.Add("PS", GetType(String)) + TmpDT.Columns.Add("CodigoPS", GetType(String)) + TmpDT.Columns.Add("SATClaveProdServ", GetType(String)) + TmpDT.Columns.Add("NoIdentificacion", GetType(String)) + TmpDT.Columns.Add("CveTipoPS", GetType(Integer)) + TmpDT.Columns.Add("CveTipoInvPS", GetType(Integer)) + TmpDT.Columns.Add("Serie", GetType(String)) + TmpDT.Columns.Add("CuentaPredial", GetType(String)) + TmpDT.Columns.Add("Obs", GetType(String)) + TmpDT.Columns.Add("TiempoEntrega", GetType(String)) + TmpDT.Columns.Add("PU", GetType(Decimal)) + TmpDT.Columns.Add("IVA", GetType(Decimal)) + TmpDT.Columns.Add("ImporteIVA", GetType(Decimal)) + TmpDT.Columns.Add("PorcentajeIVA", GetType(Decimal)) + TmpDT.Columns.Add("ImporteRetIVA", GetType(Decimal)) + TmpDT.Columns.Add("ImporteRetISR", GetType(Decimal)) + TmpDT.Columns.Add("PorcentajeRetIVA", GetType(Decimal)) + TmpDT.Columns.Add("PorcentajeRetISR", GetType(Decimal)) + TmpDT.Columns.Add("ImporteIEPS", GetType(Decimal)) + TmpDT.Columns.Add("IEPS", GetType(Decimal)) + TmpDT.Columns.Add("PorcentajeIEPS", GetType(Decimal)) + TmpDT.Columns.Add("Descuento", GetType(Decimal)) + TmpDT.Columns.Add("TipoDescuento", GetType(Integer)) + TmpDT.Columns.Add("TotalImporte", GetType(Decimal)) + TmpDT.Columns.Add("Total", GetType(Decimal)) + 'Para uso del módulo contable + TmpDT.Columns.Add("AsientoContableVentas", GetType(Integer)) + TmpDT.Columns.Add("IdCtaContVentas", GetType(Integer)) + TmpDT.Columns.Add("AplicaParaConcepto", GetType(Boolean)) + TmpDT.Columns.Add("CveProyecto", GetType(Integer)) + TmpDT.Columns.Add("Proyecto", GetType(String)) + TmpDT.Columns.Add("CveSubProyecto", GetType(Integer)) + TmpDT.Columns.Add("SubProyecto", GetType(String)) + TmpDT.Columns.Add("CveVentaDetallePadre", GetType(Integer)) + + 'TipoDescuento: 1 = Descuento * PU; 2 = Descuento por Total del concepto + TmpDT.Columns.Add("CvePresupuestoIngreso", GetType(Integer)) + TmpDT.Columns.Add("CveFuenteRecaudacion", GetType(Integer)) + 'Contratos + TmpDT.Columns.Add("CveContratoDetalle", GetType(Integer)) + 'Remisiones a Facturas + TmpDT.Columns.Add("CveVentaDetalle", GetType(Integer)) + TmpDT.Columns.Add("CveVentaDetalleRemision", GetType(Integer)) + TmpDT.Columns.Add("CveVentaDetalleCotizacion", GetType(Integer)) + + 'Pedido2 a Facturas + TmpDT.Columns.Add("CveVentaDetallePedido2", GetType(Integer)) + + TmpDT.Columns.Add("Origen", GetType(Integer)) + 'Ordenes Servicio + TmpDT.Columns.Add("CveOS", GetType(Integer)) + TmpDT.Columns.Add("CveOSDetalle", GetType(Integer)) + TmpDT.Columns.Add("SeFacturara", GetType(Integer)) + TmpDT.Columns.Add("Folio", GetType(Integer)) + TmpDT.Columns.Add("Estatus", GetType(String)) + 'Ordenamiento + TmpDT.Columns.Add("Orden", GetType(Integer)) + TmpDT.Columns.Add("TipoDocto", GetType(String)) + 'OC + TmpDT.Columns.Add("CveOrdenCompraDetalle", GetType(Integer)) + TmpDT.Columns.Add("EntregaDirecta", GetType(Integer)) + + TmpDT.Columns.Add("CveMovimientoDetallePedido", GetType(Integer)) + TmpDT.Columns.Add("CantidadFacturadaRem", GetType(Decimal)) + TmpDT.Columns.Add("CantidadFacturadaCot", GetType(Decimal)) + TmpDT.Columns.Add("CantidadFacturadaPed2", GetType(Decimal)) + TmpDT.Columns.Add("CantidadInventario", GetType(Decimal)) + + TmpDT.Columns.Add("ClaveSATFraccionArancelaria", GetType(String)) + TmpDT.Columns.Add("ClaveSATUnidadAduana", GetType(String)) + TmpDT.Columns.Add("ClaveSATFraccionArancelariaDescripcion", GetType(String)) + TmpDT.Columns.Add("ClaveSATUnidadAduanaDescripcion", GetType(String)) + + TmpDT.Columns.Add("CveTamaño", GetType(Integer)) + TmpDT.Columns.Add("EsCargo", GetType(Boolean)) + + Return TmpDT + End Function + Private Function CreaObjetosVenta(UsuarioActual As Usuario, DR As DataRow) As Modelos.Factura + Dim ObjFactura = New Modelos.Factura(UsuarioActual) + Try + ObjFactura.DirectorioServidor = HttpContext.Current.Server.MapPath("/") + + Dim CveProyecto As String = "" + Dim CveSubProyecto As String = "" + Dim Proyecto As String = "" + Dim SubProyecto As String = "" + Dim CveCicloComercial = DR("CveCicloComercial").ToString().ToEntero() + + ObjFactura.CveCicloComercial = CveCicloComercial + + Dim TmpDT As DataTable = CreaDTVentas() + + ObjFactura.Version = "3.3" + ObjFactura.CveUsuario = UsuarioActual.CveUsuario + ObjFactura.CveEmpresa = UsuarioActual.CveEmpresa + ObjFactura.ConvertirPesos = False + ObjFactura.CveMoneda = DR("CveMoneda").ToString.ToEntero + ObjFactura.Moneda = GlobalDTMonedas.FiltroPrimeroValor("Moneda", $"CveMoneda = {ObjFactura.CveMoneda} ") + ObjFactura.MonedaSAT = GlobalDTMonedas.FiltroPrimeroValor("AbreviaturaSAT", $"CveMoneda = {DR("CveMoneda").ToString.ToEntero}") + ObjFactura.TipoCambio = If(ObjFactura.CveMoneda = 1, 1, GlobalTipoCambio(Now)) + ObjFactura.TipoDocto = "Ing" + ObjFactura.RefDocto = "" + ObjFactura.Folio = -1 + ObjFactura.Serie = "-1" + ObjFactura.CveMesa = -1 + ObjFactura.Fecha = DR("FechaVenc").ToString.ToDate + ObjFactura.CvePrePoliza = -1 + ObjFactura.CveMetodoPago = 1 + ObjFactura.MetodoPago = "Efectivo" + ObjFactura.FechaPago = DateTime.Today + ObjFactura.MotivoDescuento = "" + ObjFactura.Observaciones = DR("Observaciones").ToString + ObjFactura.FechaEjecucion = DateTime.Today + 'ObjFactura.ClaveMetodoPagoSAT = GlobalDTMetodosPago.FiltroPrimeroValor("ClaveSAT", $"CveMetodoPago = {1}") + ObjFactura.UsuarioCreo = UsuarioActual.Usuario + ObjFactura.CveCondicionEntrega = -1 + ObjFactura.CondicionEntrega = "" + ObjFactura.NumeroCuenta = "" + 'ObjFactura.CveSucursal = GlobalDTSucursales.FiltroPrimeroValor("CveSucursal", $"CveEmpresa = {UsuarioActual.CveEmpresa}").ToEntero + 'ObjFactura.Cliente.NumCtaPago = TxtNumCtaPago.Text.Trim + ObjFactura.CondicionesPago = 0 + ObjFactura.FormaPago = 0 + 'ObjFactura.SerieFolio = String.Format("{0}-{1}", LblSerie.Text, TxtFolio.Text) + ObjFactura.PedidoContrato = "" + ObjFactura.NumeroContrato = DR("NumeroContrato").ToString + ObjFactura.DescripcionContrato = DR("DescripcionContrato").ToString + ObjFactura.CveCorte = -1 + ObjFactura.TipoDocumento = "Factura" + ObjFactura.Alfa1 = "" + ObjFactura.Alfa2 = "" + ObjFactura.Alfa3 = "" + 'Totales, Y se llena TmpDTImpuestos + ObjFactura.Descuento = 0 + ObjFactura.Amortizacion = 0 + ObjFactura.CveContrato = DR("CveContrato").ToString.ToEntero + CveProyecto = DR("CveProyecto").ToString + Proyecto = DR("ProyectoContrato").ToString + CveSubProyecto = DR("CveSubProyecto").ToString + ObjFactura.CveSubProyecto = CveSubProyecto.ToEntero + ObjFactura.CveSubProyectoCobranza = CveSubProyecto.ToEntero + ObjFactura.CveSubProyectoEjecucion = CveSubProyecto.ToEntero + + ObjFactura.SubProyecto = New Modelos.SubProyectoModel(GlobalDTSubProyectos(-1).FiltroPrimero(String.Format("CveSubProyecto = {0}", ObjFactura.CveSubProyecto))) + ObjFactura.SubProyectoMatriz = New Modelos.SubProyectoModel(GlobalDTSubProyectos(-1, CveSubProyecto:=-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero("TipoSucursal=1")) + + + SubProyecto = DR("SubProyectoContrato").ToString + + Dim DtDetalle As DataTable = Nothing + Dim objContratos As New ClsContratos + If objContratos.GetContratosDetalle(DR("CveContrato").ToString.ToEntero) Then + DtDetalle = objContratos.DtResultados + Else + DtDetalle = Nothing + End If + objContratos.Dispose() + + Dim DtR As DataRow + ObjFactura.SubTotal = SUM(DtDetalle, "Total").ToDecimal + ObjFactura.IVA = SUM(DtDetalle, "ImporteIVA").ToDecimal + ObjFactura.RetIVA = SUM(DtDetalle, "ImporteRetIVA").ToDecimal + ObjFactura.RetISR = SUM(DtDetalle, "ImporteRetISR").ToDecimal + ObjFactura.IEPS = SUM(DtDetalle, "ImporteIEPS").ToDecimal + ObjFactura.Total = ObjFactura.SubTotal + ObjFactura.IVA + ObjFactura.IEPS - (ObjFactura.RetIVA + ObjFactura.RetISR) + + For Each row As DataRow In DtDetalle.Rows + Dim drPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=row("CvePS").ToString().ToEntero()).FiltroPrimero("") + + DtR = TmpDT.NewRow + DtR("CveVenta") = -1 + DtR("Codigo") = row("Codigo") + DtR("Consec") = TmpDT.Rows.Count + 1 + DtR("Cantidad") = row("CantidadContratada") + DtR("CveUM") = row("CveUM") + DtR("UM") = row("UM") + DtR("SATClaveUM") = row("SATClaveUM") + DtR("CveClasificacion") = row("CveClasificacion") + DtR("Clasificacion") = row("Clasificacion") + DtR("CvePS") = row("CvePS") + DtR("PS") = row("PS") + DtR("CodigoPS") = row("CodigoPS") + DtR("SATClaveProdServ") = row("SATClaveProdServ") + DtR("NoIdentificacion") = row("NoIdentificacion") + DtR("CveTipoPS") = drPS("CveTipoPS") + DtR("CveTipoInvPS") = drPS("Inv_CveMetodoInventario") + DtR("Obs") = row("Observacion").ToString + DtR("PU") = row("PU") + DtR("IVA") = row("PorcentajeIVA") + DtR("PorcentajeIVA") = row("PorcentajeIVA") + DtR("ImporteIVA") = row("ImporteIVA") + DtR("PorcentajeIEPS") = row("PorcentajeIEPS") + DtR("ImporteIEPS") = row("ImporteIEPS") + DtR("PorcentajeRetIVA") = row("PorcentajeRetIVA") + DtR("ImporteRetIVA") = row("ImporteRetIVA") + DtR("PorcentajeRetISR") = row("PorcentajeRetISR") + DtR("ImporteRetISR") = row("ImporteRetISR") + DtR("Descuento") = 0 + DtR("TipoDescuento") = 0 + DtR("CveProyecto") = CveProyecto + DtR("Proyecto") = Proyecto + DtR("CveSubProyecto") = CveSubProyecto + DtR("SubProyecto") = SubProyecto + DtR("CveVentaDetalle") = 0 + DtR("CveContratoDetalle") = row("CveContratoDetalle") + DtR("CuentaPredial") = row("CuentaPredial") + DtR("TotalImporte") = row("Total") + + TmpDT.Rows.Add(DtR) + Next + + 'DETALLES + ObjFactura.DtDetalle = TmpDT + + 'CLIENTE + ObjFactura.CveCliente = DR("CveCliente").ToString.ToEntero + ObjFactura.SetCliente() + + Dim ObjCliente As New ClsClientes + If ObjCliente.GetClientes(ObjFactura.CveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa, -1, TipoCliente:=-1) Then + If ObjCliente.DtResultados.Rows.Count > 0 Then + ObjFactura.CveFormaPago33 = ObjCliente.CveFormaPago33 + ObjFactura.FormaPago33 = GlobalDTVtaFormaPago.FiltroPrimeroValor("FormaPago", String.Format("CveFormaPago = {0}", ObjCliente.CveFormaPago33)) + ObjFactura.FormaPagoSAT33 = GlobalDTVtaFormaPago.FiltroPrimeroValor("ClaveFormaPagoSAT", String.Format("CveFormaPago = {0}", ObjCliente.CveFormaPago33)) + + ObjFactura.CveMetodoPago33 = ObjCliente.CveMetodoPago33 + ObjFactura.MetodoPago33 = GlobalDTVtaMetodoPago.FiltroPrimeroValor("MetodoPago", String.Format("CveMetodoPago = {0}", ObjCliente.CveMetodoPago33)) + ObjFactura.ClaveMetodoPagoSAT = GlobalDTVtaMetodoPago.FiltroPrimeroValor("ClaveMetodoPagoSAT", String.Format("CveMetodoPago = {0}", ObjCliente.CveMetodoPago33)) + + ObjFactura.CveUsoCFDI = ObjCliente.CveUsoCFDI + ObjFactura.UsoCFDI = GlobalDTSATUsosCFDI.FiltroPrimeroValor("Descripcion", String.Format("CveUsoCFDI = {0}", ObjCliente.CveUsoCFDI)) + ObjFactura.ClaveUsoCFDI = GlobalDTSATUsosCFDI.FiltroPrimeroValor("UsoCFDI", String.Format("CveUsoCFDI = {0}", ObjCliente.CveUsoCFDI)) + + ObjFactura.CveMetodoPago = ObjCliente.CveMetodoPago + + If GlobalDTMetodosPago.FiltraParametros(String.Format("CveMetodoPago = {0}", ObjCliente.CveMetodoPago)).Rows.Count > 0 Then + ObjFactura.MetodoPago = GlobalDTMetodosPago.FiltraParametros(String.Format("CveMetodoPago = {0}", ObjCliente.CveMetodoPago)).Rows(0)("MetodoPago").ToString + Else + ObjFactura.CveMetodoPago = 1 + ObjFactura.MetodoPago = "Efectivo" + End If + End If + End If + + If ObjCliente.GetSucursales(ObjFactura.CveCliente) Then + If ObjCliente.DtResultados.Rows.Count > 0 Then + ObjFactura.CveClienteSucursal = If(String.IsNullOrEmpty(ObjCliente.DtResultados.FiltroPrimeroValor("CveClienteSucursal", "Estatus = 'Activo'")), -1, ObjCliente.DtResultados.FiltroPrimeroValor("CveClienteSucursal", "Estatus = 'Activo'").ToEntero()) + Else + ObjFactura.CveClienteSucursal = -1 + End If + End If + ObjCliente.Dispose() + + 'SUBPROYECTO + 'ObjFactura.SetSubProyectoMatriz(Me) + 'ObjFactura.SetSubProyecto(Me) + + ObjFactura.Timbre = PreParaTimbre(ObjFactura, UsuarioActual) + Catch ex As Exception + ObjFactura = Nothing + OnError("Ocurrió un error al generar la factura", ex) + End Try + + + Return ObjFactura + + End Function + + Private Function PreParaTimbre(Obj As Modelos.Factura, UsuarioActual As Usuario) As CFDITimbre + Dim Timbre As New CFDITimbre + Timbre.Comprobante.TipoComprobante = If(Obj.TipoDocto.Contiene("Ing", "Ant"), "I", If(Obj.TipoDocto.Contiene("Egs", "Dev"), "E", "")) + Timbre.Comprobante.Folio = Obj.Folio.ToString + Timbre.Comprobante.Serie = Obj.Serie + Timbre.Comprobante.Fecha = Obj.FechaCP + Timbre.Comprobante.FormadePago = Obj.FormaPagoSAT33 + Timbre.Comprobante.CondicionesdePago = Obj.FormaPago33 + Timbre.Comprobante.MetodoPago = Obj.ClaveMetodoPagoSAT + Timbre.Comprobante.Subtotal = Obj.SubTotal + Timbre.Comprobante.Descuentos = Obj.Descuento + Timbre.Comprobante.Moneda = Obj.MonedaSAT + Timbre.Comprobante.TipoCambio = If(Obj.CveMoneda = 1, "1", Obj.TipoCambio.ToString) + Timbre.Comprobante.Total = Obj.Total + + Timbre.Comprobante.LugarExpedicion = Obj.SubProyecto.CP + Timbre.Comprobante.Confirmacion = "" + + Timbre.Receptor.RFC = Obj.Cliente.RFC + Timbre.Receptor.Nombre = Obj.Cliente.Nombre + Timbre.Receptor.ResidenciaFiscal = "" + Timbre.Receptor.NumeroRegistroTributario = "" + Timbre.Receptor.UsoCFDI = Obj.ClaveUsoCFDI + + + If Obj.CveTipoRelacion > 0 Then + Select Case Obj.CveTipoRelacion + Case 1 + Timbre.CFDIRelacionados.TipoRelacion = "01" + Timbre.CFDIRelacionados.TipoRelacionTexto = "01-Nota de Crédito aplicada a Ingreso" + Case 2 + Timbre.CFDIRelacionados.TipoRelacion = "02" + Timbre.CFDIRelacionados.TipoRelacionTexto = "02-Nota de débito de los documentos relacionados" + Case 3 + Timbre.CFDIRelacionados.TipoRelacion = "03" + Timbre.CFDIRelacionados.TipoRelacionTexto = "03-Devolución aplicada a Ingreso" + Case 4 + Timbre.CFDIRelacionados.TipoRelacion = "04" + Timbre.CFDIRelacionados.TipoRelacionTexto = "04-Refacturación de Ingreso" + Case 7 + Timbre.CFDIRelacionados.TipoRelacion = "07" + Timbre.CFDIRelacionados.TipoRelacionTexto = "07-CFDI por aplicación de anticipo" + Case 8 + Timbre.CFDIRelacionados.TipoRelacion = "08" + Timbre.CFDIRelacionados.TipoRelacionTexto = "08-Factura generada por pagos en parcialidades " + Case 9 + Timbre.CFDIRelacionados.TipoRelacion = "09" + Timbre.CFDIRelacionados.TipoRelacionTexto = "09-Factura generada por pagos diferidos" + + End Select + + 'If DtVentasNC IsNot Nothing AndAlso DtVentasNC.Rows.Count > 0 Then + ' For Each Dr As DataRow In DtVentasNC.Rows + ' Timbre.CFDIRelacionados.UUID.Add(Dr("FolioFiscal").ToString) + ' Next + 'Else + ' Timbre.CFDIRelacionados.UUID.Add(HdnFolioFiscalNC.Value) + 'End If + + End If + + + Dim totSubTotal As Decimal = Obj.SubTotal + Dim totIVA As Decimal = Obj.IVA + Dim totRetIVA As Decimal = Obj.RetIVA + Dim totRetISR As Decimal = Obj.RetISR + Dim i As Integer = 1 + + 'detalles + Dim tPS As String = "" + + For Each drr As DataRow In Obj.DtDetalle.Rows + If drr("PS").ToString.Length = 1 Then + tPS = drr("Obs").ToString + Else + If drr("PS").ToString.Length = 0 Then + tPS = "" + Else + tPS = String.Format("{0} {1}", drr("PS"), drr("Obs")) + End If + End If + 'condicionante, especial + If UsuarioActual.CveEmpresa = 15 Then drr("UM") = "" ' les comentan que no debe de ir la etiqueta de "unidad" en el producto + + Dim concepto As New CFDIConceptos With {.Cantidad = drr("Cantidad").ToString.ToDecimal, + .Descripcion = tPS, + .ValorUnitario = drr("PU").ToString.ToDecimal, + .Importe = drr("TotalImporte").ToString.ToDecimal, + .Descuento = drr("Descuento").ToString.ToDecimal, + .Unidad = drr("UM").ToString, + .ClaveUnidad = drr("SATClaveUM").ToString, + .ClaveProdServ = drr("SATClaveProdServ").ToString, + .Noidentificacion = drr("Noidentificacion").ToString, + .CuentaPredial = drr("CuentaPredial").ToString} + 'verifica suma subtotales + If i = Obj.DtDetalle.Rows.Count AndAlso totSubTotal <> concepto.Importe Then 'proceso de ajusta de decimales + concepto.Importe = totSubTotal + End If + totSubTotal = totSubTotal - concepto.Importe + + 'siempre estaremos agregando el iva, auqnue sea en importe cero o tasa cero, para que se emita la factura + ' If drr("ImporteIVA").ToString.ToDouble > 0 Then + concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "T", .Base = concepto.Importe - concepto.Descuento, .TasaOCuota = drr("PorcentajeIVA").ToString.ToDecimal, .Impuesto = "002", .Importe = drr("ImporteIVA").ToString.ToDecimal}) + ' End If + + If drr("ImporteIEPS").ToString.ToDouble > 0 Then + concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "T", .Base = concepto.Importe - concepto.Descuento, .TasaOCuota = drr("PorcentajeIEPS").ToString.ToDecimal, .Impuesto = "003", .Importe = drr("ImporteIEPS").ToString.ToDecimal}) + End If + + If drr("ImporteRetIVA").ToString.ToDouble > 0 Then 'si hay retenciones + concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "R", .Base = concepto.Importe - concepto.Descuento, .TasaOCuota = drr("PorcentajeRetIVA").ToString.ToDecimal, .Impuesto = "002", .Importe = drr("ImporteRetIVA").ToString.ToDecimal}) + End If + + If drr("ImporteRetISR").ToString.ToDouble > 0 Then 'retención de ISR + concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "R", .Base = concepto.Importe - concepto.Descuento, .TasaOCuota = drr("PorcentajeRetISR").ToString.ToDecimal, .Impuesto = "001", .Importe = drr("ImporteRetISR").ToString.ToDecimal}) + End If + + Timbre.Conceptos.Add(concepto) + i += 1 + Next + Return Timbre + End Function +#End Region + + +#Region "G L O B A L - D T" + Public Property GlobalTipoCambio(Optional Fecha As Date = MinFecha) As Double + Get + If GlobalTipoCambio <= 0 Then + 'sino tiene dato lo recargo por si ya esta insertado + If Fecha = MinFecha Then Fecha = Now + + Dim ObjGral As New ClsGenerales + If ObjGral.GetTipoCambio(-1, Fecha) AndAlso ObjGral.DtResultados.Rows.Count > 0 Then + + HttpContext.Current.Application("GlobalTipoCambio") = ObjGral.DtResultados.Rows(0)("TipoCambio").ToString.ToDouble + Else + HttpContext.Current.Application("GlobalTipoCambio") = 0 + End If + ObjGral.Dispose() + + End If + + Return HttpContext.Current.Application("GlobalTipoCambio").ToString.ToDouble + End Get + Set(value As Double) + HttpContext.Current.Application("GlobalTipoCambio") = value + End Set + + End Property + Property GlobalDTMonedas() As DataTable + Get + GlobalDTMonedas = DirectCast(HttpContext.Current.Application("GlobalDTMonedas"), DataTable) + End Get + Set(value As DataTable) + HttpContext.Current.Application("GlobalDTMonedas") = value + End Set + End Property + ReadOnly Property GlobalDTPS(CveEmpresa As Integer, Optional CvePS As Integer = -1, Optional SATClavePS As String = "-1", Optional AplicaParaVenta As Integer = -1, Optional Estatus As Integer = -1, Optional Codigo As String = "-1") As DataTable + Get + Dim ObjPS As New ClsProductosServicios + + If ObjPS.GetPS(CvePS, -1, CveEmpresa, Codigo:=Codigo, SATClavePS:=SATClavePS, pAplicaParaVenta:=AplicaParaVenta, pEstado:=Estatus) Then + GlobalDTPS = ObjPS.DtResultados + Else + GlobalDTPS = Nothing + End If + + ObjPS.Dispose() + End Get + End Property + Public Property GlobalDTVtaFormaPago() As DataTable + Get + GlobalDTVtaFormaPago = DirectCast(HttpContext.Current.Application("GlobalDTVtaFormaPago"), DataTable) + End Get + Set(value As DataTable) + HttpContext.Current.Application("GlobalDTVtaFormaPago") = value + End Set + End Property + Property GlobalDTVtaMetodoPago() As DataTable + Get + GlobalDTVtaMetodoPago = DirectCast(HttpContext.Current.Application("GlobalDTVtaMetodoPago"), DataTable) + End Get + Set(value As DataTable) + HttpContext.Current.Application("GlobalDTVtaMetodoPago") = value + End Set + End Property + Property GlobalDTSATUsosCFDI(Optional EsPersonaFisica As Integer = -1) As DataTable + Get + If EsPersonaFisica <> -1 Then + Dim Tipo As String = "" + If EsPersonaFisica = 1 Then Tipo = "AplicaPersonaFisica = 1" Else Tipo = "AplicaPersonaMoral = 1" + + Dim Dv As New DataView(DirectCast(HttpContext.Current.Application("GlobalDTSATUsosCFDI"), DataTable), Tipo, " UsoCFDIDescripcion", DataViewRowState.CurrentRows) + GlobalDTSATUsosCFDI = Dv.ToTable + Dv.Dispose() + Else + GlobalDTSATUsosCFDI = DirectCast(HttpContext.Current.Application("GlobalDTSATUsosCFDI"), DataTable) + End If + + End Get + Set(ByVal value As DataTable) + HttpContext.Current.Application("GlobalDTSATUsosCFDI") = value + End Set + End Property + + Property GlobalDTMetodosPago() As DataTable + Get + GlobalDTMetodosPago = DirectCast(HttpContext.Current.Application("GlobalDTMetodosPago"), DataTable) + End Get + Set(value As DataTable) + HttpContext.Current.Application("GlobalDTMetodosPago") = value + End Set + End Property + Public Property GlobalDTSubProyectos(CveProyecto As Integer, Optional CveSubProyecto As Integer = -1, Optional CveEmpresa As Integer = -1, Optional Estatus As Integer = 1) As DataTable + Get + Dim AppNombre As String = String.Format("GlobalDTSubProyectos-{0}", CveEmpresa) + 'sino existe, recarga los datos + If DirectCast(HttpContext.Current.Application(AppNombre), DataTable) Is Nothing Or (DirectCast(HttpContext.Current.Application(AppNombre), DataTable) IsNot Nothing AndAlso DirectCast(HttpContext.Current.Application(AppNombre), DataTable).Rows.Count = 0) Then + Dim P As New ClsSubProyectos + If P.GetSubProyectos(CveEmpresa:=CveEmpresa) Then HttpContext.Current.Application(AppNombre) = P.DtResultados + P.Dispose() + End If + + If CveProyecto <> -1 OrElse CveSubProyecto <> -1 OrElse CveEmpresa <> -1 OrElse Estatus <> -1 Then + Dim StrSQL As New StringBuilder + If CveProyecto <> -1 Then StrSQL.AppendFormat(" AND CveProyecto = {0}", CveProyecto) + If CveSubProyecto <> -1 Then StrSQL.AppendFormat(" AND CveSubProyecto = {0}", CveSubProyecto) + If Estatus <> -1 Then StrSQL.AppendFormat(" AND CveEstatus = {0}", Estatus) + If CveEmpresa <> -1 Then StrSQL.AppendFormat(" AND CveEmpresa = {0}", CveEmpresa) + + Dim Dv As New DataView(DirectCast(HttpContext.Current.Application(AppNombre), DataTable), StrSQL.ToString.Trim.TrimStart("A"c, "N"c, "D"c), "", DataViewRowState.CurrentRows) + GlobalDTSubProyectos = Dv.ToTable + Dv.Dispose() + + Else + GlobalDTSubProyectos = DirectCast(HttpContext.Current.Application(AppNombre), DataTable) + End If + + End Get + Set(ByVal value As DataTable) + Dim AppNombre As String = String.Format("GlobalDTSubProyectos-{0}", CveEmpresa) + HttpContext.Current.Application(AppNombre) = value + End Set + End Property +#End Region +End Class \ No newline at end of file diff --git a/Bancos/ProveedoresAbonar.aspx.vb b/Bancos/ProveedoresAbonar.aspx.vb index 284b693e4..74ddb3d8c 100644 --- a/Bancos/ProveedoresAbonar.aspx.vb +++ b/Bancos/ProveedoresAbonar.aspx.vb @@ -3258,7 +3258,7 @@ Partial Class Bancos_ProveedoresAbonar ' Alert(alertaContabilizacion, ModExtensiones.TipoMensaje.MsgInformacion) Else - Alert("Ocurrio un error al contabilizar, pongase en contacto con Soporte Técnico", TipoMensaje.MsgError) + 'Alert("Ocurrio un error al contabilizar, pongase en contacto con Soporte Técnico", TipoMensaje.MsgError) MsgError = "Ocurrio un error al contabilizar, pongase en contacto con Soporte Técnico" End If diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 15d95c293..36819bc16 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -17669,7 +17669,7 @@ Partial Class Compras_Compras ViewState("IVAPS") = Drr("IVA").ToString().ToDouble() DdlProyecto.SelectedValueExist(Drr("CveProyecto")) - 'DdlIVA.Enabled = True + DdlIVA.Enabled = True If Not Modalidad = "U" Then @@ -17989,13 +17989,13 @@ Partial Class Compras_Compras Row("IEPSPSPorcentaje") = PorcentajeIEPS Else 'If DdlIVA.SelectedValue.ToDouble = 0 Then Row("IVA") = 0 Else Row("IVA") = Math.Round(IVA * Total, DecimalesPermitidos) - Row("IVA") = Math.Round(IVA * Total, DecimalesPermitidos) + Row("IVA") = Math.Round(IVA * Total, 2) Row("IVAPorcentaje") = IVA - Row("RetIVA") = Math.Round(RetIVA * Total, DecimalesPermitidos) + Row("RetIVA") = Math.Round(RetIVA * Total, 2) Row("RetIVAPorcentaje") = RetIVA - Row("RetISR") = Math.Round(RetISR * Total, DecimalesPermitidos) + Row("RetISR") = Math.Round(RetISR * Total, 2) Row("RetISRPorcentaje") = RetISR - Row("IEPSPS") = Math.Round(IEPSPS * Total, DecimalesPermitidos) + Row("IEPSPS") = Math.Round(IEPSPS * Total, 2) Row("IEPSPSPorcentaje") = IEPSPS End If Row("ImporteConImpuestos") = (Row("Cantidad").ToString.ToDouble * Row("PU").ToString.ToDouble) + Row("IVA").ToString.ToDouble + Row("IEPSPS").ToString.ToDouble - (Row("RetIVA").ToString.ToDouble + Row("RetISR").ToString.ToDouble) diff --git a/Compras/PopUpVerFactura.aspx.vb b/Compras/PopUpVerFactura.aspx.vb index 8dd046ff6..b4fdc4a72 100644 --- a/Compras/PopUpVerFactura.aspx.vb +++ b/Compras/PopUpVerFactura.aspx.vb @@ -1248,10 +1248,10 @@ Partial Class PopUpVerFactura Dim PuestoEnrego As String = ObjInventarios.PuestoEntrego Dim ResponsableCarga As String = ObjInventarios.ResponsableCarga Dim ResponsableRecibio As String = ObjInventarios.ResponsableRecibio + Dim UsuarioCapturo As String = ObjInventarios.DtResultados.FiltroPrimeroValor("UsuarioCapturo") If Recibio.Trim = "" Then Dim ObjRH As New ClsRH - If ObjRH.GetPersonal(ObjInventarios.CvePersonal, UsuarioActual.CveEmpresa) AndAlso ObjRH.DtResultados.Rows.Count > 0 Then Recibio = ObjRH.DtResultados.Rows(0)("NombreCompleto").ToString End If @@ -1276,7 +1276,9 @@ Partial Class PopUpVerFactura Dim CveMovimientoRelacionado As Integer = -1 Dim FolioRelacionado As String = "" - Dim CveConceptoMovtoRelacionado As Integer = -1 + Dim CveConceptoMovtoRelacionado As Integer = -1 + + Dim CveTipoAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveTipoAlmacen", $"CveAlmacen = {CveAlmacen}").ToString.ToEntero 'VERIFICA SI TIENE MOVIMIENTO VIRTUAL RELACIONADO If UsuarioActual.CveEmpresa = 140 AndAlso ObjInventarios.DtResultados.Rows.Count > 0 Then @@ -1285,6 +1287,9 @@ Partial Class PopUpVerFactura FolioRelacionado = ObjInventarios.DtResultados.FiltroPrimeroValor("FolioVirtual") CveConceptoMovtoRelacionado = 37 ElseIf CveConcepto.Contiene(36, 37) Then + FolioRelacionado = ObjInventarios.DtResultados.FiltroPrimeroValor("FolioRelacionado") + CveConceptoMovtoRelacionado = 3 + ElseIf CveConcepto.Contiene(2) AndAlso CveTipoAlmacen.Contiene(24, 25) Then FolioRelacionado = ObjInventarios.DtResultados.FiltroPrimeroValor("FolioRelacionado") CveConceptoMovtoRelacionado = 3 End If @@ -1316,7 +1321,7 @@ Partial Class PopUpVerFactura Dim CveTipoAlmacenRelacionado As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveTipoAlmacen", $"CveAlmacen = {CveAlmacenRelacionado}").ToString.ToEntero 'SI TIENE RELACIONADO UN MOVIMIENTO VIRTUAL DEBE AGREGAR ESTE MOVIMIENTO A LA IMPRESION - If CveTipoAlmacenRelacionado = 24 Then + If CveTipoAlmacenRelacionado.Contiene(24, 25) Then If ObjInventarios.GetMovimientosDetalle(CveMovimientoRelacionado, UsuarioActual.CveEmpresa) Then Dim DtUsados As DataTable = ObjInventarios.DtResultados.Copy() CantidadUsados = DtUsados.SUM("Cantidad").ToDecimal() @@ -1342,7 +1347,28 @@ Partial Class PopUpVerFactura End If End If - Dim CveTipoAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveTipoAlmacen", $"CveAlmacen = {CveAlmacen}").ToString.ToEntero + If UsuarioActual.CveEmpresa = 140 AndAlso CveCompra > 0 Then + If ObjInventarios.RecepcionAlmacenGet(CveCompra, -1, UsuarioActual.CveEmpresa) AndAlso ObjInventarios.DtResultados.Rows.Count > 0 Then + Dim DtFaltante As DataTable = ObjInventarios.DtResultados.FiltraParametros("CantidadF > 0") + If DtFaltante.Rows.Count > 0 Then + Dim SbPendientes As New StringBuilder + SbPendientes.AppendFormat("Los siguientes productos quedaron pendientes por recibir:") + For Each Row As DataRow In DtFaltante.Rows + SbPendientes.AppendFormat(" PS:{0} Cant.:{1:N0},", Row("CodigoPS"), Row("CantidadF")) + Next + SbPendientes.Remove(SbPendientes.Length - 1, 1) + + SbPendientes.AppendFormat(" Total Cant.:{0:N0}, Total Costo:{1:N2}", DtFaltante.SUM("CantidadF"), DtFaltante.SUM("Total")) + + If Not String.IsNullOrEmpty(Observaciones) Then + Observaciones = SbPendientes.ToString() + ".
" + Observaciones + Else + Observaciones = SbPendientes.ToString() + End If + End If + DtFaltante.Dispose() + End If + End If If CveTipoAlmacen = 20 Then CveConcepto = 24 @@ -1359,7 +1385,7 @@ Partial Class PopUpVerFactura MunicipioDestino, EstadoDestino, PaisDestino, CPDestino, FechaMovimiento, NombreCapturo, PuestoRecibio, PuestoEnrego, RazonSocial, ResponsableCarga, ResponsableRecibio, NombreCliente, CantidadProductos:=CantidadProductos, CantidadUsados:=CantidadUsados, CveTipoAlmacen:=CveTipoAlmacen, NombreEntrego:=NombreEntrego, - CveConceptoMovRelacionado:=CveConceptoMovtoRelacionado, FolioRelacionado:=FolioRelacionado) + CveConceptoMovRelacionado:=CveConceptoMovtoRelacionado, FolioRelacionado:=FolioRelacionado, UsuarioRegistro:=UsuarioCapturo) End Sub Private Sub PUanacExtr(CveMoneda As Integer) 'preciounitario a moneda nacional o extranjera @@ -1377,7 +1403,7 @@ Partial Class PopUpVerFactura EstadoOrigen As String, PaisOrigen As String, CPOrigen As String, CalleDestino As String, NoExtDestino As String, ColoniaDestino As String, LocalidadDestino As String, MunicipioDestino As String, EstadoDestino As String, PaisDestino As String, CPDestino As String, FechaMovimiento As Date, NombreCapturo As String, PuestoRecibio As String, PuestoEntrego As String, RazonSocial As String, ResponsableCarga As String, ResponsableRecibio As String, NombreCliente As String, Optional CantidadProductos As Decimal = 0, Optional CantidadUsados As Decimal = 0, - Optional CveTipoAlmacen As Integer = -1, Optional NombreEntrego As String = "", Optional CveConceptoMovRelacionado As Integer = -1, Optional FolioRelacionado As String = "") + Optional CveTipoAlmacen As Integer = -1, Optional NombreEntrego As String = "", Optional CveConceptoMovRelacionado As Integer = -1, Optional FolioRelacionado As String = "", Optional UsuarioRegistro As String = "") Select Case CveConcepto @@ -1527,6 +1553,7 @@ Partial Class PopUpVerFactura params.Add(New ReportParameter("IVA", If(CveCompra > 0 AndAlso dr IsNot Nothing, dr("IVA").ToString.FormatoNumero(2), ""))) params.Add(New ReportParameter("Total", If(CveCompra > 0 AndAlso dr IsNot Nothing, dr("Total").ToString.FormatoNumero(2), ""))) 'params.Add(New ReportParameter("NombreEntrego", String.Format("ENTREGÓ{0}{1}", vbCrLf, Capturo))) + params.Add(New ReportParameter("Observaciones", Observaciones)) params.Add(New ReportParameter("NombreRecibio", String.Format("RECIBIÓ{0}{1}", vbCrLf, Recibio))) params.Add(New ReportParameter("CveConceptoMovRelacionado", CveConceptoMovRelacionado.ToString())) params.Add(New ReportParameter("FolioRelacionado", FolioRelacionado)) @@ -1762,7 +1789,8 @@ Partial Class PopUpVerFactura params.Add(New ReportParameter("NombreRecibio", Recibio)) params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) params.Add(New ReportParameter("CveConceptoMovRelacionado", CveConceptoMovRelacionado.ToString())) - params.Add(New ReportParameter("FolioRelacionado", FolioRelacionado)) + params.Add(New ReportParameter("FolioRelacionado", FolioRelacionado)) + params.Add(New ReportParameter("UsuarioRegistro", UsuarioRegistro)) ImprimirPDF(UsuarioActual.Empresa.Ruta & "Formatos/Salidas.rdlc", DtMovimientos, params, String.Format("Salida de Almacen - {0}", Folio.ToString), RDSName:="DsInventarios") Else @@ -2550,19 +2578,19 @@ Partial Class PopUpVerFactura If (UsuarioActual.CveEmpresa = 72) Then params.Add(New ReportParameter("DomicilioFiscal", DomicilioFiscalCompu)) End If - ImprimirPDF(UsuarioActual.Empresa.Ruta & "Formatos/SalidasGarantia.rdlc", DtMovimientos, params, String.Format("SalidaGarantia{0}", Folio.ToString), RDSName:="DsInventarios") - 'Else - ' params.Add(New ReportParameter("Folio", Folio)) - ' params.Add(New ReportParameter("Fecha", Fecha)) - ' params.Add(New ReportParameter("Almacen", Almacen)) - ' params.Add(New ReportParameter("SubProyecto", SubProyecto)) - ' params.Add(New ReportParameter("Observaciones", Observaciones)) - ' params.Add(New ReportParameter("NombreEntrego", String.Format("ENTREGÓ{0}{1}", vbCrLf, Capturo))) - ' params.Add(New ReportParameter("NombreRecibio", String.Format("RECIBIÓ{0}{1}", vbCrLf, Recibio))) - ' ImprimirPDF(UsuarioActual.Empresa.Ruta & "Formatos/Salidas.rdlc", DtMovimientos, params, String.Format("Salida de Almacen - {0}", Folio.ToString), RDSName:="DsInventarios") - 'End If - - + ImprimirPDF(UsuarioActual.Empresa.Ruta & "Formatos/SalidasGarantia.rdlc", DtMovimientos, params, String.Format("SalidaGarantia{0}", Folio.ToString), RDSName:="DsInventarios") + 'Else + ' params.Add(New ReportParameter("Folio", Folio)) + ' params.Add(New ReportParameter("Fecha", Fecha)) + ' params.Add(New ReportParameter("Almacen", Almacen)) + ' params.Add(New ReportParameter("SubProyecto", SubProyecto)) + ' params.Add(New ReportParameter("Observaciones", Observaciones)) + ' params.Add(New ReportParameter("NombreEntrego", String.Format("ENTREGÓ{0}{1}", vbCrLf, Capturo))) + ' params.Add(New ReportParameter("NombreRecibio", String.Format("RECIBIÓ{0}{1}", vbCrLf, Recibio))) + ' ImprimirPDF(UsuarioActual.Empresa.Ruta & "Formatos/Salidas.rdlc", DtMovimientos, params, String.Format("Salida de Almacen - {0}", Folio.ToString), RDSName:="DsInventarios") + 'End If + + Case 18 'D E V O L U C I O N D E L C L I E N T E Dim Archivo As New System.IO.FileInfo(String.Format("{0}Formatos/DevolucionCliente.rdlc", UsuarioActual.Empresa.Ruta)) Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) @@ -2739,36 +2767,36 @@ Partial Class PopUpVerFactura ImprimirPDF(Archivo, DtMovimientos, params, String.Format("Salida por Prestamo - {0}", Folio.ToString), RDSName:="DsInventarios") ElseIf CveConcepto = 22 Then ImprimirPDF(Archivo, DtMovimientos, params, String.Format("Entrada por Prestamo - {0}", Folio.ToString), RDSName:="DsInventarios") - End If - - 'Case 22 'ENTRADA POR PRESTAMO - ' Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) - ' Dim params As New List(Of ReportParameter) - - ' Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) - ' If Imagen.Exists Then - ' params.Add(New ReportParameter("LogoPath", logouri)) - ' Else - ' params.Add(New ReportParameter("LogoPath", "")) - ' End If - - ' params.Add(New ReportParameter("Empresa", UsuarioActual.Empresa.Empresa)) - ' params.Add(New ReportParameter("Concepto", "Entrada por Prestamo")) - ' params.Add(New ReportParameter("Almacen", Almacen)) - ' params.Add(New ReportParameter("Fecha", Fecha)) - ' params.Add(New ReportParameter("FechaImpresion", DateTime.Now.ToString("dd/MM/yyyy"))) - ' params.Add(New ReportParameter("Folio", Folio)) - ' params.Add(New ReportParameter("Descuentos", "")) - ' params.Add(New ReportParameter("IVA", "")) - ' params.Add(New ReportParameter("Total", "")) - ' 'params.Add(New ReportParameter("NombreEntrego", String.Format("ENTREGÓ{0}{1}", vbCrLf, Capturo))) - ' params.Add(New ReportParameter("NombreRecibio", String.Format("RECIBIÓ{0}{1}", vbCrLf, Recibio))) - ' params.Add(New ReportParameter("FacturadoA", NombreCliente)) - ' If (UsuarioActual.CveEmpresa = 72) Then - ' params.Add(New ReportParameter("DomicilioFiscal", DomicilioFiscalCompu)) - ' End If - ' ImprimirPDF("Empresas/Grales/Formatos/EntradaSalida.rdlc", DtMovimientos, params, String.Format("Entrada por Prestamo - {0}", Folio.ToString), RDSName:="DsInventarios") - + End If + + 'Case 22 'ENTRADA POR PRESTAMO + ' Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) + ' Dim params As New List(Of ReportParameter) + + ' Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) + ' If Imagen.Exists Then + ' params.Add(New ReportParameter("LogoPath", logouri)) + ' Else + ' params.Add(New ReportParameter("LogoPath", "")) + ' End If + + ' params.Add(New ReportParameter("Empresa", UsuarioActual.Empresa.Empresa)) + ' params.Add(New ReportParameter("Concepto", "Entrada por Prestamo")) + ' params.Add(New ReportParameter("Almacen", Almacen)) + ' params.Add(New ReportParameter("Fecha", Fecha)) + ' params.Add(New ReportParameter("FechaImpresion", DateTime.Now.ToString("dd/MM/yyyy"))) + ' params.Add(New ReportParameter("Folio", Folio)) + ' params.Add(New ReportParameter("Descuentos", "")) + ' params.Add(New ReportParameter("IVA", "")) + ' params.Add(New ReportParameter("Total", "")) + ' 'params.Add(New ReportParameter("NombreEntrego", String.Format("ENTREGÓ{0}{1}", vbCrLf, Capturo))) + ' params.Add(New ReportParameter("NombreRecibio", String.Format("RECIBIÓ{0}{1}", vbCrLf, Recibio))) + ' params.Add(New ReportParameter("FacturadoA", NombreCliente)) + ' If (UsuarioActual.CveEmpresa = 72) Then + ' params.Add(New ReportParameter("DomicilioFiscal", DomicilioFiscalCompu)) + ' End If + ' ImprimirPDF("Empresas/Grales/Formatos/EntradaSalida.rdlc", DtMovimientos, params, String.Format("Entrada por Prestamo - {0}", Folio.ToString), RDSName:="DsInventarios") + Case 24 'SALIDA POR RESGUARDO If DtMovimientos(0)("CveTipoAlmacen").ToString.ToEntero = 20 Or DtMovimientos(0)("CveTipoAlmacen").ToString.ToEntero = 19 Then Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) @@ -3251,11 +3279,11 @@ Partial Class PopUpVerFactura If CveConcepto = 2 Then ElseIf CveConcepto = 3 Then End If - End Sub - - + End Sub + + #End Region - + #Region "OP = 'OC' - IMPRIME PDF OC" Private Sub ImprimePDFOC(CveOrdenCompra As Integer) Dim reporte As Byte() = NewGeneraBytesOC(CveOrdenCompra, ConBitacora:=(UsuarioActual.Empresa.Funcionalidad(119) = "1")) @@ -3848,7 +3876,7 @@ Partial Class PopUpVerFactura Dr("Abono") = 0 DtMovimientosPoliza.Rows.Add(Dr) End If - ElseIf UsuarioActual.CveEmpresa = 119 Then + ElseIf UsuarioActual.CveEmpresa.Contiene(119, 141) Then Dim PreP As New ClsContabilidad If PreP.GetPrePolizasDetalle(-1, CveIE) Then DtMovimientosPoliza = New DataTable @@ -3861,8 +3889,8 @@ Partial Class PopUpVerFactura For Each drt As DataRow In PreP.DtResultados.Rows Dim Dr = DtMovimientosPoliza.NewRow - Dr("CODIGO") = drt("ContpaqCodigo") - Dr("Cuenta") = drt("ContpaqCuenta") + Dr("CODIGO") = drt("CuentaCodigo") + Dr("Cuenta") = drt("CuentaNombre") Dr("Cargo") = If(drt("TipoMovto").ToString = "False", drt("ImporteMN"), "0") Dr("Abono") = If(drt("TipoMovto").ToString = "True", drt("ImporteMN"), "0") DtMovimientosPoliza.Rows.Add(Dr) diff --git a/Compras/eFacturas.aspx b/Compras/eFacturas.aspx index 3069747e7..68f11940b 100644 --- a/Compras/eFacturas.aspx +++ b/Compras/eFacturas.aspx @@ -214,7 +214,7 @@ - + @@ -555,7 +555,7 @@
diff --git a/Compras/eFacturas.aspx.vb b/Compras/eFacturas.aspx.vb index 7a44163ab..319d8a3b0 100644 --- a/Compras/eFacturas.aspx.vb +++ b/Compras/eFacturas.aspx.vb @@ -2697,17 +2697,36 @@ Partial Class Compras_eFacturas namespaces.AddNamespace(XMLDoc.DocumentElement.Prefix, "http://www.sat.gob.mx/cfd/3") namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital") - namespaces.AddNamespace("pago10", "http://www.sat.gob.mx/Pagos") + + ' namespaces.AddNamespace("pago10", "http://www.sat.gob.mx/Pagos") nodeComp = XMLDoc.SelectSingleNode(String.Format("//{0}:Complemento", XMLDoc.DocumentElement.Prefix), namespaces) + nodeaGral = XMLDoc.SelectSingleNode(String.Format("//{0}:Comprobante", XMLDoc.DocumentElement.Prefix), namespaces) nodeTFD = nodeComp.SelectSingleNode(String.Format("//{0}:TimbreFiscalDigital", "tfd"), namespaces) - nodePagos = nodeComp.SelectSingleNode(String.Format("//{0}:Pagos/{0}:Pago", "pago10"), namespaces) - nodePagos2 = nodeComp.SelectSingleNode(String.Format("//{0}:Pagos", "pago10"), namespaces) - 'Monto = ValorXML(nodePagos, "Monto").ToDecimal - Dim nodePago As XmlNodeList = nodePagos.SelectNodes(String.Format("//{0}:DoctoRelacionado", "pago10"), namespaces) + Dim PrefijoPagos As String = "" + + For Each nodoPrefijo As XmlNode In nodeComp.ChildNodes + If nodoPrefijo.Prefix <> "tfd" Then + PrefijoPagos = nodoPrefijo.Prefix + End If + Next + + namespaces.AddNamespace(PrefijoPagos, "http://www.sat.gob.mx/Pagos") + nodeComp = XMLDoc.SelectSingleNode(String.Format("//{0}:Complemento", XMLDoc.DocumentElement.Prefix), namespaces) + + + nodePagos = nodeComp.SelectSingleNode(String.Format("//{0}:Pagos/{0}:Pago", PrefijoPagos), namespaces) + nodePagos2 = nodeComp.SelectSingleNode(String.Format("//{0}:Pagos", PrefijoPagos), namespaces) + + + + + + + ' Dim nodePago As XmlNodeList = nodePagos.SelectNodes(String.Format("//{0}:DoctoRelacionado", "pago10"), namespaces) SeriePago = ValorXML(nodeaGral, "Serie") FolioPago = ValorXML(nodeaGral, "Folio") @@ -2735,11 +2754,12 @@ Partial Class Compras_eFacturas DTDocumentosRelacionados.Columns.Add("FechaPago", GetType(Date)) DTDocumentosRelacionados.Columns.Add("CveMetodoPago", GetType(Integer)) DTDocumentosRelacionados.Columns.Add("SerieFolioCompra") + DTDocumentosRelacionados.Columns.Add("CvePrePolizaDetalle", GetType(Integer)) Dim nodePagosN As XmlNodeList - nodePagosN = nodeComp.SelectNodes(String.Format("//{0}:Pagos", "pago10"), namespaces) + nodePagosN = nodeComp.SelectNodes(String.Format("//{0}:Pagos", PrefijoPagos), namespaces) @@ -2775,7 +2795,7 @@ Partial Class Compras_eFacturas Dim ObjCompraFolios As New ClsCompras - If ObjCompraFolios.GetCompararComplementoPago(gvRow.DataKey("CveProveedor").ToEntero, Monto, nodePagos2.InnerXml.Replace("pago10:", ""), UsuarioActual.CveEmpresa, OP:=If(CveComplementoPagoCompra > 0, 2, 1), CveFactura:=CveFacturaComplemento) Then + If ObjCompraFolios.GetCompararComplementoPago(gvRow.DataKey("CveProveedor").ToEntero, Monto, nodePagos2.InnerXml.Replace($"{PrefijoPagos}:", ""), UsuarioActual.CveEmpresa, OP:=If(CveComplementoPagoCompra > 0, 2, 1), CveFactura:=CveFacturaComplemento) Then ' '.GetCompararComplementoPago(gvRow.DataKey("CveProveedor").ToEntero, Monto, nodePagos2.InnerXml.Replace("pago10:", ""), UsuarioActual.CveEmpresa) Then If ObjCompraFolios.DtResultados.Rows.Count > 0 Then @@ -2789,7 +2809,7 @@ Partial Class Compras_eFacturas dRow2("CveFactura") = drow("CveFactura").ToString.ToEntero dRow2("CveMetodoPago") = drow("CveMetodoPago").ToString.ToEntero dRow2("SerieFolioCompra") = drow("SerieFolioCompra").ToString - + dRow2("CvePrePolizaDetalle") = drow("CvePrePolizaDetalle").ToString If drow("CveIE").ToString.ToEntero > 0 Then @@ -2860,7 +2880,7 @@ Partial Class Compras_eFacturas Dim TieneRegistros As Boolean = False - If ObjCompras.GetCompararComplementoPago(gvRow.DataKey("CveProveedor").ToEntero, Monto, nodePagos2.InnerXml.Replace("pago10:", ""), UsuarioActual.CveEmpresa) Then + If ObjCompras.GetCompararComplementoPago(gvRow.DataKey("CveProveedor").ToEntero, Monto, nodePagos2.InnerXml.Replace("pago10:", "").Replace("pagos10:", ""), UsuarioActual.CveEmpresa) Then GvVincularPago.DataSource = ObjCompras.DtResultados If ObjCompras.DtResultados.Rows.Count > 0 Then @@ -2982,9 +3002,9 @@ Partial Class Compras_eFacturas ObjCompra.IniciaTransacSQL() - For Each Gv As GridViewRow In GvVincularPago.Rows + For Each Gv As GridViewRow In GVPDocumentosRelacionadosPagos.Rows - If Not ObjCompra.AddComplementoPago(Gv.DataKey("CveIE").ToEntero, Gv.DataKey("CveCompra").ToEntero, Gv.DataKey("Monto").ToDecimal, Gv.DataKey("CvePrePolizaDetalle").ToEntero, CveFacturaPago) > 0 Then + If Not ObjCompra.AddComplementoPago(Gv.DataKey("CveIE").ToEntero, Gv.DataKey("CveCompra").ToEntero, Gv.DataKey("ImpPagado").ToDecimal, Gv.DataKey("CvePrePolizaDetalle").ToEntero, CveFacturaPago) > 0 Then TieneError = True End If diff --git a/Contratos/Contrato.aspx b/Contratos/Contrato.aspx index 4b9616588..3624dace8 100644 --- a/Contratos/Contrato.aspx +++ b/Contratos/Contrato.aspx @@ -487,14 +487,14 @@ -
+ <%--
-
+
--%>
@@ -575,14 +575,6 @@
- - -
- -
- -
-
@@ -816,12 +808,6 @@ - - - - - - + + + + + + + + <%----%> - diff --git a/Contratos/ContratoAvance.aspx.vb b/Contratos/ContratoAvance.aspx.vb index 54cdf7e7d..db1c3340b 100644 --- a/Contratos/ContratoAvance.aspx.vb +++ b/Contratos/ContratoAvance.aspx.vb @@ -46,22 +46,31 @@ Partial Class Contratos_ContratoAvance Set(value As String) ViewState("fecha") = value End Set - End Property - + End Property + #End Region - Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load - If Not IsPostBack Then + Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load + + If Not IsPostBack Then BtnGuardar.Visible = False - btnanexogral.Visible = False - CargaContrato() + btnanexogral.Visible = False + CargaContrato() + + End If + End Sub #Region "Filtros" Private Sub CargaContrato() - DdlContratos.DataSource = GlobalDTContratos.FiltraParametros(String.Format("CveContratoTipo=4")) + DdlContratos.DataSource = GlobalDTContratos.FiltraParametros(String.Format($"CveContratoTipo in (4,30,31) AND CveEmpresa = {UsuarioActual.CveEmpresa}")) DdlContratos.DataBind() + + DDlContratosEstimaciones.DataSource = GlobalDTContratos.FiltraParametros(String.Format($"CveContratoTipo in (4,30,31) AND CveEmpresa = {UsuarioActual.CveEmpresa}")) + DDlContratosEstimaciones.DataBind() + + CargaddlAvance() End Sub @@ -124,8 +133,10 @@ Partial Class Contratos_ContratoAvance End Sub Protected Sub GV_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) Handles Gv.RowDataBound If e.Row.RowIndex > -1 Then + e.Row.FCTextBox("TxtCantidad").Visible = (fecha = "") - e.Row.FCLinkButton("LnkAnexo").Visible = Not (fecha = "") + e.Row.FCLinkButton("LnkAnexo").Visible = Not (fecha = "") + If e.Row.DBCampo("CveContratoDetalle").ToString.ToEntero = 0 Then e.Row.FCTextBox("TxtCantidad").Visible = False e.Row.FCLinkButton("LnkAnexo").Visible = False @@ -140,9 +151,32 @@ Partial Class Contratos_ContratoAvance e.Row.CssClass = "SubTotales3" End If End If + + If e.Row.DataKey("CveContratoDetalle").ToEntero > 0 Then + + Dim LnkAnexo As LinkButton = e.Row.FCLinkButton("LnkModalDropzone") + 'LnkAnexo.Visible = True + Dim DVAnexo As Control = DirectCast(e.Row.FindControl("ModalAnexoEvidencia"), Control) + LnkAnexo.OnClientClick = $" $('#{DVAnexo.ClientID}').modal('show'); return false;" + + If DdlAvances.SelectedIndex > 0 Then + LnkAnexo.Visible = False + Else + LnkAnexo.Visible = True + End If + + End If + + + End If End Sub - Protected Sub GetAnexos(sender As Object, e As System.EventArgs) + Protected Sub GetAnexos(sender As Object, e As System.EventArgs) + Dim GvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) + + + LblTituloModalAnexo.Text = "Anexo " & GvRow.DataKey("PS") + 'Get the button that raised the event Dim btn As LinkButton = DirectCast(sender, LinkButton) Dim gvr As GridViewRow = DirectCast(btn.NamingContainer, GridViewRow) @@ -154,22 +188,49 @@ Partial Class Contratos_ContratoAvance GvAnexos.Visible = True Else GvAnexos.Visible = False - End If - objContrato.Dispose() + End If + + objContrato.Dispose() + + UpModalAnexos.Update() + + RegistraScript("$('#ModalAnexos').modal('show');") + End Sub - Protected Sub GvAnexos_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) Handles GvAnexos.RowDataBound + Protected Sub GvAnexos_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) Handles GvAnexos.RowDataBound + If e.Row.RowIndex > -1 Then Dim Archivo As String = e.Row.DBCampo("Archivo").ToString Dim start As Integer = Len(Archivo.Split("-"c)(0)) - Dim link As HyperLink = e.Row.FCHyperLink("HPLArchivo") - link.Text = Archivo.Substring(start + 1) - link.NavigateUrl = String.Format("/Empresas/{0}/Contrato/{1}/Anexos/{2}", UsuarioActual.CveEmpresa, CveContrato, Archivo) + Dim LnkArchivo As LinkButton = e.Row.FCLinkButton("LnkArchivo") + + LnkArchivo.Text = Archivo.Substring(start + 1) + 'link.NavigateUrl = String.Format("/Empresas/{0}/Contrato/{1}/Anexos/{2}", UsuarioActual.CveEmpresa, CveContrato, Archivo) + + ScriptManager.GetCurrent(Me).RegisterPostBackControl(LnkArchivo) End If - End Sub + + End Sub + + Protected Sub LnkArchivo_Click(sender As Object, e As EventArgs) + + Dim GvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) + + Dim Archivo As String = GvRow.DataKey("Archivo").ToString + + Response.ContentType = "application/octet-stream" + Response.AppendHeader("Content-Disposition", $"attachment; filename={Archivo}") + Response.TransmitFile($"{UsuarioActual.Empresa.Ruta}\Contrato\{DdlContratos.SelectedValue.ToEntero}\Anexos\{Archivo}") + Response.End() + + End Sub + + #End Region - - + + Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) Handles BtnGuardar.Click + Dim ObjContratos As New ClsContratos ObjContratos.IniciaTransacSQL() Dim TieneError = False @@ -177,47 +238,58 @@ Partial Class Contratos_ContratoAvance Dim Cantidad As Double Dim filesgral As List(Of Archivo) = AnexoGral.getfiles().Archivos Dim guardarArchivos As New List(Of Archivo) - For Each gvr As GridViewRow In Gv.Rows - CveContratoDetalle = gvr.DataKey("CveContratoDetalle").ToEntero - If CveContratoDetalle > 0 Then - Cantidad = gvr.FCTextBox("TxtCantidad").Text.ToDouble + + For Each gvr As GridViewRow In Gv.Rows + + CveContratoDetalle = gvr.DataKey("CveContratoDetalle").ToEntero + + If CveContratoDetalle > 0 Then + + Cantidad = gvr.FCTextBox("TxtCantidad").Text.ToDouble + If Cantidad > 0 Then - If ObjContratos.AddContratosAvance(CveContratoDetalle, Cantidad, TxtFecha.Text.ToDateTime, UsuarioActual.CveUsuario) Then + If ObjContratos.AddContratosAvance(CveContratoDetalle, Cantidad, TxtFecha.Text.ToDateTime, UsuarioActual.CveUsuario) Then + Dim CveContratoAvance As Integer = ObjContratos.DtResultados.Rows(0)("CveContratoAvance").ToString.ToEntero Dim files As List(Of Archivo) = gvr.FCTextBox("TXTAnexo").getfiles().Archivos - For Each fileItem As Archivo In filesgral - guardarArchivos.Add(fileItem) - If Not ObjContratos.AddContratosAvanceAnexo(CveContratoAvance, fileItem.filename, UsuarioActual.CveUsuario) Then - TieneError = True - Exit For - End If - Next - For Each fileItem As Archivo In files + 'For Each fileItem As Archivo In filesgral 'GENERAL + ' guardarArchivos.Add(fileItem) + ' If Not ObjContratos.AddContratosAvanceAnexo(CveContratoAvance, fileItem.filename, UsuarioActual.CveUsuario) Then + ' TieneError = True + ' Exit For + ' End If + 'Next + + For Each fileItem As Archivo In files guardarArchivos.Add(fileItem) If Not ObjContratos.AddContratosAvanceAnexo(CveContratoAvance, fileItem.filename, UsuarioActual.CveUsuario) Then TieneError = True Exit For End If Next + Else TieneError = True Exit For End If End If + End If + Next + If TieneError Then ObjContratos.RollBack() Alert("No se logro guardar el Presupuesto favor de intentarlo mas tarde o comuniquese con soporte", TipoMensaje.MsgAdvertencia) Else - Dim urlsave As String = String.Format("Empresas\{0}\Contrato\{1}\Anexos", UsuarioActual.CveEmpresa, CveContrato) - For Each fileItem As Archivo In filesgral - fileItem.filename.filesMove(fileItem.filename, urlsave) - Next + Dim urlsave As String = String.Format("Empresas\{0}\Contrato\{1}\Anexos", UsuarioActual.CveEmpresa, CveContrato) + For Each fileItem As Archivo In filesgral + fileItem.filename.FilesMove(fileItem.filename, urlsave) + Next For Each fileItem As Archivo In guardarArchivos - fileItem.filename.filesMove(fileItem.filename, urlsave) + fileItem.filename.FilesMove(fileItem.filename.Replace($".{fileItem.Extencion}", ""), urlsave) Next ObjContratos.Commit() Alert("se guardo Correctamente") @@ -226,8 +298,84 @@ Partial Class Contratos_ContratoAvance ObjContratos.Dispose() CargaddlAvance() CargaDatosAvance() - End Sub - + End Sub + + + +#Region "ESTIMACION" + + + Private Sub CargaAvancesParaEstimar() + + + Dim ObjContratos As New ClsContratos() + Dim DTEstimaciones As New DataTable + + + If ObjContratos.GetContratosAvanceEstimacion(DDlContratosEstimaciones.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then + DTEstimaciones = ObjContratos.DtResultados + BtnGuardarEstimacion.Visible = True + Else + BtnGuardarEstimacion.Visible = False + End If + + + ObjContratos.Dispose() + + + If DTEstimaciones.Rows.Count > 0 Then + GvEstimaciones.DataSource = DTEstimaciones + Else + GvEstimaciones.DataSource = Nothing + End If + GvEstimaciones.DataBind() + + UpEstimaciones.Update() + End Sub + + Private Sub BtnConsultarEstimaciones_Click(sender As Object, e As EventArgs) Handles BtnConsultarEstimaciones.Click + + CargaAvancesParaEstimar() + + End Sub + + Private Sub GvEstimaciones_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvEstimaciones.RowDataBound + + If e.Row.RowType = DataControlRowType.DataRow Then + + If e.Row.DBCampo("CveContratoDetalle").ToString.ToEntero = 0 Then + + + If e.Row.DBCampo("CveSubFamilias").ToString.ToEntero = 0 Then + If e.Row.DBCampo("CveFamilias").ToString.ToEntero = 0 Then + e.Row.CssClass = "SubTotales" + Else + e.Row.CssClass = "SubTotales2" + End If + Else + e.Row.CssClass = "SubTotales3" + End If + End If + End If + + + + + End Sub + + Private Sub BtnGuardarEstimacion_Click(sender As Object, e As EventArgs) Handles BtnGuardarEstimacion.Click + + Dim ObjContratos As New ClsContratos() + + + + ObjContratos.Dispose() + + End Sub + + +#End Region + End Class diff --git a/Contratos/ContratoObra.aspx b/Contratos/ContratoObra.aspx index 18722fc8a..d42a38359 100644 --- a/Contratos/ContratoObra.aspx +++ b/Contratos/ContratoObra.aspx @@ -157,8 +157,30 @@ + + + +
  • + Agregar PS Venta +
  • + +
  • + Agregar PS Control +
  • +
  • + Agregar Presupuesto Venta +
  • + +
  • + Agregar Presupuesto Control +
  • + +
    +
    + + @@ -890,71 +912,10 @@ " style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"> - - - - - - - - - - - - - <%-- --%> - - - - - - - - + - - - - - - - - - - - - -
    - - Cantidad - - Producto/ServicioU. M.ObservaciónPrecio UnitarioTotalPermite AvancePermite Estimación Comandos
    - - - - - - - - - - -
    - -
    - -
    -
    - - - - - - - -
    @@ -965,122 +926,139 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - <%-- - - - - - --%> - - -
    - -
    -
    - - - -
    - - - - - -
    -
    + + + + + + + + + + + + + + <%-- + +
    + +
    +
    + + + +
    --%> + + + + + + + + + + +
    +
    + + @@ -1117,10 +1095,10 @@ - + - + <%-- @@ -1140,7 +1118,7 @@ - <%-- --%> + @@ -1180,109 +1158,126 @@ - + --%> + +
    + " style="display: inline-block; margin-right: -20px; width: 150px;" /> + " style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"> +
    + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
    +
    - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - <%-- - - - - - --%> - - -
    - -
    -
    - - - -
    - - - - - -
    -
    + + + + + + + + + + + + + + + + + + + + + <%-- + +
    + +
    +
    + + + +
    --%> + + + + + + + + + +
    +
    Precio Unitario Total Permite AvancePermite Estimación Comandos
    @@ -2233,6 +2228,7 @@ <%--MODAL UPLOAD--%> + + + + + + + + + + + + <%--MODAL CONTROL PRESUPUESTOS AGREGAR--%> + + + + + + + + + + + + + + <%--Modal Carga Presupuesto--%> + + + + + + + + + + + + + + + + diff --git a/Contratos/ContratoObra.aspx.vb b/Contratos/ContratoObra.aspx.vb index 2bdcf71b0..1dccd7ef6 100644 --- a/Contratos/ContratoObra.aspx.vb +++ b/Contratos/ContratoObra.aspx.vb @@ -394,7 +394,17 @@ Partial Class Contratos_ContratoObra 'Configuración de Modalidad Update BtnGuardar.Text = "Guardar Cambios" - If Request("Opt") IsNot Nothing AndAlso IsNumeric(Request("Opt")) Then TAB.ActiveTabIndex = Request("Opt").ToEntero + If Request("Opt") IsNot Nothing AndAlso IsNumeric(Request("Opt")) Then Tab.ActiveTabIndex = Request("Opt").ToEntero + + If CveContrato > 0 Then + + LnkModalAddPSVentas.Visible = True + LnkModalAddPSControl.Visible = True + LnkModalAddPresupuestoVentas.Visible = True + LnkModalAddPresupuestoControl.Visible = True + + End If + Else 'Configuración de Modalidad Insert LblFechaCaptura.Text = Now.ToShortDateString() @@ -914,9 +924,10 @@ Partial Class Contratos_ContratoObra #Region " CARGA DATOS " Private Sub CargaDatos() Dim ObjContratos As New ClsContratos() - Dim Ruta = Request.ApplicationPath + "Empresas\" & UsuarioActual.CveEmpresa & "\Contratos\" - 'DivTipoContrato.Visible = False - + Dim Ruta = Request.ApplicationPath + "Empresas\" & UsuarioActual.CveEmpresa & "\Contratos\" + 'DivTipoContrato.Visible = False + + If ObjContratos.GetContratos(CveContrato, UsuarioActual.CveEmpresa) Then If ObjContratos.DtResultados.Rows.Count > 0 Then @@ -1001,30 +1012,30 @@ Partial Class Contratos_ContratoObra TabPVInsumos.Visible = False RowEstatus.Visible = False TabPres.HeaderText = "Partidas" - thOcCliente.Style.Add("display", "none") - tdOcCliente.Style.Add("display", "none") - thNoIdentificacionv.Style.Add("display", "none") - thLimitar.Style.Add("display", "none") - tdLimitar2.Style.Add("display", "none") - tdNoIdentificacionv.Style.Add("display", "none") + 'thOcCliente.Style.Add("display", "none") + 'tdOcCliente.Style.Add("display", "none") + 'thNoIdentificacionv.Style.Add("display", "none") + 'thLimitar.Style.Add("display", "none") + 'tdLimitar2.Style.Add("display", "none") + 'tdNoIdentificacionv.Style.Add("display", "none") 'RowFlexible.Visible = False TableDatosCabecera.Visible = False TabAvanveDocumento.Visible = False TabSistema.Visible = False 'RowPorcentajeComision.Visible = False TabContratosGastos.Visible = False - tdCveInterna.Text = "" - tdLimitar.Text = "" - tdOC.Text = "" - THAvance.Visible = False - THAvance.Style.Add("display", "none") + 'tdCveInterna.Text = "" + 'tdLimitar.Text = "" + 'tdOC.Text = "" + 'THAvance.Visible = False + 'THAvance.Style.Add("display", "none") TDAvance.Style.Add("display", "none") TxtOCInterna.Visible = False TxtNoIdentificacionv.Visible = False ChkLimitarVenta.Visible = False DvObservaciones.Visible = True - TDObservacion.Visible = True - tdObservaciones.Visible = True + 'TDObservacion.Visible = True + 'tdObservaciones.Visible = True TxtObservaciones.Text = ObjContratos.DtResultados.Rows(0)("Observaciones").ToString Gv.Columns(6).Visible = True 'DdlPeriodo.SelectedValueExist(ObjContratos.DtResultados.Rows(0)("CvePeriodo").ToString) @@ -1768,6 +1779,9 @@ Partial Class Contratos_ContratoObra DdlProductows.SelectedText = "Seleccione" DdlProductows.SelectedValue = "-1" End If + + UpModalVentasAddPS.Update() + End Sub Private Sub CargaPSInsumos() @@ -1852,53 +1866,123 @@ Partial Class Contratos_ContratoObra End Sub Protected Sub BtnAgregarDetalle_Click(sender As Object, e As EventArgs) - Dim Row As DataRow = TmpDT.NewRow() - Row("Cantidad") = TxtCantidad.Text.ToDouble.FormatoNumero - Row("CantidadContratada") = TxtCantidad.Text.ToDouble.FormatoNumero - Row("CveUM") = DdlUM.SelectedValue.ToEntero - Row("UM") = DdlUM.SelectedItem - Row("CveClasificacion") = DdlClasificacionAdd.SelectedValue - Row("Clasificacion") = DdlClasificacionAdd.SelectedItem - Row("CvePS") = DdlProductows.SelectedValue.ToEntero - Row("PS") = DdlProductows.SelectedText - Row("CodigoPS") = DdlProductows.SelectedText - Row("PU") = TxtPU.Text.ToDouble.FormatoNumero - Row("Total") = (TxtCantidad.Text.ToDouble * TxtPU.Text.ToDouble).FormatoNumero - Row("CveTipoPresupuesto") = 2 - Row("NoIdentificacion") = TxtNoIdentificacionv.Text.Trim - Row("OCInterna") = TxtOCInterna.Text.Trim - Row("LimitarCantidad") = If(ChkLimitarVenta.Checked, 1, 0) - Row("Observacion") = TxtObservacionesDetalles.Text - Dim ObjContratos As New ClsContratos - If ObjContratos.AddContratosDetalle(CveContrato, Row("CvePS").ToString.ToEntero, Row("Cantidad").ToString.ToDouble, Row("PU").ToString.ToDouble, UsuarioActual.CveUsuario, Row("CveTipoPresupuesto").ToString.ToEntero, Row("NoIdentificacion").ToString, Convert.ToBoolean(Row("LimitarCantidad")), Row("OCInterna").ToString, Observacion:=Row("Observacion").ToString) Then - If Autorizado Then - Dim msj As String = String.Format("Se agregaron {0} {1} del producto {2} con un precio ${3}.", Row("Cantidad"), Row("UM"), Row("PS"), Row("PU")) - guardarBitacora(msj) - End If - Row("CveContratoDetalle") = ObjContratos.DtResultados.Rows(0)("CveContratoDetalle") - TmpDT.Rows.Add(Row) - TmpDT.AcceptChanges() - Dim TotalRow = Row("Total").ToString.ToDouble - CargaGVPresupuestos(TmpDT.FiltraParametros("CveTipoPresupuesto=2")) - - UpGV.Update() - TxtCantidad.Text = "" - TxtOCInterna.Text = "" - TxtNoIdentificacionv.Text = "" - TxtObservacionesDetalles.Text = "" - TxtPU.Text = "" - DdlClasificacionAdd.SelectedValue = "-1" - LbTotalGeneral.Text = (LbTotalGeneral.Text.ToDouble + TotalRow).ToString.FormatoNumero - LblImporte.Text = LbTotalGeneral.Text - TxtCantidad.Focus() - UpGral.Update() - Else - Alert("Ocurrio un error al agregar el detalle", TipoMensaje.MsgError) - End If - - ObjContratos.Dispose() + If CveContratoDetalleEditar = -1 Then + + Dim Row As DataRow = TmpDT.NewRow() + Row("Cantidad") = TxtCantidad.Text.ToDouble.FormatoNumero + Row("CantidadContratada") = TxtCantidad.Text.ToDouble.FormatoNumero + Row("CveUM") = DdlUM.SelectedValue.ToEntero + Row("UM") = DdlUM.SelectedItem + Row("CveClasificacion") = DdlClasificacionAdd.SelectedValue + Row("Clasificacion") = DdlClasificacionAdd.SelectedItem + Row("CvePS") = DdlProductows.SelectedValue.ToEntero + Row("PS") = DdlProductows.SelectedText + Row("CodigoPS") = DdlProductows.SelectedText + Row("PU") = TxtPU.Text.ToDouble.FormatoNumero + Row("Total") = (TxtCantidad.Text.ToDouble * TxtPU.Text.ToDouble).FormatoNumero + Row("CveTipoPresupuesto") = 2 + Row("NoIdentificacion") = TxtNoIdentificacionv.Text.Trim + Row("OCInterna") = TxtOCInterna.Text.Trim + Row("LimitarCantidad") = If(ChkLimitarVenta.Checked, 1, 0) + Row("Observacion") = "" 'TxtObservacionesDetalles.Text + + Dim ObjContratos As New ClsContratos + + + If ObjContratos.AddContratosDetalle(CveContrato, Row("CvePS").ToString.ToEntero, Row("Cantidad").ToString.ToDouble, Row("PU").ToString.ToDouble, UsuarioActual.CveUsuario, Row("CveTipoPresupuesto").ToString.ToEntero, Row("NoIdentificacion").ToString, Convert.ToBoolean(Row("LimitarCantidad")), Row("OCInterna").ToString, Observacion:=Row("Observacion").ToString) Then + + If Autorizado Then + Dim msj As String = String.Format("Se agregaron {0} {1} del producto {2} con un precio ${3}.", Row("Cantidad"), Row("UM"), Row("PS"), Row("PU")) + guardarBitacora(msj) + End If + + Row("CveContratoDetalle") = ObjContratos.DtResultados.Rows(0)("CveContratoDetalle") + TmpDT.Rows.Add(Row) + TmpDT.AcceptChanges() + Dim TotalRow = Row("Total").ToString.ToDouble + + CargaGVPresupuestos(TmpDT.FiltraParametros("CveTipoPresupuesto=2")) + + UpGV.Update() + LimpiarModalVentas() + + LbTotalGeneral.Text = (LbTotalGeneral.Text.ToDouble + TotalRow).ToString.FormatoNumero + LblImporte.Text = LbTotalGeneral.Text + TxtCantidad.Focus() + UpGral.Update() + + + If Not ChkContinualAgregandoVentas.Checked Then + RegistraScript("$('#ModalVentasAddPS').modal('hide')") + End If + + Else + Alert("Ocurrio un error al agregar el detalle", TipoMensaje.MsgError) + End If + + ObjContratos.Dispose() + Else + + + Dim Cantidad, PU As Double : Dim CvePS, CveUM As Integer + Dim NoIdentificacion As String = "" + Dim OCInterna As String = "" + Dim LimitarCantidad As Boolean + Dim Observaciones As String = "" + + Cantidad = TxtCantidad.Text.ToDouble + PU = TxtPU.Text.ToDouble + CvePS = DdlProductows.SelectedValue.ToEntero + CveUM = DdlUM.SelectedValue.ToEntero + NoIdentificacion = TxtNoIdentificacionv.Text.Trim + OCInterna = TxtOCInterna.Text.Trim + LimitarCantidad = If(ChkLimitarVenta.Checked, True, False) + Observaciones = "" + + Dim row = TmpDT.Select(String.Format(" CveContratoDetalle={0}", CveContratoDetalleEditar))(0) + Dim LimitarCantidadValidator As Boolean = row("LimitarCantidad").ToString = "True" + + + Dim ObjContratos As New ClsContratos + If ObjContratos.UpdateContratosDetalle(CveContratoDetalleEditar, CveContrato, CvePS, Cantidad, PU, UsuarioActual.CveUsuario, NoIdentificacion, LimitarCantidad, OCInterna, Observaciones) Then + + If Autorizado Then + Dim msj As String = String.Format("Se realizaron los siguientes cambios, el Presupuesto Interno se modificó: {1} {0} {2:C2} a {3} {0} {4:C2}", + row("PS").ToString, row("Cantidad").ToString, row("PU").ToString, Cantidad, PU) + guardarBitacora(msj) + End If + + row("Cantidad") = Cantidad + row("CantidadContratada") = Cantidad + row("PU") = PU + row("Total") = Cantidad * PU + row("CveUM") = CveUM + row("UM") = DdlUM.SelectedItem.Text + row("NoIdentificacion") = NoIdentificacion + row("OCInterna") = OCInterna + row("LimitarCantidad") = LimitarCantidad + row("Observacion") = Observaciones + + TmpDT.AcceptChanges() + Alert("Cambios realizados correctamente.", TipoMensaje.MsgInformacion) + RegistraScript("$('#ModalVentasAddPS').modal('hide')") + Else + Alert("Error al Actualizar Detalle", TipoMensaje.MsgError) + End If + ObjContratos.Dispose() + + + + Gv.EditIndex = -1 + LbTotalGeneral.Text = TmpDT.FiltraParametros("CveTipoPresupuesto=2").SUM("Total").FormatoNumero + LblImporte.Text = LbTotalGeneral.Text + CargaGVPresupuestos(TmpDT.FiltraParametros("CveTipoPresupuesto=2")) + + End If + + End Sub Private Sub CargaDatosPresup() @@ -1959,12 +2043,14 @@ Partial Class Contratos_ContratoObra End Sub Protected Sub GV_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) Handles Gv.RowDataBound - If e.Row.RowIndex > -1 Then - - e.Row.FCCheckBox("CHKPAvance").Visible = Autorizado - 'e.Row.FCCheckBox("CHKPEstimacion").Visible = Autorizado + If e.Row.RowIndex > -1 Then + + Dim LnkHabilitaAvance As LinkButton = e.Row.FCLinkButton("LnkHabilitaAvance") + ' e.Row.FCCheckBox("CHKPAvance").Visible = Autorizado + 'e.Row.FCCheckBox("CHKPEstimacion").Visible = Autorizado If UsuarioActual.TienePermisoProceso(124) Then e.Row.FCCheckBox("CHKPAvance").Enabled = True + LnkHabilitaAvance.Enabled = True End If If e.Row.DBCampo("PermitirAvance").ToString = "1" Then @@ -1982,7 +2068,20 @@ Partial Class Contratos_ContratoObra If CveTipoContrato = 25 Then e.Row.Cells(1).Width = Unit.Pixel(10) e.Row.Cells(6).Width = Unit.Pixel(250) + End If + + + + + If e.Row.DBCampo("PermitirAvance").ToString = "1" Then + LnkHabilitaAvance.Text = "" + LnkHabilitaAvance.Attributes.Add("data-original-title", "¿Deshabilitar avance?") + Else + LnkHabilitaAvance.Text = "" + LnkHabilitaAvance.Attributes.Add("data-original-title", "¿Habilitar avance?") End If + + End If If e.Row.RowState = DataControlRowState.Edit OrElse e.Row.RowState = 5 Then e.Row.FCDropDownList("DdlUMEdit").DataSource = GlobalDTProductosServiciosEquivalencias(e.Row.DataKey("CvePS").ToString.ToEntero, -1, UsuarioActual.CveEmpresa) @@ -2069,7 +2168,8 @@ Partial Class Contratos_ContratoObra If ObjContratos.RemoveContratosDetalle(CveContratoDetalle, CveContrato) Then TmpDT.Rows.Remove(DbRow) CargaGVPresupuestos(TmpDT.FiltraParametros("CveTipoPresupuesto=2")) - LbTotalGeneral.Text = Gv.Rows.Cast(Of GridViewRow)().Sum(Function(gvr) gvr.FCLabel("LtTotal").Text.ToDouble).ToString.FormatoNumero + LbTotalGeneral.Text = Gv.Rows.Cast(Of GridViewRow)().Sum(Function(gvr) gvr.FCLabel("LtTotal").Text.ToDouble).ToString.FormatoNumero + Alert("Detalle eliminado eliminado correctamente.") Else Alert("Ocurrió un error al eliminar el detalle (Producto/Servicio). Por favor vuelva a intentar", TipoMensaje.MsgError) End If @@ -2100,48 +2200,112 @@ Partial Class Contratos_ContratoObra UpGVInsumos.Update() End Sub - Protected Sub BtnAgregarDetalleInsumos_Click(sender As Object, e As EventArgs) - Dim Row As DataRow = TmpDT.NewRow() - Row("Cantidad") = TxtCantidadInsumos.Text.ToDouble.FormatoNumero - Row("CantidadContratada") = TxtCantidadInsumos.Text.ToDouble.FormatoNumero - Row("CveUM") = DdlUMInsumos.SelectedValue.ToEntero - Row("UM") = DdlUMInsumos.SelectedItem - Row("CveClasificacion") = DdlClasificacionAddInsumos.SelectedValue - Row("Clasificacion") = DdlClasificacionAddInsumos.SelectedItem - Row("CvePS") = DdlProductowsInsumos.SelectedValue.ToEntero - Row("PS") = DdlProductowsInsumos.SelectedText - Row("CodigoPS") = DdlProductowsInsumos.SelectedText - Row("PU") = TxtPUInsumos.Text.ToDouble.FormatoNumero - Row("Total") = (TxtCantidadInsumos.Text.ToDouble * TxtPUInsumos.Text.ToDouble).FormatoNumero - Row("CveTipoPresupuesto") = 1 - Row("NoIdentificacion") = TxtNoIdentificacionvInsumos.Text.Trim - Row("LimitarCantidad") = If(ChkLimitar.Checked, 1, 0) + Protected Sub BtnAgregarDetalleInsumos_Click(sender As Object, e As EventArgs) + + If CveContratoDetalleEditar = -1 Then + + Dim Row As DataRow = TmpDT.NewRow() + Row("Cantidad") = TxtCantidadInsumos.Text.ToDouble.FormatoNumero + Row("CantidadContratada") = TxtCantidadInsumos.Text.ToDouble.FormatoNumero + Row("CveUM") = DdlUMInsumos.SelectedValue.ToEntero + Row("UM") = DdlUMInsumos.SelectedItem + Row("CveClasificacion") = DdlClasificacionAddInsumos.SelectedValue + Row("Clasificacion") = DdlClasificacionAddInsumos.SelectedItem + Row("CvePS") = DdlProductowsInsumos.SelectedValue.ToEntero + Row("PS") = DdlProductowsInsumos.SelectedText + Row("CodigoPS") = DdlProductowsInsumos.SelectedText + Row("PU") = TxtPUInsumos.Text.ToDouble.FormatoNumero + Row("Total") = (TxtCantidadInsumos.Text.ToDouble * TxtPUInsumos.Text.ToDouble).FormatoNumero + Row("CveTipoPresupuesto") = 1 + Row("NoIdentificacion") = TxtNoIdentificacionvInsumos.Text.Trim + Row("LimitarCantidad") = If(ChkLimitarInsumos.Checked, 1, 0) + + Dim ObjContratos As New ClsContratos + If ObjContratos.AddContratosDetalle(CveContrato, Row("CvePS").ToString.ToEntero, Row("Cantidad").ToString.ToDouble, Row("PU").ToString.ToDouble, UsuarioActual.CveUsuario, Row("CveTipoPresupuesto").ToString.ToEntero, Row("NoIdentificacion").ToString, Convert.ToBoolean(Row("LimitarCantidad")), "") Then + If Autorizado Then + Dim msj As String = String.Format("Se agregaron {0} {1} del producto {2} con un precio ${3}.", Row("Cantidad"), Row("UM"), Row("PS"), Row("PU")) + guardarBitacora(msj) + End If + Row("CveContratoDetalle") = ObjContratos.DtResultados.Rows(0)("CveContratoDetalle") + TmpDT.Rows.Add(Row) + Dim TotalRow = Row("Total").ToString.ToDouble + + CargaGVPresupuestosInsumos(TmpDT.FiltraParametros("CveTipoPresupuesto=1")) + + UpGVInsumos.Update() + LimpiarModalControl() + LbTotalGeneralInsumos.Text = (LbTotalGeneralInsumos.Text.ToDouble + TotalRow).ToString.FormatoNumero + 'LblImporte.Text = LbTotalGeneral.Text + TxtCantidadInsumos.Focus() + UpGral.Update() + + + If Not ChkContinualAgregandoControl.Checked Then + RegistraScript("$('#ModalControlAddPS').modal('hide')") + End If + + Else + Alert("Ocurrio un error al agregar el detalle", TipoMensaje.MsgError) + End If + + ObjContratos.Dispose() + + Else + + Dim Cantidad, PU As Double + Dim CvePS, CveUM As Integer + Dim NoIdentificacion As String = "" + Dim LimitarCantidad As Boolean + + Cantidad = TxtCantidadInsumos.Text.ToDouble + PU = TxtPUInsumos.Text.ToDouble + CvePS = DdlProductowsInsumos.SelectedValue.ToEntero + CveUM = DdlUMInsumos.SelectedValue.ToEntero + NoIdentificacion = TxtNoIdentificacionvInsumos.Text.Trim + LimitarCantidad = If(ChkLimitarInsumos.Checked, True, False) + + Dim row = TmpDT.Select(String.Format(" CveContratoDetalle={0}", CveContratoDetalleEditar))(0) + + + + Dim ObjContratos As New ClsContratos + If ObjContratos.UpdateContratosDetalle(CveContratoDetalleEditar, CveContrato, CvePS, Cantidad, PU, UsuarioActual.CveUsuario, NoIdentificacion, LimitarCantidad, "") Then + + If Autorizado Then + Dim msj As String = String.Format("Se realizaron los siguientes cambios, el Presupuesto Interno se modificó: {1} {0} {2:C2} a {3} {0} {4:C2}", + row("PS").ToString, row("Cantidad").ToString, row("PU").ToString, Cantidad, PU) + guardarBitacora(msj) + End If + + row("Cantidad") = Cantidad + row("CantidadContratada") = Cantidad + row("PU") = PU + row("Total") = Cantidad * PU + row("CveUM") = CveUM + row("UM") = DdlUMInsumos.SelectedItem.Text + row("NoIdentificacion") = NoIdentificacion + row("LimitarCantidad") = LimitarCantidad + TmpDT.AcceptChanges() + Alert("Cambios realizados correctamente.", TipoMensaje.MsgInformacion) + RegistraScript("$('#ModalControlAddPS').modal('hide')") + Else + Alert("Error al Actualizar Detalle", TipoMensaje.MsgError) + End If + ObjContratos.Dispose() + + + GvInsumos.EditIndex = -1 + LbTotalGeneralInsumos.Text = TmpDT.FiltraParametros("CveTipoPresupuesto=1").SUM("Total").FormatoNumero + CargaGVPresupuestosInsumos(TmpDT.FiltraParametros("CveTipoPresupuesto=1")) + + + End If + + - Dim ObjContratos As New ClsContratos - If ObjContratos.AddContratosDetalle(CveContrato, Row("CvePS").ToString.ToEntero, Row("Cantidad").ToString.ToDouble, Row("PU").ToString.ToDouble, UsuarioActual.CveUsuario, Row("CveTipoPresupuesto").ToString.ToEntero, Row("NoIdentificacion").ToString, Convert.ToBoolean(Row("LimitarCantidad")), "") Then - If Autorizado Then - Dim msj As String = String.Format("Se agregaron {0} {1} del producto {2} con un precio ${3}.", Row("Cantidad"), Row("UM"), Row("PS"), Row("PU")) - guardarBitacora(msj) - End If - Row("CveContratoDetalle") = ObjContratos.DtResultados.Rows(0)("CveContratoDetalle") - TmpDT.Rows.Add(Row) - Dim TotalRow = Row("Total").ToString.ToDouble - CargaGVPresupuestosInsumos(TmpDT.FiltraParametros("CveTipoPresupuesto=1")) - UpGVInsumos.Update() - TxtCantidadInsumos.Text = "" - TxtPUInsumos.Text = "" - DdlClasificacionAddInsumos.SelectedValue = "-1" - LbTotalGeneralInsumos.Text = (LbTotalGeneralInsumos.Text.ToDouble + TotalRow).ToString.FormatoNumero - 'LblImporte.Text = LbTotalGeneral.Text - TxtCantidadInsumos.Focus() - UpGral.Update() - Else - Alert("Ocurrio un error al agregar el detalle", TipoMensaje.MsgError) - End If - ObjContratos.Dispose() End Sub #Region "GV PRESUPUESTOS" @@ -2251,7 +2415,8 @@ Partial Class Contratos_ContratoObra If ObjContratos.RemoveContratosDetalle(CveContratoDetalle, CveContrato) Then TmpDT.Rows.Remove(DbRow) CargaGVPresupuestosInsumos(TmpDT.FiltraParametros("CveTipoPresupuesto=1")) - LbTotalGeneralInsumos.Text = GvInsumos.Rows.Cast(Of GridViewRow)().Sum(Function(gvr) gvr.FCLiteral("LtTotal").Text.ToDouble).ToString.FormatoNumero + LbTotalGeneralInsumos.Text = GvInsumos.Rows.Cast(Of GridViewRow)().Sum(Function(gvr) gvr.FCLabel("LtTotal").Text.ToDouble).ToString.FormatoNumero + Alert("Detalle eliminado eliminado correctamente.") Else Alert("Ocurrió un error al eliminar el detalle (Producto/Servicio). Por favor vuelva a intentar", TipoMensaje.MsgError) End If @@ -2284,7 +2449,7 @@ Partial Class Contratos_ContratoObra Row("Total") = (TxtCantidadInt.Text.ToDouble * TxtPUInt.Text.ToDouble).FormatoNumero Row("CveTipoPresupuesto") = 1 Row("NoIdentificacion") = TxtNoIdentificacionv.Text.Trim - Row("LimitarCantidad") = ChkLimitar.Checked + Row("LimitarCantidad") = False 'ChkLimitar.Checked <-- Estaba usando un checkbox de un logar muy diferente a donde esta ese formilario, posiblemente se copio codigo y se fue por equivocacion Dim ObjContratos As New ClsContratos If ObjContratos.AddContratosDetalle(CveContrato, Row("CvePS").ToString.ToEntero, Row("Cantidad").ToString.ToDouble, Row("PU").ToString.ToDouble, UsuarioActual.CveUsuario, Row("CveTipoPresupuesto").ToString.ToEntero, Row("NoIdentificacion").ToString, Row("LimitarCantidad").ToString.ToEntero = 1, "") Then @@ -4408,8 +4573,505 @@ Partial Class Contratos_ContratoObra + Property ModalVentasPSAdd As Boolean + Get + If ViewState("ModalVentasAdd") Is Nothing Then + Return False + Else + Return Boolean.Parse(ViewState("ModalVentasAdd").ToString) + End If + End Get + Set(value As Boolean) + ViewState("ModalVentasAdd") = value + End Set + End Property + Property ModalControlPSAdd As Boolean + Get + If ViewState("ModalControlPSAdd") Is Nothing Then + Return False + Else + Return Boolean.Parse(ViewState("ModalControlPSAdd").ToString) + End If + End Get + Set(value As Boolean) + ViewState("ModalControlPSAdd") = value + End Set + End Property + + Property Carga As Boolean + Get + If ViewState("ModalControlPSAdd") Is Nothing Then + Return False + Else + Return Boolean.Parse(ViewState("ModalControlPSAdd").ToString) + End If + End Get + Set(value As Boolean) + ViewState("ModalControlPSAdd") = value + End Set + End Property + + Enum EnumTipoCargaPresupuesto + Ventas + Control + End Enum + + Property TipoCargaPresupuesto As EnumTipoCargaPresupuesto + Get + If ViewState("TipoCargaPresupuesto") Is Nothing Then + Return EnumTipoCargaPresupuesto.Ventas + Else + Return DirectCast(ViewState("TipoCargaPresupuesto"), EnumTipoCargaPresupuesto) + End If + End Get + Set(value As EnumTipoCargaPresupuesto) + ViewState("TipoCargaPresupuesto") = value + End Set + End Property + + + Property CveContratoDetalleEditar As Integer + Get + + If ViewState("CveContratoDetalleEditar") Is Nothing Then + Return -1 + Else + Return ViewState("CveContratoDetalleEditar").ToString.ToEntero + End If + + End Get + Set(value As Integer) + ViewState("CveContratoDetalleEditar") = value + End Set + End Property + + Protected Sub LnkModalAddPresupuestoVentas_Click(sender As Object, e As EventArgs) + + LnlModalcargaPresupuestoTitulo.Text = "Carga Presupuesto Ventas" + UpModalCargaPresupuesto.Update() + RegistraScript("$('#ModalUploadPresupuesto').modal('show')") + TipoCargaPresupuesto = EnumTipoCargaPresupuesto.Ventas + + End Sub + + Protected Sub LnkModalAddPresupuestoControl_Click(sender As Object, e As EventArgs) + + LnlModalcargaPresupuestoTitulo.Text = "Carga Presupuesto Control" + UpModalCargaPresupuesto.Update() + RegistraScript("$('#ModalUploadPresupuesto').modal('show')") + TipoCargaPresupuesto = EnumTipoCargaPresupuesto.Control + + End Sub + + Protected Sub LnkModalAddPSVentas_Click(sender As Object, e As EventArgs) + + ModalVentasPSAdd = True + ChkContinualAgregandoVentas.Visible = True + ChkContinualAgregandoVentas.Checked = True + LimpiarModalVentas() + RegistraScript("$('#ModalVentasAddPS').modal('show')") + + End Sub + + Protected Sub LnkModalAddPSControl_Click(sender As Object, e As EventArgs) + + ModalControlPSAdd = True + ChkContinualAgregandoControl.Visible = True + ChkContinualAgregandoControl.Checked = True + LimpiarModalControl() + RegistraScript("$('#ModalControlAddPS').modal('show')") + + End Sub + + + Protected Sub LnkEditarPresupuestoVentaDetalle_Click(sender As Object, e As EventArgs) + + Dim GvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) + LimpiarModalVentas() + + 'CveContratoDetalle,CveUM,CvePS,Cantidad,PU,CveTipoPresupuesto,CveClasificacion,CodigoPS,LimitarCantidad + + CveContratoDetalleEditar = GvRow.DataKey("CveContratoDetalle").ToEntero + + + TxtOCInterna.Text = GvRow.DataKey("OCInterna") + TxtCantidad.Text = GvRow.DataKey("Cantidad").ToDouble.ToString + + ChkLimitarVenta.Checked = Boolean.Parse(GvRow.DataKey("LimitarCantidad")) + + TxtNoIdentificacionv.Text = GvRow.DataKey("NoIdentificacion").ToDouble.ToString + DdlClasificacionAdd.SelectedValueExist(GvRow.DataKey("CveClasificacion").ToEntero) + + DdlProductows.txtText.Value = GvRow.DataKey("PS").ToString + DdlProductows.txtValue.Value = GvRow.DataKey("CvePS").ToString + + DdlUM.DataSource = GlobalDTProductosServiciosEquivalencias(DdlProductows.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa) + DdlUM.DataBind() + DdlUM.SelectedValueExist(GvRow.DataKey("CveUM").ToDouble.ToString) + + TxtPU.Text = GvRow.DataKey("PU").ToDouble.ToString + + + + ModalVentasPSAdd = False + ChkContinualAgregandoVentas.Visible = False + ChkContinualAgregandoVentas.Checked = False + + + RegistraScript("$('#ModalVentasAddPS').modal('show')") + End Sub + Protected Sub LnkEditarPresupuestoControlDetalle_Click(sender As Object, e As EventArgs) + Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) + LimpiarModalControl() + + CveContratoDetalleEditar = gvRow.DataKey("CveContratoDetalle").ToEntero + + TxtCantidadInsumos.Text = gvRow.DataKey("Cantidad").ToDouble.ToString + ChkLimitarInsumos.Checked = Boolean.Parse(gvRow.DataKey("LimitarCantidad")) + TxtNoIdentificacionvInsumos.Text = gvRow.DataKey("NoIdentificacion") + + DdlClasificacionAddInsumos.SelectedValueExist(gvRow.DataKey("CveClasificacion").ToEntero) + + DdlProductowsInsumos.txtText.Value = gvRow.DataKey("PS").ToString + DdlProductowsInsumos.txtValue.Value = gvRow.DataKey("CvePS").ToString + + + DdlUMInsumos.DataSource = GlobalDTProductosServiciosEquivalencias(DdlProductowsInsumos.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa) + DdlUMInsumos.DataBind() + DdlUMInsumos.SelectedValueExist(gvRow.DataKey("CveUM").ToDouble.ToString) + + + + TxtPUInsumos.Text = gvRow.DataKey("PU").ToDouble.ToString + + + + ModalControlPSAdd = False + ChkContinualAgregandoControl.Visible = False + ChkContinualAgregandoControl.Checked = False + + RegistraScript("$('#ModalControlAddPS').modal('show')") + End Sub + + + Private Sub LimpiarModalVentas() + + TxtOCInterna.Text = "" + TxtCantidad.Text = "" + ChkLimitarVenta.Checked = False + TxtNoIdentificacionv.Text = "" + DdlClasificacionAdd.SelectedValueExist(-1) + DdlProductows.txtText.Value = "" + DdlProductows.txtValue.Value = "" + DdlUM.SelectedValueExist(-1) + TxtPU.Text = "" + + + If ModalVentasPSAdd = True Then + LtlModalVentasPSTitulo.Text = "Agregar Producto Presupuesto de Ventas" + Else + LtlModalVentasPSTitulo.Text = "Editar Producto Presupuesto de Ventas" + End If + + + UpModalVentasAddPS.Update() + + End Sub + Private Sub LimpiarModalControl() + + + + TxtCantidadInsumos.Text = "" + ChkLimitarInsumos.Checked = False + TxtNoIdentificacionvInsumos.Text = "" + + DdlClasificacionAddInsumos.SelectedValueExist(-1) + DdlProductowsInsumos.txtText.Value = "" + DdlProductowsInsumos.txtValue.Value = "" + DdlUMInsumos.SelectedValueExist(-1) + TxtPUInsumos.Text = "" + + + If ModalControlPSAdd = True Then + LtlModalControlPSTitulo.Text = "Agregar Producto Presupuesto Control" + Else + LtlModalControlPSTitulo.Text = "Editar Producto Presupuesto Control" + End If + + UpModalControlAddPS.Update() + + End Sub + + + + Protected Sub BtnCargaPresupuesto_Click(sender As Object, e As EventArgs) + + Dim DTCargaPresupuesto As New DataTable + DTCargaPresupuesto = CargaPreSupuestoExcel() + + If DTCargaPresupuesto.Rows.Count > 0 Then + ProcesaDatosCargaPresupuesto(DTCargaPresupuesto) + Else + Alert("No se encintraron partidas en el documento", TipoMensaje.MsgAdvertencia) + End If + + End Sub + + + + Private Function CargaPreSupuestoExcel() As DataTable + + Dim FileExtension As String = "-1" + Dim Filesgral As List(Of Archivo) = TxtModalCargaPresupuesto.getfiles().Archivos + Dim Filename As String = "" + Dim DTPS = New DataTable + + For Each fileItem As Archivo In Filesgral + + FileExtension = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)).Replace(".", "") + + + If Not FileExtension.ToUpper.Contiene("XLSX", "XSL") Then + Alert("El archivo no es una archivo de Excel", TipoMensaje.MsgAdvertencia) + Exit For + End If + + + Dim tempArray() As String + tempArray = fileItem.filename.ToString().Split("-".ToCharArray()) + SpreadsheetInfo.SetLicense(Extensiones.SerialGemBoxSpreadsheet) + Dim workbook = ExcelFile.Load(fileItem.FileUrl) + Dim worksheet = workbook.Worksheets(0) + DTPS = worksheet.CreateDataTable(New CreateDataTableOptions() With + { + .ColumnHeaders = True, + .StartRow = 0, + .NumberOfColumns = 4, + .NumberOfRows = worksheet.Rows.Count, + .Resolution = ColumnTypeResolution.AutoPreferStringCurrentCulture + }) + + Next + + TxtModalCargaPresupuesto.Text = "" + + RegistraScript("$('#ModalUploadPresupuesto').modal('hide')") + + UpModalCargaPresupuesto.Update() + + Return DTPS + + End Function + + + Private Sub ProcesaDatosCargaPresupuesto(DTPresupuesto As DataTable) + + Dim DTPS = New DataTable + DTPS.Columns.Add("CveContratoDetalle", GetType(Integer)) + DTPS.Columns.Add("Cantidad", GetType(Double)) + DTPS.Columns.Add("CantidadContratada", GetType(Double)) + DTPS.Columns.Add("CveUM", GetType(Integer)) + DTPS.Columns.Add("UM", GetType(String)) + DTPS.Columns.Add("CveClasificacion", GetType(Integer)) + DTPS.Columns.Add("Clasificacion", GetType(String)) + DTPS.Columns.Add("CvePS", GetType(Integer)) + DTPS.Columns.Add("PS", GetType(String)) + DTPS.Columns.Add("CodigoPS", GetType(String)) + DTPS.Columns.Add("PU", GetType(Double)) + DTPS.Columns.Add("Total", GetType(Double)) + DTPS.Columns.Add("CveTipoPresupuesto", GetType(Integer)) + DTPS.Columns.Add("PermitirAvance", GetType(Integer)) + DTPS.Columns.Add("PermitirEstimacion", GetType(Integer)) + DTPS.Columns.Add("UsuarioAvance", GetType(Integer)) + DTPS.Columns.Add("Cantidad_Original", GetType(Double)) + DTPS.Columns.Add("PU_Original", GetType(Double)) + DTPS.Columns.Add("Total_Original", GetType(Double)) + DTPS.Columns.Add("NoIdentificacion", GetType(String)) + DTPS.Columns.Add("LimitarCantidad", GetType(Integer)) + DTPS.Columns.Add("OCInterna", GetType(String)) + DTPS.Columns.Add("Observacion", GetType(String)) + + Dim RowNoEncontrados As String = "" + + For Each DrowPS As DataRow In DTPresupuesto.Rows + + + Dim StrArray() As String = GetPS("PS", DrowPS("PS").ToString).Split("|"c) + Dim CvePS As Integer + Dim CveUM As Integer + + If StrArray.Length > 0 Then + If CBool(StrArray(0)) = True Then + CvePS = StrArray(1).ToEntero + Else + RowNoEncontrados &= StrArray(1) & "<\BR>" + End If + End If + + If CvePS > 0 And DrowPS("Cantidad").ToString.ToDouble > 0 Then + + CveUM = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimeroValor("CveUnidadMedida", "").ToString.ToEntero + + Dim Row As DataRow = DTPS.NewRow() + Row("Cantidad") = DrowPS("Cantidad").ToString.ToDouble + Row("CantidadContratada") = DrowPS("Cantidad").ToString.ToDouble + Row("CveUM") = CveUM + Row("UM") = "" + Row("CveClasificacion") = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimeroValor("CveClasificacion", "").ToString.ToEntero + Row("Clasificacion") = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Clasificacion", $"CveClasificacion = '{ Row("CveClasificacion").ToString }'").ToString + Row("CvePS") = CvePS + Row("PS") = DrowPS("PS").ToString + Row("CodigoPS") = DrowPS("PS").ToString + Row("PU") = DrowPS("PU").ToString.ToDouble + Row("Total") = DrowPS("Cantidad").ToString.ToDouble * DrowPS("PU").ToString.ToDouble + + + Select Case TipoCargaPresupuesto + Case EnumTipoCargaPresupuesto.Ventas + Row("CveTipoPresupuesto") = 2 + Exit Select + Case EnumTipoCargaPresupuesto.Control + Row("CveTipoPresupuesto") = 1 + Exit Select + Case Else + Row("CveTipoPresupuesto") = 1 + End Select + + + Row("NoIdentificacion") = "" + Row("OCInterna") = "" + Row("LimitarCantidad") = 0 + Row("Observacion") = "" + + DTPS.Rows.Add(Row) + + End If + Next + + + + + Dim ErrorProceso = False + Dim ObjContratos As New ClsContratos + Dim TotalRow As Double = 0 + ObjContratos.IniciaTransacSQL() + + For Each Row As DataRow In DTPS.Rows + + If ObjContratos.AddContratosDetalle(CveContrato, Row("CvePS").ToString.ToEntero, Row("Cantidad").ToString.ToDouble, Row("PU").ToString.ToDouble, UsuarioActual.CveUsuario, Row("CveTipoPresupuesto").ToString.ToEntero, Row("NoIdentificacion").ToString, Convert.ToBoolean(Row("LimitarCantidad")), Row("OCInterna").ToString, Observacion:=Row("Observacion").ToString) Then + + If Autorizado Then + Dim msj As String = String.Format("Se agregaron {0} {1} del producto {2} con un precio ${3}.", Row("Cantidad"), Row("UM"), Row("PS"), Row("PU")) + guardarBitacora(msj) + End If + + Dim NrowTmpDT As DataRow = TmpDT.NewRow + + + NrowTmpDT("Cantidad") = Row("Cantidad") + NrowTmpDT("CantidadContratada") = Row("CantidadContratada") + NrowTmpDT("CveUM") = Row("CveUM") + NrowTmpDT("UM") = Row("UM") + NrowTmpDT("CveClasificacion") = Row("CveClasificacion") + NrowTmpDT("Clasificacion") = Row("Clasificacion") + NrowTmpDT("CvePS") = Row("CvePS") + NrowTmpDT("PS") = Row("PS") + NrowTmpDT("CodigoPS") = Row("CodigoPS") + NrowTmpDT("PU") = Row("PU") + NrowTmpDT("Total") = Row("Total") + NrowTmpDT("CveTipoPresupuesto") = Row("CveTipoPresupuesto") + NrowTmpDT("NoIdentificacion") = Row("NoIdentificacion") + NrowTmpDT("OCInterna") = Row("OCInterna") + NrowTmpDT("LimitarCantidad") = Row("LimitarCantidad") + NrowTmpDT("Observacion") = Row("Observacion") + + + NrowTmpDT("CveContratoDetalle") = ObjContratos.DtResultados.Rows(0)("CveContratoDetalle") + + TmpDT.Rows.Add(NrowTmpDT) + TmpDT.AcceptChanges() + + TotalRow = TotalRow + NrowTmpDT("Total").ToString.ToDouble + Else + ErrorProceso = True + Exit For + End If + Next + + + If ErrorProceso Then + ObjContratos.RollBack() + Alert("Se presento un error al cargar el presupuesto.", TipoMensaje.MsgError) + Else + + ObjContratos.Commit() + Alert("Presupuesto Cargado correctamente") + + + Select Case TipoCargaPresupuesto + Case EnumTipoCargaPresupuesto.Ventas + CargaGVPresupuestos(TmpDT.FiltraParametros("CveTipoPresupuesto=2")) + UpGV.Update() + Exit Select + Case EnumTipoCargaPresupuesto.Control + CargaGVPresupuestosInsumos(TmpDT.FiltraParametros("CveTipoPresupuesto=1")) + UpGVInsumos.Update() + Exit Select + Case Else + + End Select + + LbTotalGeneral.Text = (LbTotalGeneral.Text.ToDouble + TotalRow).ToString.FormatoNumero + LblImporte.Text = LbTotalGeneral.Text + UpGral.Update() + + End If + + + + ObjContratos.Dispose() + + If RowNoEncontrados.Length > 0 Then + Alert($"Productos no encontrados
    {RowNoEncontrados} ") + End If + + + End Sub + + + + Protected Sub LnkHabilitaAvance_Click(sender As Object, e As EventArgs) + + Dim GvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) + + Dim PermitirAvance As Integer = GvRow.DataKey("PermitirAvance").ToEntero + + 'Get the button that raised the event + 'Dim btn As CheckBox = DirectCast(sender, CheckBox) + 'Dim gvr As GridViewRow = DirectCast(btn.NamingContainer, GridViewRow) + + Dim CveContratoDetalle As Integer = GvRow.DataKey("CveContratoDetalle").ToString.ToEntero + Dim objContrato As New ClsContratos + + If objContrato.UpdateContratosDetalleAvance(CveContratoDetalle, IIf(PermitirAvance = 1, 0, 1).ToString.ToEntero) Then + Dim row = TmpDT.Select(String.Format("CveContratoDetalle={0}", CveContratoDetalle))(0) + + row("PermitirAvance") = IIf(PermitirAvance = 1, 0, 1).ToString.ToEntero + + + CargaGVPresupuestos(TmpDT.FiltraParametros("CveTipoPresupuesto=2")) + + + Alert("Se ha permitido levantar avance", TipoMensaje.MsgInformacion) + Else + Alert("no se pudo permitir avance", TipoMensaje.MsgAdvertencia) + End If + + objContrato.Dispose() + + End Sub End Class diff --git a/Contratos/FacturacionMasiva.aspx.vb b/Contratos/FacturacionMasiva.aspx.vb index d4d6f5fd4..2cc589153 100644 --- a/Contratos/FacturacionMasiva.aspx.vb +++ b/Contratos/FacturacionMasiva.aspx.vb @@ -195,7 +195,10 @@ Partial Class Contratos_FacturacionMasiva End Sub Protected Sub btnConsultar_Click(sender As Object, e As EventArgs) Handles BtnCargaAsignados.Click - CargaDatos(DdlContrato.SelectedValue.ToEntero, DdlCliente.SelectedValue.ToEntero) + Dim CveContrato As Integer = If(DdlContrato.SelectedValue.ToEntero <= 0, -1, DdlContrato.SelectedValue.ToEntero) + Dim CveCliente As Integer = If(DdlCliente.SelectedValue.ToEntero <= 0, -1, DdlCliente.SelectedValue.ToEntero) + + CargaDatos(CveContrato, CveCliente) RegistraScript("$('#ex').removeClass('expand');$('#ex').addClass('collapse');$('.portlet-body').css('display', '');") End Sub @@ -232,7 +235,10 @@ Partial Class Contratos_FacturacionMasiva Alert("No se generaron facturas", TipoMensaje.MsgAdvertencia) End If - CargaDatos(DdlContrato.SelectedValue.ToEntero, DdlCliente.SelectedValue.ToEntero) + Dim CveContrato As Integer = If(DdlContrato.SelectedValue.ToEntero <= 0, -1, DdlContrato.SelectedValue.ToEntero) + Dim CveCliente As Integer = If(DdlCliente.SelectedValue.ToEntero <= 0, -1, DdlCliente.SelectedValue.ToEntero) + + CargaDatos(CveContrato, CveCliente) RegistraScript("$('#divAgregar').modal('hide')") UpBodyEstatus.Update() End Sub @@ -245,6 +251,7 @@ Partial Class Contratos_FacturacionMasiva Dim Resp As New Modelos.Factura.MMensajeFactura ViewState("CveCicloComercial") = pCveCicloComercial CreaObjetosVenta() + If ObjFactura Is Nothing Or ObjFactura.Cliente Is Nothing Then Alert("Ocurrió un error al procesar los datos de la Venta.", TipoMensaje.MsgError) ObjFactura = Nothing @@ -253,7 +260,7 @@ Partial Class Contratos_FacturacionMasiva If ObjFactura.CveCliente > 0 Then - If DTDetalle.Rows.Count > 0 Then + If ObjFactura.DtDetalle.Rows.Count > 0 Then Resp = ObjFactura.EmitirFactura() @@ -468,9 +475,7 @@ Partial Class Contratos_FacturacionMasiva TmpDT.Columns.Add("EsCargo", GetType(Boolean)) End Sub Private Sub CreaObjetosVenta(Optional VistaPrevia As Boolean = False) - Dim ObjFolios As New ClsGralFolios() - Dim Folio As String = "" - Dim Serie As String = "" + Dim CveProyecto As String = "" Dim CveSubProyecto As String = "" Dim Proyecto As String = "" @@ -479,21 +484,21 @@ Partial Class Contratos_FacturacionMasiva ObjFactura = New Modelos.Factura(UsuarioActual) ObjFactura.DirectorioServidor = Server.MapPath("/") ObjFactura.CveCicloComercial = CveCicloComercial + Dim DR As DataRow = DTCicloComercial.FiltroPrimero($"CveCicloComercial = {CveCicloComercial}") ObjFactura.Version = "3.3" ObjFactura.CveUsuario = UsuarioActual.CveUsuario ObjFactura.CveEmpresa = UsuarioActual.CveEmpresa - ObjFactura.TipoCambio = 20 + ObjFactura.TipoCambio = 1 ObjFactura.ConvertirPesos = False ObjFactura.CveMoneda = DR("CveMoneda").ToString.ToEntero ObjFactura.Moneda = GlobalDTMonedas.FiltroPrimeroValor("Moneda", $"CveMoneda = {ObjFactura.CveMoneda} ") ObjFactura.MonedaSAT = GlobalDTMonedas.FiltroPrimeroValor("AbreviaturaSAT", $"CveMoneda = {DR("CveMoneda").ToString.ToEntero}") ObjFactura.TipoDocto = "Ing" ObjFactura.RefDocto = "" - ObjFactura.Folio = Folio.ToEntero - 'ObjFactura.Folio = If(ExFolioFactura, FolioXML.ToEntero, -1) - ObjFactura.Serie = Serie + ObjFactura.Folio = -1 + ObjFactura.Serie = "-1" ObjFactura.CveMesa = -1 ObjFactura.Fecha = DR("FechaVenc").ToString.ToDate ObjFactura.CvePrePoliza = -1 @@ -533,18 +538,7 @@ Partial Class Contratos_FacturacionMasiva ObjFactura.CveSubProyectoEjecucion = CveSubProyecto.ToEntero - SubProyecto = DR("SubProyectoContrato").ToString - - - If ObjFolios.GetFolios("Ing", UsuarioActual.CveEmpresa) Then - Dim DT As DataTable = ObjFolios.DtResultados.FiltraParametros(String.Format($" Estado = 'Activo' AND CveSubProyecto = {CveSubProyecto} ")) - If DT.Rows.Count > 0 Then - Serie = DT.Rows(0)("Serie").ToString - Folio = DT.Rows(0)("FActual").ToString - End If - DT.Dispose() - End If - ObjFolios.Dispose() + SubProyecto = DR("SubProyectoContrato").ToString Dim objContratos As New ClsContratos If objContratos.GetContratosDetalle(DR("CveContrato").ToString.ToEntero) Then @@ -561,8 +555,6 @@ Partial Class Contratos_FacturacionMasiva ObjFactura.RetISR = SUM(DTDetalle, "ImporteRetISR").ToDecimal ObjFactura.IEPS = SUM(DTDetalle, "ImporteIEPS").ToDecimal ObjFactura.Total = ObjFactura.SubTotal + ObjFactura.IVA + ObjFactura.IEPS - (ObjFactura.RetIVA + ObjFactura.RetISR) - ObjFactura.Serie = Serie - ObjFactura.Folio = Folio.ToEntero For Each row As DataRow In DTDetalle.Rows Dim drPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=row("CvePS").ToString().ToEntero()).FiltroPrimero("") diff --git a/Empresas/140/Formatos/Salidas.rdlc b/Empresas/140/Formatos/Salidas.rdlc index 595add00f..54efe605a 100644 --- a/Empresas/140/Formatos/Salidas.rdlc +++ b/Empresas/140/Formatos/Salidas.rdlc @@ -1187,6 +1187,77 @@ 2pt + + true + true + + + + + Usuario Registró: + + + + + + + Textbox5 + 1.62251cm + 0.79137cm + 0.6cm + 2.90426cm + 6 + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + =Parameters!UsuarioRegistro.Value + + + + + + + Textbox33 + 1.62251cm + 3.69563cm + 0.6cm + 5.93606cm + 7 + + + 2pt + 2pt + 2pt + 2pt + +