diff --git a/AF/AF.aspx b/AF/AF.aspx index 16220043b..f80e7a164 100644 --- a/AF/AF.aspx +++ b/AF/AF.aspx @@ -1,11 +1,17 @@ <%@ Page Title="AF - Activo Fijo" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="AF.aspx.vb" Inherits="AF_AF" ValidateRequest="false" EnableEventValidation="false" %> + +   + + + +
  • @@ -1012,7 +1018,7 @@ - @@ -1591,9 +1597,8 @@ - -
    IMAGEN
    -
    <%# Container.ItemIndex + 1 %>
    + +
    <%# Container.ItemIndex + 1 %> - <%# CType(Eval("FechaIng"), DateTime).ToString("dd/MM/yyyy") %>
    @@ -3753,7 +3758,108 @@ - + <%--modal parametros documentos--%> + + + <%--modalupluad doc--%> + + <%-- --%> @@ -4169,6 +4275,7 @@ setTimeout(function () { startTimer(request); }, 30000); // callback } + @@ -4183,6 +4290,9 @@ .cbp-popup-lightbox-figure { background-color: #FFF; } + .orange { + background-color: orangered; + } diff --git a/AF/AF.aspx.vb b/AF/AF.aspx.vb index 45d284ece..32714e22c 100644 --- a/AF/AF.aspx.vb +++ b/AF/AF.aspx.vb @@ -7,8 +7,7 @@ Imports System.Data Imports Microsoft.Reporting.WebForms Imports ZXing Imports Newtonsoft.Json.Linq - -Partial Class AF_AF +Partial Class AF_AF Inherits ClsPaginas 'Configuración @@ -388,6 +387,9 @@ Partial Class AF_AF CargaPlagaEnfermedad() ModalidadesPaginaAF() + CargaDocumentacion() + + 'Configuración de Modalidad Update BtnGuardar.Text = "Guardar Cambios" LtlTitulo.Text = "Consulta del Activo Fijo:" @@ -940,7 +942,7 @@ Partial Class AF_AF TxtValorCompra.Text = ObjActivoFijo.ValorCompra.ToString.FormatoNumero TxtFechaCompra.Text = ObjActivoFijo.FechaCompra.ToShortDateString TxtValorCompraMN.Text = ObjActivoFijo.ValorCompraMN.ToString.FormatoNumero - If ObjActivoFijo.ValorCompra <> ObjActivoFijo.ValorCompraMN Then DivValorCompraMN.visible = True + If ObjActivoFijo.ValorCompra <> ObjActivoFijo.ValorCompraMN Then DivValorCompraMN.Visible = True TxtFechaBaja.Text = If(ObjActivoFijo.FechaBaja = New Date(1900, 1, 1), "", ObjActivoFijo.FechaBaja.ToString("dd/MM/yyyy")) @@ -4947,39 +4949,531 @@ Partial Class AF_AF RegistraScript("$('#ModalContaCuenta').modal('show');") End Sub +#Region "D O C U M E N T O S" + + Private Property DTDocumentacion As DataTable + Get + If ViewState("DTDocumentacion") Is Nothing Then + ViewState("DTDocumentacion") = New DataTable + End If + Return DirectCast(ViewState("DTDocumentacion"), DataTable) + End Get + Set(value As DataTable) + ViewState("DTDocumentacion") = value + End Set + End Property + + Private Property DocumentoParametros As String + Get + If ViewState("DocumentoParametros") Is Nothing Then + Return "" + Else + Return ViewState("DocumentoParametros").ToString + End If + End Get + Set(value As String) + ViewState("DocumentoParametros") = value + End Set + End Property - 'Private Sub CargaDocumentacion() + Property CveDocumentacion As Integer + Get + If ViewState("CveDocumentacion") Is Nothing Then + Return -1 + Else + Return DirectCast(ViewState("CveDocumentacion"), Integer) + End If + End Get + Set(value As Integer) + ViewState("CveDocumentacion") = value + End Set + End Property + Property CveDocumentacionElectronica As Integer + Get + If ViewState("CvePersonalClienteDocumentacion") Is Nothing Then + Return -1 + Else + Return DirectCast(ViewState("CvePersonalClienteDocumentacion"), Integer) + End If + End Get + Set(value As Integer) + ViewState("CvePersonalClienteDocumentacion") = value + End Set + End Property + Property ActualizarDocumentacion As Boolean + Get + If ViewState("ActualizarDocumentacion") Is Nothing Then + Return True + Else + Return DirectCast(ViewState("ActualizarDocumentacion"), Boolean) + End If + End Get + Set(value As Boolean) + ViewState("ActualizarDocumentacion") = value + End Set + End Property - ' If CveActivoFijo > 0 Then - ' Dim objRH As New ClsEdocumentacion() + Property Documentacion As String + Get + If ViewState("Documentacion") Is Nothing Then + Return "-1" + Else + Return ViewState("Documentacion").ToString() + End If + End Get + Set(value As String) + ViewState("Documentacion") = value + End Set + End Property + Property AdjuntoDocumentacion As String + Get + If ViewState("AdjuntoDocumentacion") Is Nothing Then + Return "" + Else + Return ViewState("AdjuntoDocumentacion").ToString() + End If + End Get + Set(value As String) + ViewState("AdjuntoDocumentacion") = value + End Set + End Property - ' If objRH.DocumentacionElectronicaGet(CvePersonal, -1, -1, UsuarioActual.Empresa.CveEmpresa, -1) Then - ' DTDocumentacion = objRH.DtResultados - ' End If + Private Property FechaLimite As Date + Get + If ViewState("FechaLimite") Is Nothing Then + Return NowADS().AddDays(15) + Else + Return ViewState("FechaLimite").ToString().ToDate + End If + End Get + Set(value As Date) + ViewState("FechaLimite") = value + End Set - ' If DTDocumentacion.FiltraParametros(" CveDocumentacionTipo = 7 ").Rows.Count > 0 Then - ' GvDocumentosFirma.DataSource = DTDocumentacion.FiltraParametros(" CveDocumentacionTipo = 7 ") - ' Else - ' GvDocumentosFirma.DataSource = Nothing - ' End If + End Property + + Property ObservacionDocumentacion As String + Get + If ViewState("ObservacionDocumentacion") Is Nothing Then + Return "" + Else + Return ViewState("ObservacionDocumentacion").ToString() + End If + End Get + Set(value As String) + ViewState("ObservacionDocumentacion") = value + End Set + End Property + + Private Sub CargaDocumentacion() + + If CveActivoFijo > 0 Then + Dim objRH As New ClsEdocumentacion() + + If objRH.DocumentacionElectronicaGet(-1, -1, -1, UsuarioActual.Empresa.CveEmpresa, -1, CveActivoFijo:=CveActivoFijo, Modulo:=9) Then + DTDocumentacion = objRH.DtResultados + End If + + If DTDocumentacion.Rows.Count > 0 Then + GvDocumentos.DataSource = DTDocumentacion + Else + GvDocumentos.DataSource = Nothing + End If + + objRH.Dispose() + + GvDocumentos.DataBind() + + UpGvDocumentos.Update() + + End If + + End Sub + + Protected Sub GvDocumentos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvDocumentos.RowDataBound - ' If DTDocumentacion.FiltraParametros(" Modulo = 7 ").Rows.Count > 0 Then - ' GVMaterialidad.DataSource = DTDocumentacion.FiltraParametros(" Modulo = 7 ") - ' Else - ' GVMaterialidad.DataSource = Nothing - ' End If + If e.Row.RowType = DataControlRowType.DataRow Then - ' GVMaterialidad.DataBind() - ' GvDocumentosFirma.DataBind() + Dim Adjunto As String = e.Row.DBCampo("Adjunto").ToString() + Dim ImgDownLoadFormato As LinkButton = e.Row.FCLinkButton("ImgDownLoadFormato") + + Dim ImgDownLoad As LinkButton = e.Row.FCLinkButton("ImgDownLoad") + Dim ImgRequired As Literal = e.Row.FCLiteral("ImgRequired") + Dim txtFechaLimite As TextBox = e.Row.FCTextBox("TxtFechaLimite") + Dim requerido As Boolean = If(e.Row.DBCampo("Requerido").ToUpper = "TRUE", True, False) + Dim chkEstatus As CheckBox = e.Row.FCCheckBox("chkEstatus") + Dim documentacionFormato As String = e.Row.DBCampo("DocumentacionFormato").ToString() + Dim Documentacion As String = e.Row.DBCampo("Documentacion").ToString() + Dim _CveDocumentacion As Integer = e.Row.DBCampo("CveDocumentacion").ToString().ToEntero() + Dim separado As Char() = ".".ToString().ToCharArray + Dim array() As String = Adjunto.Split(separado) + Dim extencion As String = "" + Dim existeAdjunto As Boolean = False + Dim TxtFechaVigencia As TextBox = e.Row.FCTextBox("TxtFechaVigencia") + ' FechaVigencia + + Dim DiasLimite As Integer = e.Row.DataKey("DiasLimite").ToString().ToEntero() + Dim AplicaDiasLimite As Boolean = If(e.Row.DataKey("AplicaDiasLimite").ToString() = "1", True, False) + Dim AplicaFechaVencimiento As Boolean = If(e.Row.DataKey("AplicaFechaVencimiento").ToString() = "1", True, False) + + txtFechaLimite.Visible = If(AplicaDiasLimite, True, False) + TxtFechaVigencia.Visible = If(AplicaFechaVencimiento, True, False) + + + + Dim scripMascara As String = " $('#" & TxtFechaVigencia.ClientID & "').mask('00/00/0000');" + RegistraScript(scripMascara) + If array.Length > 0 Then + extencion = array(array.Length - 1) + End If + + If e.Row.DBCampo("Estatus").ToString().ToEntero() = 1 Then + chkEstatus.Checked = True + Else + chkEstatus.Checked = False + End If + + If documentacionFormato = "" Then + ImgDownLoadFormato.Visible = False + Else + Dim linkDescarga As String = "/Empresas/" & UsuarioActual.Empresa.CveEmpresa & "/Formatos/" & CveDocumentacion & "" & documentacionFormato + ImgDownLoadFormato.Visible = True + ScriptManager.GetCurrent(Me.Page).RegisterPostBackControl(ImgDownLoadFormato) + End If + + txtFechaLimite.Text = e.Row.DBCampo("FechaLimite").ToString().ToDate.ToString("dd/MM/yyyy") + + If Adjunto.Trim.Length > 0 Then + + Dim linkDescarga As String = "/Empresas/" & UsuarioActual.Empresa.CveEmpresa & "/AF/" & CveActivoFijo & "/" & Adjunto + Dim linkDescargaArchivo As String = UsuarioActual.Empresa.Ruta & "AF/" & CveActivoFijo & "/" & Adjunto + + If File.Exists(linkDescargaArchivo) Then + + ImgDownLoad.Visible = True + ScriptManager.GetCurrent(Me).RegisterPostBackControl(ImgDownLoad) + + Else + ImgDownLoad.Visible = False + End If + + Else + ImgDownLoad.Visible = False + End If + + If requerido Then + ImgRequired.Text = " " + Else + ' ImgRequired.Text = " " + End If + + End If + + End Sub + + + + + Public Sub DownLoadFormato_ClickDocumentacion(sender As Object, e As EventArgs) + + Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) + + Dim CveDocumentacion As Integer = GvRow.DataKey("CveDocumentacion").ToString().ToEntero() + Dim DocumentacionFormato As String = CveDocumentacion & "_" & GvRow.DataKey("DocumentacionFormato") + + + DescarFormato(DocumentacionFormato) + + 'Dim ObjEdoc As New ClsEdocumentacion + + 'If ObjEdoc.GetDocumentacionParametros(-1, CveDocumentacion, UsuarioActual.CveEmpresa) Then + ' If ObjEdoc.DtResultados.Rows.Count > 0 Then + + ' GvParametros.DataSource = ObjEdoc.DtResultados + ' ObjEdoc.Dispose() + + ' GvParametros.DataBind() + ' UpGvParametros.Update() + + ' DocumentoParametros = DocumentacionFormato + ' RegistraScript("$('#DVDescargaDocumentoParametrosModal').modal('show')") + + ' Else + ' ObjEdoc.Dispose() + ' DescarFormato(DocumentacionFormato) + ' End If + 'Else + ' ObjEdoc.Dispose() + 'End If + + End Sub + + Public Sub DescarFormato(documento As String) + + Dim PathRoot As String = AppDomain.CurrentDomain.BaseDirectory + Dim PathSource As String + Dim pathDesti As String + + PathSource = UsuarioActual.Empresa.Ruta & "Formatos\" & documento + pathDesti = PathRoot & "Temp\" & CveActivoFijo & documento + + If File.Exists(pathDesti) Then + File.Delete(pathDesti) + End If + + File.Copy(PathSource, pathDesti) + + 'Dim objDoc As New clsGemBoxDocument(pathDesti) + 'Dim objRH As New ClsRH + 'objDoc.SustituirTags(objRH.GetDatosTagsDocumentos(CvePersonal, UsuarioActual.CveEmpresa)) + 'objRH.Dispose() + + 'objDoc.Guardar(pathDesti) + + Dim fileinfo As New FileInfo(pathDesti) + + Dim baseUrl As String = Request.Url.GetLeftPart(UriPartial.Authority) + DescargarArchivo(fileinfo.FullName) + 'baseUrl = baseUrl & "/temp/" & fileinfo.Name + 'RegistraScript("Download('" & baseUrl & "')") + + End Sub + + Public Sub UploadModal_ClickDocumentacionFirmaContrato(sender As Object, e As EventArgs) + Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) + + Dim chkEstatus As CheckBox + CveDocumentacionElectronica = GvRow.DataKey("CveDocumentacionElectronica").ToString().ToEntero() + CveDocumentacion = GvRow.DataKey("CveDocumentacion").ToString().ToEntero() + Documentacion = GvRow.DataKey("Documentacion") + AdjuntoDocumentacion = GvRow.DataKey("Adjunto").ToString() + + chkEstatus = GvRow.FCCheckBox("chkEstatus") + + + + ObservacionDocumentacion = GvRow.FCTextBox("TxtObservaciones").Text.Trim.ToUpper + FechaLimite = GvRow.FCTextBox("TxtFechaLimite").Text.ToDate + + AdjuntoDocumentacion = GvRow.DataKey("Adjunto") + + LtlTitulofirmaContrato.Text = "Subir " & Documentacion + + UpTituloFirma.Update() + + RegistraScript("$('#ModalUploadFirmaContratoDocumento').modal({ backdrop: 'static', keyboard: false});") + End Sub + Protected Sub ImgDownLoad_Click(sender As Object, e As EventArgs) + + Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) + + Dim Adjunto As String = GvRow.DataKey("Adjunto").ToString() + Dim ArchivoPath As String = UsuarioActual.Empresa.Ruta & "AF/" & CveActivoFijo & "/" & Adjunto + + DescargarArchivo(ArchivoPath) + + End Sub + + Protected Sub DescargarArchivo(rutaArchivo As String) + + If System.IO.File.Exists(rutaArchivo) Then + + Dim nombreArchivo As String = System.IO.Path.GetFileName(rutaArchivo) + Response.Clear() + Response.ContentType = "application/octet-stream" + Response.AddHeader("Content-Disposition", "attachment; filename=" & nombreArchivo) + Response.AddHeader("Content-Length", New System.IO.FileInfo(rutaArchivo).Length.ToString()) + Response.WriteFile(rutaArchivo) + Response.End() + + Else + + End If + End Sub + + Protected Sub LnkDescargaFormatoParametros_Click(sender As Object, e As EventArgs) + + 'Dim ListaTagsDocumentost As New List(Of TagsDocumentos) + 'Dim ObjRH As New ClsRH + 'ListaTagsDocumentost = ObjRH.GetDatosTagsDocumentos(CvePersonal, UsuarioActual.CveEmpresa) + 'ObjRH.Dispose() + + 'For Each GvRow As GridViewRow In GvParametros.Rows + + ' If GvRow.FCTextBox("TxtParametro").Text.Trim.Length > 0 Then + ' ListaTagsDocumentost.Add(New TagsDocumentos(GvRow.DataKey("Parametro"), GvRow.FCTextBox("TxtParametro").Text)) + ' End If + 'Next + 'Dim PathRoot As String = AppDomain.CurrentDomain.BaseDirectory + 'Dim PathSource As String + 'Dim pathDesti As String + + 'PathSource = UsuarioActual.Empresa.Ruta & "Formatos\" & DocumentoParametros + 'pathDesti = PathRoot & "Temp\" & CveActivoFijo & DocumentoParametros + + 'If File.Exists(pathDesti) Then + ' File.Delete(pathDesti) + 'End If + + 'File.Copy(PathSource, pathDesti) + + 'Dim objDoc As New clsGemBoxDocument(pathDesti) + 'objDoc.SustituirTags(ListaTagsDocumentost) + 'objDoc.Guardar(pathDesti) + + 'Dim fileinfo As New FileInfo(pathDesti) + + 'Dim baseUrl As String = Request.Url.GetLeftPart(UriPartial.Authority) + 'baseUrl = baseUrl & "/temp/" & fileinfo.Name + + 'RegistraScript("$('#DVDescargaDocumentoParametrosModal').modal('hide')", "500") + 'RegistraScript("Download('" & baseUrl & "')") + + + End Sub + + + Protected Sub BtnModalFirmaContratoDocumentoUpload_Click(sender As Object, e As EventArgs) Handles BtnModalFirmaContratoDocumentoUpload.Click + + Dim FileExtension As String = "-1" + Dim Filesgral As List(Of Archivo) = TxtFileFirmaContrato.getfiles().Archivos + Dim Filename As String = "" + + + For Each fileItem As Archivo In Filesgral + Try + + FileExtension = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)).Replace(".", "") + Dim tempArray() As String + tempArray = fileItem.filename.ToString().Split("-".ToCharArray()) + + Dim rutaDestino As String = UsuarioActual.Empresa.Ruta & "AF\" & CveActivoFijo & "\" & Documentacion & "." & FileExtension + Dim rutaAdjuntoAnterior As String = UsuarioActual.Empresa.Ruta & "AF\" & CveActivoFijo & "\" & AdjuntoDocumentacion + + If Not System.IO.Directory.Exists(UsuarioActual.Empresa.Ruta & "AF\" & CveActivoFijo & "\") Then + System.IO.Directory.CreateDirectory(UsuarioActual.Empresa.Ruta & "AF\" & CveActivoFijo & "\") + End If + + If File.Exists(rutaAdjuntoAnterior) And AdjuntoDocumentacion.Trim.Length > 0 Then + File.Delete(rutaAdjuntoAnterior) + End If + + If System.IO.File.Exists(rutaDestino) Then + System.IO.File.Delete(rutaDestino) + End If + + System.IO.File.Move(fileItem.FileUrl, rutaDestino) + + Dim objRH As New ClsEdocumentacion + + + If CveDocumentacionElectronica = -1 Then + If objRH.DocumentacionElectronicaAdd(CveDocumentacion, -1, -1, -1, 1, ObservacionDocumentacion, Documentacion & "." & FileExtension, UsuarioActual.CveUsuario, FechaLimite, CveActivoFijo:=CveActivoFijo) > 0 Then + + End If + Else + If objRH.DocumentacionElectronicaUpdate(CveDocumentacionElectronica, CveDocumentacion, -1, -1, -1, 1, ObservacionDocumentacion, Documentacion & "." & FileExtension, UsuarioActual.CveUsuario, FechaLimite, CveActivoFijo:=CveActivoFijo) Then + + End If + End If + + objRH.Dispose() + + GuardarDocumentosFirmaContrato(CveDocumentacion) + 'CargaDocumentacion() + + + TxtFileFirmaContrato.Text = "" + UpModalFirmaContratoDocumento.Update() + + Catch ex As Exception + OnError("Error al cargar archivo", ex) + End Try + + Next + RegistraScript("$('#ModalUploadFirmaContratoDocumento').modal('hide')", "hidemodal7") + + End Sub + + Private Sub GuardarDocumentosFirmaContrato(Optional _CveDocumentacionExcluir As Integer = -1) + + Dim hasError As Boolean = True + Dim objDocumentos As New ClsEdocumentacion + + For Each dRow As GridViewRow In GvDocumentos.Rows + + + Dim _CveDocumentacion As Integer = dRow.DataKey("CveDocumentacion").ToString().ToEntero() + Dim _Adjunto As String = dRow.DataKey("Adjunto") + 'Dim _Documentacion As String = dRow.DataKey("Documentacion") + Dim _CveDocumentacionElectronica As Integer = dRow.DataKey("CveDocumentacionElectronica").ToString().ToEntero() + Dim _txtObservaciones As TextBox = dRow.FCTextBox("TxtObservaciones") + Dim _TxtFechaLimite As TextBox = dRow.FCTextBox("TxtFechaLimite") + Dim _TxtFechaVigencia As TextBox = dRow.FCTextBox("TxtFechaVigencia") + Dim chkEstatus As CheckBox = dRow.FCCheckBox("chkEstatus") + Dim _estatus As Integer + + _estatus = If(dRow.DataKey("Estatus").ToString().ToUpper = "TRUE", 1, 0) + + Dim _FechaVigencia As Date + Dim _FechaLimite As Date + + Dim DiasLimite As Integer = dRow.DataKey("DiasLimite").ToString().ToEntero() + Dim AplicaDiasLimite As Boolean = If(dRow.DataKey("AplicaDiasLimite").ToString() = "1", True, False) + Dim AplicaFechaVencimiento As Boolean = If(dRow.DataKey("AplicaFechaVencimiento").ToString() = "1", True, False) + + If _TxtFechaVigencia.Text.Length = 10 Then + _FechaVigencia = _TxtFechaVigencia.Text.ToDate + Else + _FechaVigencia = Nothing + End If + + If Not AplicaDiasLimite Then + _FechaLimite = MinFecha + Else + _FechaLimite = _TxtFechaLimite.Text.ToDate + End If + + If Not AplicaFechaVencimiento Then + _FechaVigencia = MinFecha + End If + + + If Not _CveDocumentacionExcluir = _CveDocumentacion Then + Try + If _CveDocumentacionElectronica = -1 Then + + If objDocumentos.DocumentacionElectronicaAdd(_CveDocumentacion, -1, -1, -1, _estatus, _txtObservaciones.Text.Trim, _Adjunto, UsuarioActual.CveUsuario, _FechaLimite, _FechaVigencia, CveActivoFijo:=CveActivoFijo) > 0 Then + Else + hasError = True + Exit For + End If + + Else + If objDocumentos.DocumentacionElectronicaUpdate(_CveDocumentacionElectronica, _CveDocumentacion, -1, -1, -1, _estatus, _txtObservaciones.Text.Trim, _Adjunto, UsuarioActual.CveUsuario, _FechaLimite, _FechaVigencia, CveActivoFijo:=CveActivoFijo) Then + Else + hasError = True + Exit For + End If + End If + + + hasError = False + Catch ex As Exception + hasError = True + Exit For + End Try + End If + Next + + 'refrescar grid datos investigacion + CargaDocumentacion() + End Sub +#End Region - ' UpMaterialidad.Update() - ' UPGvDocumentosFirma.Update() - ' UpGvDocumentosFirma2.Update() - ' End If - 'End Sub End Class \ No newline at end of file diff --git a/AF/CatAF.aspx b/AF/CatAF.aspx index 93612f568..5feeabdb5 100644 --- a/AF/CatAF.aspx +++ b/AF/CatAF.aspx @@ -203,7 +203,7 @@ -
    +
    Tipo Grupo:
    diff --git a/AF/CatAF.aspx.vb b/AF/CatAF.aspx.vb index c35689853..594d4b956 100644 --- a/AF/CatAF.aspx.vb +++ b/AF/CatAF.aspx.vb @@ -71,6 +71,9 @@ Partial Class AF_CatAF CargaPersonalizacion() + If UsuarioActual.CveEmpresa = 13 Then + DVTipoGrupo.Visible = True + End If End If diff --git a/App_Code/BundleConfig.vb b/App_Code/BundleConfig.vb index 540abb2ea..1ab0657f9 100644 --- a/App_Code/BundleConfig.vb +++ b/App_Code/BundleConfig.vb @@ -7,7 +7,7 @@ Public Class BundleConfig bundles.Add(New ScriptBundle("~/bundles/jquery").Include( "~/Metronic/assets/global/plugins/jquery.min.js" )) - ScriptManager.ScriptResourceMapping.AddDefinition("jquery", Nothing, New ScriptResourceDefinition with {.Path = "~/bundles/jquery"}) + ScriptManager.ScriptResourceMapping.AddDefinition("jquery", Nothing, New ScriptResourceDefinition With {.Path = "~/bundles/jquery"}) @@ -170,7 +170,7 @@ Public Class BundleConfig "~/Scripts/WebForms/TreeView.js", "~/Scripts/WebForms/WebParts.js")) - ScriptManager.ScriptResourceMapping.AddDefinition("WebFormsBundle", new ScriptResourceDefinition With {.Path = "~/bundles/WebFormsJs"}) + ScriptManager.ScriptResourceMapping.AddDefinition("WebFormsBundle", New ScriptResourceDefinition With {.Path = "~/bundles/WebFormsJs"}) ' Order is very important for these files to work, they have explicit dependencies bundles.Add(New ScriptBundle("~/bundles/MsAjaxJs").Include( diff --git a/App_Code/ClsEdocumentacion.vb b/App_Code/ClsEdocumentacion.vb index d2f56e68f..2786b035e 100644 --- a/App_Code/ClsEdocumentacion.vb +++ b/App_Code/ClsEdocumentacion.vb @@ -252,7 +252,8 @@ Public Class ClsEdocumentacion #Region "D O C U M E N T A C I O N - E L E C T R O N I C A" - Public Function DocumentacionElectronicaGet(CvePersonal As Integer, CveCliente As Integer, CveProveedor As Integer, CveEmpresa As Integer, CveDocumentacionTipo As Integer, Optional CveVenta As Integer = -1, Optional Modulo As Integer = 1, Optional Periodo As Integer = -1) As Boolean + Public Function DocumentacionElectronicaGet(CvePersonal As Integer, CveCliente As Integer, CveProveedor As Integer, CveEmpresa As Integer, CveDocumentacionTipo As Integer, Optional CveVenta As Integer = -1, Optional Modulo As Integer = 1, + Optional Periodo As Integer = -1, Optional CveActivoFijo As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Edoc_DocumentacionElectronicaGet") @@ -266,6 +267,7 @@ Public Class ClsEdocumentacion .Add("@CveVenta", SqlDbType.Int).Value = CveVenta .Add("@Periodo", SqlDbType.Int).Value = Periodo .Add("@Modulo", SqlDbType.Int).Value = Modulo + .Add("@CveActivoFijo", SqlDbType.Int).Value = CveActivoFijo End With Try @@ -279,7 +281,8 @@ Public Class ClsEdocumentacion End Function Public Function DocumentacionElectronicaAdd(CveDocumentacion As Integer, CvePersonal As Integer, CveCliente As Integer, CveProveedor As Integer, Estatus As Integer, Observacion As String, Adjunto As String, - CveUsuario As Integer, FechaLimite As Date, Optional FechaVigencia As Date = Nothing, Optional CveVenta As Integer = -1, Optional Observacion2 As String = "-1", Optional Periodo As Integer = 190001) As Integer + CveUsuario As Integer, FechaLimite As Date, Optional FechaVigencia As Date = Nothing, Optional CveVenta As Integer = -1, Optional Observacion2 As String = "-1", + Optional Periodo As Integer = 190001, Optional CveActivoFijo As Integer = -1) As Integer Dim Retorno As Integer = 0 @@ -299,6 +302,7 @@ Public Class ClsEdocumentacion .Add("@FechaLimite", SqlDbType.Date).Value = FechaLimite .Add("@FechaVigencia", SqlDbType.Date).Value = FechaVigencia .Add("@Periodo", SqlDbType.Int).Value = Periodo + .Add("@CveActivoFijo", SqlDbType.Int).Value = CveActivoFijo .Add("@CveDocumentacionElectronica", SqlDbType.Int).Direction = ParameterDirection.Output 'FechaVigencia End With @@ -315,7 +319,8 @@ Public Class ClsEdocumentacion Public Function DocumentacionElectronicaUpdate(CveDocumentacionElectronica As Integer, CveDocumentacion As Integer, CvePersonal As Integer, CveCliente As Integer, CveProveedor As Integer, Estatus As Integer, - Observacion As String, Adjunto As String, CveUsuario As Integer, FechaLimite As Date, Optional FechaVigencia As Date = Nothing, Optional Observacion2 As String = "-1") As Boolean + Observacion As String, Adjunto As String, CveUsuario As Integer, FechaLimite As Date, Optional FechaVigencia As Date = Nothing, Optional Observacion2 As String = "-1", + Optional CveActivoFijo As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Edoc_DocumentacionElectronicaUpdate") @@ -333,6 +338,7 @@ Public Class ClsEdocumentacion .Add("@CveUsuario", SqlDbType.VarChar).Value = CveUsuario .Add("@FechaLimite", SqlDbType.Date).Value = FechaLimite .Add("@FechaVigencia", SqlDbType.Date).Value = FechaVigencia + .Add("@CveActivoFijo", SqlDbType.Int).Value = CveActivoFijo ' End With diff --git a/App_Code/ClsVentas.vb b/App_Code/ClsVentas.vb index 9250bda95..8b83de472 100644 --- a/App_Code/ClsVentas.vb +++ b/App_Code/ClsVentas.vb @@ -6096,8 +6096,14 @@ Public Class ClsVentas Try SqlAdapter.Fill(Data) Retorno = True + Catch Ex1 As SqlException + If Ex1.Message.Contains("vigente") Then + Alert("Ya existe una solicitud vigente", TipoMensaje.MsgAdvertencia) + Else + Me.OnError("Ocurrió un error al guardar la autorización.", Ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End If Catch ex As Exception - OnError("Ocurrió un error al obtener los limites.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + OnError("Ocurrió un error al guardar la autorización.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End Try Return Retorno End Function diff --git a/Bancos/CuentasBancariasDetalle.aspx.vb b/Bancos/CuentasBancariasDetalle.aspx.vb index ce0870a00..83eec7caa 100644 --- a/Bancos/CuentasBancariasDetalle.aspx.vb +++ b/Bancos/CuentasBancariasDetalle.aspx.vb @@ -164,11 +164,10 @@ Partial Class Bancos_CuentasBancariasDetalle If DdlTipoCuenta.SelectedValue.ToEntero = 1 Then 'Caja Chica IdPadre = UsuarioActual.Empresa.Funcionalidad(218).ToEntero Else - Dim tesstr = UsuarioActual.Empresa.Funcionalidad(209) IdPadre = UsuarioActual.Empresa.Funcionalidad(209).ToEntero End If - If IdPadre = 0 Then IdPadre = -1 + If IdPadre = 0 Then IdPadre = 1 If Conta.GetCuentasRecursiva(IdPadre, 1) Then dt = Conta.DtResultados diff --git a/Bancos/PagoAcreedor.aspx b/Bancos/PagoAcreedor.aspx index bf3356817..1862f9bc8 100644 --- a/Bancos/PagoAcreedor.aspx +++ b/Bancos/PagoAcreedor.aspx @@ -275,7 +275,7 @@
    -
    +
    @@ -289,7 +289,7 @@
    -
    + diff --git a/Compras/eFacturas.aspx.vb b/Compras/eFacturas.aspx.vb index eda8a2cb2..7176a8e4e 100644 --- a/Compras/eFacturas.aspx.vb +++ b/Compras/eFacturas.aspx.vb @@ -1758,14 +1758,16 @@ Partial Class Compras_eFacturas If RutaPDF = "" Then - Dim Hilo As New System.Threading.Thread(Sub() ProcesarPDF(UsuarioActual, a, FF)) + 'no valida nada solo lo crea y lo pone en la carpeta, no importa si ya existe If SobreEscribirPDFSiExiste Then + Dim Hilo As New System.Threading.Thread(Sub() ProcesarPDF(UsuarioActual, a, FF)) Hilo.Start() Else 'si no existe el pdf, lo procesa - If Not File.Exists(RutaPDF) Then + If Not File.Exists(PDfDestino) Then + Dim Hilo As New System.Threading.Thread(Sub() ProcesarPDF(UsuarioActual, a, FF)) Hilo.Start() End If End If @@ -3050,7 +3052,7 @@ Partial Class Compras_eFacturas End If If SeVerifico Then - SubirFacturas(ListComprimidos, ListXML, ListPDF, Validada:=1, SobreEscribirPDFSiExiste:=False) + SubirFacturas(ListComprimidos, ListXML, ListPDF, Validada:=1,SobreEscribirPDFSiExiste:=False) End If 'If UsuarioActual.CveRol = 1 Then diff --git a/Contabilidad/ContabilidadElectronica.aspx b/Contabilidad/ContabilidadElectronica.aspx index 54a63e6da..bae52ac34 100644 --- a/Contabilidad/ContabilidadElectronica.aspx +++ b/Contabilidad/ContabilidadElectronica.aspx @@ -39,8 +39,8 @@ - + + + +
    Tipo Reporte: - + + @@ -54,21 +54,30 @@ Periodo: - - - - - - - - - + + + + + + + + +
    Tipo Envío: + + + + +

    diff --git a/Contabilidad/ContabilidadElectronica.aspx.vb b/Contabilidad/ContabilidadElectronica.aspx.vb index 6774efaa5..e3e1494bf 100644 --- a/Contabilidad/ContabilidadElectronica.aspx.vb +++ b/Contabilidad/ContabilidadElectronica.aspx.vb @@ -1,9 +1,20 @@ Option Explicit On Option Strict On -Imports System.Data -Imports System.IO Imports Extensiones +Imports System +Imports System.IO +Imports System.Security.Cryptography +Imports System.Security.Cryptography.X509Certificates +Imports System.Text +Imports System.Xml +Imports System.Xml.Xsl +Imports System.Data +Imports CrystalDecisions.Web +Imports DocumentFormat.OpenXml.Wordprocessing +Imports Org.BouncyCastle.Asn1 +Imports Org.BouncyCastle.Tls.Crypto.Impl + Partial Class Contabilidad_ContabilidadElectronica Inherits ClsPaginas @@ -91,11 +102,11 @@ Partial Class Contabilidad_ContabilidadElectronica If UsuarioActual.Empresa.TipoContabilidad = 1 Then Dim objconta As New ClsContabilidad If objconta.GetCuentas(-1, "-1", -1, UsuarioActual.CveEmpresa) Then - DtCuentas = objconta.DtResultados + DtCuentas = objconta.DtResultados.FiltraParametros("CodigoSAT <> ''") End If objconta.Dispose() Else - Dim ObjConpaq As New ClsContPAQi(UsuarioActual.Empresa) + Dim ObjConpaq As New ClsContPAQi(UsuarioActual.Empresa) If ObjConpaq.GetCuentasElectronica(MinFecha, FechaF) Then DtCuentas = ObjConpaq.DtResultados End If @@ -108,14 +119,11 @@ Partial Class Contabilidad_ContabilidadElectronica 'CABECERA Str.Append("") - Str.Append("") + Str.Append("xmlns:catalogocuentas=""http://www.sat.gob.mx/esquemas/ContabilidadE/1_3/CatalogoCuentas"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"">") 'DETALLES For Each Dr As DataRow In DtCuentas.Rows @@ -126,7 +134,7 @@ Partial Class Contabilidad_ContabilidadElectronica Str.AppendFormat("Desc=""{0}"" ", HttpUtility.HtmlEncode(Dr("Nombre").ToString)) Str.AppendFormat("SubCtaDe=""{0}"" ", Dr("CodigoPadre").ToString) Str.AppendFormat("Nivel=""{0}"" ", Dr("Nivel").ToString) - Str.AppendFormat("Natur=""{0}"" ", Dr("Tipo").ToString) + Str.AppendFormat("Natur=""{0}"" ", If(Dr("Tipo").ToString.Contiene("A", "C", "D", "G", "H"), "D", "A")) 'Atributo requerido para expresar la naturaleza de la cuenta o subcuenta. (D - Deudora, A - Acreedora). ( Activo = D ) ( Pasivo = A ) ( Capital = A ) ( Ingreso = A ) ( Costo = D ) ( Gasto = D ) ( Resultado Integral de Financiamiento = D y/o A ) ( Cuentas de orden = D y/o A ). Existen cuentas de Activo, Pasivo y Capital que por su naturaleza pueden presentarse de manera Deudora o Acreedora. Else Str.AppendFormat("CodAgrup=""{0}"" ", Dr("CodAgrup").ToString) Str.AppendFormat("NumCta=""{0}"" ", Dr("NumCta").ToString) @@ -147,31 +155,113 @@ Partial Class Contabilidad_ContabilidadElectronica ArchivoCuentas = $"{UsuarioActual.Empresa.Ruta}/ContabilidadElectronica/{ UsuarioActual.Empresa.RFC}{DdlEjercicio.SelectedValue}{DdlPeriodo.SelectedValue.PadLeft(2, "0"c)}CT.xml" 'SOBREESCRIBE - If System.IO.File.Exists(ArchivoCuentas) Then - System.IO.File.Delete(ArchivoCuentas) - End If - + If System.IO.File.Exists(ArchivoCuentas) Then System.IO.File.Delete(ArchivoCuentas) Dim fs As FileStream = File.Create(ArchivoCuentas) Dim info As Byte() = New UTF8Encoding(True).GetBytes(Str.ToString) fs.Write(info, 0, info.Length) fs.Close() - + Dim Archivo As New System.IO.FileInfo(ArchivoCuentas) 'DESCARGA XML - Dim DescargaZIP As Ionic.Zip.ZipFile = New Ionic.Zip.ZipFile() - - If IO.File.Exists(ArchivoCuentas) Then - DescargaZIP.AddFile(ArchivoCuentas, "") - End If - - DescargaZIP.Save(Response.OutputStream) - Response.AddHeader("content-Disposition", String.Format("attachment; filename={0}{1}{2}CT.zip", UsuarioActual.Empresa.RFC, DdlEjercicio.SelectedValue, DdlPeriodo.SelectedValue.PadLeft(2, "0"c))) - Response.ContentType = "application/zip" - Response.End() + 'Dim DescargaZIP As Ionic.Zip.ZipFile = New Ionic.Zip.ZipFile() + 'If IO.File.Exists(ArchivoCuentas) Then DescargaZIP.AddFile(ArchivoCuentas, "") + 'generar el sello + 'SellarXML(Str.ToString, ArchivoCuentas, 1) + 'DescargaZIP.Save(Response.OutputStream) + 'Response.AddHeader("content-Disposition", String.Format("attachment; filename={0}{1}{2}CT.zip", UsuarioActual.Empresa.RFC, DdlEjercicio.SelectedValue, DdlPeriodo.SelectedValue.PadLeft(2, "0"c))) + 'Response.ContentType = "application/zip" + 'Response.End() + HttpContext.Current.Response.Clear() + HttpContext.Current.Response.ClearContent() + HttpContext.Current.Response.ContentType = "application/xml" + HttpContext.Current.Response.AppendHeader("Content-disposition", String.Format("attachment; filename={0}", Archivo.Name)) + HttpContext.Current.Response.AddHeader("Content-Length", Archivo.Length.ToString()) + HttpContext.Current.Response.TransmitFile(ArchivoCuentas) + 'HttpContext.Current.Response.Flush() + HttpContext.Current.Response.End() + Archivo = Nothing End If End Sub + Private Function SellarXML(xmltexto As String, ArchivoCuentas As String, Opcion As Integer) As String + Dim ArchivoLLave As String = $"{UsuarioActual.Empresa.Ruta}Certificados\{UsuarioActual.Empresa.ArchivoKey}" + Dim Archivopfx As String = $"{UsuarioActual.Empresa.Ruta}Certificados\{UsuarioActual.Empresa.FielPFX }" + Dim Clavepfx As String = UsuarioActual.Empresa.FielPassword + + Dim xsltPath As String + Select Case Opcion + Case 1 + xsltPath = $"{AppDomain.CurrentDomain.BaseDirectory}Temp\CatalogoCuentas_1_3.xslt" + Case 2 + xsltPath = $"{AppDomain.CurrentDomain.BaseDirectory}Temp\BalanzaComprobacion_1_3.xslt" + End Select + + If Not File.Exists(ArchivoLLave) Then + Alert("El archivo de llave privada no existe", TipoMensaje.MsgError) + End If + + ' 1. Cargar y transformar el XML para obtener la Cadena Original + Dim originalCadena As String = GenerarCadenaOriginal(xmltexto, xsltPath) + + ' 2. Cargar tu certificado PFX (incluye la clave privada) + Dim cert As New X509Certificate2(Archivopfx, Clavepfx, X509KeyStorageFlags.MachineKeySet) + + ' 3. Firmar la cadena con SHA256 + Dim selloBytes As Byte() + Using rsa As RSA = cert.GetRSAPrivateKey() + selloBytes = rsa.SignData( + Encoding.UTF8.GetBytes(originalCadena), + HashAlgorithmName.SHA256, + RSASignaturePadding.Pkcs1) + End Using + Dim selloBase64 As String = Convert.ToBase64String(selloBytes) + + ' 4. Obtener el certificado (público) en Base64 y el número de certificado + Dim certBase64 As String = Convert.ToBase64String(cert.RawData) + Dim noCertificado As String = cert.GetSerialNumberString() + + ' 5. Insertar atributos en el XML + Dim xmlDoc As New XmlDocument() + xmlDoc.PreserveWhitespace = True ' conserva espacios y saltos + xmlDoc.LoadXml(xmltexto) + + Dim root As XmlElement = xmlDoc.DocumentElement + root.SetAttribute("Sello", selloBase64) + root.SetAttribute("noCertificado", noCertificado) + root.SetAttribute("certificado", certBase64) + + ' 6. Guardar archivo sellado + Dim StrFinal As String = xmlDoc.OuterXml + Dim fs As FileStream = File.Create(ArchivoCuentas) + Dim info As Byte() = New UTF8Encoding(True).GetBytes(StrFinal) + fs.Write(info, 0, info.Length) + fs.Close() + 'xmlDoc.Save(ArchivoCuentas) + Return StrFinal + End Function + + ''' + ''' Aplica el XSLT para generar la Cadena Original según SAT. + ''' + Function GenerarCadenaOriginal(xmlContenido As String, xsltFile As String) As String + ' Carga la transformación XSLT + Dim xslt As New XslCompiledTransform() + xslt.Load(xsltFile) + + ' Prepara un StringReader sobre el contenido del XML + Using sr As New StringReader(xmlContenido), + xr As XmlReader = XmlReader.Create(sr), + sw As New StringWriter() + + ' Ejecuta la transformación + xslt.Transform(xr, Nothing, sw) + + ' Devuelve la cadena original (trim para quitar saltos extra) + Return sw.ToString().Trim() + End Using + End Function + Private Sub GeneraBalanza() Dim FechaI As Date = String.Format("01/{0}/{1}", DdlPeriodo.SelectedValue.PadLeft(2, "0"c), DdlEjercicio.SelectedValue).ToDate Dim FechaF As Date = FechaI.LastDayOfMonth @@ -186,10 +276,10 @@ Partial Class Contabilidad_ContabilidadElectronica If DtCuentas IsNot Nothing Then Dim Deudor As Decimal = DtCuentas.SUM("SaldoAD") Dim Acreedor As Decimal = DtCuentas.SUM("SaldoAA") - If Deudor <> Acreedor Then - Alert("los Saldos Actuales no cuadran.", TipoMensaje.MsgError) - Exit Sub - End If + 'If Deudor <> Acreedor Then + ' Alert("los Saldos Actuales no cuadran.", TipoMensaje.MsgError) + ' Exit Sub + 'End If End If Else Dim ObjConpaq As New ClsContPAQi(UsuarioActual.Empresa) @@ -204,24 +294,25 @@ Partial Class Contabilidad_ContabilidadElectronica 'CABECERA Str.Append("") - Str.Append("") - + Str.AppendFormat("TipoEnvio=""{0}"" ", DdlTipoEnvío.SelectedValue) + 'SOLO CUANDO ES COMPLEMENTARIA + If DdlTipoEnvío.SelectedValue = "C" Then Str.AppendFormat("FechaModBal=""{0}""", FechaF.ToString("yyyy-MM-dd")) + Str.AppendFormat(">") 'DETALLES - For Each Dr As DataRow In DtCuentas.Rows - Str.Append(" ''").Rows + Str.Append("") Next - DtCuentas.Dispose() 'FIN - Str.Append("") - + Str.Append("") 'GUARDA ARHIVO ArchivoBalanza = Server.MapPath(String.Format("~/Empresas/{0}/ContabilidadElectronica/{1}{2}{3}BN.xml", UsuarioActual.CveEmpresa, UsuarioActual.Empresa.RFC, DdlEjercicio.SelectedValue, DdlPeriodo.SelectedValue.PadLeft(2, "0"c))) @@ -251,30 +340,50 @@ Partial Class Contabilidad_ContabilidadElectronica 'SOBREESCRIBE If System.IO.File.Exists(ArchivoBalanza) Then System.IO.File.Delete(ArchivoBalanza) - Dim fs As FileStream = File.Create(ArchivoBalanza) Dim info As Byte() = New UTF8Encoding(True).GetBytes(Str.ToString) fs.Write(info, 0, info.Length) fs.Close() + Dim Archivo As New System.IO.FileInfo(ArchivoBalanza) - 'DESCARGA XML - Dim DescargaZIP As Ionic.Zip.ZipFile = New Ionic.Zip.ZipFile() + HttpContext.Current.Response.Clear() + HttpContext.Current.Response.ClearContent() + HttpContext.Current.Response.ContentType = "application/xml" + HttpContext.Current.Response.AppendHeader("Content-disposition", String.Format("attachment; filename={0}", Archivo.Name)) + HttpContext.Current.Response.AddHeader("Content-Length", Archivo.Length.ToString()) + HttpContext.Current.Response.TransmitFile(ArchivoBalanza) + 'HttpContext.Current.Response.Flush() + HttpContext.Current.Response.End() + Archivo = Nothing - If IO.File.Exists(ArchivoBalanza) Then - DescargaZIP.AddFile(ArchivoBalanza, "") - End If + ''SOBREESCRIBE + 'If System.IO.File.Exists(ArchivoBalanza) Then System.IO.File.Delete(ArchivoBalanza) + ''DESCARGA XML + 'Dim DescargaZIP As Ionic.Zip.ZipFile = New Ionic.Zip.ZipFile() + ''generar el sello + 'SellarXML(Str.ToString, ArchivoBalanza, 2) - DescargaZIP.Save(Response.OutputStream) - Response.AddHeader("content-Disposition", String.Format("attachment; filename={0}{1}{2}BN.zip", UsuarioActual.Empresa.RFC, DdlEjercicio.SelectedValue, DdlPeriodo.SelectedValue.PadLeft(2, "0"c))) - Response.ContentType = "application/zip" - Response.End() + 'If IO.File.Exists(ArchivoBalanza) Then + ' DescargaZIP.AddFile(ArchivoBalanza, "") + 'End If + + 'DescargaZIP.Save(Response.OutputStream) + 'Response.AddHeader("content-Disposition", String.Format("attachment; filename={0}{1}{2}BN.zip", UsuarioActual.Empresa.RFC, DdlEjercicio.SelectedValue, DdlPeriodo.SelectedValue.PadLeft(2, "0"c))) + 'Response.ContentType = "application/zip" + 'Response.End() End If End Sub #End Region + Protected Sub DdlTipoReporte_SelectedIndexChanged(sender As Object, e As EventArgs) + If DdlTipoReporte.SelectedValue = "1" Then + trTipoEnvio.Visible = False + ElseIf DdlTipoReporte.SelectedValue = "2" Then + trTipoEnvio.Visible = True + End If - + End Sub End Class diff --git a/Contabilidad/RepIVA.aspx b/Contabilidad/RepIVA.aspx index 334824b57..1ce1ea9f3 100644 --- a/Contabilidad/RepIVA.aspx +++ b/Contabilidad/RepIVA.aspx @@ -30,9 +30,9 @@
  • Generar DIOT
  • -
  • - Excel DIOT -
  • +
  • + Excel DIOT +
  • @@ -174,7 +174,7 @@

    IEPS por Porcentaje

    + OnRowDataBound="GvIEPSA_RowDataBound" DataKeyNames="PorcentajeIEPS"> @@ -187,8 +187,8 @@

    IVA por Porcentaje

    - + OnRowDataBound="GvIVAA_RowDataBound" DataKeyNames="PorcentajeIVA"> + @@ -213,7 +213,7 @@ - <%-- --%> + <%-- --%> SubTotal
    16%
    @@ -222,7 +222,7 @@
    - + SubTotal
    Imp. 16%
    @@ -231,16 +231,16 @@
    - <%-- --%> + <%-- --%> SubTotal
    8%
    - +
    - <%-- --%> + <%-- --%> SubTotal
    0%
    @@ -318,6 +318,14 @@
    + + + SubTotal
    Imp. No Tan.16%
    +
    + + + +
    @@ -325,7 +333,7 @@

    IVA por Porcentaje

    + OnRowDataBound="GvIVA2_RowDataBound" DataKeyNames="PorcentajeIVA"> @@ -337,7 +345,7 @@

    Ret IVA

    + OnRowDataBound="GvRetIVA_RowDataBound" DataKeyNames="TipoRetIVA"> diff --git a/Contabilidad/RepIVA.aspx.cs b/Contabilidad/RepIVA.aspx.cs index b78bd060f..8b761791e 100644 --- a/Contabilidad/RepIVA.aspx.cs +++ b/Contabilidad/RepIVA.aspx.cs @@ -333,124 +333,152 @@ public partial class Contabilidad_RepIVA : ClsPaginas protected void LnkTxtDIOT_Click(object sender, EventArgs e) { - ClsContabilidad Objconta = new ClsContabilidad(); StringBuilder SBDIOT = new StringBuilder(); - int Conciliado = DdlTipoMovto.SelectedValue.ToEntero(); + int Conciliado = DdlTipoMovto.SelectedValue.ToEntero(); - if (Objconta.GetRepIVA(txtFechaI.Text.ToDate(), txtFechaF.Text.ToDate(), 2, UsuarioActual.CveUsuario, -1, Conciliado, UsuarioActual.CveEmpresa, TipoCambio, TCEspecifico)) + using (var Objconta = new ClsContabilidad()) { - if (txtFechaI.Text.ToDate() < "2024/12/31".ToDate()) // años anteriores al enero 2025 + if (Objconta.GetRepIVA(txtFechaI.Text.ToDate(), txtFechaF.Text.ToDate(), 2, UsuarioActual.CveUsuario, -1, Conciliado, UsuarioActual.CveEmpresa, TipoCambio, TCEspecifico)) { - foreach (DataRow Drow in Objconta.DtResultados.FiltraParametros("CveCompra is null and CveProveedor > 0 and SubTotal >= 1 ").Rows) // and(IVA > 1 OR IEPS > 0) + if (txtFechaI.Text.ToDate() < "2024/12/31".ToDate()) // años anteriores al enero 2025 { - SBDIOT.AppendLine( - Drow["TipoTercero"].ToString() + "|" + - Drow["TipoOperacion"].ToString() + "|" + - Drow["RFC"].ToString() + "|" + - Drow["NumeroIDFiscal"].ToString() + "|" + - Drow["NombreExtranjero"].ToString() + "|" + - Drow["PaisResidencia"].ToString() + "|" + - Drow["Nacionalidad"].ToString() + "|" + - LV(Drow["valorActos1516"].ToString()) + "|" + - LV(Drow["valorActos15"].ToString()) + "|" + - LV(Drow["ValorIvaNo1516"].ToString()) + "|" + + foreach (DataRow Drow in Objconta.DtResultados.FiltraParametros("CveCompra is null and CveProveedor > 0 and SubTotal >= 1 ").Rows) // and(IVA > 1 OR IEPS > 0) + { + SBDIOT.AppendLine( + Drow["TipoTercero"].ToString() + "|" + + Drow["TipoOperacion"].ToString() + "|" + + Drow["RFC"].ToString() + "|" + + Drow["NumeroIDFiscal"].ToString() + "|" + + Drow["NombreExtranjero"].ToString() + "|" + + Drow["PaisResidencia"].ToString() + "|" + + Drow["Nacionalidad"].ToString() + "|" + + LV(Drow["valorActos1516"].ToString()) + "|" + + LV(Drow["valorActos15"].ToString()) + "|" + + LV(Drow["ValorIvaNo1516"].ToString()) + "|" + - LV(Drow["valorActos1011"].ToString()) + "|" + - LV(Drow["valorActos10"].ToString()) + "|" + - LV(Drow["valorActosImp8"].ToString()) + "|" + - LV(Drow["ValorIvaNo10"].ToString()) + "|" + - LV(Drow["ValorIvaNo08"].ToString()) + "|" + + LV(Drow["valorActos1011"].ToString()) + "|" + + LV(Drow["valorActos10"].ToString()) + "|" + + LV(Drow["valorActosImp8"].ToString()) + "|" + + LV(Drow["ValorIvaNo10"].ToString()) + "|" + + LV(Drow["ValorIvaNo08"].ToString()) + "|" + - LV(Drow["valorActosImp1516"].ToString()) + "|" + - LV(Drow["ValorIvaNoImp16"].ToString()) + "|" + + LV(Drow["valorActosImp1516"].ToString()) + "|" + + LV(Drow["ValorIvaNoImp16"].ToString()) + "|" + - LV(Drow["valorActosImp10"].ToString()) + "|" + - LV(Drow["ValorIvaNoImp10"].ToString()) + "|" + + LV(Drow["valorActosImp10"].ToString()) + "|" + + LV(Drow["ValorIvaNoImp10"].ToString()) + "|" + - LV(Drow["IvaExentoImpo"].ToString()) + "|" + - LV(Drow["IVACero"].ToString()) + "|" + - LV(Drow["IvaExento"].ToString()) + "|" + - LV(Drow["IvaRetenido"].ToString()) + "|" + - LV(Drow["IvaDevoluciones"].ToString()) + "|"); + LV(Drow["IvaExentoImpo"].ToString()) + "|" + + LV(Drow["IVACero"].ToString()) + "|" + + LV(Drow["IvaExento"].ToString()) + "|" + + LV(Drow["IvaRetenido"].ToString()) + "|" + + LV(Drow["IvaDevoluciones"].ToString()) + "|"); + } } - } - else - { - DataTable dtt = new DataTable(); - dtt = Objconta.DtResultados.FiltraParametros("CveCompra is null and CveProveedor > 0 AND ( ActosFN > 0 OR ActosFS > 0 OR Actos16 > 0 OR ActosImp16 > 0 OR ActosImpNotan16 > 0 OR DATasa0 > 0 OR DANoObjetoTN > 0 OR DANoObjetoNoTN > 0 OR NoAcredFN > 0 OR NoAcredNoFN > 0 OR NoAcredNo16 > 0 )"); - //acumula los prov, globales en un solo registro - dtt = AcumularYReemplazar(dtt); - - foreach (DataRow Drow in dtt.Rows) + else { - SBDIOT.AppendLine( - Drow["TipoTercero"].ToString() + "|" + - Drow["TipoOperacion"].ToString() + "|" + - Drow["RFC_DIOT"].ToString() + "|" + - Drow["NumeroIDFiscal"].ToString() + "|" + - Drow["NombreExtranjero"].ToString() + "|" + - Drow["PaisResidenciaFiscal"].ToString() + "|" + - Drow["Jurisdiccion"].ToString() + "|" + - // 3.2 valor de los actos o actividades - LV(Drow["ActosFN"].ToString()) + "|" + // actos norte - LV(Drow["ActosDevFN"].ToString()) + "|" + // desc norte - LV(Drow["ActosFS"].ToString()) + "|" + // actos sur - LV(Drow["ActosDevFS"].ToString()) + "|" + // desc sur - LV(Drow["Actos16"].ToString()) + "|" + // 16% - LV(Drow["ActosDev16"].ToString()) + "|" + // desc 16% - LV(Drow["ActosImp16"].ToString()) + "|" + // importacion 16% - LV(Drow["ActosImpDev16"].ToString()) + "|" + // desc importacion 16% - LV(Drow["ActosImpNotan16"].ToString()) + "|" + // importacion intangibles 16% - LV(Drow["ActosImpNotanDev16"].ToString()) + "|" + // desc intangibles 16% - // 3.3 IVA Acreditable - LV(Drow["AcredFN"].ToString()) + "|" + // actos norte - LV(Drow["AcreNoFN"].ToString()) + "|" + // proporcion actos norte - LV(Drow["AcredFS"].ToString()) + "|" + // actos sur - LV(Drow["AcredNoFS"].ToString()) + "|" + // proporcion actos sur - LV(Drow["Acred16"].ToString()) + "|" + // 16% - LV(Drow["AcredIva16"].ToString()) + "|" + // proporcion 16% - LV(Drow["AcredImp16"].ToString()) + "|" + // importacion 16% - LV(Drow["AcredNoImp16"].ToString()) + "|" + // proporción importacion 16% - LV(Drow["AcredImpIntan16"].ToString()) + "|" + // intangibles 16% - LV(Drow["AcredNoImpIntan16"].ToString()) + "|" + // proporcion intangibles 16% - // 3.4 IVA NO Acreditable - LV(Drow["NoAcredFN"].ToString()) + "|" + - LV(Drow["NoAcredNoFN"].ToString()) + "|" + - LV(Drow["NoAcredExentaFN"].ToString()) + "|" + - LV(Drow["NoAcredNoObjetoFN"].ToString()) + "|" + - LV(Drow["NoAcredFS"].ToString()) + "|" + - LV(Drow["NoAcredNoFS"].ToString()) + "|" + - LV(Drow["NoAcredExentaFS"].ToString()) + "|" + - LV(Drow["NoAcredNoObjetoFS"].ToString()) + "|" + - LV(Drow["NoAcred16"].ToString()) + "|" + - LV(Drow["NoAcredNo16"].ToString()) + "|" + - LV(Drow["NoAcredExenta16"].ToString()) + "|" + - LV(Drow["NoAcredNoObjeto16"].ToString()) + "|" + + DataTable dtt = new DataTable(); + dtt = Objconta.DtResultados.FiltraParametros("CveCompra is null and CveProveedor > 0 AND ( ActosFN > 0 OR ActosFS > 0 OR Actos16 > 0 OR ActosImp16 > 0 OR ActosImpNotan16 > 0 OR DATasa0 > 0 OR DANoObjetoTN > 0 OR DANoObjetoNoTN > 0 OR NoAcredFN > 0 OR NoAcredNoFN > 0 OR NoAcredNo16 > 0 )"); + //acumula los prov, globales en un solo registro + dtt = AcumularYReemplazar(dtt); - LV(Drow["NoAcredTan16"].ToString()) + "|" + - LV(Drow["NoAcredTanNo16"].ToString()) + "|" + - LV(Drow["NoAcredTanExenta16"].ToString()) + "|" + - LV(Drow["NoAcredTanNoObjeto16"].ToString()) + "|" + - LV(Drow["NoAcredImpIntan16"].ToString()) + "|" + - LV(Drow["NoAcredImpIntanNo16"].ToString()) + "|" + - LV(Drow["NoAcredImpIntanExenta16"].ToString()) + "|" + - LV(Drow["NoAcredImpIntanNoObjeto16"].ToString()) + "|" + - // 3.5 datos adicionales - LV(Drow["DAIvaRetenido"].ToString()) + "|" + // VA retenido por el contribuyente - LV(Drow["DAIvaExentoImpo"].ToString()) + "|" + //Actos o actividades pagados en la importación de bienes y servicios por los que no se pagara el IVA (Exentos) - LV(Drow["DAIvaExento"].ToString()) + "|" + // Actos o actividades pagados por los que no se pagará el IVA(Exentos) - LV(Drow["DATasa0"].ToString()) + "|" + // Demás actos o actividades pagados a la tasa del 0% - LV(Drow["DANoObjetoTN"].ToString()) + "|" + // Actos o actividades no objeto del IVA realizados en - LV(Drow["DANoObjetoNoTN"].ToString()) + "|" + // Actos o actividades no objeto del IVA por no contar on establecimiento en territorio nacion - (Drow["DAManifiesto"].ToString())); // Manifiesto que se dio efectos fiscales a los comprobantes que amparan las operaciones realizadas con el proveedor - + var dtSinTipoOperacion = dtt.FiltraParametros("GrpId = 1 AND ISNULL(TipoOperacion,'') = ''"); + + if (dtSinTipoOperacion != null && dtSinTipoOperacion.Rows.Count > 0) + { + var SbSinTipo = new StringBuilder(); + SbSinTipo.Append("Los siguientes proveedores no tienen especificado el tipo de operación:
    "); + foreach (DataRow row in dtSinTipoOperacion.Rows) + { + SbSinTipo.AppendFormat("{0}-{1}
    ", row["RFC"], row["RazonSocial"]); + } + Alert(SbSinTipo.ToString(), TipoMensaje.MsgAdvertencia); + } + else + { + foreach (DataRow Drow in dtt.Rows) + { + SBDIOT.AppendLine( + Drow["TipoTercero"].ToString() + "|" + + Drow["TipoOperacion"].ToString() + "|" + + Drow["RFC_DIOT"].ToString() + "|" + + Drow["NumeroIDFiscal"].ToString() + "|" + + Drow["NombreExtranjero"].ToString() + "|" + + Drow["PaisResidenciaFiscal"].ToString() + "|" + + Drow["Jurisdiccion"].ToString() + "|" + + // 3.2 valor de los actos o actividades + LV(Drow["ActosFN"].ToString()) + "|" + // actos norte + LV(Drow["ActosDevFN"].ToString()) + "|" + // desc norte + LV(Drow["ActosFS"].ToString()) + "|" + // actos sur + LV(Drow["ActosDevFS"].ToString()) + "|" + // desc sur + LV(Drow["Actos16"].ToString()) + "|" + // 16% + LV(Drow["ActosDev16"].ToString()) + "|" + // desc 16% + LV(Drow["ActosImp16"].ToString()) + "|" + // importacion 16% + LV(Drow["ActosImpDev16"].ToString()) + "|" + // desc importacion 16% + LV(Drow["ActosImpNotan16"].ToString()) + "|" + // importacion intangibles 16% + LV(Drow["ActosImpNotanDev16"].ToString()) + "|" + // desc intangibles 16% + // 3.3 IVA Acreditable + LV(Drow["AcredFN"].ToString()) + "|" + // actos norte + LV(Drow["AcreNoFN"].ToString()) + "|" + // proporcion actos norte + LV(Drow["AcredFS"].ToString()) + "|" + // actos sur + LV(Drow["AcredNoFS"].ToString()) + "|" + // proporcion actos sur + LV(Drow["Acred16"].ToString()) + "|" + // 16% + LV(Drow["AcredIva16"].ToString()) + "|" + // proporcion 16% + LV(Drow["AcredImp16"].ToString()) + "|" + // importacion 16% + LV(Drow["AcredNoImp16"].ToString()) + "|" + // proporción importacion 16% + LV(Drow["AcredImpIntan16"].ToString()) + "|" + // intangibles 16% + LV(Drow["AcredNoImpIntan16"].ToString()) + "|" + // proporcion intangibles 16% + // 3.4 IVA NO Acreditable + LV(Drow["NoAcredFN"].ToString()) + "|" + + LV(Drow["NoAcredNoFN"].ToString()) + "|" + + LV(Drow["NoAcredExentaFN"].ToString()) + "|" + + LV(Drow["NoAcredNoObjetoFN"].ToString()) + "|" + + LV(Drow["NoAcredFS"].ToString()) + "|" + + LV(Drow["NoAcredNoFS"].ToString()) + "|" + + LV(Drow["NoAcredExentaFS"].ToString()) + "|" + + LV(Drow["NoAcredNoObjetoFS"].ToString()) + "|" + + LV(Drow["NoAcred16"].ToString()) + "|" + + LV(Drow["NoAcredNo16"].ToString()) + "|" + + LV(Drow["NoAcredExenta16"].ToString()) + "|" + + LV(Drow["NoAcredNoObjeto16"].ToString()) + "|" + + + LV(Drow["NoAcredTan16"].ToString()) + "|" + + LV(Drow["NoAcredTanNo16"].ToString()) + "|" + + LV(Drow["NoAcredTanExenta16"].ToString()) + "|" + + LV(Drow["NoAcredTanNoObjeto16"].ToString()) + "|" + + LV(Drow["NoAcredImpIntan16"].ToString()) + "|" + + LV(Drow["NoAcredImpIntanNo16"].ToString()) + "|" + + LV(Drow["NoAcredImpIntanExenta16"].ToString()) + "|" + + LV(Drow["NoAcredImpIntanNoObjeto16"].ToString()) + "|" + + // 3.5 datos adicionales + LV(Drow["DAIvaRetenido"].ToString()) + "|" + // VA retenido por el contribuyente + LV(Drow["DAIvaExentoImpo"].ToString()) + "|" + //Actos o actividades pagados en la importación de bienes y servicios por los que no se pagara el IVA (Exentos) + LV(Drow["DAIvaExento"].ToString()) + "|" + // Actos o actividades pagados por los que no se pagará el IVA(Exentos) + LV(Drow["DATasa0"].ToString()) + "|" + // Demás actos o actividades pagados a la tasa del 0% + LV(Drow["DANoObjetoTN"].ToString()) + "|" + // Actos o actividades no objeto del IVA realizados en + LV(Drow["DANoObjetoNoTN"].ToString()) + "|" + // Actos o actividades no objeto del IVA por no contar on establecimiento en territorio nacion + (Drow["DAManifiesto"].ToString())); // Manifiesto que se dio efectos fiscales a los comprobantes que amparan las operaciones realizadas con el proveedor + + } + + Response.Clear(); + Response.ClearHeaders(); + + Response.AppendHeader("Content-Length", SBDIOT.ToString().Length.ToString()); + Response.ContentType = "text/plain"; + Response.AppendHeader("Content-Disposition", $"attachment;filename=DIOT_{txtFechaI.Text.ToDate().ToString("ddMMyyyy")}_{txtFechaI.Text.ToDate().ToString("ddMMyyyy")}.txt"); + + Response.Write(SBDIOT.ToString()); + Response.End(); + } } - + } - + } - Objconta.Dispose(); + + //MemoryStream ms = new MemoryStream(); //TextWriter tw = new StreamWriter(ms, System.Text.Encoding.UTF8); @@ -469,15 +497,7 @@ public partial class Contabilidad_RepIVA : ClsPaginas //Response.BinaryWrite(bytes); //Response.End(); - Response.Clear(); - Response.ClearHeaders(); - Response.AppendHeader("Content-Length", SBDIOT.ToString().Length.ToString()); - Response.ContentType = "text/plain"; - Response.AppendHeader("Content-Disposition", $"attachment;filename=DIOT_{ txtFechaI.Text.ToDate().ToString("ddMMyyyy") }_{txtFechaI.Text.ToDate().ToString("ddMMyyyy") }.txt"); - - Response.Write(SBDIOT.ToString()); - Response.End(); } static DataTable AcumularYReemplazar(DataTable dt) diff --git a/Empresas/7/Formatos/26_CompromisoAsistenciaISSPE.docx b/Empresas/7/Formatos/26_CompromisoAsistenciaISSPE.docx deleted file mode 100644 index e4f718eb8..000000000 Binary files a/Empresas/7/Formatos/26_CompromisoAsistenciaISSPE.docx and /dev/null differ diff --git a/General/CatDocumentacionTipo.aspx b/General/CatDocumentacionTipo.aspx index c08e6c5b1..0409ab3c5 100644 --- a/General/CatDocumentacionTipo.aspx +++ b/General/CatDocumentacionTipo.aspx @@ -103,6 +103,7 @@ Catalogo Documentacion Tipo Clientes Proveedor <%-- Nota: EL tipo Tres es tipo Auditoria de documentos de proveedor usadon el portal prveedor y --%> Inicio + Activos Fijos diff --git a/General/Dashboard.aspx b/General/Dashboard.aspx index 7f2ab1c75..213c8a410 100644 --- a/General/Dashboard.aspx +++ b/General/Dashboard.aspx @@ -813,6 +813,16 @@ /*---------------------------------------- ANCHO DE COLUMNAS DE IMPORTES (AÑO, MES, ETC) -----------------------------------------*/ + + /* Ancho libre para primeras columnas (Sucursal, Vendedor, etc.) */ + .custom-grid td:first-child, + .custom-grid th:first-child { + width: auto !important; + min-width: auto !important; + max-width: none !important; + + } + .custom-grid td:nth-child(2), .custom-grid td:nth-child(3), .custom-grid td:nth-child(4), @@ -830,7 +840,6 @@ .custom-grid th:nth-child(4), .custom-grid th:nth-child(5) { text-align: center !important; - } /* Asegurar ancho libre para primera columna */ diff --git a/Inventarios/Kardex.aspx b/Inventarios/Kardex.aspx index decbb8933..e6c663354 100644 --- a/Inventarios/Kardex.aspx +++ b/Inventarios/Kardex.aspx @@ -787,7 +787,7 @@
    - Imprimir QR + Imprimir QR
    -
    -
    - +
    Activos: +
    + - - + + - -
    - Filtrar +
    Agregar @@ -1510,7 +1508,7 @@ CssClass="lnkMovotPermanente" runat="server" Text='<%# Eval("FechaInicioAplicacion", "{0:dd/MM/yyyy}")%>'> - + diff --git a/Nomina/Nomina.aspx.cs b/Nomina/Nomina.aspx.cs index f16e7c17b..8ea08208b 100644 --- a/Nomina/Nomina.aspx.cs +++ b/Nomina/Nomina.aspx.cs @@ -7866,8 +7866,7 @@ public partial class Nomina_Nomina2 : ClsPaginas DdlConcepto.DataBind(); //DdlConcepto.Items.Insert(0, new ListItem("Seleccione", "-1")); } - - protected void LnkFiltro_Click(object sender, EventArgs e) + private void CargaMovtoPermanente() { int estatus = ddlmvtoperfiltroestatus.SelectedValue.ToEntero(); using (ClsNominas ObjMovt = new ClsNominas()) @@ -7883,20 +7882,6 @@ public partial class Nomina_Nomina2 : ClsPaginas } GVMovtoPermanente.DataBind(); UpMovtosPermanentes.Update(); - - - } - private void CargaMovtoPermanente() - { - ddlmvtoperfiltroestatus.SelectedValue = "-1"; - using (ClsNominas ObjMovt = new ClsNominas()) - { - ObjMovt.GetMovtoPermanente(UsuarioActual.CveEmpresa, SRCvePersonal); - GVMovtoPermanente.DataSource = ObjMovt.DtResultados; - - } - GVMovtoPermanente.DataBind(); - UpMovtosPermanentes.Update(); } protected void DdlTipo_SelectedIndexChanged(object sender, EventArgs e) { @@ -12519,4 +12504,9 @@ public partial class Nomina_Nomina2 : ClsPaginas } + + protected void ddlmvtoperfiltroestatus_SelectedIndexChanged(object sender, EventArgs e) + { + CargaMovtoPermanente(); + } } \ No newline at end of file diff --git a/Nomina/RepMovtosPermanentes.aspx.cs b/Nomina/RepMovtosPermanentes.aspx.cs index 0f2c1cedd..81e63b937 100644 --- a/Nomina/RepMovtosPermanentes.aspx.cs +++ b/Nomina/RepMovtosPermanentes.aspx.cs @@ -71,20 +71,15 @@ public partial class Nomina_RepMovtosPermanentes : ClsPaginas } protected void CargaCombos() - { - using (ClsRH orh = new ClsRH()) - { - if (orh.GetPersonal(-1, UsuarioActual.CveEmpresa)) - { - DDlPersonal.DataSource = orh.DtResultados; - } - DDlPersonal.DataBind(); - } + { + DDlPersonal.DataSource = get_GlobalDTRHPersonal(UsuarioActual.CveEmpresa); + DDlPersonal.DataBind(); + using (ClsNominas onom = new ClsNominas()) { if (onom.GetConceptos(UsuarioActual.CveEmpresa)) { - DDLConcepto.DataSource = onom.DtResultados; + DDLConcepto.DataSource = onom.DtResultados.FiltraParametros(" FormulaTotal = 'FNC.[MovimientosPermanentes]' OR Concepto like '%FONACOT%'"); } DDLConcepto.DataBind(); } diff --git a/Nomina/ReportedeAcumulados.aspx.cs b/Nomina/ReportedeAcumulados.aspx.cs index 46c7eaf91..76d441dfe 100644 --- a/Nomina/ReportedeAcumulados.aspx.cs +++ b/Nomina/ReportedeAcumulados.aspx.cs @@ -96,6 +96,8 @@ public partial class Nomina_ReportedeAcumulados : ClsPaginas CargaTiposPeriodo(); CargarCentrosDeCosto(DdlProyecto, null, LblProyecto, LblSubProyeccto, "");//DdlSubProyecto divddlproyeto.Visible = DdlProyecto.Visible; + DdlTurno.DataSource = get_GlobalDTTurno(UsuarioActual.CveEmpresa); + DdlTurno.DataBind(); //CargarCentrosDeCosto(DdlProyecto As DropDownList, DdlSubProyecto As DropDownList, LthProyectoP As Label, LblSubProyecto As Label, Optional AplicaTodos As String = "Todos", Optional DdlSubProyectoMultiple As ListBox = Nothing) } } diff --git a/OP/OP.aspx b/OP/OP.aspx index 82f0c1184..dfdc3300f 100644 --- a/OP/OP.aspx +++ b/OP/OP.aspx @@ -309,6 +309,19 @@ background: #f8f9fa; cursor: pointer; } + /* Alinear celda y contenido a la derecha */ +.celda-derecha { + text-align: right !important; + +} + +.txt-merma { + /* Ancho reducido al 50% */ + margin-left: 30px !important; /* Mueve el TextBox a la derecha dentro de la celda */ + display: block !important; /* Permite que margin-left:auto funcione */ + /* Alinea el texto interno a la derecha */ +} + @@ -338,7 +351,7 @@
    -
    +
    -
    - -
    -
    -
    -
    -
    - - - -
    - -
    - - - -
    - -
    -
    -
    -
    -
    -
    - - - - -
    -
    -
    - - - -
    -
    -
    - - - - - -
    -
    + +
    -
    - + + +
    + + + +
    -
    -
    - - - - + + + + + + +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    + + + +
    + +
    + + + +
    +
    - - - - - -
    + + + +
    +
    +
    + + + +
    +
    +
    - +
    @@ -437,23 +447,17 @@
    - - + +
    -
    - +
    @@ -466,13 +470,15 @@
    - +
    +
    +
    + + + +
    +
    + + - -
    - -
    + -
    -
    - -
    -
    - -
    -
    - -
    -
    + + +
    +
    +
    +