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