Files
SIG/Inventarios/EntradasSalidas.aspx.vb

6212 lines
297 KiB
VB.net

Option Explicit On
Option Strict On
Imports System.Data
Imports System.IO
Imports Extensiones
Imports GemBox.Spreadsheet
Partial Class Inventarios_EntradasSalidas
Inherits ClsPaginas
#Region "Propiedades"
Private _dtDatos As DataTable
Private Property NumRow As Integer
Public Property DtMovimientos() As DataTable
Get
Return CType(ViewState("DtMovimientos"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtMovimientos") = 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 DtMovimientosEntradaCambioVigencias() As DataTable
Get
Return CType(ViewState("DtMovimientosEntradaCambioVigencias"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtMovimientosEntradaCambioVigencias") = value
End Set
End Property
Public Property DtMovimientosCambioVigencias() As DataTable
Get
Return CType(ViewState("DtMovimientosCambioVigencias"), DataTable)
End Get
Set(value As DataTable)
ViewState("DtMovimientosCambioVigencias") = 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 IfNull(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
Public Property CveEntregaAlmacen() As Integer
Get
Return IfNull(ViewState("CveEntregaAlmacen"), "-1", ViewState("CveEntregaAlmacen")).ToString().ToEntero()
End Get
Set(value As Integer)
ViewState("CveEntregaAlmacen") = 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 Decimal
Get
Return CType(ViewState("CostoPromedioSerieLote"), Decimal)
End Get
Set(value As Decimal)
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
Public Property EsNuevoMov As Boolean
Get
Return CBool(ViewState("EsNuevoMov").ToString)
End Get
Set(value As Boolean)
ViewState("EsNuevoMov") = value
End Set
End Property
Private Property IndexSeccionAlmacen As Integer
Get
Return CType(ViewState("IndexSeccionAlmacen"), Integer)
End Get
Set(value As Integer)
ViewState("IndexSeccionAlmacen") = value
End Set
End Property
Private Property CantidadTotal As Decimal
Get
Return CType(ViewState("CantidadTotal"), Decimal)
End Get
Set(value As Decimal)
ViewState("CantidadTotal") = value
End Set
End Property
Private Property CvePS As Integer
Get
Return CType(ViewState("CvePS"), Integer)
End Get
Set(value As Integer)
ViewState("CvePS") = value
End Set
End Property
Private Property Tipo As Integer
Get
Return CType(ViewState("Tipo"), Integer)
End Get
Set(value As Integer)
ViewState("Tipo") = value
End Set
End Property
Private Property CvePrePoliza As Integer
Get
Return CType(ViewState("CvePrePoliza"), Integer)
End Get
Set(value As Integer)
ViewState("CvePrePoliza") = value
End Set
End Property
Private Property DescripcionDetalladaEliminar As String
Get
Return CType(ViewState("DescripcionDetalladaEliminar"), String)
End Get
Set(value As String)
ViewState("DescripcionDetalladaEliminar") = value
End Set
End Property
Public Property CveMovimientoDetalleEdit() As Integer
Get
Return IfNull(ViewState("CveMovimientoDetalleEdit"), 0).ToString.ToEntero
End Get
Set(value As Integer)
ViewState("CveMovimientoDetalleEdit") = value
End Set
End Property
Public Property IndexActualTabla() As Integer
Get
If ViewState("IndexActualTabla") Is Nothing Then
ViewState("IndexActualTabla") = -1
End If
Return ViewState("IndexActualTabla").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("IndexActualTabla") = value
End Set
End Property
Public Property CveAFEdit() As Integer
Get
Return ViewState("CveAFEdit").ToString.ToEntero
End Get
Set(value As Integer)
ViewState("CveAFEdit") = value
End Set
End Property
Public Property AplicaVigenciaCambioVigencia() As Boolean
Get
If ViewState("CveAFEdit") Is Nothing Then
ViewState("CveAFEdit") = False
End If
Return Boolean.Parse(ViewState("CveAFEdit").ToString)
End Get
Set(value As Boolean)
ViewState("CveAFEdit") = value
End Set
End Property
Public Property CveTipoAlmacenSeleccionado As Integer
Get
Return IfNull(ViewState("CveTipoAlmacenSeleccionado"), -1).ToString.ToEntero
End Get
Set(value As Integer)
ViewState("CveTipoAlmacenSeleccionado") = value
End Set
End Property
Property RequiereRemolque As Boolean
Get
If ViewState("RequiereRemolque") Is Nothing Then
ViewState("RequiereRemolque") = False
End If
Return Boolean.Parse(ViewState("RequiereRemolque").ToString)
End Get
Set(value As Boolean)
ViewState("RequiereRemolque") = value
End Set
End Property
Property MostrarRemolques As Boolean
Get
If ViewState("MostrarRemolques") Is Nothing Then
ViewState("MostrarRemolques") = False
End If
Return Boolean.Parse(ViewState("MostrarRemolques").ToString)
End Get
Set(value As Boolean)
ViewState("MostrarRemolques") = value
End Set
End Property
Private Property CveMovimientoTimbrado As Integer
Get
Return CType(ViewState("CveMovimientoTimbrado"), Integer)
End Get
Set(value As Integer)
ViewState("CveMovimientoTimbrado") = value
End Set
End Property
Property EsApoyoLogistico As Boolean
Get
If ViewState("EsApoyoLogistico") Is Nothing Then
ViewState("EsApoyoLogistico") = False
End If
Return Boolean.Parse(ViewState("EsApoyoLogistico").ToString)
End Get
Set(value As Boolean)
ViewState("EsApoyoLogistico") = value
End Set
End Property
#End Region
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not IsPostBack Then
If UsuarioActual.CveUsuario = 100 AndAlso IfNull(Request("Regenera"), "").ToString = "1" Then
RegeneraRM(Request("CveMovimiento").ToString.ToEntero, 119)
Exit Sub
End If
CveMovimiento = -1
CveMovimientoRelacionado = -1
TieneRelacionado = -1
TieneSalida = False
EstatusAlmacenCompra = -1
EsConsumoInterno = False
EsNuevoMov = False
CvePrePoliza = -1
CveEntregaAlmacen = -1
CreaDT()
CargaCombos()
'TxtFecha.Text = Mov.Fecha.ToDateTime.ToString("yyyy-MM-dd HH:mm:ss").Replace(" ", "T")
TxtFecha.Text = NowADS().ToDateTime.ToString("yyyy-MM-dd HH:mm:ss").Replace(" ", "T")
TxtFechaInvFisico.Text = NowADS().ToShortDateString
'RVFecha.MaximumValue = NowADS().ToShortDateString
If Not UsuarioActual.CveEmpresa = 48 Then
TxtFecha.Enabled = False
'ImgFecha.Visible = False
End If
If UsuarioActual.Empresa.Funcionalidad(382) = "1" Then
BtnModalExcelAjuste.Visible = True
End If
CantidadTotal = 0
IndexSeccionAlmacen = 0
Tipo = 0
If IfNull(Request("AL"), "").ToString = "1" Then
DivEmitirTransitorio.Visible = True
EsApoyoLogistico = True
DivCliente.Visible = True
End If
'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
If Request("CveMovimiento") IsNot Nothing AndAlso Request("CveMovimiento").ToString.ToEntero > 0 Then
CargaDatos(Request("CveMovimiento").ToString.ToEntero)
'CargaGvPaqueteria()
ImgAddObs.Visible = True
LtlTareaNueva.Text = String.Format("<a class=""caption-subject bold font-green"" onclick=""OpenModalNewTareaUserControl(1,-1,{{CveVenta:{0}}});""> <i class=""fa fa-plus""></i> Tarea</a>", CveMovimiento)
LtlTareaNueva.Visible = True
HlEvento.Visible = True
HlEvento.NavigateUrl = "/OI/PopUpAgenda.aspx?CveTipoEvento=2&CveMovimiento=" & CveMovimiento & "&TB_iframe=true&height=370&width=600;"
Else
AsignacionOpcion()
SiguienteFolio()
End If
'SI YA ES MOVIMIENTO REGISTRADO NO ESCONDE COLUMNA AF
If CveMovimiento > 0 Then
BloqueaEdicionEncabezado()
If UsuarioActual.CveEmpresa.Contiene(66, 13) Then
TrSubProyecto.Visible = True
VisualizaAF(True)
CargaSubProyectos()
End If
End If
InicializaClientes()
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
If Request("CveEntregaAlmacen") IsNot Nothing AndAlso Request("CveEntregaAlmacen").ToString.ToEntero > 0 Then
CargaDatosEntregaAlmacen(Request("CveEntregaAlmacen").ToString.ToEntero)
End If
'BLOQUEA PERMISOS
BtnGuardar.Enabled = PermiteGuardar()
BtnEliminar.Enabled = PermiteEliminar()
BtnContabilizar.Enabled = PermiteContabilizar()
BtnNuevo.Enabled = PermiteCrearNuevo()
LnkCambioInventarioFisico.Visible = UsuarioActual.TienePermisoProceso(312)
If CveMovimiento > 0 Then
PermisoVerImportes()
End If
If UsuarioActual.Empresa.Funcionalidad(281).ToEntero = 1 Or (UsuarioActual.Empresa.Funcionalidad(382) = "1" And Not UsuarioActual.TienePermisoProceso(405)) Then
TxtFecha.Enabled = False
'ImgFecha.Visible = False
TxtFechaInvFisico.Enabled = False
ImgFechaInvFisico.Visible = False
UpGenerales.Update()
UpModalInventarioFisico.Update()
End If
'HABILITA EL CAMBIO DE VIGENCIAS
If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then
LnkCambioVigencia.Visible = True
End If
If EsConsumoInterno AndAlso UsuarioActual.TienePermisoProceso(340) Then
TxtFecha.Enabled = True
'ImgFecha.Visible = True
End If
If CveMovimiento > 0 And CveConcepto.Contiene(8) And UsuarioActual.Empresa.Funcionalidad(578).ToEntero = 1 Then
ValidaUsaConsola()
End If
End If
End Sub
Property Consola As String
Get
If ViewState("Consola") Is Nothing Then
ViewState("Consola") = ""
End If
Return ViewState("Consola").ToString
End Get
Set(value As String)
ViewState("Consola") = value
End Set
End Property
Private Function ValidaUsaConsola() As Boolean
Consola = ""
Dim Respuesta As Boolean = False
For Each gvRow As GridViewRow In GvM.Rows
If gvRow.DataKey("Codigo").Contiene("404Q2", "404Q3", "405Q2", "405Q3", "306Q1", "306Q2") Then
Consola = "ARS600"
Respuesta = True
HplImprimirConsola.Visible = True
Exit For
End If
If gvRow.DataKey("Codigo").Contiene("106Q1A", "106Q2A", "106Q3", "106Q3WT", "106Q4", "106Q4A", "106Q5A", "106Q6A", "106Q7A") Then
Consola = "ARS800"
Respuesta = True
HplImprimirConsola.Visible = True
Exit For
End If
Next
If Respuesta Then
HplImprimirConsola.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=Alm&CveMovimiento={0}&Consola={1}", CveMovimiento, Consola)))
End If
Return Respuesta
End Function
#Region " PERMISOS PAGINAS "
Private Function PermiteGuardar() As Boolean
Return If(UsuarioActual.TienePermisoProceso(181) Or EsConsumoInterno, True, False)
End Function
''' <summary>
''' Este permiso solo habilita el Btn del GV. Debe ir en conjunto con el permiso 181 [PermiteGuardar]
''' </summary>
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 PermisoVerImportes()
Dim TienePermisoImportes As Boolean = UsuarioActual.TienePermisoProceso(201)
' tdPU.Visible = TienePermisoImportes
' tdTxtPU.Visible = TienePermisoImportes
GvM.Columns(4).Visible = TienePermisoImportes
ThTotal.Visible = TienePermisoImportes
TdTotal.Visible = TienePermisoImportes
GvM.Columns(5).Visible = TienePermisoImportes
End Sub
Private Sub CargaDdlPaqueteria()
'DdlPaqueteria.DataSource = GlobalDTPaqueterias
'DdlPaqueteria.DataBind()
'DdlPaqueteria.Items.Insert(0, New ListItem("Seleccione uno", "-1"))
End Sub
#End Region
Sub AsignacionOpcion()
DdlConcepto.SelectedValueExist("-1")
If UsuarioActual.CveEmpresa.Contiene(66, 13) Then
TrSubProyecto.Visible = True
VisualizaAF(True)
CargaSubProyectos()
End If
End Sub
#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("Serie", Type.GetType("System.String"))
dt.Columns.Add("Lote", Type.GetType("System.String"))
dt.Columns.Add("FechaCaducidad", Type.GetType("System.DateTime"))
dt.Columns.Add("AplicaCaducidad", Type.GetType("System.String"))
dt.Columns.Add("Observaciones")
dt.Columns.Add("CountMovimientoEntradaDetalle")
dt.Columns.Add("TienePrePoliza", Type.GetType("System.Int32"))
dt.Columns.Add("TotalExtranjero", Type.GetType("System.Double"))
dt.Columns.Add("CveCultivoCuadroDetalle", Type.GetType("System.Int32"))
CargaGVM(dt)
DtMovimientos = dt.Clone
DtMovimientosEntradaInvFisico = dt.Clone
DtMovimientosSalidaInvFisico = dt.Clone
DtMovimientosCambioVigencias = dt.Clone
DtMovimientosCambioVigencias.Columns.Add("CvePSVigencia", Type.GetType("System.Int32"))
DtMovimientosCambioVigencias.Columns.Add("CodigoPSVigencia", Type.GetType("System.String"))
DtMovimientosCambioVigencias.Columns.Add("CveUMVigencia", Type.GetType("System.Int32"))
End Sub
Private Sub CargaCombos()
'Llenar el dropdownlist de Secciones
'If UsuarioActual.CveEmpresa = 66 Then
' DdlClasificacion.DataSource = GlobalDTSubFamilias(UsuarioActual.CveEmpresa).FiltraParametros("", Orderby:="Clasificacion")
'Else
' Dim ObjClasificaciones As New ClsClasificaciones
' If ObjClasificaciones.GetClasificacionesExistencias(UsuarioActual.CveEmpresa) Then
' DdlClasificacion.DataSource = ObjClasificaciones.DtResultados
' End If
' ObjClasificaciones.Dispose()
'End If
'DdlClasificacion.DataBind()
'DdlSeccionAlmacen.DataSource = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa, -1)
'DdlSeccionAlmacen.DataBind()
DdlSeccionAlmacenEntrada.DataSource = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa, -1)
DdlSeccionAlmacenEntrada.DataBind()
DdlSeccionAlmacenSalida.DataSource = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa, -1)
DdlSeccionAlmacenSalida.DataBind()
'Llenar el dropdownlist de monedas
DdlMoneda.DataSource = GlobalDTMonedas
DdlMoneda.DataBind()
'MOVIMIENTO
DdlConcepto.DataSource = GlobalDTInvConceptos.FiltraParametros(IIf(UsuarioActual.CveEmpresa.Contiene(72, 80, 1), "CveConcepto NOT IN (4,5,10)", "CveConcepto NOT IN (1,2,4,5,8,9,10,12,26,27,29)").ToString)
DdlConcepto.DataBind()
'Llenar el dropdownlist de almacén
If Not IfNull(Request("CI"), -1).ToString.ToEntero > 0 AndAlso Not IfNull(Request("CveEntregaAlmacen"), -1).ToString.ToEntero > 0 Then
DdlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen NOT IN (9,11)") 'GlobalDTAlmacen(UsuarioActual.CveEmpresa)
'ElseIf UsuarioActual.CveUsuario.Contiene(1) Then
' DdlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen NOT IN (9,11) or CveAlmacen = 651e") 'GlobalDTAlmacen(UsuarioActual.CveEmpresa)
End If
If IfNull(Request("CI"), -1).ToString.ToEntero > 0 And UsuarioActual.Empresa.Funcionalidad(590) = "1" Then
DdlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen NOT IN (9,11)")
End If
If EsApoyoLogistico Then
DdlAlmacen.Items.Clear()
DdlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen IN (27)") 'GlobalDTAlmacen(UsuarioActual.CveEmpresa)
End If
DdlAlmacenInventarioFisico.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen NOT IN (9,11)") 'GlobalDTAlmacen(UsuarioActual.CveEmpresa)
DdlAlmacenCambioVigencias.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen NOT IN (9,11)")
DdlAlmacen.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlAlmacenInventarioFisico.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlAlmacenCambioVigencias.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlAlmacen.SelectedValue = "-1"
DdlAlmacenInventarioFisico.SelectedValue = "-1"
DdlAlmacenCambioVigencias.SelectedValue = "-1"
DdlAlmacen.DataBind()
DdlAlmacenInventarioFisico.DataBind()
DdlAlmacenCambioVigencias.DataBind()
If IsNothing(Request("CveMovimiento")) And IsNothing(Request("CveEntregaAlmacen")) Then
DdlAlmacen.SelectedValueExist(UsuarioActual.CveAlmacen)
DdlAlmacen_SelectedIndexChanged(DdlAlmacen, EventArgs.Empty)
End If
If DdlAlmacen.SelectedValue.ToEntero = -1 Then
DdlConcepto.Items.Clear()
DdlConcepto.Items.Insert(0, New ListItem("Seleccione", "-1"))
End If
CargaPS()
' CargaDdlPaqueteria()
DdlChofer.DataSource = GlobalDTChoferes(UsuarioActual.CveEmpresa)
DdlChofer.DataBind()
DdlChofer.Items.Insert(0, New ListItem("Seleccione", "-1"))
TxtFechaEntrega.Text = NowADS().ToShortDateString
TxtFechaLlegada.Text = NowADS().ToShortDateString
CargarCamiones()
DdlClienteCarta.setEsWebService(True)
End Sub
Private Sub CargaPS()
DdlProducto2.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1")
DdlPS.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1")
DdlPSSalida.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1")
DdlPSCambioSalida.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1")
If UsuarioActual.CveEmpresa = 66 Then
DdlProducto2.ddlWS.Attributes.Add("data-pagina", "Inventarios")
End If
If Not DdlProducto2.UsaWebService AndAlso CType(DdlProducto2.DataSource, DataTable) Is Nothing Then
DdlProducto2.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoPS = 2")
DdlPS.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoPS = 2")
DdlPSSalida.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoPS = 2")
DdlPSCambioSalida.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoPS = 2")
DdlProducto2.DataBind()
DdlPS.DataBind()
DdlPSSalida.DataBind()
DdlPSCambioSalida.DataBind()
DdlProducto2.ddl.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlPS.ddl.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlPSSalida.ddl.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlPSCambioSalida.ddl.Items.Insert(0, New ListItem("Seleccione", "-1"))
End If
End Sub
Private Sub CargaSubProyectos()
CargarCentrosDeCosto(Nothing, DdlSubProyecto, Nothing, LblSubProyecto)
'DdlSubProyecto.DataSource = If(UsuarioActual.Empresa.Funcionalidad(102) = "1" AndAlso Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos( UsuarioActual.CveEmpresa, Estatus:=1))
'DdlSubProyecto.DataBind()
'DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1"))
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 = GlobalDTRHPersonal(UsuarioActual.CveEmpresa)
DdlPersonal.DataBind()
'DdlSubProyecto.Items.Insert(0, New ListItem("Seleccione", "-1"))
End Sub
#End Region
#Region " CARGA DATOS "
Private Sub CargaDatos(tCveMovimiento As Integer, Optional pCveConcepto As Integer = -1, Optional pFolio As Integer = -1)
Dim Mov As New ClsInventarios
DtMovimientos.Clear()
TieneSalida = False
EstatusAlmacenCompra = -1
If UsuarioActual.CveEmpresa = 48 Then
GvM.Columns(8).Visible = False
End If
If Mov.GetMovimientos(tCveMovimiento, pCveConcepto, pFolio, UsuarioActual.CveEmpresa) AndAlso Mov.DtResultados.Rows.Count = 1 Then
CveMovimiento = Mov.CveMovimiento
DtMov = Mov.DtResultados
TxtFecha.Text = Mov.Fecha.ToDateTime.ToString("yyyy-MM-dd HH:mm:ss").Replace(" ", "T")
'TxtFecha.Text = Mov.Fecha.ToShortDateString
'TxtHora.Text = Mov.Fecha.ToString("HH:mm")
EstatusAlmacenCompra = Mov.EstatusAlmacenCompra
Folio = Mov.Folio
Dim drM As DataRow = DtMov.Rows(0)
If DtMov.Rows(0)("CveConcepto").ToString.ToEntero = 2 Then
HplTraspaso.Visible = True
HplTraspaso.NavigateUrl = $"/Inventarios/TraspasoAlmacen.aspx?CveEntrada={DtMov.Rows(0)("CveMovimiento").ToString}"
End If
'DATOS DE REGISTRO
DivRegistro.Visible = True
LnkAgregarNuevoMov.Visible = True
LblUsuarioRegistro.Text = Mov.NombreCapturo
LblFechaRegistro.Text = Mov.FechaRegistro.ToShortDateString
If DtMov.Rows(0)("CvePrePoliza").ToString.ToEntero > 0 Then
HplPrePoliza.Visible = True
HplPrePoliza.NavigateUrl = String.Format("/Contabilidad/RegPrepolizaS.aspx?CvePrePoliza={0}", DtMov.Rows(0)("CvePrePoliza"))
CvePrePoliza = DtMov.Rows(0)("CvePrePoliza").ToString.ToEntero
Else
If UsuarioActual.CveRol = 1 Then
BtnGeneraPrepoliza.Visible = True
End If
End If
If UsuarioActual.CveRol = 1 AndAlso UsuarioActual.CveEmpresa = 140 AndAlso Mov.CveMovimientoVirtual <= 0 Then
LnkGenerarVirtual.Visible = True
End If
'DATOS DE CONSIGNACION
If DtMov.Rows(0)("SerieFolio").ToString.Length > 0 Then
RowConsignacion.Visible = True
'LbConsignacion.Text = DtMov.Rows(0)("SerieFolio").ToString
HLConsignacion.Text = DtMov.Rows(0)("SerieFolio").ToString
HLConsignacion.NavigateUrl = String.Format("/Inventarios/Consignaciones.aspx?CveConsignacion={0}", DtMov.Rows(0)("CveConsignacion").ToString)
End If
'TIPO CAMBIO
If DtMov.Rows(0)("TipoCambio").ToString.Length > 0 Then
RowTipoCambio.Visible = True
LbTipoCambio.Text = DtMov.Rows(0)("TipoCambio").ToString
End If
Dim TMDsTR As String = DtMov.Rows(0)("CveMtoRel").ToString
If TMDsTR.Length > 0 Then
RowMtoRel.Visible = True
lnkMtoRelacionado.NavigateUrl = "/Inventarios/EntradasSalidas.aspx?CveMovimiento=" & TMDsTR
CveMovimientoRelacionado = TMDsTR.ToEntero
End If
If Mov.CveMovimientoVirtual > 0 Then
DivMovtoVirtual.Visible = True
HplMtoVirtual.NavigateUrl = "/Inventarios/EntradasSalidas.aspx?CveMovimiento=" & Mov.CveMovimientoVirtual
HplMtoVirtual.Text = Mov.FolioVirtual.ToString
End If
If Mov.CveMovimientoTransitorio > 0 Then
DivMovtoTransitorio.Visible = True
HplMtoTransitorio.NavigateUrl = "/Inventarios/EntradasSalidas.aspx?CveMovimiento=" & Mov.CveMovimientoTransitorio
HplMtoTransitorio.Text = Mov.FolioTransitorio.ToString
End If
If DtMov.Rows(0)("CveOrdendeCorte").ToString.ToEntero() > 0 Then
DivOrdenCorte.Visible = True
LblFolioOrdenCorte.Text = DtMov.Rows(0)("FolioOrdendeCorte").ToString
End If
If DtMov.Rows(0)("CveOS").ToString.ToEntero() > 0 Then
divOS.Visible = True
HplOS.Text = DtMov.Rows(0)("OSFolio").ToString
HplOS.NavigateUrl = $"/OS/OrdenesServicios.aspx?CveOS={DtMov.Rows(0)("CveOS")}"
End If
If (DdlAlmacen.Items.FindByValue(Mov.CveAlmacen.ToString()) Is Nothing) Then
Dim dr As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveEstatus:=-1).FiltroPrimero(String.Format("CveAlmacen = {0}", Mov.CveAlmacen))
If dr IsNot Nothing Then
DdlAlmacen.Items.Insert(0, New ListItem(dr("Almacen").ToString, dr("CveAlmacen").ToString)) ' lo genera Obj.SelectedValue = Valor.ToString
DdlAlmacen.Enabled = False
End If
End If
DdlAlmacen.SelectedValue = Mov.CveAlmacen.ToString
DdlMoneda.SelectedValue = Mov.CveMoneda.ToString
'DATOS MONEDA EXTRANJERA
DdlMonedaTC.SelectedValue = Mov.CveMoneda.ToString
If DdlMonedaTC.SelectedValue.ToEntero = 2 Then
DivTipoCambio.Visible = True
TxtTipoCambio.Text = Mov.TipoCambio.ToString.FormatoNumero
DdlMonedaTC_SelectedIndexChanged(DdlMonedaTC, EventArgs.Empty)
DdlMonedaTC.Enabled = False
TxtTipoCambio.Enabled = False
VisualizaPUExtranjero(UsuarioActual.TienePermisoProceso(201))
Else
DivTipoCambio.Visible = False
VisualizaPUExtranjero(False)
End If
TxtGuia.Text = Mov.Guia
TxtObservaciones.Text = Mov.Observaciones
TxtResponsable.Text = Mov.Recibio
If Mov.CveAlmacenDestino > 0 Then
divDestino.Visible = True
LtlAlmacenDestino.Text = Mov.AlmacenDestino
If DtMov.Rows(0)("Origen").ToString = "1" Then
LblDestino.Text = "Origen:"
End If
End If
CveMovimientoRelacionado = Mov.CveMovimientoRelacionado
FolioRelacionado = Mov.FolioRelacionado
TieneRelacionado = Mov.TieneRelacionado
ConceptoRelacionado = Mov.ConceptoRelacionado
'sino existe el movimiento
If (DdlConcepto.Items.FindByValue(Mov.CveConcepto.ToString()) Is Nothing) Then
Dim dr As DataRow = GlobalDTInvConceptos.FiltroPrimero(String.Format("CveConcepto = {0}", Mov.CveConcepto))
DdlConcepto.Items.Insert(0, New ListItem(dr("Concepto").ToString, dr("CveConcepto").ToString)) ' lo genera Obj.SelectedValue = Valor.ToString
End If
'CONDICION ESPECIAL , PARA DEVOLUCIONES DE PRÉSTAMO PROVEEDORES
If DdlConcepto.SelectedValue = "29" Then
TieneRelacionado = 0 'PARA ELIMINACIÓN NO LO RELACIONE, EN EL PA, TAMBIEN SE TIENE ESTA CONSIDERACIÓN
CveMovimientoRelacionado = 0
End If
DdlConcepto.SelectedValue = Mov.CveConcepto.ToString
ddlConcepto_SelectedIndexChanged(DdlConcepto, EventArgs.Empty)
TxtFolio.Text = Mov.Folio.ToString
HdnIdPoliza.Value = Mov.IDPoliza.ToString
HplImprimir.Visible = True
HplImprimir.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimiento)))
HplImprimirResumen.Visible = True
HplImprimirResumen.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=Almr&CveMovimiento={0}", CveMovimiento)))
CveCompra = Mov.CveCompra
CveConcepto = Mov.CveConcepto
If drM("CveEstatusTimbrado").ToString.ToEntero > 0 Then
HplDescargaXml.Visible = True
HplDescargaXml.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=DesXmlTra&CVEMOVIMIENTO={0}&EXT={1}&FOLIO={2}&TIPODOCTO={3}", CveMovimiento, "XML", drM("TimbreSerieFolio"), drM("TimbreTipoDocto"))))
If drM("AplicaCP").ToString = "True" Then
HplCartaPorteTimbre.Visible = True
HplCartaPorteTimbre.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=CARPOTIMBRE&CVEMOV={0}&CVETIMBRE={1}", CveMovimiento, drM("CveTimbre"))))
Else
HplDescargaPdf.Visible = True
HplDescargaPdf.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=DesPdfTra&CVEMOVIMIENTO={0}&EXT={1}&FOLIO={2}&TIPODOCTO={3}&CVETIMBRE={4}", CveMovimiento, "PDF", drM("TimbreSerieFolio"), drM("TimbreTipoDocto"), drM("CveTimbre"))))
HplCartaPorte.Visible = True
HplCartaPorte.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=CARPO&CVEMOV={0}", CveMovimiento)))
End If
If UsuarioActual.CveRol = 1 Then
LnkGenerarPDF.Visible = True
End If
End If
If CveConcepto.Contiene(26, 27, 8, 9) Then
LnkAgregarProducto.Visible = False ' si es traspaso no se debe permitir agregar, ni entregas por adelantado
End If
If CveConcepto.Contiene(3, 8) Then
LiLnkGuias.Visible = True
End If
If Mov.IDPoliza > 0 Then HplPoliza.Visible = True : HplPoliza.NavigateUrl = String.Format("/Contabilidad/RegPoliza.aspx?IdPoliza={0}", Mov.IDPoliza)
If CveConcepto = 6 Or CveConcepto = 7 Then
If Mov.DtResultados(0)("Nombre").ToString() <> "" Then
LtTipo.Text = Mov.DtResultados(0)("Nombre").ToString()
LblTipo.InnerText = "Cliente:"
ElseIf Mov.DtResultados(0)("RazonSocial").ToString() <> "" Then
LtTipo.Text = Mov.DtResultados(0)("RazonSocial").ToString()
LblTipo.InnerText = "Proveedor:"
Else
LtTipo.Text = Mov.NombreCompleto
LblTipo.InnerText = "Personal"
End If
TrTipoCargado.Visible = True
TrPersonal.Visible = False
End If
If Mov.CveSubProyecto > 0 Then
'verifico si existe
If (DdlSubProyecto.Items.FindByValue(Mov.CveSubProyecto.ToString()) Is Nothing) Then
Dim dr As DataRow = GlobalDTSubProyectos(UsuarioActual.CveEmpresa, CveSubProyecto:=Mov.CveSubProyecto, Estatus:=-1).FiltroPrimero("")
DdlSubProyecto.Items.Insert(0, New ListItem(dr("SubProyecto").ToString, dr("CveSubProyecto").ToString)) ' lo genera Obj.SelectedValue = Valor.ToString
End If
DdlSubProyecto.SelectedValue = Mov.CveSubProyecto.ToString
TrSubProyecto.Visible = True
End If
'LblCodigo.Text = If(Mov.CodigoAF = 0, "-1", Mov.CodigoAF.ToString)
'HdnCveActivoFijo.Value = If(Mov.CveActivoFijo = 0, "-1", Mov.CveActivoFijo.ToString)
If Mov.CveCompra > 0 Then
HplCompra.Visible = True
HplCompra.Text = DtMov.Rows(0)("SerieFolioCompra").ToString
HdnCveCompra.Value = Mov.CveCompra.ToString
If UsuarioActual.TienePermisoProceso(201) Then
HplCompra.NavigateUrl = String.Format("/Compras/Compras.aspx?CveCompra={0}", Mov.CveCompra)
End If
End If
If Mov.CveVenta > 0 Then
HplVenta.Visible = True
HplVenta.Text = DtMov.Rows(0)("FolioVenta").ToString
If UsuarioActual.TienePermisoProceso(201) Then
HplVenta.NavigateUrl = String.Format("/Ventas/Ventas.aspx?CveVenta={0}", Mov.CveVenta)
End If
End If
If Mov.CveOrdenCompraLiga > 0 Then
HplOrdenCompra.Visible = True
HdnCveOrdenCompra.Value = Mov.CveOrdenCompraLiga.ToString
HplOrdenCompra.Text = $"OC: {DtMov.Rows(0)("FolioOC")}"
If UsuarioActual.TienePermisoProceso(201) Then
HplOrdenCompra.NavigateUrl = String.Format("/OC/OC.aspx?OC={0}", Mov.CveOrdenCompraLiga)
End If
End If
If Mov.IDPoliza = 0 AndAlso UsuarioActual.Empresa.UsaAC Then
BtnContabilizar.Visible = PermiteContabilizar()
Else
BtnContabilizar.Visible = False
End If
VisualizaPU(True)
If DtMov.Rows(0)("Remision").ToString.Length > 0 Then
TxtRemision.Text = DtMov.Rows(0)("Remision").ToString
DivRemision.Visible = True
End If
'Carga Cliente y ClienteSucursal
If Mov.CveCliente > 0 Then
If DdlClientes.Items.FindByValue(Mov.CveCliente.ToString()) Is Nothing Then
Dim dr As DataRow = GlobalDTCliente(UsuarioActual.CveEmpresa, CveCliente:=Mov.CveCliente, Estatus:=-1).FiltroPrimero("")
If dr IsNot Nothing Then
DdlClientes.Items.Insert(0, New ListItem(dr("NombreComercial").ToString, dr("CveCliente").ToString))
End If
End If
DivCliente.Visible = True
DdlClientes.Enabled = False
DdlClientes.SelectedValueExist(Mov.CveCliente.ToString)
End If
If Mov.CveVendedor > 0 Then
LblVendedor.Text = GlobalDTVendedores(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Vendedor", String.Format("CveVendedor = {0}", Mov.CveVendedor))
DivVendedor.Visible = True
End If
'carga personal
If Mov.CvePersonal > 0 Then
DdlPersonal.DataSource = GlobalDTRHPersonal(UsuarioActual.CveEmpresa, CvePersonal:=Mov.CvePersonal)
DdlPersonal.DataBind()
DdlPersonal.SelectedValueExist(Mov.CvePersonal)
DdlPersonal.Enabled = False
TrPersonal.Visible = True
End If
If Mov.CveClienteSucursal > 0 Then
CambiaCliente()
'INSERTA SUCURSAL
If (DdlClientesSucursales.Items.FindByValue(Mov.CveClienteSucursal.ToString()) Is Nothing) Then
Dim ObjCliente As New ClsClientes
If ObjCliente.GetSucursales(Mov.CveCliente.ToString().ToEntero, Mov.CveClienteSucursal) Then
Dim dr As DataRow = ObjCliente.DtResultados.FiltroPrimero(String.Format("CveClienteSucursal = {0}", Mov.CveClienteSucursal))
If dr IsNot Nothing Then
DdlClientesSucursales.Items.Insert(0, New ListItem(dr("SucursalCliente").ToString, dr("CveClienteSucursal").ToString))
End If
End If
ObjCliente.Dispose()
End If
DdlClientesSucursales.Enabled = False
DdlClientesSucursales.SelectedValueExist(Mov.CveClienteSucursal.ToString)
End If
'DivDepartamentoEntrega.Visible = True
'TxtDepartamentoEntrega.Enabled = False
'TxtDepartamentoEntrega.Text = Mov.DepartamentoEntrega
'TxtPedidoContrato.Enabled = False
'TxtPedidoContrato.Text = Mov.PedidoContrato
If Mov.CveProveedor > 0 Then
DdlProveedor.DataSource = GlobalDTCompProveedores(UsuarioActual.CveEmpresa, Mov.CveProveedor)
DdlProveedor.DataBind()
DdlProveedor.SelectedValueExist(Mov.CveProveedor)
DdlProveedor.Enabled = False
TrProveedor.Visible = True
End If
'cargar también los movimentos detalle
If Mov.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then
DtMovimientos = Mov.DtResultados
DtMovimientos.Columns("No").AutoIncrement = True
DtMovimientos.Columns("No").AutoIncrementSeed = DtMovimientos.Rows.Count + 1
DtMovimientos.Columns("No").AutoIncrementStep = 1
Dim keys(1) As DataColumn
keys(0) = DtMovimientos.Columns("No")
DtMovimientos.PrimaryKey = keys
CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' "))
End If
PermisoVerImportes()
If IfNull(Request("Conta"), "0").ToString = "1" Then
Contabilizar()
End If
Else
Alert("Movimiento No encontrado", TipoMensaje.MsgError)
TxtObservaciones.Text = ""
TxtFolio.Text = ""
BtnGuardar.Visible = False
BtnEliminar.Visible = False
BtnContabilizar.Visible = False
DivRegistro.Visible = False
DivTipoCambio.Visible = False
CargaGVM(Nothing)
GvM.Columns(8).Visible = False
GvM.DataBind()
CveMovimiento = 0
End If
BtnGuardar.Visible = PermiteGuardar()
If UsuarioActual.TienePermisoProceso(182) Then
If TieneSalida Or TieneRelacionado > 0 Or EstatusAlmacenCompra = 2 Then
DivMensaje.Visible = True
BtnEliminar.Enabled = False
BtnEliminar.Visible = False
LtMensaje.Text = "El movimiento no se puede eliminar porque uno de sus conceptos ya tiene salida y/o el movimiento esta relacionado con otro."
Else
BtnEliminar.Visible = True
BtnEliminar.Enabled = True
If CveMovimientoRelacionado > 0 Then
BtnEliminar.ToolTip = $"El movimiento esta relacionado con el Folio de <b>{ConceptoRelacionado}</b> No. <b><a href = ""/Inventarios/EntradasSalidas.aspx?CveMovimiento={CveMovimientoRelacionado}"" target=""_blank"">{FolioRelacionado}</a></b> <br/><br/> ¿Esta seguro de eliminar los dos movimientos?"
End If
LtMensaje.Text = ""
End If
Else
BtnEliminar.Visible = False
End If
'BLOQUEA FECHA CUANDO YA SE TIENE POLIZA
If HdnIdPoliza.Value.ToEntero > 0 And Not PermiteGuardar() Then
TxtFecha.Enabled = False
'ImgFecha.Enabled = False
Else
TxtFecha.Enabled = True
'ImgFecha.Enabled = True
TxtObservaciones.Enabled = True
End If
If CvePrePoliza > 0 Then
Dim ObjContabilidad As New ClsContabilidad
If ObjContabilidad.GetPrePoliza(CvePrePoliza, UsuarioActual.CveEmpresa) Then
Dim dr As DataRow = ObjContabilidad.DtResultados.FiltroPrimero("")
If dr IsNot Nothing Then
If dr("IdPoliza").ToString.ToEntero > 0 Then
BtnEliminar.Visible = False
End If
End If
End If
ObjContabilidad.Dispose()
End If
'SI TIENE PREPOLIZA NO SE DEBE PODER EDITAR
If Mov.TienePrePoliza > 0 Then
'[IPP] Se invalida por necesidad de JAM de modificar fechas para cuadrar con CIFRA - 19Abril2018
'BtnGuardar.Visible = False
End If
If UsuarioActual.Empresa.Funcionalidad(281).ToEntero = 1 Or (UsuarioActual.Empresa.Funcionalidad(382) = "1" And Not UsuarioActual.TienePermisoProceso(405)) Then
TxtFecha.Enabled = False
'ImgFecha.Visible = False
TxtFechaInvFisico.Enabled = False
ImgFechaInvFisico.Visible = False
End If
UpModalInventarioFisico.Update()
BloqueaEdicionEncabezado()
Mov.Dispose()
UpGenerales.Update()
UPDatos.Update()
UppGrid.Update()
UpRegistroTipoCambio.Update()
End Sub
Private Sub CargaDatosEntregaAlmacen(tCveEntregaAlmacen As Integer)
'RECARGA ALMACENES SOLO DE recepcion de usados
DdlAlmacen.Items.Clear()
DdlAlmacen.DataBind()
Dim dttA As DataTable = Nothing
dttA = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen IN (4)") '("CveTipoAlmacen IN (1,22,27)")
DdlAlmacen.DataSource = dttA
DdlAlmacen.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlAlmacen.DataBind()
DdlAlmacen.SelectedIndex = 1 'toma el primer renglón
DdlConcepto.Items.Insert(0, New ListItem("Entrada Usados", "42"))
DdlConcepto.SelectedValue = "42"
Dim ObjGenerales As New ClsGenerales()
If (ObjGenerales.GetEntregaAlmacenRutaDetalle(tCveEntregaAlmacen)) Then
CveEntregaAlmacen = tCveEntregaAlmacen
For Each dr As DataRow In ObjGenerales.DtResultados.Rows
AddNew(dr("CvePS").ToString.ToEntero, dr("CodigoPS").ToString, dr("CveUnidadMedida").ToString.ToEntero, dr("Abreviatura").ToString, dr("Cantidad").ToString.ToDecimal,
0, "", "", "", "", "E", "", MinFecha, 0, "")
Next
End If
ObjGenerales.Dispose()
End Sub
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
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
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 = NowADS().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()
txtCantidad.Text = ""
TxtnLote.Text = ""
LblCodigo.Text = ""
TxtnSerie.Text = ""
TxtnFechaCaducidad.Text = ""
HdnCodigoAF.Value = "-1"
HdnCveActivoFijo.Value = "-1"
txtPrecio.Text = ""
divSerie.Visible = False
divLote.Visible = False
divSeccionAlmacen.Visible = False
divCaducidad.Visible = False
UpAgregar.Update()
End Sub
Protected Sub BtnEliminar_Click(sender As Object, e As EventArgs) Handles BtnEliminar.Click
RegistraScript("$('#divDescripcion').modal()")
Dim Description As String = String.Format("Movimiento con Concepto: {0}, Almacen: {1}, Fecha: {2}, Folio: {3}, Usuario: {4}, Observaciones adicionales: {5}, Productos Información:<br/>",
DdlConcepto.SelectedItem, DdlAlmacen.SelectedItem, TxtFecha.Text, TxtFolio.Text, LblUsuarioRegistro.Text, TxtObservaciones.Text)
For Each dr As DataRow In DtMovimientos.Rows
Dim detalleDescripcion As String = String.Format("- Cant: {0}, PS: {1}, PU: {2}, UM: {3}<br/>", dr("Cantidad").ToString.ToEntero, dr("CodigoPS"), dr("PU"), dr("UnidadMedida"))
Description = String.Format("{0}{1}", Description, detalleDescripcion)
Next
DescripcionDetalladaEliminar = Description
UpDescripcion.Update()
'Dim Inv As New ClsInventarios
'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 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()
End Sub
Private Sub BtnRemove_Click(sender As Object, e As EventArgs) Handles BtnRemove.Click
Dim Borrar As Boolean = False
If Not TxtDescripcion.Text = "" Then
Dim Inv As New ClsInventarios
Dim Conta As New ClsContabilidad(Inv.IniciaTransacSQL())
Dim ObjGral As New ClsGenerales(Inv.IniciaTransacSQL())
Dim TieneError As Boolean = False
Dim ObjConta As ClsContPAQi = Nothing
If UsuarioActual.Empresa.TipoContabilidad = 2 AndAlso (UsuarioActual.Empresa.UsaContabilidad Or UsuarioActual.Empresa.UsaAC) Then
ObjConta = New ClsContPAQi(UsuarioActual.Empresa)
ObjConta.IniciaTransacSQL()
End If
If Not ObjGral.AddHistorialBitacora(Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, "", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 1, String.Format("{0}, Informacion = {1}", TxtDescripcion.Text, DescripcionDetalladaEliminar), "Inventarios", TxtFolio.Text + " / " + DdlConcepto.SelectedItem.Text) Then
TieneError = True
End If
If Not TieneError Then
If Not Conta.UpdatePrePolizasDetalleBloquear(CvePrePoliza, False) Then
TieneError = True
End If
End If
If Inv.MovimientoRemove(CveMovimiento, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario) 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 ObjConta IsNot Nothing Then ObjConta.Commit()
Inv.Commit()
Alert("Movimientos Eliminado", TipoMensaje.MsgInformacion)
RegistraScript(String.Format("$('#{0}').modal('hide');", "divDescripcion"))
LimpiarMovimiento()
Else
If ObjConta IsNot Nothing Then ObjConta.RollBack()
Inv.RollBack()
Alert("Ocurrió un error al eliminar el movimiento. Por favor vuelva a intentar.", TipoMensaje.MsgError)
End If
CveMovimiento = 0
If ObjConta IsNot Nothing Then ObjConta.Dispose()
Inv.Dispose()
ObjGral.Dispose()
Conta.Dispose()
End If
End Sub
#End Region
#Region " AGREGAR - GUARDAR "
Private Function GetExistencias(CvePS As Integer, CveUnidadMedida As Integer, CveEmpresa As Integer, CveAlmacen As Integer, Optional CveSeccionAlmacen As Integer = -1, Optional Serie As String = "-1", Optional Lote As String = "-1", Optional FechaCaducidad As Date = MinFecha) As Decimal
Dim FechaMovimiento As DateTime = TxtFecha.Text.Replace(",", "").ToDateTime
Dim FechaMovtoStr As String = $"{FechaMovimiento.ToString("yyyy/MM/dd")} {FechaMovimiento.ToString("HH:mm")}"
Dim Inv As New ClsInventarios
Dim Existencia As Decimal = Inv.GetExistenciasPS(CvePS, CveUnidadMedida, CveEmpresa, CveAlmacen, CveSeccionAlmacen:=CveSeccionAlmacen, FechaMovto:=FechaMovtoStr, Serie:=Serie, Lote:=Lote, FechaCaducidad:=FechaCaducidad)
Inv.Dispose()
Return Existencia
End Function
'Protected Sub btnAgregar_Click(sender As Object, e As EventArgs) Handles LbAgregar.Click
' AgregarPS()
'End Sub
Protected Sub LkAgregarDetalle_Click(sender As Object, e As EventArgs) Handles LkAgregarDetalle.Click
If CveMovimiento > 0 Then
If CveMovimientoDetalleEdit > 0 Then
ActualizarPS()
Else
AgregarPS()
End If
Else
If IndexActualTabla >= 0 Then
ActualizarPS()
Else
AgregarPS()
End If
End If
End Sub
Protected Sub BtnSerieAddNew_Click(sender As Object, e As EventArgs)
AgregarPS()
End Sub
Private Sub AgregarPS()
Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlProducto2.SelectedValue.ToEntero).FiltroPrimero("")
If ChkEmitirTimbrado.Checked AndAlso ChkEmitirCartaPorte.Checked Then
If Not ValidaPSSAT(DrPS) Then
Exit Sub
End If
End If
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
AddNew(DdlProducto2.SelectedValue.ToEntero, DdlProducto2.SelectedText, DdlUnidad.SelectedValue.ToEntero, DdlUnidad.SelectedItem.Text, txtCantidad.Text.ToDecimal,
txtPrecio.Text.ToDecimal, TxtnSerie.Text.Replace(" ", String.Empty), LblCodigo.Text, HdnCodigoAF.Value, HdnCveActivoFijo.Value, TxtObservacionesdetalle.Text,
TxtnLote.Text.Trim, TxtnFechaCaducidad.Text.ToDate, DdlSeccionAlmacen.SelectedValue.ToEntero, DdlSeccionAlmacen.SelectedItem.Text, CveCultivoCuadroDetalle:=DdlModalCultivosCuadro.SelectedValue.ToEntero)
LimpiarAgregar()
txtCantidad.Text = ""
TxtnLote.Text = ""
LblCodigo.Text = ""
TxtnSerie.Text = ""
TxtnFechaCaducidad.Text = ""
HdnCodigoAF.Value = "-1"
HdnCveActivoFijo.Value = "-1"
txtPrecio.Text = ""
DdlModalCultivosCuadro.SelectedValueExist(-1)
RegistraScript("CodigoAF = '';")
If Not UsuarioActual.Empresa.Funcionalidad(105).ToString = "1" Then
DdlProducto2.SelectedValue = "-1"
Else
DdlProducto2.SelectedValue = ""
DdlProducto2.SelectedText = ""
End If
If ChkContinuarRegistrando.Checked Then
txtCantidad.Focus()
Else
RegistraScript("$('#ModalAgregar').modal('hide');")
End If
End Sub
Protected Sub AddNew(CvePS As Integer, PS As String, CveUM As Integer, UM As String, Cantidad As Decimal, PU As Decimal, Serie As String, CodigoAF As String, Codigo As String, CveAF As String, Observaciones As String, Lote As String, FechaCaducidad As Date, CveSeccionAlmacen As Integer, SeccionAlmacen As String, Optional CargarGV As Boolean = True, Optional CveCultivoCuadroDetalle As Integer = -1, Optional IndexEspecidico As Integer = -1)
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 RowPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS).FiltroPrimero("")
If RowPS Is Nothing Then Exit Sub
Dim CveMetodoInventario As Integer = RowPS("Inv_CveMetodoInventario").ToString().ToEntero()
Dim FechaCaducidadVal As Date = If(RowPS("AplicaCaducidad").ToString = "True", FechaCaducidad, MinFecha)
PS = RowPS("CodigoPS").ToString
If RowPS("AplicaSerie").ToString = "True" And (String.IsNullOrEmpty(Serie.Trim()) OrElse Serie = "-1") Then
'SI NO ES USADO O GARANTIA O SALIDA APOYO LOGISTICO
If Not Me.CveTipoAlmacenSeleccionado.Contiene(6, 22, 21) Then
Valido = False
Alert("El producto requiere Serie", TipoMensaje.MsgAdvertencia)
End If
End If
If RowPS("VentaMinima").ToString.ToDecimal > 0 Then
If Cantidad Mod RowPS("VentaMinima").ToString().ToDecimal <> 0 Then
Alert(String.Format("El producto se vende solo en cantidades de {0}", RowPS("VentaMinima").ToString()))
Valido = False
End If
End If
Dim tCveSubProyecto As Integer
Dim drA2 As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", DdlAlmacen.SelectedValue))
If drA2 IsNot Nothing Then
tCveSubProyecto = drA2("CveSubProyecto").ToString.ToEntero
'codigo temporal
If UsuarioActual.CveEmpresa = 140 AndAlso drA2("CveTipoAlmacen").ToString = "21" Then
Serie = ""
End If
End If
'salida
If Valido AndAlso DdlConcepto.SelectedValue.Contiene({"3", "5", "7", "8", "11", "12", "13", "15", "16", "17", "20", "21", "30", "31"}) Then ' salida de almacen
Dim Existencia As Decimal = GetExistencias(CvePS, CveUM, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero, -1, If(Serie = "", "-1", Serie), If(Lote = "", "-1", Lote), FechaCaducidadVal)
' LbAgregar.ToolTip = Existencia.ToString
Dim Acunmulado As Decimal = DtMovimientos.SUM("Cantidad", $"CvePS = {CvePS} AND CveUM = {CveUM} {If(Serie <> "", $" AND Serie = '{Serie}'", "")}")
If FechaCaducidadVal > MinFecha Then
Acunmulado = DtMovimientos.SUM("Cantidad", $"CvePS = {CvePS} AND CveUM = {CveUM} and Lote = '{Lote}' and FechaCaducidad = '{FechaCaducidadVal}' ")
End If
If Existencia - Cantidad - Acunmulado < 0 Then
If Existencia <= 0 Then
Alert("No hay existencia del producto: " & PS, TipoMensaje.MsgAdvertencia)
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
Valido = False
Else
Alert(String.Format("Solo hay en existencia: {0} - {1}", Existencia, PS), TipoMensaje.MsgAdvertencia)
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
If Not UsuarioActual.TienePermisoProceso(114) Then
Cantidad = Existencia
End If
End If
Valido = If(UsuarioActual.TienePermisoProceso(114), True, False)
End If
End If
If IndexEspecidico >= 0 Then
Dim CveClasificacion As Integer
'Dim dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS).FiltroPrimero("", "PS")
If RowPS IsNot Nothing Then CveClasificacion = RowPS("CveClasificacion").ToString.ToEntero
If Valido Then
DtMovimientos.Rows(IndexEspecidico)("Cantidad") = Cantidad
DtMovimientos.Rows(IndexEspecidico)("CveUM") = CveUM
DtMovimientos.Rows(IndexEspecidico)("UnidadMedida") = UM
DtMovimientos.Rows(IndexEspecidico)("CvePS") = CvePS
If Codigo = "-1" Then
DtMovimientos.Rows(IndexEspecidico)("CodigoPS") = PS
Else
DtMovimientos.Rows(IndexEspecidico)("CodigoPS") = String.Format("{0} - {1}", Codigo, PS)
End If
DtMovimientos.Rows(IndexEspecidico)("PS") = PS
DtMovimientos.Rows(IndexEspecidico)("PU") = PU
DtMovimientos.Rows(IndexEspecidico)("PUExtranjero") = PU
DtMovimientos.Rows(IndexEspecidico)("Total") = Cantidad * PU
DtMovimientos.Rows(IndexEspecidico)("CveClasificacion") = CveClasificacion
DtMovimientos.Rows(IndexEspecidico)("Estatus") = ""
DtMovimientos.Rows(IndexEspecidico)("CveSeccionAlmacen") = CveSeccionAlmacen
DtMovimientos.Rows(IndexEspecidico)("SeccionAlmacen") = SeccionAlmacen
DtMovimientos.Rows(IndexEspecidico)("CodigoAF") = CodigoAF
DtMovimientos.Rows(IndexEspecidico)("Codigo") = Codigo
DtMovimientos.Rows(IndexEspecidico)("CveAF") = CveAF
DtMovimientos.Rows(IndexEspecidico)("Serie") = If(Serie <> "", Serie, "")
DtMovimientos.Rows(IndexEspecidico)("Lote") = If(Lote <> "", Lote, "")
DtMovimientos.Rows(IndexEspecidico)("FechaCaducidad") = FechaCaducidad
DtMovimientos.Rows(IndexEspecidico)("Observaciones") = Observaciones
DtMovimientos.Rows(IndexEspecidico)("AplicaCaducidad") = RowPS("AplicaCaducidad").ToString
DtMovimientos.Rows(IndexEspecidico)("CveCultivoCuadroDetalle") = CveCultivoCuadroDetalle
DtMovimientos.AcceptChanges()
If CargarGV Then
CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' "))
RegistraScript("playsonidito('beep-07.wav')")
End If
End If
Else
If Valido Then
Dim CveClasificacion As Integer
'Dim dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS).FiltroPrimero("", "PS")
If RowPS IsNot Nothing Then CveClasificacion = RowPS("CveClasificacion").ToString.ToEntero
'VALIDA QUE LA SERIE NO SEA IGUAL AL CODIGO O CODIGOBARRAS
If Serie <> "" And (Serie.ToUpper = RowPS("Codigo").ToString.ToUpper Or Serie.ToUpper = RowPS("CodigoBarras").ToString.ToUpper) Then
Alert($"La serie indicada <b>{Serie}</b> coincide con el codigo o codigo de barras del producto. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
If String.IsNullOrEmpty(PS.Trim()) Then
PS = RowPS("PS").ToString()
End If
Dim registro As DataRow = DtMovimientos.NewRow
registro.Item("Cantidad") = Cantidad
registro.Item("CveUM") = CveUM
registro.Item("UnidadMedida") = UM
registro.Item("CvePS") = CvePS
If Codigo = "-1" Then
registro.Item("CodigoPS") = PS
Else
registro.Item("CodigoPS") = String.Format("{0} - {1}", Codigo, PS)
End If
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("Serie") = If(Serie <> "", Serie, "")
registro.Item("Lote") = If(Lote <> "", Lote, "")
registro.Item("FechaCaducidad") = FechaCaducidad
registro.Item("Observaciones") = Observaciones
registro.Item("AplicaCaducidad") = RowPS("AplicaCaducidad").ToString
registro.Item("CveCultivoCuadroDetalle") = CveCultivoCuadroDetalle
DtMovimientos.Rows.Add(registro)
If CargarGV Then
CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' "))
RegistraScript("playsonidito('beep-07.wav')")
End If
End If
End If
End Sub
Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) Handles BtnGuardar.Click
If Not IsDate(TxtFecha.Text.Replace(",", "")) Then
Alert("Debe seleccioanr una fecha valida", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
If TxtFecha.Text.Replace(",", "").ToDate.ToString("dd/MM/yyyy").ToDate > NowADS().ToString("dd/MM/yyyy").ToDate Then
Alert("El campo <b>''Fecha''</b> no puede ser mayor al dia actual. Por favor verifcar", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
If EsNuevoMov Then
CveMovimiento = 0
End If
If EsConsumoInterno And DdlPersonal.SelectedValue.ToEntero <= 0 Then
Alert("El personal es requerido. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
If CveMovimiento <= 0 Then
If Request("CveEntregaAlmacen") IsNot Nothing AndAlso Request("CveEntregaAlmacen").ToString.ToEntero > 0 Then
Dim TieneRegistros As Boolean = False
Dim ObjGenerales As New ClsGenerales()
If ObjGenerales.GetEntregaAlmacenRutaDetalle(Request("CveEntregaAlmacen").ToString.ToEntero, ValidaEntrega:=True) Then
If ObjGenerales.DtResultados.Rows.Count = 0 Then
TieneRegistros = True
End If
End If
ObjGenerales.Dispose()
If TieneRegistros Then
Alert("La recolección ya ha sido realizada.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
End If
End If
If GvM.Rows.Count > 0 Then
'Dim CveMovimiento As Integer
Dim ObjInventario As New ClsInventarios
Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL())
Dim ObjContaAC As ClsContPAQi = Nothing
Dim ErrorMovInv As Boolean = False
Dim ErrorAC As Boolean = False
Dim IDPoliza As Integer = 0
Dim ImporteConcepto As Decimal = 0
Try
'Para Campos Nuevos AF y OC
Dim ActivoFijo As Integer = -1
'Esto es parte de consumo interno
If DdlActivoFijo.SelectedValue.ToEntero > 0 Then
ActivoFijo = DdlActivoFijo.SelectedValue.ToEntero
End If
Dim tCveSubProyecto As Integer = -1
If DdlSubProyecto.Visible = True AndAlso DdlSubProyecto.SelectedValue.ToEntero > 0 Then tCveSubProyecto = DdlSubProyecto.SelectedValue.ToEntero
Dim FechaMovimiento As DateTime = TxtFecha.Text.Replace(",", "").ToDateTime
Dim FechaMovtoStr As String = $"{FechaMovimiento.ToString("yyyy/MM/dd")} {FechaMovimiento.ToString("HH:mm:ss")}"
'ACTUALIZAR
If CveMovimiento > 0 Then
Dim Mensaje As String = ""
'Actualiza Movimiento
If Not ObjInventario.UpdateMovimiento(CveMovimiento, DdlAlmacen.SelectedValue.ToEntero, DdlConcepto.SelectedValue.ToEntero, 1, FechaMovimiento,
TxtFolio.Text.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, tCveSubProyecto, ActivoFijo, Guia:=TxtGuia.Text, Observaciones:=TxtObservaciones.Text) Then
Mensaje = "Error al Actualizar el Movimiento"
ErrorMovInv = True
End If
If Not ErrorMovInv Then
' Actualizo los movimientos
For Each Dr As DataRow In DtMovimientos.Rows
'Determina PU dependiendo MONEDA
If DdlConcepto.SelectedValue.ToEntero = 2 AndAlso DdlMoneda.SelectedValue.ToEntero = 2 Then
ImporteConcepto = Dr("PU").ToString.ToDecimal * GlobalTipoCambio(TxtFecha.Text.Replace(",", "").ToDate).ToDecimal
Else
ImporteConcepto = Dr("PU").ToString.ToDecimal
End If
'Actualiza existentes
If Dr("CveMovimientoDetalle").ToString.ToEntero > 0 Then
'cuando es normal
If Dr("Estatus").ToString = "E" Then
'hay que eliminarlo
If Not ObjInventario.RemoveMovimientoDetalle(Dr("CveMovimientoDetalle").ToString.ToEntero, Dr("CveMovimiento").ToString.ToEntero) Then
ErrorMovInv = True
End If
ElseIf Dr("Estatus").ToString = "U" Then
If Not ObjInventario.UpdateMovimientoDetalle(Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, ImporteConcepto, Dr("CveAF").ToString.ToEntero, Dr("CveMovimientoDetalle").ToString.ToEntero, Dr("CveSeccionAlmacen").ToString.ToEntero, Dr("Serie").ToString, Dr("Observaciones").ToString, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
Mensaje = "Error al Actualizar los movimientos"
ErrorMovInv = True : Exit For
End If
End If
'Agrega nuevos
Else
If GlobalDTInvConceptos.FiltraParametros(String.Format("CveConcepto = {0}", DdlConcepto.SelectedValue.ToEntero)).Rows.Count > 0 AndAlso GlobalDTInvConceptos.FiltraParametros(String.Format("CveConcepto = {0}", DdlConcepto.SelectedValue.ToEntero)).Rows(0)("Origen").ToString.ToEntero < 0 Then
Dim FechaMovtoExistenciaStr As String = $"{FechaMovimiento.ToString("yyyy/MM/dd")} {FechaMovimiento.ToString("hh:mm")}"
If ObjInventario.GetExistenciasPS(Dr("CvePS").ToString.ToEntero, Dr("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacen.SelectedValue.ToEntero, FechaMovto:=FechaMovtoExistenciaStr, Serie:=If(Dr("Serie").ToString = "", "-1", Dr("Serie").ToString), Lote:=If(Dr("Lote").ToString = "", "-1", Dr("Lote").ToString)) >= Dr("Cantidad").ToString.ToDouble Then
If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, ImporteConcepto, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, Observaciones:=Dr("Observaciones").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveUsuarioModifico:=UsuarioActual.CveUsuario, CveCultivoCuadroDetalle:=Dr("CveCultivoCuadroDetalle").ToString.ToEntero) Then
Mensaje = "Error al Agregar los nuevos movimientos"
ErrorMovInv = True : Exit For
End If
Else
If UsuarioActual.TienePermisoProceso(114) Then
If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, ImporteConcepto, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, Observaciones:=Dr("Observaciones").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveUsuarioModifico:=UsuarioActual.CveUsuario, CveCultivoCuadroDetalle:=Dr("CveCultivoCuadroDetalle").ToString.ToEntero) Then
Mensaje = "Error al Agregar los nuevos movimientos"
ErrorMovInv = True : Exit For
End If
Else
Mensaje = String.Format("No hay existencias suficientes del producto: {0}", Dr("CodigoAF"))
ErrorMovInv = True : Exit For
End If
End If
Else
If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, ImporteConcepto, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, Observaciones:=Dr("Observaciones").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveUsuarioModifico:=UsuarioActual.CveUsuario, CveCultivoCuadroDetalle:=Dr("CveCultivoCuadroDetalle").ToString.ToEntero) Then
Mensaje = "Error al Agregar los nuevos movimientos"
ErrorMovInv = True : Exit For
End If
End If
End If
Next
If UsuarioActual.Empresa.UsaAC AndAlso Not ErrorMovInv Then
'cargar también los movimentos detalle
If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then
DtMovimientos = ObjInventario.DtResultados.FiltraParametros("", "CveMovimientoDetalle")
End If
Dim Importe As Double = DtMovimientos.SUM("Total", "Estatus IN ('','U')")
IDPoliza = HdnIdPoliza.Value.ToEntero
If Importe > 0 AndAlso IDPoliza > 0 Then
Dim CuentaAbonoAlmacen, CuentaCargoCOG As Integer
ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa)
ObjContaAC.IniciaTransacSQL()
ObjContaAC.RemoveAllMovimientos(IDPoliza)
Dim drA As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", DdlAlmacen.SelectedValue))
If drA IsNot Nothing Then CuentaAbonoAlmacen = drA("IdCtaContable").ToString.ToEntero
If UsuarioActual.CveEmpresa = 48 Then ' APH
CuentaCargoCOG = 1386
End If
If CuentaCargoCOG > 0 AndAlso CuentaAbonoAlmacen > 0 Then
If ObjContaAC.AddMovimiento(IDPoliza, CuentaCargoCOG, False, Importe, "", "", 0, TxtFecha.Text.Replace(",", "").ToDate, "") Then
'actualizo el idcuenta del presupuesto
If Not ObjContaAC.AddMovimiento(IDPoliza, CuentaAbonoAlmacen, True, Importe, "", "", 0, TxtFecha.Text.Replace(",", "").ToDate, "") Then
ErrorAC = True
End If
Else
ErrorAC = True
End If
Else
ErrorAC = True
End If
End If
End If
End If
If Not ErrorAC AndAlso Not ErrorMovInv Then
Dim Msg As String = "Movimiento Actualizado"
If IDPoliza > 0 Then ObjContaAC.AjustaPoliza(IDPoliza)
ObjInventario.Commit() ' aplica los movimientos insertados
'recargo los datos para que esten actualizados, y no se duplique un rgistro nuevo
If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then
DtMovimientos = ObjInventario.DtResultados
End If
If ObjContaAC IsNot Nothing Then ObjContaAC.Commit()
Alert(Msg, TipoMensaje.MsgInformacion, "document.location.href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento=" & CveMovimiento & """;")
UPDatos.Update()
Else
ObjInventario.RollBack()
If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack()
Alert(Mensaje, TipoMensaje.MsgError)
End If
'GUARDAR
Else
Dim Fecha As DateTime = FechaMovimiento
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 obs As String = TxtObservaciones.Text.Trim()
If obs = "" Then
obs = DdlConcepto.SelectedItem.Text
If DdlPersonal.SelectedValue.ToEntero > 0 Then obs = obs & " - " & DdlPersonal.SelectedItem.Text
End If
Dim CveAlmacen As Integer = DdlAlmacen.SelectedValue.ToEntero
Dim CveModalidad As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=CveAlmacen).FiltroPrimeroValor("CveModalidad").ToEntero()
Dim EsContabilizable As Boolean = (CveModalidad = 1)
Dim TotalCantidad As Double = DtMovimientos.SUMD("Cantidad")
Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inv/ES", 53, 0, 0, 1, TxtFecha.Text.Replace(",", "").ToDate, obs, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoPoliza:=3)
CveMovimiento = ObjInventario.AddMovimiento(CveAlmacen, DdlConcepto.SelectedValue.ToEntero, 1, Fecha, tFolio, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, tCveSubProyecto, 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:="ES/1", CveEntregaAlmacen:=CveEntregaAlmacen)
If CveMovimiento <= 0 OrElse CvePrePoliza <= 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 = ""
''VALIDA EXISTENCIAS
Dim Cont As Integer = 0
If DdlConcepto.SelectedValue.Contiene({"3", "11", "13", "21", "30", "31"}) Then
For Each Dr As DataRow In DtMovimientos.Rows
Dim FechaCaducidadVal As Date = If(Dr("AplicaCaducidad").ToString = "True", Dr("FechaCaducidad").ToString.ToDate, MinFecha)
Dim FechaMovtoExistenciaStr As String = $"{FechaMovimiento.ToString("yyyy/MM/dd")} {FechaMovimiento.ToString("HH:mm")}"
If ObjInventario.GetExistenciasPS(Dr("CvePS").ToString.ToEntero, Dr("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero, FechaMovto:=FechaMovtoExistenciaStr, Serie:=If(Dr("Serie").ToString = "", "-1", Dr("Serie").ToString), Lote:=If(Dr("Lote").ToString = "", "-1", Dr("Lote").ToString), FechaCaducidad:=FechaCaducidadVal) >= Dr("Cantidad").ToString.ToDouble Then
If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, Observaciones:=Dr("Observaciones").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=FechaCaducidadVal, CveUsuarioModifico:=UsuarioActual.CveUsuario, CveCultivoCuadroDetalle:=Dr("CveCultivoCuadroDetalle").ToString.ToEntero) Then
Mensaje = "Error al guardar los movimientos"
ErrorMovInv = True
Exit For
End If
Else
If UsuarioActual.TienePermisoProceso(114) Then
If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, Observaciones:=Dr("Observaciones").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveUsuarioModifico:=UsuarioActual.CveUsuario, CveCultivoCuadroDetalle:=Dr("CveCultivoCuadroDetalle").ToString.ToEntero) Then
Mensaje = "Error al guardar los movimientos"
ErrorMovInv = True
Exit For
'Else
'If ObjInventario.CveMovimientoDetalle > 0 AndAlso DtSeccionAlmacen.Rows.Count > 0 Then
' For Each Dr2 As DataRow In DtSeccionAlmacen.FiltraParametros($"IndexSeccionAlmacen = {Cont}").Rows
' If Not ObjInventario.AddMovimientosDetalleSeccionesAlmacen(ObjInventario.CveMovimientoDetalle, Dr2("CveSeccionAlmacen").ToString.ToEntero, Dr2("CantidadSeccionAlmacen").ToString.ToDecimal * Tipo) Then
' ErrorMovInv = True
' Mensaje = "Ocurrió un error al procesar las secciones de almacen. Por favor vuelva a intentar."
' Exit For
' End If
' Next
'End If
End If
Else
Mensaje = String.Format("No hay existencias suficientes del producto: {0}", Dr("PS"))
Alert(Mensaje, TipoMensaje.MsgAdvertencia)
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
ErrorMovInv = True : Exit For
End If
End If
Cont += 1
Next
Else
For Each Dr As DataRow In DtMovimientos.Rows
If DdlConcepto.SelectedValue.ToEntero = 2 AndAlso DdlMoneda.SelectedValue.ToEntero = 2 Then
ImporteConcepto = Dr("PU").ToString.ToDecimal * GlobalTipoCambio(TxtFecha.Text.Replace(",", "").ToDate).ToDecimal
Else
ImporteConcepto = Dr("PU").ToString.ToDecimal
End If
If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, ImporteConcepto, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, Observaciones:=Dr("Observaciones").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveUsuarioModifico:=UsuarioActual.CveUsuario, CveCultivoCuadroDetalle:=Dr("CveCultivoCuadroDetalle").ToString.ToEntero) Then
Mensaje = "Error al guardar los movimientos"
ErrorMovInv = True
Exit For
'Else
' If ObjInventario.CveMovimientoDetalle > 0 AndAlso DtSeccionAlmacen.Rows.Count > 0 Then
' For Each Dr2 As DataRow In DtSeccionAlmacen.FiltraParametros($"IndexSeccionAlmacen = {Cont}").Rows
' If Not ObjInventario.AddMovimientosDetalleSeccionesAlmacen(ObjInventario.CveMovimientoDetalle, Dr2("CveSeccionAlmacen").ToString.ToEntero, Dr2("CantidadSeccionAlmacen").ToString.ToDecimal * Tipo) Then
' ErrorMovInv = True
' Mensaje = "Ocurrió un error al procesar las secciones de almacen. Por favor vuelva a intentar."
' Exit For
' End If
' Next
' End If
End If
Cont += 1
Next
End If
'Registro la prepóliza
If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then
Dim tValorInventario As Decimal = ObjInventario.DtResultados.SUMD("Total", "").RoundSQL()
Dim tValorOtro As Decimal = tValorInventario
Dim TipoMovtoAlmacen As Boolean = False
Dim TipoMovtoOtro As Boolean = True
Dim drA2 As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", DdlAlmacen.SelectedValue))
If drA2 IsNot Nothing Then
tCveSubProyecto = drA2("CveSubProyecto").ToString.ToEntero
End If
Dim OrigenMov As Integer = GlobalDTInvConceptos.FiltroPrimeroValor("Origen", "CveConcepto = " & DdlConcepto.SelectedValue).ToEntero
If OrigenMov = 1 Then TipoMovtoAlmacen = False Else TipoMovtoAlmacen = True
TipoMovtoOtro = Not TipoMovtoAlmacen
Dim CveConceptoContable As Integer = 260
Dim CveClasificacion As Integer = -1
Select Case DdlConcepto.SelectedValue.ToEntero
Case 2, 32
CveConceptoContable = 78
EsContabilizable = True
Case 28, 31
CveConceptoContable = 51
If DdlConcepto.SelectedValue.ToEntero = 28 Then
''cuando es 28, es otros ingresos.78
CveConceptoContable = 78
End If
EsContabilizable = True
Case 30
CveConceptoContable = 181
TipoMovtoOtro = False
If DdlSubProyecto.Visible = True AndAlso DdlSubProyecto.SelectedValue.ToEntero > 0 Then tCveSubProyecto = DdlSubProyecto.SelectedValue.ToEntero
Case 34
CveConceptoContable = 51
EsContabilizable = True
Case 13, 29
CveConceptoContable = 69
TipoMovtoOtro = True
tValorOtro = -tValorOtro
Dim drr As DataRow = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimero("")
If drr IsNot Nothing Then
CveClasificacion = drr("CveClasificacion").ToString.ToEntero
End If
Case 3
CveConceptoContable = 51
EsContabilizable = True
Case Else
CveConceptoContable = 95
End Select
'2-78
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovtoAlmacen, tValorInventario, tValorInventario, 68, TxtObservaciones.Text.Trim, TxtObservaciones.Text.Trim, CveMovimientoAlmacen:=CveMovimiento, CveClasificacion:=CveClasificacion, Contabilizable:=EsContabilizable) Then
ErrorMovInv = True
Else
'Dim Total As Decimal = 0
If CveConceptoContable.Contiene(181, 78, 51, 69) Then
Dim Dt As DataTable = ObjInventario.DtResultados.FiltraParametros("", "", {"CveClasificacion"}).Copy
For Each Dr As DataRow In Dt.Rows
Dim Total As Decimal = ObjInventario.DtResultados.FiltraParametros($"CveClasificacion = {Dr("CveClasificacion")}").SUM("Total").RoundSQL()
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovtoAlmacen, Total, Total, CveConceptoContable, TxtFolio.Text, TxtObservaciones.Text.Trim, 0, CveMovimientoAlmacen:=CveMovimiento, CveClasificacion:=Dr("CveClasificacion").ToString.ToEntero, CveSubProyecto:=tCveSubProyecto) Then
ErrorMovInv = True
End If
Next
Else
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovtoAlmacen, tValorInventario, tValorInventario, CveConceptoContable, TxtObservaciones.Text.Trim, TxtObservaciones.Text.Trim, CveMovimientoAlmacen:=CveMovimiento, CveClasificacion:=CveClasificacion, Contabilizable:=EsContabilizable) Then
ErrorMovInv = True
End If
End If
End If
Else
ErrorMovInv = True
End If
If Not ErrorMovInv Then
Dim OpcionPrePoliza As Integer = -1
'SI ES CONSUMO INTERNO
If DdlConcepto.SelectedValue = "30" Then
OpcionPrePoliza = 11
End If
Dim AutoConta As Boolean = True
If (UsuarioActual.CveEmpresa = 119 And EsConsumoInterno) Then
AutoConta = False
End If
If Not ErrorMovInv AndAlso Not ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual, Opcion:=OpcionPrePoliza, AutoConta:=AutoConta) Then
ErrorMovInv = True
'If ObjConta.ValorPolizaDescuadre > 0 Then
' GuardaLogAD($"Compras/Compras-Guardar | Error{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas")
' ErrorPrepolizaDescuadre = True
'End If
End If
End If
'------------------------------------------------
If Not ErrorMovInv Then
'DEVENGAR
Dim TotalPorDevengar As Double = 0
'cuando tiene AC y es salida de almacen, se manda al gasto, solo aplica si el almacen es contable
If UsuarioActual.Empresa.UsaAC AndAlso (DdlConcepto.SelectedValue = "3") AndAlso EsContabilizable Then
Dim DtII As DataTable = Nothing
Dim TotalDetalle As Double = 0.0
Dim Importe As Decimal = DtMovimientos.SUMD("Total", "Estatus IN ('','U')")
'NOTA. CUANDO ES SALIDA, EN AUTOMATICO NO TENEMOS LOS VALORES DE LA SALIDA TODAVIA, Y POR ESO IMPORTE ES CERO, ES RECARGAR CON LOS DATOS YA INSERTADOS
If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then
DtII = ObjInventario.DtResultados
End If
TotalPorDevengar += Importe ' GvInv.Rows.Cast(Of GridViewRow)().Sum(Function(Gvr) Math.Round(Gvr.DataKey("PU").ToString.ToDouble, 4) * Math.Round(Gvr.DataKey("CantidadF").ToString.ToDouble, 4))
TotalPorDevengar = Math.Round(TotalPorDevengar, 4)
ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa)
ObjContaAC.IniciaTransacSQL()
Dim AC As New ClsAC
Dim DtPresupuestos As DataTable = Nothing
If AC.GetPresupuestoEgresos(-1, True, UsuarioActual.Empresa.EjercicioActual, UsuarioActual.CveEmpresa) Then
DtPresupuestos = AC.DtResultados.Copy
Else
Alert("Ocurrió un error al cargar los Presupuestos. Por favor vuelva a cargar la página", TipoMensaje.MsgError)
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
End If
AC.Dispose()
IDPoliza = ObjContaAC.AddPoliza(3, "Salida de Almacen", TotalPorDevengar, TotalPorDevengar, UsuarioActual.CveUsuario, TxtFecha.Text.Replace(",", "").ToDate)
If IDPoliza > 0 Then
Dim CuentaCargoCOG As Integer
Dim CuentaAbonoAlmacen As Integer = 0
Dim drA As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", DdlAlmacen.SelectedValue))
If drA IsNot Nothing Then CuentaAbonoAlmacen = drA("IdCtaContable").ToString.ToEntero
'saco de que partida se va a descontar y se enviara a gasto
' Dim drP As DataRow = DtPresupuestos.FiltroPrimero(String.Format("CveClasificacion = {0}", Dr("CveClasificacion")))
' If drP IsNot Nothing Then CuentaCargoCOG = drP("IdCuentaMatriz").ToString.ToEntero
If UsuarioActual.CveEmpresa = 48 Then ' APH
CuentaCargoCOG = 1386
End If
Dim ConceptoRenglon As String = "Salida de Almacen"
If IDPoliza > 0 Then
If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then
Dim DtMovtos As DataTable = ObjInventario.DtResultados
Importe = DtMovtos.SUMD("Total", "Estatus = ''")
If Importe > 0 Then
If CuentaCargoCOG > 0 AndAlso CuentaAbonoAlmacen > 0 Then
If ObjContaAC.AddMovimiento(IDPoliza, CuentaCargoCOG, False, Importe, "", ConceptoRenglon, 0, TxtFecha.Text.Replace(",", "").ToDate, "") Then
'actualizo el idcuenta del presupuesto
If Not ObjContaAC.AddMovimiento(IDPoliza, CuentaAbonoAlmacen, True, Importe, "", ConceptoRenglon, 0, TxtFecha.Text.Replace(",", "").ToDate, "") Then
ErrorAC = True
Mensaje = "No se pudo insertar movimiento en la poliza 2."
End If
Else
ErrorAC = True
Mensaje = "No se pudo insertar movimiento en la poliza 1."
End If
End If
End If
End If
End If
If IDPoliza > 0 Then
ObjInventario.UpdateMovimientoPoliza(IDPoliza, CveMovimiento, UsuarioActual.CveEmpresa)
End If
Else
ErrorAC = True
Mensaje = "No se pudo insertar la poliza"
End If
End If
'TERMINA: DEVENGAR
Dim RetornoVirtual As MMovimientoVirtual = Nothing
If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then
RetornoVirtual = GenerarMovimientoVirtual(CveMovimiento, ObjInventario, ObjConta)
End If
If RetornoVirtual IsNot Nothing Then
ErrorMovInv = RetornoVirtual.TieneError
End If
Dim SerieInsertadaTimbre As String = ""
Dim FolioInsertadoTimbre As Integer = -1
Dim CveTimbre As Integer = -1
Dim tTimbreTipoDocto As String = "Tra"
If Not ErrorAC And Not ErrorMovInv Then
If ChkEmitirTimbrado.Checked AndAlso Not DdlDireccionEnvio.SelectedValue.ToEntero > 0 Then
ErrorMovInv = True
Alert("La direccion destino es requerida.", TipoMensaje.MsgAdvertencia)
End If
If ChkEmitirTimbrado.Checked AndAlso Not ErrorMovInv Then
Dim ObjGral As New ClsGenerales(ObjInventario.IniciaTransacSQL)
Dim CveSubProyectoTimbre As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros($"CveAlmacen = {DdlAlmacen.SelectedValue}").Rows(0)("CveSubProyecto").ToString.ToEntero
Dim Fechallegada As DateTime = (TxtFechaLlegada.Text & " 23:59:59").ToDateTime
Dim CveEntregaAlmacen As Integer = ObjGral.AddInvEntregaAlmacenRuta(CveSubProyectoTimbre, -1, DdlDireccionEnvio.SelectedValue.ToEntero, CveMovimiento, DdlChofer.SelectedValue.ToEntero, DdlUnidadCamion.SelectedValue.ToEntero, TxtFechaEntrega.Text.ToDate, TxtFechaLlegada.Text.ToDateTime, "T", "", "", MinFecha, 1, 1, TxtDistancia.Text.ToEntero,
CveConfigAutoTransporte:=DdlConfigAuto.SelectedValue.ToEntero, CveCamionRemolque1:=DdlRemolque1.SelectedValue.ToEntero, CveCamionRemolque2:=DdlRemolque2.SelectedValue.ToEntero, CveCliente:=DdlClientes.SelectedValue.ToEntero)
If EsApoyoLogistico Then tTimbreTipoDocto = "Ent"
If CveEntregaAlmacen > 0 Then
CveTimbre = ObjGral.AddGralTimbre(tTimbreTipoDocto, CveSubProyectoTimbre, TxtFechaEntrega.Text.ToDate, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveEntregaAlmacen:=CveEntregaAlmacen, AplicaCP:=ChkEmitirCartaPorte.Checked)
If CveTimbre > 0 Then
SerieInsertadaTimbre = ObjGral.SerieInsertada
FolioInsertadoTimbre = ObjGral.FolioInsertado
Else
ErrorMovInv = True
End If
Else
ErrorMovInv = True
End If
End If
End If
'REPLICAR MOVTO EN EMPRESA
If Not ErrorMovInv Then
If UsuarioActual.CveEmpresa = 199 AndAlso CveMovimiento > 0 Then
If Not ObjInventario.ReplicarMovtoEmpresa(UsuarioActual.CveEmpresa, CveMovimiento) Then
ErrorMovInv = True
End If
End If
End If
If Not ErrorAC And Not ErrorMovInv Then
Dim Msg As New StringBuilder
Msg.AppendFormat("<br/>El Movimiento se registro con el Folio: <b><a href='/Inventarios/EntradasSalidas.aspx?CveMovimiento={1}'>{0}</a></b>", ObjInventario.Folio, CveMovimiento)
Msg.AppendFormat("<br/><br/> <a class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={0}"">Imprimir Movimiento</a> ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimiento)))
If RetornoVirtual IsNot Nothing Then
If RetornoVirtual.CveMovimientoVirtual > 0 Then
Msg.AppendFormat("<br/><br/>Se generó el movimiento virtual con el folio: <b><a class=""Texto"" target='_blank' href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"">{1}</a></b>", RetornoVirtual.CveMovimientoVirtual, RetornoVirtual.FolioVirtual)
End If
End If
If ObjContaAC IsNot Nothing Then ObjContaAC.AjustaPoliza(IDPoliza)
If IDPoliza > 0 Then Msg = Msg.AppendFormat("<br/><br/> <a class=""Texto"" target='_blank' href=""/Contabilidad/RegPoliza.aspx?IdPoliza={0}"">Ver Póliza</a>", IDPoliza)
ObjInventario.Commit() ' aplica los movimientos insertados
If ObjContaAC IsNot Nothing Then ObjContaAC.Commit()
If ChkEmitirTimbrado.Checked Then
CveMovimientoTimbrado = CveMovimiento
EmitirTimbrado(CveTimbre, tTimbreTipoDocto, CveMovimientoTimbrado, Msg)
End If
Alert(Msg.ToString, TipoMensaje.MsgInformacion)
UPDatos.Update()
If UsuarioActual.TienePermisoProceso(139) Then
CargaDatos(CveMovimiento)
Else
LimpiarMovimiento()
End If
RegistraScript("playsonidito('beep-07.wav')")
Else
ObjInventario.RollBack()
CveMovimiento = 0
If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack()
Alert(Mensaje, TipoMensaje.MsgError)
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
End If
Else
ObjInventario.RollBack() 'deshace lo insertado
CveMovimiento = 0
If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack()
Alert("Ocurrió un error al registrar los movimientos", TipoMensaje.MsgError)
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
End If
End If
CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' "))
End If
Catch ex As Exception
Try 'por si ya le habian dado rollback o commit
ObjInventario.RollBack() 'deshace lo insertad
Catch exx As Exception
End Try
CveMovimiento = 0
If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack()
Alert("Ocurrió un Error inesperado en el registro" & ex.Message, TipoMensaje.MsgError)
GuardaLog("Ocurrió un Error inesperado en el registro" & ex.ToString())
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
End Try
ObjInventario.Dispose() 'elimino la instancia
If ObjContaAC IsNot Nothing Then ObjContaAC.Dispose()
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
EsNuevoMov = False
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
DdlConcepto.Items.Clear()
Dim filtro As String = ""
Dim CveTipoAlmacen As Integer = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltroPrimeroValor("CveTipoAlmacen", $"CveAlmacen = {DdlAlmacen.SelectedValue}").ToEntero
Me.CveTipoAlmacenSeleccionado = CveTipoAlmacen
filtro = If(UsuarioActual.TienePermisoProceso(144), "CveConcepto NOT IN (1,4,5,8,9,10,12,26,27)", "CveConcepto NOT IN (1,2,4,5,8,9,10,12,26,27)")
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, 135), "CveConcepto NOT IN (4,5,10)", filtro).ToString, CveTipoAlmacen)
End If
DdlConcepto.DataSource = GlobalDTInvConceptos.FiltraParametros(filtro)
DdlConcepto.DataBind()
If IsNothing(Request("CveMovimiento")) Then
DdlConcepto.Items.Insert(0, New ListItem("Seleccione", "-1"))
End If
If Not DdlConcepto.Items.Contains(New ListItem("Seleccione", "-1")) Then
DdlConcepto.Items.Insert(0, New ListItem("Seleccione", "-1"))
End If
'PRODUCTOS FINANCIEROS
If CveTipoAlmacen.Contiene(12, 15) Then
If DdlConcepto.Items.FindByValue("1") Is Nothing Then
DdlConcepto.Items.Insert(If(DdlConcepto.Items.Count >= 1, 1, 0), New ListItem(" Inventario Inicial ", "1"))
End If
DdlConcepto.Items.Insert(If(DdlConcepto.Items.Count >= 1, 1, 0), New ListItem(" Salida por Ajuste ", "34"))
End If
'ACTIVO FIJO
If CveTipoAlmacen = 15 Then
If DdlConcepto.Items.FindByValue("2") Is Nothing Then
DdlConcepto.Items.Insert(If(DdlConcepto.Items.Count >= 2, 2, DdlConcepto.Items.Count), New ListItem("Entrada Almacen ", "2"))
End If
If DdlConcepto.Items.FindByValue("3") Is Nothing Then
DdlConcepto.Items.Insert(If(DdlConcepto.Items.Count >= 3, 3, DdlConcepto.Items.Count), New ListItem("Salida de Almacen", "3"))
End If
End If
'cONSUMO INTERNO
If CveTipoAlmacen = 14 Then
If DdlConcepto.Items.FindByValue("2") Is Nothing Then
DdlConcepto.Items.Insert(If(DdlConcepto.Items.Count >= 2, 2, DdlConcepto.Items.Count), New ListItem("Entrada Almacen ", "2"))
End If
DdlConcepto.Items.Insert(If(DdlConcepto.Items.Count >= 1, 1, 0), New ListItem(" Salida por Ajuste ", "34"))
End If
' RECEPCION USADOS
If CveTipoAlmacen = 22 Then
If DdlConcepto.Items.FindByValue("3") Is Nothing Then
DdlConcepto.Items.Insert(If(DdlConcepto.Items.Count >= 2, 2, DdlConcepto.Items.Count), New ListItem("Salida Almacen ", "3"))
End If
If DdlConcepto.Items.FindByValue("45") Is Nothing Then
DdlConcepto.Items.Insert(If(DdlConcepto.Items.Count >= 2, 2, DdlConcepto.Items.Count), New ListItem("Salida de Usado ", "45"))
End If
End If
'[IPP]: PARCHE PARA JAM
If UsuarioActual.CveEmpresa = 119 And CveTipoAlmacen.Contiene(4, 8, 16) Then
If DdlConcepto.Items.FindByValue("2") Is Nothing Then
DdlConcepto.Items.Insert(If(DdlConcepto.Items.Count >= 2, 2, DdlConcepto.Items.Count), New ListItem("Entrada Almacen ", "2"))
End If
If DdlConcepto.Items.FindByValue("3") Is Nothing Then
DdlConcepto.Items.Insert(If(DdlConcepto.Items.Count >= 3, 3, DdlConcepto.Items.Count), New ListItem("Salida de Almacen", "3"))
End If
End If
'tIPO Devolución proveedor
If CveTipoAlmacen.Contiene(21) Then
DdlConcepto.Items.Insert(0, New ListItem("Entrada Almacen ", "2"))
If UsuarioActual.CveUsuario = 100 Then
DdlConcepto.Items.Insert(1, New ListItem("Devolución al Proveedor ", "13"))
End If
End If
If CveTipoAlmacen.Contiene(22) Then
DdlConcepto.Items.Insert(0, New ListItem("Entrada Almacen ", "2"))
End If
'2185
If UsuarioActual.CveEmpresa = 72 AndAlso (UsuarioActual.CveUsuario = 1490 OrElse UsuarioActual.CveRol = 1) Then
'DdlConcepto.Items.Add(New ListItem("Seleccione", "-1"))
DdlConcepto.Items.Add(New ListItem("Entrada por Ajuste", "32"))
If CveTipoAlmacen.Contiene(12, 14, 19) Then
DdlConcepto.Items.Add(New ListItem("Salida por Ajuste", "34"))
End If
End If
''condicion de limpieza si es el usuario 1490, se dejan sino
If UsuarioActual.CveEmpresa.Contiene(72, 80, 146) Then
If Not UsuarioActual.CveUsuario.Contiene(1490, 2185) Then 'luz del mar(1490), y celia(2185)
DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("1"))
DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("2"))
DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("3"))
DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("16"))
DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("17"))
DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("31"))
DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("32"))
DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("33"))
DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("34"))
DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("34")) 'si esta dos veces, se tiene que ejecutar 2 veces
DdlConcepto.Items.Remove(DdlConcepto.Items.FindByValue("35"))
End If
End If
If UsuarioActual.CveUsuario.Contiene(2185, 100) Then
DdlConcepto.Items.Add(New ListItem("Entrada por Ajuste", "32"))
DdlConcepto.Items.Add(New ListItem("Salida por Ajuste", "34"))
End If
If EsApoyoLogistico Then
DdlConcepto.Items.Clear()
DdlConcepto.Items.Add(New ListItem("Selecione Uno", "-1"))
DdlConcepto.Items.Add(New ListItem("Salida de Almacen", "3"))
End If
DdlConcepto.SelectedValue = "-1"
ddlConcepto_SelectedIndexChanged(DdlConcepto, EventArgs.Empty)
UpGenerales.Update()
End Sub
Protected Sub ddlConcepto_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlConcepto.SelectedIndexChanged
If CveMovimiento > 0 And Not EsNuevoMov Then
Exit Sub
End If
If CveMovimiento <= 0 Or EsNuevoMov Then SiguienteFolio()
Dim CveConcepto As String = DdlConcepto.SelectedValue
TxtFecha.Enabled = True
TxtObservaciones.Enabled = True
DivCliente.Visible = False
DivClienteSucursal.Visible = False
DivDepartamentoEntrega.Visible = False
TxtDepartamentoEntrega.Text = ""
TxtPedidoContrato.Text = ""
txtPrecio.Enabled = True
Select Case CveConcepto
Case "1", "2", "22", "32", "33" ' ENTRADAS
If CveMovimiento > 0 Then
TxtFecha.Text = NowADS().ToShortDateString
TxtFecha.Enabled = False
End If
VisualizaPU(True)
TrPersonal.Visible = False
TrResponsable.Visible = True
If UsuarioActual.CveEmpresa.Contiene(66, 13) Then
TrSubProyecto.Visible = True
VisualizaAF(True)
CargaSubProyectos()
End If
If GvM.Rows.Count > 0 Then GvM.FooterRow.Visible = True
Case "3", "11", "21", "31"
VisualizaPU(False)
TrPersonal.Visible = False
TrResponsable.Visible = True
If UsuarioActual.CveEmpresa.Contiene(66, 13) Then
TrSubProyecto.Visible = True
VisualizaAF(True)
CargaSubProyectos()
End If
If GvM.Rows.Count > 0 Then GvM.FooterRow.Visible = False
If CveConcepto = "3" Then
ActivaClientes()
End If
Case "7"
VisualizaPU(False)
TrSubProyecto.Visible = False
TrResponsable.Visible = False
CargaPersonal()
If GvM.Rows.Count > 0 Then GvM.FooterRow.Visible = False
Case "10"
VisualizaPU(True)
Case "28"
TrProveedor.Visible = True
DdlProveedor.DataSource = GlobalDTCompProveedores(UsuarioActual.CveEmpresa)
DdlProveedor.DataBind()
If UsuarioActual.CveEmpresa = 119 Then txtPrecio.Enabled = False
Case Else
TrSubProyecto.Visible = False
VisualizaAF(False)
If GvM.Rows.Count > 0 Then GvM.FooterRow.Visible = True
TrPersonal.Visible = False
TrResponsable.Visible = False
End Select
UppGrid.Update()
UPDatos.Update()
End Sub
Private Sub VisualizaPU(Opcion As Boolean)
'tdPU.Visible = Opcion
'tdTxtPU.Visible = Opcion
divPrecio.Visible = Opcion
GvM.Columns(4).Visible = Opcion
TdTotal.Visible = Opcion
ThTotal.Visible = Opcion
GvM.Columns(5).Visible = Opcion
End Sub
Private Sub VisualizaPUExtranjero(Opcion As Boolean)
tdPUExtranjero.Visible = Opcion
tdPUExtranjero2.Visible = Opcion
GvM.Columns(6).Visible = Opcion
End Sub
Private Sub VisualizaAF(Opcion As Boolean)
tdAF.Visible = Opcion
ThAF.Visible = Opcion
GvM.Columns(8).Visible = Opcion
End Sub
Private Sub SiguienteFolio()
Dim Inv As New ClsInventarios
Dim Folio As Integer = Inv.GetFolioSiguiente(DdlConcepto.SelectedValue.ToEntero, UsuarioActual.CveEmpresa)
Inv.Dispose()
TxtFolio.Text = Folio.ToString
FolioAsignado = Folio
End Sub
'Protected Sub DdlClasificacion_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles DdlClasificacion.SelectedIndexChanged
' ChangeDdlProducto()
'End Sub
Private Sub ChangeDdlProducto()
If UsuarioActual.Empresa.Funcionalidad(105) = "" Then
Dim filtro As String = ""
'If Not (DdlClasificacion.SelectedValue = "-1") Then
' filtro = String.Format("CveClasificacion={0}", DdlClasificacion.SelectedValue)
'End If
DdlProducto2.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).FiltraParametros($"{filtro} AND CveTipoPS = 2", "PSCodigo")
DdlProducto2.DataBind()
DdlProducto2.ddl.Items.Insert(0, New ListItem("Seleccione", "-1"))
Else
'DdlProducto2.ddlWS.Attributes.Add("data-idClasificacion", DdlClasificacion.SelectedValue)
End If
End Sub
Protected Sub DdlProducto_ValueChanged(sender As Object, e As EventArgs) Handles DdlProducto2.selectedindexchange
ElProductoChange()
End Sub
Private Sub ElProductoChange()
divSerie.Visible = False
divLote.Visible = False
divSeccionAlmacen.Visible = False
divCaducidad.Visible = False
EscondeColumnasGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' "))
If DdlProducto2.SelectedValue.ToEntero > 0 Then
Dim dr As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=DdlProducto2.SelectedValue.ToEntero).FiltroPrimero("")
If dr IsNot Nothing Then
If CBool(dr("AplicaSerie")) Then
divSerie.Visible = True
End If
If CBool(dr("AplicaLote")) Then
divLote.Visible = True
End If
If CBool(dr("AplicaSeccion")) Then
divSeccionAlmacen.Visible = True
CargaSeccionesAlmacen(DdlSeccionAlmacen, DdlAlmacen.SelectedValue.ToEntero, DdlProducto2.SelectedValue.ToEntero, UsuarioActual.CveEmpresa)
End If
If CBool(dr("AplicaCaducidad")) Then
divCaducidad.Visible = True
End If
End If
DdlUnidad.Items.Clear()
DdlUnidad.DataSource = GlobalDTProductosServiciosEquivalencias(DdlProducto2.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa)
DdlUnidad.DataBind()
End If
UPDatos.Update()
End Sub
#End Region
#Region " GVM "
Private Sub CargaGVM(DtTemp As DataTable)
GvM.DataSource = DtTemp '.FiltraPorIndices(0, If(DtTemp.Rows.Count > 20, 19, DtTemp.Rows.Count - 1))
GvM.DataBind()
EscondeColumnasGVM(DtTemp)
End Sub
Private Sub EscondeColumnasGVM(DtTemp As DataTable)
'LblSerie.Visible = False
'divSerie.Visible = False
'TrSerieLote.Visible = False
'TrSerieLote2.Visible = False
If Not String.IsNullOrWhiteSpace(UsuarioActual.Empresa.Funcionalidad(147)) Then GvM.Columns(11).HeaderText = UsuarioActual.Empresa.Funcionalidad(147)
GvM.Columns(9).Visible = False
'PERMISO SOLO PARA EDITAR SERIELOTE
If UsuarioActual.TienePermisoProceso(245) Then
GvM.Columns(9).Visible = True
TxtnSerie.Visible = True
End If
'divLote.Visible = False
'TrLote.Visible = False
'TrLote2.Visible = False
GvM.Columns(10).Visible = False
Dim TienePermisoImportes As Boolean = UsuarioActual.TienePermisoProceso(201)
tdPUExtranjero.Visible = False
tdPUExtranjero2.Visible = False
GvM.Columns(6).Visible = False
tdCI.Visible = False
tdCI2.Visible = False
GvM.Columns(7).Visible = False
If DtTemp.SUM("PUExtranjero") > 0 Then
tdPUExtranjero.Visible = TienePermisoImportes
tdPUExtranjero2.Visible = TienePermisoImportes
GvM.Columns(6).Visible = TienePermisoImportes
End If
If DtTemp.SUM("CostoIndirecto") > 0 Then
tdCI.Visible = TienePermisoImportes
tdCI2.Visible = TienePermisoImportes
GvM.Columns(7).Visible = TienePermisoImportes
End If
If DtTemp IsNot Nothing AndAlso DtTemp.Rows.Count > 0 Then
GvM.Columns(9).Visible = DtTemp.MAX("Serie") <> ""
GvM.Columns(10).Visible = DtTemp.MAX("Lote") <> ""
GvM.Columns(11).Visible = DtTemp.MAX("FechaCaducidad").ToDate > MinFecha
GvM.Columns(12).Visible = DtTemp.MAX("CveSeccionAlmacen").ToEntero > 0
End If
'UppGrid.Update()
End Sub
Protected Sub GvM_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvM.RowDataBound
Dim TienePermisoImportes As Boolean = UsuarioActual.TienePermisoProceso(201)
If e.Row.RowType = DataControlRowType.Header Then
LbTotalMovimientos.Text = String.Format("Total de Movimientos: {0}", CType(GvM.DataSource, DataTable).Rows.Count.ToString)
End If
If e.Row.RowType = DataControlRowType.Footer Then
e.Row.FCLiteral("lbTotProducto").Visible = TienePermisoImportes
e.Row.FCLiteral("lbTotPrecio").Visible = TienePermisoImportes
e.Row.FCLiteral("lbTotPrecioExtranjero").Visible = TienePermisoImportes
e.Row.FCLiteral("LtTotCI").Visible = TienePermisoImportes
If TienePermisoImportes Then
e.Row.FCLiteral("lbTotPrecioExtranjero").Text = DtMovimientos.SUM("TotalExtranjero", "Estatus IN ('','U')").FormatoNumero
e.Row.FCLiteral("LtTotCI").Text = DtMovimientos.SUM("CostoIndirecto", "Estatus IN ('','U')").FormatoNumero
e.Row.FCLiteral("lbTotPrecio").Text = DtMovimientos.SUM("Total", "Estatus IN ('','U')").FormatoNumero
End If
End If
If e.Row.RowType = DataControlRowType.DataRow Then
If e.Row.RowState = DataControlRowState.Edit OrElse e.Row.RowState = 5 Then
e.Row.FCTextBox("LblEditCodigo").Attributes.Add("onkeyup", String.Format("EnterAFEdit(event,this,{0},{1});", e.Row.FCHiddenField("HdnCveActivoFijo").ClientID, e.Row.FCHiddenField("HdnCodigoAF").ClientID))
e.Row.FCTextBox("LblEditCodigo").Attributes.Add("onblur", String.Format("AFBlurEdit(this,{0},{1});", e.Row.FCHiddenField("HdnCveActivoFijo").ClientID, e.Row.FCHiddenField("HdnCodigoAF").ClientID))
e.Row.FCImage("ImgAF").Attributes.Add("onclick", String.Format("AbrirVentana('/AF/PopUpBuscarAF.aspx?OPCION=OCE&RI={0}',950,600,'N');", e.Row.RowIndex))
'PERMISO SOLO PARA EDITAR OBSERVACIONES
If PermiteGuardarObservacionDetalle() Then
e.Row.FCTextBox("txtPrecio").Enabled = False
e.Row.FCTextBox("LblEditCodigo").Enabled = False
e.Row.FCTextBox("TxtSerie").Enabled = False
e.Row.FCTextBox("TxtLote").Enabled = False
e.Row.FCDropDownList("DdlSeccionAlmacen").Enabled = False
End If
'PERMISO SOLO PARA EDITAR SERIELOTE
If UsuarioActual.TienePermisoProceso(245) Then
If (CveMovimiento > 0) Or (TieneRelacionado > 0 Or CveMovimientoRelacionado > 0) Then 'CveMovimiento > 0 And e.Row.DBCampo("TienePrePoliza").ToEntero > 0
e.Row.FCTextBox("txtPrecio").Enabled = False
e.Row.FCTextBox("LblEditCodigo").Enabled = False
'e.Row.FCTextBox("TxtSerie").Enabled = False
'e.Row.FCTextBox("TxtLote").Enabled = False
'e.Row.FCDropDownList("DdlSeccionAlmacen").Enabled = False'
End If
'e.Row.FCTextBox("TxtSerie").Enabled = True
End If
If EsNuevoMov Then
e.Row.FCTextBox("TxtCantidad").Enabled = True
e.Row.FCTextBox("txtPrecio").Enabled = True
End If
Else
If CveMovimiento > 0 Then
'DEPENDE PERMISOS HABILITA
e.Row.FCLinkButton("lnkRemove").Visible = PermiteEliminar()
e.Row.FCLinkButton("imgE").Visible = PermiteGuardar()
If e.Row.DBCampo("CountMovimientoEntradaDetalle").ToEntero > 0 Then
TieneSalida = True
e.Row.FCLinkButton("lnkRemove").Visible = False
e.Row.FCLinkButton("imgE").Visible = False
End If
'SI TIENE PREPOLIZAS NO PUEDE EDITAR NI ELIMINAR
If e.Row.DBCampo("TienePrePoliza").ToEntero > 0 Then
e.Row.FCLinkButton("lnkRemove").Visible = False
e.Row.FCLinkButton("imgE").Visible = False
End If
'APAGA TODO SI TIENE MOVIMIENTO RELACIONADO
If TieneRelacionado > 0 Or CveMovimientoRelacionado > 0 Then
e.Row.FCLinkButton("lnkRemove").Visible = False
e.Row.FCLinkButton("imgE").Visible = False
End If
'PERMISO SOLO PARA EDITAR OBSERVACIONES
If PermiteGuardarObservacionDetalle() Then
e.Row.FCLinkButton("imgE").Visible = True
End If
'PERMISO SOLO PARA EDITAR SERIELOTE
If UsuarioActual.TienePermisoProceso(245) Then
e.Row.FCLinkButton("imgE").Visible = True
End If
If EsNuevoMov Then
e.Row.FCLinkButton("lnkRemove").Visible = True
End If
End If
Dim Cantidad As Decimal = e.Row.FCLiteral("lbCantidad").Text.ToDecimal
If Not UsuarioActual.TienePermisoProceso(265) Or Cantidad <= 1 Or Cantidad Mod 1 <> 0 Then
e.Row.FCLinkButton("lnkDividir").Visible = False
End If
End If
End If
End Sub
Protected Sub GvM_RowEditing(sender As Object, e As GridViewEditEventArgs) Handles GvM.RowEditing
End Sub
Protected Sub imgE_Click(sender As Object, e As EventArgs)
Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow)
'Dim i As Integer = e.NewEditIndex
'GvM.EditIndex =
IndexActualTabla = GvRow.RowIndex
If CveMovimiento > 0 Then
CveMovimientoDetalleEdit = GvRow.DataKey("CveMovimientoDetalle").ToEntero
txtCantidad.Enabled = False
'DdlClasificacion.Enabled = False
DdlProducto2.Enabled = False
'DdlUnidad.Enabled = False
'codigo provisional, hay entradas con productos, que al asignar serie, debe de tener e ncantidad = 1
If GvRow.DataKey("Cantidad").ToEntero() > 1 Then txtCantidad.Enabled = True
End If
txtCantidad.Text = GvRow.DataKey("Cantidad").ToDecimal().ToString
DdlProducto2.SelectedValue = GvRow.DataKey("CvePS")
DdlProducto2.SelectedText = GvRow.DataKey("CodigoPS")
ElProductoChange()
DdlUnidad.SelectedValueExist(GvRow.DataKey("CveUM"))
CveAFEdit = GvRow.DataKey("CveAF").ToEntero
txtPrecio.Text = GvRow.DataKey("PU").ToDouble.ToString("0.00########")
TxtnSerie.Text = GvRow.DataKey("Serie")
TxtnLote.Text = GvRow.DataKey("Lote")
TxtnFechaCaducidad.Text = GvRow.DataKey("FechaCaducidad").ToDate.ToShortDateString
TxtObservacionesdetalle.Text = GvRow.DataKey("Observaciones")
DdlSeccionAlmacen.DataSource = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero, GvRow.DataKey("CvePS").ToEntero)
DdlSeccionAlmacen.DataBind()
DdlSeccionAlmacen.SelectedValueExist(GvRow.DataKey("CveSeccionAlmacen"))
LkAgregarDetalle.Text = "Actualizar"
Dim Origen As Integer = GlobalDTInvConceptos.FiltroPrimeroValor("Origen", String.Format("CveConcepto = {0}", DdlConcepto.SelectedValue)).ToEntero
divPrecio.Visible = (Origen = 1)
'txtPrecio.Visible = (Origen = 1)
If UsuarioActual.CveRol = 1 Then
divPrecio.Visible = True
'txtPrecio.Visible = True
End If
ChkContinuarRegistrando.Checked = False
ChkContinuarRegistrando.Visible = False
UpAgregar.Update()
RegistraScript("$('#ModalAgregar').modal()")
' CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' "))
End Sub
Protected Sub EditPS(sender As Object, e As EventArgs)
Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow)
If CveMovimiento > 0 Then
CveMovimientoDetalleEdit = GvRow.DataKey("CveMovimientoDetalle").ToEntero
divCantidad.Visible = False
divClasificacionProducto.Visible = False
divUnidadMedida.Visible = False
End If
txtCantidad.Text = GvRow.DataKey("Cantidad").ToEntero().ToString
DdlProducto2.SelectedValue = GvRow.DataKey("CvePS")
DdlProducto2.SelectedText = GvRow.DataKey("CodigoPS")
ElProductoChange()
DdlUnidad.SelectedValue = GvRow.DataKey("CveUM")
CveAFEdit = GvRow.DataKey("CveAF").ToEntero
txtPrecio.Text = GvRow.DataKey("PU").ToDouble.FormatoNumero
TxtnSerie.Text = GvRow.DataKey("Serie")
TxtnLote.Text = GvRow.DataKey("Lote")
TxtnFechaCaducidad.Text = GvRow.DataKey("FechaCaducidad")
TxtObservacionesdetalle.Text = GvRow.DataKey("Observaciones")
DdlSeccionAlmacen.SelectedValueExist(GvRow.DataKey("CveSeccionAlmacen"))
Dim Origen As Integer = GlobalDTInvConceptos.FiltroPrimeroValor("Origen", String.Format("CveConcepto = {0}", DdlConcepto.SelectedValue)).ToEntero
divPrecio.Visible = Origen = 1
'txtPrecio.Visible = Origen = 1
LkAgregarDetalle.Text = "Actualizar"
ChkContinuarRegistrando.Checked = False
ChkContinuarRegistrando.Visible = False
UpAgregar.Update()
RegistraScript("$('#ModalAgregar').modal()")
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 serie As String = GvM.Rows(e.RowIndex).FCTextBox("TxtSerie").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 Cantidad As Double = GvM.Rows(e.RowIndex).FCTextBox("TxtCantidad").Text.ToDouble
'Dim Drs As DataRow() = DtMovimientos.Select(String.Format("No = {0}", No))
'If Drs.Count > 0 Then
' Drs(0)("Cantidad") = Cantidad
' Drs(0)("PU") = Precio
' Drs(0)("Total") = Drs(0)("Cantidad").ToString.ToDouble * Precio
' Drs(0)("Estatus") = "U"
' Drs(0)("Serie") = serie
' 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
Protected Sub DividirRow(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
Dim Cantidad As Integer = Drs(0)("Cantidad").ToString.ToEntero
Dim CvePS As Integer = Drs(0)("CvePS").ToString.ToEntero
Dim Producto As String = Drs(0)("CodigoPS").ToString
Dim PU As Decimal = Drs(0)("PU").ToString.ToDecimal
Dim CveSeccion As Integer = Drs(0)("CveSeccionAlmacen").ToString.ToEntero
Drs(0)("Cantidad") = "1"
Drs(0)("Total") = PU
Drs(0)("Estatus") = "U"
For counter As Integer = 1 To Cantidad - 1
txtCantidad.Text = "1"
DdlProducto2.SelectedValue = CvePS.ToString
DdlProducto2.SelectedText = Producto.ToString
txtPrecio.Text = PU.ToString
If DdlSeccionAlmacen.Visible = True And CveSeccion.ToString <> "" Then
DdlSeccionAlmacen.SelectedValue = CveSeccion.ToString
End If
ElProductoChange()
AgregarPS()
txtPrecio.Text = ""
DdlUnidad.SelectedItem.Text = ""
Next
End If
DtMovimientos.AcceptChanges()
End If
GvM.EditIndex = -1
CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' "))
End Sub
#End Region
#Region " CONTABILIZAR "
Public Function ContabilizaMovimientoAlmacen(ByRef ObjConta As ClsContabilidad, Fecha As Date, Concepto As String, Modulo As String, CveMovimientoSalida As Integer, CveMovimientoEntrada As Integer, Importe As Decimal, CveUsuario As Integer, CveEmpresa As Integer, Contabilizable As Boolean, Optional dttCostos As DataTable = Nothing, Optional CveSubProyecto As Integer = -1) As Integer
Dim Retorno As Integer = -1
Dim ErrorMovInv As Boolean = False
Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas(Modulo, 53, 0, 0, 1, Fecha, Concepto, CveUsuario, CveEmpresa)
If CveMovimientoSalida > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Importe, Importe, 68, "", Concepto, CveMovimientoAlmacen:=CveMovimientoSalida, Contabilizable:=Contabilizable) Then
ErrorMovInv = True
End If
End If
If CveMovimientoEntrada > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Importe, Importe, 68, "", Concepto, CveMovimientoAlmacen:=CveMovimientoEntrada, Contabilizable:=Contabilizable) Then
ErrorMovInv = True
End If
End If
If dttCostos IsNot Nothing AndAlso CveMovimientoSalida > 0 Then
For Each RowInv As DataRow In dttCostos.Rows
Dim ValorInventario As Decimal = dttCostos.SUM("Total", $"CveClasificacion = {RowInv("CveClasificacion")}").ToString.ToDecimal.RoundSQL
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ValorInventario, ValorInventario, 69, Concepto, Concepto, CveClasificacion:=RowInv("CveClasificacion").ToString.ToEntero, CveMovimientoAlmacen:=CveMovimiento, CveSubProyecto:=CveSubProyecto, Contabilizable:=Contabilizable) Then
ErrorMovInv = True
Exit For
End If
Next
End If
If Not ErrorMovInv Then Retorno = CvePrePoliza
Return Retorno
End Function
Protected Sub BtnContabilizar_Click(sender As Object, e As EventArgs) Handles BtnContabilizar.Click
Dim ObjContaAC As ClsContPAQi = Nothing
Dim ObjInventario As New ClsInventarios
ObjInventario.IniciaTransacSQL() 'Inicia la transacción
'DEVENGAR
Dim IDPoliza As Integer
Dim ErrorAC As Boolean = False
Dim TotalPorDevengar As Double = 0
Dim Folio As String = ""
Dim Fecha As Date = TxtFecha.Text.Replace(",", "").ToDate
'cuando tiene AC y es salida de almacen, se manda al gasto
If UsuarioActual.Empresa.UsaAC AndAlso DdlConcepto.SelectedValue = "3" Then
'Dim Total As Double = 0
'TotalPorDevengar += Total ' GvInv.Rows.Cast(Of GridViewRow)().Sum(Function(Gvr) Math.Round(Gvr.DataKey("PU").ToString.ToDouble, 4) * Math.Round(Gvr.DataKey("CantidadF").ToString.ToDouble, 4))
TotalPorDevengar = Math.Round(TotalPorDevengar, 4)
ObjContaAC = New ClsContPAQi(UsuarioActual.Empresa)
ObjContaAC.IniciaTransacSQL()
IDPoliza = ObjContaAC.AddPoliza(3, "Salida de Almacen", TotalPorDevengar, TotalPorDevengar, UsuarioActual.CveUsuario, Fecha)
If IDPoliza > 0 Then
Dim CuentaCargoCOG As Integer
Dim CuentaAbonoAlmacen As Integer = 0
Dim Importe As Double = DtMovimientos.SUM("Total", "Estatus = ''")
Folio = ObjContaAC.Folio.ToString
Dim drA As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", DdlAlmacen.SelectedValue))
If drA IsNot Nothing Then CuentaAbonoAlmacen = drA("IdCtaContable").ToString.ToEntero
If UsuarioActual.CveEmpresa = 48 Then ' APH
CuentaCargoCOG = 1386
End If
If CuentaCargoCOG > 0 AndAlso CuentaAbonoAlmacen > 0 Then
If ObjContaAC.AddMovimiento(IDPoliza, CuentaCargoCOG, False, Importe, "", "", 0, Fecha, "") Then
'actualizo el idcuenta del presupuesto
If Not ObjContaAC.AddMovimiento(IDPoliza, CuentaAbonoAlmacen, True, Importe, "", "", 0, Fecha, "") Then
ErrorAC = True
End If
Else
ErrorAC = True
End If
End If
If IDPoliza > 0 Then
ObjInventario.UpdateMovimientoPoliza(IDPoliza, CveMovimiento, UsuarioActual.CveEmpresa)
End If
Else
ErrorAC = True
End If
End If
'TERMINA: DEVENGAR
If Not ErrorAC Then
ObjInventario.Commit() ' aplica los movimientos insertados
If ObjContaAC IsNot Nothing Then ObjContaAC.AjustaPoliza(IDPoliza) : ObjContaAC.Commit()
Alert(String.Format("Movimiento Registrado<br/><br/> <a href ='/Contabilidad/RegPoliza.aspx?IdPoliza={0}' class='Texto'>Poliza {1}</a>", IDPoliza, Folio), TipoMensaje.MsgInformacion)
UPDatos.Update()
BtnContabilizar.Visible = PermiteContabilizar()
Else
ObjInventario.RollBack()
If ObjContaAC IsNot Nothing Then ObjContaAC.RollBack()
Alert("Error", TipoMensaje.MsgError)
End If
End Sub
#End Region
#Region " VinculaAF "
Protected Sub BtnVinculaAF_Click(sender As Object, e As EventArgs)
If HdnCveActivoFijo.Value.ToEntero = -2 Then
Dim ObjAF As New ClsAF
If ObjAF.GetActivosFijos(-1, UsuarioActual.CveEmpresa, LblCodigo.Text, "-1", -1, -1, "-1", -1, -1, -1, -1, -1, "", -1) Then
If ObjAF.DtResultados.Rows.Count = 1 Then
HdnCodigoAF.Value = ObjAF.DtResultados.Rows(0)("Codigo").ToString
HdnCveActivoFijo.Value = ObjAF.DtResultados.Rows(0)("CveActivoFijo").ToString
LblCodigo.Text = HdnCodigoAF.Value
Else
HdnCodigoAF.Value = "-1"
HdnCveActivoFijo.Value = "-1"
LblCodigo.Text = ""
Alert("No se encontró un Activo Fijo con el código proporcionado.", TipoMensaje.MsgAdvertencia)
End If
End If
ObjAF.Dispose()
Else
LblCodigo.Text = HdnCodigoAF.Value
End If
'LbAgregar.Focus()
UPDatos.Update()
End Sub
Protected Sub BtnVinculaAFEdit_Click(sender As Object, e As EventArgs)
If HdnCodAFEdit.Value.Trim = "" Then Exit Sub
Dim ObjAF As New ClsAF
If ObjAF.GetActivosFijos(-1, UsuarioActual.CveEmpresa, HdnCodAFEdit.Value, "-1", -1, -1, "-1", -1, -1, -1, -1, -1, "", -1) Then
If ObjAF.DtResultados.Rows.Count = 1 Then
RegistraScript(String.Format("EnterAFEditOK('{0}','{1}');", ObjAF.DtResultados.Rows(0)("CveActivoFijo").ToString, ObjAF.DtResultados.Rows(0)("Codigo").ToString))
Else
Alert("No se encontró un Activo Fijo con el código proporcionado.", TipoMensaje.MsgAdvertencia)
RegistraScript(String.Format("EnterAFEditOK({0},{1});", "-1", "-1"))
End If
End If
ObjAF.Dispose()
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
'If ObjEventoBitacora.DtResultados.FiltraParametros("CveTipoEvento IN (6,2) AND CvePrioridad=3").Rows.Count > 0 Then
' DivEventoUrgente.Visible = True
'End If
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, NowADS().ToString("HH-mm"), FileExtension))
If Archivo.Exists() Then
Archivo.Delete()
'File.Delete(String.Format("\Empresas\{0}\OI\Temp\OI{1}{2}.{3}", CveEmpresaActual, UsuarioActual.CveUsuario, DtDetalle.Rows.Count, FileExtension))
End If
If Filename <> "" Then
Filename.FilesMove(String.Format("OI{0}{1}", UsuarioActual.CveUsuario, NowADS().ToString("HH-mm")), String.Format("{0}OI\Temp", UsuarioActual.Empresa.Ruta), ConcatenarDirectorioBase:=False)
End If
'AGREGA
Dim Dr As DataRow = DtBitacora.NewRow
Dr("FechaIng") = NowADS()
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}{NowADS().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 As Boolean = 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
'Dim Prioridad As Integer = If(ChkEventoPrioridad.Checked, 3, 1)
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("{0}OI", UsuarioActual.Empresa.Ruta), ConcatenarDirectorioBase:=False)
End If
GvBitacora.DataSource = ObjEventoBitacora.DtResultados
TxtEventoDescripcion.Text = ""
Anexo.Text = "[]"
'ChkEventoPrioridad.Checked = False
Alert("La bitácora/observación se guardó correctamente", TipoMensaje.MsgInformacion)
RegistraScript("$('#ModalBitacora').modal('hide')", "hidemodal")
''obtener el Evento de bitacora para enviar el correo
'If ObjEventoBitacora.GetEvento(ObjEventoBitacora.CveEvento, UsuarioActual.CveUsuario, CveEmpresaActual) Then
' If ObjEventoBitacora.DtResultados IsNot Nothing AndAlso ObjEventoBitacora.DtResultados.Rows.Count > 0 Then
' Dim dr As DataRow = ObjEventoBitacora.DtResultados.Rows(0)
' EnviarCorreoBitacora(String.Format("{0}, {1} comento: ""{2}""", dr("FechaIng"), dr("Usuario"), dr("Descripcion")), String.Format("http://sig.adsistemas.mx/Empresas/{0}/OI/{1}", CveEmpresaActual, ObjEventoBitacora.Archivo))
' End If
'End If
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 " AGREGA CON TXT | CODIGO - SERIE "
Protected Sub BtnCodigoPS_Click(sender As Object, e As EventArgs)
If TxtCodigoPS.Text.Trim = "" Then
Exit Sub
End If
TdSeccionPSAdd.Visible = False
Dim Dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero($"CodigoBarras= '{TxtCodigoPS.Text}'")
If Dr Is Nothing Then
Alert($"No se ha encontrado un producto con el Codigo ""<b>{TxtCodigoPS.Text}</b>"". ", TipoMensaje.MsgAdvertencia, "window.setTimeout(FocusAdd,200);")
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
TxtCodigoPS.Text = ""
Exit Sub
End If
If Dr("AplicaSerie").ToString = "True" Then
TdSeriePSAdd.Visible = True
TxtSeriePS.Focus()
CvePSSerieLote = Dr("CvePS").ToString.ToEntero
PSSerieLote = Dr("PSCodigo").ToString
CveUMSerieLote = Dr("CveUM").ToString.ToEntero
UMSerieLote = Dr("UnidadMedida").ToString
Exit Sub
End If
Dim CveSeccionAlmacen As Integer = -1
Dim SeccionAlmacen As String = ""
If Dr("AplicaSeccion").ToString = "True" Then
If DdlAlmacen.SelectedValue.ToEntero <= 1 Then
Alert("No se ha especificado el almacen para especificar la sección", TipoMensaje.MsgError)
Exit Sub
End If
DdlSeccionPSAdd.Items.Clear()
Dim dtt As DataTable = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero, Dr("CvePS").ToString.ToEntero)
DdlSeccionPSAdd.DataSource = dtt
DdlSeccionPSAdd.DataBind()
If dtt.Rows.Count > 1 Then
DdlSeccionPSAdd.Items.Insert(0, New ListItem("Seleccione", "-1"))
' si solo hay un movimiento, debe de agregar, sino debe de esperar a que seleccionen
Exit Sub
DdlSeccionPSAdd.Focus()
TdSeccionPSAdd.Visible = True
Else
CveSeccionAlmacen = DdlSeccionPSAdd.SelectedValue.ToEntero
SeccionAlmacen = DdlSeccionPSAdd.SelectedItem.Text
End If
End If
AddNew(Dr("CvePS").ToString.ToEntero, Dr("PSCodigo").ToString, Dr("CveUM").ToString.ToEntero, Dr("UnidadMedida").ToString, 1, Dr("CostoPromedio").ToString.ToDecimal, "", "", "", "", "", "", MinFecha, CveSeccionAlmacen, SeccionAlmacen)
TxtCodigoPS.Text = ""
TxtCodigoPS.Focus()
End Sub
Protected Sub BtnSeriePSAdd_Click(sender As Object, e As EventArgs)
If TxtSeriePS.Text.Trim = "" Then
Exit Sub
End If
If TdSeccionPSAdd.Visible Then
If DdlSeccionAlmacen.SelectedValue.ToEntero <= 0 Then
Exit Sub
End If
End If
AddNew(CvePSSerieLote, PSSerieLote, CveUMSerieLote, UMSerieLote, 1, 0, TxtSeriePS.Text.Trim, "", "", "", "", "", MinFecha, -1, "")
TdSeriePSAdd.Visible = False
TxtSeriePS.Text = ""
TxtCodigoPS.Text = ""
TxtCodigoPS.Focus()
End Sub
#End Region
#Region " CONSUMO INTERNO "
Private Sub ActivaConsumoInterno()
EsConsumoInterno = True
DdlConcepto.Items.Insert(0, New ListItem("Salida por Consumo Interno", "30"))
DdlConcepto.SelectedValue = "30"
DdlAlmacen.AutoPostBack = False
DivFolio1.Visible = False
DivFolio2.Visible = False
DivConcepto1.Visible = False
DivConcepto2.Visible = False
divMonedaSeccion.Visible = False
divGuia.Visible = False
TrResponsable.Visible = False
TrSubProyecto.Visible = True
CargarCentrosDeCosto(Nothing, DdlSubProyecto, Nothing, LblSubProyecto, "Seleccione Uno")
CargaPersonal()
LtlTitulo.Text = "Consumo Interno"
'RECARGA ALMACENES SOLO DE CONSUMO INTERNO
DdlAlmacen.Items.Clear()
DdlAlmacen.DataBind()
Dim dttA As DataTable = Nothing
dttA = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 14)
dttA.Merge(GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 1))
DdlAlmacen.DataSource = dttA '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)
End If
If UsuarioActual.Empresa.Funcionalidad(590) = "1" Then
DVCultivosCuadro.Visible = True
CargaCultivos()
End If
TrActivoFijo.Visible = True
DdlActivoFijo.Items.Clear()
DdlActivoFijo.DataSource = GlobalDTActivoFijos(UsuarioActual.CveEmpresa).FiltraParametros(" CveEstadoActivoFijo IN(1,3,4,9) ")
DdlActivoFijo.DataBind()
DdlActivoFijo.Items.Insert(0, New ListItem("Seleccione uno", "-1"))
DdlActivoFijo.SelectedValueExist(-1)
End Sub
Private Sub CargaCultivos()
DdlModalCultivosCuadro.Items.Clear()
DdlModalCultivosCuadro.DataSource = GlobalDTCultivosCuadro(UsuarioActual.CveEmpresa).FiltraParametros($"CveSubProyecto = {DdlSubProyecto.SelectedValue} AND Estatus = 1 ", "TemporadaCuadro")
DdlModalCultivosCuadro.DataBind()
DdlModalCultivosCuadro.Items.Insert(0, New ListItem("Seleccione uno", "-1"))
End Sub
#End Region
#Region "PAQUETERIA GUIA"
Protected Sub LnkAgregarGuia_Click(sender As Object, e As EventArgs)
RegistraScript(String.Format("AbrirVentana('/General/PopUpPaqueteriasGuias.aspx?CveMovimiento={0}',800,620);", CveMovimiento))
End Sub
Protected Sub BtnAgregarGuia_Click(sender As Object, e As EventArgs)
'Dim objInventario As New ClsInventarios
'If objInventario.AddPaqueteriaGuia(DdlPaqueteria.SelectedValue.ToEntero, CveMovimiento, TxtPaqueteriaGuia.Text.Trim, TxtPaqueteriaNumcajas.Text.ToEntero, TxtPaqueteriaPeso.Text.ToDecimal, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa,
' TxtRastreo.Text.Trim, TxtDimensiones.Text.Trim, TxtFechaEst.Text.Trim) Then
' CargaGvPaqueteria()
' LimpiacontrolesPaqueteria()
'End If
'objInventario.Dispose()
End Sub
Protected Sub LnkRemovePaqueteriaGuia_Click(sender As Object, e As EventArgs)
'Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow)
'Dim CvePaqueteriaGuia As Integer = GvRow.DataKey("CvePaqueteriaGuia").ToString.ToEntero
'Dim objInventario As New ClsInventarios
'If objInventario.RemovePaqueteriaGuia(CvePaqueteriaGuia, UsuarioActual.CveEmpresa) Then
' CargaGvPaqueteria()
'End If
'objInventario.Dispose()
End Sub
Private Sub CargaGvPaqueteria()
'Dim objInventario As New ClsInventarios
'If objInventario.GetPaqueteriaGuia(CveMovimiento, UsuarioActual.CveEmpresa) Then
' GvPaqueriaGuias.DataSource = objInventario.DtResultados
' If objInventario.DtResultados.Rows.Count > 0 Then
' BtnAgregarGuia.Attributes.Add("data-toggle", "confirmation")
' BtnAgregarGuia.Attributes.Add("data-popout", "true")
' BtnAgregarGuia.Attributes.Add("data-original-title", "¿Está seguro de registrar una nueva guia a la factura?")
' BtnAgregarGuia.Attributes.Add("data-btn-ok-label", "si")
' Else
' BtnAgregarGuia.Attributes.Remove("data-toggle")
' BtnAgregarGuia.Attributes.Remove("data-popout")
' BtnAgregarGuia.Attributes.Remove("data-original-title")
' BtnAgregarGuia.Attributes.Remove("data-btn-ok-label")
' End If
'Else
' GvPaqueriaGuias.DataSource = Nothing
'End If
'objInventario.Dispose()
'GvPaqueriaGuias.DataBind()
'UpModalGuias.Update()
End Sub
Private Sub LimpiacontrolesPaqueteria()
'DdlPaqueteria.SelectedIndex = 0
'TxtPaqueteriaGuia.Text = ""
'TxtPaqueteriaNumcajas.Text = ""
'TxtPaqueteriaPeso.Text = ""
'TxtRastreo.Text = ""
'TxtDimensiones.Text = ""
'TxtFechaEst.Text = ""
End Sub
Protected Sub LnkGuiaPaqueteriaGuia_Click(sender As Object, e As EventArgs)
'Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow)
'Dim CvePaqueteriaGuia As Integer = GvRow.DataKey("CvePaqueteriaGuia").ToString.ToEntero
'Dim NumCajas As String = GvRow.DataKey("NumCajas").ToString
'Dim Guia As String = GvRow.DataKey("Guia").ToString
'Dim Peso As String = GvRow.DataKey("Peso").ToString.ToDecimal.ToString("####.00")
'Dim DTDatosClienteGuia As New DataTable
'Dim DTMovimientosDetalle As New DataTable
'Dim CvePaqueteria As Integer = GvRow.DataKey("CvePaqueteria").ToString.ToEntero
'Dim RutaRdlc As String = Server.MapPath("~") & "\Empresas\Grales\Formatos\GuiasFormato" & CvePaqueteria & ".rdlc"
'Dim Rastreo As String = GvRow.DataKey("Rastreo")
'Dim Dimensiones As String = GvRow.DataKey("Dimensiones")
'Dim FechaEstimada As String = GvRow.DataKey("FechaEstimada")
'Dim ValorStimado As Double = 0
'If Not File.Exists(RutaRdlc) Then
' RutaRdlc = Server.MapPath("~") & "\Empresas\Grales\Formatos\GuiasFormato0.rdlc"
'End If
'RutaRdlc = RutaRdlc.Replace(Server.MapPath("~") & "\", "")
'Dim params As New List(Of ReportParameter)
'Dim ObjInventario As New ClsInventarios
'If ObjInventario.GetPaqueteriaGuiasInfoFormato(CveMovimiento, UsuarioActual.CveEmpresa) Then
' DTDatosClienteGuia = ObjInventario.DtResultados
'Else
' ObjInventario.Dispose()
' Exit Sub
'End If
'If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then
' DTMovimientosDetalle = ObjInventario.DtResultados
' DTMovimientosDetalle.Columns.Add("Peso")
' DTMovimientosDetalle.Columns.Add("Dimensiones")
' DTMovimientosDetalle.AcceptChanges()
' For Each Drow As DataRow In DTMovimientosDetalle.Rows
' Drow("Peso") = Peso
' Drow("Dimensiones") = Dimensiones
' DTMovimientosDetalle.AcceptChanges()
' Next
' ValorStimado = DtMovimientos.SUM("PU")
' ObjInventario.Dispose()
'Else
' ObjInventario.Dispose()
' Exit Sub
'End If
'If DTDatosClienteGuia.Rows.Count > 0 Then
' params.Add(New ReportParameter("NombreComercial", DTDatosClienteGuia.Rows(0)("NombreComercial").ToString))
' params.Add(New ReportParameter("Direccion", DTDatosClienteGuia.Rows(0)("Direccion").ToString))
' params.Add(New ReportParameter("Colonia", DTDatosClienteGuia.Rows(0)("Colonia").ToString))
' params.Add(New ReportParameter("NoExt", DTDatosClienteGuia.Rows(0)("NoExt").ToString))
' params.Add(New ReportParameter("NoInt", DTDatosClienteGuia.Rows(0)("NoInt").ToString))
' params.Add(New ReportParameter("Localidad", DTDatosClienteGuia.Rows(0)("Localidad").ToString))
' params.Add(New ReportParameter("Telefono", DTDatosClienteGuia.Rows(0)("Telefono").ToString))
' params.Add(New ReportParameter("RFCCliente", DTDatosClienteGuia.Rows(0)("RFC").ToString))
' params.Add(New ReportParameter("CiudadCliente", DTDatosClienteGuia.Rows(0)("Ciudad").ToString))
'Else
' Exit Sub
'End If
'Dim Imagen As New System.IO.FileInfo($"{UsuarioActual.Empresa.Ruta}/Logo.png")
'Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa)
'params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa))
'params.Add(New ReportParameter("EmpresaDireccion", UsuarioActual.Empresa.Direccion))
'params.Add(New ReportParameter("EmpresaTelefono", UsuarioActual.Empresa.Telefono))
'params.Add(New ReportParameter("EmpresaColonia", UsuarioActual.Empresa.Colonia))
'params.Add(New ReportParameter("EmpresaLocalidad", UsuarioActual.Empresa.Localidad))
'params.Add(New ReportParameter("RFCEmpresa", UsuarioActual.Empresa.RFC))
'params.Add(New ReportParameter("CiudadEmpresa", UsuarioActual.Empresa.Ciudad))
'params.Add(New ReportParameter("EmpresaTelefono", UsuarioActual.Empresa.Telefono))
'params.Add(New ReportParameter("NumCajas", NumCajas))
'params.Add(New ReportParameter("Peso", Peso))
'params.Add(New ReportParameter("Guia", Guia))
'params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre))
'params.Add(New ReportParameter("FechaImpresion", NowADS().ToDateTime.ToShortDateString))
'params.Add(New ReportParameter("Anio", NowADS().Year.ToString))
'params.Add(New ReportParameter("Mes", NowADS().Month.ToString("00")))
'params.Add(New ReportParameter("Dia", NowADS().Day.ToString("00")))
'params.Add(New ReportParameter("Rastreo", Rastreo))
'params.Add(New ReportParameter("Dimensiones", Dimensiones))
'params.Add(New ReportParameter("FechaEstimada", FechaEstimada))
'If Imagen.Exists Then
' params.Add(New ReportParameter("LogoPath", $"file://{Imagen.FullName}"))
'Else
' params.Add(New ReportParameter("LogoPath", ""))
'End If
'ImprimirPDF(RutaRdlc, DTMovimientosDetalle, params, $"ReporteGuia_{NowADS().ToString("yyyyMMddhhmmss")}")
End Sub
Private Sub GvPaqueriaGuias_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvPaqueriaGuias.RowDataBound
'If e.Row.RowType = DataControlRowType.DataRow Then
' Dim Lnk As LinkButton = e.Row.FCLinkButton("LnkGuiaPaqueteriaGuia")
' Dim Destinatario As String = e.Row.DataKey("Mail").ToString
' If Destinatario.Length = 0 Then
' e.Row.FCLinkButton("LnkGuiaPaqueteriaMail").Visible = False
' Else
' e.Row.FCLinkButton("LnkGuiaPaqueteriaMail").Attributes.Add("title", "Enviar correo a: " & Destinatario)
' End If
' ScriptManager.GetCurrent(Me).RegisterPostBackControl(Lnk)
'End If
End Sub
Private Sub GvPaqueteriaCreaEnlaces()
'For Each GvRow As GridViewRow In GvPaqueriaGuias.Rows
' If GvRow.RowType = DataControlRowType.DataRow Then
' Dim Lnk As LinkButton = GvRow.FCLinkButton("LnkGuiaPaqueteriaGuia")
' ScriptManager.GetCurrent(Me).RegisterPostBackControl(Lnk)
' End If
'Next
End Sub
Protected Sub LnkGuiaPaqueteriaMail_Click(sender As Object, e As EventArgs)
'Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow)
'Dim SerieFolio As String = GvRow.DataKey("SerieFolio").ToString
'Dim NombreComercial As String = GvRow.DataKey("NombreComercial").ToString
'Dim Destinatario As String = GvRow.DataKey("Mail").ToString
'Dim Paqueteria As String = GvRow.DataKey("Paqueteria").ToString
'Dim Guia As String = GvRow.DataKey("Guia").ToString
'Dim Rastreo As String = GvRow.DataKey("Rastreo").ToString
'Dim CveVenta As Integer = GvRow.DataKey("CveVenta").ToEntero
'EnviarCorreoNotificacion(SerieFolio, NombreComercial, Destinatario, Paqueteria, Guia, Rastreo, CveVenta)
End Sub
Private Sub EnviarCorreoNotificacion(SerieFolio As String, NombreComercial As String, Destinatario As String, Paqueteria As String, Guia As String, Rastreo As String, CveVenta As Integer)
'Dim Correo As New ClsSisMail()
'Dim Asunto As String = UsuarioActual.Empresa.NombreCorto & " Envio de pedido: " & SerieFolio
'Dim Cuerpo As New StringBuilder
'Cuerpo.AppendLine($"Estimado {NombreComercial} le informamos que los productos de la factura {SerieFolio} han sido enviados mediante la paquetería {Paqueteria} con Guia {Guia} , Rastreo {Rastreo}.<br><br>")
'Cuerpo.AppendLine("<table><tr>")
'Cuerpo.AppendLine("<th>Cantidad</th><th>Producto</th>")
'For Each Drow As DataRow In DtMovimientos.Rows
' Cuerpo.AppendLine($"<tr><td>{Drow("Cantidad").ToString.ToEntero }</td><td>{Drow("PS").ToString}</td></tr>")
'Next
'Cuerpo.AppendLine("</tr></table>")
'Cuerpo.AppendLine("<br><br>Dudas y aclaraciones departamento de ateción al cliente Tel. 2142200.")
'Destinatario = "rakcsle.rakcsle@gmail.com"
'If Correo.SendMail(UsuarioActual.Empresa, Destinatario, Asunto, Cuerpo.ToString) Then
' GuardarBitacora(CveVenta, "", "Notificación de envío de productos al cliente")
' Alert("Correo enviado existosamente a " & Destinatario)
'Else
' Alert("Se presento un error al enviar el correo a " & Destinatario)
'End If
End Sub
#End Region
#Region "DDL CLIENTE / CLIENTE SUCURSAL - SELECTED INDEX CHANGED"
Private Sub InicializaClientes()
If UsuarioActual.CveEmpresa.Contiene(72, 80) AndAlso CveMovimiento <= 0 Then
DdlClientes.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa)
DdlClientes.DataBind()
DdlClientes.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlClientes.SelectedValue = "-1"
End If
End Sub
Protected Sub ActivaClientes()
If UsuarioActual.CveEmpresa.Contiene(72, 80) Then
DivCliente.Visible = True
DivDepartamentoEntrega.Visible = True
'TxtDepartamentoEntrega.Text = ""
End If
'If UsuarioActual.CveRol = 1 Then
' RfvCliente.Enabled = False
'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()
CargaSucursalesCliente()
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
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
Contabilizar()
End Sub
Private Sub Contabilizar()
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
Dim CvePrePolizaRegistrada As Integer = -1
ObjInventario.GetMovimientos(CveMovimiento, -1, -1, UsuarioActual.CveEmpresa)
Dim CveVenta As Integer = ObjInventario.CveVenta
Dim MovAlmacen As Boolean = False
Dim OrigenMov As Integer = GlobalDTInvConceptos.FiltroPrimeroValor("Origen", "CveConcepto = " & DdlConcepto.SelectedValue).ToEntero
If OrigenMov = 1 Then MovAlmacen = False Else MovAlmacen = True
CveMovimientoRelacionado = ObjInventario.DtResultados.Rows(0)("CveMtoRel").ToString.ToEntero
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 ConceptoPoliza As String = String.Format("{0}-{1}", DdlConcepto.SelectedItem.Text, If(DdlConcepto.SelectedValue.ToEntero.Contiene(3), HplVenta.Text, TxtFolio.Text))
Dim CveModalidad As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacen.SelectedValue.ToEntero).FiltroPrimeroValor("CveModalidad").ToEntero()
Dim Contabilizable As Boolean = (CveModalidad = 1)
If tmpCostos.Rows.Count > 0 Then
Dim Concepto As String = If(TxtObservaciones.Text = "", ConceptoPoliza, $" {TxtObservaciones.Text}")
Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inv_EntradaSalida", 74, DtCostos.SUM("Total"), DtCostos.SUM("Total"), 1, TxtFecha.Text.Replace(",", "").ToDate, ConceptoPoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
CvePrePolizaRegistrada = CvePrePoliza
If HplCompra.Visible AndAlso HplCompra.Text <> "" Then
ValorInventario = DtCostos.SUMD("Total")
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ValorInventario, ValorInventario, 205, Concepto, Concepto, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimiento, ImporteME:=ValorInventario, CveCompra:=HdnCveCompra.Value.ToEntero, TipoCambio:=LbTipoCambio.Text.ToDecimal, Contabilizable:=Contabilizable) Then
ErrorMovInv = True
End If
' ValorInventario = ValorInventario - ValorInventarioME
'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
If ObjInventario.Modulo.Contiene("RA/G4") Then
Contabilizable = True
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not MovAlmacen, DtCostos.SUMD("Total").RoundSQL, DtCostos.SUMD("Total").RoundSQL, 205, Concepto, Concepto, CveCompra:=CveCompra, CveMovimientoAlmacen:=CveMovimientoRelacionado, Contabilizable:=Contabilizable) Then
ErrorMovInv = True
End If
ElseIf ObjInventario.Modulo.Contiene("RE/G5", "EA/G5") Then
Contabilizable = True
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not MovAlmacen, DtCostos.SUMD("Total").RoundSQL, DtCostos.SUMD("Total").RoundSQL, 331, Concepto, Concepto, CveCompra:=CveCompra, CveMovimientoAlmacen:=CveMovimientoRelacionado, Contabilizable:=Contabilizable) Then
ErrorMovInv = True
End If
Else
If ObjInventario.Modulo.Contiene("M/CU", "RU/G") Then
Contabilizable = True
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not MovAlmacen, DtCostos.SUMD("Total").RoundSQL, DtCostos.SUMD("Total").RoundSQL, 278, HplVenta.Text, Concepto, CveVenta:=CveVenta, CveCompra:=CveCompra, CveMovimientoAlmacen:=CveMovimientoRelacionado, Contabilizable:=Contabilizable) Then
ErrorMovInv = True
End If
Else
If ObjInventario.Modulo.Contiene("TA/G1", "Recons", "API-PT/C1") Then
Contabilizable = False
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not MovAlmacen, DtCostos.SUMD("Total").RoundSQL, DtCostos.SUMD("Total").RoundSQL, 68, Concepto, Concepto, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimientoRelacionado, Contabilizable:=Contabilizable) Then
ErrorMovInv = True
End If
Else
If ObjInventario.Modulo.Contiene("Consig") Then
Contabilizable = False
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not MovAlmacen, DtCostos.SUMD("Total").RoundSQL, DtCostos.SUMD("Total").RoundSQL, 95, Concepto, Concepto, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimientoRelacionado, Contabilizable:=Contabilizable) Then
ErrorMovInv = True
End If
Else
If ObjInventario.Modulo.Contiene("ASA/G1", "Vta/E4", "ARMPAQ1", "RE/GSC3") Then
Contabilizable = False
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not MovAlmacen, DtCostos.SUMD("Total").RoundSQL, DtCostos.SUMD("Total").RoundSQL, 68, Concepto, Concepto, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimientoRelacionado, Contabilizable:=Contabilizable) Then
ErrorMovInv = True
End If
Else
If DdlConcepto.SelectedValue.Contiene("1", "6", "22", "23", "7", "16", "21", "24", "32") Then
'genero las prepolizas manuales
Dim tCveConcepto As Integer = 95
Dim CveCuenta As Integer
If UsuarioActual.CveEmpresa = 119 Then CveCuenta = 55519
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not MovAlmacen, DtCostos.SUMD("Total"), DtCostos.SUMD("Total"), tCveConcepto, Concepto, Concepto, CveVenta:=CveVenta, CveClasificacion:=-1, CveMovimientoAlmacen:=CveMovimiento, CveSubProyecto:=-1, Contabilizable:=Contabilizable) Then
ErrorMovInv = True
End If
Else
Dim tCveSubProyecto As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen={DdlAlmacen.SelectedValue.ToEntero}").ToEntero
Dim tCveConcepto As Integer = 69
If ObjInventario.CveConcepto = 37 Then
tCveConcepto = 181
End If
For Each RowInv As DataRow In tmpCostos.Rows
ValorInventario = DtCostos.SUM("Total", $"CveClasificacion = {RowInv("CveClasificacion")}").ToString.ToDecimal.RoundSQL
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not MovAlmacen, ValorInventario, ValorInventario, tCveConcepto, Concepto, Concepto, CveVenta:=CveVenta, CveClasificacion:=RowInv("CveClasificacion").ToString.ToEntero, CveMovimientoAlmacen:=CveMovimiento, CveSubProyecto:=tCveSubProyecto, Contabilizable:=Contabilizable) Then
ErrorMovInv = True
Exit For
End If
Next
End If
End If
End If
End If
End If
End If
End If
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, MovAlmacen, DtCostos.SUMD("Total").RoundSQL, DtCostos.SUMD("Total").RoundSQL, 68, Concepto, Concepto, CveVenta:=CveVenta, CveMovimientoAlmacen:=CveMovimiento, Contabilizable:=Contabilizable) Then
ErrorMovInv = True
End If
End If
End If
If ErrorMovInv = False Then
ObjInventario.Commit()
ObjInventario.Dispose()
ObjConta.Dispose()
If CvePrePolizaRegistrada > 0 Then
Response.Redirect($"../Contabilidad/RegPrePolizas.aspx?CvePrePoliza={CvePrePolizaRegistrada}", True)
End If
Else
ObjConta.RollBack()
ObjInventario.Dispose()
ObjConta.Dispose()
End If
End Sub
#End Region
#Region "CAMBIO INVENTARIO FISICO"
Protected Sub LnkCambioInventarioFisico_Click(sender As Object, e As EventArgs)
RegistraScript("$('#DivModalCambioFisico').modal({backdrop: 'static', keyboard: false});")
End Sub
Protected Sub LnkCambioVigencia_Click(sender As Object, e As EventArgs)
RegistraScript(String.Format("$('#{0}').modal();", "DivModalCambiarVigencias"))
TxtCantCambio.Text = ""
TxtSerieCambio.Text = ""
TxtFechaCambio.Text = NowADS().ToString("dd/MM/yyyy")
TxtObsCambioVigencia.Text = ""
Th5.Visible = False
Th6.Visible = False
Th7.Visible = False
Th8.Visible = False
Td5.Visible = False
Td6.Visible = False
Td7.Visible = False
Td8.Visible = False
DdlPSCambioSalida.txtText.Value = ""
DdlPSCambioSalida.txtValue.Value = ""
DdlSeccionCambio.SelectedValueExist(-1)
DdlAlmacenCambioVigencias.SelectedValueExist(-1)
AplicaVigenciaCambioVigencia = False
UpCambioSalida.Update()
UpModalCambiarVigencias.Update()
End Sub
#Region "ENTRADAS"
Private Sub BtnAgregarEntrada_Click(sender As Object, e As EventArgs) Handles BtnAgregarEntrada.Click
If Not DdlPS.SelectedValue.ToEntero > 0 Then
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
Alert("Es necesario especificar el producto.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
AddPSEntrada(DdlPS.SelectedValue.ToEntero, TxtCantidadInvFisico.Text.ToDouble, TxtCostoPromedio.Text.ToDecimal)
End Sub
Protected Sub AddPSEntrada(CvePS As Integer, Cantidad As Double, CostoPromedio As Double, Optional Sonido As Boolean = True, Optional CargaGV As Boolean = True)
If Sonido Then
If DdlAlmacenInventarioFisico.SelectedValue.ToEntero <= 0 Then Alert("Seleccione un almacen", TipoMensaje.MsgAdvertencia) : RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") : DdlPS.SelectedText = "" : Exit Sub
End If
Dim Valido As Boolean = True
If Valido Then
Dim CveClasificacion As Integer
Dim CveUM As Double
Dim CodigoPS As String = ""
Dim PS As String = ""
Dim CveSeccionAlmacen As Integer = DdlSeccionAlmacenEntrada.SelectedValue.ToEntero
Dim Serie As String = If(TxtSerieEntrada.Text = "", "", TxtSerieEntrada.Text)
Dim Lote As String = If(TxtLoteEntrada.Text = "", "", TxtLoteEntrada.Text)
Dim Caducidad As String = If(TxtCaducidadEntrada.Text = "", MinFecha.ToShortDateString, TxtCaducidadEntrada.Text)
Dim dr As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimero("")
If dr IsNot Nothing Then
CveClasificacion = dr("CveClasificacion").ToString.ToEntero
CveUM = dr("CveUnidadMedida").ToString.ToEntero
CodigoPS = dr("PSCodigo").ToString.ToString
PS = dr("PSCodigo").ToString.ToString
End If
Dim registro As DataRow = DtMovimientosEntradaInvFisico.NewRow
registro.Item("Cantidad") = Cantidad
registro.Item("CveUM") = CveUM
registro.Item("CvePS") = CvePS
registro.Item("CodigoPS") = CodigoPS
registro.Item("PS") = PS
registro.Item("PU") = CostoPromedio
registro.Item("Total") = Cantidad * CostoPromedio
registro.Item("CveClasificacion") = CveClasificacion
registro.Item("Estatus") = ""
registro.Item("CveSeccionAlmacen") = CveSeccionAlmacen
registro.Item("Serie") = Serie
registro.Item("Lote") = Lote
registro.Item("FechaCaducidad") = Caducidad
DtMovimientosEntradaInvFisico.Rows.Add(registro)
If CargaGV Then
CargaGvEntradas(DtMovimientosEntradaInvFisico)
End If
If Sonido Then
RegistraScript("playsonidito('beep-07.wav')")
End If
End If
End Sub
Private Sub CargaGvEntradas(DtTemp As DataTable)
GvEntradas.DataSource = DtTemp
GvEntradas.DataBind()
UpEntradasGv.Update()
If DtTemp IsNot Nothing AndAlso DtTemp.Rows.Count > 0 Then
GvEntradas.Columns(3).Visible = DtTemp.MAX("CveSeccionAlmacen").ToEntero > 0
GvEntradas.Columns(4).Visible = DtTemp.MAX("Serie") <> ""
GvEntradas.Columns(5).Visible = DtTemp.MAX("Lote") <> ""
GvEntradas.Columns(6).Visible = DtTemp.MAX("FechaCaducidad").ToDate > MinFecha
If Not String.IsNullOrWhiteSpace(UsuarioActual.Empresa.Funcionalidad(147)) Then GvEntradas.Columns(6).HeaderText = UsuarioActual.Empresa.Funcionalidad(147)
End If
End Sub
Protected Sub DdlPSInvFisico_ValueChanged(sender As Object, e As EventArgs) Handles DdlPS.selectedindexchange
ProductChange()
End Sub
Private Sub ProductChange()
If DdlPS.SelectedValue.ToEntero > 0 Then
Dim ObjInventario As New ClsInventarios
Dim CostoPromedio As Decimal = ObjInventario.GetCostoPS(DdlPS.SelectedValue.ToEntero, txtCantidad.Text.ToDecimal, DdlAlmacenInventarioFisico.SelectedValue.ToEntero, "", TxtFecha.Text.Replace(",", "").ToDate)
'GlobalDTPS(UsuarioActual.CveEmpresa, DdlPS.SelectedValue.ToEntero).FiltroPrimeroValor("CostoPromedio", "").ToDecimal
If CostoPromedio > 0 Then
TxtCostoPromedio.Text = CostoPromedio.FormatoNumero
Else
TxtCostoPromedio.Text = "0.00"
End If
ObjInventario.Dispose()
End If
UpModalInventarioFisico.Update()
End Sub
Protected Sub DeleteRowInvFisicoEntrada(ByVal sender As Object, ByVal e As EventArgs)
Dim lnkRemove As LinkButton = DirectCast(sender, LinkButton)
If DtMovimientosEntradaInvFisico.Rows.Count > 0 And lnkRemove.CommandArgument.ToString.Length > 0 Then
Dim i As Integer
i = lnkRemove.CommandArgument.ToString.ToEntero
Dim Drs As DataRow() = DtMovimientosEntradaInvFisico.Select(String.Format("No = {0}", i))
If Drs.Count > 0 Then
Drs(0).Delete()
End If
DtMovimientosEntradaInvFisico.AcceptChanges()
End If
GvEntradas.EditIndex = -1
CargaGvEntradas(DtMovimientosEntradaInvFisico)
End Sub
#End Region
#Region "SALIDAS"
Private Sub BtnAgregarSalida_Click(sender As Object, e As EventArgs) Handles BtnAgregarSalida.Click
Dim ObjInventario As New ClsInventarios
Dim CveUM As Integer
Dim PS As String = ""
Dim Mensaje As String = ""
'Dim FechaCaducidad As Date
'Dim lote As String
Dim drps As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=DdlPS.SelectedValue.ToEntero).FiltroPrimero("")
If drps IsNot Nothing Then
CveUM = drps("CveUnidadMedida").ToString.ToEntero
PS = drps("PSCodigo").ToString
End If
Dim Lote As String = If(TxtLoteSalida.Text = "", "", TxtLoteSalida.Text)
Dim FechaCaducidad As Date = If(TxtCaducidadSalida.Text = "", MinFecha.ToShortDateString, TxtCaducidadSalida.Text).ToDate
If ObjInventario.GetExistenciasPS(DdlPSSalida.SelectedValue.ToEntero, CveUM, UsuarioActual.CveEmpresa, DdlAlmacenInventarioFisico.SelectedValue.ToEntero, PendientePorSurtir:=1, Lote:=Lote, FechaCaducidad:=FechaCaducidad) >= TxtCantidadSalidaInv.Text.ToDouble Then
If Not DdlPSSalida.SelectedValue.ToEntero > 0 Then
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
Alert("Es necesario especificar el producto.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
AddPSSalida(DdlPSSalida.SelectedValue.ToEntero, TxtCantidadSalidaInv.Text.ToDouble)
Else
Mensaje = String.Format("No hay existencias suficientes del producto: {0}", PS)
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
Alert(Mensaje, TipoMensaje.MsgError)
End If
ObjInventario.Dispose()
End Sub
Protected Sub AddPSSalida(CvePS As Integer, Cantidad As Double, Optional Sonido As Boolean = True, Optional CargaGV As Boolean = True)
If Sonido Then
If DdlAlmacenInventarioFisico.SelectedValue.ToEntero <= 0 Then Alert("Seleccione un almacen", TipoMensaje.MsgAdvertencia) : RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") : DdlPSSalida.SelectedText = "" : Exit Sub
End If
Dim Valido As Boolean = True
If Valido Then
Dim CveClasificacion As Integer
Dim CveUM As Double
Dim CodigoPS As String = ""
Dim PS As String = ""
Dim CveSeccionAlmacen As Integer = DdlSeccionAlmacenSalida.SelectedValue.ToEntero
Dim Serie As String = If(TxtSerieSalida.Text = "", "", TxtSerieSalida.Text)
Dim Lote As String = If(TxtLoteSalida.Text = "", "", TxtLoteSalida.Text)
Dim Caducidad As String = If(TxtCaducidadSalida.Text = "", MinFecha.ToShortDateString, TxtCaducidadSalida.Text)
Dim dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS).FiltroPrimero("", "PS")
If dr IsNot Nothing Then
CveClasificacion = dr("CveClasificacion").ToString.ToEntero
CveUM = dr("CveUM").ToString.ToEntero
CodigoPS = dr("PSCodigo").ToString.ToString
PS = dr("PS").ToString.ToString
End If
Dim registro As DataRow = DtMovimientosSalidaInvFisico.NewRow
registro.Item("Cantidad") = Cantidad
registro.Item("CveUM") = CveUM
registro.Item("CvePS") = CvePS
registro.Item("CodigoPS") = CodigoPS
registro.Item("PS") = PS
registro.Item("PU") = 0
registro.Item("Total") = 0
registro.Item("CveClasificacion") = CveClasificacion
registro.Item("Estatus") = ""
registro.Item("CveSeccionAlmacen") = CveSeccionAlmacen
registro.Item("Serie") = Serie
registro.Item("Lote") = Lote
registro.Item("FechaCaducidad") = Caducidad
DtMovimientosSalidaInvFisico.Rows.Add(registro)
If CargaGV Then
CargaGvSalidas(DtMovimientosSalidaInvFisico)
End If
If Sonido Then
RegistraScript("playsonidito('beep-07.wav')")
End If
End If
End Sub
Private Sub CargaGvSalidas(DtTemp As DataTable)
GvSalidas.DataSource = DtTemp
GvSalidas.DataBind()
UpSalidaGv.Update()
If DtTemp IsNot Nothing AndAlso DtTemp.Rows.Count > 0 Then
GvSalidas.Columns(2).Visible = DtTemp.MAX("CveSeccionAlmacen").ToEntero > 0
GvSalidas.Columns(3).Visible = DtTemp.MAX("Serie") <> ""
GvSalidas.Columns(4).Visible = DtTemp.MAX("Lote") <> ""
GvSalidas.Columns(5).Visible = DtTemp.MAX("FechaCaducidad").ToDate > MinFecha
GvSalidas.Columns(5).HeaderText = UsuarioActual.Empresa.Funcionalidad(147)
End If
End Sub
Protected Sub DeleteRowInvFisicoSalida(ByVal sender As Object, ByVal e As EventArgs)
Dim lnkRemove As LinkButton = DirectCast(sender, LinkButton)
If DtMovimientosSalidaInvFisico.Rows.Count > 0 And lnkRemove.CommandArgument.ToString.Length > 0 Then
Dim i As Integer
i = lnkRemove.CommandArgument.ToString.ToEntero
Dim Drs As DataRow() = DtMovimientosSalidaInvFisico.Select(String.Format("No = {0}", i))
If Drs.Count > 0 Then
Drs(0).Delete()
End If
DtMovimientosSalidaInvFisico.AcceptChanges()
End If
GvSalidas.EditIndex = -1
CargaGvSalidas(DtMovimientosSalidaInvFisico)
End Sub
#End Region
#Region "CAMBIO VIGENCIA"
Private Sub LnkAddSalidaCambio_Click(sender As Object, e As EventArgs) Handles LnkAddSalidaCambio.Click
If Not DdlPSCambioSalida.SelectedValue.ToEntero > 0 Then
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
Alert("Es necesario especificar el producto.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
If AplicaVigenciaCambioVigencia And TxtSerieCambio.Text.Trim.Length = 0 Then
Alert("Es necesario especificar la serie del producto.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
AddPSCambioSalida(DdlPSCambioSalida.SelectedValue.ToEntero, TxtCantCambio.Text.ToDouble)
End Sub
Protected Sub DdlPSCambioSalida_selectedindexchange(sender As Object, e As EventArgs)
Td6.Visible = False
Th6.Visible = False
If DdlPSCambioSalida.SelectedValue.ToEntero > 0 Then
Using ObjPS As New ClsProductosServicios()
If ObjPS.GetPS(DdlPSCambioSalida.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa) AndAlso ObjPS.DtResultados.Rows.Count > 0 Then
AplicaVigenciaCambioVigencia = If(ObjPS.DtResultados.Rows(0)("AplicaSerie").ToString = "", False, Boolean.Parse(ObjPS.DtResultados.Rows(0)("AplicaSerie").ToString))
Td6.Visible = AplicaVigenciaCambioVigencia
Th6.Visible = AplicaVigenciaCambioVigencia
End If
End Using
End If
UpCambioSalida.Update()
End Sub
Protected Sub AddPSCambioSalida(CvePS As Integer, Cantidad As Double)
If DdlAlmacenCambioVigencias.SelectedValue.ToEntero <= 0 Then Alert("Seleccione un almacen", TipoMensaje.MsgAdvertencia) : RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") : DdlPSCambioSalida.SelectedText = "" : Exit Sub
Dim Valido As Boolean = True
If Valido Then
Dim CveClasificacion As Integer
Dim CveUM As Integer
Dim CodigoPS As String = ""
Dim PS As String = ""
Dim CveSeccionAlmacen As Integer = DdlSeccionCambio.SelectedValue.ToEntero
Dim Serie As String = If(TxtSerieCambio.Text = "", "", TxtSerieCambio.Text)
Dim Lote As String = If(TxtLoteCambio.Text = "", "", TxtLoteCambio.Text)
Dim Caducidad As String = If(TxtCaducidadCambio.Text = "", MinFecha.ToShortDateString, TxtCaducidadCambio.Text)
Dim dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS).FiltroPrimero("", "PS")
If dr IsNot Nothing Then
CveClasificacion = dr("CveClasificacion").ToString.ToEntero
CveUM = dr("CveUM").ToString.ToEntero
CodigoPS = dr("PSCodigo").ToString.ToString
PS = dr("PS").ToString.ToString
End If
Dim CantidadExistencia = GetExistencias(CvePS, CveUM, UsuarioActual.CveEmpresa, DdlAlmacenCambioVigencias.SelectedValue.ToEntero, CveSeccionAlmacen, Serie, Lote, Caducidad.ToDateTime())
If Cantidad > CantidadExistencia Then
Dim msg = $"El producto {PS} no tiene existencia. " + If(Serie.Length > 0, $"Serie: {Serie} ", "") + If(Lote.Length > 0, $"Lote: {Lote} ", "") + If(Caducidad.ToDateTime() > MinFecha, $"Caducidad: {Caducidad} ", "")
Alert(msg, TipoMensaje.MsgAdvertencia)
Exit Sub
End If
Dim registro As DataRow = DtMovimientosCambioVigencias.NewRow
registro.Item("Cantidad") = Cantidad
registro.Item("CveUM") = CveUM
registro.Item("CvePS") = CvePS
registro.Item("CodigoPS") = CodigoPS
registro.Item("PS") = PS
registro.Item("PU") = 0
registro.Item("Total") = 0
registro.Item("CveClasificacion") = CveClasificacion
registro.Item("Estatus") = ""
registro.Item("CveSeccionAlmacen") = CveSeccionAlmacen
registro.Item("Serie") = Serie
registro.Item("Lote") = Lote
registro.Item("FechaCaducidad") = Caducidad
If CvePS > 0 Then
Using ObjPS As New ClsProductosServicios()
If ObjPS.GetPS(CvePS, -1, UsuarioActual.CveEmpresa) AndAlso ObjPS.DtResultados.Rows.Count > 0 Then
Dim CvePSAdicionalVigencia As Integer = ObjPS.DtResultados.Rows(0)("CvePSAdicionalVigencia").ToString.ToEntero()
Dim CodigoPSVigencia As String = ObjPS.DtResultados.Rows(0)("CodigoPSVigencia").ToString
'SI EXISTE UN MOVIMIENTO DE VIGENCIA
If CvePSAdicionalVigencia > 0 Then
If ObjPS.GetPS(CvePSAdicionalVigencia, -1, UsuarioActual.CveEmpresa) AndAlso ObjPS.DtResultados.Rows.Count > 0 Then
registro.Item("CvePSVigencia") = CvePSAdicionalVigencia
registro.Item("CodigoPSVigencia") = CodigoPSVigencia
registro.Item("CveUMVigencia") = ObjPS.DtResultados.Rows(0)("CveUM").ToString.ToEntero()
DtMovimientosCambioVigencias.Rows.Add(registro)
End If
Else
Alert("Este producto no tiene un producto de vigencia relacionado", TipoMensaje.MsgAdvertencia)
End If
End If
End Using
End If
CargaGvCambioSalidas(DtMovimientosCambioVigencias)
RegistraScript("playsonidito('beep-07.wav')")
End If
End Sub
Protected Sub DeleteRowCambioVigencia(ByVal sender As Object, ByVal e As EventArgs)
Dim lnkRemove As LinkButton = DirectCast(sender, LinkButton)
If DtMovimientosCambioVigencias.Rows.Count > 0 And lnkRemove.CommandArgument.ToString.Length > 0 Then
Dim i As Integer
i = lnkRemove.CommandArgument.ToString.ToEntero
Dim Drs As DataRow() = DtMovimientosCambioVigencias.Select(String.Format("No = {0}", i))
If Drs.Count > 0 Then
Drs(0).Delete()
End If
DtMovimientosCambioVigencias.AcceptChanges()
End If
GvSalidasCambioVigencia.EditIndex = -1
CargaGvCambioSalidas(DtMovimientosCambioVigencias)
End Sub
Private Sub CargaGvCambioSalidas(DtTemp As DataTable)
GvSalidasCambioVigencia.DataSource = DtTemp
GvSalidasCambioVigencia.DataBind()
If DtTemp IsNot Nothing AndAlso DtTemp.Rows.Count > 0 Then
GvSalidasCambioVigencia.Columns(2).Visible = DtTemp.MAX("CveSeccionAlmacen").ToEntero > 0
GvSalidasCambioVigencia.Columns(3).Visible = DtTemp.MAX("Serie") <> ""
GvSalidasCambioVigencia.Columns(4).Visible = DtTemp.MAX("Lote") <> ""
GvSalidasCambioVigencia.Columns(5).Visible = DtTemp.MAX("FechaCaducidad").ToDate > MinFecha
GvSalidasCambioVigencia.Columns(5).HeaderText = UsuarioActual.Empresa.Funcionalidad(147)
End If
UpGvCambioSalidas.Update()
End Sub
Protected Sub GvSalidasCambioVigencia_RowDataBound(sender As Object, e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
e.Row.Cells(1).CssClass = "SubTotales"
e.Row.Cells(6).CssClass = "Totales"
End If
End Sub
#End Region
#Region "GUARDAR CAMBIO INVENTARIO FISICO "
Private Sub BtnAplicarCambioInvFisico_Click(sender As Object, e As EventArgs) Handles BtnAplicarCambioInvFisico.Click
If GvEntradas.Rows.Count = 0 And GvSalidas.Rows.Count = 0 Then
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')")
RegistraScript(String.Format("$('#{0}').modal();", "DivModalCambioFisico"))
Exit Sub
End If
If Not TxtIFDescripcion.Text.Trim.Length > 0 Then
Alert("La descripción es requerida", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
Dim CveAlmacen As Integer = DdlAlmacenInventarioFisico.SelectedValue.ToEntero
Dim CveModalidad As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=CveAlmacen).FiltroPrimeroValor("CveModalidad").ToEntero()
Dim EsContabilizable As Boolean = (CveModalidad = 1)
If CveAlmacen <= 0 Then
Alert("Debe seleccionar un almacen", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
Dim ErrorMovInv As Boolean = False
Dim Mensaje As String = ""
Dim ValorEntrada As Decimal = 0
Dim ValorSalida As Decimal = 0
Dim ImporteConcepto As Decimal = 0
Dim CveMovimientoEntrada As Integer = -1
Dim FolioEntrada As Integer = -1
Dim CveMovimientoSalida As Integer = -1
Dim FolioSalida As Integer = -1
Dim tConcepto As String = TxtIFDescripcion.Text.Trim
Dim Fecha As Date = (TxtFechaInvFisico.Text.ToDate.ToString("yyyy/MM/dd ") & NowADS().ToShortTimeString).ToDate
Dim tCveSubProyectoEntrada As Integer = -1
Dim tCveSubProyectoSalida As Integer = -1
Dim TipoMovto As Boolean = False
Dim ObjInventario As New ClsInventarios
Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL())
Try
Dim Prorratear As Boolean = If(UsuarioActual.CveEmpresa = 172 AndAlso DtMovimientosSalidaInvFisico.Rows.Count > 0 AndAlso DtMovimientosEntradaInvFisico.Rows.Count > 0, True, False)
Dim ProPU As Decimal = 0
'MOVIMIENTO DE ENTRADA
If DtMovimientosEntradaInvFisico.Rows.Count > 0 Then
'FolioEntrada = ObjInventario.GetFolioSiguiente(32, UsuarioActual.CveEmpresa)
CveMovimientoEntrada = ObjInventario.AddMovimiento(CveAlmacen, 32, 1, Fecha, FolioEntrada, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtIFDescripcion.Text.Trim, Modulo:="ES/AJ1")
FolioEntrada = ObjInventario.Folio
Else
CveMovimientoEntrada = -1
End If
'MOVIMIENTO DE SALIDA
If DtMovimientosSalidaInvFisico.Rows.Count > 0 Then
'FolioSalida = ObjInventario.GetFolioSiguiente(34, UsuarioActual.CveEmpresa)
CveMovimientoSalida = ObjInventario.AddMovimiento(CveAlmacen, 34, 1, Fecha, FolioSalida, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, CveMovimientoRelacionado:=CveMovimientoEntrada, Observaciones:=TxtIFDescripcion.Text.Trim, Modulo:="ES/AJ2")
FolioSalida = ObjInventario.Folio
End If
'Registro PrePoliza
Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inv/E/S INVENTARIO FISICO", 53, 0, 0, 1, Fecha, TxtIFDescripcion.Text.Trim, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoPoliza:=3)
'VALIDA, sino hay registrado ningun movimiento, que no siga
If (CveMovimientoEntrada <= 0 AndAlso CveMovimientoSalida <= 0) Or CvePrePoliza <= 0 Then
ErrorMovInv = True
Alert("Ocurrió un error al realizar los registros. Por favor verifique y vuelva a intentar", TipoMensaje.MsgError)
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
End If
If Not ErrorMovInv Then
'VALIDA EXISTENCIAS SALIDA E INSERTA DETALLES
For Each Dr As DataRow In DtMovimientosSalidaInvFisico.Rows
If ObjInventario.GetExistenciasPS(Dr("CvePS").ToString.ToEntero, Dr("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, DdlAlmacenInventarioFisico.SelectedValue.ToEntero, PendientePorSurtir:=1) >= Dr("Cantidad").ToString.ToDouble Then
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero,
Dr("PU").ToString.ToDecimal.RoundSQL(6), -1, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString,
Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate) Then
Mensaje = "Ocurrió un error al guardar los movimientos de salida"
ErrorMovInv = True
Exit For
End If
Else
Mensaje = String.Format("No hay existencias suficientes del producto: {0}", Dr("PS"))
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
ErrorMovInv = True
Exit For
End If
Next
If Not ErrorMovInv AndAlso Prorratear Then
If Not ErrorMovInv AndAlso CveMovimientoSalida > 0 Then
If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then
Dim ProTotalSalida As Decimal = ObjInventario.DtResultados.SUMD("Total", "").RoundSQL(2)
Dim ProCantidadEntrada As Decimal = DtMovimientosEntradaInvFisico.SUMD("Cantidad", "")
ProPU = (ProTotalSalida / ProCantidadEntrada).RoundSQL(10)
If Not ProPU > 0 Then
ErrorMovInv = True
Mensaje = $"Ocurrió un error al obtener el PU proraterado, pu {ProPU}"
End If
Else
ErrorMovInv = True
Mensaje = "Ocurrió un error al obtener el PU proraterado"
End If
End If
End If
If Not ErrorMovInv Then
For Each Dr As DataRow In DtMovimientosEntradaInvFisico.Rows
ImporteConcepto = If(Prorratear, ProPU, Dr("PU").ToString.ToDecimal)
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero,
ImporteConcepto, -1, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString,
Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate) Then
Mensaje = "Ocurrió un error al guardar los movimientos de entrada"
ErrorMovInv = True
Exit For
End If
Next
End If
'Obtiene valor entrada
If Not ErrorMovInv AndAlso CveMovimientoEntrada > 0 Then
If ObjInventario.GetMovimientosDetalle(CveMovimientoEntrada, UsuarioActual.CveEmpresa) Then
Dim tValorInventario As Decimal = ObjInventario.DtResultados.SUMD("Total", "").RoundSQL(2)
ValorEntrada = tValorInventario
Dim drA2 As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", DdlAlmacenInventarioFisico.SelectedValue))
If drA2 IsNot Nothing Then
tCveSubProyectoEntrada = drA2("CveSubProyecto").ToString.ToEntero
End If
Else
ErrorMovInv = True
Mensaje = "Ocurrió un error al validar los movimientos contables de entrada"
End If
End If
'Obtiene valor salida
If Not ErrorMovInv AndAlso CveMovimientoSalida > 0 Then
If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then
Dim tValorInventario As Decimal = ObjInventario.DtResultados.SUMD("Total", "").RoundSQL(2)
ValorSalida = tValorInventario
Dim drA2 As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", DdlAlmacenInventarioFisico.SelectedValue))
If drA2 IsNot Nothing Then
tCveSubProyectoSalida = drA2("CveSubProyecto").ToString.ToEntero
End If
Else
ErrorMovInv = True
Mensaje = "Ocurrió un error al validar los movimientos contables de salida"
End If
End If
If Not ErrorMovInv Then
'NOTA
' cuando el valor entrada sea mayor al de salida, el valor de salida debe de ser negativo y cargado
' cuando el valor salida sea mayor al de entrada, el valor de entrada debe de ser negativo y abonado
'Registro la prepólizaDetalle Entradas
If CveMovimientoEntrada > 0 Then
TipoMovto = False
If ValorEntrada <= ValorSalida Then
TipoMovto = True : ValorEntrada = -ValorEntrada ' invierto su naturaleza
End If
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovto, ValorEntrada, ValorEntrada, 68, "", tConcepto, CveMovimientoAlmacen:=CveMovimientoEntrada, CveSubProyecto:=tCveSubProyectoEntrada, Contabilizable:=EsContabilizable) Then
ErrorMovInv = True
Mensaje = "Ocurrió un error al guardar los movimientos contables de entrada"
End If
End If
'Registro la prepólizaDetalle Salidas
If CveMovimientoSalida > 0 Then
TipoMovto = True
If ValorSalida < ValorEntrada Then
TipoMovto = False : ValorSalida = -ValorSalida ' invierto su naturaleza
End If
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovto, ValorSalida, ValorSalida, 68, "", tConcepto, CveMovimientoAlmacen:=CveMovimientoSalida, CveSubProyecto:=tCveSubProyectoSalida, Contabilizable:=EsContabilizable) Then
ErrorMovInv = True
Mensaje = "Ocurrió un error al guardar los movimientos contables de salida"
End If
End If
If ValorEntrada >= ValorSalida Then
'si el valor entrada es igual al valorsalida, y este sea cero.
If tCveSubProyectoEntrada = -1 Then tCveSubProyectoEntrada = tCveSubProyectoSalida
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ValorEntrada + ValorSalida, ValorEntrada + ValorSalida, 260, "", tConcepto, CveMovimientoAlmacen:=CveMovimientoSalida, CveSubProyecto:=tCveSubProyectoEntrada, Contabilizable:=EsContabilizable) Then
ErrorMovInv = True
Mensaje = "Ocurrió un error al guardar los movimientos contables de ajuste de ingreso"
End If
ElseIf ValorSalida >= ValorEntrada Then
'inserta el gasto
Dim dr As DataRow = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimero("")
Dim tCveClasificacion As Integer = -1
If dr IsNot Nothing Then
tCveClasificacion = dr("CveClasificacion").ToString.ToEntero
End If
If Math.Abs((ValorSalida + ValorEntrada)) <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ValorSalida + ValorEntrada, ValorSalida + ValorEntrada, 290, "", tConcepto, CveMovimientoAlmacen:=CveMovimientoSalida, CveClasificacion:=tCveClasificacion, CveSubProyecto:=tCveSubProyectoSalida, Contabilizable:=EsContabilizable) Then
ErrorMovInv = True
Mensaje = "Ocurrió un error al guardar los movimientos contables de ajuste de salida"
End If
End If
End If
End If
If Not ErrorMovInv Then
Dim AutoConta As Boolean = True
If (UsuarioActual.CveEmpresa = 119) Then
AutoConta = False
End If
If Not ErrorMovInv AndAlso Not ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual, AutoConta:=AutoConta) Then
ErrorMovInv = True
'If ObjConta.ValorPolizaDescuadre > 0 Then
' GuardaLogAD($"Compras/Compras-Guardar | Error{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas")
' ErrorPrepolizaDescuadre = True
'End If
End If
End If
Dim RetornoVirtual As MMovimientoVirtual = Nothing
If Not ErrorMovInv AndAlso UsuarioActual.Empresa.Funcionalidad(531) = "1" Then
If CveMovimientoSalida > 0 Then RetornoVirtual = GenerarMovimientoVirtual(CveMovimientoSalida, ObjInventario, ObjConta)
If RetornoVirtual IsNot Nothing Then ErrorMovInv = RetornoVirtual.TieneError
If CveMovimientoEntrada > 0 AndAlso Not ErrorMovInv Then RetornoVirtual = GenerarMovimientoVirtual(CveMovimientoEntrada, ObjInventario, ObjConta)
If RetornoVirtual IsNot Nothing Then ErrorMovInv = RetornoVirtual.TieneError
End If
End If
Catch ex As Exception
OnError("Ocurrió un error al generar el movimiento", ex)
ErrorMovInv = True
End Try
If Not ErrorMovInv Then
ObjInventario.Commit() ' aplica los movimientos insertados
Dim Msg As New StringBuilder
Msg.AppendFormat("<br/>El Movimiento se registro correctamente.")
If CveMovimientoEntrada > 0 Then
Msg.AppendFormat("<br/><br/>Movimiento de entrada: <a class=""Texto"" target='_blank' href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={1}""><b>{0}</b></a>", FolioEntrada, CveMovimientoEntrada)
Msg.AppendFormat("<br/><a class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={0}"">Imprimir Movimiento Entrada</a> ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoEntrada)))
End If
If CveMovimientoSalida > 0 Then
Msg.AppendFormat("<br/><br/>Movimiento de salida: <a class=""Texto"" target='_blank' href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={1}""><b>{0}</b></a>", FolioSalida, CveMovimientoSalida)
Msg.AppendFormat("<br/> <a class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={0}"">Imprimir Movimiento Salida</a> ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoSalida)))
End If
Alert(Msg.ToString, TipoMensaje.MsgInformacion)
RegistraScript("playsonidito('beep-07.wav')")
RegistraScript(String.Format("$('#{0}').modal('hide');", "DivModalCambioFisico"))
GvEntradas.DataBind()
GvSalidas.DataBind()
TxtIFDescripcion.Text = ""
Else
ObjInventario.RollBack()
Alert(Mensaje, TipoMensaje.MsgError)
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
End If
ObjInventario.Dispose() 'elimino la instancia
End Sub
Private Sub BtnGuardarCambiosVigencia_Click(sender As Object, e As EventArgs) Handles BtnGuardarCambiosVigencia.Click
If GvSalidasCambioVigencia.Rows.Count = 0 Then
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')")
RegistraScript(String.Format("$('#{0}').modal({backdrop: 'static', keyboard: false});", "DivModalCambioFisico"))
Exit Sub
End If
Dim ObjInventario As New ClsInventarios
Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL())
Dim CveMovimientoEntrada As Integer = -1
Dim CveMovimientoSalida As Integer = -1
Dim ErrorMovInv As Boolean = False
Dim Mensaje As String = ""
Dim ValorEntrada As Decimal = 0
Dim ValorSalida As Decimal = 0
Dim ImporteConcepto As Decimal = 0
Dim tConcepto As String = TxtObsCambioVigencia.Text.Trim
Dim Fecha As Date = TxtFechaCambio.Text.ToDate.ToString("yyyy/MM/dd").ToDate()
Dim tCveSubProyecto As Integer = -1
Dim TipoMovto As Boolean = False
Dim FolioSalida As Integer = 0
Dim FolioEntrada As Integer = 0
Dim CveAlmacen As Integer = DdlAlmacenCambioVigencias.SelectedValue.ToEntero
Dim CveModalidad As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=CveAlmacen).FiltroPrimeroValor("CveModalidad").ToEntero()
Dim EsContabilizable As Boolean = (CveModalidad = 1)
'MOVIMIENTOS
If DtMovimientosCambioVigencias.Rows.Count > 0 Then
FolioSalida = ObjInventario.GetFolioSiguiente(47, UsuarioActual.CveEmpresa)
CveMovimientoSalida = ObjInventario.AddMovimiento(CveAlmacen, 47, 1, Fecha, FolioSalida, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObsCambioVigencia.Text.Trim, Modulo:="ES/CV1")
FolioSalida = ObjInventario.Folio
FolioEntrada = ObjInventario.GetFolioSiguiente(48, UsuarioActual.CveEmpresa)
CveMovimientoEntrada = ObjInventario.AddMovimiento(CveAlmacen, 48, 1, Fecha, FolioEntrada, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObsCambioVigencia.Text.Trim, CveMovimientoRelacionado:=CveMovimientoSalida, Modulo:="ES/CV2")
FolioEntrada = ObjInventario.Folio
End If
'VALIDA, sino hay registrado ningun movimiento, que no siga
If (CveMovimientoEntrada <= 0 AndAlso CveMovimientoSalida <= 0) Then
Alert("Ocurrió un error al realizar los registros. Por favor verifique y vuelva a intentar", TipoMensaje.MsgError)
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
ObjInventario.RollBack() 'deshace lo insertado.
ObjInventario.Dispose() 'elimino la instancia
Exit Sub
End If
'VALIDA EXISTENCIAS SALIDA E INSERTA DETALLES
If Not ErrorMovInv Then
For Each Dr As DataRow In DtMovimientosCambioVigencias.Rows
If ObjInventario.GetExistenciasPS(Dr("CvePS").ToString.ToEntero, Dr("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, DdlAlmacenInventarioFisico.SelectedValue.ToEntero, PendientePorSurtir:=1) >= Dr("Cantidad").ToString.ToDouble Then
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero,
Dr("PU").ToString.ToDecimal, -1, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString,
Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate) Then
Mensaje = "Ocurrió un error al guardar los movimientos de salida"
ErrorMovInv = True
Exit For
Else
'OBTIENE EL COSTO DE LA SALIDA
If Not ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa, CveMovimientoDetalle:=ObjInventario.CveMovimientoDetalle) AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then
Mensaje = "Ocurrió un error al guardar los movimientos de salida"
ErrorMovInv = True
Exit For
Else
Dim PUEntrada As Decimal = ObjInventario.DtResultados.Rows(0)("PU").ToString().ToDecimal()
ImporteConcepto += PUEntrada * Dr("Cantidad").ToString.ToDecimal()
'INSERTA EL MOVIMIENTO DE ENTRADA
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString.ToDecimal, Dr("CveUMVigencia").ToString.ToEntero, Dr("CvePSVigencia").ToString.ToEntero, PUEntrada, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString,
Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate) Then
Mensaje = "Ocurrió un error al guardar los movimientos de entrada"
ErrorMovInv = True
Exit For
End If
End If
End If
Else
Mensaje = String.Format("No hay existencias suficientes del producto: {0}", Dr("PS"))
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
ErrorMovInv = True
Exit For
End If
Next
End If
'CONTABILIZAR MOVIMIENTOS
If Not ErrorMovInv Then
If Not ContabilizaMovimientoAlmacen(ObjConta, NowADS(), "CAMBIO DE VIGENCIA", "ES/CV", CveMovimientoSalida, CveMovimientoEntrada, ImporteConcepto, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, False) > 0 Then
ErrorMovInv = True
Mensaje = "No se pudo generar el movimiento de prepoliza"
End If
End If
If Not ErrorMovInv Then
ObjInventario.Commit() ' aplica los movimientos insertados
Dim Msg As New StringBuilder
If CveMovimientoEntrada > 0 Then
Msg.AppendFormat("<br/>El Movimiento de entrada se registró con el Folio: <b><a class=""Texto"" target='_blank' href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"">{1}</a></b>", CveMovimientoEntrada, FolioEntrada)
Msg.AppendFormat("<br/> <a class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={0}"">Imprimir Movimiento Entrada</a> ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoEntrada)))
End If
If CveMovimientoSalida > 0 Then
Msg.AppendFormat("<br/><br/>El Movimiento de salida se registró con el Folio: <b><a class=""Texto"" target='_blank' href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={0}"">{1}</a></b>", CveMovimientoSalida, FolioSalida)
Msg.AppendFormat("<br/> <a class=""Texto"" target='_blank' href=""/Compras/PopUpVerFactura.aspx?P={0}"">Imprimir Movimiento Salida</a> ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoSalida)))
End If
Alert(Msg.ToString, TipoMensaje.MsgInformacion)
RegistraScript("playsonidito('beep-07.wav');$('#DivModalCambiarVigencias').modal('hide');")
DtMovimientosCambioVigencias.Clear()
GvSalidasCambioVigencia.DataSource = DtMovimientosCambioVigencias
GvSalidasCambioVigencia.DataBind()
TxtObsCambioVigencia.Text = ""
Else
ObjInventario.RollBack()
Alert(Mensaje, TipoMensaje.MsgError)
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
End If
ObjInventario.Dispose() 'elimino la instancia
End Sub
#End Region
#End Region
#Region "Inventario Fisico"
Private Sub DdlPS_Change(sender As Object, e As EventArgs) Handles DdlPS.selectedindexchange
If DdlPS.SelectedValue.ToEntero > 0 Then
Dim drp As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlPS.SelectedValue.ToEntero).FiltroPrimero("")
If drp IsNot Nothing Then
Dim AplicaSerie As Boolean = CBool(drp("AplicaSerie"))
Dim AplicaSeccion As Boolean = CBool(drp("AplicaSeccion"))
Dim AplicaLote As Boolean = CBool(drp("AplicaLote"))
Dim AplicaCaducidad As Boolean = CBool(drp("AplicaCaducidad"))
'activa Serie
ThSerieEntrada.Visible = AplicaSerie
TrSerieEntrada.Visible = AplicaSerie
TxtnSerie.Visible = AplicaSerie
Dim CveSubProyectoAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenInventarioFisico.SelectedValue.ToEntero).FiltroPrimeroValor("CveSubProyecto").ToString.ToEntero
'activa seccion
ThSeccionEntrada.Visible = AplicaSeccion
TrSeccionEntrada.Visible = AplicaSeccion
'activa lote
ThLoteEntrada.Visible = AplicaLote
TrLoteEntrada.Visible = AplicaLote
'activa caducidad
ThCaducidadEntrada.Visible = AplicaCaducidad
ThCaducidadEntrada.InnerText = UsuarioActual.Empresa.Funcionalidad(147)
TrCaducidadEntrada.Visible = AplicaCaducidad
Else
TxtnSerie.Visible = False
End If
UpEntradaFisico.Update()
End If
End Sub
Private Sub DdlPSSalida_Change(sender As Object, e As EventArgs) Handles DdlPSSalida.selectedindexchange
If DdlPSSalida.SelectedValue.ToEntero > 0 Then
Dim drp As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlPSSalida.SelectedValue.ToEntero).FiltroPrimero("")
If drp IsNot Nothing Then
Dim AplicaSerie As Boolean = CBool(drp("AplicaSerie"))
Dim AplicaSeccion As Boolean = CBool(drp("AplicaSeccion"))
Dim AplicaLote As Boolean = CBool(drp("AplicaLote"))
Dim AplicaCaducidad As Boolean = CBool(drp("AplicaCaducidad"))
'activa Serie
ThSerieSalida.Visible = AplicaSerie
TrSerieSalida.Visible = AplicaSerie
TxtnSerie.Visible = AplicaSerie
Dim CveSubProyectoAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenInventarioFisico.SelectedValue.ToEntero).FiltroPrimeroValor("CveSubProyecto").ToString.ToEntero
'activa seccion
ThSeccionSalida.Visible = AplicaSeccion
TrSeccionSalida.Visible = AplicaSeccion
'activa lote
ThLoteSalida.Visible = AplicaLote
TrLoteSalida.Visible = AplicaLote
'activa caducidad
ThCaducidadSalida.Visible = AplicaCaducidad
ThCaducidadSalida.InnerText = UsuarioActual.Empresa.Funcionalidad(147)
TrCaducidadSalida.Visible = AplicaCaducidad
Else
TxtnSerie.Visible = False
End If
UpSalidaFisico.Update()
End If
End Sub
#End Region
Private Sub GuardarBitacora(CveVenta As Integer, RutaAdjunto As String, Obser As String)
Dim ObjEventos As New ClsOIEventos()
Try
If ObjEventos.AddEventoBitacora(Obser, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVenta) Then
End If
Catch ex As Exception
OnError("Se presento un error al guardar la Bitacora", ex)
End Try
ObjEventos.Dispose()
End Sub
#Region "DESCARGAR E IMPRIMIR LISTADO"
Public Sub DescargarFormato()
Dim Directorio As String = ModExtensiones.DirectorioBaseEmpresas & "Empresas\Grales\Formatos\FormatoEntradasSalidas.xlsx"
Dim Archivo As New IO.FileInfo(Directorio)
If Archivo.Exists Then
Response.Clear()
Response.ClearHeaders()
Response.ClearContent()
Response.AddHeader("Content-Disposition", "attachment; filename=" + Archivo.Name)
Response.AddHeader("Content-Length", Archivo.Length.ToString())
Response.ContentType = "text/plain"
Response.Flush()
Response.TransmitFile(Archivo.FullName)
Response.End()
End If
End Sub
Public Sub LbDescargarExcel_Click(sender As Object, e As EventArgs) Handles LbDescargarExcelConceptos.Click
DescargarFormato()
End Sub
Private Sub CargarArchivo(Ruta As String, FileName As String, Tipo As String)
Dim dt As New DataTable
'Dim Conexion As Odbc.OdbcConnection = Nothing
Dim ErrorArchivo As Boolean = False
Dim n As Integer = 0
Try
Select Case Tipo
Case "EXCEL"
dt = ReadExcelFile(Ruta + FileName, True)
dt = dt.FiltraParametros("Cantidad <> '' ")
'Conexion = New Odbc.OdbcConnection("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" + Ruta + FileName + ";")
'Conexion.Open()
'Dim cmd = Conexion.CreateCommand()
'cmd.CommandType = CommandType.Text
'cmd.CommandText = "Select * FROM [Hoja1$]"
'Dim DataAdapter = New Odbc.OdbcDataAdapter(cmd)
'DataAdapter.Fill(dt)
Case Else
Alert("El archivo no tiene el formato correcto", TipoMensaje.MsgError)
Exit Sub
End Select
Catch ex As Exception
ErrorArchivo = True
OnError("Ocurrio un Error al leer el archivo <br/>" & ex.Message, ex)
End Try
' Conexion.Close()
If Not ErrorArchivo Then
If Not dt.Columns(0).ColumnName = "Cantidad" Then
Alert("El nombre de la primera columna debe ser 'Cantidad'.Favor de corregirlo", TipoMensaje.MsgError)
Exit Sub
End If
If Not dt.Columns(1).ColumnName = "Código" Then
Alert("El nombre de la segunda columna debe ser 'Código'. Favor de corregirlo", TipoMensaje.MsgError)
Exit Sub
End If
'If Not dt.Columns(2).ColumnName = "Codigo Barras" Then
' Alert("El nombre de la tecera columna debe ser 'Codigo Barras'. Favor de corregirlo", TipoMensaje.MsgError)
' Exit Sub
'End If
If Not dt.Columns(2).ColumnName = "Producto/Servicio" Then
Alert("El nombre de la cuarta columna debe ser 'Producto/Servicio'. Favor de corregirlo", TipoMensaje.MsgError)
Exit Sub
End If
If Not dt.Columns(3).ColumnName = "UM" Then
Alert("El nombre de la quinta columna debe ser 'U.M'. Favor de corregirlo", TipoMensaje.MsgError)
Exit Sub
End If
If Not dt.Columns(4).ColumnName = "Precio Unitario" Then
Alert("El nombre de la sexta columna debe ser 'Precio Unitario'. Favor de corregirlo", TipoMensaje.MsgError)
Exit Sub
End If
dt.TableName = "Datos"
Try
Dim DTSeccionesAlmacen As DataTable = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa, -1)
If Not ErrorArchivo Then
NumRow = 0
Dim RowNoEncontrados As String = ""
Dim NumAgregados As Integer = 0
Dim PSTemp As DataTable = GlobalDTPS(UsuarioActual.CveEmpresa)
For Each Row As DataRow In dt.Rows
Dim Cantidad As Decimal = Row("Cantidad").ToString.ToDecimal
Dim UM As String = Row("UM").ToString
Dim Codigo As String = Row("Código").ToString.Trim.ToUpper
'Dim CodigoBarras As String = Row("Codigo Barras").ToString.Trim.ToUpper
Dim ProductoServicio As String = Row("Producto/Servicio").ToString.Trim.ToUpper
Dim PrecioUnitario As Decimal = Row("Precio Unitario").ToString.ToDecimal
Dim Serie As String = If(Row.Table.Columns.Contains("Serie"), Row("Serie").ToString().Trim, "")
Dim Lote As String = If(Row.Table.Columns.Contains("Lote"), Row("Lote").ToString().Trim, "")
Dim Caducidad As String = If(Row.Table.Columns.Contains("Caducidad"), Row("Caducidad").ToString().Trim, "")
Dim SeccionAlmacen As String = If(Row.Table.Columns.Contains("SeccionAlmacen"), Row("SeccionAlmacen").ToString().Trim, "")
Dim CvePS As Integer = 0
Dim CveUM As Integer = 0
Dim DataTemp As DataTable
NumRow = NumRow + 1
Dim CveSeccionAlmacen As Integer = -1
If SeccionAlmacen <> "" Then
CveSeccionAlmacen = DTSeccionesAlmacen.FiltroPrimeroValor("CveSeccion", String.Format("SeccionAlmacen = '{0}'", SeccionAlmacen)).ToEntero
End If
If Codigo <> "" Then
DataTemp = PSTemp.FiltraParametros(String.Format("Codigo = '{0}'", Codigo))
CvePS = DataTemp.FiltroPrimeroValor("CvePS", "").ToEntero
DataTemp.Dispose()
If CvePS = 0 Then
RowNoEncontrados &= Codigo & "<\BR>"
End If
Else
RowNoEncontrados &= "<\BR>&nbsp;&nbsp;&nbsp;&nbsp;- En la fila " & NumRow & " no se especificó código, código de barras ó descripción."
End If
'If Codigo <> "" Then
' Dim StrArray() As String = GetPS("Codigo", Codigo).Split("|"c)
' If StrArray.Length > 0 Then
' If CBool(StrArray(0)) = True Then
' CvePS = StrArray(1).ToEntero
' Else
' RowNoEncontrados &= StrArray(1) & "<\BR>"
' End If
' End If
' 'ElseIf CodigoBarras <> "" Then
' ' Dim StrArray() As String = GetPS("CodigoBarras", CodigoBarras).Split("|"c)
' ' If StrArray.Length > 0 Then
' ' If CBool(StrArray(0)) = True Then
' ' CvePS = StrArray(1).ToEntero
' ' Else
' ' RowNoEncontrados &= StrArray(1) & "<\BR>"
' ' End If
' ' End If
'ElseIf ProductoServicio <> "" Then
' Dim StrArray() As String = GetPS("PS", ProductoServicio).Split("|"c)
' If StrArray.Length > 0 Then
' If CBool(StrArray(0)) = True Then
' CvePS = StrArray(1).ToEntero
' Else
' RowNoEncontrados &= StrArray(1) & "<\BR>"
' End If
' End If
'Else
' RowNoEncontrados &= "<\BR>&nbsp;&nbsp;&nbsp;&nbsp;- En la fila " & NumRow & " no se especificó código, código de barras ó descripción."
'End If
If CvePS > 0 Then
Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).Rows(0)
If DrPS IsNot Nothing Then
CveUM = DrPS("CveUnidadMedida").ToString().ToEntero()
UM = GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa).FiltroPrimeroValor("UnidadMedida", $"CveUnidadMedida={CveUM}")
End If
AddNew(CvePS, ProductoServicio, CveUM, UM, Cantidad, PrecioUnitario, Serie.Replace(" ", String.Empty), "", Codigo, "-1", "",
Lote, Caducidad.ToDate, CveSeccionAlmacen, SeccionAlmacen, CargarGV:=False)
NumAgregados = NumAgregados + 1
End If
Next
If RowNoEncontrados.Length > 0 Then
Alert("Se Cargaron " & NumAgregados & " Productos o Servicios.<\BR>Los siguientes Productos o Servicios no se encontraron en la Base de Datos.<\BR>" & RowNoEncontrados, TipoMensaje.MsgAdvertencia)
If NumAgregados > 0 Then
RegistraScript("$('#DivCargaExcel').modal('hide')", "hidemodal")
TxtExcel.Text = "[]"
End If
Else
Alert("Se Cargaron " & NumAgregados & " Productos o Servicios correctamente.")
RegistraScript("$('#DivCargaExcel').modal('hide')", "hidemodal")
TxtExcel.Text = "[]"
End If
CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' "))
RegistraScript("playsonidito('beep-07.wav')")
End If
Catch ex As Exception
OnError("Ocurrió un error al cargar los datos", ex)
End Try
End If
dt.Dispose()
End Sub
Private Sub BtnCargaExcel_Click(sender As Object, e As EventArgs) Handles BtnCargaExcel.Click
If DdlAlmacen.SelectedValue.ToEntero > 0 Then
If TxtExcel.getfiles().Archivos.Count > 0 Then
Dim file As Archivo = TxtExcel.getfiles().Archivos(0)
Dim Directorio As String = AppDomain.CurrentDomain.BaseDirectory & file.path
Dim Tipo As String = If(file.Extension.Contiene("xlsx", "xlsx", "xlsm", "xlsb", "xls"), "EXCEL", "CSV")
CargarArchivo(Directorio, file.filename, Tipo)
Else
Alert("No existe el archivo. Favor de subir un archivo excel a la plataforma.", TipoMensaje.MsgError)
End If
Else
Alert("Seleccione un almacén", TipoMensaje.MsgAdvertencia)
RegistraScript("$('#DivCargaExcel').modal('hide')", "hidemodal")
End If
End Sub
Private Function GetPS(Opt As String, Valor As String) As String
Dim StrReturn As String = String.Empty
Dim CvePS As Integer = 0
Dim Condicion As String = String.Format("{0} = '{1}'", Opt, Valor)
If Opt = "Codigo" Then
CvePS = GlobalDTPS(UsuarioActual.CveEmpresa, Codigo:=Valor).FiltroPrimeroValor("CvePS", "").ToString.ToEntero
Else
CvePS = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CvePS", Condicion).ToString.ToEntero
End If
If CvePS > 0 Then
StrReturn = "True|" & CvePS.ToString
Else
StrReturn = "False|&nbsp;&nbsp;&nbsp;&nbsp;- No se encontró " & Valor & " en la fila " & NumRow & ", columna " & Opt
End If
Return StrReturn
End Function
#End Region
Protected Sub LnkAgregarNuevoMov_Click(sender As Object, e As EventArgs)
EsNuevoMov = True
For Each gvr As GridViewRow In GvM.Rows
If (gvr.RowState <> 5 AndAlso gvr.RowState <> DataControlRowState.Edit) Then GvM.Rows(gvr.RowIndex).FCLinkButton("lnkRemove").Visible = True
Next
If DdlAlmacen.Visible Then DdlAlmacen.Enabled = True
DdlAlmacen.SelectedValueExist(-1)
If DdlConcepto.Visible Then DdlConcepto.Enabled = True
DdlConcepto.SelectedValueExist(-1)
If TxtDepartamentoEntrega.Visible Then TxtDepartamentoEntrega.Enabled = True
If TxtPedidoContrato.Visible Then TxtPedidoContrato.Enabled = True
If TxtFolio.Visible Then TxtFolio.Enabled = True
If TxtFecha.Visible Then TxtFecha.Enabled = True
If TxtResponsable.Visible Then TxtResponsable.Enabled = True
If TxtObservaciones.Visible Then TxtObservaciones.Enabled = True
If DdlProveedor.Visible Then DdlProveedor.Enabled = True
If TxtRemision.Visible Then TxtRemision.Enabled = True
If DdlMoneda.Visible Then DdlMoneda.Enabled = True
If TxtGuia.Visible Then TxtGuia.Enabled = True
If BtnEliminar.Visible Then BtnEliminar.Visible = False
LnkAgregarNuevoMov.Visible = False
End Sub
'#Region "SECCION ALMACEN"
' Private Sub CreaDtSeccionAlmacen()
' DtSeccionAlmacen = New DataTable
' DtSeccionAlmacen.Columns.Add("CantidadSeccionAlmacen", GetType(Decimal))
' DtSeccionAlmacen.Columns.Add("IndexSeccionAlmacen", GetType(Integer))
' DtSeccionAlmacen.Columns.Add("CveSeccionAlmacen", GetType(Integer))
' DtSeccionAlmacen.Columns.Add("SeccionAlmacen", GetType(String))
' DtSeccionAlmacen.Columns.Add("Consec", GetType(Integer))
' End Sub
' Private Sub CargaDdlAlmacen()
' DdlSeccionAlmacenModal.DataSource = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero)
' DdlSeccionAlmacenModal.Items.Insert(0, New ListItem("Seleccione", "-1"))
' DdlSeccionAlmacenModal.DataBind()
' End Sub
' Protected Sub LnkSeccionAlmacen_Click(sender As Object, e As EventArgs)
' If Not DdlConcepto.SelectedValue.ToEntero > 0 Then
' Alert("Tiene que seleccionar un concepto", TipoMensaje.MsgAdvertencia)
' Exit Sub
' End If
' Tipo = GlobalDTInvConceptos().FiltroPrimeroValor("Origen", $"CveConcepto = {DdlConcepto.SelectedValue}").ToEntero
' Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow)
' CantidadTotal = gvRow.DataKey("Cantidad").ToDecimal
' IndexSeccionAlmacen = gvRow.RowIndex
' CargaSeccionAlmacen()
' RegistraScript("$('#DModalSeccionAlmacen').modal()")
' End Sub
' Private Sub CargaSeccionAlmacen()
' Dim CantidadTotalSeccion As Decimal = DtSeccionAlmacen.FiltraParametros($"IndexSeccionAlmacen = {IndexSeccionAlmacen}").SUMD("CantidadSeccionAlmacen")
' GvSeccionAlmacen.DataSource = DtSeccionAlmacen.FiltraParametros($"IndexSeccionAlmacen = {IndexSeccionAlmacen}")
' GvSeccionAlmacen.DataBind()
' TxtCantidadSeccion.Text = ""
' DdlSeccionAlmacenModal.SelectedIndex = 0
' Dim CantidadRestante As Decimal = CantidadTotal - CantidadTotalSeccion
' If CantidadRestante = 0 Then
' RVTxtCantidad.MaximumValue = "1"
' TxtCantidadSeccion.Enabled = False
' Else
' RVTxtCantidad.MaximumValue = CantidadRestante.ToString
' TxtCantidadSeccion.Enabled = True
' End If
' If CantidadTotalSeccion > 0 Then
' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("imgE").Visible = False
' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("imgE").ToolTip = "Cuenta con sección almacen"
' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("lnkRemove").Visible = False
' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("lnkRemove").ToolTip = "Cuenta con sección almacen"
' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("lnkDividir").Visible = False
' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("lnkDividir").ToolTip = "Cuenta con sección almacen"
' Else
' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("imgE").Visible = True
' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("imgE").ToolTip = ""
' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("lnkRemove").Visible = True
' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("lnkRemove").ToolTip = ""
' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("lnkDividir").Visible = True
' GvM.Rows(IndexSeccionAlmacen).FCLinkButton("lnkDividir").ToolTip = ""
' End If
' If DtSeccionAlmacen.SUMD("CantidadSeccionAlmacen") > 0 AndAlso Tipo = -1 Then
' DdlAlmacen.Enabled = False
' DdlAlmacen.ToolTip = "Cuenta con sección almacen"
' Else
' DdlAlmacen.Enabled = True
' DdlAlmacen.ToolTip = ""
' End If
' UpModalSeccionAlmacen.Update()
' UppGrid.Update()
' End Sub
' Protected Sub LnkAddSeccionAlmacen_Click(sender As Object, e As EventArgs)
' If Tipo = -1 Then
' Dim ObjInv As New ClsInventarios
' Dim CantidadDisponible As Decimal = 0
' If ObjInv.GetMovimientosDetalleSeccionesAlmacen(DdlSeccionAlmacenModal.SelectedValue.ToEntero, DdlAlmacen.SelectedValue.ToEntero,
' CvePS, UsuarioActual.CveEmpresa) Then
' If ObjInv.DtResultados.Rows.Count > 0 Then
' CantidadDisponible = ObjInv.DtResultados.Rows(0)("CantidadRestante").ToString.ToDecimal
' End If
' End If
' ObjInv.Dispose()
' CantidadDisponible -= DtSeccionAlmacen.FiltraParametros($"CvePS = {CvePS} AND CveSeccionAlmacen = {DdlSeccionAlmacenModal.SelectedValue}").SUMD("CantidadSeccionAlmacen")
' If TxtCantidadSeccion.Text.ToDecimal > CantidadDisponible Then
' Alert($"No tiene cantidad de producto suficiente en esta seccion de almacen, su cantidad restante es: <b>{CantidadDisponible}</b>", TipoMensaje.MsgAdvertencia)
' Exit Sub
' End If
' End If
' Dim Row As DataRow = Nothing
' DtSeccionAlmacen.AcceptChanges()
' Row = DtSeccionAlmacen.NewRow
' Row("CantidadSeccionAlmacen") = TxtCantidadSeccion.Text.ToDecimal
' Row("IndexSeccionAlmacen") = IndexSeccionAlmacen
' Row("CveSeccionAlmacen") = DdlSeccionAlmacenModal.SelectedValue.ToEntero
' Row("SeccionAlmacen") = DdlSeccionAlmacenModal.SelectedItem.Text
' Row("Consec") = DtSeccionAlmacen.Rows.Count + 1
' DtSeccionAlmacen.Rows.Add(Row)
' DtSeccionAlmacen.AcceptChanges()
' CargaSeccionAlmacen()
' End Sub
' Protected Sub LnkEliminarSeccion_Click(sender As Object, e As EventArgs)
' Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow)
' Dim Index As Integer = 0
' For Each Dr As DataRow In DtSeccionAlmacen.Rows
' If Dr("Consec").ToString.ToEntero = gvRow.DataKey("Consec").ToEntero() Then
' Exit For
' End If
' Index += 1
' Next
' DtSeccionAlmacen.Rows.RemoveAt(Index)
' DtSeccionAlmacen.AcceptChanges()
' CargaSeccionAlmacen()
' End Sub
'#End Region
Protected Sub LkAgregar_Click() Handles LnkAgregarProducto.Click
If EsConsumoInterno And UsuarioActual.Empresa.Funcionalidad(590) = "1" Then
If DdlSubProyecto.SelectedValue.ToEntero <= 0 Then
Alert("Debe seleccionar un Centro de Costos.", TipoMensaje.MsgAdvertencia)
Exit Sub
Else
CargaCultivos()
End If
End If
limpiarModalDetalle()
UpAgregar.Update()
RegistraScript("$('#ModalAgregar').modal()")
If DdlConcepto.SelectedValue = "28" Then txtPrecio.Text = "0.00" 'préstamo proveedor
End Sub
Private Sub ActualizarPS()
If CveMovimientoDetalleEdit > 0 Then
Dim ObjInventario As New ClsInventarios
If Not ObjInventario.UpdateMovimientoDetalle(txtCantidad.Text.ToDecimal, DdlUnidad.SelectedValue.ToEntero, DdlProducto2.SelectedValue.ToEntero, txtPrecio.Text.ToDecimal, CveAFEdit,
CveMovimientoDetalleEdit, DdlSeccionAlmacen.SelectedValue.ToEntero, TxtnSerie.Text, TxtObservacionesdetalle.Text,
CveUsuarioModifico:=UsuarioActual.CveUsuario, CveCultivoCuadroDetalle:=DdlModalCultivosCuadro.SelectedValue.ToEntero,
Lote:=TxtnLote.Text.Trim, FechaCaducidad:=TxtnFechaCaducidad.Text.ToDate) Then
Alert("Error al Actualizar los movimientos")
Else
GvM.EditIndex = -1
'cargar también los movimentos detalle
If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then
DtMovimientos = ObjInventario.DtResultados
CargaGVM(DtMovimientos)
End If
Alert("Movimiento actualizado correctamente")
RegistraScript("$('#ModalAgregar').modal('hide')")
End If
ObjInventario.Dispose()
Else
AddNew(DdlProducto2.SelectedValue.ToEntero, DdlProducto2.SelectedText, DdlUnidad.SelectedValue.ToEntero, DdlUnidad.SelectedItem.Text, txtCantidad.Text.ToDecimal,
txtPrecio.Text.ToDecimal, TxtnSerie.Text.Replace(" ", String.Empty), LblCodigo.Text, HdnCodigoAF.Value, HdnCveActivoFijo.Value, TxtObservacionesdetalle.Text,
TxtnLote.Text.Trim, TxtnFechaCaducidad.Text.ToDate, DdlSeccionAlmacen.SelectedValue.ToEntero, DdlSeccionAlmacen.SelectedItem.Text, CveCultivoCuadroDetalle:=DdlModalCultivosCuadro.SelectedValue.ToEntero, IndexEspecidico:=IndexActualTabla)
LimpiarAgregar()
Alert("Movimiento actualizado correctamente")
RegistraScript("$('#ModalAgregar').modal('hide')")
End If
End Sub
Private Sub limpiarModalDetalle()
IndexActualTabla = -1
CveMovimientoDetalleEdit = -1
txtCantidad.Enabled = True
'DdlClasificacion.Enabled = True
DdlProducto2.Enabled = True
DdlUnidad.Enabled = True
divCantidad.Visible = True
divClasificacionProducto.Visible = True
divUnidadMedida.Visible = True
txtCantidad.Text = ""
DdlProducto2.SelectedValue = "-1"
DdlProducto2.SelectedText = ""
ElProductoChange()
txtPrecio.Text = ""
TxtnSerie.Text = ""
TxtnLote.Text = ""
TxtnFechaCaducidad.Text = ""
TxtObservacionesdetalle.Text = ""
DdlSeccionAlmacen.ClearSelection()
LkAgregarDetalle.Text = "Agregar"
DdlModalCultivosCuadro.SelectedValueExist(-1)
If DdlMonedaTC.SelectedValue.ToEntero = 2 Then
VisualizaPUExtranjero(UsuarioActual.TienePermisoProceso(201))
Else
VisualizaPUExtranjero(False)
End If
Dim Origen As Integer = GlobalDTInvConceptos.FiltroPrimeroValor("Origen", String.Format("CveConcepto = {0}", DdlConcepto.SelectedValue)).ToEntero
divPrecio.Visible = Origen = 1
'txtPrecio.Visible = Origen = 1
ChkContinuarRegistrando.Checked = True
ChkContinuarRegistrando.Visible = True
UpAgregar.Update()
End Sub
Private Sub RegeneraRM(CveMovD As Integer, CveMov2 As Integer)
'Dim Retorno As Integer = -1
'Dim ErrorMovInv As Boolean = False
'Dim ObjConta As New ClsContabilidad
'ObjConta.IniciaTransacSQL()
'Dim ObjInventario As New ClsInventarios(ObjConta.IniciaTransacSQL)
'Dim CveMovimientoInsertado As Integer = 0
'Dim Fecha As Date
'Dim Importe As Decimal
'If ObjInventario.GetMovimientosDetalleTransitorio(CveMovD, UsuarioActual.CveEmpresa) Then
' Fecha = ObjInventario.DtResultados.Rows(0)("FechaMovto").ToString.ToDate
' Dim dtvirtual As DataTable = ObjInventario.DtResultados
' If dtvirtual.Rows.Count > 0 Then
' CveMovimientoInsertado = ObjInventario.AddMovimiento(352, 8, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Modulo:="TA/VM")
' For Each RowVirtual As DataRow In dtvirtual.Rows
' Dim CvePS = RowVirtual("CvePS").ToString().ToEntero()
' Dim CantidadUsado As Double = RowVirtual("Cantidad").ToString().ToDouble()
' Dim PU As Decimal = RowVirtual("PUOriginal").ToString().ToDecimal()
' Dim CveUM As Integer = RowVirtual("CveUM").ToString().ToEntero()
' Dim CveMovimientoDetalle As Integer = RowVirtual("CveMovimientoDetalle").ToString().ToEntero()
' If Not ObjInventario.AddMovimientoDetalle(CveMovimientoInsertado, CantidadUsado, CveUM, CvePS, PU, -1, CveMovimientoDetalleEntrada:=CveMovimientoDetalle, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
' ErrorMovInv = True
' Exit For
' End If
' Next
' If ObjInventario.GetMovimientosDetalle(CveMovimientoInsertado, UsuarioActual.CveEmpresa) Then
' Dim resultado As DataTable = ObjInventario.DtResultados
' Importe = resultado.SUMD("Total").RoundSQL
' Dim Contabilizable As Boolean = False
' Dim Concepto As String = "Traspaso"
' Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Manualx", 53, 0, 0, 1, Fecha, Concepto, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
' If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Importe, "", 68, Concepto, Fecha, -1, -1, CveMovimientoAlmacen:=CveMovimientoInsertado, ImporteMX:=Importe, Contabilizable:=Contabilizable) Then
' ErrorMovInv = True
' End If
' If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Importe, "", 68, Concepto, Fecha, -1, -1, CveMovimientoAlmacen:=CveMovD, ImporteMX:=Importe, Contabilizable:=Contabilizable) Then
' ErrorMovInv = True
' End If
' If Not ErrorMovInv Then Retorno = CvePrePoliza
' End If
' End If
'Else
' ErrorMovInv = True
'End If
'If ErrorMovInv Then
' ObjConta.RollBack()
' Alert("No se aplico", TipoMensaje.MsgError)
'Else
' ObjConta.Commit()
' Alert("Se aplico", TipoMensaje.MsgInformacion)
'End If
'ObjConta.Dispose()
'ObjInventario.Dispose()
End Sub
Protected Sub LnkGenerarVirtual_Click(sender As Object, e As EventArgs)
If CveMovimiento > 0 Then
Dim ObjInventario As New ClsInventarios
Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL())
Dim Retorno As MMovimientoVirtual = GenerarMovimientoVirtual(Me.CveMovimiento, ObjInventario, ObjConta)
If Retorno.TieneError Then
ObjInventario.RollBack()
Else
ObjInventario.Commit()
End If
ObjInventario.Dispose()
If Retorno.CveMovimientoVirtual > 0 AndAlso Not Retorno.TieneError Then
Alert($"Se generó el movimiento virtual con el folio:<b>{Retorno.FolioVirtual}<b/>")
End If
End If
End Sub
Private Function GenerarMovimientoVirtual(CveMovimiento As Integer, ByRef ObjInventario As ClsInventarios, ByRef ObjConta As ClsContabilidad) As MMovimientoVirtual
Dim ErrorMovInv As Boolean = False
Dim DtPSVirtual As New DataTable("DtTamanios")
Dim CveMovimientoVirtual As Integer = -1
Dim FolioVirtual As Integer = -1
Dim tCveAlmacen As Integer = -1
Dim tOrigen As Integer = -1
Dim tCveSubProyecto As Integer = -1
Try
If ObjInventario.GetMovimientos(CveMovimiento, -1, -1, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then
tCveAlmacen = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen").ToEntero()
tOrigen = ObjInventario.DtResultados.FiltroPrimeroValor("Origen").ToEntero()
End If
Dim drAlmacenVirtual As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=tCveAlmacen).FiltroPrimero("")
Dim CveAlmacenVirtual As Integer
If drAlmacenVirtual IsNot Nothing Then
CveAlmacenVirtual = drAlmacenVirtual("CveAlmacenVirtual").ToString.ToEntero
tCveSubProyecto = drAlmacenVirtual("CveSubProyecto").ToString.ToEntero
End If
'VERIFICA SI TIENE ALMACEN VIRTUAL
If CveAlmacenVirtual > 0 Then
If ObjInventario.GetMovimientosDetalleVirtual(CveMovimiento, UsuarioActual.CveEmpresa) Then
DtPSVirtual = ObjInventario.DtResultados.Copy()
If DtPSVirtual IsNot Nothing AndAlso DtPSVirtual.Rows.Count > 0 Then
CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirtual, If(tOrigen > 0, 36, 37), 1, TxtFecha.Text.Replace(",", "").ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, CveMovimientoRelacionado:=CveMovimiento, Observaciones:=TxtObservaciones.Text.Trim, Modulo:="ES/GV")
If CveMovimientoVirtual > 0 Then
FolioVirtual = ObjInventario.Folio
For Each RowUsado As DataRow In DtPSVirtual.Rows
Dim CvePS As Integer = RowUsado("CvePS").ToString().ToEntero()
Dim CantidadUsado As Decimal = RowUsado("Cantidad").ToString().ToDecimal()
Dim PU As Decimal = RowUsado("Cargo").ToString().ToDecimal()
Dim CveUM As Integer = RowUsado("CveUM").ToString().ToEntero()
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtual, CantidadUsado, CveUM, CvePS, PU, -1, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
ErrorMovInv = True
Exit For
End If
Next
Else
ErrorMovInv = True
End If
End If
If Not ErrorMovInv AndAlso CveMovimientoVirtual > 0 Then
If Not ErrorMovInv Then
Dim dttCosto As DataTable = Nothing
If ObjInventario.GetMovimientosDetalle(CveMovimientoVirtual, UsuarioActual.CveEmpresa) Then
dttCosto = ObjInventario.DtResultados
End If
Dim tCveMovtoEntrada As Integer = If(tOrigen > 0, CveMovimientoVirtual, -1)
Dim tCveMovtoSalida As Integer = If(tOrigen > 0, -1, CveMovimientoVirtual)
If Not ContabilizaMovimientoAlmacen(ObjConta, TxtFecha.Text.Replace(",", "").ToDate, "Virtual", "ES/GV", tCveMovtoSalida, tCveMovtoEntrada, dttCosto.SUMD("Total"), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, True, dttCosto, tCveSubProyecto) > 0 Then
ErrorMovInv = True
End If
End If
End If
Else
ErrorMovInv = True
End If
End If
Catch ex As Exception
ErrorMovInv = True
End Try
Return New MMovimientoVirtual With {.TieneError = ErrorMovInv, .CveMovimientoVirtual = CveMovimientoVirtual, .FolioVirtual = FolioVirtual.ToString()}
End Function
Protected Sub LnkGenerarPDF_Click(sender As Object, e As EventArgs)
GeneraPDFFactura()
End Sub
Private Sub GeneraPDFFactura()
Try
Dim objFactura As Modelos.Factura = CreaObjetosVenta()
PdfFactura(objFactura)
objFactura.Dispose()
Catch ex As Exception
OnError("Ocurrió un error al generar el PDF", ex)
End Try
End Sub
Private Function CreaObjetosVenta() As Modelos.Factura
Dim ObjFactura As New Modelos.Factura
ObjFactura.CveUsuario = UsuarioActual.CveUsuario
ObjFactura.CveEmpresa = UsuarioActual.CveEmpresa
ObjFactura.TipoCambio = 0
ObjFactura.CveMoneda = 1
ObjFactura.Moneda = GlobalDTMonedas.FiltroPrimeroValor("Moneda", $"CveMoneda = {ObjFactura.CveMoneda} ")
ObjFactura.MonedaSAT = GlobalDTMonedas.FiltroPrimeroValor("AbreviaturaSAT", "CveMoneda = 1")
ObjFactura.MonedaAbreviatura = GlobalDTMonedas.FiltroPrimeroValor("Abreviatura", $"CveMoneda = {ObjFactura.CveMoneda} ")
ObjFactura.TipoDocto = "Tra"
ObjFactura.Folio = Folio.ToEntero
ObjFactura.Serie = "Tra"
'ObjFactura.CveMesa = -1
ObjFactura.Fecha = NowADS()
ObjFactura.FechaPago = NowADS()
ObjFactura.FechaEjecucion = NowADS()
ObjFactura.UsuarioCreo = UsuarioActual.Usuario
ObjFactura.TipoDocumento = "Traspaso"
ObjFactura.FechaVencimiento = NowADS()
Dim CveSubProyecto As Integer = -1
If GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros($"CveAlmacen = {DdlAlmacen.SelectedValue}").Rows.Count > 0 Then
CveSubProyecto = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros($"CveAlmacen = {DdlAlmacen.SelectedValue}").Rows(0)("CveSubProyecto").ToString.ToEntero
End If
ObjFactura.CveSubProyecto = CveSubProyecto
ObjFactura.CveSubProyectoCobranza = CveSubProyecto
ObjFactura.CveSubProyectoEjecucion = CveSubProyecto
ObjFactura.SubTotal = 0
ObjFactura.Descuento = 0
ObjFactura.Amortizacion = 0
ObjFactura.IVA = 0
ObjFactura.RetIVA = 0
ObjFactura.RetISR = 0
ObjFactura.IEPS = 0
ObjFactura.Total = 0
ObjFactura.RFCReceptor = "XAXX010101000"
Dim dt As DataTable = DtMovimientos.Copy
dt.Columns.Add("TotalImporte", Type.GetType("System.Double"))
dt.Columns.Add("Descuento", Type.GetType("System.Double"))
dt.Columns.Add("UM")
dt.Columns.Add("SATClaveUM")
dt.Columns.Add("SATClaveProdServ")
dt.Columns.Add("Noidentificacion")
dt.Columns.Add("CuentaPredial")
dt.Columns.Add("Obs")
dt.Columns.Add("ImporteIVA", Type.GetType("System.Double"))
dt.Columns.Add("PorcentajeIVA", Type.GetType("System.Double"))
For Each Row As DataRow In dt.Rows
Row("TotalImporte") = Row("Total")
Row("Descuento") = 0
Row("UM") = Row("UnidadMedida")
Row("SATClaveUM") = Row("SATClaveUnidadMedida")
Row("SATClaveProdServ") = Row("SATClavePS")
Row("Noidentificacion") = Row("Codigo")
Row("CuentaPredial") = ""
Row("Obs") = Row("Observaciones")
Row("ImporteIVA") = 0
Row("PorcentajeIVA") = 0
Next
'DETALLES
ObjFactura.DtDetalle = dt
'SUBPROYECTO
ObjFactura.SetSubProyectoMatriz(Me)
ObjFactura.SetSubProyecto(Me)
ObjFactura.Inv_CveMovimiento = Me.CveMovimiento
ObjFactura.Timbre = PreParaTimbre(ObjFactura)
Return ObjFactura
End Function
Private Function PreParaTimbre(Obj As Modelos.Factura) As CFDITimbre
Dim Timbre As New CFDITimbre
Timbre.Comprobante.TipoComprobante = "T"
Timbre.Comprobante.Folio = Obj.Folio.ToString
Timbre.Comprobante.Serie = Obj.Serie
Timbre.Comprobante.Fecha = Obj.Fecha
Timbre.Comprobante.FormadePago = Obj.ClaveFormaPagoSAT
Timbre.Comprobante.CondicionesdePago = Obj.FormaPago
Timbre.Comprobante.MetodoPago = Obj.ClaveMetodoPagoSAT
Timbre.Comprobante.SubTotal = Obj.SubTotal
Timbre.Comprobante.Descuentos = Obj.Descuento
Timbre.Comprobante.Moneda = Obj.MonedaSAT
Timbre.Comprobante.TipoCambio = If(Obj.CveMoneda = 1, "1", Obj.TipoCambio.ToString)
Timbre.Comprobante.Total = Obj.Total
Timbre.Comprobante.LugarExpedicion = Obj.SubProyecto.CP
Timbre.Comprobante.Confirmacion = ""
Timbre.Receptor.RFC = "XAXX010101000"
Timbre.Receptor.Nombre = UsuarioActual.Empresa.Empresa
Timbre.Receptor.UsoCFDI = "P01"
Dim totSubTotal As Decimal = Obj.SubTotal
Dim totIVA As Decimal = Obj.IVA
Dim totRetIVA As Decimal = Obj.RetIVA
Dim totRetISR As Decimal = Obj.RetISR
Dim i As Integer = 1
'DETALLES
Dim tPS As String = ""
For Each drr As DataRow In Obj.DtDetalle.Rows
If drr("PS").ToString.Length = 1 Then
tPS = drr("Obs").ToString
Else
If drr("PS").ToString.Length = 0 Then
tPS = ""
Else
tPS = String.Format("{0} {1}", drr("PS"), drr("Obs"))
End If
End If
'CONDICIONANTE, ESPECIAL
If UsuarioActual.CveEmpresa = 15 Then drr("UM") = "" 'LES COMENTAN QUE NO DEBE IR LA ETIQUETA DE LA UNIDAD EN EL PRODUCTO
Dim concepto As New CFDIConceptos With {.Cantidad = drr("Cantidad").ToString.ToDecimal,
.Descripcion = tPS,
.ValorUnitario = drr("PU").ToString.ToDecimal,
.Importe = drr("TotalImporte").ToString.ToDecimal,
.Descuento = drr("Descuento").ToString.ToDecimal,
.Unidad = drr("UM").ToString,
.ClaveUnidad = drr("SATClaveUM").ToString,
.ClaveProdServ = drr("SATClaveProdServ").ToString,
.Noidentificacion = drr("Noidentificacion").ToString,
.CuentaPredial = drr("CuentaPredial").ToString}
'VERIFICA SUMA SUBTOTALES
If i = Obj.DtDetalle.Rows.Count AndAlso totSubTotal <> concepto.Importe Then 'PROCESO DE AJUSTA DE DECIMALES
concepto.Importe = totSubTotal
End If
totSubTotal = totSubTotal - concepto.Importe
'SIEMPRE ESTAMOS AGREGANDO EL IVA
'concepto.Impuestos.Add(New CFDIConceptosImpuestos With {.TrasladooRetencion = "T", .Base = concepto.Importe - concepto.Descuento, .TasaOCuota = drr("PorcentajeIVA").ToString.ToDecimal, .Impuesto = "002", .Importe = drr("ImporteIVA").ToString.ToDecimal})
Timbre.Conceptos.Add(concepto)
i += 1
Next
Return Timbre
End Function
#Region "APOYO LOGISTICO"
Protected Sub ChkEmitirTimbrado_CheckedChanged(sender As Object, e As EventArgs)
If ChkEmitirTimbrado.Checked Then
ChkEmitirCartaPorte.Checked = True
ChkEmitirCartaPorte.Visible = True
Else
ChkEmitirCartaPorte.Visible = False
ChkEmitirCartaPorte.Checked = False
End If
End Sub
Protected Sub DldChofer_SelectedIndexChanged(sender As Object, e As EventArgs)
' Dim ObjAcar As New ClsAcarreos()
' If ObjAcar.GetChofer(DdlChofer.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, 1, -1) Then
' Dim dr As DataRow = ObjAcar.DtResultados.Rows(0)
' If dr IsNot Nothing Then
' TxtResponsableRecibio.Text = dr("Chofer").ToString
' TxtIdentificacion.Text = dr("Identificacion").ToString
' TxtDomicilio.Text = dr("Domicilio").ToString
' TxtTelefono.Text = dr("Telefono").ToString
' TxtCiudad.Text = dr("Ciudad").ToString
' TxtLicencia.Text = dr("Licencia").ToString
' End If
' End If
' ObjAcar.Dispose()
End Sub
Protected Sub DdlUnidadCamionActivoFijo_SelectedIndexChanged(sender As Object, e As EventArgs)
DvRemolque1.Visible = False
DvRemolque2.Visible = False
DdlRemolque1.SelectedValueExist(-1)
DdlRemolque2.SelectedValueExist(-1)
If DdlUnidadCamion.SelectedValue.ToEntero > 0 Then
Dim drc As DataRow = GlobalDTInvCamiones(UsuarioActual.CveEmpresa, DdlUnidadCamion.SelectedValue.ToEntero).FiltroPrimero("")
If drc IsNot Nothing Then
DdlConfigAuto.SelectedValueExist(drc("CveConfigAutoTransporte"))
DdlConfigAuto_SelectedIndexChanged(Nothing, Nothing)
End If
'Using ObjInv As New ClsInventarios
' If ObjInv.GetCamiones(DdlUnidadCamion.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, 1) Then
' DdlConfigAuto.SelectedValueExist(ObjInv.DtResultados.FiltroPrimeroValor("CveConfigAutoTransporte"))
' DdlConfigAuto_SelectedIndexChanged(Nothing, Nothing)
' End If
'End Using
End If
UpEmitirTransitorio.Update()
End Sub
Protected Sub DdlConfigAuto_SelectedIndexChanged(sender As Object, e As EventArgs)
ValidaConfiguracionVehiculo()
End Sub
Private Sub ValidaConfiguracionVehiculo()
DvRemolque1.Visible = False
DvRemolque2.Visible = False
DdlRemolque1.SelectedValueExist(-1)
DdlRemolque2.SelectedValueExist(-1)
If DdlConfigAuto.SelectedValue.ToEntero > 0 Then
Dim dtt As DataTable = GlobalDTGralCartaPorteConfigAutoTransportes
If dtt IsNot Nothing AndAlso dtt.Rows.Count > 0 Then
Dim Remolque As String = dtt.FiltroPrimeroValor("Remolque", $" CveConfigAutoTransporte ='{DdlConfigAuto.SelectedValue.ToEntero}'")
If Remolque = "1" Then
RequiereRemolque = True
MostrarRemolques = True
End If
If Remolque = "0, 1" Then
RequiereRemolque = False
MostrarRemolques = True
End If
If Remolque = "0" Then
RequiereRemolque = False
MostrarRemolques = False
End If
End If
Else
RequiereRemolque = False
MostrarRemolques = False
End If
If RequiereRemolque OrElse MostrarRemolques Then
DvRemolque1.Visible = True
End If
If Not RequiereRemolque Then
DvConfiguracionVeiculo.Visible = False
Else
DvConfiguracionVeiculo.Visible = True
End If
UpEmitirTransitorio.Update()
End Sub
Protected Sub DdlRemolque1_SelectedIndexChanged(sender As Object, e As EventArgs)
DdlRemolque2.Items.Clear()
If DdlRemolque1.SelectedValue.ToEntero > 0 Then
DvRemolque2.Visible = True
Dim dtt As DataTable = GlobalDTInvCamiones(UsuarioActual.CveEmpresa, -1, CveTipoCamion:=2)
If dtt IsNot Nothing Then
DdlRemolque2.DataSource = dtt.FiltraParametros($"CveCamion <> {DdlRemolque1.SelectedValue.ToEntero}")
End If
DdlRemolque2.DataBind()
Else
DvRemolque2.Visible = False
End If
DdlRemolque2.Items.Insert(0, New ListItem("Seleccione uno", "-1"))
UpEmitirTransitorio.Update()
End Sub
Function ValidaPSSAT(DrPS As DataRow) As Boolean
Dim Respuesta As Boolean = False
Dim CveSATPS As Integer = DrPS("CveSATPS").ToString.ToEntero
Dim PesoKg As Decimal = DrPS("PesoKg").ToString.ToDecimal
Dim SATClaveUnidadMedida As String = DrPS("SATClaveUnidadMedida").ToString.Trim
If CveSATPS > 0 AndAlso PesoKg > 0 AndAlso SATClaveUnidadMedida.Length > 0 Then
Respuesta = True
Else
Respuesta = False
Dim SBMensaje As New StringBuilder
SBMensaje.AppendLine("El producto seleccionado presenta la siguiente situación: <br>")
If CveSATPS <= 0 Then SBMensaje.AppendLine("-Producto SAT no asignado. <br>")
If PesoKg = 0 Then SBMensaje.AppendLine("-Producto sin peso definido. <br>")
If SATClaveUnidadMedida.Length = 0 Then SBMensaje.AppendLine("-Producto sin unidad de medida SAT asignada. ")
SBMensaje.AppendLine($"<br><strong><a class='texto' target='_blank' href='/Ventas/ProductosServicios.aspx?CvePS={DrPS("CvePS").ToString}' > Editar Producto </a></strong>")
Alert(SBMensaje.ToString, TipoMensaje.MsgAdvertencia)
End If
Return Respuesta
End Function
Public Sub CargarCamiones()
DdlUnidadCamion.DataSource = GlobalDTInvCamiones(UsuarioActual.CveEmpresa)
DdlUnidadCamion.DataBind()
DdlUnidadCamion.Items.Insert(0, New ListItem("Seleccione Uno", "-1"))
DdlRemolque1.DataSource = GlobalDTInvCamiones(UsuarioActual.CveEmpresa)
DdlRemolque1.DataBind()
DdlRemolque1.Items.Insert(0, New ListItem("Seleccione Uno", "-1"))
DdlConfigAuto.DataSource = GlobalDTGralCartaPorteConfigAutoTransportes
DdlConfigAuto.DataBind()
DdlConfigAuto.Items.Insert(0, New ListItem("Seleccione una", "-1"))
End Sub
Private Sub EmitirTimbrado(CveTimbre As Integer, TipoDocto As String, CveMovimientoTimbrado As Integer, ByRef MensajeAlert As StringBuilder)
Dim ObjTimbres As New Timbres(TipoDocto, CveTimbre, UsuarioActual)
MensajeAlert.Append("<br/><br/>")
If ObjTimbres.Timbrar(4) Then
Try
PdfFactura(ObjTimbres.ObjFactura)
Catch ex As Exception
End Try
MensajeAlert.Append("Emitido con éxito.")
'XML
Dim ArchivoXML As String = String.Format("{0}/XML/{1}/{2}.xml", UsuarioActual.Empresa.Ruta, ObjTimbres.ObjFactura.TipoDocto, ObjTimbres.ObjFactura.SerieFolio)
If File.Exists(ArchivoXML) Then
MensajeAlert.AppendFormat("<ul><li><a class=""Texto"" href=""/Compras/PopUpVerFactura.aspx?P={0}"">Descargar XML</a></li></ul>", Encripta(String.Format("OP=DesXmlTra&CVEMOVIMIENTO={0}&EXT={1}&FOLIO={2}&TIPODOCTO={3}", CveMovimientoTimbrado, "XML", ObjTimbres.ObjFactura.SerieFolio, ObjTimbres.ObjFactura.TipoDocto)))
End If
'PDF
'Dim ArchivoPDF = String.Format("{0}/PDF/{1}/{2}.pdf", UsuarioActual.Empresa.Ruta, ObjTimbres.ObjFactura.TipoDocto, ObjTimbres.ObjFactura.SerieFolio)
'If File.Exists(ArchivoPDF) Then
' MensajeAlert.AppendFormat("<ul><li><a class=""Texto"" href=""/Compras/PopUpVerFactura.aspx?P={0}"">Descargar PDF</a></li></ul>", Encripta(String.Format("OP=DesPdfTra&CVEMOVIMIENTO={0}&EXT={1}&FOLIO={2}&TIPODOCTO={3}", CveMovimientoTimbrado, "PDF", ObjTimbres.ObjFactura.SerieFolio, ObjTimbres.ObjFactura.TipoDocto)))
'End If
If ChkEmitirCartaPorte.Checked Then
MensajeAlert.AppendFormat("<ul><li><a class=""Texto"" href=""/Compras/PopUpVerFactura.aspx?P={0}"">Descargar Carta Porte</a></li></ul>", Encripta(String.Format("OP=CARPOTIMBRE&CVETIMBRE={0}", CveTimbre)))
Else
MensajeAlert.AppendFormat("<ul><li><a class=""Texto"" href=""/Compras/PopUpVerFactura.aspx?P={0}"">Descargar Traslado</a></li></ul>", Encripta(String.Format("OP=CARPO&CVEMOV={0}", CveMovimientoTimbrado)))
End If
Else
MensajeAlert.AppendFormat("<ul><li>{0}</li></ul>", ObjTimbres.MsgError.ToString)
End If
End Sub
Protected Sub DdlClienteCarta_SelectedIndexChanged(sender As Object, e As EventArgs)
CargaDireccionesEnvio()
End Sub
Private Sub CargaDireccionesEnvio()
Dim ObjClientes As New ClsClientes
Dim TieneError As Boolean = False
DdlDireccionEnvio.Items.Clear()
If ObjClientes.DireccionEnvioGet(-1, DdlClienteCarta.SelectedValue.ToEntero, -1) Then
DdlDireccionEnvio.DataSource = ObjClientes.DtResultados.FiltraParametros(String.Format("Estatus = 1"))
DdlDireccionEnvio.DataBind()
Else
TieneError = True
End If
If TieneError Then
Alert("Ocurrió un error al obtener las direcciones de envío", TipoMensaje.MsgError)
End If
ObjClientes.Dispose()
DdlDireccionEnvio.Items.Add(New ListItem("Seleccione una", "-1"))
UpEmitirTransitorio.Update()
End Sub
#End Region
Private Class MMovimientoVirtual
Public Property CveMovimientoVirtual As Integer
Public Property FolioVirtual As String
Public Property TieneError As Boolean
End Class
Protected Sub BtnCargaExcelAjuste_Click(sender As Object, e As EventArgs)
If TxtExcelAjuste.getfiles().Archivos.Count > 0 Then
Dim file As Archivo = TxtExcelAjuste.getfiles().Archivos(0)
Dim Directorio As String = AppDomain.CurrentDomain.BaseDirectory & file.path
CargarArchivo(Directorio, file.filename)
Else
Alert("No existe el archivo. Favor de subir un archivo excel a la plataforma.", TipoMensaje.MsgError)
End If
End Sub
Protected Sub LnkDescargaFormato_Click(sender As Object, e As EventArgs)
Dim Directorio As String = ModExtensiones.DirectorioBaseEmpresas & "Empresas\Grales\Formatos\FormatoAjusteInventario.xlsx"
Dim Archivo As New IO.FileInfo(Directorio)
If Archivo.Exists Then
Response.Clear()
Response.ClearHeaders()
Response.ClearContent()
Response.AddHeader("Content-Disposition", "attachment; filename=" + Archivo.Name)
Response.AddHeader("Content-Length", Archivo.Length.ToString())
Response.ContentType = "text/plain"
Response.Flush()
Response.TransmitFile(Archivo.FullName)
Response.End()
End If
End Sub
Private Sub CargarArchivo(Ruta As String, FileName As String)
SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet)
Dim Tipo As String = "EXCEL"
Dim dt As DataTable = Nothing
Dim ErrorArchivo As Boolean = False
Try
dt = ReadExcelFile(Ruta + FileName, True)
Catch ex As Exception
ErrorArchivo = True
OnError("Ocurrio un error al leer el archivo <br/>" & ex.Message, ex)
End Try
If Not ErrorArchivo AndAlso dt IsNot Nothing Then
dt.TableName = "Datos"
Dim TieneError As Boolean = False
Dim TieneErrorCodigos As Boolean = False
Try
If DdlAlmacenInventarioFisico.SelectedValue.ToEntero <= 0 Then Alert("Seleccione un almacen", TipoMensaje.MsgAdvertencia) : RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") : DdlPS.SelectedText = "" : Exit Sub
Dim sbNoencontrados As New StringBuilder
For Each row As DataRow In dt.Rows
Dim DrPS As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, Codigo:=row("Codigo").ToString(), Estatus:=-1).FiltroPrimero("")
If DrPS IsNot Nothing Then
Dim CvePS As Integer = DrPS("CvePS").ToString().ToEntero()
If row("EntradaSalida").ToString() = "1" Then
AddPSEntrada(CvePS, row("Diferencia").ToString().ToDecimal(), row("Costo").ToString().ToDecimal(), Sonido:=False, CargaGV:=False)
Else
AddPSSalida(CvePS, row("Diferencia").ToString().ToDecimal(), Sonido:=False, CargaGV:=False)
End If
Else
TieneError = True
TieneErrorCodigos = True
sbNoencontrados.Append($"{row("Codigo").ToString}<br>")
End If
Next
If sbNoencontrados.Length > 0 Then
Alert($"No se encontraron los siguientes códigos. <br> {sbNoencontrados.ToString}", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
CargaGvSalidas(DtMovimientosSalidaInvFisico)
CargaGvEntradas(DtMovimientosEntradaInvFisico)
Catch ex As Exception
TieneError = True
OnError("Ocurrió un error al cargar los precios.", ex)
Finally
If TieneError Then
If DtMovimientosEntradaInvFisico IsNot Nothing Then
DtMovimientosEntradaInvFisico.Clear()
End If
If DtMovimientosSalidaInvFisico IsNot Nothing Then
DtMovimientosSalidaInvFisico.Clear()
End If
CargaGvSalidas(DtMovimientosSalidaInvFisico)
CargaGvEntradas(DtMovimientosEntradaInvFisico)
If Not TieneErrorCodigos Then
Alert("Ocurrió un error al cargar los datos", TipoMensaje.MsgError)
End If
Else
If DtMovimientosEntradaInvFisico.Rows.Count <> dt.FiltraParametros("EntradaSalida = 1").Rows.Count Then
Alert("No se cargaron todas las entradas.", TipoMensaje.MsgAdvertencia)
Else
If DtMovimientosSalidaInvFisico.Rows.Count <> dt.FiltraParametros("EntradaSalida = 0").Rows.Count Then
Alert("No se cargaron todas las salidas.", TipoMensaje.MsgAdvertencia)
Else
Alert("Los datos se cargaron correctamente.")
End If
End If
RegistraScript("$('#DivCargaAjuste').modal('hide')")
End If
End Try
End If
UpModalAjuste.Update()
End Sub
End Class