From b2a491021cd3413403e296d9a9ca03ec35d32242 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Wed, 20 Mar 2024 17:16:08 -0700 Subject: [PATCH 1/8] --Traspasar saldo de remisiones a factura global. PA: --PA_Vta_VentasRemisionesPagos --- App_Code/ClsPaginas.vb | 10 ++-- App_Code/Modelos.vb | 81 ++++++++++++++++++++++++++++++++ Ventas/FacturacionGlobal.aspx.vb | 10 ++-- 3 files changed, 91 insertions(+), 10 deletions(-) diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 7e31f8a07..d3b57be78 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -9279,7 +9279,7 @@ Public Class ClsPaginas #End Region #Region "P A G O D E V E N T A S " - Public Shared Function AplicaPrePolizaPagoVenta(VentaActual As Venta, Pago As VentaPago, CvePrePoliza As Integer, ByRef ObjConta As ClsContabilidad) As Boolean + Public Shared Function AplicaPrePolizaPagoVenta(VentaActual As Venta, Pago As VentaPago, CvePrePoliza As Integer, ByRef ObjConta As ClsContabilidad, Optional AplicarConceptoAplicacion As Boolean = True) As Boolean Dim ErrorMovtos As Boolean = False Dim PorcentajePago As Decimal = Pago.ImportePagoVenta / VentaActual.Total Dim ImporteMovimiento As Decimal = 0 @@ -9401,7 +9401,7 @@ Public Class ClsPaginas End If 'concepto pago - If Pago.TipoPago = "B" AndAlso Not ErrorMovtos Then ' B A N C O S + If Pago.TipoPago = "B" AndAlso Not ErrorMovtos AndAlso AplicarConceptoAplicacion Then ' B A N C O S Concepto = String.Format("{0} NC:{1}", VentaActual.ClienteNombre, Pago.Referencia) If Pago.CveMonedaPago > 1 Then 'Agregamos la Extranjera @@ -9413,7 +9413,7 @@ Public Class ClsPaginas If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, 30, Pago.Referencia, Concepto, CveVenta:=Pago.CveVentaAmortizacion, CveVentaAmortizacion:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal) Then ErrorMovtos = True End If End If - If Pago.TipoPago = "A" AndAlso Not ErrorMovtos Then ' A N T I C I P O + If Pago.TipoPago = "A" AndAlso Not ErrorMovtos AndAlso AplicarConceptoAplicacion Then ' A N T I C I P O Concepto = String.Format("{0} Ant:{1}", VentaActual.ClienteNombre, Pago.Referencia) Dim Ret As New ConceptosRetenciones 'Dim ConPreP As ConceptosTipoSaldo = ObtenerCveConceptoPrePoliza(6, VentaActual.CveMoneda, True, 1) @@ -9427,7 +9427,7 @@ Public Class ClsPaginas If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, 11, Pago.Referencia, Concepto, CveVenta:=Pago.CveVentaAmortizacion, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, TipoCambioPago:=Pago.TCPago) Then ErrorMovtos = True End If End If - If Pago.TipoPago = "NC" AndAlso Not ErrorMovtos Then ' N O T A D E C R E D I T O + If Pago.TipoPago = "NC" AndAlso Not ErrorMovtos AndAlso AplicarConceptoAplicacion Then ' N O T A D E C R E D I T O Concepto = String.Format("{0} NC:{1}", VentaActual.ClienteNombre, Pago.Referencia) Dim Ret As New ConceptosRetenciones Dim ConPrePNC As ConceptosTipoSaldo = ObtenerCveConceptoPrePoliza(6, Pago.CveMonedaPago, True, 2) @@ -9441,7 +9441,7 @@ Public Class ClsPaginas If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, ConPrePNC.CveConcepto, Pago.Referencia, Concepto, CveVenta:=Pago.CveVentaAmortizacion, CveVentaAmortizacion:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal) Then ErrorMovtos = True End If End If - If Pago.TipoPago = "I" AndAlso Not ErrorMovtos Then ' I N G R E S O S X C O M P R O B A R + If Pago.TipoPago = "I" AndAlso Not ErrorMovtos AndAlso AplicarConceptoAplicacion Then ' I N G R E S O S X C O M P R O B A R Concepto = String.Format("{0} IxC:{1}", VentaActual.ClienteNombre, Pago.Referencia) Dim Ret As New ConceptosRetenciones If VentaActual.UsuarioActual.Empresa.TipoContabilidad = 2 Then diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index 4a7b56be4..67da1c6c7 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -4097,6 +4097,49 @@ Namespace Modelos ErrorList.Add("No se pueden facturar las remisiones, con ese tipo de comprobante seleccionado") Else If ObjFactura.RemisionesLista.Count > 0 Then + + 'CANCELACION DE PAGOS DE REMISIONES + If ObjFactura.DtPagosFacturaGlobal IsNot Nothing Then + For Each DrPago As DataRow In DtPagosFacturaGlobal.Rows + + Dim ventaRef As ClsPaginas.Venta = Nothing + + Using ObjFacturaRef As New Modelos.Factura(UsuarioActual, DrPago("CveVenta").ToString().ToEntero(), UsuarioActual.CveEmpresa, CargaDTDetalle:=False, VerificaAlmacen:=False, CargaDatosCliente:=False, CargaDatosRelacionados:=False) + ventaRef = New ClsPaginas.Venta(ObjFacturaRef, UsuarioActual) + End Using + + If ventaRef IsNot Nothing Then + Dim Importe As Decimal = DrPago("Importe").ToString().ToDecimal() * -1 + + Dim Pago As New ClsPaginas.VentaPago + Pago.Fecha = Now + Pago.FechaDocumentoRelacionado = DrPago("FechaDocumento").ToString().ToDate + Pago.ImportePagoVenta = Importe + Pago.ImportePago = Importe + Pago.CveIE = DrPago("CveIE").ToString().ToEntero() + Pago.CveMonedaPago = DrPago("CveMoneda").ToString().ToEntero() + Pago.TCPago = DrPago("TipoCambio").ToString().ToDecimal() + Pago.AplicaTraslado = False + Pago.Referencia = DrPago("Folio").ToString() + Pago.CveVentaAmortizacion = -1 + + If DrPago("TipoPago").ToString() = "NC" Then + Pago.TipoPago = "NC" + Else + Pago.TipoPago = "B" + End If + + ErrorPrepoliza = ClsPaginas.AplicaPrePolizaPagoVenta(ventaRef, Pago, ObjFactura.CvePrePoliza, ObjConta, AplicarConceptoAplicacion:=False) + Else + ErrorPrepoliza = True + End If + + If ErrorPrepoliza Then + Exit For + End If + Next + End If + For Each CveRemision As Integer In RemisionesLista If Not ObjConta.TraspasarSaldosRemision(CveRemision, ObjFactura.CvePrePoliza, ObjFactura.CveVenta) Then ErrorPrepoliza = True @@ -4115,6 +4158,42 @@ Namespace Modelos Exit For End If Next + + 'TRASPASO DE PAGOS DE REMISIONES A FACTURA GLOBAL + If ObjFactura.DtPagosFacturaGlobal IsNot Nothing Then + + Dim VentaActual As New ClsPaginas.Venta(ObjFactura, UsuarioActual) + + For Each DrPago As DataRow In DtPagosFacturaGlobal.Rows + Dim Importe As Decimal = DrPago("Importe").ToString().ToDecimal() + + Dim Pago As New ClsPaginas.VentaPago + Pago.Fecha = Now + Pago.FechaDocumentoRelacionado = DrPago("FechaDocumento").ToString().ToDate + Pago.ImportePagoVenta = Importe + Pago.ImportePago = Importe + Pago.CveIE = DrPago("CveIE").ToString().ToEntero() + Pago.CveMonedaPago = DrPago("CveMoneda").ToString().ToEntero() + Pago.TCPago = DrPago("TipoCambio").ToString().ToDecimal() + Pago.AplicaTraslado = False + Pago.Referencia = DrPago("Folio").ToString() + Pago.CveVentaAmortizacion = DrPago("CveVenta").ToString().ToEntero() + + If DrPago("TipoPago").ToString() = "NC" Then + Pago.TipoPago = "NC" + Else + Pago.TipoPago = "B" + End If + + ErrorPrepoliza = ClsPaginas.AplicaPrePolizaPagoVenta(VentaActual, Pago, ObjFactura.CvePrePoliza, ObjConta, AplicarConceptoAplicacion:=False) + + If ErrorPrepoliza Then + Exit For + End If + Next + End If + + End If End If End If @@ -4125,6 +4204,7 @@ Namespace Modelos End If End If + 'REGRESA SALDO A LAS REMISIONES QUE SE FACTURARON EN EL INGRESO QUE SE ESTA CANCELANDO 'SE DEBE DE EXCLUIR CUANDO ES REFACTURACIÓN If ObjFactura.TipoDocto = "Ing" And ValorMultiplicador = -1 AndAlso CveEstatusRefacturacion = 0 AndAlso Not SeCancelaRemisionProceso AndAlso DtRemisionesRelacionadas IsNot Nothing Then ' se debe de excluir cuando es refacturación @@ -7396,6 +7476,7 @@ Namespace Modelos Public Property DtPromociones As Data.DataTable Public Property DtImpuestosLocales As Data.DataTable Public Property DtPagos As Data.DataTable + Public Property DtPagosFacturaGlobal As Data.DataTable Public Property DtRemisionesPS As Data.DataTable Public Property DtRemisiones As Data.DataTable Public Property DtPedidos2 As Data.DataTable diff --git a/Ventas/FacturacionGlobal.aspx.vb b/Ventas/FacturacionGlobal.aspx.vb index 18ff563b0..5b0a90341 100644 --- a/Ventas/FacturacionGlobal.aspx.vb +++ b/Ventas/FacturacionGlobal.aspx.vb @@ -171,7 +171,7 @@ Partial Class Ventas_FacturacionGlobal SbRemisiones.Remove(SbRemisiones.Length - 1, 1) Dim DtRemisionesPS As New DataTable() - Dim DtPagos As New DataTable() + Dim DtPagosFacturaGlobal As New DataTable() Dim ObjClientes As New ClsClientes If ObjClientes.GetVentasRemisionesTotales(CveCliente, SbRemisiones.ToString(), 1) Then @@ -179,7 +179,7 @@ Partial Class Ventas_FacturacionGlobal End If If ObjClientes.GetVentasRemisionesPagos(CveCliente, SbRemisiones.ToString()) Then - DtPagos = ObjClientes.DtResultados.Copy() + DtPagosFacturaGlobal = ObjClientes.DtResultados.Copy() End If ObjClientes.Dispose() @@ -188,7 +188,7 @@ Partial Class Ventas_FacturacionGlobal Exit Sub End If - If DtPagos Is Nothing OrElse DtPagos.Rows.Count = 0 Then + If DtPagosFacturaGlobal Is Nothing OrElse DtPagosFacturaGlobal.Rows.Count = 0 Then Alert("No se pudieron cargar los pagos", TipoMensaje.MsgError) Exit Sub End If @@ -211,7 +211,7 @@ Partial Class Ventas_FacturacionGlobal ObjFactura.RemisionesLista = RemisionesLista ObjFactura.DtRemisionesPS = DtRemisionesPS ObjFactura.DtRemisiones = DtRemisiones.FiltraParametros($"CveVenta IN ({SbRemisiones.ToString()})") - ObjFactura.DtPagos = DtPagos + ObjFactura.DtPagosFacturaGlobal = DtPagosFacturaGlobal For Each Dr As DataRow In DtRemisionesPS.Rows ObjFactura.AgregarPS(Dr("CvePS").ToString().ToEntero(), Dr("Cantidad").ToString().ToDecimal(), Dr("PU").ToString().ToDecimal(), Dr("Descuento").ToString().ToDecimal, Dr("Obs").ToString(), CveUM:=Dr("CveUM").ToString().ToEntero(), @@ -221,7 +221,7 @@ Partial Class Ventas_FacturacionGlobal ObjFactura.CalculaTotales() ObjFactura.PreparaTimbre() - If ObjFactura.Total <> DtPagos.SUMD("Importe") Then + If ObjFactura.Total <> DtPagosFacturaGlobal.SUMD("Importe") Then Alert("Los pagos no coinciden con el total de la factura", TipoMensaje.MsgError) Exit Sub End If From d9d43f516e44140624c9637226cc71202b5c6b2b Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Thu, 21 Mar 2024 00:11:33 -0700 Subject: [PATCH 2/8] --Valida no agregar garantias sin precio --- Inventarios/RecepcionUsados.aspx.vb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Inventarios/RecepcionUsados.aspx.vb b/Inventarios/RecepcionUsados.aspx.vb index ef2bf7701..781ccf28a 100644 --- a/Inventarios/RecepcionUsados.aspx.vb +++ b/Inventarios/RecepcionUsados.aspx.vb @@ -3372,6 +3372,12 @@ Partial Class Inventarios_RecepcionUsados Alert("Ya existe un consecutivo vigente en este folio", TipoMensaje.MsgAdvertencia) Exit Sub End If + + If TxtPUFactura.Text.ToDecimal() <= 0 Then + Alert("El P.U. debe ser mayor a 0", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + Dim IdConsecutivo As Integer = -1 Dim ObjPS As New ClsProductosServicios Try From ac5b03218d23db54eb0ba1518736c3bc3339ec04 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Thu, 21 Mar 2024 00:22:24 -0700 Subject: [PATCH 3/8] =?UTF-8?q?ADS=20-=20Cargar=20im=C3=A1genes=20de=20pro?= =?UTF-8?q?ductos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App_Code/ClsProductosServicios.vb | 21 + Ventas/ProductosServicios.aspx | 4889 ++++++++++++++--------------- Ventas/ProductosServicios.aspx.vb | 564 ++-- Ventas/Ventas.aspx | 113 +- Ventas/Ventas.aspx.vb | 28 + 5 files changed, 2861 insertions(+), 2754 deletions(-) diff --git a/App_Code/ClsProductosServicios.vb b/App_Code/ClsProductosServicios.vb index fa3deb688..f245e101a 100644 --- a/App_Code/ClsProductosServicios.vb +++ b/App_Code/ClsProductosServicios.vb @@ -647,6 +647,27 @@ Public Class ClsProductosServicios Return Retorno End Function + + Public Function UpdatePSImagen(CvePS As Integer, Imagen As String) As Boolean + Dim Retorno As Boolean = False + + DataAdapter("PA_Vta_PSImagenUpdate") + + With SqlAdapter.SelectCommand.Parameters + .Add("@CvePS", SqlDbType.Int).Value = CvePS + .Add("@Imagen", SqlDbType.VarChar).Value = Imagen + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al guardar la imagen del producto.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + End Function + Public Function UpdatePS(CveClasificacion As Integer, CveClasificacionCosto As Integer, CveUnidadMedida As Integer, Codigo As String, NumeroParte As String, CodigoBarras As String, PS As String, Precio As Double, IVA As Double, RetIVA As Double, Inventariable As Boolean, CveProveedorCompra As Integer, AplicaParaConcepto As Boolean, AplicaParaVenta As Boolean, Estado As Boolean, CveUsuario As Integer, CvePS As Integer, CveMetodoInventario As Integer, EsPaquete As Integer, CveSATPS As Integer, CveEmpresa As Integer, Optional CveTipoPS As Integer = -1, Optional TipoServicio As Integer = -1, Optional CveClasificacion2 As Integer = -1, Optional CveMarca As Integer = -1, Optional AlmacenSeccion As String = "", Optional AplicaIEPS As Boolean = False, Optional IEPSPorcentaje As Decimal = -1, diff --git a/Ventas/ProductosServicios.aspx b/Ventas/ProductosServicios.aspx index e7eeed0e6..382703240 100644 --- a/Ventas/ProductosServicios.aspx +++ b/Ventas/ProductosServicios.aspx @@ -1,1423 +1,1507 @@ -<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="ProductosServicios.aspx.vb" Inherits="ProductosyServicios" %> - -<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> - - - - - - - - - - - - - - - - +<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="ProductosServicios.aspx.vb" Inherits="ProductosyServicios" %> + +<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> + + + + + + + + + + + + + + + + - - - -
  • - -
  • -
  • - -
  • -
  • - Bitacora Ecommerce -
  • -
  • - -
  • -
    - -
    -
    - - - - - - - -
    -
    -
    -
    -
    - - Descripción -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    - - + + + +
  • + +
  • +
  • + +
  • +
  • + Bitacora Ecommerce +
  • +
  • + +
  • +
    + + + + + + + + + + +
    +
    +
    +
    +
    + + Descripción +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    +
    + + + +
    +
    + + + +
    + + <%--
    -
    --%> -
    - -
    -
    -
    - - - - - -
    -
    -
    -
    -
    -
    - - - - - -
    -
    -
    -
    - - - - - -
    -
    -
    -
    - - -
    -
    -
    -
    - - -
    -
    -
    -
    - - - - - - - - - -
    -
    - - - - - - - -
    -
    - - - - - - - -
    -
    - - - - - - -
    - -
    - - Seleccione - - - - - -
    - -
    - - - -
    - -
    - - - -
    - -
    - - - - -
    - -
    - - - - - -
    -
    - - -
    -
    - - -
    -
    - - <%----%> - - -
    - -
    -
    -
    - - - - - -
    - -
    -
    -
    -
    - -
    - - - <%----%> - -
    - -
    -
    - -
    - - -
    - -
    -
    - -
    - - - - - - - - - - - -
    -
    -
    -
    - - - -
    - -
    -
    -
    - - - -
    -
    -
    -
    - - - -
    -
    -
    - -
    -
    -
    -
    -
    - - -
    -
    -
    -
    - - Equivalencias -
    -
    -
    -
    -
    -
    -
    - - - - - - - +
    --%> +
    + +
    +
    +
    + + + + + +
    +
    +
    +
    +
    +
    + + + + + +
    +
    +
    +
    + + + + + +
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    + + + + + + + + + +
    +
    + + + + + + + +
    +
    + + + + + + + +
    +
    + + + + + + +
    + +
    + + Seleccione + + + + + +
    + +
    + + + +
    + +
    + + + +
    + +
    + + + + +
    + +
    + + + + + +
    +
    + + +
    +
    + + +
    +
    + + <%----%> + + +
    + +
    +
    +
    + + + + + +
    + +
    +
    +
    +
    + +
    + + + <%----%> + +
    + +
    +
    + +
    + + +
    + +
    +
    + +
    + + + + + + + + + + + +
    +
    +
    +
    + + + +
    + +
    +
    +
    + + + +
    +
    +
    +
    + + + +
    +
    +
    + +
    +
    +
    +
    +
    + + +
    +
    +
    +
    + + Equivalencias +
    +
    +
    +
    +
    +
    +
    + + + + + + + <%-- --%> - - - - - - - <%----%> - - - - - - > - - - - -
    - - -
    -
    - - - -
    - - - - - -
    -
    - -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    - - Llantas -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    + + + + + + + <%----%> + + + + + + > + + + + +
    + + +
    +
    + + + +
    + + + + + + + + +
    +
    +
    + + +
    + +
    +
    +
    +
    +
    + + Llantas +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    <%--
    -
    --%> -
    - -
    -
    -
    -
    -
    - -
    - - -
    -
    -
    -
    - - Productos/Servicios Adicionales -
    -
    -
    - -
    -
    -
    -
    - - - - - - - - - - - - - - - - - > - - - +
    --%> +
    + +
    +
    +
    +
    +
    + +
    + + +
    +
    +
    +
    + + Productos/Servicios Adicionales +
    +
    +
    + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + > + + + <%--
    -
    --%> - - - -
    - - - - - -
    -
    - -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    - - Cítricos -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - - - -
    -
    - - - - - -
    -
    - -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    - - Ecommerce    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    - - - - -
    - -
    - - - - -
    - -
    - - - - -
    -
    -
    - - - - -
    -
    - - - - - -
    -
    -
    -
    - - - - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    - -
    -
    - - - - - -
    -
    -
    -
    -
    - - Impuestos -
    -
    -
    -
    -
    -
    -
    -
    - - - - - - - $ -
    - -
    -
    -
    -
    - - - -
    -
    -
    -
    -
    - - - - - - -
    -
    - -
    - - - - - - - - -
    -
    -
    -
    -
    - - - - - - % -
    -
    - - - - - + --%> + + + + + + + + + + + + +
    +
    +
    + + +
    + +
    +
    +
    +
    +
    + + Cítricos +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + +
    +
    + + + + + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + + Ecommerce    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + +
    + +
    + + + + +
    + +
    + + + + +
    +
    +
    + + + + +
    +
    + + + + + +
    +
    +
    +
    + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + + Imagen del producto    +
    +
    +
    + Cargar Archivo +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    + + Impuestos +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + $ +
    + +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    + + + + + + +
    +
    + +
    + + + + + + + + +
    +
    +
    +
    +
    + + + + + + % +
    +
    + + + + + % -
    -
    -
    - -
    - -
    - -
    - -
    -
    -
    - - - - - - - - - -
    -
    - - -
    -
    -
    -
    -
    -
    -
    -
    - - Impuestos Locales -
    -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    - Impuestos IEPS -
    -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - -
    -
    - - - - - - - - - - - - - - - - - - -
    -
    - - - - - - - - - - - - -
    -
    - - - - - - - - - -
    -
    -
    -
    -
    -
    - - +
    +
    +
    +
    + + Impuestos Locales +
    +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    + Impuestos IEPS +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + +
    +
    + + + + + + + + + +
    +
    +
    +
    +
    +
    + + -
    -
    -
    - - - - - - -
    -
    -
    -
    -
    - - Inventarios -
    -
    -
    -
    -
    -
    -
    + +
    +
    + + + + Aplicar +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + + + + + + + + +
    +
    +
    +
    +
    + + Inventarios +
    +
    +
    +
    +
    +
    +
    <%--
    -
    --%> -
    - -
    - - - - - - - -
    -
    -
    - -
    - -
    -
    - - - <%--Nuevo R: 27/09/2017--%> - -
    - -
    - - - -
    -
    -
    - -
    - - - -
    -
    -
    - -
    - - - -
    -
    -
    - -
    - - - -
    -
    -
    - -
    - - - -
    -
    -
    - -
    - - - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    - - - - - - - - - - -
    -
    -
    -
    -
    -
    -
    -
    -
    - - Comercio Exterior -
    -
    -
    -
    -
    -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    - - - -
    -
    -
    - - Carta Porte -
    -
    -
    - Limpiar datos -
    -
    -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    - -
    -
    - -
    - -
    - - -
    -
    - -
    - -
    - - -
    -
    - -
    - -
    - - -
    -
    - -
    - -
    - - -
    -
    - -
    - -
    - - -
    -
    - -
    - -
    - - - -
    -
    - -
    - -
    - - -
    -
    - -
    - -
    - - -
    -
    - -
    - -
    - - -
    -
    - -
    - -
    - - -
    -
    - -
    - -
    - - -
    -
    - -
    - -
    - - -
    -
    - -
    - -
    - - -
    -
    - -
    - -
    - - -
    -
    -
    -
    -
    -
    -
    - -
    - -
    - - -
    -
    -
    - -
    - - -
    -
    -
    - -
    - - -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    - -
    - - -
    -
    -
    -
    - - Secciones de Almacen -
    -
    -
    - -
    -
    -
    -
    - - - - +
    --%> +
    + +
    + + + + + + + +
    +
    +
    + +
    + +
    +
    + + + <%--Nuevo R: 27/09/2017--%> + +
    + +
    + + + +
    +
    +
    + +
    + + + +
    +
    +
    + +
    + + + +
    +
    +
    + +
    + + + +
    +
    +
    + +
    + + + +
    +
    +
    + +
    + + + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    + + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    + + Comercio Exterior +
    +
    +
    +
    +
    +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + + + +
    +
    +
    + + Carta Porte +
    +
    +
    + Limpiar datos +
    +
    +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    + +
    + + + +
    +
    + +
    + +
    + + + +
    +
    + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    + +
    + +
    + + +
    +
    +
    +
    +
    +
    +
    + +
    + +
    + + +
    +
    +
    + +
    + + +
    +
    +
    + +
    + + +
    +
    +
    + +
    + + +
    +
    +
    +
    +
    +
    + +
    + + +
    +
    +
    +
    + + Secciones de Almacen +
    +
    +
    + +
    +
    +
    +
    + + + + <%-- - --%> - - - - - - - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - + --%> + + + + + + + +
    +
    + +
    +
    + + + +
    + + + <%-- @@ -1474,1193 +1558,980 @@ - --%> - - - - - - - - - + + + + + + + + + + + + + + + +
    - + --%> + + + + + + + + + - + - + - + - - - - - - - - - - - - - - - -
    + Característica - - - - + + + + + + + + Opción - - - - + + + + + + + + Fecha Ing. - - - - + + + + + + + + Usuario - - - Comandos
    - - - - - - - - <%----%> - - - - - - - -    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - Paquetes - - -
    Comandos
    + + + + + + + + <%----%> + + + + + + + +    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + Paquetes + + + - - - - - - - - - - - - - - - - - - -
    AliasComandos
    - - - - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - - -
    - - <%--IZQUIERDA--%> -
    -
    - - <%--GENERAL--%> -
    -
    -
    -
    - - Información General -
    -
    - -
    -
    -
    -
    - - -
    -
    - - - <%----%> -
    -
    - - - <%----%> - -
    -
    - - - <%----%> - -
    -
    -
    -
    - - <%--INSIGNIAS--%> -
    -
    -
    -
    - - Insignias del producto -
    -
    - -
    -
    -
    - - -
    - -
    - - - - -
    -
    - -
    -
    -
    -
    - - - - - - - - - - -
    -
    -
    -
    -
    -
    -
    - - -
    -
    - - <%--DERECHA--%> -
    -
    - - <%--IMAGENES--%> -
    -
    -
    -
    - - Imagenes -
    -
    - - <%-- EcommerceImagenes--%> - -
    -
    -
    - - - -
    -
    -
    -
    - - -
    -
    -
    - -
    -
    -
    -
    - - Ver -
    -
    -
    -
    -
    IMAGEN
    -
    <%# Container.ItemIndex + 1 %>
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - <%--RELACIONADOS--%> -
    -
    -
    -
    - - Relación de Productos -
    -
    - -
    -
    -
    - - -
    - -
    - -
    -
    - -
    -
    -
    -
    - - - - - - - - - - -
    -
    -
    -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    - - - -
    -
    -
    - - Sistema -
    -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - -
    Estado: -
    Fecha de Captura: -
    Usuario Capturó: -
    Fecha de Modificacion: -
    Usuario Modifico: -
    -
    -
    -
    -
    - - - - - -
    - -
    - - - - - - <%----%> - - - -
    -
    - - -
    -
    -
    -
    -
    - - Bitacora -
    -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - -
    -
    -
    -
    - + + + + + + + <%--BITACORA ECOMMERCE--%> + + + + +
    - - - - + + + + + + + <%-- MODAL PS ADICIONALES --%> + + + <%-- MODAL PS ADICIONALES --%> + + + + <%-- FIN MODAL PS ADICIONALES --%> + + + + + + + + + + + + + + + - + + diff --git a/Ventas/ProductosServicios.aspx.vb b/Ventas/ProductosServicios.aspx.vb index 1721e2c10..b90c0960c 100644 --- a/Ventas/ProductosServicios.aspx.vb +++ b/Ventas/ProductosServicios.aspx.vb @@ -132,6 +132,15 @@ Partial Class ProductosyServicios ViewState("GeneraServicioAF") = value End Set End Property + + Public Property Imagen As String + Get + Return IfNull(ViewState("Imagen"), "", ViewState("Imagen")).ToString() + End Get + Set(value As String) + ViewState("Imagen") = value + End Set + End Property #End Region Private ReadOnly Property PermiteClasificacion2 As Boolean @@ -952,6 +961,17 @@ Partial Class ProductosyServicios DdlTipoFactor.SelectedValueExist(ObjProductosServicios.DtResultados.Rows(0)("CveTipoFactor").ToString) + Me.Imagen = ObjProductosServicios.DtResultados.Rows(0)("Imagen").ToString + + If Not String.IsNullOrEmpty(Me.Imagen) Then + imgImagen.Attributes.Add("src", String.Format("/ashx/SIGWeb.ashx?Metodo=GetImg&r={0}", Extensiones.Encripta(Me.Imagen))) + hplImagen.Attributes.Add("href", String.Format("/ashx/SIGWeb.ashx?Metodo=GetImg&r={0}", Extensiones.Encripta(Me.Imagen))) + End If + + DivImagen.Visible = True + upGaleria.Update() + RegistraScript("clickgaleria();", "CG") + If ObjProductosServicios.DtResultados.Rows(0)("CveTipoFactor").ToString.Contiene("1", "2") Then LIva.Visible = True DdlIVA.Visible = True @@ -2482,83 +2502,83 @@ Partial Class ProductosyServicios #Region " ECOMMERCE " Private Sub InicializaEcommerce() - AplicaEcommerce = False + 'AplicaEcommerce = False - If UsuarioActual.Empresa.Funcionalidad(700).ToEntero = 1 And CvePS > 0 Then + 'If UsuarioActual.Empresa.Funcionalidad(700).ToEntero = 1 And CvePS > 0 Then - TabEcommerce.Visible = True - LBBitacoraEcommerce.Visible = True + ' TabEcommerce.Visible = True + ' LBBitacoraEcommerce.Visible = True - 'INICIALIZA PRODUCTOS ECOMMERCE - Dim ObjEcommerce As New ClsECommerce - If ObjEcommerce.InsigniasGet(-1, "", UsuarioActual.CveEmpresa) Then - DdlEcommerceInsignia.DataSource = ObjEcommerce.DtResultados - End If - ObjEcommerce.Dispose() - DdlEcommerceInsignia.DataBind() - CargaEcommerce() + ' 'INICIALIZA PRODUCTOS ECOMMERCE + ' Dim ObjEcommerce As New ClsECommerce + ' If ObjEcommerce.InsigniasGet(-1, "", UsuarioActual.CveEmpresa) Then + ' DdlEcommerceInsignia.DataSource = ObjEcommerce.DtResultados + ' End If + ' ObjEcommerce.Dispose() + ' DdlEcommerceInsignia.DataBind() + ' CargaEcommerce() - 'INICIALIZA PRODUCTOS INSIGNIAS - CargaPSInsigniasEcommerce() + ' 'INICIALIZA PRODUCTOS INSIGNIAS + ' CargaPSInsigniasEcommerce() - 'INICIALIZA PRODUCTOS IMAGENES - CargarGaleriaImagenesEcommerce() + ' 'INICIALIZA PRODUCTOS IMAGENES + ' CargarGaleriaImagenesEcommerce() - 'INICIALIZA PRODUCTOS RELACIONADOS - DdlEcommercePSRelacionado.setEsWebService(True) - CargaPSRelacionadosEcommerce() + ' 'INICIALIZA PRODUCTOS RELACIONADOS + ' DdlEcommercePSRelacionado.setEsWebService(True) + ' CargaPSRelacionadosEcommerce() - UpEcommerce.Update() + ' UpEcommerce.Update() - End If + 'End If End Sub #Region " PRODUCTOS ECOMMERCE " Private Sub CargaEcommerce() - Dim DrEcommerce As DataRow = Nothing - Dim ObjEcommerce As New ClsECommerce - If ObjEcommerce.ProductosGet(CvePS, -1, -1, -1, UsuarioActual.CveEmpresa) Then - DrEcommerce = ObjEcommerce.DtResultados.FiltroPrimero("") - End If - ObjEcommerce.Dispose() + 'Dim DrEcommerce As DataRow = Nothing + 'Dim ObjEcommerce As New ClsECommerce + 'If ObjEcommerce.ProductosGet(CvePS, -1, -1, -1, UsuarioActual.CveEmpresa) Then + ' DrEcommerce = ObjEcommerce.DtResultados.FiltroPrimero("") + 'End If + 'ObjEcommerce.Dispose() - If DrEcommerce IsNot Nothing Then - AplicaEcommerce = True + 'If DrEcommerce IsNot Nothing Then + ' AplicaEcommerce = True - TxtEcommerceDescripcion.Text = DrEcommerce("Descripcion").ToString - TxtEcommercePrecioBase.Text = DrEcommerce("PrecioBase").ToString.FormatoNumero - TxtEcommercePrecioPromocion.Text = DrEcommerce("PrecioPromocion").ToString.FormatoNumero - ChkEcommerceDisponible.Checked = CBool(DrEcommerce("Disponible").ToString) - End If - GvEcommercePSRealacionados.DataBind() - UpEcommercePSRelacionados.Update() + ' TxtEcommerceDescripcion.Text = DrEcommerce("Descripcion").ToString + ' TxtEcommercePrecioBase.Text = DrEcommerce("PrecioBase").ToString.FormatoNumero + ' TxtEcommercePrecioPromocion.Text = DrEcommerce("PrecioPromocion").ToString.FormatoNumero + ' ChkEcommerceDisponible.Checked = CBool(DrEcommerce("Disponible").ToString) + 'End If + 'GvEcommercePSRealacionados.DataBind() + 'UpEcommercePSRelacionados.Update() End Sub Private Function GuardaEcommerce() As Boolean Dim TieneError As Boolean = False If UsuarioActual.Empresa.Funcionalidad(700) = "1" Then - 'SI NO SE HA GUARDADO EN ECOMMERCE Y NO TIENE NINGUN VALOR OMITE - If Not AplicaEcommerce And Not ChkEcommerceDisponible.Checked And TxtEcommerceDescripcion.Text.Length = 0 And TxtEcommercePrecioBase.Text.Length = 0 And TxtEcommercePrecioPromocion.Text.Length = 0 Then - Return False - End If + ''SI NO SE HA GUARDADO EN ECOMMERCE Y NO TIENE NINGUN VALOR OMITE + 'If Not AplicaEcommerce And Not ChkEcommerceDisponible.Checked And TxtEcommerceDescripcion.Text.Length = 0 And TxtEcommercePrecioBase.Text.Length = 0 And TxtEcommercePrecioPromocion.Text.Length = 0 Then + ' Return False + 'End If - If ChkEcommerceDisponible.Checked Then - If Not ValidaGuardarEcommerce() Then - Return True - End If - End If + 'If ChkEcommerceDisponible.Checked Then + ' If Not ValidaGuardarEcommerce() Then + ' Return True + ' End If + 'End If - Dim Descripcion As String = TxtEcommerceDescripcion.Text.Trim - Dim PrecioBase As Double = TxtEcommercePrecioBase.Text.Trim.ToDouble - Dim PrecioPromocion As Double = TxtEcommercePrecioPromocion.Text.Trim.ToDouble - Dim Disponible As Boolean = ChkEcommerceDisponible.Checked + 'Dim Descripcion As String = TxtEcommerceDescripcion.Text.Trim + 'Dim PrecioBase As Double = TxtEcommercePrecioBase.Text.Trim.ToDouble + 'Dim PrecioPromocion As Double = TxtEcommercePrecioPromocion.Text.Trim.ToDouble + 'Dim Disponible As Boolean = ChkEcommerceDisponible.Checked - Dim ObjEcommerce As New ClsECommerce - If Not ObjEcommerce.ProductosAddUpdate(CvePS, Descripcion, PrecioBase, PrecioPromocion, Disponible, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then - TieneError = True - End If - ObjEcommerce.Dispose() + 'Dim ObjEcommerce As New ClsECommerce + 'If Not ObjEcommerce.ProductosAddUpdate(CvePS, Descripcion, PrecioBase, PrecioPromocion, Disponible, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + ' TieneError = True + 'End If + 'ObjEcommerce.Dispose() End If @@ -2569,28 +2589,28 @@ Partial Class ProductosyServicios Dim Mensaje As New StringBuilder 'DESCRIPCION - Dim Descripcion As String = TxtEcommerceDescripcion.Text.Trim - If Descripcion.Length = 0 Then - Mensaje.Append("- El campo Descripción es obligatorio. Por favor introduzcalo y vuelva a intentar.
    ") - End If - If Descripcion.Length > 255 Then - Mensaje.Append("- El campo Descripción admite maximo 255 caracteres. Por favor verifique y vuelva a intentar.
    ") - End If + 'Dim Descripcion As String = TxtEcommerceDescripcion.Text.Trim + 'If Descripcion.Length = 0 Then + ' Mensaje.Append("- El campo Descripción es obligatorio. Por favor introduzcalo y vuelva a intentar.
    ") + 'End If + 'If Descripcion.Length > 255 Then + ' Mensaje.Append("- El campo Descripción admite maximo 255 caracteres. Por favor verifique y vuelva a intentar.
    ") + 'End If - 'PRECIO BASE - Dim PrecioBase As Double = TxtEcommercePrecioBase.Text.Trim.ToDouble - If PrecioBase = 0 Then - Mensaje.Append("- El campo Precio es obligatorio. Por favor verifique y vuelva a intentar.
    ") - End If - If PrecioBase < 0 Then - Mensaje.Append("- El campo Precio no puede ser negativo. Por favor verifique y vuelva a intentar.
    ") - End If + ''PRECIO BASE + 'Dim PrecioBase As Double = TxtEcommercePrecioBase.Text.Trim.ToDouble + 'If PrecioBase = 0 Then + ' Mensaje.Append("- El campo Precio es obligatorio. Por favor verifique y vuelva a intentar.
    ") + 'End If + 'If PrecioBase < 0 Then + ' Mensaje.Append("- El campo Precio no puede ser negativo. Por favor verifique y vuelva a intentar.
    ") + 'End If - 'PRECIO FINAL - Dim PrecioPromocion As Double = TxtEcommercePrecioPromocion.Text.Trim.ToDouble - If PrecioPromocion < 0 Then - Mensaje.Append("- El campo Precio Final no puede ser negativo. Por favor verifique y vuelva a intentar.
    ") - End If + ''PRECIO FINAL + 'Dim PrecioPromocion As Double = TxtEcommercePrecioPromocion.Text.Trim.ToDouble + 'If PrecioPromocion < 0 Then + ' Mensaje.Append("- El campo Precio Final no puede ser negativo. Por favor verifique y vuelva a intentar.
    ") + 'End If 'VALIDACION @@ -2606,225 +2626,225 @@ Partial Class ProductosyServicios #Region " PRODUCTOS INSIGNIAS " Private Sub CargaPSInsigniasEcommerce() - Dim ObjEcommerce As New ClsECommerce - If ObjEcommerce.ProductosInsigniasGet(CvePS, -1, UsuarioActual.CveEmpresa) Then - GvEcommercePSInsignias.DataSource = ObjEcommerce.DtResultados - Else - GvEcommercePSInsignias.DataSource = Nothing - End If - ObjEcommerce.Dispose() + 'Dim ObjEcommerce As New ClsECommerce + 'If ObjEcommerce.ProductosInsigniasGet(CvePS, -1, UsuarioActual.CveEmpresa) Then + ' GvEcommercePSInsignias.DataSource = ObjEcommerce.DtResultados + 'Else + ' GvEcommercePSInsignias.DataSource = Nothing + 'End If + 'ObjEcommerce.Dispose() - GvEcommercePSInsignias.DataBind() - UpEcommerceInsignias.Update() + 'GvEcommercePSInsignias.DataBind() + 'UpEcommerceInsignias.Update() End Sub Protected Sub BtnEcommerceInsignias_Click(sender As Object, e As EventArgs) - If Not ValidaAgregarProductosInsigniasEcommerce() Then - Exit Sub - End If + 'If Not ValidaAgregarProductosInsigniasEcommerce() Then + ' Exit Sub + 'End If - Dim TieneError As Boolean = False - Dim CveInsignia As Integer = DdlEcommerceInsignia.SelectedValue.ToEntero + 'Dim TieneError As Boolean = False + 'Dim CveInsignia As Integer = DdlEcommerceInsignia.SelectedValue.ToEntero - 'AGREGAR - Dim ObjEcommerce As New ClsECommerce - If ObjEcommerce.ProductosInsigniasAdd(Me.CvePS, CveInsignia, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then - Alert("La Insignia se agregó correctamente.", TipoMensaje.MsgInformacion) - Else - TieneError = True - End If - ObjEcommerce.Dispose() + ''AGREGAR + 'Dim ObjEcommerce As New ClsECommerce + 'If ObjEcommerce.ProductosInsigniasAdd(Me.CvePS, CveInsignia, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + ' Alert("La Insignia se agregó correctamente.", TipoMensaje.MsgInformacion) + 'Else + ' TieneError = True + 'End If + 'ObjEcommerce.Dispose() - If Not TieneError Then - DdlEcommerceInsignia.SelectedValueExist(-1) - CargaPSInsigniasEcommerce() - End If + 'If Not TieneError Then + ' DdlEcommerceInsignia.SelectedValueExist(-1) + ' CargaPSInsigniasEcommerce() + 'End If End Sub Private Function ValidaAgregarProductosInsigniasEcommerce() As Boolean Dim Retorno As Boolean = True - Dim Mensaje As New StringBuilder + 'Dim Mensaje As New StringBuilder - 'INSIGNIA - Dim CveInsignia As Integer = DdlEcommerceInsignia.SelectedValue.ToEntero - If CveInsignia = 0 Then - Mensaje.Append("- El campo Insignia es obligatorio. Por favor introduzcalo y vuelva a intentar.
    ") - End If - For Each GvRow As GridViewRow In GvEcommercePSInsignias.Rows - If GvRow.DataKey("CveInsignia").ToString.ToEntero = CveInsignia Then - Mensaje.Append($"- La Insignia {DdlEcommerceInsignia.SelectedItem.Text} ya es parte del producto y no se puede duplicar. Por favor verifique y vuelva a intentar.
    ") - Exit For - End If - Next + ''INSIGNIA + 'Dim CveInsignia As Integer = DdlEcommerceInsignia.SelectedValue.ToEntero + 'If CveInsignia = 0 Then + ' Mensaje.Append("- El campo Insignia es obligatorio. Por favor introduzcalo y vuelva a intentar.
    ") + 'End If + 'For Each GvRow As GridViewRow In GvEcommercePSInsignias.Rows + ' If GvRow.DataKey("CveInsignia").ToString.ToEntero = CveInsignia Then + ' Mensaje.Append($"- La Insignia {DdlEcommerceInsignia.SelectedItem.Text} ya es parte del producto y no se puede duplicar. Por favor verifique y vuelva a intentar.
    ") + ' Exit For + ' End If + 'Next - 'VALIDACION - If Mensaje.ToString.Length > 0 Then - Retorno = False - Alert(Mensaje.ToString, TipoMensaje.MsgAdvertencia) - End If + ''VALIDACION + 'If Mensaje.ToString.Length > 0 Then + ' Retorno = False + ' Alert(Mensaje.ToString, TipoMensaje.MsgAdvertencia) + 'End If Return Retorno End Function - Protected Sub GvEcommercePSInsignias_RowDeleting(sender As Object, e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvEcommercePSInsignias.RowDeleting - Dim TieneError As Boolean = False - Dim GvRow As GridViewRow = GvEcommercePSInsignias.Rows(e.RowIndex) + 'Protected Sub GvEcommercePSInsignias_RowDeleting(sender As Object, e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvEcommercePSInsignias.RowDeleting + ' Dim TieneError As Boolean = False + ' Dim GvRow As GridViewRow = GvEcommercePSInsignias.Rows(e.RowIndex) - Dim ObjEcommerce As New ClsECommerce - If ObjEcommerce.ProductosInsigniasRemove(GvRow.DataKey("CvePS").ToString.ToEntero, GvRow.DataKey("CveInsignia").ToString.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then - Alert("La Insignia se eliminó correctamente.", TipoMensaje.MsgInformacion) - Else - TieneError = True - End If - ObjEcommerce.Dispose() + ' Dim ObjEcommerce As New ClsECommerce + ' If ObjEcommerce.ProductosInsigniasRemove(GvRow.DataKey("CvePS").ToString.ToEntero, GvRow.DataKey("CveInsignia").ToString.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + ' Alert("La Insignia se eliminó correctamente.", TipoMensaje.MsgInformacion) + ' Else + ' TieneError = True + ' End If + ' ObjEcommerce.Dispose() - If Not TieneError Then - CargaPSInsigniasEcommerce() - End If - End Sub + ' If Not TieneError Then + ' CargaPSInsigniasEcommerce() + ' End If + 'End Sub #End Region #Region " PRODUCTOS IMAGENES " - Private Sub CargarGaleriaImagenesEcommerce() - Dim TmpDT As DataTable = Nothing + 'Private Sub CargarGaleriaImagenesEcommerce() + ' Dim TmpDT As DataTable = Nothing - Dim ObjEcommerce As New ClsECommerce - If ObjEcommerce.ProductosImagenesGet(CvePS, UsuarioActual.CveEmpresa) Then - TmpDT = ObjEcommerce.DtResultados - Else - TmpDT = Nothing - End If - ObjEcommerce.Dispose() + ' Dim ObjEcommerce As New ClsECommerce + ' If ObjEcommerce.ProductosImagenesGet(CvePS, UsuarioActual.CveEmpresa) Then + ' TmpDT = ObjEcommerce.DtResultados + ' Else + ' TmpDT = Nothing + ' End If + ' ObjEcommerce.Dispose() - RptFotos.DataSource = TmpDT - RptFotos.DataBind() - UpEcommerceGaleriaImagenes.Update() - End Sub + ' RptFotos.DataSource = TmpDT + ' RptFotos.DataBind() + ' UpEcommerceGaleriaImagenes.Update() + 'End Sub Protected Sub BtnEcommerceImagenes_Click(sender As Object, e As EventArgs) - Dim FilesGral As List(Of Archivo) = TxtEcommerceImagenes.getfiles().Archivos - Dim FileMove As String = "" - Dim Archivo As String = "" - Dim DirectorioTemporal As String = "" + 'Dim FilesGral As List(Of Archivo) = TxtEcommerceImagenes.getfiles().Archivos + 'Dim FileMove As String = "" + 'Dim Archivo As String = "" + 'Dim DirectorioTemporal As String = "" - Dim DirectorioDestino As String = $"{UsuarioActual.Empresa.Ruta}\Ecommerce\Productos\Imagenes\" - If Not Directory.Exists(DirectorioDestino) Then - Directory.CreateDirectory(DirectorioDestino) - End If + 'Dim DirectorioDestino As String = $"{UsuarioActual.Empresa.Ruta}\Ecommerce\Productos\Imagenes\" + 'If Not Directory.Exists(DirectorioDestino) Then + ' Directory.CreateDirectory(DirectorioDestino) + 'End If - Dim ObjEcommerce As New ClsECommerce - For Each FileItem As Archivo In FilesGral - Archivo = NowADS().Ticks.ToString - Try - FileMove = FileItem.filename - DirectorioTemporal = $"{AppDomain.CurrentDomain.BaseDirectory}Temp\{FileMove}" + 'Dim ObjEcommerce As New ClsECommerce + 'For Each FileItem As Archivo In FilesGral + ' Archivo = NowADS().Ticks.ToString + ' Try + ' FileMove = FileItem.filename + ' DirectorioTemporal = $"{AppDomain.CurrentDomain.BaseDirectory}Temp\{FileMove}" - Archivo = $"{Archivo}{IO.Path.GetExtension(DirectorioTemporal)}" - DirectorioDestino += Archivo - If ObjEcommerce.ProductosImagenesAdd(CvePS, $"Ecommerce\Productos\Imagenes\{Archivo}", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then - CargarGaleriaImagenesEcommerce() - My.Computer.FileSystem.MoveFile(DirectorioTemporal, DirectorioDestino) - End If - Catch ex As Exception - End Try - Next - ObjEcommerce.Dispose() + ' Archivo = $"{Archivo}{IO.Path.GetExtension(DirectorioTemporal)}" + ' DirectorioDestino += Archivo + ' If ObjEcommerce.ProductosImagenesAdd(CvePS, $"Ecommerce\Productos\Imagenes\{Archivo}", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + ' CargarGaleriaImagenesEcommerce() + ' My.Computer.FileSystem.MoveFile(DirectorioTemporal, DirectorioDestino) + ' End If + ' Catch ex As Exception + ' End Try + 'Next + 'ObjEcommerce.Dispose() - RegistraScript("$(""#Modalupfotos"").modal(""hide"");initcarusel();") - TxtEcommerceImagenes.Text = "[]" - UpUpFotos.Update() + 'RegistraScript("$(""#Modalupfotos"").modal(""hide"");initcarusel();") + 'TxtEcommerceImagenes.Text = "[]" + 'UpUpFotos.Update() End Sub Protected Sub BtnEcommerceEliminarImagenes_Click(sender As Object, e As System.EventArgs) - Dim CveImagenActivoFijo As Integer = 0 - CveImagenActivoFijo = Integer.Parse(DirectCast(sender, Button).CommandArgument) + 'Dim CveImagenActivoFijo As Integer = 0 + 'CveImagenActivoFijo = Integer.Parse(DirectCast(sender, Button).CommandArgument) - If (CveImagenActivoFijo > 0) Then - Dim ObjEcommerce As New ClsECommerce - If ObjEcommerce.ProductosImagenesRemove(CveImagenActivoFijo, UsuarioActual.CveEmpresa) Then - File.Delete(String.Format("{0}{1}", UsuarioActual.Empresa.Ruta, ObjEcommerce.DtResultados.Rows(0)("URL"))) - CargarGaleriaImagenesEcommerce() - RegistraScript("initcarusel();") - End If - ObjEcommerce.Dispose() - End If + 'If (CveImagenActivoFijo > 0) Then + ' Dim ObjEcommerce As New ClsECommerce + ' If ObjEcommerce.ProductosImagenesRemove(CveImagenActivoFijo, UsuarioActual.CveEmpresa) Then + ' File.Delete(String.Format("{0}{1}", UsuarioActual.Empresa.Ruta, ObjEcommerce.DtResultados.Rows(0)("URL"))) + ' CargarGaleriaImagenesEcommerce() + ' RegistraScript("initcarusel();") + ' End If + ' ObjEcommerce.Dispose() + 'End If End Sub #End Region #Region " PRODUCTOS RELACIONADOS " Private Sub CargaPSRelacionadosEcommerce() - Dim ObjEcommerce As New ClsECommerce - If ObjEcommerce.ProductosRelacionadosGet(CvePS, UsuarioActual.CveEmpresa) Then - GvEcommercePSRealacionados.DataSource = ObjEcommerce.DtResultados - Else - GvEcommercePSRealacionados.DataSource = Nothing - End If - ObjEcommerce.Dispose() + 'Dim ObjEcommerce As New ClsECommerce + 'If ObjEcommerce.ProductosRelacionadosGet(CvePS, UsuarioActual.CveEmpresa) Then + ' GvEcommercePSRealacionados.DataSource = ObjEcommerce.DtResultados + 'Else + ' GvEcommercePSRealacionados.DataSource = Nothing + 'End If + 'ObjEcommerce.Dispose() - GvEcommercePSRealacionados.DataBind() - UpEcommercePSRelacionados.Update() + 'GvEcommercePSRealacionados.DataBind() + 'UpEcommercePSRelacionados.Update() End Sub Protected Sub BtnEcommercePSRelacionados_Click(sender As Object, e As EventArgs) - If Not ValidaAgregarProductosRelacionadosEcommerce() Then - Exit Sub - End If + 'If Not ValidaAgregarProductosRelacionadosEcommerce() Then + ' Exit Sub + 'End If - Dim TieneError As Boolean = False - Dim CvePS As Integer = DdlEcommercePSRelacionado.SelectedValue.ToEntero + 'Dim TieneError As Boolean = False + 'Dim CvePS As Integer = DdlEcommercePSRelacionado.SelectedValue.ToEntero - 'AGREGAR - Dim ObjEcommerce As New ClsECommerce - If ObjEcommerce.ProductosRelacionadosAdd(Me.CvePS, CvePS, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then - Alert("La relación se agregó correctamente.", TipoMensaje.MsgInformacion) - Else - TieneError = True - End If - ObjEcommerce.Dispose() + ''AGREGAR + 'Dim ObjEcommerce As New ClsECommerce + 'If ObjEcommerce.ProductosRelacionadosAdd(Me.CvePS, CvePS, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + ' Alert("La relación se agregó correctamente.", TipoMensaje.MsgInformacion) + 'Else + ' TieneError = True + 'End If + 'ObjEcommerce.Dispose() - If Not TieneError Then - DdlEcommercePSRelacionado.SelectedValue = "-1" - DdlEcommercePSRelacionado.SelectedText = "" - CargaPSRelacionadosEcommerce() - End If + 'If Not TieneError Then + ' DdlEcommercePSRelacionado.SelectedValue = "-1" + ' DdlEcommercePSRelacionado.SelectedText = "" + ' CargaPSRelacionadosEcommerce() + 'End If End Sub Private Function ValidaAgregarProductosRelacionadosEcommerce() As Boolean - Dim Retorno As Boolean = True - Dim Mensaje As New StringBuilder + 'Dim Retorno As Boolean = True + 'Dim Mensaje As New StringBuilder - 'PS - Dim CvePS As Integer = DdlEcommercePSRelacionado.SelectedValue.ToEntero - If CvePS = 0 Then - Mensaje.Append("- El campo Producto es obligatorio. Por favor introduzcalo y vuelva a intentar.
    ") - End If - For Each GvRow As GridViewRow In GvEcommercePSRealacionados.Rows - If GvRow.DataKey("CvePS").ToString.ToEntero = CvePS Then - Mensaje.Append($"- El producto {DdlEcommercePSRelacionado.SelectedText} ya esta relacionado y no se puede duplicar. Por favor verifique y vuelva a intentar.
    ") - Exit For - End If - Next + ''PS + 'Dim CvePS As Integer = DdlEcommercePSRelacionado.SelectedValue.ToEntero + 'If CvePS = 0 Then + ' Mensaje.Append("- El campo Producto es obligatorio. Por favor introduzcalo y vuelva a intentar.
    ") + 'End If + 'For Each GvRow As GridViewRow In GvEcommercePSRealacionados.Rows + ' If GvRow.DataKey("CvePS").ToString.ToEntero = CvePS Then + ' Mensaje.Append($"- El producto {DdlEcommercePSRelacionado.SelectedText} ya esta relacionado y no se puede duplicar. Por favor verifique y vuelva a intentar.
    ") + ' Exit For + ' End If + 'Next - 'VALIDACION - If Mensaje.ToString.Length > 0 Then - Retorno = False - Alert(Mensaje.ToString, TipoMensaje.MsgAdvertencia) - End If + ''VALIDACION + 'If Mensaje.ToString.Length > 0 Then + ' Retorno = False + ' Alert(Mensaje.ToString, TipoMensaje.MsgAdvertencia) + 'End If - Return Retorno + 'Return Retorno End Function - Protected Sub GvEcommercePSRealacionados_RowDeleting(sender As Object, e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvEcommercePSRealacionados.RowDeleting - Dim TieneError As Boolean = False - Dim GvRow As GridViewRow = GvEcommercePSRealacionados.Rows(e.RowIndex) + 'Protected Sub GvEcommercePSRealacionados_RowDeleting(sender As Object, e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvEcommercePSRealacionados.RowDeleting + ' 'Dim TieneError As Boolean = False + ' 'Dim GvRow As GridViewRow = GvEcommercePSRealacionados.Rows(e.RowIndex) - Dim ObjEcommerce As New ClsECommerce - If ObjEcommerce.ProductosRelacionadosRemove(GvRow.DataKey("CvePS1").ToString.ToEntero, GvRow.DataKey("CvePS2").ToString.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then - Alert("La relación se eliminó correctamente.", TipoMensaje.MsgInformacion) - Else - TieneError = True - End If - ObjEcommerce.Dispose() + ' 'Dim ObjEcommerce As New ClsECommerce + ' 'If ObjEcommerce.ProductosRelacionadosRemove(GvRow.DataKey("CvePS1").ToString.ToEntero, GvRow.DataKey("CvePS2").ToString.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + ' ' Alert("La relación se eliminó correctamente.", TipoMensaje.MsgInformacion) + ' 'Else + ' ' TieneError = True + ' 'End If + ' 'ObjEcommerce.Dispose() - If Not TieneError Then - CargaPSRelacionadosEcommerce() - End If - End Sub + ' 'If Not TieneError Then + ' ' CargaPSRelacionadosEcommerce() + ' 'End If + 'End Sub #End Region @@ -3599,4 +3619,64 @@ Partial Class ProductosyServicios End If End Sub + + Private Sub BtnUpFotos_Click(sender As Object, e As EventArgs) Handles BtnUpFotos.Click + + Dim FilesGral As List(Of Archivo) = TxtUpFotos.getfiles().Archivos + Dim FileMove As String = "" + Dim NewName As String + For Each FileItem As Archivo In FilesGral + + NewName = NowADS().Ticks.ToString + Dim ObjPS As New ClsProductosServicios + Try + FileMove = FileItem.filename + Dim DirectorioOld As New StringBuilder + Dim DirectorioNew As New StringBuilder + DirectorioOld.AppendFormat("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, FileMove) + DirectorioNew.AppendFormat("{0}PS\", UsuarioActual.Empresa.Ruta) + If Not Directory.Exists(DirectorioNew.ToString) Then + Directory.CreateDirectory(DirectorioNew.ToString) + End If + NewName = String.Format("{0}{1}", NewName, IO.Path.GetExtension(DirectorioOld.ToString())) + DirectorioNew.Append(NewName) + + Me.Imagen = String.Format("PS/{0}", NewName) + If ObjPS.UpdatePSImagen(Me.CvePS, Me.Imagen) Then + My.Computer.FileSystem.MoveFile(DirectorioOld.ToString, DirectorioNew.ToString) + End If + + imgImagen.Attributes.Add("src", String.Format("/ashx/SIGWeb.ashx?Metodo=GetImg&r={0}", Extensiones.Encripta(Me.Imagen))) + hplImagen.Attributes.Add("href", String.Format("/ashx/SIGWeb.ashx?Metodo=GetImg&r={0}", Extensiones.Encripta(Me.Imagen))) + upGaleria.Update() + + Catch ex As Exception + OnError("Ocurrió un error al guardar la imagen", ex) + End Try + + ObjPS.Dispose() + RegistraScript("$(""#Modalupfotos"").modal(""hide"");initcarusel();") + TxtUpFotos.Text = "[]" + UpUpFotos.Update() + Next + + End Sub + + Protected Sub BtnEliminarFoto_Click(sender As Object, e As System.EventArgs) + + If (Me.CvePS > 0) Then + Dim ObjPS As New ClsProductosServicios + If ObjPS.UpdatePSImagen(Me.CvePS, "") Then + File.Delete(String.Format("{0}{1}", UsuarioActual.Empresa.Ruta, Me.Imagen)) + Me.Imagen = "" + imgImagen.Attributes.Add("src", "") + hplImagen.Attributes.Add("href", "") + RegistraScript("initcarusel();") + End If + ObjPS.Dispose() + + upGaleria.Update() + End If + + End Sub End Class diff --git a/Ventas/Ventas.aspx b/Ventas/Ventas.aspx index 7b66733c6..c2155b32e 100644 --- a/Ventas/Ventas.aspx +++ b/Ventas/Ventas.aspx @@ -979,6 +979,41 @@ + + + +
    +
    + + Imagen del producto + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    @@ -7617,7 +7652,7 @@ - <%-- + <%-- @@ -8806,7 +8841,7 @@ - -
    +
    @@ -242,6 +242,9 @@
    +
    + +
    @@ -258,11 +261,40 @@
    - - <%----%> + + + + + + + + + + + diff --git a/OI/Proyecto.aspx.cs b/OI/Proyecto.aspx.cs index 8d205aed7..2c4d1eaba 100644 --- a/OI/Proyecto.aspx.cs +++ b/OI/Proyecto.aspx.cs @@ -21,6 +21,7 @@ public partial class OI_Proyecto : ClsPaginas public List LCveUsuarioCCP { get { if (ViewState["LCveUsuarioCCP"] == null) { ViewState["LCveUsuarioCCP"] = new List(); } return (List)ViewState["LCveUsuarioCCP"]; } set { ViewState["LCveUsuarioCCP"] = value; } } public List LcveuserVisto { get { if (ViewState["LcveuserVisto"] == null) { ViewState["LcveuserVisto"] = new List(); } return (List)ViewState["LcveuserVisto"]; } set { ViewState["LcveuserVisto"] = value; } } + public const string iddivAgregarTema = "divModalAgregartema"; #endregion protected void Page_Load(object sender, EventArgs e) @@ -355,4 +356,48 @@ public partial class OI_Proyecto : ClsPaginas UpModalProyecto.Update(); } + + #region TEMAS + + protected void LnkAddTtemaB_Click(object sender, EventArgs e) + { + RegistraScript(string.Format("$('#{0}').modal()", iddivAgregarTema)); + } + + protected void BtnAgregarTema_Click(object sender, EventArgs e) + { + + using (ClsOIEventos objoi = new ClsOIEventos()) + { + if (objoi.AddRevisionesEventos(TxtTema.Text.Trim(), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)) + { + Alert(string.Format("El Tema \"{0}\" fue agregado con éxito.", TxtTema.Text.Trim()), ModExtensiones.TipoMensaje.MsgInformacion); + RegistraScript(string.Format("$('#{0}').modal('hide')", iddivAgregarTema)); + TxtTema.Text = ""; + set_GlobalDTOIRevision(UsuarioActual.CveEmpresa, objoi.DtResultados); + CargaTemas(); + + UpModalTema.Update(); + UpModalProyecto.Update(); + + } + else { Alert("Ocurrió un error al agregar la revisión. Por favor vuelva a intentar.", ModExtensiones.TipoMensaje.MsgError); } + + } + } + + private void CargaTemas() + { + DdlTema.ClearSelection(); + DdlTema.SelectedValue = null; + DdlTema.Items.Clear(); + + DdlTema.DataSource = get_GlobalDTOIRevision(UsuarioActual.CveEmpresa).FiltraParametros(string.Format("CveUsuario = {0}", UsuarioActual.CveUsuario)); + DdlTema.DataBind(); + DdlTema.Items.Insert(0, new ListItem("Seleccione", "-1")); + + } + + + #endregion } \ No newline at end of file diff --git a/OI/RepProyectos.aspx b/OI/RepProyectos.aspx index 90f168475..83a8f9e61 100644 --- a/OI/RepProyectos.aspx +++ b/OI/RepProyectos.aspx @@ -178,7 +178,7 @@ -
    +
    @@ -193,6 +193,9 @@
    +
    + +
    @@ -208,6 +211,32 @@
    + + + + diff --git a/OI/RepProyectos.aspx.cs b/OI/RepProyectos.aspx.cs index db1f74b1b..3efa822f3 100644 --- a/OI/RepProyectos.aspx.cs +++ b/OI/RepProyectos.aspx.cs @@ -10,6 +10,7 @@ public partial class OI_RepProyectos : ClsPaginas { #region Propiedades public const string iddivAgregarProyecto = "iddivAgregarProyecto"; + public const string iddivAgregarTema = "divModalAgregartema"; #endregion protected void Page_Load(object sender, EventArgs e) { @@ -21,9 +22,11 @@ public partial class OI_RepProyectos : ClsPaginas DdlPara.Items.Insert(0, new ListItem("Seleccione uno", "-1")); - DdlTema.DataSource = get_GlobalDTOIRevision(UsuarioActual.CveEmpresa).FiltraParametros(string.Format("CveUsuario = {0}", UsuarioActual.CveUsuario)); - DdlTema.DataBind(); - DdlTema.Items.Insert(0, new ListItem("Seleccione", "-1")); + + CargaTemas(); + //DdlTema.DataSource = get_GlobalDTOIRevision(UsuarioActual.CveEmpresa).FiltraParametros(string.Format("CveUsuario = {0}", UsuarioActual.CveUsuario)); + //DdlTema.DataBind(); + //DdlTema.Items.Insert(0, new ListItem("Seleccione", "-1")); cargar(); } } @@ -196,4 +199,50 @@ public partial class OI_RepProyectos : ClsPaginas } } + + #region TEMAS + + protected void LnkAddTtemaB_Click(object sender, EventArgs e) + { + RegistraScript(string.Format("$('#{0}').modal()", iddivAgregarTema)); + } + + protected void BtnAgregarTema_Click(object sender, EventArgs e) + { + + using (ClsOIEventos objoi = new ClsOIEventos()) + { + if (objoi.AddRevisionesEventos(TxtTema.Text.Trim(), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)) + { + Alert(string.Format("El Tema \"{0}\" fue agregado con éxito.", TxtTema.Text.Trim()), ModExtensiones.TipoMensaje.MsgInformacion); + RegistraScript(string.Format("$('#{0}').modal('hide')", iddivAgregarTema)); + TxtTema.Text = ""; + set_GlobalDTOIRevision(UsuarioActual.CveEmpresa, objoi.DtResultados); + CargaTemas(); + + UpModalTema.Update(); + UpModalProyecto.Update(); + + } + else { Alert("Ocurrió un error al agregar la revisión. Por favor vuelva a intentar.", ModExtensiones.TipoMensaje.MsgError); } + + } + } + + private void CargaTemas() + { + DdlTema.ClearSelection(); + DdlTema.SelectedValue = null; + DdlTema.Items.Clear(); + + DdlTema.DataSource = get_GlobalDTOIRevision(UsuarioActual.CveEmpresa).FiltraParametros(string.Format("CveUsuario = {0}", UsuarioActual.CveUsuario)); + DdlTema.DataBind(); + DdlTema.Items.Insert(0, new ListItem("Seleccione", "-1")); + + } + + + #endregion + + } \ No newline at end of file diff --git a/OI/TareaDetalle.aspx b/OI/TareaDetalle.aspx index 12319bede..593c67bb4 100644 --- a/OI/TareaDetalle.aspx +++ b/OI/TareaDetalle.aspx @@ -655,6 +655,7 @@ +