Option Explicit On Option Strict On Imports System.Data Imports Extensiones Imports System.IO Imports Microsoft.Reporting.WebForms 'Imports DocumentFormat.OpenXml.Wordprocessing Partial Class Inventarios_RecepcionUsados Inherits ClsPaginas #Region "Propiedades" Private _dtDatos As DataTable Public Property DtMovimientos() As DataTable Get Return CType(ViewState("DtMovimientos"), DataTable) End Get Set(value As DataTable) ViewState("DtMovimientos") = value End Set End Property Private Property ConsecutivoVenta As Integer Get Return ViewState("ConsecutivoVenta").ToString.ToEntero End Get Set(value As Integer) ViewState("ConsecutivoVenta") = value End Set End Property Public Property DtTamaños() As DataTable Get Return CType(ViewState("DtTamaños"), DataTable) End Get Set(value As DataTable) ViewState("DtTamaños") = value End Set End Property Public Property DtMovimientosEntradaInvFisico() As DataTable Get Return CType(ViewState("DtMovimientosEntradaInvFisico"), DataTable) End Get Set(value As DataTable) ViewState("DtMovimientosEntradaInvFisico") = value End Set End Property Public Property DtMovimientosSalidaInvFisico() As DataTable Get Return CType(ViewState("DtMovimientosSalidaInvFisico"), DataTable) End Get Set(value As DataTable) ViewState("DtMovimientosSalidaInvFisico") = value End Set End Property Public Property CveMovimiento() As Integer Get Return ViewState("CveMovimiento").ToString.ToEntero End Get Set(value As Integer) ViewState("CveMovimiento") = value End Set End Property Private Property DtMov As DataTable Get Return CType(ViewState("DtMov"), DataTable) End Get Set(value As DataTable) ViewState("DtMov") = value End Set End Property Public Property CveCompra() As Integer Get Return ViewState("CveCompra").ToString.ToEntero End Get Set(value As Integer) ViewState("CveCompra") = value End Set End Property 'Public Property CveConcepto() As Integer ' Get ' Return ViewState("CveConcepto").ToString.ToEntero ' End Get ' Set(value As Integer) ' ViewState("CveConcepto") = value ' End Set 'End Property Public Property Folio() As Integer Get Return ViewState("Folio").ToString.ToEntero End Get Set(value As Integer) ViewState("Folio") = value End Set End Property Public Property CveMovimientoRelacionado As Integer Get Return ViewState("CveMovimientoRelacionado").ToString.ToEntero End Get Set(value As Integer) ViewState("CveMovimientoRelacionado") = value End Set End Property Public Property ConceptoRelacionado As String Get Return ViewState("ConceptoRelacionado").ToString End Get Set(value As String) ViewState("ConceptoRelacionado") = value End Set End Property Public Property FolioRelacionado As Integer Get Return ViewState("FolioRelacionado").ToString.ToEntero End Get Set(value As Integer) ViewState("FolioRelacionado") = value End Set End Property Public Property TieneRelacionado As Integer Get Return ViewState("TieneRelacionado").ToString.ToEntero End Get Set(value As Integer) ViewState("TieneRelacionado") = value End Set End Property Public Property EstatusAlmacenCompra As Integer Get Return ViewState("EstatusAlmacenCompra").ToString.ToEntero End Get Set(value As Integer) ViewState("EstatusAlmacenCompra") = value End Set End Property Public Property TieneSalida As Boolean Get Return CBool(ViewState("TieneSalida").ToString) End Get Set(value As Boolean) ViewState("TieneSalida") = value End Set End Property Private Property DtBitacora As DataTable Get Return CType(ViewState("DtBitacora"), DataTable) End Get Set(value As DataTable) ViewState("DtBitacora") = value End Set End Property Private Property CvePSSerieLote As Integer Get Return CType(ViewState("CvePSSerieLote"), Integer) End Get Set(value As Integer) ViewState("CvePSSerieLote") = value End Set End Property Private Property PSSerieLote As String Get Return CType(ViewState("PSSerieLote"), String) End Get Set(value As String) ViewState("PSSerieLote") = value End Set End Property Private Property CveUMSerieLote As Integer Get Return CType(ViewState("CveUMSerieLote"), Integer) End Get Set(value As Integer) ViewState("CveUMSerieLote") = value End Set End Property Private Property UMSerieLote As String Get Return CType(ViewState("UMSerieLote"), String) End Get Set(value As String) ViewState("UMSerieLote") = value End Set End Property Private Property CostoPromedioSerieLote As Double Get Return CType(ViewState("CostoPromedioSerieLote"), Double) End Get Set(value As Double) ViewState("CostoPromedioSerieLote") = value End Set End Property Public Property EsConsumoInterno As Boolean Get Return CBool(ViewState("EsConsumoInterno").ToString) End Get Set(value As Boolean) ViewState("EsConsumoInterno") = value End Set End Property Private Property FolioAsignado As Integer Get Return CType(ViewState("FolioAsignado"), Integer) End Get Set(value As Integer) ViewState("FolioAsignado") = value End Set End Property Private Property CveRemisionRecibida As Integer Get Return IfNull(ViewState("CveRemisionRecibida"), -1, CType(ViewState("CveRemisionRecibida"), Integer)).ToString().ToEntero() End Get Set(value As Integer) ViewState("CveRemisionRecibida") = value End Set End Property Private Property EsDistribuidor As Boolean Get Return CBool(IfNull(ViewState("EsDistribuidor"), False, CBool(ViewState("EsDistribuidor")))) End Get Set(value As Boolean) ViewState("EsDistribuidor") = value End Set End Property Private ReadOnly Property CveConcepto As Integer Get Return RBLOpcion.SelectedValue.ToEntero End Get End Property Public Property AgregarUsado As Boolean Get If ViewState("AgregarUsado") Is Nothing Then Return True Else Return Boolean.Parse(ViewState("AgregarUsado").ToString) End If End Get Set(value As Boolean) ViewState("AgregarUsado") = value End Set End Property Private Property IndexDTUsado As Integer Get Return CType(ViewState("IndexDTUsado"), Integer) End Get Set(value As Integer) ViewState("IndexDTUsado") = value End Set End Property Private Property Correo As String Get Return CType(ViewState("Correo"), String) End Get Set(value As String) ViewState("Correo") = value End Set End Property Private Property FolioCorreo As String Get Return CType(ViewState("FolioCorreo"), String) End Get Set(value As String) ViewState("FolioCorreo") = value End Set End Property Private Property ObjRemisionNC As Modelos.Factura Get Return CType(ViewState("ObjRemisionNC"), Modelos.Factura) End Get Set(value As Modelos.Factura) ViewState("ObjRemisionNC") = value End Set End Property Private Property ObjFactura As Modelos.Factura Get Return CType(ViewState("ObjFactura"), Modelos.Factura) End Get Set(value As Modelos.Factura) ViewState("ObjFactura") = value End Set End Property Private Property IndexAjuste As Integer Get Return ViewState("IndexAjuste").ToString.ToEntero End Get Set(value As Integer) ViewState("IndexAjuste") = value End Set End Property Private Property TmpDTAjustes As DataTable Get Return If(IsNothing(ViewState("TmpDTAjustes")), Nothing, CType(ViewState("TmpDTAjustes"), DataTable)) End Get Set(value As DataTable) ViewState("TmpDTAjustes") = value End Set End Property Private Property DtPorcentajeMarcas As DataTable Get Return If(IsNothing(ViewState("DtPorcentajeMarcas")), Nothing, CType(ViewState("DtPorcentajeMarcas"), DataTable)) End Get Set(value As DataTable) ViewState("DtPorcentajeMarcas") = value End Set End Property #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not IsPostBack Then CveMovimiento = -1 CveMovimientoRelacionado = -1 TieneRelacionado = -1 TieneSalida = False EstatusAlmacenCompra = -1 EsConsumoInterno = False Correo = "" FolioCorreo = "" If IfNull(Request("Opc"), "").ToString = "S" Then RBLOpcion.SelectedValue = "3" DivCliente.Visible = False End If CreaDT() CargaCombos() TxtFecha.Text = Now.ToShortDateString TxtFechaPendientes.Text = Now.ToShortDateString RVFecha.MaximumValue = Now.ToShortDateString InicializaClientes() 'si viene una parámetro para cargar un movimiento lo hacemos dentro del procedimiento cargadatos Select Case UsuarioActual.Empresa.Funcionalidad(103) Case "1" Case "2" divMonedaSeccion.Visible = True divGuia.Visible = True End Select 'AsignacionOpcion() SiguienteFolio() 'SI YA ES MOVIMIENTO REGISTRADO NO ESCONDE COLUMNA AF If CveMovimiento > 0 Then BloqueaEdicionEncabezado() If UsuarioActual.CveEmpresa.Contiene(66, 13) Then TrSubProyectoActivoFijo.Visible = True VisualizaAF(True) CargaSubProyectos() End If End If CargaSubProyectosUsados() InicializaBitacoraTemporal() If UsuarioActual.Empresa.Funcionalidad(132) = "1" Then DivCodigoSeriePS.Visible = True End If 'If IfNull(Request("CI"), -1).ToString.ToEntero > 0 Then ' ActivaConsumoInterno() 'End If 'BLOQUEA PERMISOS BtnGuardar.Enabled = PermiteGuardar() BtnEliminar.Enabled = PermiteEliminar() BtnContabilizar.Enabled = PermiteContabilizar() BtnNuevo.Enabled = PermiteCrearNuevo() ActivaPermisoSeccionAlmacen() If CveMovimiento > 0 Then PermisoVerImportes() End If CargaTamaños() 'DdlProducto2.setEsWebService(True) 'DdlProducto2.Attributes.Add("data-metodo", "getpsusados") End If End Sub #Region " PERMISOS PAGINAS " Private Function PermiteGuardar() As Boolean Return True 'If(UsuarioActual.TienePermisoProceso(181) Or EsConsumoInterno, True, False) End Function ''' ''' Este permiso solo habilita el Btn del GV. Debe ir en conjunto con el permiso 181 [PermiteGuardar] ''' Private Function PermiteGuardarObservacionDetalle() As Boolean Return UsuarioActual.TienePermisoProceso(225) End Function Private Function PermiteEliminar() As Boolean Return If(UsuarioActual.TienePermisoProceso(182), True, False) End Function Private Function PermiteContabilizar() As Boolean Return If(UsuarioActual.TienePermisoProceso(183), True, False) End Function Private Function PermiteCrearNuevo() As Boolean Return If(UsuarioActual.TienePermisoProceso(184) Or EsConsumoInterno, True, False) End Function Private Sub ActivaPermisoSeccionAlmacen() ' GvM.Columns(12).Visible = UsuarioActual.Empresa.Funcionalidad(147) = "1" End Sub Private Sub PermisoVerImportes() Dim TienePermisoImportes As Boolean = UsuarioActual.TienePermisoProceso(201) End Sub #End Region #Region " VALORES INICIALES " Protected Sub CreaDT() Dim dt As New DataTable Dim column As DataColumn = New DataColumn("No") column.DataType = Type.GetType("System.Int32") With column .AutoIncrement = True .AutoIncrementSeed = 1 .AutoIncrementStep = 1 End With 'dt.Columns.Add("No", Type.GetType("System.Int32")) dt.Columns.Add(column) dt.Columns.Add("CveMovimiento", Type.GetType("System.Int32")) dt.Columns.Add("CveMovimientoDetalle", Type.GetType("System.Int32")) dt.Columns.Add("Cantidad", Type.GetType("System.Double")) dt.Columns.Add("CveUM", Type.GetType("System.Int32")) dt.Columns.Add("UnidadMedida") dt.Columns.Add("CvePS", Type.GetType("System.Int32")) dt.Columns.Add("CodigoPS") dt.Columns.Add("Codigo") dt.Columns.Add("PS") dt.Columns.Add("PU", Type.GetType("System.Double")) dt.Columns.Add("PUExtranjero", Type.GetType("System.Double")) dt.Columns.Add("Total", Type.GetType("System.Double")) dt.Columns.Add("CveClasificacion", Type.GetType("System.Int32")) dt.Columns.Add("CveSeccionAlmacen", Type.GetType("System.Int32")) dt.Columns.Add("SeccionAlmacen") dt.Columns.Add("Estatus") dt.Columns.Add("CostoIndirecto", Type.GetType("System.Double")) dt.Columns.Add("CodigoAF") dt.Columns.Add("CveAF") dt.Columns.Add("SerieLote", Type.GetType("System.String")) dt.Columns.Add("Lote", Type.GetType("System.String")) dt.Columns.Add("Batch", Type.GetType("System.String")) dt.Columns.Add("Observaciones") dt.Columns.Add("CountMovimientoEntradaDetalle") dt.Columns.Add("TotalExtranjero", Type.GetType("System.Double")) dt.Columns.Add("CveTamaño", Type.GetType("System.Int32")) dt.Columns.Add("Tamaño", Type.GetType("System.String")) CargaGVM(dt) DtMovimientos = dt.Clone DtMovimientosEntradaInvFisico = dt.Clone DtMovimientosSalidaInvFisico = dt.Clone End Sub Private Sub CargaCombos() DdlSeccion.DataSource = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa) DdlSeccion.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlSeccion.DataBind() 'Llenar el dropdownlist de monedas DdlMoneda.DataSource = GlobalDTMonedas DdlMoneda.DataBind() 'Llenar el dropdownlist de almacén DdlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen IN (22)") 'GlobalDTAlmacen(UsuarioActual.CveEmpresa) DdlAlmacen.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlAlmacen.SelectedValue = "-1" DdlAlmacen.DataBind() If IsNothing(Request("CveMovimiento")) Then DdlAlmacen.SelectedValueExist(UsuarioActual.CveAlmacen) DdlAlmacen_SelectedIndexChanged(DdlAlmacen, EventArgs.Empty) End If CargaPS() End Sub Private Sub CargaPS() Dim ObjAcum As New ClsAcumuladores Dim lista As New List(Of String) Dim Filtro As String = "" If ObjAcum.TamañoGet(-1, UsuarioActual.CveEmpresa) Then For Each drow As DataRow In ObjAcum.DtResultados.Rows If drow("CvePSCargo").ToString.ToEntero > 0 Then lista.Add(drow("CvePSCargo").ToString) End If Next End If If lista.Count > 0 Then Filtro = "CvePS in(" & String.Join(",", lista) & ")" DdlProducto2.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).FiltraParametros(Filtro) DdlProducto2.DataBind() DdlProducto2.Items.Insert(0, New ListItem("Seleccione", "-1")) End If ObjAcum.Dispose() End Sub Private Sub CargaSubProyectos() DdlSubProyecto.DataSource = If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos(-1, -1, UsuarioActual.CveEmpresa, 1)) DdlSubProyecto.DataBind() 'DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1")) End Sub Private Sub CargaSubProyectosUsados() If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then DivRecepcionUsados.Visible = True If Not UsuarioActual.TienePermisoProceso(190) Then 'CARGA SOLO LAS SUCURSALES DE LOS ALMCENES QUE TIENE ASIGNADO EL USUARIO Dim ObjInventarios As New ClsInventarios If ObjInventarios.GetSucursalesAlmacenUsuario(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then DdlSubProyectos.DataSource = ObjInventarios.DtResultados End If ObjInventarios.Dispose() Else DdlSubProyectos.DataSource = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa) End If DdlSubProyectos.DataBind() DdlSubProyectos.SelectedValueExist(UsuarioActual.CveSubProyecto.ToString) End If End Sub Private Sub CargaPersonal() TrPersonal.Visible = True Dim dt As DataTable = Nothing Dim RH As New ClsRH If RH.GetPersonal(-1, UsuarioActual.CveEmpresa) Then dt = RH.DtResultados End If RH.Dispose() DdlPersonal.DataSource = dt DdlPersonal.DataBind() 'DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1")) End Sub #End Region #Region " CARGA DATOS " Private Sub BloqueaEdicionEncabezado() DdlAlmacen.Enabled = True 'DdlConcepto.Enabled = True TxtFolio.Enabled = True TxtFecha.Enabled = True TxtResponsable.Enabled = True TxtObservaciones.Enabled = True DdlMoneda.Enabled = True TxtGuia.Enabled = True DdlSeccion.Enabled = True If CveMovimiento > 0 Then DdlAlmacen.Enabled = False ' DdlConcepto.Enabled = False TxtFolio.Enabled = False If Not PermiteGuardar() Then TxtFecha.Enabled = False TxtResponsable.Enabled = False TxtObservaciones.Enabled = False DdlMoneda.Enabled = False TxtGuia.Enabled = False DdlSeccion.Enabled = False End If UppGrid.Update() End Sub #End Region #Region " BOTONES: ELIMINAR, NUEVO " Protected Sub BtnNuevo_Click(sender As Object, e As EventArgs) Handles BtnNuevo.Click 'Response.Redirect("EntradasSalidas.aspx") LimpiarMovimiento() BloqueaEdicionEncabezado() End Sub Private Sub LimpiarMovimiento() CveMovimiento = -1 SiguienteFolio() HplCompra.Visible = False HplPoliza.Visible = False HplVenta.Visible = False HplOrdenCompra.Visible = False TrTipoCargado.Visible = False TrPersonal.Visible = False DtMovimientos.Clear() GvM.EditIndex = -1 CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) BtnGuardar.Visible = PermiteGuardar() BtnEliminar.Visible = False DivRegistro.Visible = False DivTipoCambio.Visible = False If Not DdlAlmacen.Items.Contains(New ListItem("Seleccione", "-1")) Then DdlAlmacen.Items.Add(New ListItem("Seleccione", "-1")) End If DdlAlmacen.SelectedValue = "-1" If Not EsConsumoInterno Then DdlAlmacen_SelectedIndexChanged(DdlAlmacen, EventArgs.Empty) End If DdlAlmacen.Enabled = True TxtResponsable.Text = "" TxtObservaciones.Text = "" TxtFecha.Text = Now.ToShortDateString LblUsuarioRegistro.Text = "" LblFechaRegistro.Text = "" HplCompra.Visible = False HplVenta.Visible = False HplPoliza.Visible = False HplOrdenCompra.Visible = False LimpiarAgregar() InicializaBitacoraTemporal() DtBitacora.Clear() CargaEventoBitacoraTemp() TxtRemision.Text = "" DivRemision.Visible = False UpRegistroTipoCambio.Update() UPDatos.Update() End Sub Private Sub LimpiarAgregar() 'DdlClasificacion.SelectedValue = "-1" txtCantidad.Text = "" TxtObservacionesdetalle.Text = "" UpModalAgregar.Update() End Sub Protected Sub BtnEliminar_Click(sender As Object, e As EventArgs) Handles BtnEliminar.Click Dim Inv As New ClsInventarios Dim Conta As New ClsContabilidad(Inv.IniciaTransacSQL()) Dim TieneError = False Dim ObjConta As ClsContPAQi = Nothing If UsuarioActual.Empresa.UsaContabilidad Or UsuarioActual.Empresa.UsaAC Then ObjConta = New ClsContPAQi(UsuarioActual.Empresa) ObjConta.IniciaTransacSQL() End If If Inv.MovimientoRemove(CveMovimiento, UsuarioActual.CveEmpresa) Then If HdnIdPoliza.Value.ToEntero > 0 Then If Not ObjConta.RemovePoliza(HdnIdPoliza.Value.ToEntero) Then TieneError = True End If End If Else TieneError = True End If 'If Not TieneError Then ' If Not Conta.UpdatePrePolizasDetalleBloquear(CvePrePoliza, False) Then ' TieneError = True ' End If 'End If If Not TieneError Then If ObjConta IsNot Nothing Then ObjConta.Commit() Inv.Commit() Alert("Movimientos Eliminado", TipoMensaje.MsgInformacion) LimpiarMovimiento() Else If ObjConta IsNot Nothing Then ObjConta.RollBack() Inv.RollBack() Alert("Ocurrió un error al eliminar el movimiento. Por favor vuelva a intetar.", TipoMensaje.MsgError) End If CveMovimiento = 0 If ObjConta IsNot Nothing Then ObjConta.Dispose() Inv.Dispose() Conta.Dispose() End Sub #End Region #Region "CORREO" Private Function GeneraCorreo() As String Dim ObjInv As New ClsInventarios ObjInv.GetMovimientos(CveMovimiento, -1, -1, UsuarioActual.CveEmpresa) Dim strBody As New StringBuilder strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append(" ") strBody.Append("
") strBody.AppendFormat("
Datos {0} ", "de la recepción de usados") strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ") strBody.Append(" ") strBody.AppendFormat(" ", ObjInv.DtResultados(0)("Almacen").ToString()) strBody.Append(" ") strBody.AppendFormat(" ", ObjInv.DtResultados(0)("FechaMovto").ToString().ToDate().ToShortDateString()) strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", ObjInv.DtResultados(0)("Nombre").ToString()) strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", ObjInv.DtResultados(0)("Recibio").ToString()) strBody.Append(" ") strBody.Append(" ") strBody.AppendFormat(" ", ObjInv.DtResultados(0)("Observaciones").ToString()) strBody.Append(" ") strBody.Append("
Folio: " + ObjInv.DtResultados(0)("Folio").ToString() + "
Almacen:{0}  
Fecha:{0}
Cliente:{0}  
Recibe:{0}  
Observaciones:{0}  
") strBody.Append("
") strBody.Append("
") strBody.Append("
") strBody.Append("
") strBody.Append(" Listado de Recepción ") strBody.Append(" ") strBody.Append(" ") FolioCorreo = ObjInv.DtResultados(0)("Folio").ToString() Dim DtMovimientosDetalle As DataTable = Nothing If ObjInv.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then DtMovimientosDetalle = ObjInv.DtResultados End If For Each dr As DataRow In DtMovimientosDetalle.Rows strBody.AppendFormat("", dr("Cantidad").ToString.FormatoNumero(0), dr("CodigoPS"), dr("UnidadMedida"), dr("Observaciones")) Next strBody.Append("
CantidadProductoUnidadObservaciones
{0}{1}{2}{3}
") strBody.Append("
") strBody.Append("
") strBody.Append("
") strBody.Append("") ObjInv.Dispose() Return strBody.ToString End Function Private Sub MandaCorreo(Para As String, Asunto As String, Body As String) Dim a As String = String.Format("{0} -- {1} ---- -->", Asunto, Para) Dim Mail As New ClsSisMail() Mail.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body) End Sub Protected Sub EnvioCorreo() Dim Body As String = GeneraCorreo() Dim Asunto As String = $"SIG - Se Genero una Recepción de Usados con el folio: {FolioCorreo}" Try Dim Hilo As New System.Threading.Thread(Sub() MandaCorreo(Correo, Asunto, Body)) Hilo.Start() Catch ex As Exception OnError("Ocurrió error al mandar MAIL", ex) End Try End Sub #End Region #Region " AGREGAR - GUARDAR " Private Function GetExistencias(CvePS As Integer, CveUnidadMedida As Integer, CveEmpresa As Integer, CveAlmacen As Integer, Optional SerieLote As String = "-1", Optional Lote As String = "-1", Optional Batch As String = "-1") As Double Dim Inv As New ClsInventarios Dim Existencia As Double = Inv.GetExistenciasPS(CvePS, CveUnidadMedida, CveEmpresa, CveAlmacen, -1, FechaMovto:=String.Format("{0} {1}", TxtFecha.Text.ToDate.ToString("yyyy/MM/dd"), TxtHoraInicio.PostedTime), SerieLote:=SerieLote, Lote:=Lote, Batch:=Batch) Inv.Dispose() Return Existencia End Function Protected Sub BtnSerieAddNew_Click(sender As Object, e As EventArgs) AgregarPS() End Sub Private Sub AgregarPS() If Not DdlProducto2.SelectedValue.ToEntero > 0 Then RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") Alert("Es necesario especificar el producto.", TipoMensaje.MsgAdvertencia) Exit Sub End If Dim PU As Decimal = 0 If GlobalDTAcumTamaños.FiltraParametros($"CveEmpresa = {UsuarioActual.CveEmpresa} AND CvePSCargo > 0 AND CvePSCargo={DdlProducto2.SelectedValue}").Rows.Count > 0 Then PU = GlobalDTAcumTamaños.FiltraParametros($"CveEmpresa = {UsuarioActual.CveEmpresa} AND CvePSCargo > 0 AND CvePSCargo={DdlProducto2.SelectedValue}").Rows(0)("Cargo").ToString.ToDecimal End If AddNew(DdlProducto2.SelectedValue.ToEntero, DdlProducto2.SelectedItem.Text, DdlUnidad.SelectedValue.ToEntero, DdlUnidad.SelectedItem.Text, txtCantidad.Text.ToDouble, PU, "", "-1", "-1", "-1", TxtObservacionesdetalle.Text, "", "", DdlAlmacen.SelectedValue.ToEntero, DdlAlmacen.SelectedItem.Text, "", HdnCveTamaño.Value.ToEntero) LimpiarAgregar() txtCantidad.Text = "" RegistraScript("CodigoAF = "";") If Not UsuarioActual.Empresa.Funcionalidad(105).ToString = "1" Then DdlProducto2.SelectedValue = "-1" Else DdlProducto2.SelectedIndex = 0 End If txtCantidad.Focus() End Sub Protected Sub AddNew(CvePS As Integer, PS As String, CveUM As Integer, UM As String, Cantidad As Double, PU As Double, SerieLote As String, CodigoAF As String, Codigo As String, CveAF As String, Observaciones As String, Lote As String, Batch As String, CveSeccionAlmacen As Integer, SeccionAlmacen As String, Tamaño As String, CveTamaño As Integer) 'If DdlAlmacen.SelectedValue.ToEntero <= 0 Then Alert("Seleccione un almacen", TipoMensaje.MsgAdvertencia) : RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") : DdlProducto2.SelectedText = "" : Exit Sub Dim Valido As Boolean = True Dim CveClasificacion As Integer Dim dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS).FiltroPrimero("", "PS") If dr IsNot Nothing Then CveClasificacion = dr("CveClasificacion").ToString.ToEntero If Valido And AgregarUsado Then If ObjFactura IsNot Nothing AndAlso Me.CveRemisionRecibida > 0 Then Dim RowDetalle As DataRow = ObjFactura.DtDetalle.FiltroPrimero($"CvePS={CvePS}") If RowDetalle IsNot Nothing Then 'If RowDetalle("PU").ToString.ToDecimal().RoundSQL <> PU.RoundSQL Then ' Alert($"Los importes no coinciden", TipoMensaje.MsgAdvertencia) ' Exit Sub 'End If Dim Puntos As Decimal = DtTamaños.FiltroPrimeroValor("Puntos", $"CvePSCargo={CvePS}").ToDecimal() Dim CantidadPermitida As Double = Math.Ceiling(RowDetalle("Cantidad").ToString.ToDecimal() * Puntos) If Cantidad > CantidadPermitida Then Alert($"La cantidad es mayor a la permitida", TipoMensaje.MsgAdvertencia) Exit Sub End If Else Alert($"El producto no se encuentra en la factura", TipoMensaje.MsgAdvertencia) Exit Sub End If End If 'VALIDA QUE LA SERIE NO SEA IGUAL AL CODIGO O CODIGOBARRAS If SerieLote <> "" And (SerieLote.ToUpper = dr("Codigo").ToString.ToUpper Or SerieLote.ToUpper = dr("CodigoBarras").ToString.ToUpper) Then Alert($"La serie indicada {SerieLote} coincide con el codigo o codigo de barras del producto. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) Exit Sub End If Dim registro As DataRow = DtMovimientos.NewRow registro.Item("Cantidad") = Cantidad registro.Item("CveUM") = CveUM registro.Item("UnidadMedida") = UM registro.Item("CvePS") = CvePS registro.Item("CodigoPS") = PS registro.Item("PS") = PS registro.Item("PU") = PU 'registro.Item("PUExtranjero") = PU registro.Item("Total") = Cantidad * PU registro.Item("CveClasificacion") = CveClasificacion registro.Item("Estatus") = "" registro.Item("CveSeccionAlmacen") = CveSeccionAlmacen registro.Item("SeccionAlmacen") = SeccionAlmacen registro.Item("CodigoAF") = CodigoAF registro.Item("Codigo") = Codigo registro.Item("CveAF") = CveAF registro.Item("SerieLote") = If(SerieLote <> "", SerieLote, "") registro.Item("Lote") = If(Lote <> "", Lote, "") registro.Item("Batch") = If(Batch <> "", Batch, "") registro.Item("Observaciones") = Observaciones registro.Item("CveTamaño") = CveTamaño registro.Item("Tamaño") = Tamaño DtMovimientos.Rows.Add(registro) CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) ' RegistraScript("playsonidito('beep-07.wav')") 'asdasdasdasdasdad If Not ChkSeguirAgregando.Checked Then RegistraScript("$('#DivModalAgregar').modal('hide')", "hidemodal") End If Else DtMovimientos.Rows(IndexDTUsado)("Cantidad") = Cantidad DtMovimientos.Rows(IndexDTUsado)("CveUM") = CveUM DtMovimientos.Rows(IndexDTUsado)("UnidadMedida") = UM DtMovimientos.Rows(IndexDTUsado)("CvePS") = CvePS DtMovimientos.Rows(IndexDTUsado)("CodigoPS") = PS DtMovimientos.Rows(IndexDTUsado)("PS") = PS DtMovimientos.Rows(IndexDTUsado)("PU") = PU 'registro.Item("PUExtranjero") = PU DtMovimientos.Rows(IndexDTUsado)("Total") = Cantidad * PU DtMovimientos.Rows(IndexDTUsado)("CveClasificacion") = CveClasificacion DtMovimientos.Rows(IndexDTUsado)("Estatus") = "" DtMovimientos.Rows(IndexDTUsado)("CveSeccionAlmacen") = CveSeccionAlmacen DtMovimientos.Rows(IndexDTUsado)("SeccionAlmacen") = SeccionAlmacen DtMovimientos.Rows(IndexDTUsado)("CodigoAF") = CodigoAF DtMovimientos.Rows(IndexDTUsado)("Codigo") = Codigo DtMovimientos.Rows(IndexDTUsado)("CveAF") = CveAF DtMovimientos.Rows(IndexDTUsado)("SerieLote") = If(SerieLote <> "", SerieLote, "") DtMovimientos.Rows(IndexDTUsado)("Lote") = If(Lote <> "", Lote, "") DtMovimientos.Rows(IndexDTUsado)("Batch") = If(Batch <> "", Batch, "") DtMovimientos.Rows(IndexDTUsado)("Observaciones") = Observaciones DtMovimientos.Rows(IndexDTUsado)("CveTamaño") = CveTamaño DtMovimientos.Rows(IndexDTUsado)("Tamaño") = Tamaño DtMovimientos.AcceptChanges() CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) If Not ChkSeguirAgregando.Checked Then RegistraScript("$('#DivModalAgregar').modal('hide')", "hidemodal") End If End If End Sub Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) Handles BtnGuardar.Click If DdlClientes.SelectedValue.ToEntero <= 0 Then Alert("No se ha especificado el cliente", TipoMensaje.MsgError) Exit Sub End If 'SI ES DISTRIBUIDOR Y NO VIENE DE REMISION, GENERA UNA REMISION DE NOTA DE CREDITO If EsDistribuidor AndAlso Me.CveRemisionRecibida <= 0 Then Dim CveCliente As Integer = DdlClientes.SelectedValue.ToEntero() Dim CveSubProyecto = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen={DdlAlmacen.SelectedValue}").ToEntero CreaRemisionNC(CveCliente, CveSubProyecto, 1) End If If Me.ObjRemisionNC IsNot Nothing Then Dim sb As New StringBuilder() sb.Append($"Se va a generar un documento de tipo 'Remisión de nota de crédito'.
Serie-Folio:{Me.ObjRemisionNC.SerieFolio}.
¿Esta seguro que desea guardar?:
") Alert(sb.ToString(), TipoMensaje.MsgConfirmacion, JSBtnAceptar:="GenerarRNC();", TextoConfirmacion:="    Si    ", TextoCancelacion:="    No    ") Else Guardar() End If End Sub Private Sub BtnGenerarRNC_Click(sender As Object, e As EventArgs) Handles BtnGenerarRNC.Click Guardar(True) End Sub Protected Sub Guardar(Optional GenerarRNC As Boolean = False) If GvM.Rows.Count > 0 Then Dim Msg As New StringBuilder() Dim ObjInventario As New ClsInventarios Dim ObjAcum As New ClsAcumuladores(ObjInventario.IniciaTransacSQL()) Dim ObjVentas As New ClsVentas(ObjInventario.IniciaTransacSQL()) Dim ErrorMovInv As Boolean = False Dim ErrorAC As Boolean = False Dim IDPoliza As Integer = 0 Dim ImporteConcepto = 0.0 Try Dim CveSubProyecto = -1 Dim ActivoFijo = -1 If CveMovimiento > 0 Then Else Dim Fecha = String.Format("{0} {1}", TxtFecha.Text.ToDate.ToString("yyyy/MM/dd"), TxtHoraInicio.PostedTime).ToDate Dim CveCliente As Integer = CInt(IIf((DdlClientes.SelectedValue.ToEntero <= 0), -1, DdlClientes.SelectedValue.ToEntero)) Dim CveClienteSucursal As Integer = CInt(IIf((DdlClientesSucursales.SelectedValue.ToEntero <= 0), -1, DdlClientesSucursales.SelectedValue.ToEntero)) 'cuando es APH Dim tFolio As Integer = -1 If UsuarioActual.CveEmpresa = 48 And EsConsumoInterno = False Then tFolio = TxtFolio.Text.ToEntero If Not tFolio > 0 Then tFolio = If(TxtFolio.Text.ToEntero <> FolioAsignado, TxtFolio.Text.ToEntero, -1) End If Dim tCveProveedor As Integer = -1 If DdlProveedor.SelectedValue.ToEntero > 0 Then tCveProveedor = DdlProveedor.SelectedValue.ToEntero Dim CveVenta As Integer = -1 If CveRemisionRecibida > 0 Then CveVenta = CveRemisionRecibida End If CveMovimiento = ObjInventario.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero, CveConcepto, 1, Fecha, tFolio, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVenta, CveSubProyecto, ActivoFijo, Guia:=TxtGuia.Text, Observaciones:=TxtObservaciones.Text, CvePersonal:=DdlPersonal.SelectedValue.ToEntero, Recibio:=TxtResponsable.Text.Trim, CveCliente:=CveCliente, CveClienteSucursal:=CveClienteSucursal, DepartamentoEntrega:=TxtDepartamentoEntrega.Text, PedidoContrato:=TxtPedidoContrato.Text, CveProveedor:=tCveProveedor, Modulo:="RU/G") If CveMovimiento <= 0 Then Alert("No se pudo almacenar el movimiento correctamente", TipoMensaje.MsgError) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") ObjInventario.RollBack() 'deshace lo insertado Else Dim Mensaje As String = "" If Not ErrorMovInv AndAlso GenerarRNC AndAlso ObjRemisionNC IsNot Nothing Then CargaDTDetalleRNC() Dim Resp = ObjRemisionNC.EmitirFactura(False) For Each mensaje2 As String In Resp.Mensajes Msg.AppendFormat("
{0}", mensaje2) Next Alert(Msg.ToString, If(Resp.CveVenta > 0, TipoMensaje.MsgInformacion, TipoMensaje.MsgAdvertencia)) CveVenta = Resp.CveVenta End If For Each Dr As DataRow In DtMovimientos.Rows If CveConcepto = 42 AndAlso DdlMoneda.SelectedValue.ToEntero = 2 Then ImporteConcepto = Dr("PU").ToString.ToDouble * GlobalTipoCambio(TxtFecha.Text.ToDate) Else ImporteConcepto = Dr("PU").ToString.ToDouble End If If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, ImporteConcepto, Dr("CveAF").ToString.ToEntero, -1, Dr("SerieLote").ToString, Dr("Observaciones").ToString, Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then Mensaje = "Error al guardar los movimientos" ErrorMovInv = True Exit For End If If CveVenta > 0 AndAlso Not ObjVentas.UpdateVentaUsadoRecibido(CveVenta, Dr("CvePS").ToString.ToEntero, True) Then Mensaje = "Error al actualizar el recibo de los usados" ErrorMovInv = True Exit For End If 'si es selectedvalue = 42, es entrada ,3 -salida Dim CveConceptoUsados As Integer = If(RBLOpcion.SelectedValue.ToEntero = 42, 1, 2) If RBLOpcion.SelectedValue.ToEntero = 42 AndAlso EsDistribuidor AndAlso Dr("CveTamaño").ToString.ToEntero > 0 Then If Not ObjAcum.DistribuidorMovtosAdd(DdlClientes.SelectedValue.ToEntero, Dr("Cantidad").ToString.ToEntero(), Dr("CveTamaño").ToString.ToEntero, CveConceptoUsados, CveVenta, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 0, Dr("Observaciones").ToString, CveMovimiento:=CveMovimiento) Then Mensaje = "Error al guardar Movimientos de distribuidor" ErrorMovInv = True Exit For End If End If Next If Not ErrorMovInv Then Msg.AppendFormat("
El Movimiento se registro con el Folio: {0}", ObjInventario.Folio) Msg.AppendFormat("

Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimiento))) If IDPoliza > 0 Then Msg = Msg.AppendFormat("

Ver Póliza", IDPoliza) ObjInventario.Commit() ' aplica los movimientos insertados 'Limpia Valores cuando inserta de campos especiales If UsuarioActual.CveEmpresa = 66 Then DdlSubProyecto.SelectedValueExist("-1") End If EnvioCorreo() CargaPendientesRecibir() UPDatos.Update() Else ObjInventario.RollBack() 'deshace lo insertado CveMovimiento = 0 Alert("ocurrió un Error al registrar los movimientos", TipoMensaje.MsgError) End If End If End If Catch ex As Exception ObjInventario.RollBack() 'deshace lo insertado CveMovimiento = 0 Alert("Ocurrió un Error inesperado en el registro" & ex.Message, TipoMensaje.MsgError) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") End Try ObjInventario.Dispose() ObjAcum.Dispose() ObjVentas.Dispose() If Not ErrorMovInv Then Alert(Msg.ToString, TipoMensaje.MsgInformacion) End If Else Alert("No hay ningun registro para generar el movimiento. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgError) RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") End If LimpiarMovimiento() CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) End Sub #End Region #Region " ADD INVENTARIO INICIAL " Protected Sub BtnCodigoBarras_Click(sender As Object, e As EventArgs) If TxtCodigoBarras.Text = "" Then Exit Sub End If TdSeriePS.Visible = False Dim DrPS = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero($"CodigoBarras= '{TxtCodigoBarras.Text}'") If DrPS Is Nothing Then Alert($"No se ha encontrado un producto del Codigo ""{TxtCodigoBarras.Text}"". ", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus,200);") RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") TxtCodigoBarras.Text = "" Exit Sub End If If DrPS("Inv_CveMetodoInventario").ToString.ToEntero = 5 Then TdSeriePS.Visible = True TxtCodigoSerie.Focus() CvePSSerieLote = DrPS("CvePS").ToString.ToEntero CveUMSerieLote = DrPS("CveUnidadMedida").ToString.ToEntero CostoPromedioSerieLote = DrPS("CostoPromedio").ToString.ToDouble Exit Sub End If GuardaCodigoSerie(TxtCantidadProducto.Text.ToDouble, DrPS("CvePS").ToString.ToEntero, DrPS("CveUnidadMedida").ToString.ToEntero, DrPS("CostoPromedio").ToString.ToDouble) TxtCodigoBarras.Text = "" TxtCodigoBarras.Focus() End Sub Protected Sub BtnSeriePS_Click(sender As Object, e As EventArgs) If TxtCodigoSerie.Text.Trim = "" Then TxtCodigoSerie.Focus() : Exit Sub GuardaCodigoSerie(1, CvePSSerieLote, CveUMSerieLote, CostoPromedioSerieLote, TxtCodigoSerie.Text.Trim) TdSeriePS.Visible = False End Sub Private Sub BtnAddCodigo_Click(sender As Object, e As EventArgs) Handles BtnAddCodigo.Click If TxtCodigo.Text.Trim = "" Then Exit Sub Dim DrP = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero($"Codigo= '{TxtCodigo.Text.Trim}'") If DrP IsNot Nothing AndAlso DrP("CvePS").ToString.ToEntero > 0 Then GuardaCodigoSerie(TxtCantidadProducto.Text.ToDouble, DrP("CvePS").ToString.ToEntero, DrP("CveUnidadMedida").ToString.ToEntero, DrP("CostoPromedio").ToString.ToDouble) Else Alert("No se encontró el producto. Favor de verificar y volver a intentar.", TipoMensaje.MsgError, "window.setTimeout(Focus2,200);") End If End Sub Private Sub GuardaCodigoSerie(Cantidad As Double, CvePS As Integer, CveUM As Integer, CostoPromedio As Double, Optional SerieLote As String = "-1") Dim ObjInv As New ClsInventarios If CveMovimiento <= 0 Then CveMovimiento = ObjInv.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero, CveConcepto, 1, TxtFecha.Text.ToDate, TxtFolio.Text.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Modulo:="RU/G") End If ObjInv.AddMovimientoDetalle(CveMovimiento, Cantidad, CveUM, CvePS, CostoPromedio, -1, SerieLote:=SerieLote) ObjInv.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) DtMovimientos = ObjInv.DtResultados.FiltraParametros("", "CveMovimientoDetalle DESC").AsEnumerable.Take(25).CopyToDataTable ObjInv.Dispose() CargaGVM(DtMovimientos) TxtCodigoBarras.Text = "" TxtCodigo.Text = "" TxtCodigoSerie.Text = "" TxtCantidadProducto.Text = "1" txtCantidad.Text = "" TxtCodigoBarras.Focus() RegistraScript("beep-07.wav')") End Sub #End Region #Region " DdlConcepto, DdlClasificacion, DdlAlmacen | Index CHANGED " Protected Sub DdlAlmacen_SelectedIndexChanged(sender As Object, e As EventArgs) If EsConsumoInterno Then Exit Sub End If Dim filtro As String = "" Dim CveTipoAlmacen = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltroPrimeroValor("CveTipoAlmacen", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero filtro = If(UsuarioActual.TienePermisoProceso(144), "CveConcepto NOT IN (1,4,5,8,9,10,12,26,27,29)", "CveConcepto NOT IN (1,2,4,5,8,9,10,12,26,27,29)") If DdlAlmacen.SelectedValue = "-1" Then filtro = IIf(UsuarioActual.CveEmpresa.Contiene(72, 1, 80), "CveConcepto NOT IN (4,5,10)", filtro).ToString Else filtro = String.Format("{0} AND CveTipoAlmacen = {1}", IIf(UsuarioActual.CveEmpresa.Contiene(72, 1, 80, 4, 7, 11, 12), "CveConcepto NOT IN (4,5,10)", filtro).ToString, CveTipoAlmacen) End If End Sub Private Sub VisualizaPU(Opcion As Boolean) txtPrecio.Visible = Opcion End Sub Private Sub VisualizaPUExtranjero(Opcion As Boolean) End Sub Private Sub VisualizaAF(Opcion As Boolean) End Sub Private Sub SiguienteFolio() Dim Inv As New ClsInventarios Dim Folio As Integer = Inv.GetFolioSiguiente(CveConcepto, UsuarioActual.CveEmpresa) Inv.Dispose() TxtFolio.Text = Folio.ToString FolioAsignado = Folio End Sub Protected Sub DdlProducto2_SelectedIndexChanged(sender As Object, e As EventArgs) CambiarProducto() End Sub Private Sub CambiarProducto() EscondeColumnasGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) DdlUnidad.Items.Clear() DdlUnidad.DataSource = GlobalDTProductosServiciosEquivalencias(DdlProducto2.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa) DdlUnidad.DataBind() HdnCveTamaño.Value = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveTamaño", $"CvePS = { DdlProducto2.SelectedValue.ToEntero }") Dim ObjAcum As New ClsAcumuladores If ObjAcum.TamañoGet(-1, UsuarioActual.CveEmpresa) Then HdnCveTamaño.Value = ObjAcum.DtResultados.FiltroPrimeroValor("CveTamaño", $"CvePSCargo = { DdlProducto2.SelectedValue }") End If ObjAcum.Dispose() UPDatos.Update() End Sub #End Region #Region " GVM " Private Sub CargaGVM(DtTemp As DataTable) GvM.DataSource = DtTemp GvM.DataBind() EscondeColumnasGVM(DtTemp) End Sub Private Sub EscondeColumnasGVM(DtTemp As DataTable) 'Dim TienePermisoImportes = UsuarioActual.TienePermisoProceso(201) If DtTemp IsNot Nothing AndAlso DtTemp.Rows.Count > 0 Then If DtTemp.MAX("SerieLote").ToString <> "" Then End If If DtTemp.MAX("Lote").ToString <> "" Then GvM.Columns(11).Visible = True End If If DtTemp.SUM("PUExtranjero") > 0 Then End If If DtTemp.SUM("CostoIndirecto") > 0 Then End If Dim Total = DtTemp.SUM("Total") TxtTotal.Text = Total.FormatoNumero(2) End If End Sub Protected Sub GvM_RowDataBound(sender As Object, e As GridViewRowEventArgs) End Sub Protected Sub GvM_RowEditing(sender As Object, e As GridViewEditEventArgs) Handles GvM.RowEditing GvM.EditIndex = e.NewEditIndex CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) End Sub Protected Sub GvM_RowCancelingEdit(sender As Object, e As GridViewCancelEditEventArgs) Handles GvM.RowCancelingEdit GvM.EditIndex = -1 CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) End Sub Protected Sub GvM_RowUpdating(sender As Object, e As GridViewUpdateEventArgs) Handles GvM.RowUpdating Dim Precio As Double = GvM.Rows(e.RowIndex).FCTextBox("TxtPrecio").Text.ToDouble Dim No As Integer = GvM.Rows(e.RowIndex).DataKey("No").ToEntero Dim serielote As String = GvM.Rows(e.RowIndex).FCTextBox("TxtSerieLote").Text.Replace(" ", String.Empty) Dim Observaciones As String = GvM.Rows(e.RowIndex).FCTextBox("TxtObservaciones").Text Dim CveSeccionAlmacen As Integer = GvM.Rows(e.RowIndex).FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero Dim SeccionAlmacen As String = GvM.Rows(e.RowIndex).FCDropDownList("DdlSeccionAlmacen").SelectedItem.Text Dim Drs As DataRow() = DtMovimientos.Select(String.Format("No = {0}", No)) If Drs.Count > 0 Then Drs(0)("PU") = Precio Drs(0)("Total") = Drs(0)("Cantidad").ToString.ToDouble * Precio Drs(0)("Estatus") = "U" Drs(0)("SerieLote") = serielote Drs(0)("Observaciones") = Observaciones Drs(0)("CveSeccionAlmacen") = CveSeccionAlmacen Drs(0)("SeccionAlmacen") = SeccionAlmacen End If DtMovimientos.AcceptChanges() GvM.EditIndex = -1 CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) End Sub Protected Sub DeleteRow(ByVal sender As Object, ByVal e As EventArgs) Dim lnkRemove As LinkButton = DirectCast(sender, LinkButton) If DtMovimientos.Rows.Count > 0 And lnkRemove.CommandArgument.ToString.Length > 0 Then Dim i As Integer i = lnkRemove.CommandArgument.ToString.ToEntero Dim Drs As DataRow() = DtMovimientos.Select(String.Format("No = {0}", i)) If Drs.Count > 0 Then If CveMovimiento > 0 AndAlso Drs(0)("CveMovimientoDetalle").ToString.ToEntero > 0 Then Drs(0)("Estatus") = "E" Else Drs(0).Delete() End If End If DtMovimientos.AcceptChanges() End If GvM.EditIndex = -1 CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) End Sub #End Region #Region " TIPO DE CAMBIO " Protected Sub DdlMonedaTC_SelectedIndexChanged(sender As Object, e As EventArgs) Select Case DdlMonedaTC.SelectedValue.ToEntero Case 1 TrTC1.Visible = False TrTC2.Visible = False For Each Dr As DataRow In DtMovimientos.Rows Dr("PU") = Dr("PUExtranjero") Dr("Total") = Dr("PU").ToString.ToDouble * Dr("Cantidad").ToString.ToDouble Next CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) 'LtTotal.Text = DtMovimientos.SUM("Total", "").ToString.FormatoNumero UPDatos.Update() Case 2 TrTC1.Visible = True TrTC2.Visible = True End Select End Sub Protected Sub BtnAplicarTC_Click(sender As Object, e As EventArgs) For Each Dr As DataRow In DtMovimientos.Rows Dr("PU") = Dr("PUExtranjero").ToString.ToDouble * TxtTipoCambio.Text.ToDouble Dr("Total") = Dr("PU").ToString.ToDouble * Dr("Cantidad").ToString.ToDouble Next CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) 'LtTotal.Text = DtMovimientos.SUM("Total", "").ToString.FormatoNumero UPDatos.Update() End Sub #End Region #Region " BITACORA " Private Sub InicializaBitacoraTemporal() DivBitacora.Visible = True If CveMovimiento > 0 Then CargaEventoBitacora() Else DtBitacora = New DataTable DtBitacora.Columns.Add("FechaIng", GetType(String)) DtBitacora.Columns.Add("FechaInicio", GetType(String)) DtBitacora.Columns.Add("Usuario", GetType(String)) DtBitacora.Columns.Add("CveUsuario", GetType(String)) DtBitacora.Columns.Add("Descripcion", GetType(String)) DtBitacora.Columns.Add("Prioridad", GetType(String)) DtBitacora.Columns.Add("FileExtension", GetType(String)) DtBitacora.Columns.Add("Archivo", GetType(String)) DtBitacora.Columns.Add("CveOrdenCompra", GetType(String)) DtBitacora.Columns.Add("CveEmpresa", GetType(String)) End If End Sub Private Sub CargaEventoBitacora() Dim ObjEventoBitacora As New ClsOIEventos() If ObjEventoBitacora.GetAgendaBitacora(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveMovimientoAlmacen:=CveMovimiento) Then GvBitacora.DataSource = ObjEventoBitacora.DtResultados.FiltraParametros("CveTipoEvento IN (6,2)") Else GvBitacora.DataSource = Nothing End If ObjEventoBitacora.Dispose() GvBitacora.DataBind() UPEventoBitacora.Update() End Sub Protected Sub BtnGuardarEventoBitacora_Click(sender As Object, e As EventArgs) Handles BtnGuardarEventoBitacora.Click If CveMovimiento > 0 Then GuardaBitacora() Else AgregaBitacoraTemporal() End If End Sub #Region " GUARDA TEMPORAL " Private Sub AgregaBitacoraTemporal() Dim ObjEventoBitacora As New ClsOIEventos 'Archivo Dim FileExtension As String = "" Dim Filename As String = "" Dim Filesgral As List(Of Archivo) = Anexo.getfiles().Archivos For Each fileItem As Archivo In Filesgral FileExtension = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)).Replace(".", "") Filename = fileItem.filename Next Dim Archivo As New System.IO.FileInfo(String.Format("{0}OI\Temp\OI{1}{2}.{3}", UsuarioActual.Empresa.Ruta, UsuarioActual.CveUsuario, Now.ToString("HH-mm"), FileExtension)) If Archivo.Exists() Then Archivo.Delete() End If If Filename <> "" Then Filename.FilesMove(String.Format("OI{0}{1}", UsuarioActual.CveUsuario, Now.ToString("HH-mm")), String.Format("Empresas\{0}\OI\Temp", UsuarioActual.CveEmpresa)) End If 'AGREGA Dim Dr = DtBitacora.NewRow Dr("FechaIng") = Now Dr("FechaInicio") = "" Dr("Usuario") = UsuarioActual.Usuario Dr("CveUsuario") = UsuarioActual.CveUsuario Dr("Descripcion") = TxtEventoDescripcion.Text.Trim Dr("Prioridad") = 1 Dr("Archivo") = If(FileExtension = "", "", $"{UsuarioActual.Empresa.Ruta}OI\Temp\OI{UsuarioActual.CveUsuario}{Now.ToString("HH-mm")}.{FileExtension}") Dr("FileExtension") = String.Format(".{0}", FileExtension) Dr("CveOrdenCompra") = -1 Dr("CveEmpresa") = UsuarioActual.CveEmpresa DtBitacora.Rows.Add(Dr) 'LIMPIA TxtEventoDescripcion.Text = "" 'ChkEventoPrioridad.Checked = False RegistraScript("$('#ModalBitacora').modal('hide')", "hidemodal") CargaEventoBitacoraTemp() End Sub Private Sub CargaEventoBitacoraTemp() GvBitacora.DataSource = DtBitacora GvBitacora.DataBind() UPAddEventoBitacora.Update() UPEventoBitacora.Update() End Sub Private Function GuardaBitacoraTemporal(ObjEventoBitacora As ClsOIEventos, CveMovimiento As Integer) As Boolean Dim Retorno = False Dim Archivo As System.IO.FileInfo = Nothing For Each Dr As DataRow In DtBitacora.Rows If ObjEventoBitacora.AddEventoBitacora(Dr("Descripcion").ToString, Dr("FileExtension").ToString, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveMovimientoAlmacen:=CveMovimiento) Then Try If Dr("Archivo").ToString <> "" Then Archivo = New System.IO.FileInfo(Dr("Archivo").ToString) If Archivo.Exists() Then File.Move(Archivo.ToString, String.Format("{0}OI\OI{1}{2}", UsuarioActual.Empresa.Ruta, ObjEventoBitacora.CveEvento.ToString, Archivo.Extension)) End If End If Catch ex As Exception Retorno = True Alert("Ocurrió un error al guardar los datos adjuntos de la Bitácora.", TipoMensaje.MsgError) Exit For End Try Else Retorno = True Exit For End If Next Return Retorno End Function #End Region #Region " GUARDA DIRECTO " Private Sub GuardaBitacora() Dim ObjEventoBitacora As New ClsOIEventos Dim FileExtension As String = "" Dim Filesgral As List(Of Archivo) = Anexo.getfiles().Archivos Dim Filename As String = "" For Each fileItem As Archivo In Filesgral FileExtension = IO.Path.GetExtension(String.Format("{0}Temp\{1}", AppDomain.CurrentDomain.BaseDirectory, fileItem.filename)) '.Replace(".", "") Filename = fileItem.filename Next Dim descripcion As String = TxtEventoDescripcion.Text.Trim If ObjEventoBitacora.AddEventoBitacora(descripcion, String.Format("{0}", FileExtension), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveMovimientoAlmacen:=CveMovimiento) Then If Filename <> "" Then Filename.FilesMove(String.Format("OI{0}", ObjEventoBitacora.CveEvento.ToString), String.Format("Empresas\{0}\OI", UsuarioActual.CveEmpresa)) End If GvBitacora.DataSource = ObjEventoBitacora.DtResultados TxtEventoDescripcion.Text = "" Anexo.Text = "[]" Alert("La bitácora/observación se guardó correctamente", TipoMensaje.MsgInformacion) RegistraScript("$('#ModalBitacora').modal('hide')", "hidemodal") End If ObjEventoBitacora.Dispose() GvBitacora.DataBind() UPEventoBitacora.Update() CargaEventoBitacora() UPAddEventoBitacora.Update() End Sub #End Region Protected Sub GVEventoBitacora_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvBitacora.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.DBCampo("Archivo").ToString.Trim <> "" AndAlso CveMovimiento > 0 Then e.Row.FCLinkButton("LinkArchivo").Visible = True e.Row.FCLinkButton("LinkArchivo").CommandArgument = String.Format("OI\{0}", e.Row.DBCampo("Archivo").ToString) ScriptManager.GetCurrent(Me).RegisterPostBackControl(e.Row.FCLinkButton("LinkArchivo")) 'Registro un evento Postbacktrigger, que recargue toda la pagina para que funcione Else e.Row.Cells(4).Text = "NO" End If End If End Sub Protected Sub DownloadFile(ByVal sender As Object, ByVal e As EventArgs) Dim filePath As String = String.Format("{0}{1}", UsuarioActual.Empresa.Ruta, CType(sender, LinkButton).CommandArgument) If IO.File.Exists(filePath) Then Dim Archivo As New System.IO.FileInfo(filePath) HttpContext.Current.Response.Clear() HttpContext.Current.Response.ClearContent() HttpContext.Current.Response.ContentType = "application/octet-stream" HttpContext.Current.Response.AppendHeader("Content-disposition", "attachment; filename=" + Path.GetFileName(filePath)) HttpContext.Current.Response.AddHeader("Content-Length", Archivo.Length.ToString()) HttpContext.Current.Response.TransmitFile(filePath) HttpContext.Current.Response.Flush() HttpContext.Current.Response.End() Archivo = Nothing Else UPEventoBitacora.Update() End If End Sub #End Region #Region "DDL CLIENTE / CLIENTE SUCURSAL - SELECTED INDEX CHANGED" Private Sub InicializaClientes() DdlClientes.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa).FiltraParametros("EsDistribuidor = 1") DdlClientes.DataBind() DdlClientes.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlClientes.SelectedValue = "-1" End Sub 'Protected Sub ActivaClientes() ' If UsuarioActual.CveEmpresa.Contiene(72, 80) Then ' DivCliente.Visible = True ' DivDepartamentoEntrega.Visible = True ' 'TxtDepartamentoEntrega.Text = "" ' End If 'End Sub Protected Sub DdlClientes_SelectedIndexChanged(sender As Object, e As EventArgs) CambiaCliente() End Sub Private Sub CambiaCliente() DivClienteSucursal.Visible = False DdlClientesSucursales.Items.Clear() Me.EsDistribuidor = CBool(GlobalDTCliente(UsuarioActual.CveEmpresa).FiltroPrimeroValor("EsDistribuidor", $"CveCliente = {DdlClientes.SelectedValue.ToEntero()}")) CargaSucursalesCliente() CargaFacturasCliente() UpGenerales.Update() End Sub Private Sub CargaFacturasCliente() 'DivFactura.Visible = True Dim CveCliente As Integer = DdlClientes.SelectedValue.ToEntero() If CveCliente > 0 Then Dim ObjVentas As New ClsVentas If ObjVentas.GetVentas(UsuarioActual.CveEmpresa, "Ing", "-1", -1, "-1", CveCliente, -1, -1, -1, "-1", "-1", "-1", CveUsuarioConsulta:=UsuarioActual.CveUsuario) Then DdlFactura.DataSource = ObjVentas.DtResultados.FiltraParametros("", "", {"CveVenta", "SerieFolio"}) End If ObjVentas.Dispose() DdlFactura.DataBind() DdlFactura.Items.Insert(0, New ListItem("Seleccione", "-1")) End If End Sub Protected Sub CargaSucursalesCliente() DdlClientesSucursales.Enabled = True Dim ObjCliente As New ClsClientes If ObjCliente.GetSucursales(DdlClientes.SelectedValue.ToEntero) Then If ObjCliente.DtResultados.Rows.Count > 0 Then DivClienteSucursal.Visible = True UpGenerales.Update() DdlClientesSucursales.DataSource = ObjCliente.DtResultados DdlClientesSucursales.DataBind() DdlClientesSucursales.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlClientesSucursales.SelectedValue = "-1" UpGenerales.Update() End If End If If DdlClientes.SelectedValue.ToEntero > 0 AndAlso GlobalDTCliente(UsuarioActual.CveEmpresa).FiltraParametros($"CveCliente = {DdlClientes.SelectedValue}").Rows.Count > 0 Then Correo = GlobalDTCliente(UsuarioActual.CveEmpresa).FiltraParametros($"CveCliente = {DdlClientes.SelectedValue}").Rows(0)("Mail").ToString End If ObjCliente.Dispose() End Sub Private Sub BtnGeneraPrepoliza_Click(sender As Object, e As EventArgs) Handles BtnGeneraPrepoliza.Click ''PREPOLIZA - SE CAMBIO DE LUGAR EL USO DE ESTA PARTE Dim ObjInventario As New ClsInventarios Dim ErrorMovInv As Boolean = False Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) Dim DtCostos As DataTable = Nothing Dim ValorInventario As Decimal = 0 Dim ValorInventarioME As Decimal = 0 ObjInventario.GetMovimientos(CveMovimiento, -1, -1, UsuarioActual.CveEmpresa) Dim CveVenta As Integer = ObjInventario.CveVenta Dim MovAlmacen As Boolean = True Dim OrigenMov As Integer = GlobalDTInvConceptos.FiltroPrimeroValor("Origen", "CveConcepto = " & CveConcepto).ToEntero If OrigenMov = 1 Then MovAlmacen = False Else MovAlmacen = True If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then DtCostos = ObjInventario.DtResultados Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"}) Dim DTOCs As DataTable = DtCostos.FiltraParametros("", "", {"CveOrdenCompraDetalle"}) Dim IdCtaContable As Integer = 0 If tmpCostos.Rows.Count > 0 Then Dim Concepto As String = $" {TxtObservaciones.Text}" Dim CvePrePoliza = ObjConta.AddPrePolizas("Inv_EntradaSalida", 74, DtCostos.SUM("Total"), DtCostos.SUM("Total"), 1, TxtFecha.Text.ToDate, $"F: {HplVenta.Text}", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) If HdnCveOrdenCompra.Value.ToEntero > 0 Then MovAlmacen = False For Each RowOC As DataRow In DTOCs.Rows ValorInventario = DtCostos.SUM("Total", $"CveOrdenCompraDetalle = {RowOC("CveOrdenCompraDetalle")}").ToString.ToDecimal ValorInventarioME = DtCostos.SUM("TotalExtranjero", $"CveOrdenCompraDetalle = {RowOC("CveOrdenCompraDetalle")}").ToString.ToDecimal If ValorInventarioME > 0 Then If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ValorInventarioME, Concepto, 228, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=ValorInventarioME, ImporteME:=ValorInventarioME, CveOC:=HdnCveOrdenCompra.Value.ToEntero, CveOCDetalle:=RowOC("CveOrdenCompraDetalle").ToString.ToEntero, TipoCambio:=LbTipoCambio.Text.ToDecimal) Then ValorInventario = ValorInventario - ValorInventarioME If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ValorInventario, Concepto, 229, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=ValorInventario, ImporteME:=ValorInventarioME, CveOC:=HdnCveOrdenCompra.Value.ToEntero, CveOCDetalle:=RowOC("CveOrdenCompraDetalle").ToString.ToEntero, TipoCambio:=LbTipoCambio.Text.ToDecimal) Then ErrorMovInv = True Exit For End If Else ErrorMovInv = True Exit For End If Else If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ValorInventario, Concepto, 176, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=ValorInventario, CveOC:=HdnCveOrdenCompra.Value.ToEntero, CveOCDetalle:=RowOC("CveOrdenCompraDetalle").ToString.ToEntero) Then ErrorMovInv = True Exit For End If End If Next Else For Each RowInv As DataRow In tmpCostos.Rows ValorInventario = DtCostos.SUM("Total", $"CveClasificacion = {RowInv("CveClasificacion")}").ToString.ToDecimal IdCtaContable = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaGasto", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not MovAlmacen, ValorInventario, Concepto, 69, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveVenta:=CveVenta, CveClasificacion:=RowInv("CveClasificacion").ToString.ToEntero, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=ValorInventario) Then ErrorMovInv = True Exit For End If Next End If IdCtaContable = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen={DdlAlmacen.SelectedValue.ToEntero}").ToEntero If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, MovAlmacen, DtCostos.SUMD("Total"), Concepto, 68, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=DtCostos.SUMD("Total")) Then ErrorMovInv = True End If End If End If If ErrorMovInv = False Then ObjInventario.Commit() End If ObjInventario.Dispose() ObjConta.Dispose() End Sub #End Region Protected Sub LnkAgregarUsado_Click(sender As Object, e As EventArgs) AgregarUsado = True ResetModalUsados() RegistraScript("$('#DivModalAgregar').modal()", "showmodal") LnkModalAgregarUsado.Text = "Agregar" UpModalAgregar.Update() End Sub Protected Sub LnkModalAgregarUsado_Click(sender As Object, e As EventArgs) AgregarPS() End Sub Protected Sub LnkActuallizarUsado_Click(sender As Object, e As EventArgs) ResetModalUsados() AgregarUsado = False LnkModalAgregarUsado.Text = "Actualizar" Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) Dim CveTamaño As Integer = DtMovimientos.Rows(GvRow.RowIndex)("CveTamaño").ToString.ToEntero IndexDTUsado = GvRow.RowIndex txtCantidad.Text = DtMovimientos.Rows(GvRow.RowIndex)("Cantidad").ToString 'DdlClasificacion.SelectedValueExist(DtMovimientos.Rows(GvRow.RowIndex)("CveClasificacion").ToString) DdlProducto2.SelectedValueExist(DtMovimientos.Rows(GvRow.RowIndex)("CvePS").ToString) CambiarProducto() 'LblMoldalTamanio.Text = DtMovimientos.Rows(GvRow.RowIndex)("Tamaño").ToString DdlUnidad.SelectedValueExist(DtMovimientos.Rows(GvRow.RowIndex)("UnidadMedida").ToString) txtPrecio.Text = DtMovimientos.Rows(GvRow.RowIndex)("PU").ToString TxtObservacionesdetalle.Text = DtMovimientos.Rows(GvRow.RowIndex)("Observaciones").ToString RegistraScript("$('#DivModalAgregar').modal()", "showmodal") UpModalAgregar.Update() End Sub Private Sub ResetModalUsados() txtCantidad.Text = "" ' DdlClasificacion.SelectedIndex = 0 DdlProducto2.SelectedIndex = 0 ' LblMoldalTamanio.Text = "" Try DdlUnidad.SelectedIndex = 0 Catch ex As Exception End Try DdlUnidad.Items.Clear() txtPrecio.Text = "" TxtObservacionesdetalle.Text = "" UpModalAgregar.Update() End Sub Private Sub RBLOpcion_SelectedIndexChanged(sender As Object, e As EventArgs) Handles RBLOpcion.SelectedIndexChanged If RBLOpcion.SelectedValue.ToEntero = 3 Then DivCliente.Visible = False Else DivCliente.Visible = True End If SiguienteFolio() UpGenerales.Update() End Sub Protected Sub BtnConsultarPendientes_Click(sender As Object, e As EventArgs) CargaPendientesRecibir() End Sub Private Sub CargaPendientesRecibir() Dim ObjVentas As New ClsVentas If ObjVentas.GetVentasUsados(-1, DdlSubProyectos.SelectedValue.ToEntero(), TxtFechaPendientes.Text.ToDateTime(), UsuarioActual.CveEmpresa) Then GVPendientes.DataSource = ObjVentas.DtResultados End If ObjVentas.Dispose() GVPendientes.DataBind() UpGenerales.Update() End Sub Protected Sub BtnRecibir_Click(sender As Object, e As EventArgs) DtMovimientos.Rows.Clear() Me.CveRemisionRecibida = -1 Me.CveRemisionRecibida = CType(CType(sender, LinkButton).NamingContainer, GridViewRow).DataKey("CveVenta").ToEntero() Dim DtUsados As DataTable = Nothing Dim CveCliente As Integer = -1 Dim ObjVentas As New ClsVentas If ObjVentas.GetVenta(CveRemisionRecibida, UsuarioActual.CveEmpresa) AndAlso ObjVentas.DtResultados.Rows.Count > 0 Then EsDistribuidor = CBool(ObjVentas.DtResultados.Rows(0)("EsDistribuidor").ToString()) CveCliente = ObjVentas.DtResultados.Rows(0)("CveCliente").ToString().ToEntero() DdlClientes.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveCliente = {0}", CveCliente)) DdlClientes.DataBind() DdlClientes.SelectedValueExist(CveCliente) End If 'SI ES DISTRIBUIDOR VAMOS A GENERAR LA REMISION DE NOTA DE CREDITO If EsDistribuidor Then DivCliente.Visible = True DdlClientes.SelectedValueExist(CveCliente) DdlClientes_SelectedIndexChanged(DdlClientes, EventArgs.Empty) If Me.ObjRemisionNC IsNot Nothing Then Me.ObjRemisionNC.Dispose() Me.ObjRemisionNC = Nothing End If If Me.ObjFactura IsNot Nothing Then Me.ObjFactura.Dispose() Me.ObjFactura = Nothing End If Me.ObjFactura = New Modelos.Factura(UsuarioActual, CveRemisionRecibida, UsuarioActual.CveEmpresa, DirectorioServidor:=Server.MapPath("/")) If Me.ObjFactura IsNot Nothing Then 'CreaRemisionNC(ObjFactura.CveCliente, ObjFactura.CveSubProyecto, ObjFactura.CveMoneda) DivTotal.Visible = True End If Else 'DivCliente.Visible = False 'DivFactura.Visible = False End If If ObjVentas.GetVentasUsadosDetalle(CveRemisionRecibida) Then DtUsados = ObjVentas.DtResultados.Copy() End If ObjVentas.Dispose() If DtUsados IsNot Nothing Then For Each RowUsado As DataRow In DtUsados.Rows Dim CvePS = RowUsado("CvePS").ToString().ToEntero() Dim RowPS = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS).Rows(0) Dim CveTamaño As Integer = RowPS("CveTamaño").ToString().ToEntero() Dim PS As String = RowPS("PS").ToString() Dim CveUM As Integer = RowPS("CveUnidadMedida").ToString().ToEntero() Dim UM As String = RowPS("UnidadMedida").ToString() Dim Cantidad As Double = RowUsado("Cantidad").ToString().ToEntero() Dim PU As Double = RowUsado("PU").ToString().ToDouble() AddNew(CvePS, PS, CveUM, UM, Cantidad, PU, "", "-1", "-1", "-1", "", "", "", DdlAlmacen.SelectedValue.ToEntero, DdlAlmacen.SelectedItem.Text, "", CveTamaño) Next End If UpGenerales.Update() End Sub 'Protected Sub DdlFactura_SelectedIndexChanged(sender As Object, e As EventArgs) ' If EsDistribuidor AndAlso Me.CveRemisionRecibida <= 0 Then ' If Me.ObjRemisionNC IsNot Nothing Then ' Me.ObjRemisionNC.Dispose() ' Me.ObjRemisionNC = Nothing ' End If ' If Me.ObjFactura IsNot Nothing Then ' Me.ObjFactura.Dispose() ' Me.ObjFactura = Nothing ' End If ' 'Dim CveVenta As Integer = DdlFactura.SelectedValue.ToEntero() ' 'ObjFactura = New Modelos.Factura(UsuarioActual, CveVenta, UsuarioActual.CveEmpresa, DirectorioServidor:=Server.MapPath("/")) ' If Me.ObjFactura IsNot Nothing Then ' CreaRemisionNC(ObjFactura.CveCliente, ObjFactura.CveSubProyecto, ObjFactura.CveMoneda) ' DivTotal.Visible = True ' End If ' End If ' UPDatos.Update() 'End Sub Private Sub CreaRemisionNC(CveCliente As Integer, CveSubProyecto As Integer, CveMoneda As Integer) Me.ObjRemisionNC = New Modelos.Factura(UsuarioActual) Dim Folio As String = "" Dim Serie As String = "" Dim ObjFolios As New ClsGralFolios() If ObjFolios.GetFolios("RNC", UsuarioActual.CveEmpresa) Then Dim DT As DataTable = ObjFolios.DtResultados.FiltraParametros(String.Format(" Estado = 'Activo' AND CveSubProyecto = {0}", CveSubProyecto)) If DT.Rows.Count > 0 Then Serie = DT.Rows(0)("Serie").ToString() Folio = DT.Rows(0)("FActual").ToString() End If DT.Dispose() End If ObjFolios.Dispose() Me.ObjRemisionNC.TipoMensajeRespuesta = Modelos.TipoMensajeRespuesta.HTML Me.ObjRemisionNC.Serie = Serie Me.ObjRemisionNC.Folio = Folio.ToEntero() Me.ObjRemisionNC.Version = "3.3" Me.ObjRemisionNC.FolioFiscal = "" Me.ObjRemisionNC.CveUsuario = UsuarioActual.CveUsuario Me.ObjRemisionNC.CveEmpresa = UsuarioActual.CveEmpresa Me.ObjRemisionNC.TipoCambio = 1 Me.ObjRemisionNC.ConvertirPesos = False Me.ObjRemisionNC.CveMoneda = CveMoneda Me.ObjRemisionNC.Moneda = GlobalDTMonedas.FiltroPrimeroValor("Moneda", String.Format("CveMoneda = {0} ", CveMoneda)) Me.ObjRemisionNC.MonedaSAT = GlobalDTMonedas.FiltroPrimeroValor("AbreviaturaSAT", String.Format("CveMoneda = {0} ", CveMoneda)) Me.ObjRemisionNC.TipoDocto = "RNC" Me.ObjRemisionNC.RefDocto = "" Me.ObjRemisionNC.CveMesa = -1 Me.ObjRemisionNC.Fecha = Now Me.ObjRemisionNC.CvePrePoliza = -1 Me.ObjRemisionNC.FechaPago = Now Me.ObjRemisionNC.MotivoDescuento = "" Me.ObjRemisionNC.FechaEjecucion = Now Me.ObjRemisionNC.UsuarioCreo = UsuarioActual.Usuario Me.ObjRemisionNC.CveCondicionEntrega = -1 Me.ObjRemisionNC.CondicionEntrega = "" Me.ObjRemisionNC.NumeroCuenta = "" Me.ObjRemisionNC.CondicionesPago = 0 Me.ObjRemisionNC.FormaPago = 0 Me.ObjRemisionNC.PedidoContrato = "" Me.ObjRemisionNC.NumeroContrato = "" Me.ObjRemisionNC.DescripcionContrato = "" Me.ObjRemisionNC.CveCorte = -1 Me.ObjRemisionNC.TipoDocumento = "Remisión" Me.ObjRemisionNC.Alfa1 = "" Me.ObjRemisionNC.Alfa2 = "" Me.ObjRemisionNC.Alfa3 = "" Me.ObjRemisionNC.CveContrato = -1 Me.ObjRemisionNC.ConvertirPesos = False Me.ObjRemisionNC.CveSubProyecto = CveSubProyecto Me.ObjRemisionNC.CveSubProyectoCobranza = CveSubProyecto Me.ObjRemisionNC.CveSubProyectoEjecucion = CveSubProyecto Me.ObjRemisionNC.SubProyecto = New Modelos.SubProyectoModel(GlobalDTSubProyectos(-1).FiltroPrimero(String.Format("CveSubProyecto = {0}", CveSubProyecto))) Me.ObjRemisionNC.SubProyectoMatriz = New Modelos.SubProyectoModel(GlobalDTSubProyectos(-1, CveSubProyecto:=-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimero("TipoSucursal=1")) 'CLIENTE Me.ObjRemisionNC.CveCliente = CveCliente Me.ObjRemisionNC.SetCliente() Me.ObjRemisionNC.CveAlmacen = -1 Dim ObjCliente As New ClsClientes If ObjCliente.GetClientes(CveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa, -1, TipoCliente:=-1) Then If ObjCliente.DtResultados.Rows.Count > 0 Then Me.ObjRemisionNC.CveFormaPago33 = ObjCliente.CveFormaPago33 Me.ObjRemisionNC.FormaPago33 = GlobalDTVtaFormaPago.FiltroPrimeroValor("FormaPago", String.Format("CveFormaPago = {0}", ObjCliente.CveFormaPago33)) Me.ObjRemisionNC.FormaPagoSAT33 = GlobalDTVtaFormaPago.FiltroPrimeroValor("ClaveFormaPagoSAT", String.Format("CveFormaPago = {0}", ObjCliente.CveFormaPago33)) Me.ObjRemisionNC.CveMetodoPago33 = ObjCliente.CveMetodoPago33 Me.ObjRemisionNC.MetodoPago33 = GlobalDTVtaMetodoPago.FiltroPrimeroValor("MetodoPago", String.Format("CveMetodoPago = {0}", ObjCliente.CveMetodoPago33)) Me.ObjRemisionNC.ClaveMetodoPagoSAT = GlobalDTVtaMetodoPago.FiltroPrimeroValor("ClaveMetodoPagoSAT", String.Format("CveMetodoPago = {0}", ObjCliente.CveMetodoPago33)) Me.ObjRemisionNC.CveUsoCFDI = ObjCliente.CveUsoCFDI Me.ObjRemisionNC.UsoCFDI = GlobalDTSATUsosCFDI.FiltroPrimeroValor("Descripcion", String.Format("CveUsoCFDI = {0}", ObjCliente.CveUsoCFDI)) Me.ObjRemisionNC.ClaveUsoCFDI = GlobalDTSATUsosCFDI.FiltroPrimeroValor("UsoCFDI", String.Format("CveUsoCFDI = {0}", ObjCliente.CveUsoCFDI)) Me.ObjRemisionNC.CveMetodoPago = ObjCliente.CveMetodoPago If GlobalDTMetodosPago.FiltraParametros(String.Format("CveMetodoPago = {0}", ObjCliente.CveMetodoPago)).Rows.Count > 0 Then Me.ObjRemisionNC.MetodoPago = GlobalDTMetodosPago.FiltraParametros(String.Format("CveMetodoPago = {0}", ObjCliente.CveMetodoPago)).Rows(0)("MetodoPago").ToString Else Me.ObjRemisionNC.CveMetodoPago = 1 Me.ObjRemisionNC.MetodoPago = "Efectivo" End If End If End If If ObjCliente.GetSucursales(CveCliente) Then If ObjCliente.DtResultados.Rows.Count > 0 Then Me.ObjRemisionNC.CveClienteSucursal = If(String.IsNullOrEmpty(ObjCliente.DtResultados.FiltroPrimeroValor("CveClienteSucursal", "Estatus = 'Activo'")), -1, ObjCliente.DtResultados.FiltroPrimeroValor("CveClienteSucursal", "Estatus = 'Activo'").ToEntero()) Else Me.ObjRemisionNC.CveClienteSucursal = -1 End If End If ObjCliente.Dispose() 'DETALLES Me.ObjRemisionNC.DtDetalle = CreaDTDetalleRNC() 'VALIDA PROMOCIONES Y EXISTENCIAS Dim ObjVentas As New ClsVentas If ObjVentas.GetPromocionesPS(-1, Now, CveSubProyecto, Me.ObjRemisionNC.CveCliente, Me.ObjRemisionNC.CveVendedor, UsuarioActual.CveEmpresa) Then Me.ObjRemisionNC.DtPromociones = ObjVentas.DtResultados.Copy() End If ObjVentas.Dispose() If RblUsadosAjuste.SelectedValue = "1" Then Me.ObjRemisionNC.Observaciones = "Descuento por garantía" Else Me.ObjRemisionNC.Observaciones = "Devolución por usado" End If Me.ObjRemisionNC.OrdenCompra = "" Me.ObjRemisionNC.PedidoContrato = "" Me.ObjRemisionNC.ObservacionesAlmacen = "" End Sub Private Function AddPSRNC(ByRef TmpDT As DataTable, Cantidad As Decimal, CveUM As Integer, UM As String, CveClasificacion As Integer, Clasificacion As String, CvePS As Integer, PS As String, Obs As String, PU As Decimal, Descuento As Decimal, CveProyecto As Integer, Proyecto As String, CveSubProyecto As Integer, SubProyecto As String, Optional SerieLote As String = "", Optional TiempoEntrega As String = "", Optional EntregaDirecta As Integer = 0, Optional CveContratoDetalle As Integer = 0, Optional CveVentaDetalle As Integer = 0, Optional CveMovimientoDetallePedido As Integer = 0, Optional CveOrdenCompraDetalle As Integer = 0, Optional CveVentaDetalleRemision As Integer = 0, Optional CveVentaDetalleCotizacion As Integer = 0, Optional CuentaPredial As String = "", Optional RegeneraIEPS As Boolean = True, Optional CveVentaDetallePedido2 As Integer = 0, Optional EsCargo As Boolean = False, Optional PorcentajeIVA As Decimal = 0D, Optional CveTamaño As Integer = 0) As Boolean Dim Retorno As Boolean = False If Not CvePS > 0 Then Alert("Ocurrió un error al cargar la información del producto a agregar. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) Return False End If If (Obs.Length + PS.Length > 1000) Then Alert(String.Format("El Nombre y observación del producto tiene longitud de {0} caracteres y excede los 1000 caracteres permitidos.", Obs.Length + PS.Length), TipoMensaje.MsgAdvertencia) Return False End If Dim Row As DataRow = Nothing Dim TotalCalculableImpuestos As Decimal = 0 PU = Math.Round(PU, 6) ' el precio unitario puede llevar hasta 6 decimales permitidos Row = TmpDT.NewRow() Row("CveProyecto") = CveProyecto Row("Proyecto") = Proyecto Row("CveSubProyecto") = CveSubProyecto Row("SubProyecto") = SubProyecto Row("SerieLote") = SerieLote Row("TiempoEntrega") = TiempoEntrega Row("Orden") = TmpDT.Rows.Count + 1 Row("Cantidad") = Cantidad Row("CveUM") = CveUM Row("UM") = UM Row("CveClasificacion") = CveClasificacion Row("Clasificacion") = Clasificacion Row("CvePS") = CvePS Row("Obs") = Obs Dim DrPS As DataRow = Nothing DrPS = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimero("") ' Estado = -1 If DrPS Is Nothing Then Alert("Ocurrió un error al cargar la información del Producto. Por favor vuelva a intentar.", TipoMensaje.MsgAdvertencia) Return False End If DrPS("IEPSPorcentaje") = 0 'verifica si tiene ventaminima If Cantidad > 0 AndAlso DrPS("VentaMinima").ToString.ToDecimal > 0 Then 'verifico que la cantidad sea multiplo de venta minima, es decir ventaminima =5, solo puede vender 5,10,15... If Cantidad Mod DrPS("VentaMinima").ToString.ToDecimal <> 0 Then Alert(String.Format("El producto se vende solo en cantidades de {0}", DrPS("VentaMinima").ToString)) Return False End If End If TotalCalculableImpuestos = (Cantidad * (PU)) - Descuento Row("PU") = PU Row("Codigo") = DrPS("Codigo") Row("NoIdentificacion") = DrPS("Codigo") Row("ClaveSATFraccionArancelaria") = DrPS("ClaveSATFraccionArancelaria") Row("ClaveSATUnidadAduana") = DrPS("ClaveSATUnidadAduana") Row("ClaveSATFraccionArancelariaDescripcion") = DrPS("ClaveSATFraccionArancelariaDescripcion") Row("ClaveSATUnidadAduanaDescripcion") = DrPS("ClaveSATUnidadAduanaDescripcion") Row("Consec") = TmpDT.Rows.Count + 1 Row("PS") = DrPS("PS") Row("CodigoPS") = DrPS("PSCodigo").ToString Row("CveTipoPS") = DrPS("CveTipoPS") Row("CveTipoInvPS") = DrPS("Inv_CveMetodoInventario") Row("CveTamaño") = DrPS("CveTamaño") If CveClasificacion <= 0 Then Row("CveClasificacion") = DrPS("CveClasificacion") If Clasificacion = "" Then Row("Clasificacion") = DrPS("Clasificacion") Row("PorcentajeIVA") = PorcentajeIVA Row("IVA") = Row("PorcentajeIVA") Row("ImporteIVA") = Math.Round(Row("PorcentajeIVA").ToString.ToDecimal * TotalCalculableImpuestos, 2) Row("ImporteRetIVA") = 0 Row("ImporteRetISR") = 0 Row("PorcentajeRetIVA") = 0 Row("PorcentajeRetISR") = 0 Row("PorcentajeIEPS") = DrPS("IEPSPorcentaje") Row("ImporteIEPS") = Math.Round(DrPS("IEPSPorcentaje").ToString.ToDecimal * TotalCalculableImpuestos, 2) Row("IEPS") = Row("ImporteIEPS") Row("Descuento") = Math.Round(Descuento, 2) Row("TipoDescuento") = 0 Row("Total") = (Cantidad * PU) Row("TotalImporte") = Math.Round(Cantidad * PU, 2) 'Row("AsientoContableVentas") = DrPS("AsientoContableVentas") ' Row("IdCtaContVentas") = IdCtaContable ' Row("AplicaParaConcepto") = AplicaParaConcepto Row("SATClaveProdServ") = DrPS("SATClavePS") Row("SATClaveUM") = DrPS("SATClaveUnidadMedida") Row("EntregaDirecta") = EntregaDirecta 'Contratos Row("CveContratoDetalle") = CveContratoDetalle Row("CveVentaDetalle") = CveVentaDetalle Row("CveMovimientoDetallePedido") = CveVentaDetalle Row("CveOrdenCompraDetalle") = CveOrdenCompraDetalle Row("CveVentaDetalleRemision") = CveVentaDetalleRemision Row("CveVentaDetalleCotizacion") = CveVentaDetalleCotizacion Row("CveVentaDetallePedido2") = CveVentaDetallePedido2 Row("CuentaPredial") = CuentaPredial Row("EsCargo") = EsCargo Row("CveTamaño") = CveTamaño 'RECARGAR GV TmpDT.Rows.Add(Row) TmpDT.AcceptChanges() Retorno = True Return Retorno End Function Protected Function CreaDTDetalleRNC() As DataTable Dim TmpDT = New DataTable TmpDT.Columns.Add("CveVenta", GetType(Integer)) TmpDT.Columns.Add("Consec", GetType(Integer)) TmpDT.Columns.Add("Cantidad", GetType(Decimal)) TmpDT.Columns.Add("Codigo", GetType(String)) TmpDT.Columns.Add("CveUM", GetType(Integer)) TmpDT.Columns.Add("UM", GetType(String)) TmpDT.Columns.Add("SATClaveUM", GetType(String)) TmpDT.Columns.Add("CveClasificacion", GetType(Integer)) TmpDT.Columns.Add("Clasificacion", GetType(String)) TmpDT.Columns.Add("CvePS", GetType(Integer)) TmpDT.Columns.Add("PS", GetType(String)) TmpDT.Columns.Add("CodigoPS", GetType(String)) TmpDT.Columns.Add("SATClaveProdServ", GetType(String)) TmpDT.Columns.Add("NoIdentificacion", GetType(String)) TmpDT.Columns.Add("CveTipoPS", GetType(Integer)) TmpDT.Columns.Add("CveTipoInvPS", GetType(Integer)) TmpDT.Columns.Add("SerieLote", GetType(String)) TmpDT.Columns.Add("CuentaPredial", GetType(String)) TmpDT.Columns.Add("Obs", GetType(String)) TmpDT.Columns.Add("TiempoEntrega", GetType(String)) TmpDT.Columns.Add("PU", GetType(Decimal)) TmpDT.Columns.Add("IVA", GetType(Decimal)) TmpDT.Columns.Add("ImporteIVA", GetType(Decimal)) TmpDT.Columns.Add("PorcentajeIVA", GetType(Decimal)) TmpDT.Columns.Add("ImporteRetIVA", GetType(Decimal)) TmpDT.Columns.Add("ImporteRetISR", GetType(Decimal)) TmpDT.Columns.Add("PorcentajeRetIVA", GetType(Decimal)) TmpDT.Columns.Add("PorcentajeRetISR", GetType(Decimal)) TmpDT.Columns.Add("ImporteIEPS", GetType(Decimal)) TmpDT.Columns.Add("IEPS", GetType(Decimal)) TmpDT.Columns.Add("PorcentajeIEPS", GetType(Decimal)) TmpDT.Columns.Add("Descuento", GetType(Decimal)) TmpDT.Columns.Add("TipoDescuento", GetType(Integer)) TmpDT.Columns.Add("TotalImporte", GetType(Decimal)) TmpDT.Columns.Add("Total", GetType(Decimal)) 'Para uso del módulo contable TmpDT.Columns.Add("AsientoContableVentas", GetType(Integer)) TmpDT.Columns.Add("IdCtaContVentas", GetType(Integer)) TmpDT.Columns.Add("AplicaParaConcepto", GetType(Boolean)) TmpDT.Columns.Add("CveProyecto", GetType(Integer)) TmpDT.Columns.Add("Proyecto", GetType(String)) TmpDT.Columns.Add("CveSubProyecto", GetType(Integer)) TmpDT.Columns.Add("SubProyecto", GetType(String)) TmpDT.Columns.Add("CveVentaDetallePadre", GetType(Integer)) 'TipoDescuento: 1 = Descuento * PU; 2 = Descuento por Total del concepto TmpDT.Columns.Add("CvePresupuestoIngreso", GetType(Integer)) TmpDT.Columns.Add("CveFuenteRecaudacion", GetType(Integer)) 'Contratos TmpDT.Columns.Add("CveContratoDetalle", GetType(Integer)) 'Remisiones a Facturas TmpDT.Columns.Add("CveVentaDetalle", GetType(Integer)) TmpDT.Columns.Add("CveVentaDetalleRemision", GetType(Integer)) TmpDT.Columns.Add("CveVentaDetalleCotizacion", GetType(Integer)) 'Pedido2 a Facturas TmpDT.Columns.Add("CveVentaDetallePedido2", GetType(Integer)) TmpDT.Columns.Add("Origen", GetType(Integer)) 'Ordenes Servicio TmpDT.Columns.Add("CveOS", GetType(Integer)) TmpDT.Columns.Add("CveOSDetalle", GetType(Integer)) TmpDT.Columns.Add("SeFacturara", GetType(Integer)) TmpDT.Columns.Add("Folio", GetType(Integer)) TmpDT.Columns.Add("Estatus", GetType(String)) 'Ordenamiento TmpDT.Columns.Add("Orden", GetType(Integer)) TmpDT.Columns.Add("TipoDocto", GetType(String)) 'OC TmpDT.Columns.Add("CveOrdenCompraDetalle", GetType(Integer)) TmpDT.Columns.Add("EntregaDirecta", GetType(Integer)) TmpDT.Columns.Add("CveMovimientoDetallePedido", GetType(Integer)) TmpDT.Columns.Add("CantidadFacturadaRem", GetType(Decimal)) TmpDT.Columns.Add("CantidadFacturadaCot", GetType(Decimal)) TmpDT.Columns.Add("CantidadFacturadaPed2", GetType(Decimal)) TmpDT.Columns.Add("CantidadInventario", GetType(Decimal)) TmpDT.Columns.Add("ClaveSATFraccionArancelaria", GetType(String)) TmpDT.Columns.Add("ClaveSATUnidadAduana", GetType(String)) TmpDT.Columns.Add("ClaveSATFraccionArancelariaDescripcion", GetType(String)) TmpDT.Columns.Add("ClaveSATUnidadAduanaDescripcion", GetType(String)) TmpDT.Columns.Add("CveTamaño", GetType(Integer)) TmpDT.Columns.Add("EsCargo", GetType(Boolean)) Return TmpDT End Function Protected Sub CargaDTDetalleRNC() For Each Row As GridViewRow In GvM.Rows If Row.RowType = DataControlRowType.DataRow Then Dim CvePS As Integer = Row.DataKey("CvePS").ToEntero() Dim Cantidad As Decimal = Row.DataKey("Cantidad").ToDecimal() Dim PU As Decimal = Row.DataKey("PU").ToDecimal() Dim CveTamaño As Integer = Row.DataKey("CveTamaño").ToEntero() Dim SubTotal As Decimal = Cantidad * PU Dim CveUnidadMedida As Integer = 0 Dim CveClasificacion As Integer = 0 Dim UnidadMedida As String = "" Dim Clasificacion As String = "" Dim PS As String = "" Dim PorcentajeIVA As Decimal = 0D Dim IVA As Decimal = 0D If CvePS > 0 Then If SubTotal > 0 Then Dim Dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS).Rows(0) If Dr IsNot Nothing Then CveUnidadMedida = Dr("CveUnidadMedida").ToString.ToEntero CveClasificacion = Dr("CveClasificacion").ToString.ToEntero PS = Dr("PSCodigo").ToString UnidadMedida = Dr("UnidadMedida").ToString Clasificacion = Dr("Clasificacion").ToString End If PorcentajeIVA = 0.16D IVA = SubTotal * PorcentajeIVA End If End If AddPSRNC(ObjRemisionNC.DtDetalle, Cantidad, CveUnidadMedida, UnidadMedida, CveClasificacion, Clasificacion, CvePS, PS, "", PU, 0, -1, "", ObjRemisionNC.CveSubProyecto, ObjRemisionNC.SubProyecto.SubProyecto, PorcentajeIVA:=PorcentajeIVA, CveTamaño:=CveTamaño) End If Next If RblUsadosAjuste.SelectedValue = "1" Then 'agrego un registro extra del importe de ajuste Dim PU As Decimal = TxtImporteAjuste.Text.ToDecimal Dim CveSATNC As String = "84111506" Dim Dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, SATClavePS:=CveSATNC, AplicaParaVenta:=1).FiltroPrimero("") If Dr IsNot Nothing Then Dim CveUnidadMedida, CveClasificacion, CvePS As Integer CveUnidadMedida = Dr("CveUnidadMedida").ToString.ToEntero CveClasificacion = Dr("CveClasificacion").ToString.ToEntero CvePS = Dr("CvePS").ToString.ToEntero Dim PorcentajeIVA As Decimal = 0.16D Dim Obs As String = "Descuento por garantía" AddPSRNC(ObjRemisionNC.DtDetalle, 1, CveUnidadMedida, "", CveClasificacion, "", CvePS, "", Obs, PU, 0, -1, "", ObjRemisionNC.CveSubProyecto, ObjRemisionNC.SubProyecto.SubProyecto, PorcentajeIVA:=PorcentajeIVA) Else End If End If Dim TotalImporte As Decimal = ObjRemisionNC.DtDetalle.SUM("TotalImporte").ToDecimal() Dim ImporteIVA As Decimal = ObjRemisionNC.DtDetalle.SUM("ImporteIVA").ToDecimal() Dim ImporteRetIVA As Decimal = ObjRemisionNC.DtDetalle.SUM("ImporteRetIVA").ToDecimal() Dim ImporteRetISR As Decimal = ObjRemisionNC.DtDetalle.SUM("ImporteRetISR").ToDecimal() Dim ImporteIEPS As Decimal = ObjRemisionNC.DtDetalle.SUM("ImporteIEPS").ToDecimal() Dim Descuento As Decimal = ObjRemisionNC.DtDetalle.SUM("Descuento").ToDecimal() Dim Amortizacion As Decimal = 0 Dim Total As Decimal = (TotalImporte + ImporteIVA + ImporteIEPS) - (ImporteRetIVA + ImporteRetISR + Descuento + Amortizacion) 'DETALLES ObjRemisionNC.SubTotal = TotalImporte ObjRemisionNC.Descuento = Descuento ObjRemisionNC.Amortizacion = Amortizacion ObjRemisionNC.IVA = ImporteIVA ObjRemisionNC.RetIVA = ImporteRetIVA ObjRemisionNC.RetISR = ImporteRetISR ObjRemisionNC.IEPS = ImporteIEPS ObjRemisionNC.Total = Total ObjRemisionNC.TotalOtrosConceptos = 0 End Sub Protected Sub CargaTamaños() Dim objAcum As New ClsAcumuladores If objAcum.TamañoGet(-1, UsuarioActual.Empresa.CveEmpresa) Then DtTamaños = objAcum.DtResultados.Copy() End If objAcum.Dispose() End Sub #Region "Ajustes" Public Sub OnRblUsadosAjuste_Change(sender As Object, e As EventArgs) DdlAlmacen.Items.Clear() If RblUsadosAjuste.SelectedValue = "1" Then If DdlClientes.SelectedValue <> "-1" Then CargaAjuste() DivAjuste.Visible = True 'Llenar el dropdownlist de almacén DdlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 6) CargarDescuento() LnkAgregarUsado.Visible = False UppAcciones.Update() Else Alert("hace falta seleccionar un cliente") RblUsadosAjuste.SelectedValue = "0" End If Else DivAjuste.Visible = False 'Llenar el dropdownlist de almacén DdlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 22) LnkAgregarUsado.Visible = True UppAcciones.Update() End If DdlAlmacen.DataBind() End Sub Private Sub CargaAjuste() CreaDTmpDTAjustes() CargaPSAjuste() CargaBCIAjuste() CargaFolioAjuste() CargaTipoDefecto() CargaTipoDeUso() TxtFechaAjuste.Attributes.Add("onchange", "CalculaMesesUso();") TxtFechaAjuste.Text = Today.ToString("d") End Sub Private Sub CreaDTmpDTAjustes() TmpDTAjustes = New DataTable TmpDTAjustes.Columns.Add("CveFolioGarantia", GetType(Integer)) TmpDTAjustes.Columns.Add("CveTipoUso", GetType(Integer)) TmpDTAjustes.Columns.Add("CveTipoDefecto", GetType(Integer)) TmpDTAjustes.Columns.Add("CodigoEnsamble", GetType(String)) TmpDTAjustes.Columns.Add("CodigoLinea", GetType(String)) TmpDTAjustes.Columns.Add("CodigoInspeccion", GetType(String)) TmpDTAjustes.Columns.Add("Consecutivo", GetType(String)) TmpDTAjustes.Columns.Add("ConsecutivoVenta", GetType(Integer)) TmpDTAjustes.Columns.Add("FechaAjuste", GetType(Date)) TmpDTAjustes.Columns.Add("Meses", GetType(String)) TmpDTAjustes.Columns.Add("PorcentajeAjuste", GetType(Double)) TmpDTAjustes.Columns.Add("NumPoliza", GetType(String)) TmpDTAjustes.Columns.Add("Importe", GetType(Double)) TmpDTAjustes.Columns.Add("CvePS", GetType(Integer)) TmpDTAjustes.Columns.Add("PS", GetType(String)) TmpDTAjustes.Columns.Add("Cantidad", GetType(Decimal)) TmpDTAjustes.Columns.Add("CveUM", GetType(Integer)) TmpDTAjustes.Columns.Add("CveVentaDetalle", GetType(Integer)) TmpDTAjustes.Columns.Add("CveVenta", GetType(Integer)) TmpDTAjustes.Columns.Add("PUFactura", GetType(Double)) End Sub Private Sub CargaAjusteDetalle() Dim Dr As DataRow = Nothing IndexAjuste = 0 For Each Dr2 As DataRow In TmpDTAjustes.Rows If Dr2("ConsecutivoVenta").ToString.ToEntero = ConsecutivoVenta Then Dr = Dr2 Exit For End If IndexAjuste += 1 Next If Dr IsNot Nothing Then IndexAjuste = TmpDTAjustes.Rows.IndexOf(Dr) DdlFolioGarantia.SelectedValueExist(Dr("CveFolioGarantia").ToString) TxtConsecutivoAjuste.Text = Dr("Consecutivo").ToString TxtCodEnsamble.Text = Dr("CodigoEnsamble").ToString DdlTipoUso.SelectedValueExist(Dr("CveTipoUso").ToString) TxtCodLinea.Text = Dr("CodigoLinea").ToString TxtCodInspeccion.Text = Dr("CodigoInspeccion").ToString TxtMesesUso.Text = Dr("Meses").ToString DdlTipoDefecto.SelectedValueExist(Dr("CveTipoDefecto").ToString) TxtPorcentajeAjuste.Text = Dr("PorcentajeAjuste").ToString TxtPoliza.Text = Dr("NumPoliza").ToString TxtImporteAjuste.Text = Dr("Importe").ToString 'DdlFacturas.SelectedValueExist(Dr("CveVenta").ToString) CargaPSAjuste() DdlPSAjuste.SelectedValue = (Dr("CvePS").ToString) TxtFechaAjuste.Text = Dr("FechaAjuste").ToString.ToDate.ToShortDateString txtPrecio.Text = Dr("PUFactura").ToString.ToDecimal.FormatoNumero(2) txtPrecio.Enabled = Not Dr("CveVenta").ToString.ToEntero > 0 End If End Sub Private Sub CargaPSAjuste() DdlPSAjuste.setEsWebService(True) End Sub Protected Sub DdlPSAjuste_selectedindexchange(sender As Object, e As EventArgs) If DdlPSAjuste.SelectedValue.ToEntero > 0 Then Dim CvePSParametro As Integer = DdlPSAjuste.SelectedValue.ToEntero Dim PrecioSugerido As Decimal = 0 Dim drPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSParametro).FiltroPrimero("") If drPS IsNot Nothing Then PrecioSugerido = drPS("Precio").ToString.ToDecimal Dim PS As String = drPS("PS").ToString Dim Arr = PS.Split("-"c) If Arr.Count > 0 Then If (DdlBCIAjuste.Items.FindByText(Arr(1).ToString) IsNot Nothing) Then DdlBCIAjuste.SelectedValueExist(DdlBCIAjuste.Items.FindByText(Arr(1).ToString).Value) End If End If End If Dim MarcaPorcentaje As DataRow = DtPorcentajeMarcas.FiltroPrimero(String.Format("CveMarca = {0}", drPS("CveMarca").ToString)) If MarcaPorcentaje IsNot Nothing Then Dim PorcentajeProducto As Decimal = MarcaPorcentaje("PorcentajeProducto").ToString.ToDecimal / 100 Dim PorcentajeProducto2 As Decimal = MarcaPorcentaje("PorcentajeProducto2").ToString.ToDecimal / 100 Dim PorcentajeProducto3 As Decimal = MarcaPorcentaje("PorcentajeProducto3").ToString.ToDecimal / 100 If PorcentajeProducto > 0 Then Dim MontoDescuento As Decimal = PrecioSugerido * PorcentajeProducto PrecioSugerido -= MontoDescuento If PorcentajeProducto2 > 0 Then MontoDescuento = PrecioSugerido * PorcentajeProducto2 PrecioSugerido -= MontoDescuento If PorcentajeProducto3 > 0 Then MontoDescuento = PrecioSugerido * PorcentajeProducto3 PrecioSugerido -= MontoDescuento End If End If End If End If txtPrecio.Text = PrecioSugerido.FormatoNumero(2) TxtPUFactura.Text = PrecioSugerido.FormatoNumero(2) End If End Sub Private Sub CargaBCIAjuste() DdlBCIAjuste.Items.Clear() Dim ObjGral As New ClsGenerales If ObjGral.BCIUsadoGet(UsuarioActual.CveEmpresa) Then DdlBCIAjuste.DataSource = ObjGral.DtResultados DdlBCIAjuste.Items.Insert(0, New ListItem("Seleccione", "-1")) End If ObjGral.Dispose() DdlBCIAjuste.DataBind() End Sub Private Sub CargaFolioAjuste() DdlFolioGarantia.Items.Clear() Dim ObjAcum As New ClsAcumuladores If ObjAcum.FoliosGarantiaGet(-1, UsuarioActual.CveEmpresa) Then DdlFolioGarantia.DataSource = ObjAcum.DtResultados DdlFolioGarantia.Items.Insert(0, New ListItem("Seleccione", "-1")) End If ObjAcum.Dispose() DdlFolioGarantia.DataBind() End Sub Protected Sub DdlFolioGarantia_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlFolioGarantia.SelectedIndexChanged Dim ObjAcumuladores As New ClsAcumuladores If ObjAcumuladores.GetNuevoConsecutivoFolio(DdlFolioGarantia.SelectedValue.ToEntero) Then Dim resultado As String = ObjAcumuladores.DtResultados.FiltroPrimeroValor("NuevoConsecutivo") TxtConsecutivoAjuste.Text = (resultado.ToEntero + 1).ToString UpAjuste.Update() End If ObjAcumuladores.Dispose() End Sub Protected Sub CargaTipoDeUso() DdlTipoUso.Items.Clear() DdlTipoUso.DataSource = GlobalDTAcumTiposUso.FiltraParametros($"CveEmpresa = {UsuarioActual.CveEmpresa}") DdlTipoUso.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlTipoUso.DataBind() End Sub Protected Sub DdlTipoUso_SelectedIndexChanged(sender As Object, e As EventArgs) CalculaPorcentajeAjuste() End Sub Protected Sub CargaTipoDefecto() DdlTipoDefecto.DataSource = GlobalDTAcumTiposDefecto.FiltraParametros($"CveEmpresa = {UsuarioActual.CveEmpresa}") DdlTipoDefecto.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlTipoDefecto.DataBind End Sub Private Sub CalculaPorcentajeAjuste() Try If DdlTipoUso.SelectedValue.ToEntero > 0 AndAlso DdlPSAjuste.SelectedValue.ToEntero > 0 AndAlso TxtMesesUso.Text <> "" Then Dim CveMarca As Integer = -1 CveMarca = GlobalDTPS(UsuarioActual.CveEmpresa, DdlPSAjuste.SelectedValue.ToEntero).FiltroPrimeroValor("CveMarca", "").ToEntero Dim ObjAcum As New ClsAcumuladores If ObjAcum.GarantiasMesesGet(-1, UsuarioActual.CveEmpresa, CveMarca, DdlTipoUso.SelectedValue.ToEntero, TxtMesesUso.Text.ToEntero) Then If ObjAcum.DtResultados.Rows.Count > 0 Then TxtPorcentajeAjuste.Text = (ObjAcum.DtResultados.Rows(0)("Valor").ToString.ToDouble / 100.0).FormatoNumero TxtImporteAjuste.Text = (TxtPorcentajeAjuste.Text.ToDecimal * TxtPUFactura.Text.ToDecimal).FormatoNumero Dim CargoVendido As Decimal = 0 Dim CargoGarantia As Decimal = 0 Dim CveTamaño As Integer = 0 If DdlPSAjuste.SelectedValue.ToEntero > 0 Then Dim Dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, DdlPSAjuste.SelectedValue.ToEntero).FiltroPrimero("") If Dr IsNot Nothing Then CargoGarantia = Dr("Cargo").ToString.ToDecimal End If End If If DdlPSAjuste.SelectedValue.ToEntero > 0 Then Dim Dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, DdlPSAjuste.SelectedValue.ToEntero).FiltroPrimero("") If Dr IsNot Nothing Then CveTamaño = Dr("CveTamaño").ToString.ToEntero End If End If Dim DrCargo As DataRow = GlobalDTAcumTamaños.FiltroPrimero($"CveEmpresa = {UsuarioActual.CveEmpresa} AND CveTamaño = {CveTamaño}") If DrCargo IsNot Nothing Then CargoVendido = DrCargo("Cargo").ToString.ToDecimal End If 'el ajuste no puede ser mayor al precio de lo vendido de nuevo If (txtPrecio.Text.ToDouble - ((TxtPUFactura.Text.ToDouble - TxtImporteAjuste.Text.ToDouble) - (CargoVendido - CargoGarantia))) < 0 Then TxtImporteAjuste.Text = "0.00" CargoGarantia = CargoVendido End If TxtImporteAjuste.ToolTip = $"La diferencia de ajuste fue: {(txtPrecio.Text.ToDouble - TxtImporteAjuste.Text.ToDouble).FormatoNumero()}. La diferencia de tamaños fue: {(CargoVendido - CargoGarantia).FormatoNumero}." TxtImporteAjuste.Text = ((TxtPUFactura.Text.ToDouble - TxtImporteAjuste.Text.ToDouble) - (CargoVendido - CargoGarantia)).FormatoNumero Else 'cuando no está registrada, no da ajuste TxtImporteAjuste.ToolTip = "El producto no tiene ajuste en ese periodo" TxtImporteAjuste.Text = "0.00" End If End If ObjAcum.Dispose() End If Catch ex As Exception OnError("Ocurrió un error al recalcular el costo", ex) End Try UpAjuste.Update() End Sub Protected Sub BtnCalculaMesesUso_Click(sender As Object, e As EventArgs) CalculaMesesUso() End Sub Protected Sub BtnCalcularImporteAjuste_Click(sender As Object, e As EventArgs) CalculaPorcentajeAjuste() End Sub Private Sub CalculaMesesUso() Dim FechaI As Date = TxtFechaAjuste.Text.ToDate.AddDays(1) Dim FechaF As Date = Now Dim Dia As Integer = FechaI.Day 'validación adicional, para saber si el mes tiene 31 días y el actua es menor. If FechaI.Day > Today.LastDayOfMonth.Day Then Dia = Today.LastDayOfMonth.Day Dim FechaT As Date = String.Format("{0}/{1}/{2}", Dia, FechaF.Month, FechaF.Year).ToDate 'armo la fecha con el día del mes actual Dim MesesTrascurridos As Integer = Math.Round(DateDiff(DateInterval.Day, FechaI, FechaT) / 30.4, 2).ToEntero 'saco los meses y lo redondeo If FechaT > FechaF Then 'todavía está en el mes actual. MesesTrascurridos = MesesTrascurridos Else MesesTrascurridos = MesesTrascurridos + 1 End If TxtMesesUso.Text = MesesTrascurridos.ToString CalculaPorcentajeAjuste() End Sub Protected Sub BtnAgregarProductoAjuste_Click(sender As Object, e As EventArgs) Dim CvePS As Integer = DdlPSAjuste.SelectedValue.ToEntero Dim ObjPS As New ClsProductosServicios Dim CveTamaño As Integer = -1 If ObjPS.GetPS(CvePS, -1, UsuarioActual.CveEmpresa) Then CveTamaño = ObjPS.DtResultados.FiltroPrimeroValor("CveTamaño").ToEntero End If Dim drDatos As DataRow = GlobalDTAcumTamaños().FiltroPrimero(String.Format("CveTamaño = {0} AND CveEmpresa = {1}", CveTamaño, UsuarioActual.CveEmpresa)) If drDatos IsNot Nothing Then Dim Importe As Decimal = drDatos("Cargo").ToString.ToDecimal Dim drTamañoPS As DataRow = Nothing DtMovimientos.Rows.Clear() If ObjPS.GetPS(drDatos.Item("CvePSCargo").ToString.ToEntero, -1, UsuarioActual.CveEmpresa) Then drTamañoPS = ObjPS.DtResultados.FiltroPrimero("") 'CveTamaño = -1 'limpio esta variable para que no se registre dos veces en la clase Modelos AddNew(drTamañoPS.Item("CvePS").ToString.ToEntero, drTamañoPS.Item("PSCodigo").ToString, drTamañoPS.Item("CveUM").ToString.ToEntero, drTamañoPS.Item("UnidadMedida").ToString, 1.0, Importe, "", "-1", "-1", "-1", "", "", "", -1, "", "", CveTamaño) End If End If ObjPS.Dispose() End Sub Protected Sub CargarDescuento() Dim ObjPS As New ClsProductosServicios If ObjPS.GetPorcentajeMarcas(DdlClientes.SelectedValue.ToEntero) Then DtPorcentajeMarcas = ObjPS.DtResultados.Copy() End If ObjPS.Dispose() End Sub #End Region End Class