diff --git a/App_Code/ClsContratos.vb b/App_Code/ClsContratos.vb index 4aa1fc0a5..d57f54cd8 100644 --- a/App_Code/ClsContratos.vb +++ b/App_Code/ClsContratos.vb @@ -773,6 +773,27 @@ Public Class ClsContratos Return Retorno End Function + + Public Function GetContratosObraAvancesControlAcumulativo(CveContrato As Integer, CveEstimacion As Integer, CveEmpresa As Integer) As Boolean + Dim Retorno = False + + DataAdapter("PA_Con_ContratosObraAvancesControlAcumulativo") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveContrato", SqlDbType.Int).Value = CveContrato + .Add("@CveEstimacion", SqlDbType.Int).Value = CveEstimacion + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al consultar elcontrol acumulativo.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + + Return Retorno + End Function + #End Region #Region "C I C L O C O M E R C I A L" diff --git a/Contratos/RepContratosObraAvancesDetalle.aspx b/Contratos/RepContratosObraAvancesDetalle.aspx index 9a193cfdc..1a1269883 100644 --- a/Contratos/RepContratosObraAvancesDetalle.aspx +++ b/Contratos/RepContratosObraAvancesDetalle.aspx @@ -118,7 +118,7 @@
@@ -162,6 +162,14 @@ + + + + + + + +
diff --git a/Contratos/RepContratosObraAvancesDetalle.aspx.vb b/Contratos/RepContratosObraAvancesDetalle.aspx.vb index d17028e61..1a0f797b7 100644 --- a/Contratos/RepContratosObraAvancesDetalle.aspx.vb +++ b/Contratos/RepContratosObraAvancesDetalle.aspx.vb @@ -1,6 +1,7 @@ Imports Extensiones Imports System.Data - +Imports System.IO + Partial Class RepContratosObraAvancesDetalle Inherits ClsPaginas @@ -87,14 +88,205 @@ Partial Class RepContratosObraAvancesDetalle Dim HplNumeroEstimacion As HyperLink = e.Row.FCHyperLink("HplNumeroEstimacion") HplNumeroEstimacion.NavigateUrl = $"./RepContratosObraAvancesPartida.aspx?CveEstimacion={e.Row.DataKey("CveEstimacion")}&NumeroEstimacion={ e.Row.DataKey("NumeroEstimacion")}&CveContrato={ CveContrato }" + Dim LnkAnexo As LinkButton = e.Row.FCLinkButton("LnkAnexo") + + ScriptManager.GetCurrent(Me).RegisterPostBackControl(LnkAnexo) ' NavigateUrl='<%# Eval("CveEstimacion", "RepContratosObraAvancesPartida.aspx?CveEstimacion={0}")%>' End If - End Sub - - 'Protected Sub CmdConsultar_Click(sender As Object, e As EventArgs) Handles BtnConsultar.Click - ' CargaDatos() + End Sub + + 'Protected Sub CmdConsultar_Click(sender As Object, e As EventArgs) Handles BtnConsultar.Click + ' CargaDatos() 'End Sub + Protected Sub LnkAnexo_Click(sender As Object, e As EventArgs) + + Dim GvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) + + Dim CveEstimacion As Integer = GvRow.DataKey("CveEstimacion").ToEntero + Dim NumeroEstimacion As Integer = GvRow.DataKey("NumeroEstimacion").ToEntero + Dim FechaEstimacion As Date = GvRow.DataKey("FechaEstimacion").ToDate + Dim NumeroContrato As String = GvRow.DataKey("NumeroContrato") + + If CveEstimacion > 0 Then + GeneraAnexo(CveEstimacion, NumeroEstimacion, FechaEstimacion, NumeroContrato) + End If + + + End Sub + + + Private Sub GeneraAnexo(CveEstimacion As Integer, NumeroEstimacion As Integer, FechaEstimacion As Date, NumeroContrato As String) + + Dim PlantillaAnexo As String = $"{UsuarioActual.Empresa.Ruta}\Formatos\Anexo.xlsx" + + If Not System.IO.File.Exists(PlantillaAnexo) Then + Alert("No se encuentra la platilla de anexos.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + Dim DtControl As New DataTable + Dim ObjContratos As New ClsContratos + + + + + If ObjContratos.GetContratosObraAvancesControlAcumulativo(CveContrato, CveEstimacion, UsuarioActual.CveEmpresa) Then + DtControl = ObjContratos.DtResultados + End If + ObjContratos.Dispose() + + If DtControl.Rows.Count > 0 Then + + + Dim WBAnexo = New ClosedXML.Excel.XLWorkbook(PlantillaAnexo) + + Dim WBAnexoSalvar = New ClosedXML.Excel.XLWorkbook + + Dim WSControl = WBAnexo.Worksheet(1) + Dim WSDetalle = WBAnexo.Worksheet(2) + + Dim CuerrentRow As Integer = 28 + + WSControl.Cell(17, 2).Value = NumeroEstimacion 'Estimacion + WSControl.Cell(20, 9).Value = FechaEstimacion.ToString("dd/MM/yyyy") 'Fecha estimacion + WSControl.Cell(19, 8).Value = "$ " & DtControl.SUM("Total").ToString("###,###,###.00") 'Total + + WSControl.Cell(20, 6).Value = NumeroContrato + + WSControl.Cell(18, 2).Value = "" 'Lugar + WSControl.Cell(17, 6).Value = "" 'Periodo Fecha Inicial + WSControl.Cell(17, 7).Value = "" 'Periuodo Fecha Final + WSControl.Cell(20, 2).Value = "" 'Obra + WSControl.Cell(22, 7).Value = "" 'Presupuesto segun contrato + WSControl.Cell(19, 5).Value = "" 'Contrtatista + + + + For Each Drow As DataRow In DtControl.Rows + + WSControl.Cell(CuerrentRow, 1).Value = Drow("Codigo").ToString + WSControl.Cell(CuerrentRow, 2).Value = Drow("PS").ToString + WSControl.Cell(CuerrentRow, 3).Value = Drow("Abreviatura").ToString + WSControl.Cell(CuerrentRow, 4).Value = Drow("Cantidad").ToString.ToDecimal + WSControl.Cell(CuerrentRow, 5).Value = Drow("AcumuladoTotal").ToString.ToDecimal + WSControl.Cell(CuerrentRow, 6).Value = Drow("AcumuladoAnterior").ToString.ToDecimal + WSControl.Cell(CuerrentRow, 7).Value = Drow("CantidadActual").ToString.ToDecimal + WSControl.Cell(CuerrentRow, 8).Value = Drow("PU").ToString.ToDecimal + WSControl.Cell(CuerrentRow, 9).Value = Drow("Total").ToString.ToDecimal + + CuerrentRow = CuerrentRow + 1 + Next + + WBAnexo.Worksheet(1).CopyTo(WBAnexoSalvar, "CONTROL") + + + For Each Drow As DataRow In DtControl.Rows + + + If Drow("CantidadActual").ToString.ToDecimal > 0 Then + + WSDetalle.Cell(3, 6).Value = NumeroContrato + + WSDetalle.Cell(4, 9).Value = "" 'Fecha de + WSDetalle.Cell(4, 10).Value = "" 'Fecha a + WSDetalle.Cell(4, 11).Value = NumeroEstimacion + + 'WSDetalle.Picture("Logo").Name = $"Logo{Drow("CveContratoDetalle").ToString}" + 'WSDetalle.Picture("Firma").Name = $"Firma{Drow("CveContratoDetalle").ToString}" + + + WSDetalle.Cell(14, 2).Value = Drow("Codigo").ToString + WSDetalle.Cell(14, 3).Value = Drow("PS").ToString + WSDetalle.Cell(14, 4).Value = Drow("Abreviatura").ToString + + + WSDetalle.Cell(12, 3).Value = "" 'Concepto + + WSDetalle.Cell(14, 10).Value = Drow("CantidadActual").ToString.ToDecimal + WSDetalle.Cell(14, 11).Value = Drow("CantidadActual").ToString.ToDecimal + 'WSDetalle.Cell(61, 6).Value = "" 'Empresario + WSDetalle.Cell(61, 9).Value = Drow("Nombre").ToString 'Cliente + + + + Dim objContrato As New ClsContratos + Dim DTArchivos As New DataTable + + If objContrato.GetContratosAvanceAnexos(Drow("CveContratoDetalle").ToString.ToEntero, Drow("Fecha").ToString, UsuarioActual.CveUsuario, CveEstimacion:=CveEstimacion) Then + DTArchivos = objContrato.DtResultados + End If + objContrato.Dispose() + + Dim Imagenes As New List(Of ClosedXML.Excel.Drawings.IXLPicture) + + Dim CurrectRowImg As Integer = 19 'Row 19 primera imggen + Dim RowH As Double = WSDetalle.Row(19).Height + + For Each drowArchivos In DTArchivos.Rows + + Dim Archivo As String = drowArchivos("Archivo").ToString + Dim RutaArchivo As String = $"{UsuarioActual.Empresa.Ruta}\Contrato\{CveContrato}\Anexos\{Archivo}" + + If File.Exists(RutaArchivo) Then + + Dim Imagen = WSDetalle.AddPicture(RutaArchivo).MoveTo(WSDetalle.Cell(CurrectRowImg, 3)) + Imagen.Scale(WSDetalle.Column(3).Width / (Imagen.OriginalWidth * 0.145D)) + + Dim ImgWidth As Double = Imagen.Height + + Dim nRowmas As Integer = ImgWidth / RowH + + CurrectRowImg = CurrectRowImg + nRowmas + + Imagenes.Add(Imagen) + End If + + Next + WBAnexo.Worksheet(2).CopyTo(WBAnexoSalvar, If(Drow("Codigo").ToString.Trim.Length > 0, Drow("Codigo").ToString, Drow("CvePS").ToString)) + + For Each img As ClosedXML.Excel.Drawings.IXLPicture In Imagenes + img.Delete() + Next + + + End If + + + Next + + + + + Dim msB = New MemoryStream() + WBAnexoSalvar.SaveAs(msB) + + Dim BB As Byte() = msB.ToArray + msB.Dispose() + + Response.Clear() + Response.Buffer = True + Response.AddHeader("content-disposition", "attachment; filename=Anexo_Estimacion" & NumeroEstimacion & ".xlsx") + Response.ContentType = "application/vnd.ms-excel" + Response.BinaryWrite(BB) + Response.End() + + + Else + Alert("No se encontraron datos des control", TipoMensaje.MsgAdvertencia) + End If + + End Sub + + Public Function GetStream(excelWorkbook As ClosedXML.Excel.XLWorkbook) As Stream + + Dim fs = New MemoryStream() + excelWorkbook.SaveAs(fs) + fs.Position = 0 + Return fs + + End Function + End Class \ No newline at end of file