Option Explicit On Option Strict On Imports Extensiones Imports System.IO Imports System.Data Imports ZXing Partial Class ProductosyServicios Inherits ClsPaginas #Region " Propiedades " Private ReadOnly Property CvePS As Integer Get Return ViewState("CvePS").ToString.ToEntero End Get End Property Public Property PSAdicionalAnterior As String Get Return ViewState("PSAdicionalAnterior").ToString End Get Set(value As String) ViewState("PSAdicionalAnterior") = value End Set End Property Private Property CveSATPS As Integer Get Return ViewState("CveSATPS").ToString.ToEntero End Get Set(value As Integer) ViewState("CveSATPS") = value End Set End Property Private Property Ret As String Get Return ViewState("Ret").ToString End Get Set(value As String) ViewState("Ret") = value End Set End Property Private Property Borrar As Boolean Get Return CBool(ViewState("Borrar")) End Get Set(value As Boolean) ViewState("Borrar") = value End Set End Property Public Property dtPaqueteDetalles() As DataTable Get Return CType(ViewState("dtPaqueteDetalles"), DataTable) End Get Set(value As DataTable) ViewState("dtPaqueteDetalles") = value End Set End Property Public Property DtEquivalencias() As DataTable Get Return CType(ViewState("DtEquivalencias"), DataTable) End Get Set(value As DataTable) ViewState("DtEquivalencias") = value End Set End Property Public Property dtFamily() As DataTable Get Return CType(ViewState("dtFamily"), DataTable) End Get Set(value As DataTable) ViewState("dtFamily") = value End Set End Property Property CodigoBarrasCargado As String Get If ViewState("CodigoBarrasCargado") Is Nothing Then Return "" Else Return ViewState("CodigoBarrasCargado").ToString End If End Get Set(value As String) ViewState("CodigoBarrasCargado") = value End Set End Property Public Property DtPSAdicionales() As DataTable Get Return CType(ViewState("DtPSAdicionales"), DataTable) End Get Set(value As DataTable) ViewState("DtPSAdicionales") = value End Set End Property Private Property CvePSAdicional As Integer Get Return ViewState("CvePSAdicional").ToString.ToEntero End Get Set(value As Integer) ViewState("CvePSAdicional") = value End Set End Property Public Property DtSeccionAlmacen() As DataTable Get Return CType(ViewState("DtSeccionAlmacen"), DataTable) End Get Set(value As DataTable) ViewState("DtSeccionAlmacen") = value End Set End Property Private Property CveUnidadMedida As Integer Get Return ViewState("CveUnidadMedida").ToString.ToEntero End Get Set(value As Integer) ViewState("CveUnidadMedida") = value End Set End Property #End Region Private ReadOnly Property PermiteClasificacion2 As Boolean Get Return (UsuarioActual.CveEmpresa.Contiene(1, 72, 80)) End Get End Property #Region " PROPIEDADES ECOMMERCE " ''' ''' Si es True existe en Eco_Produtcos ''' ''' Private Property AplicaEcommerce As Boolean Get Return CBool(ViewState("AplicaEcommerce")) End Get Set(value As Boolean) ViewState("AplicaEcommerce") = value End Set End Property #End Region Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not IsPostBack Then InicializaValores() If Request("CvePS") IsNot Nothing AndAlso IsNumeric(Request("CvePS")) AndAlso Request("CvePS").ToEntero > 0 Then ViewState("CvePS") = Request("CvePS") CargarMarcas() CargaDatos() 'Configuración de Modalidad Update BtnGuardar.Text = "Guardar Cambios" CargarAlias() CargaExistencias() Else 'Configuración de Modalidad Insert RegistraScript("$('#C_Tab_TabPaquetes_tab').css('display' , 'none')") ViewState("CvePS") = -1 CargarMarcas() ChkEstado.Enabled = False ChkEstado.Checked = True LblFechaCaptura.Text = Now.ToShortDateString() LblUsuarioCapturo.Text = UsuarioActual.Usuario BtnEliminar.Visible = False If UsuarioActual.Empresa.Funcionalidad(543).ToString = "1" Then Dim ObjSub As New ClsSubProyectos Dim CveSubProyectoMatriz As Integer If ObjSub.GetSubProyectos() Then CveSubProyectoMatriz = ObjSub.DtResultados.FiltroPrimeroValor("CveSubProyecto", $"CveEmpresa = {UsuarioActual.CveEmpresa} AND TipoSucursal = 1").ToEntero End If Dim ObjFolios As New ClsGralFolios() If ObjFolios.GetFolios("PS", UsuarioActual.CveEmpresa) Then Dim DT As DataTable = ObjFolios.DtResultados.FiltraParametros($"CveSubProyecto = {CveSubProyectoMatriz} And Estado = 'Activo'") If DT.Rows.Count > 0 Then TxtCodigo.Text = DT.Rows(0)("FActual").ToString TxtCodigo.Enabled = False Else Alert("No tiene registrados Folios para la sucursal matriz.", TipoMensaje.MsgAdvertencia) End If End If End If End If If Request("Ret") IsNot Nothing AndAlso Request("Ret").ToString <> "" Then Ret = Request("Ret") End If 'CargaFamilia(ViewState("CveSubFamilia").ToString.ToEntero) CargaSucursaless() CargaImpuestosLocales() CargaConceptoRelacionado() If UsuarioActual.TienePermisoProceso(122) Then BtnEliminar.Visible = False BtnGuardar.Visible = False End If If UsuarioActual.Empresa.Funcionalidad(557) = "1" Then DdlIVA.SelectedValueExist("-1") DdlIVA.Attributes.Add("disabled", "disabled") DdlIVA.Enabled = False End If If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then DivPSAdicionalVigencia.Visible = True divCodigo2.Visible = True CargaPSAdicionalesVigencias() End If If CvePS > 0 Then CargaEquivalencias() CargaPSAdicionales() CargaGvBitacora() divBitacora.Visible = True VerificaRequiereSerieLote() End If If UsuarioActual.Empresa.Funcionalidad(524) <> "" Then DivProveedorCompra.Visible = True DivMoneda.Visible = True End If UpDatos.Update() 'DdlClasificacion.AutoPostBack = UsuarioActual.CveEmpresa.Contiene(80, 72) InicializaEcommerce() If UsuarioActual.CveEmpresa.Contiene(141, 152) Then 'DivDatos.Attributes("class") = "col-md-12" DivDdlTipo.Visible = True 'DdlTipoPSDes.Attributes.Add("onChange", "CreaDescripcionPS();") End If If UsuarioActual.CveEmpresa.Contiene(72, 80) And CvePS = -1 Then 'DivDatos.Attributes("class") = "col-md-12" TxtPS.Enabled = False DivDdlTipo.Visible = True DivTxtModelo.Visible = True DivTxtAdicional.Visible = True DdlTipoPSDes.Attributes.Add("onChange", "CreaDescripcionPS();") DdlMarcaPSDes.Attributes.Add("onChange", "CreaDescripcionPS();") TxtModelo.Attributes.Add("onKeyUp ", "CreaDescripcionPS();") TxtAdicional.Attributes.Add("onKeyUp ", "CreaDescripcionPS();") End If If ddlMetodos.SelectedValue.ToEntero = 5 And Not UsuarioActual.TienePermisoProceso(255) Then ddlMetodos.Enabled = False End If Dim posiciontipo As String = If(UsuarioActual.Empresa.Funcionalidad(558).ToString = "1", "$('.DIVCLASIFICACIONCONTABLE').after( $('.DIVTIPO') );", "") LtlScripts.Text = $"" If Not CvePS > 0 Then MuestraPanel(True) End If End Sub #Region " INCIALIZA " Private Sub InicializaValores() ViewState("OrdenO") = "" ViewState("OrdenC") = "" ViewState("DTProductosServiciosCaracteristicas") = Nothing ViewState("DTProductosServiciosCaracteristicasOpciones") = Nothing ViewState("CveSubFamilia") = "-1" Ret = "-1" 'CType(Me.Master, BaseMasterPage).EsPopup = True 'CType(Me.Master, BaseMasterPage).PopupWidth = 700 'RegistraScript("$get('tdContenido').style.height='350px'") CargaClasificaciones() CargaClasificaciones2() CargaClasificacionesDetalles() ClasificacionModal() CargaTipoProductos() CargaUnidadesMedida() CargarMetodosInv() 'CargaPSAdicional(DdlPSAdicional) 'Nuevo R: 26/09/2017 CargaProveedores() CargarCompuestos() CargaPS() 'ChangeDdl() CargaDdlSATPS() CargaDdlFraccionArancelaria() CveSATPS = -1 CargaCombosSeccionAlmacen() CreaDtSeccionAlmacen() If UsuarioActual.Empresa.UsaContabilidad Then CargaCuentasContables() If Not (Request("CvePS") IsNot Nothing AndAlso IsNumeric(Request("CvePS")) AndAlso Request("CvePS").ToEntero > 0) Then DivUsoClasificacion.Visible = True End If 'CargaTipoServicio() 'DivTipoServicio.Visible = False TxtDescripcion.Text = UCase(TxtDescripcion.Text) Dim objAcum As New ClsAcumuladores If objAcum.TamañoGet(-1, UsuarioActual.CveEmpresa) Then DdlTamanio.DataSource = objAcum.DtResultados Else DdlTamanio.DataSource = Nothing End If objAcum.Dispose() DdlTamanio.DataBind() If UsuarioActual.Empresa.Funcionalidad(558) = "1" Then DivLlantas.Visible = True DivPSAdicionales.Visible = True CargaPanelLlantas() End If CvePSAdicional = -1 End Sub 'Private Sub CargaPSAdicional(Objeto As ADServerControl.Dropdownlost) ' Objeto.setEsWebService(UsuarioActual.Empresa.Funcionalidad(141).ToString = "1") ' If Not UsuarioActual.Empresa.Funcionalidad(141).ToString = "1" Then ' Objeto.ddl.Items.Clear() ' Objeto.ddl.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion:=-1, Estatus:=1, AplicaParaVenta:=1) ' Objeto.ddl.DataBind() ' Objeto.ddl.Items.Insert(0, New ListItem("Seleccione", "-1")) ' Else ' Objeto.ddlWS.Attributes.Add("data-Estatus", "1") ' Objeto.SelectedValue = "-1" ' Objeto.SelectedText = "Seleccione" ' End If 'End Sub Private Sub CargaPanelLlantas() Dim ObjGral As New ClsGenerales() If ObjGral.GetModelos(UsuarioActual.CveEmpresa) Then DdlModelo.DataSource = ObjGral.DtResultados.Copy() End If If ObjGral.GetMedidas(UsuarioActual.CveEmpresa) Then DdlMedida.DataSource = ObjGral.DtResultados.Copy() End If If ObjGral.GetRimTamanios(UsuarioActual.CveEmpresa) Then DdlRin.DataSource = ObjGral.DtResultados.Copy() End If ObjGral.Dispose() DdlModelo.DataBind() DdlMedida.DataBind() DdlRin.DataBind() End Sub Private Sub MuestraPanel(Optional AfterPageLoad As Boolean = False) If AfterPageLoad Then RegistraScript("window.onload = function MuestraPanel() { document.getElementById(""C_BtnMostrarPanel"").click(); }") End If End Sub Protected Sub BtnTipoCla_Click(sender As Object, e As EventArgs) PresionarBotonPanel("C_BtnCerrarPanel") DivUsoClasificacion.Visible = False DdlUsoClasificacion.SelectedValueExist(RblTipoClasificación.SelectedValue) CargaClasificaciones() UpDatos.Update() End Sub Private Sub PresionarBotonPanel(Boton As String) Dim Script As String = $"document.getElementById(""{Boton}"").click();" Dim Pag As System.Web.UI.Page = CType(System.Web.HttpContext.Current.Handler, System.Web.UI.Page) ScriptManager.RegisterStartupScript(Pag, Pag.GetType(), Boton, Script, True) Pag = Nothing End Sub #End Region #Region "S U C U R S A L E S" Private Sub CargaSucursaless() 'Dim dtSuc As DataTable = GlobalDTSucursales().FiltraParametros("CveEmpresa = " + UsuarioActual.CveEmpresa.ToString) 'dtSuc.AcceptChanges() 'dtSuc.Columns.Add("Importe") 'dtSuc.Columns.Add("Activo") 'For Each row As DataRow In dtSuc.Rows ' row("Activo") = False 'Next 'dtSuc.AcceptChanges() 'If Not ViewState("CvePS") Is Nothing Then ' Dim ObjPS As New ClsProductosServicios ' If ObjPS.GetPSSucursales(CvePS) Then ' Dim dtSucP As DataTable = ObjPS.DtResultados ' For Each Row As DataRow In dtSucP.Rows ' Dim rowsToUpdate = dtSuc.AsEnumerable().Where(Function(r) r.Field(Of Integer)("CveSucursal") = Row("CveSucursal").ToString.ToEntero AndAlso r!CveSucursal.ToString.ToEntero > 0) ' For Each roww As DataRow In rowsToUpdate ' roww.SetField("Importe", Row("Importe")) ' roww.SetField("Activo", True) ' Next ' 'For Each drtt As DataRow In TmpDT.Select(String.Format("PS='{0}' AND CvePS=0", Row("PS"))) ' ' drtt("CvePS") = tCve ' 'Next ' dtSuc.AcceptChanges() ' Next ' End If ' ObjPS.Dispose() 'End If 'gvSucursal.DataSource = dtSuc 'gvSucursal.DataBind() Dim ObjPS As New ClsProductosServicios If ObjPS.GetPSSucursales(CvePS, UsuarioActual.CveEmpresa) Then gvSucursal.DataSource = ObjPS.DtResultados End If ObjPS.Dispose() gvSucursal.DataBind() End Sub Protected Sub gvSucursal_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles gvSucursal.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.RowIndex = 0 Then e.Row.Cells(0).Width = Unit.Pixel(50) e.Row.Cells(1).Width = Unit.Pixel(100) e.Row.Cells(2).Width = Unit.Pixel(100) End If ' If e.Row.FCCheckBox("chkSucursal").Checked = True Then e.Row.Cells(0).BackColor = Drawing.Color.Yellow End If End Sub #End Region #Region "C A R A C T E R I S T I C A S" Private Sub CargaCaracteristicas() ' CargaDatosC() CargaProductosServiciosCaracteristicas() CambioProductosServiciosCaracteristicas(DdlCaracteristica.SelectedValue.ToEntero) CargaDatosO() UpDatos.Update() UpDatosO.Update() UpTitulosO.Update() End Sub Public Sub CargaDatosO() Dim Objeto As New ClsGenerales If Objeto.GetCaracteristicasValores(-1, -1, CvePS, -1, -1, -1, 5, UsuarioActual.CveEmpresa, OpcionListado:=1) Then GvDatosOpciones.DataSource = Objeto.DtResultados End If Objeto.Dispose() UpDatosO.Update() GvDatosOpciones.DataBind() End Sub Private Sub LbAgregarO_Click(sender As Object, e As EventArgs) Handles LbAgregarO.Click Dim Objeto As New ClsGenerales Dim Opcion As String = If(TDTxtOpcion.Visible = True, TxtOpcion.Text, DdlOpcion.SelectedItem.Text) Dim Opcion2 As Integer = If(TDDdlOpcion.Visible = True, DdlOpcion.SelectedValue.ToEntero, -1) If Objeto.AddUpdateCaracteristicasValores(DdlCaracteristica.SelectedValue.ToEntero, Opcion2, Opcion, UsuarioActual.CveUsuario, CvePs:=CvePS) Then End If Objeto.Dispose() TxtOpcion.Text = "" CargaDatosO() UpDatosO.Update() UpTitulosO.Update() Alert("El valor de la caracteristica se agregó correctamente.", TipoMensaje.MsgInformacion) End Sub Private Sub CargaProductosServiciosCaracteristicas() Dim Objeto As New ClsGenerales DdlCaracteristica.Items.Clear() If Objeto.GetCaracteristicas(-1, 5, UsuarioActual.CveEmpresa) Then DdlCaracteristica.DataSource = Objeto.DtResultados End If Objeto.Dispose() DdlCaracteristica.DataBind() End Sub Protected Sub DdlCaracteristica_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlCaracteristica.SelectedIndexChanged CambioProductosServiciosCaracteristicas(DdlCaracteristica.SelectedValue.ToEntero) End Sub Protected Sub CambioProductosServiciosCaracteristicas(CveCaracteristica As Integer) Dim Objeto As New ClsGenerales If Objeto.GetCaracteriscasOpciones(CveCaracteristica, UsuarioActual.CveEmpresa) Then Dim dr As DataRow = Objeto.DtResultados.FiltroPrimero(String.Format(("CveCaracteristica={0}"), CveCaracteristica)) If dr IsNot Nothing Then If dr("CveCaracteristicaTipo").ToString = "1" Then DdlOpcion.Items.Clear() DdlOpcion.DataSource = Objeto.DtResultados.FiltraParametros(String.Format(("CveCaracteristica={0}"), CveCaracteristica)) TDDdlOpcion.Visible = True TDTxtOpcion.Visible = False Else TDTxtOpcion.Visible = True TDDdlOpcion.Visible = False End If End If End If Objeto.Dispose() DdlOpcion.DataBind() End Sub Protected Sub CambioProductosServiciosCaracteristicasOpciones() UpTitulosO.Update() End Sub #End Region #Region "G V O P C I O N E S" Protected Sub GvDatosOpciones_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvDatosOpciones.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.RowIndex = 0 Then e.Row.Cells(0).Width = Unit.Pixel(150) e.Row.Cells(1).Width = Unit.Pixel(150) e.Row.Cells(2).Width = Unit.Pixel(100) e.Row.Cells(3).Width = Unit.Pixel(100) e.Row.Cells(4).Width = Unit.Pixel(50) End If e.Row.Cells(0).HorizontalAlign = HorizontalAlign.Left If e.Row.RowState = DataControlRowState.Edit OrElse e.Row.RowState = 5 Then e.Row.FCDropDownList("DdlCaracteristicaEdit").DataSource = GlobalDTProductosServiciosCaracteristicas(UsuarioActual.CveEmpresa).FiltraParametros("CvePS = " + CvePS.ToString) e.Row.FCDropDownList("DdlCaracteristicaEdit").DataBind() e.Row.FCDropDownList("DdlCaracteristicaEdit").SelectedValue = e.Row.DBCampo("CvePS") End If End If End Sub Protected Sub GvDatosOpciones_RowDeleting(sender As Object, e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvDatosOpciones.RowDeleting Dim ObjOpciones As New ClsGenerales Dim CveCaracteristicaValor As Integer = GvDatosOpciones.Rows(e.RowIndex).DataKey("CveCaracteristicaValor").ToEntero If ObjOpciones.RemoveCaracteristicasValores(CveCaracteristicaValor, CvePS:=CvePS) Then GvDatosOpciones.EditIndex = -1 CambioProductosServiciosCaracteristicasOpciones() CargaDatosO() UpDatosO.Update() Alert("La Opción para Caracteristica del Producto o Servicio se eliminó correctamente.", TipoMensaje.MsgInformacion) End If ObjOpciones.Dispose() End Sub Protected Sub GvDatosOpciones_RowCancelingEdit(sender As Object, e As System.Web.UI.WebControls.GridViewCancelEditEventArgs) Handles GvDatosOpciones.RowCancelingEdit GvDatosOpciones.EditIndex = -1 End Sub Protected Sub GvDatosOpciones_RowUpdating(sender As Object, e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles GvDatosOpciones.RowUpdating Dim ObjOpciones As New ClsGralProductosServiciosCaracteristicas Dim CveCaracteristica As Integer = DirectCast(GvDatosOpciones.Rows(e.RowIndex).FindControl("DdlCaracteristicaEdit"), DropDownList).SelectedValue.ToEntero Dim CveOpcion As Integer = GvDatosOpciones.DataKeys(e.RowIndex).Value.ToString.ToEntero Dim Opcion As String = DirectCast(GvDatosOpciones.Rows(e.RowIndex).FindControl("TxtOpcion"), TextBox).Text.Trim If ObjOpciones.UpdateProductosServiciosCaracteristicasOpciones(Opcion, CveCaracteristica, CveOpcion) Then GvDatosOpciones.EditIndex = -1 ViewState("DTProductosServiciosCaracteristicasOpciones") = ObjOpciones.DtResultados.FiltraParametros("CveEmpresa = " & UsuarioActual.CveEmpresa) GlobalDTProductosServiciosCaracteristicasOpciones(UsuarioActual.CveEmpresa) = ObjOpciones.DtResultados Alert("Los cambios se guardaron correctamente.", TipoMensaje.MsgInformacion) CambioProductosServiciosCaracteristicasOpciones() End If ObjOpciones.Dispose() End Sub 'Protected Sub GvDatosOpciones_RowEditing(sender As Object, e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles GvDatosOpciones.RowEditing ' GvDatosOpciones.EditIndex = e.NewEditIndex ' CargaGrid() 'End Sub #End Region #Region "O R D E N A M I E N T O" Protected Sub LbOrden_Click(ByVal sender As Object, ByVal e As EventArgs) Dim Orden As String = "" Dim Campo As String = "" Dim gvi As Integer = 0 Dim Literal As Literal = Nothing Const OrdenInicial As String = "" Dim Arg(2) As String Arg = CType(sender, LinkButton).CommandArgument().ToString.Split(";"c) Campo = Arg(0) gvi = Arg(1).ToEntero Literal = CType(CType(sender, LinkButton).NamingContainer.FindControl("Img" & Campo.Replace(", ", "_")), Literal) Campo = Campo.Substring(0, Campo.Length - 1) If ViewState(String.Format("O{0}", Campo, gvi)) IsNot Nothing AndAlso ViewState(String.Format("O{0}", Campo, gvi)).ToString = String.Format("{0} DESC", Campo) Then ViewState(String.Format("O{0}", Campo)) = String.Format("{0} ASC", Campo) Literal.Text = String.Format("") Else ViewState(String.Format("O{0}", Campo, gvi)) = String.Format("{0} DESC", Campo) Literal.Text = String.Format("") End If Orden = OrdenInicial & ViewState(String.Format("O{0}", Campo, gvi)).ToString ViewState("Orden") = Orden End Sub 'Private Sub CargaGrid() ' Dim Objeto As New ClsGralProductosServiciosCaracteristicas ' If Objeto.GetPSCaracteristicas(UsuarioActual.CveEmpresa) Then ' GvDatosCaracteristicas.DataSource = Objeto.DtResultados ' End If ' GvDatosCaracteristicas.DataBind() ' Objeto.Dispose() 'End Sub #End Region #Region "C A R G A S" Private Sub ClasificacionModal() DdlClasificacionModal.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltraParametros("", Orderby:="Clasificacion") DdlClasificacionModal.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlClasificacionModal.DataBind() UpModal.Update() End Sub Private Sub CargaClasificacionesDetalles() DdlTipoPSDes.Items.Clear() DdlTipoPSDes.DataSource = GlobalDTClasificacionesDetalle(UsuarioActual.CveEmpresa) 'If DdlClasificacion.SelectedValue.ToEntero > 0 Then 'Dim ObjVenta As New ClsVentas ' If ObjVenta.GetClasificacionDetalle(UsuarioActual.CveEmpresa, CveClasificacion:=-1) Then ' DdlTipoPSDes.DataSource = ObjVenta.DtResultados ' End If ' ObjVenta.Dispose() 'End If DdlTipoPSDes.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlTipoPSDes.DataBind() End Sub Private Sub CargaClasificaciones() DdlClasificacion.Items.Clear() If UsuarioActual.Empresa.UsaAC Then DdlClasificacion.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa, UsoClasificacion:=If(UsuarioActual.Empresa.UsaContabilidad, DdlUsoClasificacion.SelectedValue.ToEntero, -1)).FiltraParametros(" Codigo = '' OR Codigo IS NULL ", Orderby:="Clasificacion") Else DdlClasificacion.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa, UsoClasificacion:=If(UsuarioActual.Empresa.UsaContabilidad, DdlUsoClasificacion.SelectedValue.ToEntero, -1)).FiltraParametros("", Orderby:="Clasificacion") End If DdlClasificacion.Items.Insert(0, New ListItem("Seleccione", "-1")) 'BLOQUEA DDL CLASIFICACION If UsuarioActual.Empresa.Funcionalidad(121) = "1" Then If Not UsuarioActual.TienePermisoProceso(147) Then DdlClasificacion.Enabled = False End If End If DdlClasificacion.DataBind() End Sub Private Sub CargaClasificaciones2() DdlClasificacion2.DataSource = GlobalDTClasificaciones2(UsuarioActual.CveEmpresa) DdlClasificacion2.DataBind() DdlClasificacion2.Items.Insert(0, New ListItem("Sin Clasificacion", "-1")) DdlClasificacion2.SelectedValueExist("-1") 'BLOQUEA DDL CLASIFICACION If PermiteClasificacion2 Then DivClasificacion2.Visible = True End If End Sub Private Sub CargaTipoProductos() 'BLOQUEA DDL TIPO PRODUCTO If UsuarioActual.Empresa.Funcionalidad(122) = "1" Then If Not UsuarioActual.TienePermisoProceso(149) Then DdlTipoPS.Enabled = False DdlTipoPS.SelectedValueExist("2") End If End If End Sub Private Sub CargaConceptoRelacionado() DdlConceptoRelacionado.DataSource = GlobalDTContaConceptosContables(-1) DdlConceptoRelacionado.DataBind() End Sub Private Sub CargarMetodosInv() ddlMetodos.DataSource = If(UsuarioActual.CveEmpresa.Contiene(72, 80), GlobalDTInvMetodosInventario.FiltraParametros("CveMetodoInventario IN (1,5)"), GlobalDTInvMetodosInventario) ddlMetodos.DataBind() ddlMetodos.Items.Insert(0, New ListItem("Seleccione", "-1")) End Sub 'Nuevo R: 26/09/207' Private Sub CargaProveedores() DdlProveedor.setEsWebService(True) 'DdlProveedor.DataSource = GlobalDTCompProveedores(UsuarioActual.CveEmpresa) 'DdlProveedor.DataBind() 'DdlProveedor.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlMoneda.DataSource = GlobalDTMonedas() DdlMoneda.DataBind() DdlMoneda.Items.Insert(0, New ListItem("Seleccione", "-1")) End Sub Private Sub CargaUnidadesMedida() DdlUnidadMedida.DataSource = GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa) DdlUnidadMedida.DataBind() End Sub Private Sub CargaCuentasContables() 'Dim ObjContabilidad As New ClsContPAQi(UsuarioActual.Empresa.ServerContPAQi, UsuarioActual.Empresa.BDContPAQi, UsuarioActual.Empresa.UsrContPAQi, UsuarioActual.Empresa.PwdContPAQi) 'If ObjContabilidad.GetCuentas(-1, "-1", -1) Then ' DdlCtaContableVentas.DataSource = ObjContabilidad.DtResultados ' DdlCtaContableCompras.DataSource = ObjContabilidad.DtResultados ' DdlCtaContableInventarios.DataSource = ObjContabilidad.DtResultados 'Else ' DdlCtaContableVentas.DataSource = Nothing ' DdlCtaContableCompras.DataSource = Nothing ' DdlCtaContableInventarios.DataSource = Nothing 'End If 'DdlCtaContableVentas.DataBind() 'DdlCtaContableCompras.DataBind() 'DdlCtaContableInventarios.DataBind() 'ObjContabilidad.Dispose() End Sub Private Sub CargaDatos() Dim ObjProductosServicios As New ClsProductosServicios() If ObjProductosServicios.GetPS(CvePS, -1, UsuarioActual.CveEmpresa) Then If ObjProductosServicios.DtResultados.Rows.Count > 0 Then 'SI NO TIENE VALOR Y NO TIENE EL PROCESO MUESTRA SIN CLASIFICACION If ObjProductosServicios.CveClasificacion.ToString.Equals("-1") And Not UsuarioActual.TienePermisoProceso(147) And UsuarioActual.Empresa.Funcionalidad(121) = "1" Then DdlClasificacion.SelectedValueExist("0") Else DdlClasificacion.SelectedValueExist(ObjProductosServicios.CveClasificacion.ToString) End If CargaClasificacionesDetalles() DdlClasificacion2.SelectedValueExist(ObjProductosServicios.DtResultados.Rows(0)("CveClasificacion2").ToString) DdlCompuesto.SelectedValueExist(ObjProductosServicios.DtResultados.Rows(0)("CveCompuesto").ToString) 'SI ES NUEVO TIPO = PRODUCTO Y SI NO TIENE PROCESO NO PUEDO EDITAR If ObjProductosServicios.CveTipoPS.ToString.Equals("-1") And Not UsuarioActual.TienePermisoProceso(149) And UsuarioActual.Empresa.Funcionalidad(122) = "1" Then DdlTipoPS.SelectedValueExist("2") Else DdlTipoPS.SelectedValueExist(ObjProductosServicios.CveTipoPS.ToString) End If 'If ObjProductosServicios.CveTipoPS = 1 Then ' DivTipoServicio.Visible = True ' DdlTipoServicio.SelectedValueExist(ObjProductosServicios.Estado2.ToString) ' If Not DdlTipoServicio.SelectedValue.ToEntero > 0 Then ' DdlTipoServicio.Items.Insert(1, New ListItem(If(ObjProductosServicios.Estado2 = 1, "General", "Maquinaria"), ObjProductosServicios.Estado2.ToString)) ' DdlTipoServicio.SelectedValueExist(ObjProductosServicios.Estado2.ToString) ' End If 'End If If ObjProductosServicios.CveSATPS.ToString <> Nothing Then DdlSATPS.SelectedValue = ObjProductosServicios.CveSATPS.ToString DdlSATPS.SelectedText = $"{ObjProductosServicios.SATClavePS} - {ObjProductosServicios.SATDescripcion}" CveSATPS = ObjProductosServicios.CveSATPS End If If ObjProductosServicios.DtResultados.Rows(0)("CvePSAdicionalVigencia").ToString.ToEntero() > 0 Then DdlPSAdicionalVigencia.SelectedValue = ObjProductosServicios.DtResultados.Rows(0)("CvePSAdicionalVigencia").ToString DdlPSAdicionalVigencia.SelectedText = ObjProductosServicios.DtResultados.Rows(0)("CodigoPSVigencia").ToString End If If ObjProductosServicios.CveFraccionArancelaria.ToString <> Nothing Then DdlFraccionArancelaria.SelectedValue = ObjProductosServicios.CveFraccionArancelaria.ToString DdlFraccionArancelaria.SelectedText = ObjProductosServicios.ClaveSATFraccionArancelariaDescripcion End If If ObjProductosServicios.ClaveSATUnidadAduanaDescripcion.ToString <> Nothing Then LblUnidadAduana.Text = ObjProductosServicios.ClaveSATUnidadAduanaDescripcion.ToString End If DdlTipoPSDes.SelectedValueExist(ObjProductosServicios.CveClasificacionDetalle.ToString) DdlUnidadMedida.SelectedValue = ObjProductosServicios.CveUnidadMedida.ToString CveUnidadMedida = ObjProductosServicios.CveUnidadMedida.ToString.ToEntero DdlMarca.SelectedValue = ObjProductosServicios.CveMarca.ToString DdlMarcaPSDes.SelectedValue = ObjProductosServicios.CveMarca.ToString TxtCodigo.Text = ObjProductosServicios.Codigo TxtCodigo2.Text = ObjProductosServicios.Codigo2 TxtCodigoBarras.Text = ObjProductosServicios.CodigoBarras CodigoBarrasCargado = ObjProductosServicios.CodigoBarras TxtPS.Text = ObjProductosServicios.PS TxtPrecio.Text = ObjProductosServicios.Precio.ToString("F4") 'no usa N4, porque pone comma TxtPrecioMinimo.Text = ObjProductosServicios.PrecioMinimo.ToString("F4") DdlTipoFactor.SelectedValueExist(ObjProductosServicios.DtResultados.Rows(0)("CveTipoFactor").ToString) If ObjProductosServicios.DtResultados.Rows(0)("CveTipoFactor").ToString.Contiene("1", "2") Then LIva.Visible = True DdlIVA.Visible = True DdlIVA.Width = New Unit("163px") Else DdlIVA.Visible = False DdlIVA.Visible = False End If DdlIVA.SelectedValueExist(ObjProductosServicios.IVA.ToString) LblCostoPromedio.Text = ObjProductosServicios.DtResultados.Rows(0)("CostoPromedio").ToString.FormatoNumero LblUltimoCosto.Text = ObjProductosServicios.DtResultados.Rows(0)("UltimoCosto").ToString.FormatoNumero LblFechaUltimaCompra.Text = ObjProductosServicios.DtResultados.Rows(0)("FechaUltimaCompra").ToString HplKardex.NavigateUrl = $"/Inventarios/Kardex.aspx?CvePS={CvePS}" TxtRetIVA.Text = (ObjProductosServicios.RetIVA * 100).ToString ChkEstado.Checked = ObjProductosServicios.Estado LblFechaCaptura.Text = ObjProductosServicios.Fecha.ToShortDateString LblUsuarioCapturo.Text = ObjProductosServicios.Usuario If ObjProductosServicios.CveUsuarioModifico > 0 Then LblFechaModificacion.Text = ObjProductosServicios.FechaUltimaModificacion.ToString LblUsuarioModifico.Text = ObjProductosServicios.UsuarioModifico End If 'ChkAplicaParaConcepto.Checked = ObjProductosServicios.AplicaParaConcepto ChkAplicaParaVenta.Checked = ObjProductosServicios.AplicaParaVenta lbTitulo.Text = $"{lbTitulo.Text}{ObjProductosServicios.PS}" LtProductoUnificar.Text = ObjProductosServicios.PS ddlMetodos.SelectedValue = ObjProductosServicios.CveMetodoInventario.ToString DdlConceptoRelacionado.SelectedValueExist(ObjProductosServicios.CveConceptoContable.ToString) DdlProveedor.SelectedValue = ObjProductosServicios.CveProveedorCompra.ToString DdlProveedor.SelectedText = ObjProductosServicios.ProveedorCompra DdlProveedor.txtText.Value = ObjProductosServicios.ProveedorCompra DdlProveedor.txtValue.Value = ObjProductosServicios.CveProveedorCompra.ToString ChkInventariable.Checked = ObjProductosServicios.Inventariable TxtVentaMinima.Text = ObjProductosServicios.VentaMinima.ToString DdlMoneda.SelectedValueExist(ObjProductosServicios.CveMoneda) TxtRetISR.Text = (ObjProductosServicios.RetISR * 100).ToString DdlModelo.SelectedValueExist(ObjProductosServicios.DtResultados.Rows(0)("CveModelo").ToString) DdlMedida.SelectedValueExist(ObjProductosServicios.DtResultados.Rows(0)("CveMedida").ToString) DdlRin.SelectedValueExist(ObjProductosServicios.DtResultados.Rows(0)("CveRinTamaño").ToString) 'If ObjProductosServicios.CvePSAdicional > 0 Then ' DdlPSAdicional.SelectedValue = ObjProductosServicios.CvePSAdicional.ToString ' DdlPSAdicional.SelectedText = ObjProductosServicios.PSCodigoAdicional 'Else ' DdlPSAdicional.SelectedValue = "-1" ' DdlPSAdicional.SelectedText = "Seleccione" 'End If Try DdlClasificacion_SelectedIndexChanged(DdlClasificacion, Nothing) DdlTamanio.SelectedValueExist(ObjProductosServicios.DtResultados.Rows(0)("CveTamaño").ToString) If DdlTamanio.SelectedValue.ToEntero() > 0 Then Dim Dr = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveClasificacion={0}", DdlClasificacion.SelectedValue.ToEntero()))(0) Dim DebeTenerTamanio As Boolean = Boolean.Parse(Dr("EsAcumulador").ToString) 'SI ES MOTOBATERIA If DdlClasificacion.SelectedValue = "20517" Then DebeTenerTamanio = True End If 'VALIDA QUE EL PRODUCTO, NO ES ACUMULADOR QUE NO TENGA TAMAÑO If Not DebeTenerTamanio AndAlso DdlTamanio.SelectedValue.ToEntero() > 0 Then Alert($"Un producto/servicio con la clasificación '{Dr("Clasificacion")}' no debe tener especificado un tamaño.", TipoMensaje.MsgAdvertencia) RfvDdlTamanio.Visible = False CERfvDdlTamanio.Enabled = False End If 'VALIDA QUE EL PRODUCTO, SI ES ACUMULADOR QUE TENGA TAMAÑO If DebeTenerTamanio AndAlso DdlTamanio.SelectedValue.ToEntero() <= 0 Then Alert($"Un producto/servicio con la clasificación '{Dr("Clasificacion")}' debe tener especificado un tamaño.", TipoMensaje.MsgAdvertencia) End If DvTamanio.Visible = True End If Catch ex As Exception End Try ChkAplicaIeps.Checked = ObjProductosServicios.AplicaIEPS If ObjProductosServicios.AplicaIEPS = True Then DdlIEPSPorcentaje.Enabled = True DdlIEPSPorcentaje.SelectedValue = ObjProductosServicios.IEPSPorcentaje.ToString("N2") ChkIepsIVA.Enabled = True ChkIepsIVA.Checked = ObjProductosServicios.IEPSGrabaIVA End If DdlImpTipoProducto.SelectedValueExist(ObjProductosServicios.ClaveImpuestoTipoProducto) CargaClaveGenerica(DdlImpTipoProducto.SelectedValue) DdlImpEmpaque.SelectedValueExist(ObjProductosServicios.ClaveImpuestoEmpaque) DdlImpUM.SelectedValueExist(ObjProductosServicios.ClaveImpuestoUnidadMedida) DdlCategoriaToxicidad.SelectedValueExist(ObjProductosServicios.ClaveCategoriaToxicidad) 'If ObjProductosServicios.CveMetodoInventario = 0 Then ddlMetodos.SelectedValue = UsuarioActual.Empresa.CveMetodoInventario.ToString ViewState("CveSubFamilia") = ObjProductosServicios.DtResultados.Rows(0)("CveSubFamilia") ChkSerie.Checked = ObjProductosServicios.AplicaSerie ChkLote.Checked = ObjProductosServicios.AplicaLote ChkCaducidad.Checked = ObjProductosServicios.AplicaCaducidad ChkSeccion.Checked = ObjProductosServicios.AplicaSeccion If ObjProductosServicios.DtResultados.Rows(0)("TiempoCaducidad") IsNot Nothing Then TxtTiempoCaducidad.Text = ObjProductosServicios.DtResultados.Rows(0)("TiempoCaducidad").ToString() DivTiempoCaducidad.Visible = ChkCaducidad.Checked End If If ObjProductosServicios.AplicaSeccion Then CargaGvSeccionAlmacen() DivSeccionAlmacen.Visible = True End If CargaCaracteristicas() LnkUnificar.Visible = True ChkEsOutSourcing.Checked = ObjProductosServicios.EsOutSourcing ChkPrecioLibre.Checked = ObjProductosServicios.PrecioLibre Else Alert("El Producto o Servicio Solicitado no existe, por favor revise su búsqueda.", TipoMensaje.MsgAdvertencia) RegistraScript("$('#C_Tab_TabPaquetes_tab').css('display' , 'none')") BtnGuardar.Enabled = False End If End If If ObjProductosServicios.GetPaqueteDetalle(CvePS, UsuarioActual.CveEmpresa) Then gvPaqueteDetalle.DataSource = ObjProductosServicios.DtResultados dtPaqueteDetalles = ObjProductosServicios.DtResultados End If ObjProductosServicios.Dispose() gvPaqueteDetalle.DataBind() End Sub Protected Sub CargarAlias() Dim ObjAlias As New ClsProductosServicios ObjAlias.GetPSAlias(CvePS, UsuarioActual.CveEmpresa) GVAlias.DataSource = ObjAlias.DtResultados ObjAlias.Dispose() GVAlias.DataBind() End Sub Public Sub CargaDdlSATPS() DdlSATPS.setEsWebService(True) DdlSATPS.ddlWS.Attributes.Add("data-metodo", "getpssat") End Sub Public Sub CargaPSAdicionalesVigencias() DdlPSAdicionalVigencia.setEsWebService(True) DdlPSAdicionalVigencia.Attributes.Add("data-cvesubproyecto", "-1") DdlPSAdicionalVigencia.ddlWS.Attributes.Add("data-cveclasificacion", "-1") DdlPSAdicionalVigencia.ddlWS.Attributes.Add("data-pagina", "ventas/ventas") DdlPSAdicionalVigencia.ddlWS.Attributes.Add("data-Estatus", "1") End Sub Public Sub CargaDdlFraccionArancelaria() DdlFraccionArancelaria.setEsWebService(True) DdlFraccionArancelaria.Attributes.Add("data-metodo", "getfraccionarancelaria") End Sub Private Sub VerificaRequiereSerieLote() If UsuarioActual.CveEmpresa.Contiene(80, 72) And DdlClasificacion.SelectedIndex > 0 Then Dim RequireSerieLote As Integer = (GlobalDTClasificaciones(UsuarioActual.CveEmpresa, -1).FiltraParametros("CveClasificacion=" & DdlClasificacion.SelectedValue.ToString))(0)("RequiereSerieLote").ToString.ToEntero If RequireSerieLote = 1 Then RfvddlMetodos.Enabled = True Else RfvddlMetodos.Enabled = False End If Else RfvddlMetodos.Enabled = False End If UpMetodos.Update() End Sub #End Region '#Region "Familias" ' Protected Sub DdlFamilia_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles DdlFamilia.SelectedIndexChanged ' CargaDdlSubFamilia() ' DdlSubFamilia.SelectedValue = "-1" ' End Sub ' Public Sub CargaFamilia(Optional CveSubFamilia As Integer = 0) ' dtFamily = GlobalDTSubFamilias(UsuarioActual.CveEmpresa) ' CargaDdlFamilia() ' If dtFamily.FiltraParametros(String.Format("CveClasificacion={0}", CveSubFamilia)).Rows.Count > 0 Then ' DdlFamilia.SelectedValue = dtFamily.FiltraParametros(String.Format("CveClasificacion={0}", CveSubFamilia)).Rows(0)("CveCategoria").ToString ' End If ' CargaDdlSubFamilia() ' If CveSubFamilia > 0 Then ' DdlSubFamilia.SelectedValue = CveSubFamilia.ToString ' End If ' End Sub ' Public Sub CargaDdlFamilia() ' ' Alert( GlobalDTFamilias(UsuarioActual.CveEmpresa).Rows.Count.ToString()) ' DdlFamilia.DataSource = GlobalDTFamilias(UsuarioActual.CveEmpresa).FiltraParametros("Estatus = 'Activo'") ' DdlFamilia.DataBind() ' End Sub ' Public Sub CargaDdlSubFamilia() ' DdlSubFamilia.DataSource = dtFamily.FiltraParametros(String.Format("CveCategoria={0}", DdlFamilia.SelectedValue), "Clasificacion") ' DdlSubFamilia.DataBind() ' DdlSubFamilia.Items.Insert(0, New ListItem("----", "-1")) ' End Sub ' Private Function isWhitFamily() As Boolean ' Return (UsuarioActual.CveEmpresa = 66) ' End Function '#End Region #Region " TIPO SERVICIO " 'Public Sub CargaTipoServicio() ' 'GENERAL ' If UsuarioActual.TienePermisoProceso(150) Then ' DdlTipoServicio.Items.Insert(1, New ListItem("General", "1")) ' DdlTipoServicio.SelectedValueExist(1) ' End If ' 'MAQUINARIA ' If UsuarioActual.TienePermisoProceso(151) Then ' DdlTipoServicio.Items.Insert(1, New ListItem("Maquinaria", "2")) ' DdlTipoServicio.SelectedValueExist(2) ' End If ' If UsuarioActual.TienePermisoProceso(150) And UsuarioActual.TienePermisoProceso(151) Then ' DdlTipoServicio.SelectedValueExist(-1) ' End If 'End Sub 'Private Sub DdlTipoPS_SelectedIndexChanged(sender As Object, e As EventArgs) ' Handles DdlTipoPS.SelectedIndexChanged ' If UsuarioActual.TienePermisoProceso(150) And UsuarioActual.TienePermisoProceso(151) Then ' If DdlTipoPS.SelectedValue.ToEntero = 1 Then ' DivTipoServicio.Visible = True ' End If ' If DdlTipoPS.SelectedValue.ToEntero = 2 Then ' DivTipoServicio.Visible = False ' End If ' End If ' UPPCostos.Update() ' UpDatos.Update() 'End Sub #End Region #Region " PAQUETES " Protected Sub BtnCargaPSPaquetes_Click(sender As Object, e As EventArgs) If BtnCargaPSPaquetes.CommandArgument.ToEntero > 0 Then CargaPS() BtnCargaPSPaquetes.CommandArgument = "1" End If End Sub Private Sub CargaPS() 'RMF 2017.09.13, ajuste asume siempre que use el webservice 'DdlProductows.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1") DdlProductows.setEsWebService(True) If Not DdlProductows.UsaWebService AndAlso CType(DdlProductows.DataSource, DataTable) Is Nothing AndAlso GlobalDTPSSimplificado(UsuarioActual.CveEmpresa) IsNot Nothing Then DdlProductows.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa) DdlProductows.DataBind() End If ElProductoChange() End Sub Protected Sub DdlProducto_ValueChanged(sender As Object, e As EventArgs) Handles DdlProductows.selectedindexchange ElProductoChange() End Sub Private Sub ElProductoChange() ddlUnidad.Items.Clear() ddlUnidad.DataSource = GlobalDTProductosServiciosEquivalencias(DdlProductows.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa) ddlUnidad.DataBind() UpDatos.Update() End Sub #Region "GV PAQUETE DETALLE" Protected Sub gvPaqueteDetalle_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles gvPaqueteDetalle.RowDataBound If e.Row.RowState = DataControlRowState.Edit OrElse e.Row.RowState = 5 Then e.Row.FCDropDownList("ddlEUnidad").DataSource = GlobalDTUnidadesMedida() e.Row.FCDropDownList("ddlEUnidad").SelectedValue = e.Row.DBCampo("CveUnidadMedida") e.Row.FCDropDownList("ddlEUnidad").DataBind() End If End Sub Protected Sub gvPaqueteDetalle_RowDeleting(sender As Object, e As GridViewDeleteEventArgs) Handles gvPaqueteDetalle.RowDeleting Dim ObjProductosServicios As New ClsProductosServicios Dim tipo As Integer = 0 If dtPaqueteDetalles.Rows.Item(e.RowIndex)("Tipo").ToString = "Paquete" Then tipo = 1 Else tipo = 2 End If If ObjProductosServicios.DeletePaqueteDetalle(dtPaqueteDetalles.Rows.Item(e.RowIndex)("CvePSPaquete").ToString.ToEntero, dtPaqueteDetalles.Rows.Item(e.RowIndex)("CvePS").ToString.ToEntero, dtPaqueteDetalles.Rows.Item(e.RowIndex)("Cantidad").ToString.ToDouble, tipo, dtPaqueteDetalles.Rows.Item(e.RowIndex)("CveUnidadMedida").ToString.ToEntero) Then If ObjProductosServicios.GetPaqueteDetalle(CvePS, UsuarioActual.CveEmpresa) Then gvPaqueteDetalle.EditIndex = -1 gvPaqueteDetalle.DataSource = ObjProductosServicios.DtResultados dtPaqueteDetalles = ObjProductosServicios.DtResultados gvPaqueteDetalle.DataBind() End If End If ObjProductosServicios.Dispose() End Sub Protected Sub gvPaqueteDetalle_RowEditing(sender As Object, e As GridViewEditEventArgs) Handles gvPaqueteDetalle.RowEditing gvPaqueteDetalle.EditIndex = e.NewEditIndex gvPaqueteDetalle.DataSource = dtPaqueteDetalles gvPaqueteDetalle.DataBind() End Sub Protected Sub gvPaqueteDetalle_RowCancelingEdit(sender As Object, e As GridViewCancelEditEventArgs) Handles gvPaqueteDetalle.RowCancelingEdit gvPaqueteDetalle.EditIndex = -1 gvPaqueteDetalle.DataSource = dtPaqueteDetalles gvPaqueteDetalle.DataBind() End Sub Protected Sub gvPaqueteDetalle_RowUpdating(sender As Object, e As GridViewUpdateEventArgs) Handles gvPaqueteDetalle.RowUpdating Dim ObjProductosServicios As New ClsProductosServicios If ObjProductosServicios.UpdatePaqueteDetalle(CvePS, dtPaqueteDetalles.Rows.Item(e.RowIndex)("CvePS").ToString.ToEntero, DirectCast(gvPaqueteDetalle.Rows(e.RowIndex).FindControl("txtECantidad"), TextBox).Text.ToDouble, DirectCast(gvPaqueteDetalle.Rows(e.RowIndex).FindControl("ddlETipo"), DropDownList).SelectedValue.ToEntero, DirectCast(gvPaqueteDetalle.Rows(e.RowIndex).FindControl("ddlEUnidad"), DropDownList).SelectedValue.ToEntero, UsuarioActual.CveUsuario) Then If ObjProductosServicios.GetPaqueteDetalle(CvePS, UsuarioActual.CveEmpresa) Then gvPaqueteDetalle.EditIndex = -1 gvPaqueteDetalle.DataSource = ObjProductosServicios.DtResultados dtPaqueteDetalles = ObjProductosServicios.DtResultados gvPaqueteDetalle.DataBind() End If End If ObjProductosServicios.Dispose() End Sub #End Region #End Region #Region "BTN'S" Protected Sub BtnEliminar_Click(sender As Object, e As System.EventArgs) Handles BtnEliminar.Click 'Dim CerrarVentana As String = "opener.location.reload();window.close();" 'If Request("Popup") IsNot Nothing Then CerrarVentana = "self.parent.tb_remove();self.parent.location.reload();window.close();" RegistraScript(String.Format("$('#{0}').modal('show');", "divDescripcion")) End Sub Protected Sub btguardar_Click(sender As Object, e As EventArgs) Handles btguardar.Click Dim ObjProductosServicios As New ClsProductosServicios If ObjProductosServicios.AddPaqueteDetalle(CvePS, DdlProductows.SelectedValue.ToEntero, txtCantidad.Text.ToDouble, ddlTipo.SelectedValue.ToEntero, ddlUnidad.SelectedValue.ToEntero, UsuarioActual.CveUsuario) Then If ObjProductosServicios.GetPaqueteDetalle(CvePS, UsuarioActual.CveEmpresa) Then gvPaqueteDetalle.EditIndex = -1 gvPaqueteDetalle.DataSource = ObjProductosServicios.DtResultados gvPaqueteDetalle.DataBind() End If txtCantidad.Text = "" DdlProductows.ddl.SelectedIndex = 0 ddlUnidad.SelectedIndex = 0 ddlTipo.SelectedIndex = 0 End If ObjProductosServicios.Dispose() UpDatos.Update() End Sub Protected Sub BtnGuardar_Click(sender As Object, e As System.EventArgs) Handles BtnGuardar.Click If DdlSATPS.SelectedValue.Contiene("46920", "0", "-1") AndAlso UsuarioActual.CveEmpresa.Contiene(119, 158, 72, 80, 145) Then Alert("El Producto Servicio SAT con clave '01010101' no es valido, por favor seleccione otro", TipoMensaje.MsgAdvertencia) Exit Sub End If If TxtPS.Text.Trim.Length = 0 Or DdlTipoPS.SelectedValue.ToEntero <= 0 Or DdlUnidadMedida.SelectedValue.ToEntero <= 0 Or DdlClasificacion.SelectedValue.ToEntero <= 0 Then Alert("Los campos Producto/Servicio, Tipo, Unidad de medida, Clasificación Contable son requeridos por favor ingreselos.", TipoMensaje.MsgAdvertencia) Exit Sub End If Dim CveClasificacion2 As Integer = DdlClasificacion2.SelectedValue.ToEntero If (TxtCodigo.Text = TxtCodigoBarras.Text AndAlso TxtCodigo.Text <> "") Then Alert("Los códigos no pueden ser iguales. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) Return End If If ddlMetodos.SelectedValue = "5" Or ChkSerie.Checked Then If Not (ddlMetodos.SelectedValue = "5" And ChkSerie.Checked) Then Dim Mensaje As String = If(ddlMetodos.SelectedValue = "5", "Si el método de salida del inventario es 'Serie' el producto debe poder aplicar serie", "Si el produco aplica serie el método de inventario debe ser 'SerieLote'") Alert(Mensaje) Exit Sub End If End If 'If DdlSubFamilia.SelectedValue = "-1" AndAlso UsuarioActual.TienePermisoProceso(138) Then ' Alert("Se debe especificar Familia y Subfamilia de Costos. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) ' Exit Sub 'End If If UsuarioActual.Empresa.Funcionalidad(265) = "1" And TxtCodigo.Text = "" Then Alert("El código es requerido.", TipoMensaje.MsgAdvertencia) Return End If If TxtCodigo.Text <> "" AndAlso Not TxtCodigo.Text.Length >= 3 Then Alert("El código tiene que que tener una longitud de al menos 3 digitos.", TipoMensaje.MsgAdvertencia) Return End If If UsuarioActual.CveEmpresa = 119 AndAlso DdlTipoPS.SelectedValue = "2" Then If TxtVentaMinima.Text.ToDecimal <= 0 Then Alert("La cantidad de venta mínima debe de ser especificada (mayor a cero)", TipoMensaje.MsgAdvertencia) Return End If End If Dim CveTamaño As Integer = DdlTamanio.SelectedValue.ToEntero 'VALIDAR TAMAÑOS Y ACUMULADORES If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then Dim Dr = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveClasificacion={0}", DdlClasificacion.SelectedValue.ToEntero()))(0) Dim DebeTenerTamanio As Boolean = Boolean.Parse(Dr("EsAcumulador").ToString) 'SI ES MOTOBATERIA If DdlClasificacion.SelectedValue = "20517" Then DebeTenerTamanio = True End If 'VALIDA QUE EL PRODUCTO, NO ES ACUMULADOR QUE NO TENGA TAMAÑO If Not DebeTenerTamanio AndAlso CveTamaño > 0 Then Alert($"Un producto/servicio con la clasificación '{Dr("Clasificacion")}' no debe tener especificado un tamaño.", TipoMensaje.MsgAdvertencia) Return End If 'VALIDA QUE EL PRODUCTO, SI ES ACUMULADOR QUE TENGA TAMAÑO If DebeTenerTamanio AndAlso CveTamaño <= 0 Then Alert($"Un producto/servicio con la clasificación '{Dr("Clasificacion")}' debe tener especificado un tamaño.", TipoMensaje.MsgAdvertencia) Return End If End If Dim ObjProductosServicios As New ClsProductosServicios() Dim ObjInv As New ClsInventarios(ObjProductosServicios.IniciaTransacSQL()) Dim TieneError = False Dim AccionJS = "" Try Dim EsPaquete As Integer = If(gvPaqueteDetalle.Rows.Count = 0, 0, 1) Dim CveMetodoInv As Integer = If(UsuarioActual.Empresa.UsaInventarios, ddlMetodos.SelectedValue.ToEntero, -1) Dim CveProveedor As Integer = -1 If DdlProveedor.txtValue.Value.ToEntero > 0 Then CveProveedor = DdlProveedor.txtValue.Value.ToEntero End If Dim CveMarca As Integer = 0 If UsuarioActual.CveEmpresa.Contiene(1, 72, 80) And CvePS = -1 Then CveMarca = DdlMarcaPSDes.SelectedValue.ToEntero Else CveMarca = DdlMarca.SelectedValue.ToEntero Dim TiempoCaducidad As Integer = -1 If ChkCaducidad.Checked Then If TxtTiempoCaducidad.Text.Length > 0 AndAlso IsNumeric(TxtTiempoCaducidad.Text) Then TiempoCaducidad = TxtTiempoCaducidad.Text.ToEntero() Else Alert("Falta indicar el tiempo de caducidad", TipoMensaje.MsgAdvertencia) Exit Sub End If End If If CvePS = -1 Then Dim PSS As String = TxtPS.Text.Trim.Replace("|", "") If UsuarioActual.CveEmpresa.Contiene(1, 72, 80) Then PSS = PSS.ToUpper If ObjProductosServicios.AddPS(DdlClasificacion.SelectedValue.ToEntero, -1, DdlUnidadMedida.SelectedValue.ToEntero, TxtCodigo.Text.Trim, "", TxtCodigoBarras.Text.Trim, PSS, TxtPrecio.Text.Trim.ToDouble, DdlIVA.SelectedValue.ToDouble, (TxtRetIVA.Text.Trim.ToDouble / 100), ChkInventariable.Checked, CveProveedor, True, ChkAplicaParaVenta.Checked, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveMetodoInv, EsPaquete, CveTipoPS:=DdlTipoPS.SelectedValue.ToEntero, FuePorXML:=False, TipoServicio:=-1, CveClasificacion2:=CveClasificacion2, CveMarca:=CveMarca, AlmacenSeccion:=TxtAlmacenSeccion.Text.Trim, AplicaIEPS:=ChkAplicaIeps.Checked, IEPSPorcentaje:=DdlIEPSPorcentaje.SelectedValue.ToDecimal, CveConceptoContable:=DdlConceptoRelacionado.SelectedValue.ToEntero, CveCompuesto:=DdlCompuesto.SelectedValue.ToEntero, CveSATPS:=DdlSATPS.SelectedValue.ToEntero, IEPSGrabaIVA:=ChkIepsIVA.Checked, VentaMinima:=TxtVentaMinima.Text.ToDecimal, CveMoneda:=DdlMoneda.SelectedValue.ToEntero, RetISR:=(TxtRetISR.Text.Trim.ToDouble / 100), PrecioMinimo:=TxtPrecioMinimo.Text.ToDecimal, CveTipoFactor:=DdlTipoFactor.SelectedValue.ToEntero, CveFraccionArancelaria:=DdlFraccionArancelaria.SelectedValue.ToEntero, CveClasificacionDetalle:=DdlTipoPSDes.SelectedValue.ToEntero, CveTamaño:=CveTamaño, CveModelo:=DdlModelo.SelectedValue.ToEntero(), CveMedida:=DdlMedida.SelectedValue.ToEntero(), CveRinTamaño:=DdlRin.SelectedValue.ToEntero(), ClaveImpuestoEmpaque:=DdlImpEmpaque.SelectedValue.ToString, ClaveImpuestoUM:=DdlImpUM.SelectedValue.ToString, ClaveCategoriaToxicidad:=DdlCategoriaToxicidad.SelectedValue.ToString, ClaveImpuestoTipoProducto:=DdlImpTipoProducto.SelectedValue.ToString, EsOutSourcing:=ChkEsOutSourcing.Checked, TiempoCaducidad:=TiempoCaducidad, CvePSAdicionalVigencia:=DdlPSAdicionalVigencia.SelectedValue.ToEntero(), PrecioLibre:=ChkPrecioLibre.Checked) > 0 Then ViewState("CvePS") = ObjProductosServicios.CvePS For Each GVR As GridViewRow In GvImpuestosLocales.Rows If GVR.FCCheckBox("ChkDeduccion").Checked Then ObjProductosServicios.AddPSImpuestosLocales(CvePS, GVR.DataKey("CveImpuestoLocal").ToEntero) End If Next 'Alert("El Producto o Servicio se guardó correctamente.", TipoMensaje.MsgInformacion, "document.location.href= "" / ProductosServicios.aspx?CvePS=" & ObjProductosServcios.CvePS.ToString & """;") AccionJS = "document.location.href=""/Ventas/CatPS.aspx"";" If Not TieneError Then For Each Dr As DataRow In DtSeccionAlmacen.Rows If Dr("CveAlmacen").ToString.ToEntero > 0 Then If Not ObjInv.AddProductosServiciosAlmacenSeccion(CvePS, Dr("CveAlmacen").ToString.ToEntero, Dr("CveAlmacenSeccion").ToString.ToEntero) Then TieneError = True End If End If Next End If If UsuarioActual.Empresa.Funcionalidad(563) <> "" AndAlso ChkAplicaParaVenta.Checked Then TieneError = GuardarProductoEnFranquicia(ObjProductosServicios, PSS, CveMetodoInv, EsPaquete, True) End If Else TieneError = True Alert("Ocurrió un Error al agregar el Producto o Servicio. Por favor vuelva a intentar.", TipoMensaje.MsgError) End If Else If CodigoBarrasCargado.Length > 0 And TxtCodigoBarras.Text.Length = 0 Then TxtCodigoBarras.Text = CodigoBarrasCargado End If Dim PSS As String = TxtPS.Text.Trim.Replace("|", "") If UsuarioActual.CveEmpresa.Contiene(1, 72, 80) Then PSS = PSS.ToUpper If ObjProductosServicios.UpdatePS(DdlClasificacion.SelectedValue.ToEntero, -1, DdlUnidadMedida.SelectedValue.ToEntero, TxtCodigo.Text.Trim, TxtCodigo2.Text.Trim, TxtCodigoBarras.Text.Trim, PSS, TxtPrecio.Text.Trim.ToDouble, DdlIVA.SelectedValue.ToDouble, (TxtRetIVA.Text.Trim.ToDouble / 100), ChkInventariable.Checked, CveProveedor, True, ChkAplicaParaVenta.Checked, ChkEstado.Checked, UsuarioActual.CveUsuario, CvePS, CveMetodoInv, EsPaquete, DdlSATPS.SelectedValue.ToEntero, CveTipoPS:=DdlTipoPS.SelectedValue.ToEntero, TipoServicio:=-1, CveClasificacion2:=CveClasificacion2, CveMarca:=CveMarca, AlmacenSeccion:=TxtAlmacenSeccion.Text.Trim, AplicaIEPS:=ChkAplicaIeps.Checked, IEPSPorcentaje:=DdlIEPSPorcentaje.SelectedValue.ToDecimal, CveConceptoContable:=DdlConceptoRelacionado.SelectedValue.ToEntero, CveCompuesto:=DdlCompuesto.SelectedValue.ToEntero, IEPSGrabaIVA:=ChkIepsIVA.Checked, VentaMinima:=TxtVentaMinima.Text.ToDecimal, CveMoneda:=DdlMoneda.SelectedValue.ToEntero, RetISR:=(TxtRetISR.Text.Trim.ToDouble / 100), PrecioMinimo:=TxtPrecioMinimo.Text.ToDecimal, CveTipoFactor:=DdlTipoFactor.SelectedValue.ToEntero, CveFraccionArancelaria:=DdlFraccionArancelaria.SelectedValue.ToEntero, CveUsuarioModifico:=UsuarioActual.CveUsuario, CveClasificacionDetalle:=DdlTipoPSDes.SelectedValue.ToEntero, CveTamaño:=CveTamaño, CveModelo:=DdlModelo.SelectedValue.ToEntero(), CveMedida:=DdlMedida.SelectedValue.ToEntero(), CveRinTamaño:=DdlRin.SelectedValue.ToEntero(), ClaveImpuestoEmpaque:=DdlImpEmpaque.SelectedValue.ToString, ClaveImpuestoUM:=DdlImpUM.SelectedValue.ToString, ClaveCategoriaToxicidad:=DdlCategoriaToxicidad.SelectedValue.ToString, ClaveImpuestoTipoProducto:=DdlImpTipoProducto.SelectedValue.ToString, EsOutSourcing:=ChkEsOutSourcing.Checked, AplicaSerie:=ChkSerie.Checked, AplicaLote:=ChkLote.Checked, AplicaCaducidad:=ChkCaducidad.Checked, AplicaSeccion:=ChkSeccion.Checked, TiempoCaducidad:=TiempoCaducidad, CvePSAdicionalVigencia:=DdlPSAdicionalVigencia.SelectedValue.ToEntero(), PrecioLibre:=ChkPrecioLibre.Checked) Then If Not ObjProductosServicios.LimpiaImpuestosLocales(CvePS) Then TieneError = True Alert("Ocurrió un Error al regenerar los impuestos locales. Por favor vuelva a intentar.", TipoMensaje.MsgError) End If If Not TieneError Then For Each GVR As GridViewRow In GvImpuestosLocales.Rows If GVR.FCCheckBox("ChkDeduccion").Checked Then If Not ObjProductosServicios.AddPSImpuestosLocales(CvePS, GVR.DataKey("CveImpuestoLocal").ToEntero) Then TieneError = True Alert("Ocurrió un Error al agregar los impuestos locales. Por favor vuelva a intentar.", TipoMensaje.MsgError) Exit For End If End If Next End If AccionJS = If(Ret = "Comp", "ircompras();", "document.location.href=""/Ventas/CatPS.aspx"";") 'UpDatos.Update() 'Alert("Los cambios se guardaron correctamente.", TipoMensaje.MsgInformacion, AccionJS) If Not TieneError Then For Each Dr As DataRow In DtSeccionAlmacen.Rows If Dr("CveAlmacen").ToString.ToEntero > 0 AndAlso Not Dr("CvePSAlmacenSeccion").ToString.ToEntero > 0 Then If Not ObjInv.AddProductosServiciosAlmacenSeccion(CvePS, Dr("CveAlmacen").ToString.ToEntero, Dr("CveAlmacenSeccion").ToString.ToEntero) Then TieneError = True End If ElseIf Not Dr("CveAlmacen").ToString.ToEntero > 0 AndAlso Dr("CvePSAlmacenSeccion").ToString.ToEntero > 0 Then If Not ObjInv.RemoveProductosServiciosAlmacenSeccion(Dr("CvePSAlmacenSeccion").ToString.ToEntero) Then TieneError = True End If End If Next End If If UsuarioActual.Empresa.Funcionalidad(563) <> "" AndAlso ChkAplicaParaVenta.Checked Then TieneError = GuardarProductoEnFranquicia(ObjProductosServicios, PSS, CveMetodoInv, EsPaquete, False) End If Else TieneError = True Alert("Ocurrió un Error al actualizar el Producto o Servicio. Por favor vuelva a intentar.", TipoMensaje.MsgError) End If ObjProductosServicios.CvePS = CvePS End If If ObjProductosServicios.CvePS > 0 And Not TieneError Then For i As Integer = 0 To gvSucursal.Rows.Count - 1 If gvSucursal.Rows(i).FCCheckBox("chkSucursal").Checked = False Then If Not ObjProductosServicios.RemovePSSucursales(ObjProductosServicios.CvePS, gvSucursal.Rows(i).DataKey("CveSubProyecto").ToEntero) Then TieneError = True Alert("Ocurrió un Error al eliminar sucursales del producto. Por favor vuelva a intentar.", TipoMensaje.MsgError) Exit For End If Else If gvSucursal.Rows(i).FCHiddenField("hdnEnBD").Value.ToEntero = 1 Then 'Actualizarlo If Not ObjProductosServicios.UpdatePSSucursales(ObjProductosServicios.CvePS, gvSucursal.Rows(i).FCTextBox("txtImporte").Text.ToDouble, gvSucursal.Rows(i).FCTextBox("TxtMinimo").Text.ToDouble, gvSucursal.Rows(i).FCTextBox("TxtMaximo").Text.ToDouble, UsuarioActual.CveUsuario, gvSucursal.Rows(i).DataKey("CveSubProyecto").ToEntero, PrecioMinimo:=gvSucursal.Rows(i).FCTextBox("TxtPrecioMinimo").Text.ToDecimal) Then TieneError = True Alert("Ocurrió un Error al actualizar sucursales del producto. Por favor vuelva a intentar.", TipoMensaje.MsgError) Exit For End If 'ObjProductosServicios.UpdatePSSucursales(ObjProductosServicios.CvePS, gvSucursal.Rows(i).FCHiddenField("hdnCveSucursal").Value.ToEntero, gvSucursal.Rows(i).FCTextBox("txtImporte").Text.ToDouble, UsuarioActual.CveUsuario) Else 'Insertarlo 'ObjProductosServicios.AddPSSucursales(ObjProductosServicios.CvePS, gvSucursal.Rows(i).FCHiddenField("hdnCveSucursal").Value.ToEntero, gvSucursal.Rows(i).FCTextBox("txtImporte").Text.ToDouble, UsuarioActual.CveUsuario) If Not ObjProductosServicios.AddPSSucursales(ObjProductosServicios.CvePS, gvSucursal.Rows(i).FCTextBox("txtImporte").Text.ToDouble, gvSucursal.Rows(i).FCTextBox("TxtMinimo").Text.ToDouble, gvSucursal.Rows(i).FCTextBox("TxtMaximo").Text.ToDouble, UsuarioActual.CveUsuario, gvSucursal.Rows(i).DataKey("CveSubProyecto").ToEntero, PrecioMinimo:=gvSucursal.Rows(i).FCTextBox("TxtPrecioMinimo").Text.ToDecimal) Then TieneError = True Alert("Ocurrió un Error al agregar sucursales del producto. Por favor vuelva a intentar.", TipoMensaje.MsgError) Exit For End If End If End If Next End If If ObjProductosServicios.CvePS > 0 And Not TieneError Then TieneError = GuardaEcommerce() End If Catch ex As Exception TieneError = True OnError("Ocurrió un error al guardar al guardar el producto/servicio.", ex) End Try If Not TieneError Then ObjProductosServicios.Commit() Alert("El Producto/Servicio se guardo correctamente.", TipoMensaje.MsgInformacion, AccionJS) Else ObjProductosServicios.RollBack() End If ObjProductosServicios.Dispose() RecargaGlobal() End Sub Protected Sub HFProducto_ValueChanged(sender As Object, e As EventArgs) Handles HFProducto.ValueChanged ddlUnidad.DataSource = GlobalDTProductosServiciosEquivalencias(HFProducto.Value.ToEntero, -1, UsuarioActual.CveEmpresa) ddlUnidad.DataBind() End Sub Protected Sub LbAgregar_Click(sender As Object, e As System.EventArgs) Handles LbAgregar.Click Dim ObjAliasAdd As New ClsProductosServicios Dim TieneError = False If ObjAliasAdd.AddPSAlias(TxtAlias.Text.ToString, CvePS, UsuarioActual.CveUsuario) Then CargarAlias() UPGVAlias.Update() Alert("Alias " + TxtAlias.Text + " agregado.", TipoMensaje.MsgInformacion) TxtAlias.Text = "" Else TieneError = True End If ObjAliasAdd.Dispose() If Not TieneError Then RecargaGlobal() End If End Sub #End Region #Region "G L O B L A L" Private Sub RecargaGlobal() 'Dim Hilo As New System.Threading.Thread(AddressOf GeneraGlobalDT) 'Hilo.Start() GeneraGlobalDT() End Sub Private Sub GeneraGlobalDT() GlobalDTPSSimplificado(UsuarioActual.CveEmpresa) = Nothing GlobalDTProductosServiciosAlias(UsuarioActual.CveEmpresa) = Nothing GlobalDTImpuestosLocales(-1, UsuarioActual.CveEmpresa) = Nothing GlobalDTProductosServiciosEquivalencias(-1, -1, UsuarioActual.CveEmpresa) = Nothing GlobalDTPSAdicionales(-1, UsuarioActual.CveEmpresa) = Nothing GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, -1, -1) = Nothing 'Dim ObjPS As New ClsProductosServicios 'If ObjPS.GetPSSimplificado(UsuarioActual.CveEmpresa) Then Application(String.Format("GlobalDTPSSimplificado{0}", UsuarioActual.CveEmpresa)) = ObjPS.DtResultados.AsEnumerable() ''If ObjPS.GetPSAlias(-1, UsuarioActual.CveEmpresa) Then ' GlobalDTProductosServiciosAlias(UsuarioActual.CveEmpresa) = ObjPS.DtResultados 'End If 'If ObjPS.GetPSImpuestosLocales(-1, UsuarioActual.CveEmpresa) Then ' GlobalDTImpuestosLocales(-1, UsuarioActual.CveEmpresa) = ObjPS.DtResultados 'End If 'If ObjPS.GetPSEquivalencias(-1, UsuarioActual.CveEmpresa) Then ' GlobalDTProductosServiciosEquivalencias(-1, -1, UsuarioActual.CveEmpresa) = ObjPS.DtResultados 'End If 'If ObjPS.GetPSAdicionales(-1, UsuarioActual.CveEmpresa) Then ' GlobalDTPSAdicionales(-1, UsuarioActual.CveEmpresa) = ObjPS.DtResultados 'End If 'ObjPS.Dispose() End Sub #End Region #Region "GV ALIAS" Protected Sub GVAlias_RowDeleting(sender As Object, e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GVAlias.RowDeleting Dim ObjAliasDelete As New ClsProductosServicios Dim TieneError = False If ObjAliasDelete.RemovePSAlias(GVAlias.Rows(e.RowIndex).DataKey("CvePS").ToString.ToEntero, GVAlias.Rows(e.RowIndex).DataKey("PSAlias").ToString, UsuarioActual.CveUsuario) Then GVAlias.EditIndex = -1 CargarAlias() UPGVAlias.Update() Alert("El Alias ha sido Eliminado", TipoMensaje.MsgInformacion) Else Alert("Error al Eliminar", TipoMensaje.MsgError) TieneError = True End If ObjAliasDelete.Dispose() If Not TieneError Then RecargaGlobal() End If End Sub #End Region #Region " EQUIVALENCIAS " Private Sub CargaEquivalencias() DivEquivalencia.Visible = True Dim ObjProductosServicios As New ClsProductosServicios() If ObjProductosServicios.GetPSEquivalencias(CvePS, UsuarioActual.CveEmpresa) Then DtEquivalencias = ObjProductosServicios.DtResultados Else DtEquivalencias = Nothing End If ObjProductosServicios.Dispose() CargaGvEquivalencias() End Sub Private Sub RecargaGlobalEquivalencias() 'Dim Hilo As New System.Threading.Thread(AddressOf GeneraGlobalEquivalencias) 'Hilo.Start() GeneraGlobalEquivalencias() End Sub Private Sub GeneraGlobalEquivalencias() GlobalDTProductosServiciosEquivalencias(-1, -1, UsuarioActual.CveEmpresa) = Nothing 'Dim ObjPS = New ClsProductosServicios 'If ObjPS.GetPSEquivalencias(-1, -1) Then ' GlobalDTProductosServiciosEquivalencias(-1, -1, UsuarioActual.CveEmpresa) = ObjPS.DtResultados 'End If 'ObjPS.Dispose() End Sub Private Sub CargaGvEquivalencias() If DtEquivalencias IsNot Nothing Then GvEquivalencia.DataSource = DtEquivalencias End If GvEquivalencia.DataBind() UpEquivalencias.Update() End Sub Private Sub GvEquivalencia_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvEquivalencia.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.DBCampo("UnidadBase") = "True" Then e.Row.FCLinkButton("imgR").Visible = False End If If e.Row.RowState = DataControlRowState.Edit OrElse e.Row.RowState = 5 Then If e.Row.DBCampo("UnidadBase") = "True" Then 'e.Row.FCCheckBox("ChkBase").Checked = True End If End If End If End Sub Protected Sub GvEquivalencia_RowEditing(sender As Object, e As GridViewEditEventArgs) Handles GvEquivalencia.RowEditing GvEquivalencia.EditIndex = e.NewEditIndex CargaGvEquivalencias() End Sub Protected Sub GvEquivalencia_RowCancelingEdit(sender As Object, e As GridViewCancelEditEventArgs) Handles GvEquivalencia.RowCancelingEdit GvEquivalencia.EditIndex = -1 CargaGvEquivalencias() End Sub Private Sub GvEquivalencia_RowUpdating(sender As Object, e As GridViewUpdateEventArgs) Handles GvEquivalencia.RowUpdating Dim TieneError = False Dim CveUM = GvEquivalencia.Rows(e.RowIndex).DataKey("CveUM").ToEntero Dim UnidadBase = GvEquivalencia.Rows(e.RowIndex).DataKey("UnidadBase").ToString = "True" Dim Cantidad = DirectCast(GvEquivalencia.Rows(e.RowIndex).FindControl("TxtCantidadEquivalencia"), TextBox).Text.Trim.ToDecimal Dim ObjProductosServicios As New ClsProductosServicios() If Not ObjProductosServicios.UpdatePSEquivalencias(CvePS, CveUM, Cantidad, UnidadBase, 0, UsuarioActual.CveUsuario) Then TieneError = True End If ObjProductosServicios.Dispose() If Not TieneError Then Alert("La equivalencia se actualizó correctamente.", TipoMensaje.MsgInformacion) GvEquivalencia.EditIndex = -1 CargaEquivalencias() CargaGvEquivalencias() RecargaGlobalEquivalencias() Else Alert("ocurrió un error al actualizar la equivalencia.", TipoMensaje.MsgError) End If End Sub Private Sub GvEquivalencia_RowDeleting(sender As Object, e As GridViewDeleteEventArgs) Handles GvEquivalencia.RowDeleting Dim TieneError = False Dim CveUM = GvEquivalencia.Rows(e.RowIndex).DataKey("CveUM").ToEntero Dim ObjProductosServicios As New ClsProductosServicios() If Not ObjProductosServicios.RemovePSEquivalencias(CvePS, CveUM) Then TieneError = True End If ObjProductosServicios.Dispose() If Not TieneError Then Alert("La equivalencia se eliminó correctamente.", TipoMensaje.MsgInformacion) CargaEquivalencias() CargaGvEquivalencias() RecargaGlobalEquivalencias() Else Alert("ocurrió un error al eliminar la equivalencia.", TipoMensaje.MsgError) End If End Sub #End Region #Region "PS ADICIONALES" Private Sub CargaPSAdicionales() Dim ObjProductosServicios As New ClsProductosServicios() If ObjProductosServicios.GetPSAdicionales(CvePS, UsuarioActual.CveEmpresa) Then DtPSAdicionales = ObjProductosServicios.DtResultados Else DtPSAdicionales = Nothing End If ObjProductosServicios.Dispose() CargaGvPSAdicionales() End Sub Private Sub CargaGvPSAdicionales() If DtPSAdicionales IsNot Nothing Then GvPSAdicionales.DataSource = DtPSAdicionales End If GvPSAdicionales.DataBind() UpPSAdicionales.Update() End Sub Private Sub GvPSAdicionales_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvPSAdicionales.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.RowState = DataControlRowState.Edit OrElse e.Row.RowState = 5 Then e.Row.FCDropDownList("DdlPSAdicional").DataSource = GlobalDTPS(UsuarioActual.CveEmpresa) '.FiltraParametros("CvePS = " + CvePS.ToString) e.Row.FCDropDownList("DdlPSAdicional").DataBind() e.Row.FCDropDownList("DdlPSAdicional").SelectedValue = e.Row.DBCampo("CvePSAdicional") End If End If End Sub Protected Sub GvPSAdicionales_RowCancelingEdit(sender As Object, e As GridViewCancelEditEventArgs) Handles GvPSAdicionales.RowCancelingEdit GvPSAdicionales.EditIndex = -1 CargaGvPSAdicionales() End Sub Private Sub GvPSAdicionales_RowDeleting(sender As Object, e As GridViewDeleteEventArgs) Handles GvPSAdicionales.RowDeleting Dim TieneError = False Dim CvePSAdicional = GvPSAdicionales.Rows(e.RowIndex).DataKey("CvePSAdicional").ToEntero Dim PSAdicional = GvPSAdicionales.Rows(e.RowIndex).DataKey("PS").ToString Dim ObjProductosServicios As New ClsProductosServicios() If Not ObjProductosServicios.RemovePSAdicionales(CvePS, CvePSAdicional) Then TieneError = True Else TieneError = EliminarProductosEquivalenteEnFranquicia(ObjProductosServicios, PSAdicional) End If ObjProductosServicios.Dispose() If Not TieneError Then Alert("El Producto/Servicio Adicional se eliminó correctamente.", TipoMensaje.MsgInformacion) CargaPSAdicionales() CargaGvPSAdicionales() 'RecargaGlobalEquivalencias() RecargaGlobal() Else Alert("ocurrió un error al eliminar el Producto/Servicio Adicional.", TipoMensaje.MsgError) End If End Sub Private Sub BtnAgregarPSAdicionalesModal_Click(sender As Object, e As EventArgs) Handles BtnAgregarPSAdicionalesModal.Click BtnAgregarPSAdicional.Text = "Agregar" CvePSAdicional = -1 DdlPSAdicional.DataSource = GlobalDTPS(UsuarioActual.CveEmpresa) DdlPSAdicional.DataBind() DdlPSAdicional.Items.Add(New ListItem("Seleccione", "-1")) UpAddPSAdicional.Update() DdlPSAdicional.SelectedValue = "-1" TxtCantidadPSAdicional.Text = "" UpCantidad.Visible = False RBLCantidad.SelectedValue = "1" RegistraScript("$('#divAddPSAdicional').modal();") End Sub Private Sub BtnAgregarPSAdicional_Click(sender As Object, e As EventArgs) Handles BtnAgregarPSAdicional.Click Dim ObjProductosServicios As New ClsProductosServicios() ObjProductosServicios.IniciaTransacSQL() Dim TieneError = False If CvePSAdicional < 0 Then If Not ObjProductosServicios.AddPSAdicionales(CvePS, DdlPSAdicional.SelectedValue.ToEntero, If(TxtCantidadPSAdicional.Visible, TxtCantidadPSAdicional.Text.ToDecimal, 0)) Then TieneError = True Else TieneError = GuardarProductosEquivalenteEnFranquicia(ObjProductosServicios, True) End If Else If Not ObjProductosServicios.UpdatePSAdicionales(CvePS, DdlPSAdicional.SelectedValue.ToEntero, CvePSAdicional, If(TxtCantidadPSAdicional.Visible, TxtCantidadPSAdicional.Text.ToDecimal, 0)) Then TieneError = True Else TieneError = GuardarProductosEquivalenteEnFranquicia(ObjProductosServicios, False, PSAdicionalAnterior) End If End If If TieneError Then Alert("Ocurrio un error al agregar/actualizar el Producto/Servicio Adicional.", TipoMensaje.MsgError) ObjProductosServicios.RollBack() Else ObjProductosServicios.Commit() RegistraScript("$('#divAddPSAdicional').modal('hide');") CvePSAdicional = -1 CargaPSAdicionales() CargaGvPSAdicionales() RecargaGlobal() End If ObjProductosServicios.Dispose() End Sub Protected Sub Edit_Click(sender As Object, e As EventArgs) Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) BtnAgregarPSAdicional.Text = "Guardar" TxtCantidadPSAdicional.Text = GvRow.DataKey("Cantidad") PSAdicionalAnterior = GvRow.DataKey("PS").ToString If TxtCantidadPSAdicional.Text.ToEntero = 0 Then UpCantidad.Visible = False RBLCantidad.SelectedValue = "1" Else UpCantidad.Visible = True RBLCantidad.SelectedValue = "2" End If UpAddPSAdicional.Update() DdlPSAdicional.DataSource = GlobalDTPS(UsuarioActual.CveEmpresa) DdlPSAdicional.DataBind() DdlPSAdicional.Items.Add(New ListItem("Seleccione", "-1")) UpAddPSAdicional.Update() CvePSAdicional = GvRow.DataKey("CvePSAdicional").ToEntero DdlPSAdicional.SelectedValue = GvRow.DataKey("CvePSAdicional") RegistraScript("$('#divAddPSAdicional').modal();") End Sub Protected Sub RBLCantidad_SelectedIndexChanged1(sender As Object, e As EventArgs) If RBLCantidad.SelectedValue.ToEntero = 2 Then UpCantidad.Visible = True Else UpCantidad.Visible = False End If UpAddPSAdicional.Update() End Sub #End Region #Region " CARGA MARCA Y COMPUESTOS " Protected Sub CargarMarcas() If UsuarioActual.Empresa.Funcionalidad(130) = "1" Then If UsuarioActual.CveEmpresa.Contiene(1, 72, 80) And CvePS = -1 Then DivMarcaPSDes.Visible = True Else DivMarca.Visible = True End If Dim ObjMarcas As New ClsProductosServicios ObjMarcas.GetMarcas(UsuarioActual.CveEmpresa) DdlMarca.DataSource = ObjMarcas.DtResultados DdlMarcaPSDes.DataSource = ObjMarcas.DtResultados ObjMarcas.Dispose() DdlMarca.DataBind() DdlMarcaPSDes.DataBind() End If DdlMarca.Items.Insert(0, New ListItem(" - ", "-1")) DdlMarcaPSDes.Items.Insert(0, New ListItem(" - ", "-1")) End Sub Protected Sub CargarCompuestos() If UsuarioActual.Empresa.Funcionalidad(143) = "1" Then DivCompuesto.Visible = True Dim PS As New ClsProductosServicios PS.GetCompuestosActivos(UsuarioActual.CveEmpresa) DdlCompuesto.DataSource = PS.DtResultados PS.Dispose() DdlCompuesto.DataBind() End If End Sub #End Region #Region "IMPUESTOS LOCALES" Public Sub CargaImpuestosLocales() Dim ObjPS As New ClsProductosServicios If ObjPS.GetPSImpuestosLocales(CvePS, UsuarioActual.CveEmpresa) Then GvImpuestosLocales.DataSource = ObjPS.DtResultados End If ObjPS.Dispose() GvImpuestosLocales.DataBind() End Sub #End Region #Region " IEPS " Private Sub ChkAplicaIeps_CheckedChanged(sender As Object, e As EventArgs) Handles ChkAplicaIeps.CheckedChanged If ChkAplicaIeps.Checked Then DdlIEPSPorcentaje.Enabled = True ChkIepsIVA.Enabled = True Else DdlIEPSPorcentaje.SelectedIndex = 0 DdlIEPSPorcentaje.Enabled = False ChkIepsIVA.Enabled = False ChkIepsIVA.Checked = False End If UpDatos.Update() End Sub #End Region #Region "UNIFICAR PRODUCTOS" Private Sub LnkUnificar_Click(sender As Object, e As EventArgs) Handles LnkUnificar.Click CargaPSUnificar() RegistraScript("$('#DivUnificar').modal();LimpiaModalUnificar()") End Sub Public Sub CargaPSUnificar() DdlPsUnificar.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa) DdlPsUnificar.DataBind() 'DdlPsUnificar.setEsWebService(True) 'DdlPsUnificar.ddlWS.Attributes.Add("data-clear", "1") UpBodyUnificar.Update() End Sub Private Sub BtnUnificar_Click(sender As Object, e As EventArgs) Handles BtnUnificar.Click If DdlPsUnificar.SelectedValue.ToEntero() > 0 Then If DdlPsUnificar.SelectedValue.ToEntero() = CvePS Then Alert("No se puede seleccionar el mismo producto y/o servicio", TipoMensaje.MsgAdvertencia) Else Dim ObjPS As New ClsProductosServicios If ObjPS.UnificarPS(CvePS, DdlPsUnificar.SelectedValue.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then Alert("Los productos y/o servicios han sido unificados", TipoMensaje.MsgInformacion) Else Alert("Los productos y/o servicios no han podido ser unificados", TipoMensaje.MsgError) End If ObjPS.Dispose() RecargaGlobal() RegistraScript("$('#DivUnificar').modal('hide');") UpDatos.Update() End If Else Alert("Es necesario seleccionar un producto y/o servicio", TipoMensaje.MsgAdvertencia) End If End Sub #End Region #Region "BITACORA" Private Sub CargaGvBitacora() Dim ObjGral As New ClsGenerales() If ObjGral.GetHistorialBitacora(-1, -1, -1, -1, CvePS, -1, -1, UsuarioActual.CveEmpresa) Then GvBitacora.DataSource = ObjGral.DtResultados GvBitacora.DataBind() End If ObjGral.Dispose() UpDatos.Update() End Sub Private Sub BtnRemove_Click(sender As Object, e As EventArgs) Handles BtnRemove.Click If Not TxtDescripcion.Text = "" Then Dim ObjProductosServcios As New ClsProductosServicios() Dim ObjGral As New ClsGenerales(ObjProductosServcios.IniciaTransacSQL()) If ObjProductosServcios.RemovePS(CvePS) Then Borrar = True Else Borrar = False End If If Borrar = True Then If ObjGral.AddHistorialBitacora(Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, "", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 1, TxtDescripcion.Text, "PS", TxtCodigo.Text + " / " + TxtPS.Text) Then ObjProductosServcios.Commit() RecargaGlobal() Alert("El Producto o Servicio se eliminó correctamente.", TipoMensaje.MsgInformacion, "document.location.href=""/Ventas/CatPS.aspx"";") Else ObjProductosServcios.RollBack() Alert("Ocurrió un Error al actualizar el historial de eliminación.", TipoMensaje.MsgError) End If Else ObjProductosServcios.RollBack() Alert("Ocurrió un Error al eliminar el Producto o Servicio. Por favor vuelva a intentar.", TipoMensaje.MsgError) End If ObjProductosServcios.Dispose() ObjGral.Dispose() Else Alert("Tiene que decir el motivo de su eliminacion.", TipoMensaje.MsgInformacion) End If End Sub #End Region #Region "Codigo Barras" 'Codigo barras/QR se retorna como una imagen bmp Private Function GeneraCodigoQR(CodigoBarras As String, Alto As Integer, Largo As Integer, Margen As Integer, Formato As String) As Byte() Dim barcodeWriter As New BarcodeWriter Dim opciones As New ZXing.Common.EncodingOptions Dim FormatoBar As New BarcodeFormat 'Dim Respuesta As Byte() opciones.Height = Alto opciones.Width = Largo opciones.Margin = Margen barcodeWriter.Options = opciones Select Case Formato Case "All_1D" barcodeWriter.Format = BarcodeFormat.All_1D Exit Select Case "AZTEC" barcodeWriter.Format = BarcodeFormat.AZTEC Exit Select Case "CODABAR" barcodeWriter.Format = BarcodeFormat.CODABAR Exit Select Case "CODE_128" barcodeWriter.Format = BarcodeFormat.CODE_128 Exit Select Case "CODE_39" barcodeWriter.Format = BarcodeFormat.CODE_39 Exit Select Case "CODE_93" barcodeWriter.Format = BarcodeFormat.CODE_93 Exit Select Case "DATA_MATRIX" barcodeWriter.Format = BarcodeFormat.DATA_MATRIX Exit Select Case "EAN_13" barcodeWriter.Format = BarcodeFormat.EAN_13 Exit Select Case "EAN_8" barcodeWriter.Format = BarcodeFormat.EAN_8 Exit Select Case "IMB" barcodeWriter.Format = BarcodeFormat.IMB Exit Select Case "ITF" barcodeWriter.Format = BarcodeFormat.ITF Exit Select Case "MAXICODE" barcodeWriter.Format = BarcodeFormat.MAXICODE Exit Select Case "MSI" barcodeWriter.Format = BarcodeFormat.MSI Exit Select Case "PDF_417" barcodeWriter.Format = BarcodeFormat.PDF_417 Exit Select Case "PLESSEY" barcodeWriter.Format = BarcodeFormat.PLESSEY Exit Select Case "QR_CODE" barcodeWriter.Format = BarcodeFormat.QR_CODE Exit Select Case "RSS_14" barcodeWriter.Format = BarcodeFormat.RSS_14 Exit Select Case "RSS_EXPANDED" barcodeWriter.Format = BarcodeFormat.RSS_EXPANDED Exit Select Case "UPC_A" barcodeWriter.Format = BarcodeFormat.UPC_A Exit Select Case "UPC_E" barcodeWriter.Format = BarcodeFormat.UPC_E Exit Select Case "UPC_EAN_EXTENSION" barcodeWriter.Format = BarcodeFormat.UPC_EAN_EXTENSION Exit Select End Select Dim imgCod As Drawing.Bitmap = barcodeWriter.Write(CodigoBarras) Dim memoriStream As New System.IO.MemoryStream imgCod.Save(memoriStream, Drawing.Imaging.ImageFormat.Bmp) 'Respuesta = Convert.ToBase64String(memoriStream.ToArray()) Return memoriStream.ToArray() End Function Private Sub LnkModalCodigoBarrasQr_Click(sender As Object, e As EventArgs) Handles LnkModalCodigoBarrasQr.Click LnkDescargaImagen.Enabled = False LnkDescargaImpresion.Enabled = False UpModalBotonesCodigos.Update() TxtCodigoBarrasModal.Text = TxtCodigoBarras.Text.Trim UpModalUploadCodigoBarras.Update() RegistraScript("$('#ModalCodigoBarrasQR').modal({ backdrop: 'static', keyboard: false});") End Sub Private Sub LnkModalGenerarCodigoBarrasQR_Click(sender As Object, e As EventArgs) Handles LnkModalGenerarCodigoBarrasQR.Click Dim Alto As Integer = 150 Dim Ancho As Integer = 150 Dim Base64Code As String If TxtAlto.Text.ToEntero > 0 Then Alto = TxtAlto.Text.ToEntero If TxtAncho.Text.ToEntero > 0 Then Ancho = TxtAncho.Text.ToEntero Try Base64Code = Convert.ToBase64String(GeneraCodigoQR(TxtCodigoBarrasModal.Text.Trim, Alto, Ancho, 0, DDLCodigoFormato.SelectedValue)) ImgModalCodigo.Attributes.Add("src", $"data:image/gif;base64,{Base64Code}") ImgModalCodigo.Width = Ancho ImgModalCodigo.Height = Alto LnkDescargaImagen.Enabled = True LnkDescargaImpresion.Enabled = True UpModalBotonesCodigos.Update() Catch ex As Exception ImgModalCodigo.Attributes.Add("src", "") ImgModalCodigo.Width = Ancho ImgModalCodigo.Height = Alto LnkDescargaImagen.Enabled = False LnkDescargaImpresion.Enabled = False UpModalBotonesCodigos.Update() End Try UpModalUploadCodigoBarras.Update() End Sub Private Sub LnkDescargaImagen_Click(sender As Object, e As EventArgs) Handles LnkDescargaImagen.Click Dim Alto As Integer = 150 Dim Ancho As Integer = 150 If TxtAlto.Text.ToEntero > 0 Then Alto = TxtAlto.Text.ToEntero If TxtAncho.Text.ToEntero > 0 Then Ancho = TxtAncho.Text.ToEntero Try Dim memoryStream As New System.IO.MemoryStream(GeneraCodigoQR(TxtCodigoBarrasModal.Text.Trim, Alto, Ancho, 0, DDLCodigoFormato.SelectedValue)) Response.Clear() Response.ContentType = "application/bmp" Response.AddHeader("content-disposition", $"attachment;filename=code_{TxtCodigoBarrasModal.Text.Trim}.bmp") Response.Buffer = True memoryStream.WriteTo(Response.OutputStream) Response.End() Catch ex As Exception End Try End Sub Private Sub DDLCodigoFormato_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DDLCodigoFormato.SelectedIndexChanged LnkDescargaImagen.Enabled = False LnkDescargaImpresion.Enabled = False UpModalBotonesCodigos.Update() End Sub Private Sub LnkDescargaImpresion_Click(sender As Object, e As EventArgs) Handles LnkDescargaImpresion.Click Dim Alto As Integer = 150 Dim Ancho As Integer = 150 If TxtAlto.Text.ToEntero > 0 Then Alto = TxtAlto.Text.ToEntero If TxtAncho.Text.ToEntero > 0 Then Ancho = TxtAncho.Text.ToEntero Try Dim Doc As New iTextSharp.text.Document(iTextSharp.text.PageSize.A4, 10.0F, 10.0F, 100.0F, 0F) Dim para As New iTextSharp.text.Paragraph Dim memoryStreamDoc As New System.IO.MemoryStream Dim gemBox As New clsGemBoxDocument() gemBox.AgregarImagen(GeneraCodigoQR(TxtCodigoBarrasModal.Text.Trim, Alto, Ancho, 0, DDLCodigoFormato.SelectedValue)) gemBox.GuardarStreamPDF() Dim memoryStream As New System.IO.MemoryStream(gemBox.GetBytesDocumento()) gemBox.Dispose() Response.Clear() Response.ContentType = "application/pdf" Response.AddHeader("content-disposition", $"attachment;filename=code_{TxtCodigoBarrasModal.Text.Trim}.pdf") Response.Buffer = True memoryStream.WriteTo(Response.OutputStream) Response.End() Catch ex As Exception End Try End Sub #End Region #Region "SELECTED INDEX CHANGE" Public Sub DdlClasificacion_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlClasificacion.SelectedIndexChanged If DdlClasificacion.SelectedValue.ToEntero > 0 Then If Me.CvePS <= 0 AndAlso (Not CveSATPS > 0 Or CveSATPS = 46920) Then Dim Dr = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveClasificacion={0}", DdlClasificacion.SelectedValue.ToEntero()))(0) If Dr IsNot Nothing Then DdlSATPS.SelectedValue = Dr("CveSATPS").ToString DdlSATPS.SelectedText = Dr("SATClaveProductoServicio").ToString End If End If If UsuarioActual.CveEmpresa.Contiene(72, 80) Then VerificaRequiereSerieLote() End If ' CargaClasificacionesDetalles() End If Try Dim Dr = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveClasificacion={0}", DdlClasificacion.SelectedValue.ToEntero()))(0) If Boolean.Parse(Dr("EsAcumulador").ToString) Then MostarOcultarDivTamanio(True) Else MostarOcultarDivTamanio(False) End If 'SI ES MOTOBATERIA If DdlClasificacion.SelectedValue = "20517" Then MostarOcultarDivTamanio(True) End If Catch ex As Exception OnError("Ocurrió un error al mostrar los tamaños", ex) End Try End Sub Private Sub MostarOcultarDivTamanio(Mostrar As Boolean) If Mostrar And UsuarioActual.Empresa.Funcionalidad(531) = "1" Then DvTamanio.Visible = True Else DvTamanio.Visible = False DdlTamanio.SelectedValueExist("-1") End If UpDatos.Update() End Sub Private Sub DdlTipoFactor_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlTipoFactor.SelectedIndexChanged If DdlTipoFactor.SelectedValue.Contiene("1", "2") Then 'tasa DdlIVA.Visible = True LIva.Visible = True Else DdlIVA.SelectedValue = "0" DdlIVA.Visible = False LIva.Visible = False End If End Sub Protected Sub DdlUsoClasificacion_SelectedIndexChanged(sender As Object, e As EventArgs) CargaClasificaciones() End Sub #End Region #Region "FRACCION ARANCELARIA" Protected Sub DdlFraccionArancelaria_selectedindexchange(sender As Object, e As EventArgs) If DdlFraccionArancelaria.SelectedValue.ToEntero > 0 Then LblUnidadAduana.Text = GlobalDTFraccionArancelaria().FiltraParametros($"CveFraccionArancelaria = {DdlFraccionArancelaria.SelectedValue}")(0)("ClaveSATUnidadAduanaDescripcion").ToString End If End Sub #End Region #Region " ECOMMERCE " Private Sub InicializaEcommerce() AplicaEcommerce = False If UsuarioActual.Empresa.Funcionalidad(700).ToEntero = 1 And CvePS > 0 Then 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 INSIGNIAS CargaPSInsigniasEcommerce() 'INICIALIZA PRODUCTOS IMAGENES CargarGaleriaImagenesEcommerce() 'INICIALIZA PRODUCTOS RELACIONADOS DdlEcommercePSRelacionado.setEsWebService(True) CargaPSRelacionadosEcommerce() UpEcommerce.Update() 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() 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() End Sub Private Function GuardaEcommerce() As Boolean Dim TieneError = 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 If ChkEcommerceDisponible.Checked Then If Not ValidaGuardarEcommerce() Then Return True End If End If Dim Descripcion = TxtEcommerceDescripcion.Text.Trim Dim PrecioBase = TxtEcommercePrecioBase.Text.Trim.ToDouble Dim PrecioPromocion = TxtEcommercePrecioPromocion.Text.Trim.ToDouble Dim Disponible = 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() End If Return TieneError End Function Private Function ValidaGuardarEcommerce() As Boolean Dim Retorno = True Dim Mensaje As New StringBuilder 'DESCRIPCION Dim Descripcion = 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 = 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 = 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 If Mensaje.ToString.Length > 0 Then Retorno = False Alert($"Si el producto aplica para Ecommerce es necesarios los siguientes campos:
{Mensaje.ToString}", TipoMensaje.MsgAdvertencia) End If Return Retorno End Function #End Region #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() GvEcommercePSInsignias.DataBind() UpEcommerceInsignias.Update() End Sub Protected Sub BtnEcommerceInsignias_Click(sender As Object, e As EventArgs) If Not ValidaAgregarProductosInsigniasEcommerce() Then Exit Sub End If Dim TieneError = False Dim CveInsignia = 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() If Not TieneError Then DdlEcommerceInsignia.SelectedValueExist(-1) CargaPSInsigniasEcommerce() End If End Sub Private Function ValidaAgregarProductosInsigniasEcommerce() As Boolean Dim Retorno = True Dim Mensaje As New StringBuilder 'INSIGNIA Dim CveInsignia = 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 Return Retorno End Function Protected Sub GvEcommercePSInsignias_RowDeleting(sender As Object, e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvEcommercePSInsignias.RowDeleting Dim TieneError = False Dim GvRow = 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() If Not TieneError Then CargaPSInsigniasEcommerce() End If End Sub #End Region #Region " PRODUCTOS IMAGENES " 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() 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 = "" Dim Archivo = "" Dim DirectorioTemporal = "" Dim DirectorioDestino = $"{ModExtensiones.DirectorioBaseEmpresas}Empresas\{UsuarioActual.CveEmpresa}\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 = DateTime.Now.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() 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) If (CveImagenActivoFijo > 0) Then Dim ObjEcommerce As New ClsECommerce If ObjEcommerce.ProductosImagenesRemove(CveImagenActivoFijo, UsuarioActual.CveEmpresa) Then File.Delete(String.Format("{0}Empresas\{1}\{2}", ModExtensiones.DirectorioBaseEmpresas, UsuarioActual.CveEmpresa, 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() GvEcommercePSRealacionados.DataBind() UpEcommercePSRelacionados.Update() End Sub Protected Sub BtnEcommercePSRelacionados_Click(sender As Object, e As EventArgs) If Not ValidaAgregarProductosRelacionadosEcommerce() Then Exit Sub End If Dim TieneError = False Dim CvePS = 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() If Not TieneError Then DdlEcommercePSRelacionado.SelectedValue = "-1" DdlEcommercePSRelacionado.SelectedText = "" CargaPSRelacionadosEcommerce() End If End Sub Private Function ValidaAgregarProductosRelacionadosEcommerce() As Boolean Dim Retorno = True Dim Mensaje As New StringBuilder 'PS Dim CvePS = 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 Return Retorno End Function Protected Sub GvEcommercePSRealacionados_RowDeleting(sender As Object, e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvEcommercePSRealacionados.RowDeleting Dim TieneError = False Dim GvRow = 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() If Not TieneError Then CargaPSRelacionadosEcommerce() End If End Sub #End Region #Region " BITACORA " Protected Sub LBBitacoraEcommerce_Click(sender As Object, e As EventArgs) CargaBitacoraEcommerce() End Sub Private Sub CargaBitacoraEcommerce() Dim ObjEcommerce As New ClsECommerce If ObjEcommerce.ProductosGetBitacora(CvePS, UsuarioActual.CveEmpresa) Then GvBitacoraEcommerce.DataSource = ObjEcommerce.DtResultados End If ObjEcommerce.Dispose() GvBitacoraEcommerce.DataBind() UpBitacoraEcommerce.Update() RegistraScript("$('#ModalBitacoraEcommerce').modal('show');") End Sub Protected Sub GvBitacora_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvBitacora.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then End If End Sub #End Region #End Region #Region "CLASIFICACIONES DETALLES" Protected Sub BtnAddClasificacionDetalle_Click(sender As Object, e As EventArgs) TxtClasificacionDetalle.Text = "" DdlClasificacionModal.SelectedValueExist(DdlClasificacion.SelectedValue) UpModal.Update() RegistraScript(String.Format("$('#{0}').modal('show');", "DModalClasificacion")) End Sub Protected Sub BtnAddClasificacionDetalleModal_Click(sender As Object, e As EventArgs) Dim ObjVentas As New ClsVentas If ObjVentas.AddClasificacionDetalle(TxtClasificacionDetalle.Text, DdlClasificacionModal.SelectedValue.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then If ObjVentas.GetClasificacionDetalle(-1, -1, -1, -1) Then GlobalDTClasificacionesDetalle = ObjVentas.DtResultados End If CargaClasificacionesDetalles() DdlTipoPSDes.SelectedValueExist(ObjVentas.CveClasificacionDetalle) UpDatos.Update() RegistraScript(String.Format("$('#{0}').modal('hide');", "DModalClasificacion"), "1") RegistraScript("CreaDescripcionPS();", "2") End If ObjVentas.Dispose() End Sub #End Region #Region "EXISTENCIAS" Protected Sub GVExistencias_RowDataBound(sender As Object, e As GridViewRowEventArgs) If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.DBCampo("CveAlmacen") = "" Then e.Row.CssClass = "Totales" End If If UsuarioActual.CveEmpresa = 119 Then GVExistencias.Columns(5).Visible = True End If End If End Sub Private Sub CargaExistencias() Dim ObjInventarios As New ClsInventarios() If ObjInventarios.GetExistenciasProducto(CvePS, -1, UsuarioActual.CveEmpresa, -1, FechaMovto:=DateTime.Today.AddDays(1).ToString("yyyy/MM/dd HH:mm"), ExcluyeApartados:=-1) Then If ObjInventarios.DtResultados.Rows.Count > 0 Then GVExistencias.DataSource = ObjInventarios.DtResultados Else GVExistencias.DataSource = Nothing End If End If ObjInventarios.Dispose() GVExistencias.DataBind() UpDatos.Update() End Sub #End Region Protected Sub DdlImpTipoProducto_SelectedIndexChanged(sender As Object, e As EventArgs) CargaClaveGenerica(DdlImpTipoProducto.SelectedValue) End Sub Private Sub CargaClaveGenerica(TipoProducto As String) DdlCategoriaToxicidad.Items.Clear() DdlCategoriaToxicidad.DataBind() 'para que quite el selectedvalue If TipoProducto = "019" Then DdlCategoriaToxicidad.Items.Add(New ListItem("Seleccione", "-1")) DdlCategoriaToxicidad.Items.Add(New ListItem("000 - Sin selección", "000")) DdlCategoriaToxicidad.Items.Add(New ListItem("001 - Categorías 1 y 2", "001")) DdlCategoriaToxicidad.Items.Add(New ListItem("002 - Categoría 3", "002")) DdlCategoriaToxicidad.Items.Add(New ListItem("003 - Categoría 4", "003")) DdlCategoriaToxicidad.SelectedValue = "000" ElseIf TipoProducto = "021" Then DdlCategoriaToxicidad.Items.Add(New ListItem("Seleccione", "-1")) DdlCategoriaToxicidad.Items.Add(New ListItem("000 - Sin selección", "000")) DdlCategoriaToxicidad.Items.Add(New ListItem("001 - Gasolina Menor a 92 octanos", "001")) DdlCategoriaToxicidad.Items.Add(New ListItem("002 - Gasolina Mayor o igual a 92 octanos", "002")) DdlCategoriaToxicidad.Items.Add(New ListItem("003 - Diesel", "003")) DdlCategoriaToxicidad.Items.Add(New ListItem("004 - Combustibles no fósiles", "004")) DdlCategoriaToxicidad.SelectedValue = "000" End If End Sub #Region "SECCION ALMACEN" Private Sub CreaDtSeccionAlmacen() DtSeccionAlmacen = New DataTable DtSeccionAlmacen.Columns.Add("CvePSAlmacenSeccion", GetType(Integer)) DtSeccionAlmacen.Columns.Add("CveAlmacen", GetType(Integer)) DtSeccionAlmacen.Columns.Add("Almacen", GetType(String)) DtSeccionAlmacen.Columns.Add("CveAlmacenSeccion", GetType(Integer)) DtSeccionAlmacen.Columns.Add("AlmacenSeccion", GetType(String)) End Sub Private Sub CargaGvSeccionAlmacen() Dim ObjInv As New ClsInventarios If ObjInv.GetProductosServiciosAlmacenSeccion(CvePS, -1, -1, UsuarioActual.CveEmpresa) Then GvSeccionAlmacen.DataSource = ObjInv.DtResultados DtSeccionAlmacen = ObjInv.DtResultados End If ObjInv.Dispose() GvSeccionAlmacen.DataBind() UpSeccionAlmacen.Update() End Sub Private Sub CargaCombosSeccionAlmacen() DdlAlmacen.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa) DdlAlmacen.Items.Add(New ListItem("Seleccione", "-1")) DdlAlmacen.DataBind() UpModalSeccionAlmacen.Update() End Sub Protected Sub LnkSeccionAlmacenAdd_Click(sender As Object, e As EventArgs) DdlAlmacen.SelectedIndex = 0 DdlSeccionAlmacen.SelectedIndex = 0 RegistraScript("$('#DivAddSeccionAlmacen').modal();") UpModalSeccionAlmacen.Update() End Sub 'Protected Sub LnkEditarSeccionAlmacen_Click(sender As Object, e As EventArgs) ' Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) ' DdlAlmacen.SelectedValueExist(gvRow.DataKey("CvAlmacen")) ' DdlSeccionAlmacen.SelectedValueExist(gvRow.DataKey("CveAlmacenSeccion")) ' RegistraScript("$('#DivAddSeccionAlmacen').modal();") ' UpModalSeccionAlmacen.Update() 'End Sub Protected Sub LnkRemoveSeccionAlmacen_Click(sender As Object, e As EventArgs) Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) If gvRow.DataKey("CvePSAlmacenSeccion").ToEntero > 0 Then DtSeccionAlmacen.Rows(gvRow.RowIndex)("CveAlmacen") = -1 Else DtSeccionAlmacen.Rows(gvRow.RowIndex.ToEntero).Delete() End If DtSeccionAlmacen.AcceptChanges() GvSeccionAlmacen.DataSource = DtSeccionAlmacen GvSeccionAlmacen.DataBind() UpSeccionAlmacen.Update() End Sub Protected Sub BtnAddSeccionAlmacen_Click(sender As Object, e As EventArgs) 'If DtSeccionAlmacen.FiltraParametros($"CveAlmacen = {DdlAlmacen.SelectedValue}").Rows.Count > 0 Then ' Alert("No se puede especificar el mismo almacen en dos secciones", TipoMensaje.MsgAdvertencia) ' Exit Sub 'End If Dim Row As DataRow = Nothing Row = DtSeccionAlmacen.NewRow Row("CvePSAlmacenSeccion") = -1 Row("CveAlmacen") = DdlAlmacen.SelectedValue.ToEntero Row("Almacen") = DdlAlmacen.SelectedItem.Text Row("CveAlmacenSeccion") = DdlSeccionAlmacen.SelectedValue.ToEntero Row("AlmacenSeccion") = DdlSeccionAlmacen.SelectedItem.Text DtSeccionAlmacen.Rows.Add(Row) DtSeccionAlmacen.AcceptChanges() GvSeccionAlmacen.DataSource = DtSeccionAlmacen GvSeccionAlmacen.DataBind() UpSeccionAlmacen.Update() RegistraScript("$('#DivAddSeccionAlmacen').modal('hide');") End Sub Protected Sub GvSeccionAlmacen_RowDataBound(sender As Object, e As GridViewRowEventArgs) If e.Row.RowType = DataControlRowType.DataRow Then If Not e.Row.DBCampo("CveAlmacen").ToEntero > 0 Then e.Row.Visible = False End If End If End Sub #End Region Protected Sub DdlIEPSPorcentaje_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles DdlIEPSPorcentaje.SelectedIndexChanged Select Case DdlIEPSPorcentaje.SelectedValue Case "0.09" DdlCategoriaToxicidad.SelectedValueExist("001") Case "0.07" DdlCategoriaToxicidad.SelectedValueExist("002") Case "0.06" DdlCategoriaToxicidad.SelectedValueExist("003") Case Else DdlCategoriaToxicidad.SelectedValueExist("000") End Select End Sub Protected Sub ddlMetodos_SelectedIndexChanged(sender As Object, e As EventArgs) If ddlMetodos.SelectedValue = "5" Then ChkSerie.Checked = True Else ChkSerie.Checked = False End If UpConta.Update() End Sub Protected Sub ChkSerie_CheckedChanged(sender As Object, e As EventArgs) If ElProductoTieneExistencia() Then ChkSerie.Checked = Not ChkSerie.Checked Alert("el producto no se puede cambiar la opcion, porque tiene existencia.", TipoMensaje.MsgAdvertencia) Else If ChkSerie.Checked Then ddlMetodos.SelectedValueExist("5") Else ddlMetodos.SelectedValueExist("-1") End If UpConta.Update() End If End Sub Protected Sub ChkSeccion_CheckedChanged(sender As Object, e As EventArgs) If ElProductoTieneExistencia() Then ChkSeccion.Checked = Not ChkSerie.Checked Alert("el producto no se puede cambiar la opcion, porque tiene existencia.", TipoMensaje.MsgAdvertencia) Else If ChkSeccion.Checked Then DivSeccionAlmacen.Visible = True Else DivSeccionAlmacen.Visible = False End If UpSeccionAlmacen.Update() End If End Sub Protected Sub DdlAlmacen_SelectedIndexChanged(sender As Object, e As EventArgs) DdlSeccionAlmacen.Items.Clear() DdlSeccionAlmacen.DataSource = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero) DdlSeccionAlmacen.Items.Add(New ListItem("Seleccione", "-1")) DdlSeccionAlmacen.DataBind() UpModalSeccionAlmacen.Update() End Sub Protected Sub DdlUnidadMedida_SelectedIndexChanged(sender As Object, e As EventArgs) If ElProductoTieneExistencia() Then DdlUnidadMedida.SelectedValue = CveUnidadMedida.ToString Alert("el producto no se puede cambiar la opcion, porque tiene existencia.") End If End Sub Private Function ElProductoTieneExistencia() As Boolean Dim Existencia As Decimal = 0 If CvePS > 0 Then Dim ObjInventarios As New ClsInventarios Existencia = ObjInventarios.GetExistenciasPS(CvePS, CveUnidadMedida, UsuarioActual.CveEmpresa, -1) ObjInventarios.Dispose() End If Return Existencia > 0 End Function Protected Sub ChkCaducidad_CheckedChanged(sender As Object, e As EventArgs) Dim Activar As Boolean = ChkCaducidad.Checked DivTiempoCaducidad.Visible = Activar RfvTxtTiempoCaducidad.Enabled = Activar End Sub Private Function GuardarProductoEnFranquicia(ObjPS As ClsProductosServicios, PSS As String, CveMetodoInv As Integer, EsPaquete As Integer, Agregar As Boolean) As Boolean Dim StrEmpresas As String = UsuarioActual.Empresa.Funcionalidad(563) Dim EmpresasFranquicia As List(Of Integer) = StrEmpresas.Split(","c).ToList().ConvertAll(Function(x) Convert.ToInt32(x)) For Each CveEmpresaFranquicia As Integer In EmpresasFranquicia Dim nombreEmpresa As String = GlobalDTEmpresas(CveEmpresaFranquicia).FiltroPrimeroValor("Empresa") Dim CveClasificacion As Integer = GlobalDTClasificaciones(CveEmpresa:=CveEmpresaFranquicia).FiltroPrimeroValor("CveClasificacion", String.Format("Clasificacion = '{0}'", DdlClasificacion.SelectedItem.Text)).ToEntero Dim CveUnidadMedida As Integer = GlobalDTUnidadesMedida(CveEmpresa:=CveEmpresaFranquicia).FiltroPrimeroValor("CveUnidadMedida", String.Format("UnidadMedida = '{0}'", DdlUnidadMedida.SelectedItem.Text)).ToEntero Dim CveClasificacion2 As Integer = GlobalDTClasificaciones(CveEmpresa:=CveEmpresaFranquicia).FiltroPrimeroValor("CveClasificacion", String.Format("Clasificacion = '{0}'", DdlClasificacion2.SelectedItem.Text)).ToEntero Dim CveTipo As Integer = GlobalDTClasificacionesDetalle(CveEmpresa:=CveEmpresaFranquicia).FiltroPrimeroValor("CveClasificacionDetalle", String.Format("ClasificacionDetalle = '{0}'", DdlTipoPSDes.SelectedItem.Text)).ToEntero Dim CveMarcaFranquicia As Integer = -1 If ObjPS.GetMarcas(CveEmpresaFranquicia) Then CveMarcaFranquicia = ObjPS.DtResultados.FiltroPrimeroValor("CveMarca", String.Format("Marca = '{0}'", DdlMarca.SelectedItem.Text)).ToEntero End If Dim CveModelo As Integer = -1 Dim CveMedida As Integer = -1 Dim CveRin As Integer = -1 Dim ObjGral As New ClsGenerales() If ObjGral.GetModelos(CveEmpresaFranquicia) Then CveModelo = ObjGral.DtResultados.FiltroPrimeroValor("CveModelo", String.Format("Modelo = '{0}'", DdlModelo.SelectedItem.Text)).ToEntero End If If ObjGral.GetMedidas(CveEmpresaFranquicia) Then CveMedida = ObjGral.DtResultados.FiltroPrimeroValor("CveMedida", String.Format("Medida = '{0}'", DdlMedida.SelectedItem.Text)).ToEntero End If If ObjGral.GetRimTamanios(CveEmpresaFranquicia) Then CveRin = ObjGral.DtResultados.FiltroPrimeroValor("CveRinTamaño", String.Format("RinTamaño = '{0}'", DdlRin.SelectedItem.Text)).ToEntero End If ObjGral.Dispose() If CveClasificacion <= 0 Then Alert(String.Format("La clasificación indicada no existe en la franquicia: '{0}'", nombreEmpresa), TipoMensaje.MsgAdvertencia) Return True End If If CveUnidadMedida <= 0 Then Alert(String.Format("La unidad de medida indicada no existe en la franquicia: '{0}'", nombreEmpresa), TipoMensaje.MsgAdvertencia) Return True End If If CveTipo <= 0 And DdlTipoPSDes.SelectedValue.ToEntero <> -1 Then Alert(String.Format("El tipo de producto indicado no existe en la franquicia: '{0}'", nombreEmpresa), TipoMensaje.MsgAdvertencia) Return True End If If CveMarcaFranquicia <= 0 And DdlMarca.SelectedValue.ToEntero <> -1 Then Alert(String.Format("La marca indicada no existe en la franquicia: '{0}'", nombreEmpresa), TipoMensaje.MsgAdvertencia) Return True End If If CveModelo <= 0 And DdlModelo.SelectedValue.ToEntero <> -1 Then Alert(String.Format("El modelo indicado no existe en la franquicia: '{0}'", nombreEmpresa), TipoMensaje.MsgAdvertencia) Return True End If If CveMedida <= 0 And DdlMedida.SelectedValue.ToEntero <> -1 Then Alert(String.Format("La medida indicada no existe en la franquicia: '{0}'", nombreEmpresa), TipoMensaje.MsgAdvertencia) Return True End If If CveRin <= 0 And DdlRin.SelectedValue.ToEntero <> -1 Then Alert(String.Format("El rin indicado no existe en la franquicia: '{0}'", nombreEmpresa), TipoMensaje.MsgAdvertencia) Return True End If If Agregar Then If Not ObjPS.AddPS(CveClasificacion, -1, CveUnidadMedida, TxtCodigo.Text.Trim, txtcodigo2.text.trim, TxtCodigoBarras.Text.Trim, PSS, TxtPrecio.Text.Trim.ToDouble, DdlIVA.SelectedValue.ToDouble, (TxtRetIVA.Text.Trim.ToDouble / 100), ChkInventariable.Checked, DdlProveedor.txtValue.Value.ToEntero, True, ChkAplicaParaVenta.Checked, UsuarioActual.CveUsuario, CveEmpresaFranquicia, CveMetodoInv, EsPaquete, CveTipoPS:=DdlTipoPS.SelectedValue.ToEntero, FuePorXML:=False, TipoServicio:=-1, CveClasificacion2:=CveClasificacion2, CveMarca:=CveMarcaFranquicia, AlmacenSeccion:=TxtAlmacenSeccion.Text.Trim, AplicaIEPS:=ChkAplicaIeps.Checked, IEPSPorcentaje:=DdlIEPSPorcentaje.SelectedValue.ToDecimal, CveConceptoContable:=DdlConceptoRelacionado.SelectedValue.ToEntero, CveCompuesto:=DdlCompuesto.SelectedValue.ToEntero, CveSATPS:=DdlSATPS.SelectedValue.ToEntero, IEPSGrabaIVA:=ChkIepsIVA.Checked, VentaMinima:=TxtVentaMinima.Text.ToDecimal, CveMoneda:=DdlMoneda.SelectedValue.ToEntero, RetISR:=(TxtRetISR.Text.Trim.ToDouble / 100), PrecioMinimo:=TxtPrecioMinimo.Text.ToDecimal, CveTipoFactor:=DdlTipoFactor.SelectedValue.ToEntero, CveFraccionArancelaria:=DdlFraccionArancelaria.SelectedValue.ToEntero, CveClasificacionDetalle:=CveTipo, CveTamaño:=DdlTamanio.SelectedValue.ToEntero, CveModelo:=CveModelo, CveMedida:=CveMedida, CveRinTamaño:=CveRin, ClaveImpuestoEmpaque:=DdlImpEmpaque.SelectedValue.ToString, ClaveImpuestoUM:=DdlImpUM.SelectedValue.ToString, ClaveCategoriaToxicidad:=DdlCategoriaToxicidad.SelectedValue.ToString, ClaveImpuestoTipoProducto:=DdlImpTipoProducto.SelectedValue.ToString, EsOutSourcing:=ChkEsOutSourcing.Checked, TiempoCaducidad:=TxtTiempoCaducidad.Text.ToEntero()) > 0 Then 'Alert(String.Format("Error al agregar el nuevo producto en la franquicia: '{0}'", GlobalDTEmpresas(Franquicia).FiltroPrimeroValor("Empresa"))) Return True End If Else If ObjPS.GetPS(-1, -1, CveEmpresaFranquicia, Codigo:=TxtCodigo.Text.Trim.ToUpper) Then Dim CvePS As Integer = ObjPS.DtResultados.FiltroPrimeroValor("CvePS", String.Format(" Codigo = '{0}'", TxtCodigo.Text.Trim.ToUpper)).ToEntero() If Not ObjPS.UpdatePS(CveClasificacion, -1, CveUnidadMedida, TxtCodigo.Text.Trim, txtcodigo2.text.trim, TxtCodigoBarras.Text.Trim, PSS, TxtPrecio.Text.Trim.ToDouble, DdlIVA.SelectedValue.ToDouble, (TxtRetIVA.Text.Trim.ToDouble / 100), ChkInventariable.Checked, -1, True, ChkAplicaParaVenta.Checked, ChkEstado.Checked, UsuarioActual.CveUsuario, CvePS, CveMetodoInv, EsPaquete, DdlSATPS.SelectedValue.ToEntero, CveTipoPS:=DdlTipoPS.SelectedValue.ToEntero, TipoServicio:=-1, CveClasificacion2:=CveClasificacion2, CveMarca:=CveMarcaFranquicia, AlmacenSeccion:=TxtAlmacenSeccion.Text.Trim, AplicaIEPS:=ChkAplicaIeps.Checked, IEPSPorcentaje:=DdlIEPSPorcentaje.SelectedValue.ToDecimal, CveConceptoContable:=DdlConceptoRelacionado.SelectedValue.ToEntero, CveCompuesto:=DdlCompuesto.SelectedValue.ToEntero, IEPSGrabaIVA:=ChkIepsIVA.Checked, VentaMinima:=TxtVentaMinima.Text.ToDecimal, CveMoneda:=DdlMoneda.SelectedValue.ToEntero, RetISR:=(TxtRetISR.Text.Trim.ToDouble / 100), PrecioMinimo:=TxtPrecioMinimo.Text.ToDecimal, CveTipoFactor:=DdlTipoFactor.SelectedValue.ToEntero, CveFraccionArancelaria:=DdlFraccionArancelaria.SelectedValue.ToEntero, CveUsuarioModifico:=UsuarioActual.CveUsuario, CveClasificacionDetalle:=CveTipo, CveTamaño:=DdlTamanio.SelectedValue.ToEntero, CveModelo:=CveModelo, CveMedida:=CveMedida, CveRinTamaño:=CveRin, ClaveImpuestoEmpaque:=DdlImpEmpaque.SelectedValue.ToString, ClaveImpuestoUM:=DdlImpUM.SelectedValue.ToString, ClaveCategoriaToxicidad:=DdlCategoriaToxicidad.SelectedValue.ToString, ClaveImpuestoTipoProducto:=DdlImpTipoProducto.SelectedValue.ToString, EsOutSourcing:=ChkEsOutSourcing.Checked, AplicaSerie:=ChkSerie.Checked, AplicaLote:=ChkLote.Checked, AplicaCaducidad:=ChkCaducidad.Checked, AplicaSeccion:=ChkSeccion.Checked, TiempoCaducidad:=TxtTiempoCaducidad.Text.ToEntero()) Then Return True End If Else Alert(String.Format("El producto no existe en la franquicia: '{0}'", GlobalDTEmpresas(CveEmpresaFranquicia).FiltroPrimeroValor("Empresa")), TipoMensaje.MsgAdvertencia) Return True End If End If Next Return False End Function Private Function GuardarProductosEquivalenteEnFranquicia(ObjPS As ClsProductosServicios, Agregar As Boolean, Optional PSAdicionalAnterior As String = "") As Boolean If UsuarioActual.Empresa.Funcionalidad(563) <> "" Then Dim StrEmpresas As String = UsuarioActual.Empresa.Funcionalidad(563) Dim EmpresasFranquicia As List(Of Integer) = StrEmpresas.Split(","c).ToList().ConvertAll(Function(x) Convert.ToInt32(x)) For Each Franquicia As Integer In EmpresasFranquicia Dim CvePSPagina As Integer = GlobalDTPS(Franquicia).FiltroPrimeroValor("CvePS", String.Format("Codigo = '{0}'", TxtCodigo.Text.Trim)).ToEntero Dim CvePSAdicional As Integer = GlobalDTPS(Franquicia).FiltroPrimeroValor("CvePS", String.Format("PS = '{0}'", DdlPSAdicional.SelectedItem.Text)).ToEntero If CvePSPagina <= 0 Then Alert(String.Format("El producto de la página no existe en la franquicia: '{0}'", GlobalDTEmpresas(Franquicia).FiltroPrimeroValor("Empresa")), TipoMensaje.MsgAdvertencia) End If If CvePSAdicional <= 0 Then Alert(String.Format("El producto adicional no existe en la franquicia: '{0}'", GlobalDTEmpresas(Franquicia).FiltroPrimeroValor("Empresa")), TipoMensaje.MsgAdvertencia) End If If Agregar Then If Not ObjPS.AddPSAdicionales(CvePSPagina, CvePSAdicional, If(TxtCantidadPSAdicional.Visible, TxtCantidadPSAdicional.Text.ToDecimal, 0)) Then Return True End If Else Dim CvepsAdicionalAnt As Integer = GlobalDTPS(Franquicia).FiltroPrimeroValor("CvePS", String.Format("PS = '{0}'", PSAdicionalAnterior)).ToEntero If CvepsAdicionalAnt <= 0 Then Alert(String.Format("El producto adicional no existe en la franquicia: '{0}'", GlobalDTEmpresas(Franquicia).FiltroPrimeroValor("Empresa")), TipoMensaje.MsgAdvertencia) Else If Not ObjPS.UpdatePSAdicionales(CvePSPagina, CvePSAdicional, CvepsAdicionalAnt, If(TxtCantidadPSAdicional.Visible, TxtCantidadPSAdicional.Text.ToDecimal, 0)) Then Return True End If End If End If Next End If Return False End Function Private Function EliminarProductosEquivalenteEnFranquicia(ObjPS As ClsProductosServicios, PSAdicional As String) As Boolean If UsuarioActual.Empresa.Funcionalidad(563) <> "" Then Dim StrEmpresas As String = UsuarioActual.Empresa.Funcionalidad(563) Dim EmpresasFranquicia As List(Of Integer) = StrEmpresas.Split(","c).ToList().ConvertAll(Function(x) Convert.ToInt32(x)) For Each Franquicia As Integer In EmpresasFranquicia Dim CvepsAdicional As Integer = GlobalDTPS(Franquicia).FiltroPrimeroValor("CvePS", String.Format("PS = '{0}'", PSAdicional)).ToEntero Dim CvePSPagina As Integer = GlobalDTPS(Franquicia).FiltroPrimeroValor("CvePS", String.Format("Codigo = '{0}'", TxtCodigo.Text.Trim)).ToEntero If Not ObjPS.RemovePSAdicionales(CvePSPagina, CvepsAdicional) Then Return True End If Next End If Return False End Function End Class