Files
SIG/Ventas/ProductosServicios.aspx.vb
2023-09-11 09:28:16 -07:00

3325 lines
153 KiB
VB.net
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
Private Property GeneraServicioAF As Integer
Get
Return IfNull(ViewState("GeneraServicioAF"), "-1", ViewState("GeneraServicioAF")).ToString().ToEntero()
End Get
Set(value As Integer)
ViewState("GeneraServicioAF") = value
End Set
End Property
#End Region
Private ReadOnly Property PermiteClasificacion2 As Boolean
Get
Return (UsuarioActual.CveEmpresa.Contiene(1, 72, 80, 119))
End Get
End Property
#Region " PROPIEDADES ECOMMERCE "
''' <summary>
''' Si es True existe en Eco_Produtcos
''' </summary>
''' <returns></returns>
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
#Region "Material peligroso"
Property ValidaMaterialPeligrosoMensaje As Boolean
Get
If ViewState("ValidaMaterialPeligroso") Is Nothing Then
ViewState("ValidaMaterialPeligroso") = False
End If
Return Boolean.Parse(ViewState("ValidaMaterialPeligroso").ToString)
End Get
Set(value As Boolean)
ViewState("ValidaMaterialPeligroso") = 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
If UsuarioActual.Empresa.Funcionalidad(143) = "1" Then
DivRegistroRSCO1.Visible = True
DivRegistroRSCO2.Visible = True
DivRegistroRSCO3.Visible = True
TxtRegistroRSCO.Text = ""
TxtFechaVigenciaRSCO.Text = ""
ChkFechaIndeterminadaRSCO.Checked = False
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()
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 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.Empresa.Funcionalidad(558) = "1" Then
'DivDatos.Attributes("class") = "col-md-12"
DivDdlTipo.Visible = True
'DdlTipoPSDes.Attributes.Add("onChange", "CreaDescripcionPS();")
End If
If UsuarioActual.CveEmpresa.Contiene(72, 80) Then
TxtPS.CssClass = "form-control Mayuscula"
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 = $"<script>function setPoscicion(){{{posiciontipo}}}</script>"
If Not CvePS > 0 Then MuestraPanel(True)
If Request("GeneraServicioAF") IsNot Nothing AndAlso IsNumeric(Request("GeneraServicioAF")) AndAlso Request("GeneraServicioAF").ToEntero() = 1 Then
GeneraServicioAF = 1
TxtPS.Text = "Servicio de facturación de activos fijos"
DdlTipoPS.SelectedValueExist("1")
DdlTipoPS.Enabled = False
ChkAplicaParaVenta.Checked = True
Dim DrSAT As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, SATClavePS:="84111506", AplicaParaVenta:=1).FiltroPrimero("") ', SATClavePS:=CveSATNC
DdlSATPS.SelectedValue = DrSAT("CveSATPS").ToString()
DdlSATPS.SelectedText = DrSAT("SATClaveProductoServicio").ToString()
End If
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)
If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then
DivPSAdicionalVigencia.Visible = True
divCodigo2.Visible = True
divLitraje.Visible = True
DivClasificacion2.Visible = True
CargaPSAdicionalesVigencias()
End If
divPrecio.Visible = UsuarioActual.Empresa.Funcionalidad(404) = "" ' si tiene lista de precio, se oculta el precio por ps
If UsuarioActual.CveEmpresa = 1 Then
divPrecio.Visible = True
End If
If UsuarioActual.Empresa.Funcionalidad(713) = "1" Then '' empresa deduce IEPS
divIEPS.Visible = True
End If
If UsuarioActual.CveEmpresa.Contiene(1, 13) Then
DivPSAdicionalVigencia.Visible = True
LtlPSAdicionalVigencia.Text = "Producto Relacionado:"
CargaPSAdicionalesVigencias()
End If
'Nuevo R: 26/09/2017
CargaProveedores()
CargarCompuestos()
CargaPS()
'ChangeDdl()
CargaDdlSATPS()
CargaDdlFraccionArancelaria()
CveSATPS = -1
CargaCombosSeccionAlmacen()
DdlObjetoImpuesto.DataSource = GlobalDTSATObjetosImpuestos
DdlObjetoImpuesto.DataBind()
DdlObjetoImpuesto.SelectedValue = "2" 'se sugiere este valor, que sería el más utilizado
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
'Nueva funcionalidad MLopez: 18/11/2022 -- Empresa Citrícola
If UsuarioActual.Empresa.Funcionalidad(267) = "1" Then
DivCitricos.Visible = True
CargaPanelCitricos()
End If
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 CargaPanelCitricos()
DdlEmpacado.DataSource = GlobalDTGralEmpacados(UsuarioActual.CveEmpresa)
DdlTipoOrganico.DataSource = GlobalDTGralTipoOrganicos(UsuarioActual.CveEmpresa)
DdlEmpacado.DataBind()
DdlTipoOrganico.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) = Nothing
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("<i class='fa fa-sort-asc' style='color:#999' ></i>")
Else
ViewState(String.Format("O{0}", Campo, gvi)) = String.Format("{0} DESC", Campo)
Literal.Text = String.Format("<i class='fa fa-sort-desc' style='color:#999' ></i>")
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 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
If ObjProductosServicios.CveMaterialPeligroso > 0 Then
DdlMaterialPeligroso.SelectedValue = ObjProductosServicios.CveMaterialPeligroso.ToString
DdlMaterialPeligroso.SelectedText = GlobalDTMaterialPeligroso(ObjProductosServicios.CveMaterialPeligroso).FiltroPrimeroValor("ClaveMaterialPeligrosoDescripcion")
End If
If ObjProductosServicios.CveEmbalaje > 0 Then
DdlEmbalaje.SelectedValue = ObjProductosServicios.CveEmbalaje.ToString
DdlEmbalaje.SelectedText = GlobalDTEmbalajes(ObjProductosServicios.CveEmbalaje).FiltroPrimeroValor("ClaveEmbalajeDescripcion")
End If
If ObjProductosServicios.PesoKg > 0 Then
TxtPesoKg.Text = ObjProductosServicios.PesoKg.ToString
End If
TxtDimensiones.Text = ObjProductosServicios.Dimensiones
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
TxtLitraje.Text = ObjProductosServicios.DtResultados.Rows(0)("Litraje").ToString
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
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)
DdlObjetoImpuesto.SelectedValueExist(ObjProductosServicios.DtResultados.Rows(0)("CveObjetoImpuesto").ToString)
'If ObjProductosServicios.CvePSAdicional > 0 Then
' DdlPSAdicional.SelectedValue = ObjProductosServicios.CvePSAdicional.ToString
' DdlPSAdicional.SelectedText = ObjProductosServicios.PSCodigoAdicional
'Else
' DdlPSAdicional.SelectedValue = "-1"
' DdlPSAdicional.SelectedText = "Seleccione"
'End If
DdlEmpacado.SelectedValueExist(ObjProductosServicios.DtResultados.Rows(0)("CveTipoEmpacado").ToString)
DdlTipoOrganico.SelectedValueExist(ObjProductosServicios.DtResultados.Rows(0)("CveTipoOrganico").ToString)
Try
DdlClasificacion_SelectedIndexChanged(DdlClasificacion, Nothing)
DdlTamanio.SelectedValueExist(ObjProductosServicios.DtResultados.Rows(0)("CveTamaño").ToString)
If DdlTamanio.SelectedValue.ToEntero() > 0 Then
Dim Dr As DataRow = 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
TxtTiempoCaducidad.Text = ObjProductosServicios.DtResultados.Rows(0)("TiempoCaducidad").ToString()
DivTiempoCaducidad.Visible = ChkCaducidad.Checked
If ObjProductosServicios.AplicaSeccion Then
CargaGvSeccionAlmacen()
DivSeccionAlmacen.Visible = True
End If
CargaCaracteristicas()
LnkUnificar.Visible = True
ChkPrecioLibre.Checked = ObjProductosServicios.PrecioLibre
If UsuarioActual.Empresa.Funcionalidad(143) = "1" Then
TxtRegistroRSCO.Text = ObjProductosServicios.DtResultados.Rows(0)("RegistroRSCO").ToString
ChkFechaIndeterminadaRSCO.Checked = Boolean.Parse(ObjProductosServicios.DtResultados.Rows(0)("VigenciaIndeterminadaRSCO").ToString)
DivRegistroRSCO1.Visible = True
DivRegistroRSCO2.Visible = True
If ChkFechaIndeterminadaRSCO.Checked Then
TxtFechaVigenciaRSCO.Text = "01/01/1900"
Else
TxtFechaVigenciaRSCO.Text = ObjProductosServicios.DtResultados.Rows(0)("FechaVigenciaRSCO").ToString.ToDate.ToString("dd/MM/yyyy")
DivRegistroRSCO3.Visible = True
If TxtFechaVigenciaRSCO.Text = "01/01/1900" Then
TxtFechaVigenciaRSCO.Text = ""
End If
End If
Else
TxtRegistroRSCO.Text = ""
TxtFechaVigenciaRSCO.Text = ""
ChkFechaIndeterminadaRSCO.Checked = False
End If
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")
If UsuarioActual.Empresa.Funcionalidad(161) = "1" Then
divCartaPorte.Visible = True
DdlMaterialPeligroso.setEsWebService(True)
DdlMaterialPeligroso.Attributes.Add("data-metodo", "getsatmatpeligroso")
DdlEmbalaje.setEsWebService(True)
DdlEmbalaje.Attributes.Add("data-metodo", "getsatembalajes")
End If
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 DdlFraccionArancelaria.SelectedValue.ToEntero > 0 AndAlso TxtCodigo.Text.Trim.Length = 0 Then
Alert("El campo Numero de Parte / Código es requerido (al seleccionar una Fracción Arancelaria el campo Numero de Parte / Código se vuelve requerido).", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
If DdlSATPS.txtValue.Value.ToEntero > 0 Then
If UsuarioActual.Empresa.Funcionalidad(161) = "1" Then ' si tiene activada la carta porte
If Not ValidaMaterialPeligrosoMensaje Then
ValidaMaterialPeligroso(DdlSATPS.txtValue.Value.ToEntero)
Exit Sub
End If
End If
End If
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 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 As DataRow = 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 ObjEmpresas As New ClsSisEmpresas(ObjProductosServicios.IniciaTransacSQL())
Dim TieneError As Boolean = False
Dim AccionJS As String = ""
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 TxtFechaVigenciaRSCO.Text = "" Then
TxtFechaVigenciaRSCO.Text = "01/01/1900"
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,
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(),
CveTipoEmpacado:=DdlEmpacado.SelectedValue.ToEntero(), CveTipoOrganico:=DdlTipoOrganico.SelectedValue.ToEntero(),
ClaveImpuestoEmpaque:=DdlImpEmpaque.SelectedValue.ToString, ClaveImpuestoUM:=DdlImpUM.SelectedValue.ToString, ClaveCategoriaToxicidad:=DdlCategoriaToxicidad.SelectedValue.ToString,
ClaveImpuestoTipoProducto:=DdlImpTipoProducto.SelectedValue.ToString,
AplicaSerie:=ChkSerie.Checked, AplicaLote:=ChkLote.Checked, AplicaCaducidad:=ChkCaducidad.Checked, AplicaSeccion:=ChkSeccion.Checked, TiempoCaducidad:=TiempoCaducidad,
CvePSAdicionalVigencia:=DdlPSAdicionalVigencia.SelectedValue.ToEntero(), PrecioLibre:=ChkPrecioLibre.Checked,
CveMaterialPeligroso:=DdlMaterialPeligroso.SelectedValue.ToEntero, CveEmbalaje:=DdlEmbalaje.SelectedValue.ToEntero, PesoKg:=TxtPesoKg.Text.ToDecimal, Dimensiones:=TxtDimensiones.Text.Trim,
CveObjetoImpuesto:=DdlObjetoImpuesto.SelectedValue.ToEntero, Litraje:=TxtLitraje.Text.ToDecimal, RegistroRSCO:=TxtRegistroRSCO.Text, FechaVigenciaRSCO:=TxtFechaVigenciaRSCO.Text.ToDate, VigenciaIndeterminadaRSCO:=ChkFechaIndeterminadaRSCO.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
If GeneraServicioAF = 1 Then
Dim RowFuncionalidad380 As DataRow = Nothing
If ObjEmpresas.GetEmpresasFuncionalidades(UsuarioActual.CveEmpresa) Then
RowFuncionalidad380 = ObjEmpresas.DtResultados.FiltroPrimero("CveFuncionalidad = 380")
Else
TieneError = True
End If
'SI NO TIENE LA FUNCIONALIDAD 380 GUARDAR LA FUNCIONALIDAD
If Not TieneError AndAlso RowFuncionalidad380 Is Nothing Then
If Not ObjEmpresas.AddUpdateEmpresaFuncionalidades(UsuarioActual.CveEmpresa, 380, $"{Me.CvePS}") Then
TieneError = True
End If
End If
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 'RMF.2021.07.30, se comentó, por no entender la validaci´n, y nodeja limpiar codigos
' 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,
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(),
CveTipoEmpacado:=DdlEmpacado.SelectedValue.ToEntero(), CveTipoOrganico:=DdlTipoOrganico.SelectedValue.ToEntero(),
ClaveImpuestoEmpaque:=DdlImpEmpaque.SelectedValue.ToString, ClaveImpuestoUM:=DdlImpUM.SelectedValue.ToString, ClaveCategoriaToxicidad:=DdlCategoriaToxicidad.SelectedValue.ToString,
ClaveImpuestoTipoProducto:=DdlImpTipoProducto.SelectedValue.ToString,
AplicaSerie:=ChkSerie.Checked, AplicaLote:=ChkLote.Checked, AplicaCaducidad:=ChkCaducidad.Checked, AplicaSeccion:=ChkSeccion.Checked, TiempoCaducidad:=TiempoCaducidad, CvePSAdicionalVigencia:=DdlPSAdicionalVigencia.SelectedValue.ToEntero(), PrecioLibre:=ChkPrecioLibre.Checked,
CveMaterialPeligroso:=DdlMaterialPeligroso.SelectedValue.ToEntero, CveEmbalaje:=DdlEmbalaje.SelectedValue.ToEntero, PesoKg:=TxtPesoKg.Text.ToDecimal, Dimensiones:=TxtDimensiones.Text.Trim,
CveObjetoImpuesto:=DdlObjetoImpuesto.SelectedValue.ToEntero, Litraje:=TxtLitraje.Text.ToDecimal,
RegistroRSCO:=TxtRegistroRSCO.Text, FechaVigenciaRSCO:=TxtFechaVigenciaRSCO.Text.ToDate, VigenciaIndeterminadaRSCO:=ChkFechaIndeterminadaRSCO.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." + If(GeneraServicioAF = 1, " Recargue la pagina de ventas para poder utilizar el servicio", ""), 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 As Boolean = False
If ObjAliasAdd.AddPSAlias(TxtAlias.Text.ToString, CvePS, False, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) 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
DdlMarca.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa)
DdlMarcaPSDes.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa)
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()
divRowRSCO.Visible = True
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, Estatus:=-1)
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 ErrorUnificacion As Boolean = False
Dim ObjPS As New ClsProductosServicios
ObjPS.IniciaTransacSQL()
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)
ErrorUnificacion = True
End If
If ErrorUnificacion Then
ObjPS.RollBack()
Else
ObjPS.Commit()
End If
ObjPS.Dispose()
If Not ErrorUnificacion Then
RecargaGlobal()
RegistraScript("$('#DivUnificar').modal('hide');")
UpDatos.Update()
End If
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 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
If DdlClasificacion.SelectedValue.ToEntero > 0 Then
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 If
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().CopyToDataTable.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 <b>Descripción</b> es obligatorio. Por favor introduzcalo y vuelva a intentar. <br>")
End If
If Descripcion.Length > 255 Then
Mensaje.Append("- El campo <b>Descripción</b> admite maximo 255 caracteres. Por favor verifique y vuelva a intentar. <br>")
End If
'PRECIO BASE
Dim PrecioBase = TxtEcommercePrecioBase.Text.Trim.ToDouble
If PrecioBase = 0 Then
Mensaje.Append("- El campo <b>Precio</b> es obligatorio. Por favor verifique y vuelva a intentar. <br>")
End If
If PrecioBase < 0 Then
Mensaje.Append("- El campo <b>Precio</b> no puede ser negativo. Por favor verifique y vuelva a intentar. <br>")
End If
'PRECIO FINAL
Dim PrecioPromocion = TxtEcommercePrecioPromocion.Text.Trim.ToDouble
If PrecioPromocion < 0 Then
Mensaje.Append("- El campo <b>Precio Final</b> no puede ser negativo. Por favor verifique y vuelva a intentar. <br>")
End If
'VALIDACION
If Mensaje.ToString.Length > 0 Then
Retorno = False
Alert($"Si el producto aplica para Ecommerce es necesarios los siguientes campos: <br>{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 <b>Insignia</b> es obligatorio. Por favor introduzcalo y vuelva a intentar. <br>")
End If
For Each GvRow As GridViewRow In GvEcommercePSInsignias.Rows
If GvRow.DataKey("CveInsignia").ToString.ToEntero = CveInsignia Then
Mensaje.Append($"- La Insignia <b>{DdlEcommerceInsignia.SelectedItem.Text}</b> ya es parte del producto y no se puede duplicar. Por favor verifique y vuelva a intentar. <br>")
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 = $"{UsuarioActual.Empresa.Ruta}\Ecommerce\Productos\Imagenes\"
If Not Directory.Exists(DirectorioDestino) Then
Directory.CreateDirectory(DirectorioDestino)
End If
Dim ObjEcommerce As New ClsECommerce
For Each FileItem As Archivo In FilesGral
Archivo = 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}{1}", UsuarioActual.Empresa.Ruta, ObjEcommerce.DtResultados.Rows(0)("URL")))
CargarGaleriaImagenesEcommerce()
RegistraScript("initcarusel();")
End If
ObjEcommerce.Dispose()
End If
End Sub
#End Region
#Region " PRODUCTOS RELACIONADOS "
Private Sub CargaPSRelacionadosEcommerce()
Dim ObjEcommerce As New ClsECommerce
If ObjEcommerce.ProductosRelacionadosGet(CvePS, UsuarioActual.CveEmpresa) Then
GvEcommercePSRealacionados.DataSource = ObjEcommerce.DtResultados
Else
GvEcommercePSRealacionados.DataSource = Nothing
End If
ObjEcommerce.Dispose()
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 <b>Producto</b> es obligatorio. Por favor introduzcalo y vuelva a intentar. <br>")
End If
For Each GvRow As GridViewRow In GvEcommercePSRealacionados.Rows
If GvRow.DataKey("CvePS").ToString.ToEntero = CvePS Then
Mensaje.Append($"- El producto <b>{DdlEcommercePSRelacionado.SelectedText}</b> ya esta relacionado y no se puede duplicar. Por favor verifique y vuelva a intentar. <br>")
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(UsuarioActual.CveEmpresa) = Nothing
'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,
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,
CveObjetoImpuesto:=DdlObjetoImpuesto.SelectedValue.ToEntero,
ClaveImpuestoUM:=DdlImpUM.SelectedValue.ToString, ClaveCategoriaToxicidad:=DdlCategoriaToxicidad.SelectedValue.ToString, ClaveImpuestoTipoProducto:=DdlImpTipoProducto.SelectedValue.ToString,
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,
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,
CveObjetoImpuesto:=DdlObjetoImpuesto.SelectedValue.ToEntero,
ClaveImpuestoUM:=DdlImpUM.SelectedValue.ToString, ClaveCategoriaToxicidad:=DdlCategoriaToxicidad.SelectedValue.ToString, ClaveImpuestoTipoProducto:=DdlImpTipoProducto.SelectedValue.ToString,
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
GlobalDTPSSimplificado(CveEmpresaFranquicia) = Nothing
GlobalDTProductosServiciosEquivalencias(-1, -1, CveEmpresaFranquicia) = Nothing
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
Sub ValidaMaterialPeligroso(CveSATPS As Integer)
Dim EsPeligroso As Boolean = False
Dim ObjGrales As New ClsGenerales
If ObjGrales.GetSATProductosServicios(CveSATPS:=CveSATPS) Then
Dim DTDatos As New DataTable
DTDatos = ObjGrales.DtResultados.FiltraParametros($" CveSATPS= {CveSATPS}")
'Es material Peligros
If DTDatos.Rows(0)("EsPeligroso").ToString.ToEntero = 1 Then
If DdlMaterialPeligroso.txtValue.Value.ToEntero > 0 And DdlEmbalaje.txtValue.Value.ToEntero > 0 And TxtPesoKg.Text.Trim.Length > 0 Then
ValidaMaterialPeligrosoMensaje = True
Else
RegistraScript("$('#DivModalMensaje').modal('show');")
ValidaMaterialPeligrosoMensaje = False
LblModalMensajeCuerpo.Text = "El producto servicio del SAT seleccionado esta clasificado como material peligroso, favor de llenar los datos de la sección carta porte en la pestaña Contabilidad - Inventarios."
UPModalMensaje.Update()
End If
Else
'No es matgerial peligroso
If DdlMaterialPeligroso.txtValue.Value.ToEntero > 0 Or DdlEmbalaje.txtValue.Value.ToEntero > 0 Then
RegistraScript("$('#DivModalMensaje').modal('show');")
ValidaMaterialPeligrosoMensaje = False
LblModalMensajeCuerpo.Text = "El producto servicio del SAT seleccionado no esta clasificado como material peligroso, favor de limpiar los datos de la sección carta porte en la pestaña Contabilidad - Inventarios, el incluir estos datos en un material no peligroso generara errores al timbrar traslados."
UPModalMensaje.Update()
Else
ValidaMaterialPeligrosoMensaje = True
End If
End If
End If
ObjGrales.Dispose()
If ValidaMaterialPeligrosoMensaje Then
BtnGuardar_Click(Nothing, Nothing)
End If
'Return Respuesta
End Sub
Protected Sub BtnmodalMensajeOK_Click(sender As Object, e As EventArgs)
ValidaMaterialPeligrosoMensaje = True
RegistraScript("$('#DivPersonalizar').modal('hide');")
BtnGuardar_Click(Nothing, Nothing)
End Sub
Protected Sub LnkCPLimpiarConfiguracion_Click(sender As Object, e As EventArgs)
DdlMaterialPeligroso.txtText.Value = ""
DdlMaterialPeligroso.txtValue.Value = ""
DdlEmbalaje.txtText.Value = ""
DdlEmbalaje.txtValue.Value = ""
UpCartaPorte.Update()
End Sub
Protected Sub ChkFechaIndeterminadaRSCO_CheckedChanged(sender As Object, e As EventArgs)
DivRegistroRSCO3.Visible = If(ChkFechaIndeterminadaRSCO.Checked, False, True)
If TxtFechaVigenciaRSCO.Text = "01/01/1900" Then
TxtFechaVigenciaRSCO.Text = ""
End If
UpDatos.Update()
End Sub
End Class