@@ -716,10 +767,258 @@
"December": "Diciembre",
};
- var dateAxis;
+ let dateAxis;
+ let yAxis;
function cargaDiagramaGrant(data, categorias, TipoVista) {
+ am5.ready(function () {
+ // SI YA HAY GRÁFICA, QUITA LA ACTUAL PARA HACER UNA NUEVA
+ root.container.children.clear();
+
+ root.dateFormatter.setAll({
+ dateFormat: "yyyy-MM-dd HH:mm:ss",
+ dateFields: ["valueX", "openValueX"]
+ });
+
+ root.locale = am5locales_es_ES;
+
+ // Establecer temas
+ root.setThemes([
+ am5themes_Animated.new(root)
+ ]);
+
+ // Crear gráfico
+ let chart = root.container.children.push(am5xy.XYChart.new(root, {
+ panX: false,
+ panY: false, // Habilita el desplazamiento vertical
+ wheelX: "none",
+ wheelY: "none", // Habilita el scroll vertical con la rueda del mouse
+ layout: root.verticalLayout,
+ paddingLeft: 0
+ }));
+
+
+ // Deshabilitar el enmascaramiento en el plotContainer
+ //chart.plotContainer.set("mask", null); // quita rendimiento
+
+ // Agregar leyenda
+ let legend = chart.children.push(am5.Legend.new(root, {
+ centerX: am5.p50,
+ x: am5.p50
+ }));
+
+ let colors = chart.get("colors");
+
+ // Definir cellSize para el tamaño fijo de cada categoría en el eje Y
+ let cellSize = 45;
+
+ //if (TipoVista == 1) {
+ // cellSize = 60;
+ //}
+
+ // Crear eje Y (CategoryAxis)
+ chart.paddingTop = 40;
+
+ yAxis = chart.yAxes.push(
+ am5xy.CategoryAxis.new(root, {
+ categoryField: "category",
+ renderer: am5xy.AxisRendererY.new(root, {
+ inversed: false,
+ minGridDistance: cellSize, // Asigna el tamaño fijo a cada unidad
+ minorGridEnabled: true,
+ neverHide: true,
+ forceHidden: false,
+ oversizedBehavior: "none",
+ location: 0.5,
+ fontSize: 12, // Ajusta el tamaño de fuente si es necesario
+ visible: true, // Asegura que las etiquetas sean visibles
+ minPosition: 0.001,
+ maxPosition: 0.999,
+ minGridDistance: 1, // Reduced from cellSize to 1
+ }),
+ tooltip: am5.Tooltip.new(root, {
+ themeTags: ["axis"],
+ animationDuration: 200
+ })
+ })
+ );
+
+ //yAxis.renderer.grid.template.disabled = !showgrid;
+ //yAxis.paddingLeft = 10;
+ //yAxis.paddingRight = 10;
+ //yAxis.layout = "absolute";
+
+ // Set up axis title
+ //yAxis.title.text = "Unidades";
+ //yAxis.title.rotation = 0;
+ //yAxis.title.align = "center";
+ //yAxis.title.valign = "top";
+
+ yAxis.set('strictMinMax', true);
+ yAxis.set('maxDeviation', 0);
+ yAxis.set('start', 0);
+ yAxis.set('end', 1);
+
+ yAxis.data.setAll(categorias);
+
+ // Asegurar que las etiquetas del eje Y siempre se muestren
+ //yAxis.get("renderer").labels.template.setAll({
+ // forceHidden: false,
+ // oversizedBehavior: "none",
+ // location: 0.5,
+ // fontSize: 12, // Ajusta el tamaño de fuente si es necesario
+ // visible: true, // Asegura que las etiquetas sean visibles
+ // minPosition: 0.001,
+ // maxPosition: 0.999
+ //});
+
+ // Configurar el eje Y para evitar zoom automático
+
+
+ // Obtener valores de las cajas de texto
+ let fechaI = document.getElementById('<%= txtFechaI.ClientID %>').value;
+ let fechaF = document.getElementById('<%= txtFechaF.ClientID %>').value;
+
+ // Convertir valores a objetos Date
+ let minDate = new Date(fechaI.split("/").reverse().join("-"));
+ let maxDate = new Date(fechaF.split("/").reverse().join("-"));
+ maxDate.setHours(23, 59, 59, 999);
+
+
+
+ // Crear eje X (DateAxis)
+ let xAxis = am5xy.DateAxis.new(root, {
+ baseInterval: { timeUnit: "hour", count: 1 },
+ renderer: am5xy.AxisRendererX.new(root, {
+ opposite: true,
+ minorGridEnabled: true,
+ minGridDistance: 50 // Ajusta según sea necesario para evitar superposición
+ }),
+ min: minDate.getTime(),
+ max: maxDate.getTime(),
+ groupData: false,
+ markUnitChange: false
+ });
+
+ // Agregar el eje X al contenedor superior
+ chart.topAxesContainer.children.push(xAxis);
+
+ // Asegurar que todas las etiquetas se muestren
+ xAxis.get("renderer").labels.template.setAll({
+ forceHidden: false,
+ minPosition: 0.001,
+ maxPosition: 0.999,
+ location: 0.5,
+ fontSize: 14, // Tamaño de fuente
+ fontWeight: "bold"
+ });
+
+ // Formatear las etiquetas de fecha
+ xAxis.get("renderer").labels.template.adapters.add("text", function (text, target) {
+ let dataItem = target.dataItem;
+ if (dataItem) {
+ let value = dataItem.get('value');
+ let date = new Date(value);
+ let day = date.getDate().toString().padStart(2, '0');
+ let month = (date.getMonth() + 1).toString().padStart(2, '0');
+ return day + '/' + month;
+ } else {
+ return text;
+ }
+ });
+
+ // Añadir la serie
+ let series = chart.series.push(am5xy.ColumnSeries.new(root, {
+ xAxis: xAxis,
+ yAxis: yAxis,
+ openValueXField: "fromDate",
+ valueXField: "toDate",
+ categoryYField: "category"
+ /*, sequencedInterpolation: true*/
+ }));
+
+ series.columns.template.setAll({
+ templateField: "columnSettings",
+ strokeOpacity: 0,
+ tooltipText: "UNIDAD: {category}-{unidad} \nCONTRATO: {contrato} \nDURACIÓN: {openValueX} - {valueX}"
+ });
+
+ series.data.processor = am5.DataProcessor.new(root, {
+ dateFields: ["fromDate", "toDate"],
+ dateFormat: "yyyy-MM-dd HH:mm:ss"
+ });
+
+ series.data.setAll(data);
+
+ //// Scrollbar X
+ //var scrollbarX = am5.Scrollbar.new(root, {
+ // orientation: "horizontal"
+ //});
+
+ //chart.set("scrollbarX", scrollbarX);
+ //chart.bottomAxesContainer.children.push(scrollbarX);
+
+ // Scrollbar Y
+ //let scrollbarY = am5.Scrollbar.new(root, {
+ // orientation: "vertical"
+ //});
+
+ //chart.set("scrollbarY", scrollbarY);
+ //chart.rightAxesContainer.children.push(scrollbarY);
+
+ // MOSTRAR MODAL DE CONTRATO AL HACER CLICK
+ series.columns.template.events.on("click", e => {
+ let cveContrato = e.target.dataItem.dataContext.cveContrato;
+
+ $('#<%=HdnCveContrato.ClientID%>').val(cveContrato);
+
+ let url = '/Ashx/CargaEventos.ashx?METODO=contrato_transportes';
+ let parametros = '&cveContrato=' + cveContrato + '&U=' + '<%= UsuarioActual.CveUsuario %>' + '&E=' + '<%= UsuarioActual.CveEmpresa %>' + '&tipoVista=' + '<%= RBTipoVista.Text %>' + '&CveUsuarioPara:' + $('#DdlTecnico').val() + '&CveSubProyecto:' + $('#DdlSubProyecto').val();
+
+ fetch(url + parametros).then(response => response.json()).then(json => {
+ updateEvent(json[0], null, false);
+ }).catch(err => console.log('Solicitud fallida', err));
+ });
+
+
+
+ series.events.on("datavalidated", function (ev) {
+
+ let xAxisHeight = xAxis.height();
+ let chartHeight = categorias.length * cellSize + xAxisHeight + chart.get("paddingTop", 0) + chart.get("paddingBottom", 0);
+
+ // Establece la altura calculada en el contenedor del gráfico
+ chart.root.dom.style.height = chartHeight + "px";
+
+ // Asegurar que el eje Y no esté con zoom
+ yAxis.zoom(0, 1);
+ });
+
+ // Animaciones al cargar
+ series.appear();
+ chart.appear(1000, 100);
+
+ }); // end am5.ready()
+ }
+
+ function zoomAxisy(inicio,fin) {
+ setTimeout(() => {
+ //yAxis.zoomToIndexes(inicio, fin);
+ }, 100);
+
+ }
+ function zoomAxis(anioI, mesI, diaI, anioF, mesF, diaF) {
+ setTimeout(() => {
+ // dateAxis.zoomToDates(new Date(anioI, mesI, diaI), new Date(anioF, mesF, diaF));
+ }, 1500);
+
+ }
+
+
+
+ <%--function cargaDiagramaGrant(data, categorias, TipoVista) {
+
am5.ready(function () {
//SI YA HAY GRAFICA, QUITA LA ACTUAL PARA HACER UNA NUEVA
root.container.children.clear();
@@ -740,10 +1039,10 @@
// Create chart
// https://www.amcharts.com/docs/v5/charts/xy-chart/
var chart = root.container.children.push(am5xy.XYChart.new(root, {
- panX: true,
+ panX: false,
panY: false,
- wheelX: "panX",
- wheelY: "zoomX",
+ wheelX: "none",
+ wheelY: "none",
layout: root.verticalLayout,
paddingLeft: 0
}));
@@ -783,23 +1082,46 @@
var minDate = new Date(fechaI.split("/").reverse().join("-"));
var maxDate = new Date(fechaF.split("/").reverse().join("-"));
- dateAxis = am5xy.DateAxis.new(root, {
- baseInterval: { timeUnit: "day", count: 1 },
- renderer: am5xy.AxisRendererX.new(root, {
- minorGridEnabled: true,
- minGridDistance: 90
- }),
- min: minDate.getTime(),
- max: maxDate.getTime()
- //min: new Date(2024, 6, 15).getTime(),
- //max: new Date(2024, 6, 31).getTime()
+
+ var xAxis = chart.xAxes.push(
+ am5xy.DateAxis.new(root, {
+ baseInterval: { timeUnit: "day", count: 1 },
+ renderer: am5xy.AxisRendererX.new(root, {
+ opposite: true,
+ minorGridEnabled: true,
+ minGridDistance: 30 // Ajusta según sea necesario
+ }),
+ min: minDate.getTime(),
+ max: maxDate.getTime(),
+ groupData: false,
+ markUnitChange: false
+ })
+ );
+
+ // Asegurar que todas las etiquetas se muestren
+ xAxis.get("renderer").labels.template.setAll({
+ forceHidden: false,
+ minPosition: 0.001,
+ maxPosition: 0.999,
+ location: 0.5 // Centra las etiquetas
});
- var xAxis = chart.xAxes.push(
- dateAxis
- );
- chart.topAxesContainer.children.push(dateAxis);
+ // Formatear las etiquetas de fecha
+ xAxis.get("renderer").labels.template.adapters.add("text", function (text, target) {
+ var dataItem = target.dataItem;
+ if (dataItem) {
+ var value = dataItem.get('value');
+ var date = new Date(value);
+ var day = date.getDate().toString().padStart(2, '0');
+ var month = (date.getMonth() + 1).toString().padStart(2, '0');
+ return day + '/' + month;
+ } else {
+ return text; // O puedes devolver una cadena vacía: return '';
+ }
+ });
+
+ //chart.topAxesContainer.children.push(dateAxis);
// Add series
// https://www.amcharts.com/docs/v5/charts/xy-chart/series/
@@ -812,6 +1134,7 @@
sequencedInterpolation: true
}));
+
series.columns.template.setAll({
templateField: "columnSettings",
strokeOpacity: 0,
@@ -824,11 +1147,7 @@
});
series.data.setAll(data);
- // Add scrollbars
- //chart.set("scrollbarX", am5.Scrollbar.new(root, {
- // orientation: "horizontal"
- //}));
-
+
// Scrollbar X
var scrollbarX = am5.Scrollbar.new(root, {
orientation: "horizontal"
@@ -884,14 +1203,9 @@
}); // end am5.ready()
- }
+ }--%>
- function zoomAxis(anioI, mesI, diaI, anioF, mesF, diaF) {
- setTimeout(() => {
- dateAxis.zoomToDates(new Date(anioI, mesI, diaI), new Date(anioF, mesF, diaF));
- }, 1500);
-
- }
+
var PrimeraCargaCalendario = true;
var currentUpdateEvent;
@@ -1332,22 +1646,22 @@
var datosGant = [];
function loadGant() {
gantt.config.date_format = "%Y-%m-%d %H:%i";
- gantt.config.order_branch = true;
- gantt.i18n.setLocale("es");
- gantt.init("gantt_here");
-
+ gantt.config.order_branch = true;
+ gantt.config.order_branch_free = true;
+ gantt.config.open_tree_initially = true;
+ gantt.config.show_tasks_outside_timescale = true;
gantt.config.drag_move = false; // Desactiva mover tareas
gantt.config.drag_resize = false; // Desactiva redimensionar tareas
gantt.config.drag_progress = false; // Desactiva mover la barra de progreso
- //gantt.config.smart_scales = false;// Desactiva el salto automático entre escalas de tiempo
- //gantt.config.scroll_size = 1;
- // gantt.config.scroll_on_click = false; // Desactiva el scroll automático al hacer clic
- //gantt.config.autosize = "xy";
- //gantt.config.smart_rendering = false;
+ gantt.i18n.setLocale("es");
+ gantt.init("gantt_here");
+
+
gantt.config.columns = [
//{ name: "text", label: "Contrato ", width: "*", min_width: 150, tree: true, resize: true, template: function (obj) { return "
" + obj.text + " " } },
+ { name: "codigoaf", label: "Unidad", max_width: 50, align: "left" },
//{ name: "start_date", label: "Inicio", min_width: 90, align: "center" },
//{ name: "end_date", label: "Fin", min_width: 90, align: "center" }
@@ -1362,10 +1676,13 @@
data: datosGant
});
+
+
+
// Agregar evento para hover y mostrar tooltip
gantt.attachEvent("onMouseMove", function (id, e) {
if (id) {
- var task = gantt.getTask(id);
+ var task = gantt.getTask(id);
// Mostrar el tooltip burbuja
var tooltip = document.getElementById("gantt_tooltip");
@@ -1401,36 +1718,34 @@
// Cancelar el comportamiento predeterminado
return false;
});
+
+
+ gantt.attachEvent("onBeforeTaskMove", function (id, parent, tindex) {
+ console.log(tindex)
+ var task = gantt.getTask(id);
+ if (task.parent != parent)
+ return false;
+ return true;
+ });
+
+ gantt.attachEvent("onRowDragEnd", function (id, target, tindex) {
+ console.log(tindex)
+ debugger;
+ drag_id = null;
+ gantt.render();
+ });
+
+ gantt.attachEvent("onTaskLoading", function (task) {
+ if (task.hidden) {
+ task.$rendered = false; // Evitar que la tarea se renderice
+ }
+ return true;
+ });
+
+
+
}
- gantt.attachEvent("onBeforeTaskMove", function (id, parent, tindex) {
- console.log(tindex)
- var task = gantt.getTask(id);
- if (task.parent != parent)
- return false;
- return true;
- });
-
- gantt.attachEvent("onRowDragEnd", function (id, target, tindex) {
- console.log(tindex)
- debugger;
- drag_id = null;
- gantt.render();
- });
-
- gantt.attachEvent("onGanttScroll", function (left, top) {
-
- // var step = 50; // Define cuánto avanzar con cada paso del scroll
- //var newTop = top + step; // Incrementa el scroll vertical en 50 píxeles
-
- //gantt.scrollTo(left, newTop); // Establece el nuevo valor de scroll vertical
- console.log("Scroll vertical: ", top);
- return false; // Previene el scroll predeterminado para que solo se aplique el manual
-
-
- //return true;
- });
-
-
+
loadGant();
diff --git a/Transportes/RepContratosCalendario.aspx.vb b/Transportes/RepContratosCalendario.aspx.vb
index 6832a1032..7e3cfa1bc 100644
--- a/Transportes/RepContratosCalendario.aspx.vb
+++ b/Transportes/RepContratosCalendario.aspx.vb
@@ -72,7 +72,8 @@ Partial Class RepContratosCalendario
CveTipoAF:=DdlTipoUnidad.SelectedValue.ToEntero,
CveChofer:=DdlChoferFiltro.SelectedValue.ToEntero) Then
DtAvance = ObjContratos.DtResultados.Copy()
- CargaCronograma(DdlTipoVista.SelectedValue.ToEntero)
+ CargaCronograma(DdlTipoVistaCalendario.SelectedValue.ToEntero)
+ CargaDiagramadeGant(DdlTipoVista.SelectedValue.ToEntero)
End If
GvContratos.DataSource = DtAvance
DdlEstatusContrato.Enabled = UsuarioActual.TienePermisoProceso(173)
@@ -91,9 +92,9 @@ Partial Class RepContratosCalendario
Private Sub CargaCronograma(Optional TipoVista As Integer = -1)
If DtAvance IsNot Nothing Then
- Dim separator As String = ""
- Dim str As New StringBuilder()
- str.AppendLine("datosGant=[")
+ 'Dim separator As String = ""
+ 'Dim str As New StringBuilder()
+ 'str.AppendLine("datosGant=[")
Dim StrFiltro As String = ""
@@ -110,30 +111,32 @@ Partial Class RepContratosCalendario
'DATOS
Dim strAF As New StringBuilder
'se quitan los estatus cancelados
+ Dim randomNumber As New Random
For Each Row As DataRow In DtAvance.FiltraParametros("CodigoAF <> '' AND TipoEstatus <> 3").Rows
+
Dim obj As New JObject(
New JProperty("category", Row("CodigoAF")),
- New JProperty("fromDate", Row("FechaInicial").ToString().ToDateTime().ToString("dd/MM/yyyy HH:mm").ToDateTime()),
- New JProperty("toDate", Row("FechaFinal").ToString().ToDateTime.ToString("dd/MM/yyyy HH:mm").ToDateTime()),
+ New JProperty("fromDate", Row("FechaInicial").ToString().ToDateTime().ToString("yyyy-MM-dd HH:mm:ss")),
+ New JProperty("toDate", Row("FechaFinal").ToString().ToDateTime.ToString("yyyy-MM-dd HH:mm:ss")),
New JProperty("columnSettings", New JObject(
New JProperty("fill", String.Format("#{0:X6}", random.Next(16777216)))
)),
New JProperty("unidad", Row("NombreAF")),
New JProperty("cveContrato", Row("CveContrato")),
New JProperty("contrato", Row("NumeroContrato")),
- New JProperty("fechaFinalViaje", Row("FechaFinal").ToString().ToDateTime().ToString("dd/MM/yyyy HH:mm"))
+ New JProperty("fechaFinalViaje", Row("FechaFinal").ToString().ToDateTime().ToString("yyyy-MM-dd HH:mm:ss"))
)
jsonData.Add(obj)
strAF.AppendFormat("{0},", Row("CveAF"))
'uniad contrato y duracion
- Dim unidad As String = $"{Row("CodigoAF")}-{Row("NombreAF")}"
- Dim duracion As String = $"{Row("FechaInicial").ToString.ToDate.ToString("dd/MM/yyyy HH:mm")} - {Row("FechaFinal").ToString.ToDate.ToString("dd/MM/yyyy HH:mm")}"
+ 'Dim unidad As String = $"{Row("CodigoAF")}-{Row("NombreAF")}"
+ 'Dim duracion As String = $"{Row("FechaInicial").ToString.ToDate.ToString("dd/MM/yyyy HH:mm")} - {Row("FechaFinal").ToString.ToDate.ToString("dd/MM/yyyy HH:mm")}"
- str.AppendLine(String.Format("{0}{{id: {1}, text: ""{2}"", start_date: ""{3:yyyy/MM/dd HH:mm}"", end_date: ""{4:yyyy/MM/dd HH:mm}"", parent: {5}, progress:{6}, open: true, unidad: ""{7}"",duracion: ""{8}""}}",
- separator, Row("CveContrato"), Row("NumeroContrato").ToString().Replace("\\", "\\\\").Replace("""", "\"""), Row("FechaInicial"), Row("FechaFinal"), 0, 100, unidad, duracion))
- separator = ","
+ 'str.AppendLine(String.Format("{0}{{id: {1}, text: ""{2}"", start_date: ""{3:yyyy/MM/dd HH:mm}"", end_date: ""{4:yyyy/MM/dd HH:mm}"", parent: {5}, progress:{6}, open: true, unidad: ""{7}"",duracion: ""{8}"", color: ""{9}"",codigoaf: ""{10}""}}",
+ ' separator, Row("CveContrato"), Row("NumeroContrato").ToString().Replace("\\", "\\\\").Replace("""", "\"""), Row("FechaInicial"), Row("FechaFinal"), 0, 100, unidad, duracion, ColorAleatorio(randomNumber), Row("CodigoAF").ToString))
+ 'separator = ","
Next
@@ -151,18 +154,188 @@ Partial Class RepContratosCalendario
Dim FechaI = txtFechaI.Text.ToDateTime()
Dim FechaF = txtFechaF.Text.ToDateTime()
- Dim ScriptZoom = $"zoomAxis({FechaI.Year},{FechaI.Month - 1},{FechaI.Day},{FechaF.Year},{FechaF.Month - 1},{FechaF.Day});"
- RegistraScript($"cargaDiagramaGrant({jsonData.ToString()},{jsonCategorias.ToString()},{TipoVista});{ScriptZoom}", "A1")
+ Dim ScriptZoomx = $"zoomAxis({FechaI.Year},{FechaI.Month - 1},{FechaI.Day},{FechaF.Year},{FechaF.Month - 1},{FechaF.Day});"
+ Dim ScriptZoomy = $"zoomAxisy(0,{If(jsonCategorias.Count > 9, 9, jsonCategorias.Count - 1)});"
+ RegistraScript($"cargaDiagramaGrant({jsonData.ToString()},{jsonCategorias.ToString()},{TipoVista});{ScriptZoomx};{ScriptZoomy};", "A1")
+ 'RegistraScript($"cargaDiagramaGrant({jsonData.ToString()},{jsonCategorias.ToString()},{TipoVista});", "A1")
- str.AppendLine("];loadGant();")
- RegistraScript(str.ToString())
+ 'str.AppendLine("];loadGant();")
+ 'RegistraScript(str.ToString())
UPPGantt.Update()
UPGat.Update()
End If
End Sub
+
+
+ Private Sub CargaDiagramadeGant(Optional TipoVista As Integer = -1)
+
+ Dim randomNumber As New Random
+
+ If DtAvance IsNot Nothing Then
+
+
+ Dim str As New StringBuilder()
+ str.AppendLine("datosGant=[")
+
+ If TipoVista = 1 Then 'solo con viajes
+
+ Else
+
+ Dim StrFiltro As String = ""
+ If DdlTipoUnidad.SelectedValue.ToEntero > 0 Then StrFiltro = " AND CveTipoActivoFijo = " & DdlTipoUnidad.SelectedValue
+ Dim DtUnidades As DataTable = GlobalDTActivoFijos(UsuarioActual.CveEmpresa).FiltraParametros("Codigo <> '' AND MedidaVehicular IN (2,3) " & StrFiltro, Orderby:=" TipoActivoFijo ASC, CodigoNumeroOrden ASC", DistinctColumns:={"Codigo", "CveActivoFijo"})
+
+ Dim separator As String = ""
+ Dim encontrados As Integer = 0
+ Dim CvePadre As Integer = -1
+
+ For Each dRowUnidad As DataRow In DtUnidades.Rows
+
+
+ Dim CveActivoFijo As Integer = dRowUnidad("CveActivoFijo").ToString.ToEntero
+ Dim CodigoAF As String = dRowUnidad("Codigo").ToString
+ 'Dim unidad As String = $"{dRowUnidad("Codigo").ToString}-{dRowUnidad("Descripcion").tostring}"
+
+ Dim SeEncontro As Boolean = False
+
+ Dim EsHijo As Boolean = False
+ For Each Row As DataRow In DtAvance.FiltraParametros("CodigoAF <> '' AND TipoEstatus <> 3").Rows
+
+ Dim CveActivoFijoContrato As Integer = Row("CveAF").ToString.ToEntero
+
+ 'If CveActivoFijo = CveActivoFijoContrato Then
+ ' str.AppendLine(String.Format("{0}", separator))
+ ' SeEncontro = True
+ ' Dim unidad As String = $"{Row("CodigoAF")}-{Row("NombreAF")}"
+ ' Dim duracion As String = $"{Row("FechaInicial").ToString.ToDate.ToString("dd/MM/yyyy HH:mm")} - {Row("FechaFinal").ToString.ToDate.ToString("dd/MM/yyyy HH:mm")}"
+
+ ' str.AppendLine(String.Format("{{id: {1}, text: ""{2}"", start_date: ""{3:yyyy/MM/dd HH:mm}"", end_date: ""{4:yyyy/MM/dd HH:mm}"", parent: {5}, progress:{6}, open: true, unidad: ""{7}"",duracion: ""{8}"", color: ""{9}"",codigoaf: ""{10}""}} ",
+ ' separator, Row("CveContrato"), Row("NumeroContrato").ToString().Replace("\\", "\\\\").Replace("""", "\"""), Row("FechaInicial"), Row("FechaFinal"), 0, 100, unidad, duracion, ColorAleatorio(randomNumber), Row("CodigoAF").ToString))
+ ' separator = ","
+ ' encontrados = encontrados + 1
+ 'End If
+
+
+
+ If CveActivoFijo = CveActivoFijoContrato Then
+ str.AppendLine(String.Format("{0}", separator))
+ SeEncontro = True
+ Dim unidad As String = $"{Row("CodigoAF")}-{Row("NombreAF")}"
+ Dim duracion As String = $"{Row("FechaInicial").ToString.ToDate.ToString("dd/MM/yyyy HH:mm")} - {Row("FechaFinal").ToString.ToDate.ToString("dd/MM/yyyy HH:mm")}"
+
+ If EsHijo Then
+ str.AppendLine(String.Format("{{id: {1}, text: ""{2}"", start_date: ""{3:yyyy/MM/dd HH:mm}"", end_date: ""{4:yyyy/MM/dd HH:mm}"", progress:{6}, open: true, unidad: ""{7}"",duracion: ""{8}"", color: ""{9}"",codigoaf: ""{10}"", cvecontrato: ""{11}"", parent: {12} }} ",
+ separator, Row("CveContrato").ToString, Row("NumeroContrato").ToString().Replace("\\", "\\\\").Replace("""", "\"""), Row("FechaInicial"), Row("FechaFinal"), 0, 100, unidad, duracion, ColorAleatorio(randomNumber), Row("CodigoAF").ToString, Row("CveContrato").ToString, CvePadre)
+ )
+ Else
+ str.AppendLine(String.Format("{{id: {1}, text: ""{2}"", start_date: ""{3:yyyy/MM/dd HH:mm}"", end_date: ""{4:yyyy/MM/dd HH:mm}"", progress:{6}, open: true, unidad: ""{7}"",duracion: ""{8}"", color: ""{9}"",codigoaf: ""{10}"", cvecontrato: ""{11}"",parent: 0 }} ",
+ separator, Row("CveContrato").ToString, Row("NumeroContrato").ToString().Replace("\\", "\\\\").Replace("""", "\"""), Row("FechaInicial"), Row("FechaFinal"), 0, 100, unidad, duracion, ColorAleatorio(randomNumber), Row("CodigoAF").ToString, Row("CveContrato").ToString)
+ )
+ End If
+
+ If Not EsHijo Then
+ CvePadre = Row("CveContrato").ToString.ToEntero
+ EsHijo = True
+ End If
+
+ separator = ","
+ encontrados = encontrados + 1
+ Else
+ EsHijo = False
+ End If
+
+ Next
+
+ 'If Not SeEncontro Then
+ ' If encontrados > 0 Then
+ ' separator = ","
+ ' End If
+ ' str.AppendLine(String.Format("{0}", separator))
+ ' str.AppendLine(String.Format("{{id: {1}, text: ""{2}"", start_date: ""{3}"", end_date: ""{4}"", parent: {5}, progress:{6}, open: true, unidad: ""{7}"",duracion: ""{8}"", color: ""{9}"",codigoaf: ""{10}"", hidden: true}} ",
+ ' "", CveActivoFijo, -1, txtFechaF.Text.ToDate.ToString("yyyy/MM/dd HH:mm"), txtFechaF.Text.ToDate.ToString("yyyy/MM/dd HH:mm"), 0, 100, "", "", ColorAleatorio(randomNumber), CodigoAF))
+ ' separator = ","
+
+ 'End If
+
+ 'str.AppendLine(String.Format("}"))
+
+ Next
+
+ End If
+
+
+
+
+ str.AppendLine("];loadGant();")
+ 'RegistraScript(str.ToString())
+
+ UPPGantt.Update()
+ UPGat.Update()
+ End If
+ End Sub
+
+
+ Private Function ColorAleatorio(randomNumber As Random) As String
+
+ Dim listaColores As New List(Of String)
+
+ listaColores.Add("#94f35a")
+ listaColores.Add("#1989a9")
+ listaColores.Add("#5a3c98")
+ listaColores.Add("#556855")
+ listaColores.Add("#e199cf")
+ listaColores.Add("#50cc77")
+ listaColores.Add("#559f9d")
+ listaColores.Add("#ede805")
+ listaColores.Add("#f1e489")
+ listaColores.Add("#c381f6")
+ listaColores.Add("#f2496b")
+ listaColores.Add("#c4d7dc")
+ listaColores.Add("#f3f9f9")
+ listaColores.Add("#fd8ffe")
+ listaColores.Add("#f2496b")
+ listaColores.Add("#5a8f9c")
+ listaColores.Add("#87bfbd")
+ listaColores.Add("#fb01fd")
+ listaColores.Add("#6836dc")
+ listaColores.Add("#67627e")
+ listaColores.Add("#1b9f44")
+ listaColores.Add("#3a54dc")
+ listaColores.Add("#fb66f1")
+ listaColores.Add("#24f6b4")
+ listaColores.Add("#60feee")
+ listaColores.Add("#82a199")
+ listaColores.Add("#93a9e1")
+ listaColores.Add("#ff8809")
+ listaColores.Add("#8379ba")
+ listaColores.Add("#f62ea2")
+ listaColores.Add("#41cf69")
+ listaColores.Add("#8624b2")
+ listaColores.Add("#f4948a")
+ listaColores.Add("#205da6")
+ listaColores.Add("#9f38b6")
+ listaColores.Add("#540466")
+ listaColores.Add("#7a4e49")
+ listaColores.Add("#bd22ce")
+ listaColores.Add("#6d89a0")
+ listaColores.Add("#7e6d8c")
+ listaColores.Add("#124a70")
+ listaColores.Add("#c3d2c2")
+ listaColores.Add("#506702")
+ listaColores.Add("#058106")
+ listaColores.Add("#0485f2")
+ listaColores.Add("#401685")
+
+
+ Dim ranNumber As Integer = randomNumber.Next(0, listaColores.Count - 1)
+
+ Return listaColores(ranNumber)
+
+ End Function
+
'Public Sub loadEvento()
' Dim separator As String = ""
' Dim str As New StringBuilder()
@@ -487,16 +660,47 @@ Partial Class RepContratosCalendario
End Sub
- Protected Sub LnkExcel_Click(sender As Object, e As EventArgs) Handles LnkExcel.Click
- GvContratos.ExportToExcel("ReporteCompras" & NowADS().ToShortDateString)
+ Protected Sub LnkExcel_Click(sender As Object, e As EventArgs) Handles LnkExcel.Click
+
+ Dim SubProyecto As String = ""
+
+
+ SubProyecto = DdlSubProyectos.SelectedItem.Text
+
+
+ Dim SbFiltros As New StringBuilder()
+ SbFiltros.AppendFormat($"Fecha Inicio: {txtFechaI.Text} Fecha Fin: {txtFechaF.Text}|")
+ SbFiltros.AppendFormat("SubProyecto: {0}|", SubProyecto)
+
+ GvContratos.ExportToExcelGembox($"Reporte_Contratos_{NowADS.ToString("yyyyMMddHHmmss")}", UsuarioActual, "Reporte Contratos", DatoTituloExtra:=$"", DatosFiltros:=SbFiltros.ToString())
+
+ End Sub
+
+ Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)
+ ' Esto es necesario para permitir la renderización del control fuera de un formulario servidor
+ ' No se requiere implementación específica, solo la anulación.
End Sub
- Protected Sub LnkPDF_Click(sender As Object, e As EventArgs) Handles LnkPdf.Click
+
+ Protected Sub LnkPDF_Click(sender As Object, e As EventArgs) Handles LnkPdf.Click
+ ImprimirReporte()
+ End Sub
+
+ Private Sub ImprimirReporte(Optional Formato As String = "PDF")
+
Dim ObjContratos As New ClsContratos
+ Dim DTDatos As New DataTable
+
If ObjContratos.GetContratos(-1, UsuarioActual.CveEmpresa, TipoContrato:=2) Then
+ DTDatos = ObjContratos.DtResultados
+ Else
+ Alert("No hay datos consultados", TipoMensaje.MsgAdvertencia)
+ End If
+ ObjContratos.Dispose()
+
+ If DTDatos IsNot Nothing Then
Dim Imagen As New IO.FileInfo($"{UsuarioActual.Empresa.Ruta}/Logo.png")
Dim logouri As String = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa)
- Dim Cliente As String = If(DdlClientes.SelectedValue = "-1", "", $"
Cliente: {DdlClientes.SelectedText}")
- Dim dt As DataTable = ObjContratos.DtResultados
+ Dim Cliente As String = If(DdlClientes.SelectedValue = "-1", "", $"
Cliente: {DdlClientes.SelectedText}")
Dim params As New List(Of ReportParameter) From {
New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa),
New ReportParameter("FechaInicio", "-1"),
@@ -506,23 +710,25 @@ Partial Class RepContratosCalendario
New ReportParameter("FechaImpresion", NowADS().ToDateTime.ToShortDateString),
New ReportParameter("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", ""))
}
- ImprimirPDF("Empresas/Grales/Formatos/RepContratos.rdlc", dt, params, NombreArchivo:="Reporte Contratos")
- Else
- Alert("No hay datos consultados", TipoMensaje.MsgAdvertencia)
- End If
- ObjContratos.Dispose()
+ ImprimirPDF("Empresas/Grales/Formatos/RepContratos.rdlc", DTDatos, params, NombreArchivo:="Reporte Contratos", Formato:=Formato)
+ End If
+
End Sub
+
+
Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs)
CargaDatos()
End Sub
Protected Sub RBTipoVista_SelectedIndexChanged(sender As Object, e As EventArgs)
InicializaCalendar()
CargaCronograma()
+ CargaDiagramadeGant()
End Sub
Protected Sub DdlTipoVista_SelectedIndexChanged(sender As Object, e As EventArgs)
- CargaCronograma(DdlTipoVista.SelectedValue.ToEntero)
+
+ CargaDiagramadeGant(DdlTipoVista.SelectedValue.ToEntero)
End Sub
@@ -537,4 +743,8 @@ Partial Class RepContratosCalendario
End Sub
+
+ Protected Sub DdlTipoVistaCalendario_SelectedIndexChanged(sender As Object, e As EventArgs)
+ CargaCronograma(DdlTipoVistaCalendario.SelectedValue.ToEntero)
+ End Sub
End Class
diff --git a/Ventas/Promociones.aspx.vb b/Ventas/Promociones.aspx.vb
index 984cd2efc..bda7aaf41 100644
--- a/Ventas/Promociones.aspx.vb
+++ b/Ventas/Promociones.aspx.vb
@@ -158,7 +158,7 @@ Partial Class Ventas_Promociones
PermisoAutorizPromocionPorcentaje = UsuarioActual.TienePermisoProceso(386)
EmpresaGrupoDiaz = If(UsuarioActual.Empresa.Funcionalidad(382) = "1", True, False) 'Grupo díaz
- 'EmpresaGrupoDiaz = True ''Para pruebas
+ EmpresaGrupoDiaz = True ''Para pruebas
If EmpresaGrupoDiaz Then
DVModalClasificacion.Visible = False