2993 lines
154 KiB
VB.net
2993 lines
154 KiB
VB.net
Option Explicit On
|
|
Option Strict On
|
|
|
|
Imports System.Data
|
|
Imports System.IO
|
|
Imports Extensiones
|
|
Imports GemBox.Spreadsheet
|
|
Imports Microsoft.Reporting.WebForms
|
|
|
|
Partial Class Inventarios_TraspasoAlmacen
|
|
Inherits ClsPaginas
|
|
|
|
#Region "PROPIEDADES"
|
|
Public Property DtMovimientos() As DataTable
|
|
Get
|
|
Return CType(ViewState("DtMovimientos"), DataTable)
|
|
End Get
|
|
Set(value As DataTable)
|
|
ViewState("DtMovimientos") = value
|
|
End Set
|
|
End Property
|
|
|
|
Private Property DtTraslado As DataTable
|
|
Get
|
|
Return CType(ViewState("DtTraslado"), DataTable)
|
|
End Get
|
|
Set(value As DataTable)
|
|
ViewState("DtTraslado") = value
|
|
End Set
|
|
End Property
|
|
|
|
|
|
Private Property CveAlmacenTransitorio As Integer
|
|
Get
|
|
Return CType(ViewState("CveAlmacenTransitorio"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveAlmacenTransitorio") = value
|
|
End Set
|
|
End Property
|
|
Private Property CveAlmacenDestino As Integer
|
|
Get
|
|
Return CType(ViewState("CveAlmacenDestino"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveAlmacenDestino") = value
|
|
End Set
|
|
End Property
|
|
Private Property CveUsuarioResponsable As Integer
|
|
Get
|
|
Return CType(ViewState("CveUsuarioResponsable"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveUsuarioResponsable") = value
|
|
End Set
|
|
End Property
|
|
Private Property CvePSSerie As Integer
|
|
Get
|
|
Return CType(ViewState("CvePSSerie"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CvePSSerie") = value
|
|
End Set
|
|
End Property
|
|
Private Property CveUMSerie As Integer
|
|
Get
|
|
Return CType(ViewState("CveUMSerie"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveUMSerie") = value
|
|
End Set
|
|
End Property
|
|
Private Property CargadoDeMov As Boolean
|
|
Get
|
|
Return CType(ViewState("CargadoDeMov"), Boolean)
|
|
End Get
|
|
Set(value As Boolean)
|
|
ViewState("CargadoDeMov") = value
|
|
End Set
|
|
End Property
|
|
Private Property CveMovimientoSalida As Integer
|
|
Get
|
|
Return CType(ViewState("CveMovimientoSalida"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveMovimientoSalida") = value
|
|
End Set
|
|
End Property
|
|
Private Property CveMov As Integer
|
|
Get
|
|
Return CType(ViewState("CveMov"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("CveMov") = value
|
|
End Set
|
|
End Property
|
|
Private Property ObjFactura As Modelos.Factura
|
|
Get
|
|
Return CType(ViewState("ObjFactura"), Modelos.Factura)
|
|
End Get
|
|
Set(value As Modelos.Factura)
|
|
ViewState("ObjFactura") = value
|
|
End Set
|
|
End Property
|
|
Private Property Folio As Integer
|
|
Get
|
|
Return CType(ViewState("Folio"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("Folio") = value
|
|
End Set
|
|
End Property
|
|
Private Property MensajeAlert As StringBuilder
|
|
Get
|
|
Return CType(ViewState("MensajeAlert"), StringBuilder)
|
|
End Get
|
|
Set(value As StringBuilder)
|
|
ViewState("MensajeAlert") = 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
|
|
|
|
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 TipoSeccionAlmacen As Integer
|
|
Get
|
|
Return CType(ViewState("TipoSeccionAlmacen"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("TipoSeccionAlmacen") = value
|
|
End Set
|
|
End Property
|
|
Private Property FolioBusqueda As Integer
|
|
Get
|
|
Return CType(ViewState("FolioBusqueda"), Integer)
|
|
End Get
|
|
Set(value As Integer)
|
|
ViewState("FolioBusqueda") = value
|
|
End Set
|
|
End Property
|
|
Private Property DtCamiones As DataTable
|
|
Get
|
|
Return CType(ViewState("DtCamiones"), DataTable)
|
|
End Get
|
|
Set(value As DataTable)
|
|
ViewState("DtCamiones") = value
|
|
End Set
|
|
End Property
|
|
#End Region
|
|
|
|
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
|
|
If Not Page.IsPostBack Then
|
|
|
|
TxtFecha.Text = Now.ToShortDateString
|
|
CEFecha.EndDate = Now.AddDays(-1)
|
|
RVFecha.MaximumValue = Now.ToShortDateString
|
|
|
|
TxtFechaRecepcion.Text = Now.ToShortDateString
|
|
CEFechaRecepcion.EndDate = Now.AddDays(-1)
|
|
RVFechaRecepcion.MaximumValue = Now.ToShortDateString
|
|
Folio = 0
|
|
CveMovimientoTimbrado = -1
|
|
|
|
If UsuarioActual.CveEmpresa = 119 Then
|
|
divGastoIndirecto.Visible = False
|
|
LblGastoIndirecto.Visible = False
|
|
divResponsable.Visible = False
|
|
LblResponsable.Visible = False
|
|
End If
|
|
|
|
|
|
CargaCombos()
|
|
CreaDT()
|
|
AlmacenTransitorioDefaults()
|
|
|
|
If Request("CveEntrada") IsNot Nothing AndAlso Request("CveEntrada").ToString.ToEntero > 0 Then
|
|
CargaMovimiento(Request("CveEntrada").ToString.ToEntero)
|
|
End If
|
|
|
|
If UsuarioActual.Empresa.Funcionalidad(132) = "1" Then
|
|
DivCodigoSeriePS.Visible = True
|
|
Else
|
|
DivCodigoSeriePS.Visible = False
|
|
End If
|
|
If ChkTransitorio.Checked Then
|
|
RegistraScript("$('#DivTransitorio').show(0);$('#DivGastoIndirecto').show(0);$('#DivDocChofer').show(0);")
|
|
DivTransitorio2.Visible = True
|
|
End If
|
|
|
|
If UsuarioActual.CveEmpresa.Contiene(1, 119) Then
|
|
DivEmitirTimbrado.Visible = True
|
|
LblEmitirTimbrado.Visible = True
|
|
ChkEmitirTimbrado.Checked = True
|
|
|
|
Dim HabilitarValidators As Boolean = UsuarioActual.CveEmpresa.Contiene(119)
|
|
RfvDdlChofer.Enabled = HabilitarValidators
|
|
RfvDdlUnidadCamion.Enabled = HabilitarValidators
|
|
RfvTxtPlaca.Enabled = HabilitarValidators
|
|
RfvTxtEspecifUnidad.Enabled = HabilitarValidators
|
|
|
|
End If
|
|
|
|
CantidadTotal = 0
|
|
|
|
CvePS = 0
|
|
|
|
TipoSeccionAlmacen = 0
|
|
|
|
|
|
|
|
If UsuarioActual.Empresa.Funcionalidad(281).ToEntero = 1 Then
|
|
|
|
TxtFecha.Enabled = False
|
|
ImgFecha.Visible = False
|
|
|
|
TxtFechaRecepcion.Enabled = False
|
|
ImgFechaRecepcion.Visible = False
|
|
|
|
End If
|
|
|
|
Else
|
|
If ChkTransitorio.Checked Then
|
|
RegistraScript("$('#DivTransitorio').show(0);$('#DivGastoIndirecto').show(0);$('#DivDocChofer').show(0);")
|
|
DivTransitorio2.Visible = True
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
#Region "CARGA DATOS"
|
|
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(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("UM")
|
|
dt.Columns.Add("CvePS", Type.GetType("System.Int32"))
|
|
dt.Columns.Add("CveAF", Type.GetType("System.Int32"))
|
|
dt.Columns.Add("PS")
|
|
dt.Columns.Add("Observaciones")
|
|
dt.Columns.Add("CveSeccionAlmacen", Type.GetType("System.Int32"))
|
|
dt.Columns.Add("SeccionAlmacen")
|
|
dt.Columns.Add("CveSeccionAlmacenDestino", Type.GetType("System.Int32"))
|
|
dt.Columns.Add("SeccionAlmacenDestino")
|
|
dt.Columns.Add("Serie")
|
|
dt.Columns.Add("Lote")
|
|
dt.Columns.Add("FechaCaducidad", Type.GetType("System.DateTime"))
|
|
|
|
'dt.Columns.Add("PU", Type.GetType("System.Double"))
|
|
'dt.Columns.Add("Total", Type.GetType("System.Double"))
|
|
|
|
dt.Columns.Add("CveClasificacion", Type.GetType("System.Int32"))
|
|
dt.Columns.Add("EstatusExistencia")
|
|
|
|
dt.Columns.Add("TotalImporte", Type.GetType("System.Double"))
|
|
dt.Columns.Add("PU", Type.GetType("System.Double"))
|
|
dt.Columns.Add("Descuento", Type.GetType("System.Double"))
|
|
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"))
|
|
|
|
|
|
DtMovimientos = dt
|
|
|
|
CargaGvDatos()
|
|
|
|
End Sub
|
|
|
|
Private Sub CargaMovimiento(CveMovimiento As Integer)
|
|
Dim Mov As New ClsInventarios
|
|
|
|
If Mov.GetMovimientos(CveMovimiento, 2, -1, UsuarioActual.CveEmpresa) Then
|
|
If Mov.DtResultados.Rows.Count = 1 Then
|
|
DivMov.Visible = True
|
|
ltlFolio.Text = Mov.DtResultados(0)("Folio").ToString
|
|
ltlFecha.Text = Mov.DtResultados(0)("FechaMovto").ToString.ToDate.ToShortDateString
|
|
|
|
If Mov.CveCompra > 0 Then
|
|
hplRef.NavigateUrl = $"/Compras/Compras.aspx?CveCompra={Mov.CveCompra}"
|
|
lblCompraRef.Visible = True
|
|
hplRef.Visible = True
|
|
Else
|
|
hplRef.Visible = False
|
|
lblCompraRef.Visible = False
|
|
End If
|
|
|
|
|
|
CargadoDeMov = True
|
|
|
|
If (DdlAlmacenOrigen.Items.FindByValue(Mov.CveAlmacen.ToString()) Is Nothing) Then
|
|
Dim dr As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", Mov.CveAlmacen))
|
|
If dr IsNot Nothing Then
|
|
DdlAlmacenOrigen.Items.Insert(0, New ListItem(dr("Almacen").ToString, dr("CveAlmacen").ToString)) ' lo genera Obj.SelectedValue = Valor.ToString
|
|
DdlAlmacenOrigen.Enabled = False
|
|
End If
|
|
Else
|
|
DdlAlmacenOrigen.SelectedValue = Mov.CveAlmacen.ToString
|
|
End If
|
|
DdlAlmacenOrigen.Enabled = False
|
|
|
|
'If GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveTipoAlmacen", $"CveAlmacen = {Mov.CveAlmacenDestino}").ToEntero = 16 Then
|
|
' CveMov = CveMovimiento
|
|
' LnkEnviarMail.Attributes.Add("onclick", "$('#ModalDivMail').modal();")
|
|
' LnkEnviarMail.Visible = True
|
|
'End If
|
|
|
|
If Mov.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then
|
|
DtMovimientos = Mov.DtResultados.DefaultView.ToTable("Cantidad, CveUM, CvePS, CveAF, PS, Serie, CveClasificacion, EstatusExistencia")
|
|
CargaGvDatos()
|
|
End If
|
|
|
|
Else
|
|
Alert("El movimiento solicitado no existe. ", TipoMensaje.MsgAdvertencia)
|
|
End If
|
|
Else
|
|
Alert("Ocurrió un error al cargar el movimiento a traspasar. Por favor vuelva a intentar.", TipoMensaje.MsgError)
|
|
End If
|
|
|
|
Mov.Dispose()
|
|
UpMov.Update()
|
|
End Sub
|
|
|
|
Private Sub AlmacenTransitorioDefaults()
|
|
ChkTransitorio.Checked = UsuarioActual.Empresa.Funcionalidad(154).ToString.ToEntero > 0
|
|
ChkTransitorio.Enabled = Not UsuarioActual.Empresa.Funcionalidad(154).ToString.ToEntero > 0
|
|
End Sub
|
|
|
|
Private Sub CargaCombos()
|
|
|
|
'Llenar Clasificaciones
|
|
If UsuarioActual.CveEmpresa = 66 Then
|
|
DdlClasificacion.DataSource = GlobalDTSubFamilias(UsuarioActual.CveEmpresa).FiltraParametros("", Orderby:="Clasificacion")
|
|
Else
|
|
DdlClasificacion.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltraParametros(" Codigo = '' OR Codigo IS NULL ", Orderby:="Clasificacion")
|
|
End If
|
|
DdlClasificacion.DataBind()
|
|
|
|
'Llena Almacen Origen
|
|
CargaAlmacenOrigen()
|
|
'DdlAlmacenOrigen.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
|
|
'Dim dtAlm As DataTable = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 1)
|
|
'dtAlm.Merge(GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 2))
|
|
|
|
'Llena Almacen Destino, todos los almacenes destino,
|
|
|
|
DdlAlmacenDestino.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoAlmacen NOT IN (3,4,9,10,11,24) AND Estatus = 'Activo'")
|
|
'DdlAlmacenDestino.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen <> 4")
|
|
DdlAlmacenDestino.DataBind()
|
|
DdlAlmacenDestino.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
|
|
'Llena Almacen Transitorio
|
|
DdlAlmacenTransitorio.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 3)
|
|
DdlAlmacenTransitorio.DataBind()
|
|
DdlAlmacenTransitorio.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
|
|
'Llena Almacen Recepcion
|
|
DdlAlmacenRecepcion.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen NOT IN (3,4,9,10,11,24)")
|
|
DdlAlmacenRecepcion.DataBind()
|
|
DdlAlmacenRecepcion.Items.Insert(0, New ListItem("Todos", "-1"))
|
|
|
|
'Llena Almacen Transitorio Recepcion
|
|
DdlAlmacenTransitorioRecepcion.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 3)
|
|
DdlAlmacenTransitorioRecepcion.DataBind()
|
|
DdlAlmacenTransitorioRecepcion.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
|
|
''Llena Almacen Recibe
|
|
'DdlAlmacenRecibe.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
|
|
'DdlAlmacenRecibe.DataBind()
|
|
|
|
'Llena Unidaddes Medida
|
|
DdlUnidad.DataSource = GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa)
|
|
DdlUnidad.DataBind()
|
|
|
|
'Llena Choferes
|
|
Dim ObjAcar As New ClsAcarreos()
|
|
If ObjAcar.GetChofer(-1, UsuarioActual.CveEmpresa, 1, -1) Then
|
|
DdlChofer.DataSource = ObjAcar.DtResultados
|
|
DdlChofer.DataBind()
|
|
End If
|
|
ObjAcar.Dispose()
|
|
DdlChofer.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
TxtFechaEntrega.Text = Now.ToShortDateString
|
|
|
|
'Llena Responsables Transitorio
|
|
'DdlResponsable.DataSource = GlobalDTUsuarios(-1, UsuarioActual.CveEmpresa)
|
|
'DdlResponsable.DataBind()
|
|
'DdlResponsable.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
|
|
'Llena Responsables Transitorio recepcion
|
|
'DdlResponsableRecepcion.DataSource = GlobalDTUsuarios(-1, UsuarioActual.CveEmpresa)
|
|
'DdlResponsableRecepcion.DataBind()
|
|
'DdlResponsableRecepcion.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
|
|
'Llenar el dropdownlist de Productos y servicios
|
|
|
|
'If UsuarioActual.Empresa.Funcionalidad(105) = "" Then
|
|
|
|
' DdlProducto.DataSource = GlobalDTProductosServicios(UsuarioActual.CveEmpresa)
|
|
' DdlProducto.DataBind()
|
|
' DdlProducto.Items.Insert(0, New ListItem("----", "-1"))
|
|
' DdlProductows.Visible = False
|
|
'Else
|
|
' DdlProducto.Visible = False
|
|
'End If
|
|
|
|
CargaPS()
|
|
|
|
'Folio
|
|
SiguienteFolio(If(ChkTransitorio.Checked, 9, 8))
|
|
|
|
'DdlProducto.DataBind()
|
|
CargarCamiones()
|
|
End Sub
|
|
Private Sub CargaAlmacenOrigen()
|
|
DdlAlmacenOrigen.Enabled = True
|
|
DdlAlmacenOrigen.Items.Clear()
|
|
DdlAlmacenOrigen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros("CveTipoAlmacen NOT IN (3,4,9,10,11,24)")
|
|
DdlAlmacenOrigen.Items.Insert(0, New ListItem(" Seleccione ", "-1"))
|
|
DdlAlmacenOrigen.SelectedValue = "-1"
|
|
DdlAlmacenOrigen.DataBind()
|
|
DdlAlmacenOrigen.SelectedValueExist(UsuarioActual.CveAlmacen)
|
|
End Sub
|
|
Private Sub CargaPS()
|
|
'DdlProducto2.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1")
|
|
|
|
'If Not DdlProducto2.UsaWebService AndAlso CType(DdlProducto2.DataSource, DataTable) Is Nothing Then
|
|
' DdlProducto2.DataSource = GlobalDTProductosServicios(UsuarioActual.CveEmpresa)
|
|
' DdlProducto2.DataBind()
|
|
'End If
|
|
|
|
Dim EsWS = If(UsuarioActual.Empresa.Funcionalidad(105) = "1" Or UsuarioActual.Empresa.Funcionalidad(141) = "1", True, False)
|
|
DdlProducto2.setEsWebService(EsWS)
|
|
|
|
If DdlProducto2.UsaWebService Then
|
|
DdlProducto2.ddlWS.Attributes.Add("data-cveclasificacion", DdlClasificacion.SelectedValue)
|
|
If UsuarioActual.Empresa.Funcionalidad(141) = "1" Then
|
|
DdlProducto2.ddlWS.Attributes.Add("data-pagina", "inv/traspaso")
|
|
DdlProducto2.ddlWS.Attributes.Add("Data-onresult", "CargaExistenciaAlmacenes")
|
|
CargaExistenciasSucursal()
|
|
DdlAlmacenOrigen.AutoPostBack = True
|
|
End If
|
|
ElseIf Not DdlProducto2.UsaWebService AndAlso CType(DdlProducto2.DataSource, DataTable) Is Nothing Then
|
|
DdlProducto2.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion:=DdlClasificacion.SelectedValue.ToEntero).FiltraParametros("CveTipoPS = 2")
|
|
DdlProducto2.DataBind()
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub CargaExistenciasSucursal()
|
|
DdlProducto2.Attributes.Remove("Data-cvesubproyecto")
|
|
DdlProducto2.Attributes.Add("Data-cvesubproyecto", GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto", $"CveAlmacen = {DdlAlmacenOrigen.SelectedValue}"))
|
|
End Sub
|
|
Private Sub SiguienteFolio(CveConcepto As Integer)
|
|
'Dim Inv As New ClsInventarios
|
|
'Dim Folio As Integer = Inv.GetFolioSiguiente(CveConcepto, UsuarioActual.CveEmpresa)
|
|
'Inv.Dispose()
|
|
|
|
'TxtFolio.Text = Folio.ToString
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region " AGREGAR "
|
|
Protected Sub btnAgregar_Click(sender As Object, e As EventArgs) Handles LbAgregar.Click
|
|
BtnAgregarPS(txtCantidad.Text.ToDecimal)
|
|
End Sub
|
|
Protected Sub BtnSerieAddNew_Click(sender As Object, e As EventArgs)
|
|
BtnAgregarPS(1)
|
|
End Sub
|
|
Private Sub BtnAgregarPS(Cantidad As Decimal)
|
|
Dim CveProducto As Integer = DdlProducto2.SelectedValue.ToEntero
|
|
Dim FuncionalidadSinSerie = True
|
|
|
|
If CveProducto > 0 Then
|
|
If TxtnSerie.Visible Then
|
|
Cantidad = 1
|
|
If TxtnSerie.Text = "" Then
|
|
Alert("Serie es necesario", TipoMensaje.MsgAdvertencia)
|
|
RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')")
|
|
Exit Sub
|
|
End If
|
|
If txtCantidad.Text.ToDouble > 1 Then
|
|
FuncionalidadSinSerie = False
|
|
End If
|
|
End If
|
|
Dim DrPS As DataRow = Nothing
|
|
|
|
DrPS = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CveProducto).FiltroPrimero("") ' Estado = -1
|
|
|
|
If Cantidad > 0 AndAlso DrPS("VentaMinima").ToString.ToDecimal > 0 Then
|
|
'verifico que la cantidad sea multiplo de venta minima, es decir ventaminima =5, solo puede vender 5,10,15...
|
|
If Cantidad Mod DrPS("VentaMinima").ToString.ToDecimal <> 0 Then
|
|
Alert(String.Format("El producto se vende solo en cantidades de {0:#,###.####}", DrPS("VentaMinima")))
|
|
Exit Sub
|
|
End If
|
|
End If
|
|
|
|
Dim Valido = ValidaExistencia(Cantidad, CveProducto, DdlUnidad.SelectedValue.ToEntero, DdlSeccionAlmacen.SelectedValue.ToEntero, If(TxtnSerie.Visible, TxtnSerie.Text, "-1"), If(TxtnLote.Visible, TxtnLote.Text, "-1"), If(TxtnFechaCaducidad.Visible, TxtnFechaCaducidad.Text.ToDate, MinFecha))
|
|
|
|
If Valido Then
|
|
AgregarPS(Cantidad, CveProducto, DdlUnidad.SelectedValue.ToEntero, TxtnObservaciones.Text, CveSeccionAlmacen:=DdlSeccionAlmacen.SelectedValue.ToEntero, SeccionAlmacen:=DdlSeccionAlmacen.SelectedItem.Text, Serie:=If(TxtnSerie.Visible, TxtnSerie.Text, ""), Lote:=If(TxtnLote.Visible, TxtnLote.Text, ""), FechaCaducidad:=If(TxtnFechaCaducidad.Visible, TxtnFechaCaducidad.Text.ToDate, MinFecha), CveSeccionAlmacenDestino:=DdlSeccionAlmacenDestino.SelectedValue.ToEntero, Limpia:=FuncionalidadSinSerie)
|
|
End If
|
|
|
|
End If
|
|
End Sub
|
|
Private Function ValidaExistencia(Cantidad As Double, CvePS As Integer, CveUnidadMedida As Integer, CveSeccionAlmacen As Integer, Serie As String, Lote As String, FechaCaducidad As Date) As Boolean
|
|
Dim Retorno = True
|
|
|
|
Dim ExistenciaEspecificada As Decimal
|
|
Dim CantidadEnGrid As Decimal = DtMovimientos.SUMD("Cantidad", $"CvePS = {CvePS} AND CveUM = {CveUnidadMedida} {If(Serie <> "-1", $" AND Serie = '{Serie}'", "")}")
|
|
|
|
Dim Inv As New ClsInventarios
|
|
Dim Existencia As Decimal = Inv.GetExistenciasPS(CvePS, CveUnidadMedida, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDate.ToString("yyyy/MM/dd 23:59"), PendientePorSurtir:=1)
|
|
'la primera vez valida, que la existencia global, cumpla, considerando lo pendiente por surtir
|
|
'las segunda consulta, que tenga existencia, ya con los parametros especificos
|
|
If FechaCaducidad > MinFecha OrElse Serie <> "" OrElse Lote <> "" Then
|
|
ExistenciaEspecificada = Inv.GetExistenciasPS(CvePS, CveUnidadMedida, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDate.ToString("yyyy/MM/dd 23:59"), CveSeccionAlmacen:=CveSeccionAlmacen, Serie:=Serie, Lote:=Lote, FechaCaducidad:=FechaCaducidad, PendientePorSurtir:=-1)
|
|
Else
|
|
ExistenciaEspecificada = Existencia
|
|
End If
|
|
Inv.Dispose()
|
|
|
|
If Existencia - Cantidad - CantidadEnGrid < 0 OrElse ExistenciaEspecificada - Cantidad - CantidadEnGrid < 0 Then
|
|
If Existencia < 0 OrElse ExistenciaEspecificada < 0 Then
|
|
Alert("No hay existencia del producto", TipoMensaje.MsgAdvertencia)
|
|
RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')")
|
|
Else
|
|
Alert(String.Format("Solo hay en existencia: {0}", Existencia), TipoMensaje.MsgAdvertencia)
|
|
RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')")
|
|
End If
|
|
Retorno = False
|
|
End If
|
|
|
|
Return Retorno
|
|
End Function
|
|
Private Sub AgregarPS(Cantidad As Double, CvePS As Integer, CveUnidadMedida As Integer, Optional Observaciones As String = "", Optional CveSeccionAlmacen As Integer = -1, Optional SeccionAlmacen As String = "", Optional Serie As String = "", Optional Lote As String = "", Optional FechaCaducidad As Date = MinFecha, Optional Limpia As Boolean = True, Optional CveSeccionAlmacenDestino As Integer = -1)
|
|
If Cantidad <= 0 Then
|
|
Alert("La cantidad debe ser mayor a cero (0). Por favor verifique y vuelva a intentar", TipoMensaje.MsgAdvertencia)
|
|
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
|
|
End If
|
|
|
|
Dim CveClasificacion As Integer
|
|
|
|
Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimero("")
|
|
If DrPS IsNot Nothing Then CveClasificacion = DrPS("CveClasificacion").ToString.ToEntero
|
|
|
|
Dim DrUM = GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa).FiltroPrimero($"CveUnidadMedida = {CveUnidadMedida}")
|
|
|
|
Dim registro As DataRow = DtMovimientos.NewRow
|
|
registro.Item("Cantidad") = Cantidad
|
|
registro.Item("CveUM") = CveUnidadMedida
|
|
registro.Item("UM") = DrUM("UnidadMedida")
|
|
registro.Item("UnidadMedida") = DrUM("UnidadMedida")
|
|
registro.Item("CvePS") = CvePS
|
|
registro.Item("PS") = DrPS("PSCodigo")
|
|
registro.Item("Observaciones") = Observaciones
|
|
registro.Item("Serie") = Serie
|
|
registro.Item("Lote") = Lote
|
|
If FechaCaducidad > MinFecha Then registro.Item("FechaCaducidad") = FechaCaducidad
|
|
registro.Item("CveClasificacion") = CveClasificacion
|
|
registro.Item("CveAF") = -1
|
|
registro.Item("EstatusExistencia") = "1"
|
|
registro.Item("CveSeccionAlmacen") = CveSeccionAlmacen
|
|
registro.Item("SeccionAlmacen") = SeccionAlmacen
|
|
registro.Item("CveSeccionAlmacenDestino") = CveSeccionAlmacenDestino
|
|
|
|
registro.Item("TotalImporte") = 0
|
|
registro.Item("PU") = 0
|
|
registro.Item("Descuento") = 0
|
|
registro.Item("SATClaveUM") = DrPS("SATClaveUnidadMedida")
|
|
registro.Item("SATClaveProdServ") = DrPS("SATClavePS")
|
|
registro.Item("Noidentificacion") = DrPS("Codigo")
|
|
registro.Item("CuentaPredial") = ""
|
|
registro.Item("Obs") = ""
|
|
registro.Item("ImporteIVA") = 0
|
|
registro.Item("PorcentajeIVA") = 0
|
|
|
|
|
|
DtMovimientos.Rows.Add(registro)
|
|
RegistraScript("playsonidito('beep-07.wav')")
|
|
CargaGvDatos()
|
|
|
|
If Limpia Then
|
|
LimpiaAgregar()
|
|
Else
|
|
txtCantidad.Text = (txtCantidad.Text.ToDouble - 1.0).ToString
|
|
TxtnSerie.Text = ""
|
|
TxtnSerie.Focus()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub LimpiaAgregar()
|
|
DdlClasificacion.SelectedValue = "-1"
|
|
DdlClasificacion_SelectedIndexChanged(DdlClasificacion, EventArgs.Empty)
|
|
txtCantidad.Text = ""
|
|
TxtnObservaciones.Text = ""
|
|
TxtnSerie.Text = ""
|
|
TxtnSerie.Visible = False
|
|
TxtnLote.Text = ""
|
|
TxtnFechaCaducidad.Text = ""
|
|
|
|
txtCantidad.Focus()
|
|
If TxtCodigoPS.Visible Then
|
|
TxtCodigoPS.Focus()
|
|
End If
|
|
End Sub
|
|
|
|
|
|
#End Region
|
|
|
|
#Region " GUARDAR "
|
|
Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) Handles BtnGuardar.Click
|
|
|
|
'VALIDA ALMACEN ORIGEN Y DESTINO
|
|
If DdlAlmacenOrigen.SelectedValue = DdlAlmacenDestino.SelectedValue Then
|
|
Alert("No se puede realizar un traspaso entre el mismo almacén.", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
|
|
'VALIDA TRANSITORIO
|
|
If ChkTransitorio.Checked Then
|
|
If TxtResponsable.Text.Trim = "" And Not UsuarioActual.CveEmpresa.Contiene(119) Then
|
|
Alert("Debe seleccionar un responsable para el traspaso transitorio.", TipoMensaje.MsgAdvertencia)
|
|
RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')")
|
|
If ChkTransitorio.Checked Then RegistraScript("$('#DivTransitorio').show(200);") : DivTransitorio2.Visible = True
|
|
Exit Sub
|
|
End If
|
|
|
|
If DdlAlmacenTransitorio.SelectedValue.ToEntero <= 0 Then
|
|
Alert("Debe seleccionar un almacen transitorio.", TipoMensaje.MsgAdvertencia)
|
|
RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')")
|
|
If ChkTransitorio.Checked Then RegistraScript("$('#DivTransitorio').show(200);") : DivTransitorio2.Visible = True
|
|
Exit Sub
|
|
End If
|
|
|
|
If DdlChofer.SelectedValue.ToEntero <= 0 And UsuarioActual.CveEmpresa.Contiene(119) Then
|
|
Alert("Debe seleccionar un Chofer", TipoMensaje.MsgAdvertencia)
|
|
RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')")
|
|
If ChkTransitorio.Checked Then RegistraScript("$('#DivTransitorio').show(200);") : DivTransitorio2.Visible = True
|
|
Exit Sub
|
|
End If
|
|
End If
|
|
|
|
Dim DrAlmO, DrAlmD As DataRow
|
|
Dim CveSucursalOrigen, CveSucursalDestino As Integer
|
|
Dim TipoAlmacenOrigen, TipoAlmacenDestino As Integer
|
|
Dim CveSubProyectoOrigen, CveSubProyectoDestino As Integer
|
|
Dim IdCtaContableOrigen, IdCtaContableDestino As Integer
|
|
|
|
Dim CveAlmacenVirtualSalida As Integer = -1
|
|
Dim CveAlmacenVirtualEntrada As Integer = -1
|
|
|
|
DrAlmO = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenOrigen.SelectedValue.ToEntero).FiltroPrimero("")
|
|
DrAlmD = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenDestino.SelectedValue.ToEntero).FiltroPrimero("")
|
|
|
|
If DrAlmO IsNot Nothing AndAlso DrAlmD IsNot Nothing Then
|
|
CveSucursalOrigen = DrAlmO("CveSubProyecto").ToString.ToEntero
|
|
TipoAlmacenOrigen = DrAlmO("CveTipoAlmacen").ToString.ToEntero
|
|
CveSubProyectoOrigen = DrAlmO("CveSubProyecto").ToString.ToEntero
|
|
IdCtaContableOrigen = DrAlmO("IdCtaContable").ToString.ToEntero
|
|
CveAlmacenVirtualSalida = DrAlmO("CveAlmacenVirtual").ToString.ToEntero
|
|
|
|
|
|
CveSucursalDestino = DrAlmD("CveSubProyecto").ToString.ToEntero
|
|
TipoAlmacenDestino = DrAlmD("CveTipoAlmacen").ToString.ToEntero
|
|
CveSubProyectoDestino = DrAlmD("CveSubProyecto").ToString.ToEntero
|
|
IdCtaContableDestino = DrAlmD("IdCtaContable").ToString.ToEntero
|
|
CveAlmacenVirtualEntrada = DrAlmD("CveAlmacenVirtual").ToString.ToEntero
|
|
|
|
End If
|
|
|
|
Dim RealizarMovimientoVirtual As Boolean = False
|
|
|
|
If UsuarioActual.Empresa.Funcionalidad(573) = "1" AndAlso TipoAlmacenOrigen.Contiene(1, 27) Then
|
|
RealizarMovimientoVirtual = True
|
|
End If
|
|
|
|
'VALIDA ALMACEN DISTINTA SUCURSAL DEBE SER TRANSITORIO
|
|
If Not UsuarioActual.CveEmpresa.Contiene(7, 140) Then '[IPP] EMPRESA VIGILANCIA NO OCUPA TRANSITORIOS - TIENEN MIL SUCURSALES Xd
|
|
If Not ChkTransitorio.Checked Then
|
|
|
|
If Not TipoAlmacenDestino.Contiene(21, 26) Then 'NO SE VALIDA CUANDO EL TIPO DE ALMACEN DESTINO ES DE DEVOLUCION
|
|
If CveSucursalOrigen <> CveSucursalDestino Then
|
|
Alert("Por ser un traspaso entre sucursales es necesario indicar que el traspaso es transitorio.", TipoMensaje.MsgAdvertencia)
|
|
RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'');", "SonidoError")
|
|
ChkTransitorio.Checked = True
|
|
If ChkTransitorio.Checked Then RegistraScript("$('#DivTransitorio').show(200);", "MuestraDivTransitorio") : DivTransitorio2.Visible = True
|
|
Exit Sub
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
'VALIDA QUE TENGA MOVTOS
|
|
If Not GvDatos.Rows.Count > 0 Then
|
|
Alert("No hay movimientos para el traspaso", TipoMensaje.MsgAdvertencia)
|
|
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
|
|
Exit Sub
|
|
End If
|
|
|
|
'VALIDA ESTATUS EXISTENCIA
|
|
For Each dr As DataRow In DtMovimientos.Rows
|
|
If dr("EstatusExistencia").ToString = "-1" Then
|
|
Alert("Tiene que rectificar los movimientos con error.", TipoMensaje.MsgError)
|
|
If ChkTransitorio.Checked Then RegistraScript("$('#DivTransitorio').show(200);") : DivTransitorio2.Visible = True
|
|
Exit Sub
|
|
End If
|
|
Next
|
|
|
|
Dim ObjInventario As New ClsInventarios
|
|
|
|
'VALIDA LA EXISTENCIA DEL ALMACEN DE ORIGEN
|
|
Dim ErrorExistencia = False
|
|
Dim Serie, Lote As String
|
|
Dim CveSeccionAlmacen As Integer
|
|
Dim FechaCaducidad As Date
|
|
|
|
Dim TextoExistencia As StringBuilder = New StringBuilder
|
|
Dim Existencia As Double
|
|
Dim CantidadenGrid As Decimal
|
|
TextoExistencia.Append("Los siguiente productos se ajustaron por falta de existencia:<br/>")
|
|
If Not CargadoDeMov Then
|
|
|
|
For Each dr As DataRow In DtMovimientos.Rows
|
|
CveSeccionAlmacen = If(dr("CveSeccionAlmacen").ToString = "", -1, dr("CveSeccionAlmacen").ToString.ToEntero)
|
|
Serie = If(dr("Serie").ToString = "", "-1", dr("Serie").ToString)
|
|
Lote = If(dr("Lote").ToString = "", "-1", dr("Lote").ToString)
|
|
FechaCaducidad = If(dr("FechaCaducidad").ToString = "", MinFecha, dr("FechaCaducidad").ToString.ToDate)
|
|
|
|
Dim ExistenciaEspecificada As Decimal = 0
|
|
CantidadenGrid = DtMovimientos.SUMD("Cantidad", $"CvePS = {dr("CvePS").ToString.ToEntero} AND CveUM = {dr("CveUM").ToString.ToEntero} {If(dr("Serie").ToString <> "-1", $" AND Serie = '{dr("Serie").ToString}'", "")}")
|
|
Existencia = ObjInventario.GetExistenciasPS(dr("CvePS").ToString.ToEntero, dr("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDate.ToString("yyyy/MM/dd 23:59"), CveSeccionAlmacen:=CveSeccionAlmacen, Serie:=Serie, Lote:=Lote, FechaCaducidad:=FechaCaducidad, PendientePorSurtir:=1)
|
|
Existencia -= CantidadenGrid
|
|
'DtMovimientos.SUM("Cantidad", String.Format("CvePS = {0}", dr("CvePS").ToString.ToEntero))
|
|
'la primera vez valida, que la existencia global, cumpla, considerando lo pendiente por surtir
|
|
'las segunda consulta, que tenga existencia, ya con los parametros especificos
|
|
If FechaCaducidad > MinFecha OrElse (Lote <> "-1" AndAlso Lote <> "") Then
|
|
ExistenciaEspecificada = ObjInventario.GetExistenciasPS(dr("CvePS").ToString.ToEntero, dr("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDate.ToString("yyyy/MM/dd 23:59"), CveSeccionAlmacen:=CveSeccionAlmacen, Serie:=Serie, Lote:=Lote, FechaCaducidad:=FechaCaducidad, PendientePorSurtir:=-1)
|
|
Existencia = ExistenciaEspecificada - CantidadenGrid
|
|
End If
|
|
|
|
If Existencia < 0 Then
|
|
ErrorExistencia = True
|
|
dr("EstatusExistencia") = "-1"
|
|
dr("Cantidad") = Existencia
|
|
'If Existencia <= 0 Then
|
|
TextoExistencia.AppendFormat("- #{0} {1}<br/>", dr("No").ToString, dr("PS").ToString)
|
|
'Else
|
|
'Alert(String.Format("Solo hay en existencia: {0}", Existencia), TipoMensaje.MsgError)
|
|
'End If
|
|
End If
|
|
Next
|
|
Else
|
|
For Each gvr As GridViewRow In GvDatos.Rows
|
|
CveSeccionAlmacen = If(gvr.DataKey("CveSeccionAlmacen") = "", -1, gvr.DataKey("CveSeccionAlmacen").ToEntero)
|
|
Serie = If(gvr.DataKey("Serie") = "", "-1", gvr.DataKey("Serie"))
|
|
Lote = If(gvr.DataKey("Lote") = "", "-1", gvr.DataKey("Lote"))
|
|
FechaCaducidad = If(gvr.DataKey("FechaCaducidad") = "", MinFecha, gvr.DataKey("FechaCaducidad").ToDate)
|
|
|
|
Existencia = ObjInventario.GetExistenciasPS(gvr.DataKey("CvePS").ToString.ToEntero, gvr.DataKey("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDate.ToString("yyyy/MM/dd 23:59"), CveSeccionAlmacen:=CveSeccionAlmacen, Serie:=Serie, Lote:=Lote, FechaCaducidad:=FechaCaducidad, PendientePorSurtir:=1)
|
|
Existencia -= gvr.FCTextBox("TxtCantidad2").Text.ToEntero
|
|
If Existencia < 0 Then
|
|
ErrorExistencia = True
|
|
|
|
gvr.FCTextBox("TxtCantidad2").Text = (Existencia + gvr.FCTextBox("TxtCantidad2").Text.ToEntero).ToString
|
|
TextoExistencia.AppendFormat("- #{0} {1}<br/>", gvr.DataKey("No").ToString, gvr.DataKey("PS").ToString)
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
If ErrorExistencia Then
|
|
Alert(TextoExistencia.ToString, TipoMensaje.MsgError)
|
|
RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')")
|
|
ObjInventario.Dispose()
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim TotalCantidad As Decimal = DtMovimientos.SUMD("Cantidad")
|
|
|
|
''[IPP-1Noviembre2018] SE COMENTA PORQUE NO TIENE NI PIES NI CABEZA. LE FALTA DESARROLLO
|
|
'If (TipoAlmacenOrigen = 14 Or TipoAlmacenDestino = 14) And TipoAlmacenOrigen <> TipoAlmacenDestino Then
|
|
' ObjInventario.Dispose()
|
|
' 'es consumo interno
|
|
' ConsumoInterno(TipoAlmacenOrigen, TipoAlmacenDestino)
|
|
'End If
|
|
|
|
'Inicia la transacción
|
|
Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL())
|
|
Dim CveMovimientoSalida = 0
|
|
Dim CveMovimientoEntrada = 0
|
|
Dim IDPoliza As Integer = 0
|
|
Dim FolioSalida = 0
|
|
Dim CveMovimientoVirtualEntrada As Integer = 0
|
|
Dim CveMovimientoVirtualSalida As Integer = 0
|
|
Dim FolioVirtualEntrada As Integer = 0
|
|
Dim FolioVirtualSalida As Integer = 0
|
|
Dim FolioEntrada = 0
|
|
Dim AlmacenEntrada = -1
|
|
Dim Fecha As Date = TxtFecha.Text.ToDate
|
|
Dim ErrorMovInv As Boolean = False
|
|
Dim ErrorAC As Boolean = False
|
|
Dim TextoError = ""
|
|
Dim TipoMovimientoSalida As Integer = 26 'If(ChkTransitorio.Checked, 26, If(TipoAlmacenOrigen = 24, 26, 26))
|
|
|
|
'AGREGAMOS LA SALIDA DEL ALMACEN ORIGEN
|
|
CveMovimientoSalida = ObjInventario.AddMovimiento(DdlAlmacenOrigen.SelectedValue.ToEntero, TipoMovimientoSalida, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1,
|
|
Observaciones:=TxtObservaciones.Text.Trim, Recibio:=If(ChkTransitorio.Checked, TxtResponsable.Text.Trim, "-1"),
|
|
CveAlmacenDestino:=DdlAlmacenDestino.SelectedValue.ToEntero, GastoIndirecto:=If(ChkTransitorio.Checked And TxtGastoIndirecto.Text.ToDouble > 0, TxtGastoIndirecto.Text, "-1").ToDouble,
|
|
CveChofer:=If(ChkTransitorio.Checked, DdlChofer.SelectedValue.ToEntero, -1), Placa:=If(ChkTransitorio.Checked, TxtPlaca.Text.Trim, "-1"), FechaEntrega:=If(ChkTransitorio.Checked, TxtFechaEntrega.Text.Trim.ToDateTime.ToString("dd/MM/yyyy"), "-1"), EspecifUnidad:=If(ChkTransitorio.Checked, TxtEspecifUnidad.Text.Trim, "-1"),
|
|
ResponsableCarga:=If(ChkTransitorio.Checked, TxtResponsableCarga.Text.Trim, "-1"), ResponsableRecibio:=If(ChkTransitorio.Checked, TxtResponsableRecibio.Text.Trim, "-1"), Identificacion:=If(ChkTransitorio.Checked, TxtIdentificacion.Text.Trim, "-1"), Domicilio:=If(ChkTransitorio.Checked, TxtDomicilio.Text.Trim, "-1"),
|
|
Telefono:=If(ChkTransitorio.Checked, TxtTelefono.Text.Trim, "-1"), Ciudad:=If(ChkTransitorio.Checked, TxtCiudad.Text.Trim, "-1"), Licencia:=If(ChkTransitorio.Checked, TxtLicencia.Text.Trim, "-1"), Modulo:="TA/G2")
|
|
FolioSalida = ObjInventario.Folio
|
|
Folio = ObjInventario.Folio
|
|
If CveMovimientoSalida <= 0 Then
|
|
TextoError = "Ocurrió un error al generar el movimiento de salida"
|
|
ErrorMovInv = True
|
|
Else
|
|
Dim Cont As Integer = 0
|
|
For Each Dr As DataRow In DtMovimientos.Rows
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, 0, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, Observaciones:=Dr("Observaciones").ToString) Then
|
|
ErrorMovInv = True
|
|
TextoError = "Ocurrió un error al guardar los movimientos de salida"
|
|
Exit For
|
|
End If
|
|
Cont += 1
|
|
Next
|
|
End If
|
|
|
|
|
|
'VIRTUAL SALIDA
|
|
If RealizarMovimientoVirtual AndAlso CveAlmacenVirtualSalida > 0 Then
|
|
|
|
'If TipoAlmacenOrigen = 27 Then
|
|
' CveAlmacenVirtual = GlobalDTAlmacen(UsuarioActual.CveEmpresa, 25).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto={CveSubProyectoOrigen}").ToEntero()
|
|
'Else
|
|
' CveAlmacenVirtual = GlobalDTAlmacen(UsuarioActual.CveEmpresa, 24).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto={CveSubProyectoOrigen}").ToEntero()
|
|
'End If
|
|
|
|
Dim dtvirtual As DataTable = Nothing
|
|
|
|
If ObjInventario.GetMovimientosDetalleVirtual(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then
|
|
|
|
dtvirtual = ObjInventario.DtResultados
|
|
|
|
If dtvirtual.Rows.Count > 0 Then
|
|
CveMovimientoVirtualSalida = ObjInventario.AddMovimiento(CveAlmacenVirtualSalida, 37, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Modulo:="TA/V", CveMovimientoRelacionado:=CveMovimientoSalida)
|
|
FolioVirtualSalida = ObjInventario.Folio
|
|
|
|
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("Cargo").ToString().ToDecimal()
|
|
Dim CveUM As Integer = RowVirtual("CveUM").ToString().ToEntero()
|
|
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtualSalida, CantidadUsado, CveUM, CvePS, PU, -1, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
|
|
ErrorMovInv = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
Else
|
|
ErrorMovInv = True
|
|
End If
|
|
End If
|
|
|
|
AlmacenEntrada = If(ChkTransitorio.Checked, DdlAlmacenTransitorio.SelectedValue.ToEntero, DdlAlmacenDestino.SelectedValue.ToEntero)
|
|
|
|
Dim TipoMovimientoEntrada As Integer = 27
|
|
If Not ChkTransitorio.Checked Then TipoMovimientoEntrada = 27 Else TipoMovimientoEntrada = 9
|
|
|
|
CveMovimientoEntrada = ObjInventario.AddMovimiento(AlmacenEntrada, TipoMovimientoEntrada, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, -1, -1,
|
|
Observaciones:=TxtObservaciones.Text.Trim, Recibio:=If(ChkTransitorio.Checked, TxtResponsable.Text.Trim, "-1"),
|
|
CveAlmacenDestino:=If(ChkTransitorio.Checked, DdlAlmacenDestino.SelectedValue.ToEntero, -1), CveMovimientoRelacionado:=CveMovimientoSalida, Modulo:="TA/G3")
|
|
FolioEntrada = ObjInventario.Folio
|
|
If CveMovimientoEntrada <= 0 Then
|
|
TextoError = "Ocurrió un error al generar el movimiento de entrada"
|
|
ErrorMovInv = True
|
|
Else
|
|
If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then
|
|
Dim Cont As Integer = 0
|
|
For Each Dr As DataRow In ObjInventario.DtResultados.Rows
|
|
Dim CostoEntrada As Decimal = If(TipoAlmacenDestino = 26, 0, Dr("PU").ToString.ToDecimal())
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, CostoEntrada, CveAF:=Dr("CveAF").ToString.ToEntero, CveSeccionAlmacen:=DdlSeccionAlmacenDestino.SelectedValue.ToEntero, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString.ToEntero, Observaciones:=Dr("Observaciones").ToString) Then
|
|
ErrorMovInv = True
|
|
TextoError = "Ocurrió un error al guardar los movimientos de entrada"
|
|
Exit For
|
|
End If
|
|
Cont += 1
|
|
Next
|
|
End If
|
|
End If
|
|
|
|
'AGREGAMOS LA ENTRADA
|
|
If Not ChkTransitorio.Checked Then 'SI NO ES TRANSITORIO SE HACE LA RECEPCION DE INMEDIATO
|
|
If Not ErrorMovInv Then
|
|
|
|
'VIRTUAL ENTRADA
|
|
If RealizarMovimientoVirtual Then
|
|
|
|
Dim dtvirtual As DataTable = Nothing
|
|
|
|
If ObjInventario.GetMovimientosDetalleVirtual(CveMovimientoEntrada, UsuarioActual.CveEmpresa) Then
|
|
dtvirtual = ObjInventario.DtResultados
|
|
If dtvirtual.Rows.Count > 0 Then
|
|
''hay que verificar que se se tengan movimeintos por registrar
|
|
CveMovimientoVirtualEntrada = ObjInventario.AddMovimiento(CveAlmacenVirtualEntrada, 36, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, CveMovimientoRelacionado:=CveMovimientoEntrada, Modulo:="TA/S3")
|
|
FolioVirtualEntrada = ObjInventario.Folio
|
|
|
|
|
|
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("Cargo").ToString().ToDecimal()
|
|
Dim CveUM As Integer = RowVirtual("CveUM").ToString().ToEntero()
|
|
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtualEntrada, CantidadUsado, CveUM, CvePS, PU, -1, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
|
|
ErrorMovInv = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
Else
|
|
ErrorMovInv = True
|
|
End If
|
|
End If
|
|
Dim Concepto As String = TxtObservaciones.Text
|
|
If Concepto = "" Then Concepto = "Traspaso"
|
|
'AGREGAMOS PREPOLIZAS TRASPASO DIRECTO:
|
|
If Not ErrorMovInv Then
|
|
Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inventario/TraspasoAlmacen", 53, 0, 0, 1, Fecha, Concepto, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
|
|
If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then
|
|
|
|
Dim resultado As DataTable = ObjInventario.DtResultados
|
|
Dim importe As Decimal = resultado.SUMD("Total").RoundAD
|
|
'Dim IdCtaContableSalida As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", String.Format("CveAlmacen = {0}", DdlAlmacenOrigen.SelectedValue.ToEntero)).ToEntero
|
|
'Dim IdCtaContableEntrada As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", String.Format("CveAlmacen = {0}", DdlAlmacenDestino.SelectedValue.ToEntero)).ToEntero
|
|
Dim Contabilizable As Boolean = True
|
|
|
|
If IdCtaContableOrigen = IdCtaContableDestino And TipoAlmacenDestino <> 26 Then Contabilizable = False
|
|
|
|
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importe, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContableOrigen, -1, CveMovimientoAlmacen:=CveMovimientoSalida, Contabilizable:=Contabilizable, ImporteMX:=importe) Then
|
|
ErrorMovInv = True
|
|
End If
|
|
|
|
'si el tipo de almacen de entrada es Almacen sin costo, se registra al costo, la salida.
|
|
If TipoAlmacenOrigen <> 26 AndAlso TipoAlmacenDestino = 26 Then
|
|
|
|
Dim tCveClasificacion As Integer = DtMovimientos.MAX("CveClasificacion").ToEntero
|
|
Dim dr As DataRow = GlobalDTClasificaciones(UsuarioActual.CveEmpresa, CveClasificacion:=tCveClasificacion).FiltroPrimero("")
|
|
Dim IdCuentaCostos As Integer = -1
|
|
If dr IsNot Nothing Then
|
|
IdCuentaCostos = dr("IdCuentaCostos").ToString.ToEntero
|
|
End If
|
|
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importe, TxtObservaciones.Text, 69, TxtObservaciones.Text, Fecha, IdCuentaCostos, -1, CveClasificacion:=tCveClasificacion, CveSubProyecto:=CveSubProyectoOrigen, CveMovimientoAlmacen:=CveMovimientoSalida, Contabilizable:=Contabilizable, ImporteMX:=importe) Then
|
|
ErrorMovInv = True
|
|
End If
|
|
Contabilizable = False
|
|
importe = 0
|
|
End If
|
|
|
|
If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importe, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContableDestino, -1, CveMovimientoAlmacen:=CveMovimientoEntrada, Contabilizable:=Contabilizable, ImporteMX:=importe) Then
|
|
ErrorMovInv = True
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
Else
|
|
If Not ErrorMovInv Then
|
|
Dim Concepto As String = TxtObservaciones.Text
|
|
If Concepto = "" Then Concepto = "Traspaso"
|
|
Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inventario/TraspasoAlmacen2", 53, 0, 0, 1, Fecha, Concepto, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
|
|
If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then
|
|
|
|
Dim resultado As DataTable = ObjInventario.DtResultados
|
|
Dim importe As Decimal = resultado.SUMD("Total").RoundAD
|
|
Dim IdCtaContable As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", String.Format("CveAlmacen = {0}", DdlAlmacenTransitorio.SelectedValue.ToEntero)).ToEntero
|
|
|
|
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importe, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimientoSalida, ImporteMX:=importe, Contabilizable:=False) Then
|
|
ErrorMovInv = True
|
|
End If
|
|
|
|
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importe, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimientoEntrada, ImporteMX:=importe, Contabilizable:=False) Then
|
|
ErrorMovInv = True
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
|
|
|
|
''[IPP-1Noviembre2018] SE COMENTA PORQUE NO TIENE NI PIES NI CABEZA. LE FALTA DESARROLLO
|
|
''CONSUMO INTERNO
|
|
'If Not ErrorMovInv Then
|
|
' If (TipoAlmacenOrigen = 14 Or TipoAlmacenDestino = 14) And TipoAlmacenOrigen <> TipoAlmacenDestino Then
|
|
' ConsumoInterno(TipoAlmacenOrigen, TipoAlmacenDestino)
|
|
' End If
|
|
'End If
|
|
|
|
If Not ErrorMovInv Then
|
|
DtTraslado = DtMovimientos.Copy
|
|
ObjInventario.Commit()
|
|
MensajeAlert = New StringBuilder
|
|
|
|
MensajeAlert.Append("Se realizó con éxito el traspaso.")
|
|
|
|
MensajeAlert.AppendFormat("<br/> Folio de Salida: <b><a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={1}"" target=""_blank"">{0}</a></b>", FolioSalida, CveMovimientoSalida)
|
|
MensajeAlert.AppendFormat("<br/><a target='_blank' href='/Compras/PopUpVerFactura.aspx?P={0}'>Imprimir Reporte</a>", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoSalida)))
|
|
If CveMovimientoVirtualSalida > 0 Then MensajeAlert.AppendFormat("<br/>Folio Virtual: <b><a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={1}"" target=""_blank"">{2}</a></b> <br/><a target='_blank' href='/Compras/PopUpVerFactura.aspx?P={0}'>Imprimir Salida Virtual</a>", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoVirtualSalida)), CveMovimientoVirtualSalida, FolioVirtualSalida)
|
|
|
|
If Not ChkTransitorio.Checked Then
|
|
MensajeAlert.AppendFormat("<br/><br/> Folio de Entrada: <b><a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={1}"" target=""_blank"">{0}</a></b>", FolioEntrada, CveMovimientoEntrada)
|
|
MensajeAlert.AppendFormat("<br/><a target='_blank' href='/Compras/PopUpVerFactura.aspx?P={0}'>Imprimir Reporte</a>", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoEntrada)))
|
|
If CveMovimientoVirtualEntrada > 0 Then MensajeAlert.AppendFormat("<br/>Folio Virtual: <b><a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={1}"" target=""_blank"">{2}</a></b> <br/><a target='_blank' href='/Compras/PopUpVerFactura.aspx?P={0}'>Imprimir Entrada Virtual</a>", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoVirtualEntrada)), CveMovimientoVirtualEntrada, FolioVirtualEntrada)
|
|
|
|
End If
|
|
|
|
'DdlClasificacion.SelectedValue = "-1"
|
|
'DdlClasificacion_SelectedIndexChanged(DdlClasificacion, EventArgs.Empty)
|
|
|
|
If ChkEmitirTimbrado.Checked AndAlso ChkTransitorio.Checked Then CveMovimientoTimbrado = CveMovimientoSalida : Timbrar()
|
|
|
|
Alert(MensajeAlert.ToString, TipoMensaje.MsgInformacion, "")
|
|
|
|
|
|
If ChkTransitorio.Checked AndAlso UsuarioActual.CveEmpresa.Contiene(72, 80) Then
|
|
RegistraScript(String.Format("AbrirVentana('/General/PopUpPaqueteriasGuias.aspx?CveMovimiento={0}',800,620);", CveMovimientoSalida))
|
|
End If
|
|
|
|
If UsuarioActual.CveEmpresa.Contiene(72, 80) Then
|
|
Dim Correo As String = "jorgegonzalez@compuproveedores.com"
|
|
If GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveTipoAlmacen", $"CveAlmacen = {DdlAlmacenDestino.SelectedValue.ToEntero}").ToEntero = 16 Then
|
|
MandaCorreo(CveMovimientoSalida, Correo)
|
|
End If
|
|
End If
|
|
|
|
LimpiaMovimiento()
|
|
|
|
Else
|
|
ObjInventario.RollBack()
|
|
Alert(TextoError, TipoMensaje.MsgError)
|
|
RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')")
|
|
End If
|
|
|
|
' If ObjContaAC IsNot Nothing Then ObjContaAC.Dispose()
|
|
|
|
'SI OCURRIO UN ERROR EN LA EXISTENCIA RECARGAMOS EL GRID PARA COLOREAR LOS DETALLES CON ERROR
|
|
If ErrorExistencia Then
|
|
CargaGvDatos()
|
|
End If
|
|
ObjConta.Dispose()
|
|
ObjInventario.Dispose()
|
|
End Sub
|
|
|
|
Function ConsumoInterno(TipoAlmacenOrigen As Integer, TipoAlmacenDestino As Integer) As Boolean
|
|
Dim Retorno As Boolean = False
|
|
Dim ErrorMovInv As Boolean = False
|
|
Dim TextoError As String = ""
|
|
Dim Fecha As Date = TxtFecha.Text.ToDate
|
|
|
|
Dim ObjInventario As New ClsInventarios
|
|
Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL())
|
|
Dim CveMovimiento As Integer = 0
|
|
Dim TipoMovto = If(TipoAlmacenOrigen = 14, -1, 1)
|
|
Dim CveConceptoInventario As Integer = 8
|
|
|
|
|
|
Dim CveAlmacenCI = If(TipoAlmacenOrigen = 14, DdlAlmacenOrigen.SelectedValue.ToEntero, DdlAlmacenDestino.SelectedValue.ToEntero)
|
|
Dim DtCostos As DataTable = Nothing
|
|
Dim ValorInventario As Decimal = 0
|
|
|
|
'AGREGAMOS LA SALIDA DEL ALMACEN ORIGEN
|
|
CveMovimiento = ObjInventario.AddMovimiento(DdlAlmacenOrigen.SelectedValue.ToEntero, CveConceptoInventario, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1,
|
|
Observaciones:=TxtObservaciones.Text.Trim, Recibio:=If(ChkTransitorio.Checked, TxtResponsable.Text.Trim, ""),
|
|
GastoIndirecto:=If(ChkTransitorio.Checked And TxtGastoIndirecto.Text.ToDouble > 0, TxtGastoIndirecto.Text, "-1").ToDouble, Modulo:="TA/G4")
|
|
Dim FolioMov As Integer = ObjInventario.Folio
|
|
|
|
If CveMovimiento <= 0 Then
|
|
TextoError = "No se pudo generar el movimiento de salida correctamente"
|
|
ErrorMovInv = True
|
|
Else
|
|
|
|
For Each Dr As DataRow In DtMovimientos.Rows
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, 0, Dr("CveAF").ToString.ToEntero, -1, Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate) Then
|
|
ErrorMovInv = True
|
|
TextoError = "Ocurrió un error al guardar los movimientos de salida"
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then
|
|
DtCostos = ObjInventario.DtResultados
|
|
Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"})
|
|
Dim IdCtaContable As Integer = 0
|
|
Dim CveCuenta As Integer = 0
|
|
|
|
If tmpCostos.Rows.Count > 0 Then
|
|
Dim Concepto As String = $"Consumo Interno: {ObjInventario.Folio} - {TxtObservaciones.Text}"
|
|
Dim CvePrePoliza = ObjConta.AddPrePolizas("Inv/ConsumoInterno", 53, DtCostos.SUM("Total") * TipoMovto, DtCostos.SUM("Total") * TipoMovto, 1, TxtFecha.Text.ToDate, $"Consumo Interno: {TxtObservaciones.Text}", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
|
|
|
|
For Each RowInv As DataRow In tmpCostos.Rows
|
|
ValorInventario = DtCostos.SUM("Total", $"CveClasificacion = {RowInv("CveClasificacion")}").ToString.ToDecimal
|
|
IdCtaContable = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaGasto", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero
|
|
CveCuenta = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaGastoSIG", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero
|
|
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ValorInventario * TipoMovto, Concepto, 181, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveClasificacion:=RowInv("CveClasificacion").ToString.ToEntero, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=ValorInventario * TipoMovto, CveCuenta:=CveCuenta) Then
|
|
ErrorMovInv = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
IdCtaContable = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", $"CveAlmacen={CveAlmacenCI}").ToEntero
|
|
|
|
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DtCostos.SUM("Total").ToDecimal * TipoMovto, Concepto, 68, Concepto, TxtFecha.Text.ToDate, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimiento, ImporteMX:=DtCostos.SUM("Total").ToDecimal * TipoMovto) Then
|
|
ErrorMovInv = True
|
|
End If
|
|
|
|
End If
|
|
End If
|
|
|
|
If Not ErrorMovInv Then
|
|
|
|
ObjInventario.Commit()
|
|
Dim Mensaje As StringBuilder = New StringBuilder
|
|
|
|
Mensaje.Append("Se realizó el consumo interno.")
|
|
|
|
Mensaje.AppendFormat("<br/> Folio: <b><a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={1}"" target=""_blank"">{0}</a></b>", FolioMov, CveMovimiento)
|
|
|
|
Alert(Mensaje.ToString, TipoMensaje.MsgInformacion)
|
|
Mensaje.Clear()
|
|
|
|
LimpiaMovimiento()
|
|
|
|
Else
|
|
ObjInventario.RollBack()
|
|
Alert(TextoError, TipoMensaje.MsgError)
|
|
RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')")
|
|
End If
|
|
|
|
|
|
|
|
Return Retorno
|
|
|
|
End Function
|
|
|
|
|
|
#End Region
|
|
|
|
#Region " NUEVO - LIMPIA "
|
|
Protected Sub BtnNuevo_Click(sender As Object, e As EventArgs)
|
|
LimpiaMovimiento()
|
|
End Sub
|
|
Private Sub LimpiaMovimiento()
|
|
CargaAlmacenOrigen()
|
|
TxtResponsable.Text = ""
|
|
TxtFecha.Text = Now.ToShortDateString
|
|
TxtObservaciones.Text = ""
|
|
txtCantidad.Text = ""
|
|
SiguienteFolio(If(ChkTransitorio.Checked, 9, 8))
|
|
ChkTransitorio.Checked = False
|
|
ChkTransitorio.Enabled = True
|
|
TxtGastoIndirecto.Text = ""
|
|
TxtPlaca.Text = ""
|
|
TxtEspecifUnidad.Text = ""
|
|
TxtResponsableCarga.Text = ""
|
|
TxtResponsableRecibio.Text = ""
|
|
TxtIdentificacion.Text = ""
|
|
TxtDomicilio.Text = ""
|
|
TxtTelefono.Text = ""
|
|
TxtCiudad.Text = ""
|
|
TxtLicencia.Text = ""
|
|
|
|
DivMov.Visible = False
|
|
CargadoDeMov = False
|
|
|
|
UPDatosAlmacen.Update()
|
|
UpMov.Update()
|
|
|
|
DtMovimientos.Rows.Clear()
|
|
CargaGvDatos()
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region "DDL CLASIFICACION"
|
|
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
|
|
DdlProducto2.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion:=DdlClasificacion.SelectedValue.ToEntero).FiltraParametros("", "PSCodigo")
|
|
DdlProducto2.DataBind()
|
|
DdlProducto2.ddl.Items.Insert(0, New ListItem(" ", "-1"))
|
|
Else
|
|
DdlProducto2.ddlWS.Attributes.Add("data-cveclasificacion", DdlClasificacion.SelectedValue)
|
|
DdlProducto2.SelectedText = ""
|
|
DdlProducto2.SelectedValue = "-1"
|
|
End If
|
|
End Sub
|
|
Protected Sub DdlProducto_ValueChanged(sender As Object, e As EventArgs) Handles DdlProducto2.selectedindexchange
|
|
ElProductoChange()
|
|
End Sub
|
|
Private Sub ElProductoChange()
|
|
TxtnSerie.Visible = False
|
|
TxtnLote.Visible = False
|
|
TxtnFechaCaducidad.Visible = False
|
|
|
|
If DdlProducto2.SelectedValue.ToEntero > 0 Then
|
|
Dim drP As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlProducto2.SelectedValue.ToEntero).FiltroPrimero("", "PS")
|
|
If drP IsNot Nothing Then
|
|
|
|
ThSeccionAlmacen.Visible = CBool(drP("AplicaSeccion"))
|
|
TdSeccionAlmacen.Visible = CBool(drP("AplicaSeccion"))
|
|
DdlSeccionAlmacen.Visible = CBool(drP("AplicaSeccion"))
|
|
'GvDatos.Columns(5).Visible = CBool(drP("AplicaSeccion"))
|
|
|
|
|
|
ThSerie.Visible = CBool(drP("AplicaSerie"))
|
|
TdSerie.Visible = CBool(drP("AplicaSerie"))
|
|
TxtnSerie.Visible = CBool(drP("AplicaSerie"))
|
|
'GvDatos.Columns(6).Visible = CBool(drP("AplicaSerie"))
|
|
|
|
|
|
TxtnLote.Visible = CBool(drP("AplicaLote"))
|
|
ThLote.Visible = CBool(drP("AplicaLote"))
|
|
TdLote.Visible = CBool(drP("AplicaLote"))
|
|
'GvDatos.Columns(7).Visible = CBool(drP("AplicaLote"))
|
|
|
|
|
|
TxtnFechaCaducidad.Visible = CBool(drP("AplicaCaducidad"))
|
|
ThFechaCaducidad.Visible = CBool(drP("AplicaCaducidad"))
|
|
If Not String.IsNullOrWhiteSpace(UsuarioActual.Empresa.Funcionalidad(147)) Then ThFechaCaducidad.InnerText = UsuarioActual.Empresa.Funcionalidad(147)
|
|
'ThFechaCaducidad.InnerText = If(UsuarioActual.Empresa.Funcionalidad(147) = "Fecha Elaboración", "Fecha Elaboración", "Fecha Caducidad")
|
|
TdFechaCaducidad.Visible = CBool(drP("AplicaCaducidad"))
|
|
'GvDatos.Columns(8).Visible = CBool(drP("AplicaCaducidad"))
|
|
|
|
End If
|
|
|
|
End If
|
|
|
|
DdlUnidad.Items.Clear()
|
|
DdlUnidad.DataSource = GlobalDTProductosServiciosEquivalencias(DdlProducto2.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa)
|
|
DdlUnidad.DataBind()
|
|
UpDatos.Update()
|
|
End Sub
|
|
Private Function isWhitFamily() As Boolean
|
|
Return (UsuarioActual.CveEmpresa = 66)
|
|
End Function
|
|
Protected Sub DdlClasificacion_GV(sender As Object, e As System.EventArgs)
|
|
Dim pDdlClasificacion As DropDownList = CType(sender, DropDownList)
|
|
Dim pDdlProducto As DropDownList = CType(pDdlClasificacion.NamingContainer.FindControl("DdlProducto"), DropDownList)
|
|
|
|
If pDdlClasificacion.SelectedValue = "-1" Then
|
|
pDdlProducto.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa)
|
|
pDdlProducto.DataBind()
|
|
Else
|
|
pDdlProducto.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion:=pDdlClasificacion.SelectedValue.ToEntero)
|
|
pDdlProducto.DataBind()
|
|
End If
|
|
|
|
If pDdlClasificacion.SelectedValue = "-1" Then
|
|
pDdlProducto.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa)
|
|
Else
|
|
pDdlProducto.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion:=DdlClasificacion.SelectedValue.ToEntero)
|
|
End If
|
|
pDdlProducto.DataBind()
|
|
pDdlProducto.Items.Insert(0, New ListItem("----", "-1"))
|
|
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region "GV DATOS"
|
|
Private Sub CargaGvDatos()
|
|
EscondeColumnasGVM(DtMovimientos)
|
|
|
|
GvDatos.DataSource = DtMovimientos
|
|
GvDatos.DataBind()
|
|
UpDatos.Update()
|
|
End Sub
|
|
|
|
Private Sub EscondeColumnasGVM(DtTemp As DataTable)
|
|
|
|
GvDatos.Columns(5).Visible = DtTemp.MAX("Serie").ToString <> ""
|
|
GvDatos.Columns(6).Visible = DtTemp.MAX("Lote").ToString <> ""
|
|
GvDatos.Columns(7).HeaderText = If(UsuarioActual.Empresa.Funcionalidad(147) = "Fecha Elaboración", "Fecha Elaboración", "Fecha Caducidad")
|
|
GvDatos.Columns(7).Visible = DtTemp.MAX("FechaCaducidad").ToString.ToDate > MinFecha
|
|
GvDatos.Columns(8).Visible = DtTemp.MAX("CveSeccionAlmacen").ToString.ToEntero > 0
|
|
|
|
''TxtnSerie.Visible = False
|
|
''ThSerie.Visible = False
|
|
''TdSerie.Visible = False
|
|
'GvDatos.Columns(5).Visible = False
|
|
|
|
'TxtnLote.Visible = False
|
|
'ThLote.Visible = False
|
|
'TdLote.Visible = False
|
|
'GvDatos.Columns(6).Visible = False
|
|
|
|
'TxtnFechaCaducidad.Visible = False
|
|
'ThFechaCaducidad.Visible = False
|
|
'TdFechaCaducidad.Visible = False
|
|
'GvDatos.Columns(7).Visible = False
|
|
|
|
|
|
'If DtTemp.MAX("Serie").ToString <> "" Then
|
|
' TxtnSerie.Visible = True
|
|
' ThSerie.Visible = True
|
|
' TdSerie.Visible = True
|
|
' GvDatos.Columns(5).Visible = True
|
|
'End If
|
|
'If DtTemp.MAX("Lote").ToString <> "" Then
|
|
' TxtnLote.Visible = True
|
|
' ThLote.Visible = True
|
|
' TdLote.Visible = True
|
|
' GvDatos.Columns(6).Visible = True
|
|
'End If
|
|
'If DtTemp.MAX("FechaCaducidad").ToString.ToDate > MinFecha Then
|
|
' TxtnFechaCaducidad.Visible = True
|
|
' ThFechaCaducidad.Visible = True
|
|
' TdFechaCaducidad.Visible = True
|
|
' GvDatos.Columns(7).Visible = True
|
|
|
|
'End If
|
|
|
|
End Sub
|
|
|
|
Protected Sub GvDatos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvDatos.RowDataBound
|
|
If e.Row.RowType = DataControlRowType.DataRow Then
|
|
|
|
If e.Row.DBCampo("EstatusExistencia").ToEntero < 0 Then
|
|
e.Row.Cells(0).BackColor = Drawing.Color.Red
|
|
End If
|
|
|
|
If CargadoDeMov Then
|
|
e.Row.FCLiteral("ltlCantidad").Visible = False
|
|
e.Row.FCTextBox("TxtCantidad2").Visible = True
|
|
e.Row.FCTextBox("TxtCantidad2").Attributes.Add("onblur", String.Format("ValidaCantidad(this,{0})", e.Row.DBCampo("Cantidad")))
|
|
End If
|
|
|
|
'If If(e.Row.DBCampo("Serie").ToString = "", "-1", e.Row.DBCampo("Serie").ToString) <> "-1" Then
|
|
' TxtnSerie.Visible = True
|
|
' ThSerie.Visible = True
|
|
' TdSerie.Visible = True
|
|
' GvDatos.Columns(4).Visible = True
|
|
' e.Row.Cells(4).Text = e.Row.DBCampo("Serie").ToString
|
|
'Else
|
|
' e.Row.Cells(4).Text = ""
|
|
'End If
|
|
|
|
'If If(e.Row.DBCampo("Lote").ToString = "", "-1", e.Row.DBCampo("Lote").ToString) <> "-1" Then
|
|
' TxtnLote.Visible = True
|
|
' ThLote.Visible = True
|
|
' TdLote.Visible = True
|
|
' GvDatos.Columns(5).Visible = True
|
|
' e.Row.Cells(5).Text = e.Row.DBCampo("Lote").ToString
|
|
|
|
' TxtnBatch.Visible = True
|
|
' ThBatch.Visible = True
|
|
' TdBatch.Visible = True
|
|
' GvDatos.Columns(6).Visible = True
|
|
|
|
'Else
|
|
' e.Row.Cells(5).Text = ""
|
|
' e.Row.Cells(6).Text = ""
|
|
'End If
|
|
|
|
'If e.Row.RowState = DataControlRowState.Edit Then
|
|
' e.Row.FCDropDownList("DdlUnidad").DataSource = GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa)
|
|
' e.Row.FCDropDownList("DdlUnidad").DataBind()
|
|
' e.Row.FCDropDownList("DdlUnidad").SelectedValue = e.Row.DBCampo("CveUM")
|
|
|
|
' e.Row.FCDropDownList("DdlClasificacion").DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa)
|
|
' e.Row.FCDropDownList("DdlClasificacion").DataBind()
|
|
' e.Row.FCDropDownList("DdlClasificacion").SelectedValue = e.Row.DBCampo("CveClasificacion")
|
|
|
|
' e.Row.FCDropDownList("DdlProducto").DataSource = GlobalDTProductosServicios(UsuarioActual.CveEmpresa)
|
|
' e.Row.FCDropDownList("DdlProducto").DataBind()
|
|
' e.Row.FCDropDownList("DdlProducto").SelectedValue = e.Row.DBCampo("CvePS")
|
|
'End If
|
|
|
|
End If
|
|
End Sub
|
|
Protected Sub GvPS_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvDatos.RowDeleting
|
|
Dim DbRow As DataRow = Nothing
|
|
DbRow = DtMovimientos.Rows(e.RowIndex)
|
|
|
|
DtMovimientos.Rows.Remove(DbRow)
|
|
CargaGvDatos()
|
|
End Sub
|
|
|
|
'Protected Sub GvM_RowEditing(sender As Object, e As GridViewEditEventArgs) Handles GvDatos.RowEditing
|
|
' GvDatos.EditIndex = e.NewEditIndex
|
|
|
|
' CargaGvDatos()
|
|
'End Sub
|
|
'Protected Sub GvM_RowUpdating(sender As Object, e As GridViewUpdateEventArgs) Handles GvDatos.RowUpdating
|
|
' Dim dr = GvDatos.Rows(e.RowIndex)
|
|
|
|
' Dim Cantidad = dr.FCTextBox("TxtCantidad").Text.ToDouble
|
|
' Dim CveUM = dr.FCDropDownList("DdlUnidad").SelectedValue.ToEntero
|
|
' Dim CveClasificacion = dr.FCDropDownList("DdlClasificacion").SelectedValue.ToEntero
|
|
' Dim CvePS = dr.FCDropDownList("DdlProducto").SelectedValue.ToEntero
|
|
' Dim No = dr.DataKey("No").ToEntero
|
|
' Dim Serie As String = dr.FCTextBox("TxtSerie").Text
|
|
|
|
' 'VALIDA EXISTENCIA
|
|
' Dim Valido = True
|
|
' Dim Inv As New ClsInventarios
|
|
' Dim Existencia As Double = Inv.GetExistenciasPS(CvePS, CveUM, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero, -1, TxtFecha.Text.ToDate.ToString("yyyy/MM/dd 23:59"), If(Serie = "", "-1", Serie))
|
|
' Inv.Dispose()
|
|
|
|
' If Existencia - txtCantidad.Text.ToDouble < 0 Then
|
|
' If Existencia <= 0 Then
|
|
' Alert("No hay existencia del producto", TipoMensaje.MsgError)
|
|
' Else
|
|
' Alert(String.Format("Solo hay en existencia: {0}", Existencia), TipoMensaje.MsgError)
|
|
' End If
|
|
' Valido = False
|
|
' End If
|
|
|
|
' If Valido Then
|
|
|
|
' Dim Drs As DataRow() = DtMovimientos.Select(String.Format("No = {0}", No))
|
|
' If Drs.Count = 1 Then
|
|
|
|
' Drs(0)("Cantidad") = Cantidad
|
|
' Drs(0)("CveUM") = CveUM
|
|
' Drs(0)("CveClasificacion") = CveClasificacion
|
|
' Drs(0)("CvePS") = CvePS
|
|
' Drs(0)("EstatusExistencia") = "1"
|
|
' End If
|
|
|
|
|
|
' DtMovimientos.AcceptChanges()
|
|
' GvDatos.EditIndex = -1
|
|
' End If
|
|
' CargaGvDatos()
|
|
|
|
'End Sub
|
|
'Protected Sub GvM_RowCancelingEdit(sender As Object, e As GridViewCancelEditEventArgs) Handles GvDatos.RowCancelingEdit
|
|
' GvDatos.EditIndex = -1
|
|
' CargaGvDatos()
|
|
'End Sub
|
|
|
|
|
|
#End Region
|
|
|
|
#Region " TRANSITORIO - RECEPCION "
|
|
|
|
Protected Sub ChkTransitorio_CheckedChanged(sender As Object, e As EventArgs)
|
|
|
|
Dim TipoAlmacenOrigen = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveTipoAlmacen", $"CveAlmacen = {DdlAlmacenOrigen.SelectedValue.ToEntero}").ToEntero
|
|
Dim TipoAlmacenDestino = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveTipoAlmacen", $"CveAlmacen = {DdlAlmacenDestino.SelectedValue.ToEntero}").ToEntero
|
|
If TipoAlmacenOrigen = 14 Or TipoAlmacenDestino = 14 Then
|
|
ChkTransitorio.Checked = False
|
|
Alert("Un traspaso de consumo interno no puede ser transitorio.", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
|
|
If ChkTransitorio.Checked Then
|
|
'DdlResponsable.SelectedValue = "-1"
|
|
TxtResponsable.Text = ""
|
|
TxtGastoIndirecto.Text = ""
|
|
RegistraScript("$('#DivTransitorio').show(200);$('#DivGastoIndirecto').show(100);$('#DivDocChofer').show(100);")
|
|
DivTransitorio2.Visible = True
|
|
ChkEmitirTimbrado.Checked = LblEmitirTimbrado.Visible
|
|
Else
|
|
RegistraScript("$('#DivTransitorio').hide(500);$('#DivGastoIndirecto').hide(500);$('#DivDocChofer').hide(500);")
|
|
DivTransitorio2.Visible = True
|
|
End If
|
|
CargaAlmacenDestino()
|
|
|
|
SiguienteFolio(If(ChkTransitorio.Checked, 9, 8))
|
|
End Sub
|
|
Protected Sub BtnCargaTransitorios_Click(sender As Object, e As EventArgs)
|
|
CargaRecepcion()
|
|
End Sub
|
|
Private Sub CargaRecepcion()
|
|
|
|
Dim Dtt As DataTable = Nothing
|
|
|
|
FolioBusqueda = If(TxtFolioRecepcion.Text = "", -1, TxtFolioRecepcion.Text.ToEntero)
|
|
|
|
Dim ObjInventarios As New ClsInventarios
|
|
If ObjInventarios.GetMovimientosTransitorios(DdlAlmacenRecepcion.SelectedValue.ToEntero, -1, DdlAlmacenTransitorioRecepcion.SelectedValue.ToEntero, -1, FolioBusqueda, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario) Then
|
|
Dtt = ObjInventarios.DtResultados.FiltraParametros(String.Format("CveTipoAlmacenDestino <> 4"))
|
|
Else
|
|
Alert("Ocurrió un error al consultar los movimientos transitorios. Por favor vuelva a intentar.", TipoMensaje.MsgAdvertencia)
|
|
Dtt = Nothing
|
|
End If
|
|
ObjInventarios.Dispose()
|
|
|
|
If Dtt IsNot Nothing Then
|
|
|
|
If TxtFolioRecepcion.Text.Trim <> "" Then
|
|
CveMovimientoSalida = Dtt.FiltroPrimeroValor("CveMovimiento", "").ToEntero
|
|
|
|
End If
|
|
CveAlmacenDestino = DdlAlmacenRecepcion.SelectedValue.ToEntero
|
|
CveAlmacenTransitorio = DdlAlmacenTransitorioRecepcion.SelectedValue.ToEntero
|
|
'CveUsuarioResponsable = DdlResponsableRecepcion.SelectedValue.ToEntero
|
|
|
|
GvDatosRecepcion.DataSource = Dtt
|
|
GvDatosRecepcion.DataBind()
|
|
|
|
GvDatosRecepcion.Columns(6).Visible = Dtt.MAX("Serie") <> ""
|
|
GvDatosRecepcion.Columns(7).Visible = Dtt.MAX("Lote") <> ""
|
|
GvDatosRecepcion.Columns(8).Visible = Dtt.MAX("FechaCaducidad").ToDate > MinFecha
|
|
GvDatosRecepcion.Columns(9).Visible = Dtt.MAX("CveSeccionAlmacen").ToEntero > 0
|
|
'Dt.Dispose()
|
|
End If
|
|
|
|
If TxtFolioRecepcion.Text = "" Then
|
|
BtnRecibir.Visible = False
|
|
BtnCancelarTraspaso.Visible = False
|
|
Else
|
|
BtnRecibir.Visible = True
|
|
If UsuarioActual.TienePermisoProceso(290) Then
|
|
BtnCancelarTraspaso.Visible = True
|
|
End If
|
|
End If
|
|
|
|
|
|
If UsuarioActual.Empresa.Funcionalidad(132) = "1" Then
|
|
DivCodigoSeriePSRecepcion.Visible = True
|
|
Else
|
|
DivCodigoSeriePSRecepcion.Visible = False
|
|
End If
|
|
|
|
|
|
UpDatosRecepcion.Update()
|
|
UPDivCodigoSeriePSRecepcion.Update()
|
|
End Sub
|
|
|
|
Protected Sub GvDatosRecepcion_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvDatosRecepcion.RowDataBound
|
|
If e.Row.RowType = DataControlRowType.DataRow Then
|
|
|
|
e.Row.FCTextBox("TxtCantidad").Visible = True
|
|
|
|
If TxtFolioRecepcion.Text = "" Then
|
|
e.Row.FCCheckBox("Chk").Visible = False
|
|
e.Row.FCTextBox("TxtCantidad").Enabled = False
|
|
End If
|
|
|
|
'Cuando es titulo
|
|
If e.Row.DBCampo("PS").ToString.Trim = "" Then
|
|
e.Row.CssClass = "Totales"
|
|
|
|
e.Row.FCCheckBox("Chk").Visible = False
|
|
e.Row.FCTextBox("TxtCantidad").Visible = False
|
|
|
|
e.Row.Cells(2).Text = String.Format("Folio: <a class=""texto"" style=""color:white;"" target='_blank' href='/Inventarios/EntradasSalidas.aspx?CveMovimiento={1}'>{0}</a> ", e.Row.DBCampo("FolioSalida"), e.Row.DBCampo("CveMovimientoSalida"))
|
|
e.Row.Cells(3).Text = String.Format("{0}", e.Row.DBCampo("FechaMovto").ToString.ToDate.ToShortDateString)
|
|
e.Row.Cells(5).Text = String.Format("Almacen Origen: {0} Almacen Destino: {1} Responsable: {2}", e.Row.DBCampo("Almacen"), e.Row.DBCampo("AlmacenDestino"), e.Row.DBCampo("Recibio"))
|
|
|
|
Else
|
|
e.Row.FCTextBox("TxtCantidad").Attributes.Add("onkeyup", String.Format("ValidaCantidad(this,{0});", e.Row.DBCampo("Cantidad")))
|
|
If CBool(e.Row.DBCampo("AplicaSeccion")) AndAlso DdlAlmacenRecepcion.SelectedValue.ToEntero > 0 Then
|
|
|
|
CargaSeccionesAlmacen(e.Row.FCDropDownList("DdlSeccionAlmacen"), DdlAlmacenRecepcion.SelectedValue.ToEntero, e.Row.DBCampo("CvePS").ToEntero, UsuarioActual.CveEmpresa)
|
|
'Dim dtt As DataTable = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, DdlAlmacenRecepcion.SelectedValue.ToEntero, e.Row.DBCampo("CvePS").ToEntero)
|
|
'e.Row.FCDropDownList("DdlSeccionAlmacen").DataSource = dtt
|
|
'e.Row.FCDropDownList("DdlSeccionAlmacen").DataBind()
|
|
'If dtt.Rows.Count > 1 Then
|
|
' e.Row.FCDropDownList("DdlSeccionAlmacen").Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
'End If
|
|
'dtt.Dispose()
|
|
|
|
End If
|
|
End If
|
|
|
|
'FUNCIONALIDAD PISTOLA DE CODIGOS
|
|
If UsuarioActual.Empresa.Funcionalidad(132) = "1" And e.Row.DBCampo("CodigoBarras").Trim <> "" Then
|
|
e.Row.FCTextBox("TxtCantidad").Enabled = False
|
|
End If
|
|
|
|
End If
|
|
End Sub
|
|
|
|
Protected Sub BtnCancelarTraspaso_Click(sender As Object, e As EventArgs)
|
|
If Not GvDatosRecepcion.Rows.Count > 0 Then
|
|
Alert("No hay movimientos para el traspaso", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim CveMovimientoEntrada As Integer = 0
|
|
Dim tFolio As Integer = 0
|
|
Dim ErrorMovInv As Boolean = False
|
|
Dim TextoError As String = ""
|
|
Dim Fecha As Date = TxtFechaRecepcion.Text.ToDate
|
|
Dim CveMovimientoVirtualEntrada As Integer = 0
|
|
Dim FolioVirtualEntrada As Integer = 0
|
|
|
|
Dim ObjInventario As New ClsInventarios
|
|
Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL())
|
|
ObjInventario.IniciaTransacSQL()
|
|
Try
|
|
CveMovimientoEntrada = ObjInventario.AddMovimiento(GvDatosRecepcion.Rows(0).DataKey("CveAlmacenSalida").ToEntero, 27, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1,
|
|
Observaciones:=TxtObservacionesRecepcion.Text.Trim, Recibio:=TxtRecibio.Text, CveAlmacenDestino:=GvDatosRecepcion.Rows(0).DataKey("CveAlmacenSalida").ToEntero,
|
|
CveMovimientoRelacionado:=CveMovimientoSalida, Modulo:="TA/C")
|
|
If CveMovimientoEntrada <= 0 Then
|
|
TextoError = "No se pudo generar el movimiento"
|
|
ErrorMovInv = True
|
|
End If
|
|
|
|
Dim CvePrePoliza As Integer = -1
|
|
Dim Concepto As String = TxtObservacionesRecepcion.Text
|
|
If Concepto = "" Then Concepto = "Cancelación Traspaso"
|
|
|
|
If Not ErrorMovInv Then
|
|
tFolio = ObjInventario.Folio
|
|
CvePrePoliza = ObjConta.AddPrePolizas("Inventario/TraspasoAlmacen", 53, 0, 0, 1, Fecha, Concepto, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
|
|
|
|
If CvePrePoliza <= 0 Then
|
|
TextoError = "No se pudo generar la Poliza para la cancelación"
|
|
ErrorMovInv = True
|
|
End If
|
|
End If
|
|
|
|
If CveMovimientoEntrada <= 0 And Not ErrorMovInv Then
|
|
TextoError = "No se pudo generar el movimiento de entrada correctamente"
|
|
ErrorMovInv = True
|
|
Else
|
|
Dim CveMovimientoDetalleSalida As Integer = 0
|
|
Dim importe As Double = 0
|
|
|
|
For Each GvRow As GridViewRow In GvDatosRecepcion.Rows
|
|
If GvRow.RowType = DataControlRowType.DataRow Then
|
|
Dim CvePS As Integer = GvRow.DataKey("CvePS").ToEntero
|
|
'DEBE CONSIDERAR SOLO LAS FILAS QUE TENGA PRODUCTOS, NO EL TOTALIZADOR
|
|
If CvePS > 0 Then
|
|
CveMovimientoDetalleSalida = GvRow.DataKey("CveMovimientoDetalle").ToString.ToEntero
|
|
Dim Cantidad As Decimal = GvRow.DataKey("Cantidad").ToString.ToDecimal
|
|
Dim PrecioUnitario As Decimal = GvRow.DataKey("PU").ToString.ToDecimal
|
|
If CveMovimientoDetalleSalida <= 0 Then
|
|
ErrorMovInv = True
|
|
TextoError = "Ocurrió un error al guardar los movimientos de salida"
|
|
Exit For
|
|
End If
|
|
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Cantidad, GvRow.DataKey("CveUM").ToEntero, CvePS, PrecioUnitario, GvRow.DataKey("CveAF").ToEntero, -1, Serie:=GvRow.DataKey("Serie").ToString, Lote:=GvRow.DataKey("Lote"), FechaCaducidad:=GvRow.DataKey("FechaCaducidad").ToDate, CveMovimientoDetalleEntrada:=CveMovimientoDetalleSalida) Then
|
|
ErrorMovInv = True
|
|
TextoError = "Ocurrió un error al guardar los movimientos de entrada"
|
|
Exit For
|
|
End If
|
|
importe += Cantidad * PrecioUnitario
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
|
|
'VIRTUAL ENTRADA
|
|
|
|
If UsuarioActual.Empresa.Funcionalidad(573) = "1" Then
|
|
|
|
Dim CveAlmacenVirtual As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=GvDatosRecepcion.Rows(0).DataKey("CveAlmacenSalida").ToEntero).FiltroPrimeroValor("CveAlmacenVirtual", "").ToEntero()
|
|
|
|
'SI EL ALMACEN ORIGEN ES DE APOPYO LOGISTICO EL ALMACEN VIRTUAL DEBE SER DE APOYO LOGISTICO
|
|
'Dim CveAlmacenVirtual As Integer = -1
|
|
'If CveTipoAlmacenOrigen = 27 Then
|
|
' CveAlmacenVirtual = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $" CveTipoAlmacen =25 AND CveSubProyecto={CveSubProyecto}").ToEntero()
|
|
'Else
|
|
' CveAlmacenVirtual = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $" CveTipoAlmacen =24 AND CveSubProyecto={CveSubProyecto}").ToEntero()
|
|
'End If
|
|
|
|
'VERIFICA SI TIENE ALMACEN VIRTUAL ASIGNADA
|
|
If CveAlmacenVirtual > 0 Then
|
|
|
|
Dim dtvirtual As DataTable = Nothing
|
|
|
|
If ObjInventario.GetMovimientosDetalleVirtual(CveMovimientoEntrada, UsuarioActual.CveEmpresa, CveMovimientoRelacionado:=CveMovimientoSalida) Then
|
|
dtvirtual = ObjInventario.DtResultados
|
|
If dtvirtual.Rows.Count > 0 Then
|
|
CveMovimientoVirtualEntrada = ObjInventario.AddMovimiento(CveAlmacenVirtual, 36, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservacionesRecepcion.Text.Trim, CveMovimientoRelacionado:=CveMovimientoEntrada, Modulo:="TA/C2")
|
|
FolioVirtualEntrada = ObjInventario.Folio
|
|
For Each RowVirtual As DataRow In dtvirtual.Rows
|
|
Dim CvePS = RowVirtual("CvePS").ToString().ToEntero()
|
|
Dim CantidadUsado As Decimal = RowVirtual("Cantidad").ToString().ToDecimal()
|
|
Dim PU As Decimal = RowVirtual("PUOriginal").ToString().ToDecimal()
|
|
Dim CveUM As Integer = RowVirtual("CveUM").ToString().ToEntero()
|
|
Dim CostoIndirecto As Decimal = RowVirtual("CostoIndirecto").ToString().ToDecimal()
|
|
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtualEntrada, CantidadUsado, CveUM, CvePS, PU, -1, CostoIndirecto:=CostoIndirecto, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
|
|
ErrorMovInv = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
Else
|
|
TextoError = "No se pudo registrar el movimiento virtual"
|
|
ErrorMovInv = True
|
|
End If
|
|
'Else
|
|
' TextoError = "La Sucursal no tiene creado un almacen virtual"
|
|
' ErrorMovInv = True
|
|
End If
|
|
End If
|
|
|
|
If Not ErrorMovInv Then
|
|
Dim ImporteDecimal As Decimal = importe.ToDecimal.RoundAD
|
|
Dim IdCtaContable As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", String.Format("CveAlmacen = {0}", DdlAlmacenTransitorioRecepcion.SelectedValue.ToEntero)).ToEntero
|
|
|
|
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteDecimal, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContable, -1,
|
|
CveMovimientoAlmacen:=CveMovimientoEntrada, ImporteMX:=ImporteDecimal) Then
|
|
ErrorMovInv = True
|
|
TextoError = "Ocurrió un erro al cancelar el traspaso"
|
|
End If
|
|
|
|
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteDecimal, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContable, -1,
|
|
CveMovimientoAlmacen:=CveMovimientoSalida, ImporteMX:=ImporteDecimal) Then
|
|
ErrorMovInv = True
|
|
TextoError = "Ocurrió un erro al cancelar el traspaso"
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
ErrorMovInv = True
|
|
TextoError = "Ocurrió un erro al cancelar el traspaso"
|
|
OnError(TextoError, ex)
|
|
End Try
|
|
|
|
If Not ErrorMovInv Then
|
|
ObjInventario.Commit()
|
|
|
|
TxtRecibio.Text = ""
|
|
TxtFechaRecepcion.Text = Now.ToShortDateString
|
|
TxtObservacionesRecepcion.Text = ""
|
|
|
|
Dim Mensaje As StringBuilder = New StringBuilder
|
|
Mensaje.AppendFormat("Se realizo correctamente la cancelación. <br/> Folio de Entrada: <b><a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={1}"" target=""_blank"">{0}</a></b>", tFolio, CveMovimientoEntrada)
|
|
Mensaje.AppendFormat("<br/><a target='_blank' href='/Compras/PopUpVerFactura.aspx?P={0}'>Imprimir Reporte</a>", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoEntrada))) 'onclick='ImprimirTraslado()'
|
|
If CveMovimientoVirtualEntrada > 0 Then Mensaje.AppendFormat("<br/>Folio Virtual: <b><a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={1}"" target=""_blank"">{2}</a></b> <br/><a target='_blank' href='/Compras/PopUpVerFactura.aspx?P={0}'>Imprimir Entrada Virtual</a>", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoVirtualEntrada)), CveMovimientoVirtualEntrada, FolioVirtualEntrada)
|
|
|
|
Alert(Mensaje.ToString, TipoMensaje.MsgInformacion)
|
|
|
|
DivCodigoSeriePSRecepcion.Visible = False
|
|
|
|
GvDatosRecepcion.DataBind()
|
|
UpDatosRecepcion.Update()
|
|
UPDatosAlmacen.Update()
|
|
Else
|
|
ObjInventario.RollBack()
|
|
|
|
Alert(TextoError, TipoMensaje.MsgError)
|
|
End If
|
|
|
|
ObjConta.Dispose()
|
|
ObjInventario.Dispose()
|
|
|
|
CargaRecepcion()
|
|
End Sub
|
|
|
|
Protected Sub BtnRecibir_Click(sender As Object, e As EventArgs)
|
|
If GvDatosRecepcion.Rows.Count > 0 Then
|
|
'Valida Movimientos
|
|
Dim ValidaMovtos = 0.0
|
|
For Each gvr As GridViewRow In GvDatosRecepcion.Rows
|
|
If gvr.FCCheckBox("Chk").Checked AndAlso gvr.FCTextBox("TxtCantidad").Text.ToString.ToDecimal > 0 Then
|
|
ValidaMovtos += gvr.FCTextBox("TxtCantidad").Text.ToString.ToDecimal
|
|
End If
|
|
Next
|
|
|
|
If Not ValidaMovtos > 0 Then
|
|
Alert("No hay movimientos que realizar. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia)
|
|
Exit Sub
|
|
End If
|
|
|
|
|
|
Dim ObjInventario As New ClsInventarios
|
|
Dim Dtt As DataTable = Nothing
|
|
Dim CveMovimientoEntrada As Integer = 0
|
|
Dim CveMovimientoSalidaTransitorio As Integer = 0
|
|
Dim Folio = 0
|
|
Dim ErrorMovInv As Boolean = False
|
|
Dim TextoError = ""
|
|
Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL())
|
|
|
|
'' verifica que no se halla recibido previamente, si ya se recibió da salida
|
|
If ObjInventario.GetMovimientosTransitorios(CveAlmacenDestino, -1, CveAlmacenTransitorio, -1, FolioBusqueda, UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario) Then
|
|
Dtt = ObjInventario.DtResultados.FiltraParametros(String.Format("CveTipoAlmacenDestino <> 4"), "", {"CveMovimientoDetalle", "Codigo", "Cantidad"})
|
|
If Dtt IsNot Nothing AndAlso Dtt.FiltraParametros("Cantidad < 0").Rows.Count > 0 Then
|
|
|
|
ObjInventario.Dispose()
|
|
Alert("El traspaso no se ha puede completar, por inconsistencia en las cantidades recibidas")
|
|
Exit Sub
|
|
End If
|
|
End If
|
|
|
|
'REGISTRA LA SALIDA Y ENTRADA (TRASPASO)
|
|
ObjInventario.IniciaTransacSQL() 'Inicia la transacción
|
|
Dim Fecha As Date = TxtFechaRecepcion.Text.ToDate
|
|
|
|
Dim CveAlmacenEntrada As Integer = GvDatosRecepcion.Rows(0).DataKey("CveAlmacenDestino").ToEntero
|
|
Dim CveAlmacenSalida As Integer = DdlAlmacenTransitorioRecepcion.SelectedValue.ToEntero
|
|
|
|
Dim TipoAlmacenDestino As Integer = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveTipoAlmacen", $"CveAlmacen = {CveAlmacenEntrada}").ToEntero()
|
|
Dim TipoAlmacenOrigen As Integer = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveTipoAlmacen", $"CveAlmacen = {CveAlmacenSalida}").ToEntero()
|
|
|
|
|
|
Dim RealizarMovimientoVirtual As Boolean = False
|
|
|
|
If UsuarioActual.Empresa.Funcionalidad(573) = "1" AndAlso TipoAlmacenOrigen.Contiene(1, 27) Then
|
|
RealizarMovimientoVirtual = True
|
|
End If
|
|
|
|
|
|
'AGREGAMOS LA SALIDA
|
|
CveMovimientoSalidaTransitorio = ObjInventario.AddMovimiento(CveAlmacenSalida, 8, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1,
|
|
Observaciones:=TxtObservacionesRecepcion.Text.Trim, CveAlmacenDestino:=GvDatosRecepcion.Rows(0).DataKey("CveAlmacenSalida").ToEntero, Modulo:="TA/G11")
|
|
|
|
'AGREGAMOS LA ENTRADA
|
|
CveMovimientoEntrada = ObjInventario.AddMovimiento(CveAlmacenEntrada, 27, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1,
|
|
Observaciones:=TxtObservacionesRecepcion.Text.Trim, CveAlmacenDestino:=GvDatosRecepcion.Rows(0).DataKey("CveAlmacenSalida").ToEntero, CveMovimientoRelacionado:=CveMovimientoSalida, Modulo:="TA/G1")
|
|
Folio = ObjInventario.Folio
|
|
|
|
If CveMovimientoSalidaTransitorio <= 0 Then
|
|
TextoError = "No se pudo generar el movimiento de salida correctamente"
|
|
ErrorMovInv = True
|
|
Else
|
|
|
|
Dim CveMovimientoDetalleEntrada As Integer = 0
|
|
Dim Cont As Integer = 0
|
|
For Each gvr As GridViewRow In GvDatosRecepcion.Rows
|
|
|
|
Dim dataRowAux As DataRow = Dtt.FiltroPrimero(String.Format(" CveMovimientoDetalle = '{0}'", If(gvr.DataKey("CveMovimientoDetalle").ToString = "", "0", gvr.DataKey("CveMovimientoDetalle").ToString)))
|
|
Dim cantidadDisponibleValidacion As Decimal = 0
|
|
|
|
If gvr.DataKey("Codigo").ToString IsNot "" Then
|
|
If dataRowAux IsNot Nothing Then
|
|
cantidadDisponibleValidacion = dataRowAux.Item("Cantidad").ToString.ToDecimal - gvr.FCTextBox("TxtCantidad").Text.ToString.ToDecimal
|
|
Else
|
|
cantidadDisponibleValidacion = -1
|
|
End If
|
|
End If
|
|
|
|
If gvr.FCCheckBox("Chk").Checked AndAlso gvr.FCTextBox("TxtCantidad").Text.ToString.ToDecimal > 0 AndAlso cantidadDisponibleValidacion >= 0 Then
|
|
CveMovimientoDetalleEntrada = gvr.DataKey("CveMovimientoDetalle").ToString.ToEntero
|
|
|
|
If CveMovimientoDetalleEntrada <= 0 Then
|
|
ErrorMovInv = True
|
|
TextoError = "Ocurrió un error al guardar los movimientos de salida"
|
|
Exit For
|
|
End If
|
|
Dim PrecioEntrada As Decimal = If(TipoAlmacenDestino = 26, 0, gvr.DataKey("PU").ToString.ToDecimal)
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, gvr.FCTextBox("TxtCantidad").Text.ToString.ToDecimal, gvr.DataKey("CveUM").ToString.ToEntero, gvr.DataKey("CvePS").ToString.ToEntero, PrecioEntrada, CveAF:=gvr.DataKey("CveAF").ToString.ToEntero, CveSeccionAlmacen:=gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, Serie:=gvr.DataKey("Serie").ToString, Lote:=gvr.DataKey("Lote").ToString, FechaCaducidad:=gvr.DataKey("FechaCaducidad").ToDate, CveMovimientoDetalleEntrada:=CveMovimientoDetalleEntrada) Then
|
|
ErrorMovInv = True
|
|
TextoError = "Ocurrió un error al guardar los movimientos de salida"
|
|
Exit For
|
|
End If
|
|
'MOV, Alm, Transito
|
|
If gvr.DataKey("CveMovimientoDetalleTransitorio").ToString.ToEntero > 0 Then
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalidaTransitorio, gvr.FCTextBox("TxtCantidad").Text.ToString.ToDecimal, gvr.DataKey("CveUM").ToString.ToEntero, gvr.DataKey("CvePS").ToString.ToEntero, PrecioEntrada, CveAF:=gvr.DataKey("CveAF").ToString.ToEntero, CveSeccionAlmacen:=gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero, Serie:=gvr.DataKey("Serie").ToString, Lote:=gvr.DataKey("Lote").ToString, FechaCaducidad:=gvr.DataKey("FechaCaducidad").ToDate, CveMovimientoDetalleEntrada:=gvr.DataKey("CveMovimientoDetalleTransitorio").ToString.ToEntero) Then
|
|
ErrorMovInv = True
|
|
TextoError = "Ocurrió un error al guardar los movimientos de salida"
|
|
Exit For
|
|
End If
|
|
Else
|
|
CveMovimientoSalidaTransitorio = 0
|
|
End If
|
|
|
|
ElseIf cantidadDisponibleValidacion < 0 Then
|
|
TextoError = String.Format("Se exceden la cantidad disponibles para {0}", gvr.DataKey("PS").ToString)
|
|
ErrorMovInv = True
|
|
End If
|
|
Cont += 1
|
|
Next
|
|
If Not ErrorMovInv Then
|
|
Dim Concepto As String = TxtObservacionesRecepcion.Text
|
|
If Concepto = "" Then Concepto = "Recepción Traspaso"
|
|
Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inventario/TraspasoAlmacen", 53, 0, 0, 1, Fecha, Concepto, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa)
|
|
If ObjInventario.GetMovimientosDetalle(CveMovimientoEntrada, UsuarioActual.CveEmpresa) Then
|
|
|
|
Dim resultado As DataTable = ObjInventario.DtResultados
|
|
Dim importe As Decimal = resultado.SUMD("Total").RoundAD
|
|
Dim IdCtaContable As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", String.Format("CveAlmacen = {0}", DdlAlmacenTransitorioRecepcion.SelectedValue.ToEntero)).ToEntero
|
|
Dim tCveConcepto As Integer = 68
|
|
|
|
If CveMovimientoSalidaTransitorio = 0 Then
|
|
tCveConcepto = 289
|
|
End If
|
|
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, importe, TxtObservaciones.Text, tCveConcepto, TxtObservaciones.Text, Fecha, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimientoSalidaTransitorio, ImporteMX:=importe, Contabilizable:=False) Then
|
|
ErrorMovInv = True
|
|
End If
|
|
|
|
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, importe, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContable, -1, CveMovimientoAlmacen:=CveMovimientoEntrada, ImporteMX:=importe, Contabilizable:=False) Then
|
|
ErrorMovInv = True
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
|
|
'VIRTUAL ENTRADA
|
|
Dim CveMovimientoVirtualEntrada As Integer = 0
|
|
Dim FolioVirtualEntrada As Integer = 0
|
|
If RealizarMovimientoVirtual Then
|
|
|
|
Dim CveAlmacenVirtual As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenRecepcion.SelectedValue.ToEntero).FiltroPrimeroValor("CveAlmacenVirtual", "").ToEntero()
|
|
|
|
If CveAlmacenVirtual > 0 Then
|
|
|
|
Dim dtvirtual As DataTable = Nothing
|
|
|
|
If ObjInventario.GetMovimientosDetalleVirtual(CveMovimientoEntrada, UsuarioActual.CveEmpresa) Then
|
|
dtvirtual = ObjInventario.DtResultados
|
|
If dtvirtual.Rows.Count > 0 Then
|
|
CveMovimientoVirtualEntrada = ObjInventario.AddMovimiento(CveAlmacenVirtual, 2, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Modulo:="TA/S2")
|
|
FolioVirtualEntrada = ObjInventario.Folio
|
|
For Each RowVirtual As DataRow In dtvirtual.Rows
|
|
Dim CvePS = RowVirtual("CvePS").ToString().ToEntero()
|
|
Dim CantidadUsado As Decimal = RowVirtual("Cantidad").ToString().ToDecimal()
|
|
Dim PU As Decimal = RowVirtual("Cargo").ToString().ToDecimal()
|
|
Dim CveUM As Integer = RowVirtual("CveUM").ToString().ToEntero()
|
|
|
|
If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtualEntrada, CantidadUsado, CveUM, CvePS, PU, -1, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then
|
|
ErrorMovInv = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
Else
|
|
TextoError = "No se pudo registrar el movimiento virtual"
|
|
ErrorMovInv = True
|
|
End If
|
|
'Else
|
|
' TextoError = "La Sucursal no tiene creado un almacen virtual"
|
|
' ErrorMovInv = True
|
|
End If
|
|
End If
|
|
|
|
''AGREGAMOS LA ENTRADA
|
|
'If Not ErrorMovInv Then
|
|
' CveMovimientoEntrada = ObjInventario.AddMovimiento(GvDatosRecepcion.Rows(0).DataKey("CveAlmacenDestino").ToEntero, 9, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1,
|
|
' Observaciones:=TxtObservacionesRecepcion.Text.Trim, Recibio:=TxtRecibio.Text, CveAlmacenDestino:=GvDatosRecepcion.Rows(0).DataKey("CveAlmacenSalida").ToEntero, CveMovimientoRelacionado:=CveMovimientoSalida)
|
|
' Folio = ObjInventario.Folio
|
|
|
|
' If CveMovimientoEntrada <= 0 Then
|
|
' TextoError = "No se pudo generar el movimiento de entrada correctamente"
|
|
' ErrorMovInv = True
|
|
' Else
|
|
|
|
' 'COSTO INDIRECTO
|
|
' Dim GastoIndirectoTotal As Double = GvDatosRecepcion.Rows(0).DataKey("GastoIndirectoSalida").ToDouble
|
|
' Dim Importe As Double = GvDatosRecepcion.Rows(0).DataKey("Importe").ToDouble
|
|
|
|
' If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then
|
|
' Dim CostoIndirecto As Double
|
|
' For Each Dr As DataRow In ObjInventario.DtResultados.Rows
|
|
|
|
' CostoIndirecto = 0
|
|
' If GastoIndirectoTotal > 0 Then
|
|
' 'PRORRATEAMOS EL GASTO INDIRECTO
|
|
' CostoIndirecto = ((Dr("Total").ToString.ToDouble * GastoIndirectoTotal) / Importe) / Dr("Cantidad").ToString.ToDouble
|
|
' End If
|
|
|
|
' If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDouble, Dr("CveAF").ToString.ToEntero, -1, Dr("Serie").ToString, Lote:=Dr("Lote").ToString, Batch:=Dr("Batch").ToString, CostoIndirecto:=CostoIndirecto) Then
|
|
' ErrorMovInv = True
|
|
' TextoError = "Ocurrió un error al guardar los movimientos de entrada"
|
|
' Exit For
|
|
' End If
|
|
' Next
|
|
|
|
' End If
|
|
|
|
' End If
|
|
'End If
|
|
|
|
'AGREGAMOS LA ENTRADA VIEJO
|
|
'If Not ErrorMovInv Then
|
|
' 'Folio = ObjInventario.GetFolioSiguiente(9, UsuarioActual.CveEmpresa)
|
|
' CveMovimientoEntrada = ObjInventario.AddMovimiento(GvDatosRecepcion.Rows(0).DataKey("CveAlmacenDestino").ToEntero, 9, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1)
|
|
|
|
' If CveMovimientoEntrada <= 0 Then
|
|
' TextoError = "No se pudo generar el movimiento de entrada correctamente"
|
|
' ErrorMovInv = True
|
|
' Else
|
|
|
|
' If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then
|
|
|
|
' For Each Dr As DataRow In ObjInventario.DtResultados.Rows
|
|
' If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDouble, Dr("CveAF").ToString.ToEntero) Then
|
|
' ErrorMovInv = True
|
|
' TextoError = "Ocurrió un error al guardar los movimientos de salida"
|
|
' Exit For
|
|
' End If
|
|
' Next
|
|
|
|
' End If
|
|
|
|
' End If
|
|
'End If
|
|
|
|
|
|
If Not ErrorMovInv Then
|
|
ObjInventario.Commit()
|
|
|
|
TxtRecibio.Text = ""
|
|
TxtFechaRecepcion.Text = Now.ToShortDateString
|
|
TxtObservacionesRecepcion.Text = ""
|
|
|
|
Dim Mensaje As StringBuilder = New StringBuilder
|
|
Mensaje.AppendFormat("Se realizo correctamente la recepción. <br/> Folio de Entrada: <b><a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={1}"" target=""_blank"">{0}</a></b>", Folio, CveMovimientoEntrada)
|
|
Mensaje.AppendFormat("<br/><a target='_blank' href='/Compras/PopUpVerFactura.aspx?P={0}'>Imprimir Reporte</a>", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoEntrada))) 'onclick='ImprimirTraslado()'
|
|
If CveMovimientoVirtualEntrada > 0 Then Mensaje.AppendFormat("<br/><br/><br/>Folio Virtual <b> <a href=""/Inventarios/EntradasSalidas.aspx?CveMovimiento={1}"" target=""_blank"">{2}</a> </b> <br/><a target='_blank' href='/Compras/PopUpVerFactura.aspx?P={0}'>Imprimir Reporte</a>", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoVirtualEntrada)), CveMovimientoVirtualEntrada, FolioVirtualEntrada) 'onclick='ImprimirTraslado()'
|
|
|
|
|
|
Alert(Mensaje.ToString, TipoMensaje.MsgInformacion)
|
|
|
|
DivCodigoSeriePSRecepcion.Visible = False
|
|
|
|
GvDatosRecepcion.DataBind()
|
|
UpDatosRecepcion.Update()
|
|
UPDatosAlmacen.Update()
|
|
Else
|
|
ObjInventario.RollBack()
|
|
Alert(TextoError, TipoMensaje.MsgError)
|
|
End If
|
|
ObjInventario.Dispose()
|
|
ObjConta.Dispose()
|
|
CargaRecepcion()
|
|
Else
|
|
Alert("No hay movimientos para el traspaso", TipoMensaje.MsgAdvertencia)
|
|
If ChkTransitorio.Checked Then RegistraScript("$('#DivTransitorio').show(200);") : DivTransitorio2.Visible = True
|
|
End If
|
|
End Sub
|
|
|
|
'Private Sub DdlProducto_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlProducto.SelectedIndexChanged
|
|
' 'CargarUM(DdlProducto.SelectedValue.ToEntero)
|
|
' ElProductoChange()
|
|
'End Sub
|
|
|
|
'Private Sub HFProducto_ValueChanged(sender As Object, e As EventArgs) Handles HFProducto.ValueChanged
|
|
' ElProductoChange()
|
|
'End Sub
|
|
Private Sub CargarUM(CvePS As Integer)
|
|
Dim ObjUM As New ClsProductosServicios()
|
|
If ObjUM.GetPSEquivalencias(CvePS, UsuarioActual.CveEmpresa) Then
|
|
DdlUnidad.Items.Clear()
|
|
DdlUnidad.DataSource = ObjUM.DtResultados
|
|
End If
|
|
ObjUM.Dispose()
|
|
DdlUnidad.DataBind()
|
|
End Sub
|
|
|
|
'Protected Sub BtnImprimirTraspaso_Click(sender As Object, e As EventArgs) Handles BtnImprimirTraspaso.Click
|
|
' Dim params As New List(Of ReportParameter)
|
|
' params.Add(New ReportParameter("SubProyecto", DdlAlmacenDestino.SelectedItem.ToString))
|
|
' params.Add(New ReportParameter("Folio", FolioTraspaso.ToString))
|
|
' params.Add(New ReportParameter("Fecha", TxtFecha.Text))
|
|
' params.Add(New ReportParameter("Observaciones", TxtObservaciones.Text))
|
|
' params.Add(New ReportParameter("NombreEntrego", UsuarioActual.Nombre))
|
|
' params.Add(New ReportParameter("NombreTraslado", TxtResponsable.Text))
|
|
' params.Add(New ReportParameter("NombreRecibio", ""))
|
|
' ImprimirPDF(String.Format("{0}Formatos\Traslado.rdlc", UsuarioActual.Empresa.Ruta), DtTraslado, params, "Reporte Traslado", RDSName:="DsInventarios")
|
|
'End Sub
|
|
|
|
#End Region
|
|
|
|
#Region " AGREGA CON TXT | CODIGO - SERIE "
|
|
Protected Sub BtnCodigoPS_Click(sender As Object, e As EventArgs)
|
|
|
|
If TxtCodigoPS.Text = "" Then
|
|
Exit Sub
|
|
End If
|
|
|
|
TdSeriePS.Visible = False
|
|
|
|
Dim DrPS = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero($"CodigoBarras = '{TxtCodigoPS.Text}'")
|
|
If DrPS Is Nothing Then
|
|
Alert($"No se ha encontrado un producto del Codigo ""<b>{TxtCodigoPS.Text}</b>"". ", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus,200);")
|
|
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
|
|
TxtCodigoPS.Text = ""
|
|
Exit Sub
|
|
End If
|
|
|
|
If DrPS("Inv_CveMetodoInventario").ToString.ToEntero = 5 Then
|
|
TdSeriePS.Visible = True
|
|
TxtSeriePS.Focus()
|
|
CvePSSerie = DrPS("CvePS").ToString.ToEntero
|
|
CveUMSerie = DrPS("CveUnidadMedida").ToString.ToEntero
|
|
Exit Sub
|
|
End If
|
|
|
|
AgregarPS(1, DrPS("CvePS").ToString.ToEntero, DrPS("CveUnidadMedida").ToString.ToEntero)
|
|
|
|
TxtCodigoPS.Text = ""
|
|
|
|
End Sub
|
|
Protected Sub BtnSeriePS_Click(sender As Object, e As EventArgs)
|
|
If TxtSeriePS.Text.Trim = "" Then
|
|
Exit Sub
|
|
End If
|
|
|
|
txtCantidad.Text = "1"
|
|
|
|
Dim Valido = ValidaExistencia(1, CvePSSerie, CveUMSerie, -1, TxtSeriePS.Text.Trim, "-1", MinFecha)
|
|
|
|
If Valido Then
|
|
AgregarPS(1, CvePSSerie, CveUMSerie, TxtSeriePS.Text.Trim)
|
|
Else
|
|
TxtSeriePS.Text = ""
|
|
TxtSeriePS.Focus()
|
|
Exit Sub
|
|
End If
|
|
|
|
TdSeriePS.Visible = False
|
|
TxtSeriePS.Text = ""
|
|
TxtCodigoPS.Text = ""
|
|
TxtCodigoPS.Focus()
|
|
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region " AGREGA CON TXT | CODIGO - SERIE --- RECEPCION "
|
|
Protected Sub BtnCodigoPSRecepcion_Click(sender As Object, e As EventArgs)
|
|
If TxtCodigoPSRecepcion.Text = "" Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim Existe = False
|
|
Dim PSTemp = ""
|
|
TdSeriePSRecepcion.Visible = False
|
|
|
|
For Each Gvr As GridViewRow In GvDatosRecepcion.Rows
|
|
If Gvr.DataKey("CodigoBarras") = TxtCodigoPSRecepcion.Text.Trim Then
|
|
Dim TxtCantidad = GvDatosRecepcion.Rows(Gvr.RowIndex).FCTextBox("TxtCantidad")
|
|
If Gvr.DataKey("Cantidad").ToDecimal - TxtCantidad.Text.ToDecimal - 1 >= 0 Then
|
|
|
|
If Gvr.DataKey("AplicaSerie") = "True" Then
|
|
TdSeriePSRecepcion.Visible = True
|
|
TxtSeriePSRecepcion.Focus()
|
|
Exit Sub
|
|
End If
|
|
|
|
TxtCantidad.Text = (TxtCantidad.Text.ToDecimal + 1).ToString.FormatoNumero
|
|
TxtCodigoPSRecepcion.Text = ""
|
|
RegistraScript("playsonidito('beep-07.wav')")
|
|
UpDatosRecepcion.Update()
|
|
Exit Sub
|
|
End If
|
|
|
|
Existe = True
|
|
PSTemp = Gvr.DataKey("PS").ToString
|
|
'Alert($"Ya se ha cargado la totalidad del Producto ""<b>{Gvr.DataKey("PS").ToString}</b>"" con el Codigo ""<b>{TxtCodigoPSRecepcion.Text}</b>"".", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus1,200);")
|
|
End If
|
|
Next
|
|
|
|
If Existe Then
|
|
Alert($"Ya se ha cargado la totalidad del Producto ""<b>{PSTemp}</b>"" con el Codigo ""<b>{TxtCodigoPSRecepcion.Text}</b>"".", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus1,200);")
|
|
Else
|
|
Alert($"No se ha encontrado un producto para surtir con el Codigo ""<b>{TxtCodigoPSRecepcion.Text}</b>"". ", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus1,200);")
|
|
End If
|
|
|
|
RegistraScript("playsonidito('142608__autistic-lucario__error.wav')")
|
|
TxtCodigoPSRecepcion.Text = ""
|
|
|
|
End Sub
|
|
Protected Sub BtnSeriePSRecepcion_Click(sender As Object, e As EventArgs)
|
|
|
|
If TxtSeriePSRecepcion.Text = "" Then
|
|
Exit Sub
|
|
End If
|
|
|
|
For Each Gvr As GridViewRow In GvDatosRecepcion.Rows
|
|
If Gvr.DataKey("CodigoBarras") = TxtCodigoPSRecepcion.Text.Trim And Gvr.DataKey("Serie") = TxtSeriePSRecepcion.Text.Trim Then
|
|
Dim TxtCantidad = GvDatosRecepcion.Rows(Gvr.RowIndex).FCTextBox("TxtCantidad")
|
|
If Gvr.DataKey("Cantidad").ToDecimal - TxtCantidad.Text.ToDecimal - 1 >= 0 Then
|
|
|
|
TxtCantidad.Text = (TxtCantidad.Text.ToDecimal + 1).ToString.FormatoNumero
|
|
TxtCodigoPSRecepcion.Text = ""
|
|
TdSeriePSRecepcion.Visible = False
|
|
TxtSeriePSRecepcion.Text = ""
|
|
UpDatosRecepcion.Update()
|
|
Exit Sub
|
|
End If
|
|
|
|
Alert($"Ya se ha cargado la totalidad del Producto ""<b>{Gvr.DataKey("PS").ToString}</b>"" con el Codigo ""<b>{TxtCodigoPSRecepcion.Text}</b>"".", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus1,200);")
|
|
RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')")
|
|
|
|
End If
|
|
Next
|
|
|
|
Alert($"No se ha encontrado un producto para surtir con el Codigo ""<b>{TxtCodigoPSRecepcion.Text}</b>"". ", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus1,200);")
|
|
RegistraScript("playsonidito(''142608__autistic-lucario__error.wav'')")
|
|
'Alert($"Ya se han cargado todos los productos o no se ha encontrado un producto de la Serie ""<b>{TxtSeriePSRecepcion.Text}</b>"". ", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus2,200);")
|
|
TxtSeriePSRecepcion.Text = ""
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region "CORREO"
|
|
|
|
Private Sub MandaCorreo(CveMovimiento As Integer, Para As String, Optional CCP As String = "")
|
|
Dim Mail As New ClsSisMail()
|
|
Dim Asunto As String = "NOTIFICACION DE TRASPASO ENTRE ALMACENES"
|
|
Dim Body As String = GeneraCorreo(CveMovimiento)
|
|
|
|
If Not Mail.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body, CCP) Then
|
|
'Dim objIE As New ClsBancos
|
|
'objIE.UpdateBancos_IENotificaciones(1, "-1", "-1", CveIE)
|
|
'objIE.Dispose()
|
|
Alert("No se pudo enviar el correo electrónico.", TipoMensaje.MsgError)
|
|
End If
|
|
End Sub
|
|
'Private Sub BtnSendMail_Click(sender As Object, e As EventArgs) Handles BtnSendMail.Click
|
|
' MandaCorreo(CveMov, TxtParaMail.Text.Trim, TxtCC.Text.Trim)
|
|
' RegistraScript("$('#ModalDivMail').modal('hide');")
|
|
'End Sub
|
|
Private Function GeneraCorreo(CveMovimientoSalida As Integer) As String
|
|
Dim strBody As New StringBuilder
|
|
Dim ObjInventario As New ClsInventarios
|
|
|
|
If ObjInventario.GetMovimientos(CveMovimientoSalida, -1, -1, UsuarioActual.CveEmpresa) Then
|
|
strBody.Append("<html xmlns=""http://www.w3.org/1999/xhtml""> ")
|
|
strBody.Append("<head> ")
|
|
strBody.Append(" <style type=""text/css""> ")
|
|
strBody.Append(" body ")
|
|
strBody.Append(" { ")
|
|
strBody.Append(" margin:0px; ")
|
|
strBody.Append(" padding:0px 0px 0px 0px; ")
|
|
strBody.Append(" font-family: Verdana, Arial, Helvetica, sans-serif; ")
|
|
strBody.Append(" font-size: 10px; ")
|
|
strBody.Append(" background-color:#F0F0F0; ")
|
|
strBody.Append(" } ")
|
|
strBody.Append(" a.Texto ")
|
|
strBody.Append(" { ")
|
|
strBody.Append(" font-size:11px; ")
|
|
strBody.Append(" background-color:#F7F6F3; ")
|
|
strBody.Append(" text-decoration:none; ")
|
|
strBody.Append(" font-weight:bold; ")
|
|
strBody.Append(" } ")
|
|
strBody.Append(" .Texto ")
|
|
strBody.Append(" { ")
|
|
strBody.Append(" background-color:#F7F6F3; color:Black; font-family:Verdana; font-size:10px; text-align:center; vertical-align:middle; height:20px;")
|
|
strBody.Append(" } ")
|
|
strBody.Append(" .TextoAlterno ")
|
|
strBody.Append(" { ")
|
|
strBody.Append(" background-color:White; color:Black; font-family:Verdana; font-size:10px; text-align:center; ")
|
|
strBody.Append(" vertical-align:middle; height:20px;")
|
|
strBody.Append(" } ")
|
|
strBody.Append(" .BarraIdentidad ")
|
|
strBody.Append(" { ")
|
|
strBody.Append(" color:#FFFFFF; ")
|
|
strBody.Append(" background:#F0F0F0; ")
|
|
strBody.Append(" font-weight:bold; ")
|
|
strBody.Append(" font-size:19px; ")
|
|
strBody.Append(" font-style:oblique; ")
|
|
strBody.Append(" } ")
|
|
strBody.Append(" .Titulos ")
|
|
strBody.Append(" { ")
|
|
strBody.Append(" background-color: Gray;")
|
|
strBody.Append(" color:White; ")
|
|
strBody.Append(" font-family:Verdana; font-size:12px; text-align:center; ")
|
|
strBody.Append(" vertical-align:middle; font-weight:bold; height:30px; ")
|
|
strBody.Append(" text-decoration:none; ")
|
|
strBody.Append(" } ")
|
|
strBody.Append(" .Verde {color: #00CC00;} ")
|
|
strBody.Append(" .Negro {color: #000000;} ")
|
|
strBody.Append(" .Rojo {color: #FF0000;} ")
|
|
strBody.Append(" </style> ")
|
|
strBody.Append("</head> ")
|
|
strBody.Append("<body> ")
|
|
strBody.AppendFormat("<div id='C_div' style='width: 600px'>")
|
|
strBody.AppendFormat(" <fieldset>")
|
|
strBody.AppendFormat(" <legend><b>{0}</b></legend>", UsuarioActual.Empresa.Empresa)
|
|
strBody.AppendFormat(" <table class='TextoG' border='0' cellpadding='0' cellspacing='0' width='100%'>")
|
|
strBody.AppendFormat(" <tr>")
|
|
strBody.AppendFormat(" <td style='width:100px'>{0}</td>", UsuarioActual.Empresa.Direccion)
|
|
strBody.AppendFormat(" </tr>")
|
|
strBody.AppendFormat(" <tr>")
|
|
strBody.AppendFormat(" <td>Col. {0}</td>", UsuarioActual.Empresa.Colonia)
|
|
strBody.AppendFormat(" </tr>")
|
|
strBody.AppendFormat(" <tr>")
|
|
strBody.AppendFormat(" <td>{0}, {1}, C.P.{2}</td>", UsuarioActual.Empresa.Ciudad, UsuarioActual.Empresa.Estado, UsuarioActual.Empresa.CP)
|
|
strBody.AppendFormat(" </tr>")
|
|
strBody.AppendFormat(" <tr>")
|
|
strBody.AppendFormat(" <td>RFC {0}</td>", UsuarioActual.Empresa.RFC)
|
|
strBody.AppendFormat(" </tr>")
|
|
strBody.AppendFormat(" </table>")
|
|
strBody.AppendFormat(" </fieldset>")
|
|
strBody.AppendFormat("</div><br/><br/>")
|
|
|
|
|
|
strBody.AppendFormat("<div style='width: 600px'>")
|
|
strBody.AppendFormat(" <table style='width:100%'>")
|
|
strBody.AppendFormat(" <tr>")
|
|
strBody.AppendFormat(" <td style='vertical-align: top'>")
|
|
strBody.AppendFormat(" <fieldset>")
|
|
strBody.AppendFormat(" <legend>TRASPASO ENTRE ALMACENES<b>{0}</b> </legend>", " ")
|
|
strBody.AppendFormat(" <table width='100%'>")
|
|
strBody.AppendFormat(" <tr style='background-color: gray; color: White; font-family: Verdana; font-size: 10px; text-align: center; vertical-align: middle; font-weight: bold; height: 20px; text-decoration: none;'>")
|
|
strBody.AppendFormat(" <th scope='col' style='width:150px;'></th>")
|
|
strBody.AppendFormat(" <th scope='col' style='width:450px;'></th>")
|
|
strBody.AppendFormat(" </tr>")
|
|
strBody.AppendFormat(" <tr class='Texto'>")
|
|
strBody.AppendFormat(" <td>Fecha:</td>")
|
|
strBody.AppendFormat(" <td style='text-align: left'>{0}</td>", ObjInventario.Fecha.ToString("dd/MM/yyyy"))
|
|
strBody.AppendFormat(" </tr>")
|
|
strBody.AppendFormat(" <tr class='Texto'>")
|
|
strBody.AppendFormat(" <td>Almacén Origen:</td>")
|
|
strBody.AppendFormat(" <td style='text-align: left'>{0}</td>", ObjInventario.Almacen)
|
|
strBody.AppendFormat(" </tr>")
|
|
strBody.AppendFormat(" <tr class='Texto'>")
|
|
strBody.AppendFormat(" <td>Almacén Destino:</td>")
|
|
strBody.AppendFormat(" <td style='text-align: left'>{0}</td>", ObjInventario.AlmacenDestino)
|
|
strBody.AppendFormat(" </tr>")
|
|
strBody.AppendFormat(" <tr class='Texto'>")
|
|
strBody.AppendFormat(" <td>Observaciones:</td>")
|
|
strBody.AppendFormat(" <td style='text-align: left'>{0}</td>", ObjInventario.Observaciones)
|
|
strBody.AppendFormat(" </tr>")
|
|
'strBody.AppendFormat(" <tr class='Texto'>")
|
|
'strBody.AppendFormat(" <td>Importe:</td>")
|
|
'strBody.AppendFormat(" <td style='text-align: left'>$ {0} {1}</td>", objIE.Importe.FormatoNumero, objIE.Moneda)
|
|
'strBody.AppendFormat(" </tr>")
|
|
'strBody.AppendFormat(" <tr class='Texto'>")
|
|
'strBody.AppendFormat(" <td>Observaciones:</td>")
|
|
'strBody.AppendFormat(" <td style='text-align: left'>{0}</td>", objIE.Observaciones)
|
|
'strBody.AppendFormat(" </tr>")
|
|
strBody.AppendFormat(" <tr class='Texto'>")
|
|
strBody.AppendFormat(" <td colspan='2'>")
|
|
strBody.AppendFormat(" <hr />")
|
|
strBody.AppendFormat(" </td>")
|
|
strBody.AppendFormat(" </tr>")
|
|
strBody.AppendFormat(" </table>")
|
|
strBody.AppendFormat(" </fieldset>")
|
|
strBody.AppendFormat(" </td>")
|
|
strBody.AppendFormat(" </tr>")
|
|
strBody.AppendFormat(" </table>")
|
|
strBody.AppendFormat("</div>")
|
|
|
|
|
|
'MOVIMIENTOS CHEQUE
|
|
'Dim Textov33 As String = ""
|
|
'If UsuarioActual.Empresa.Funcionalidad(520) = "1" Then
|
|
' Textov33 = "Favor de emitir complemento de pago de los siguientes documentos"
|
|
'End If
|
|
If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then
|
|
strBody.AppendFormat("<div style='width: 1000px'>")
|
|
strBody.AppendFormat(" <table style='width:1000px'>")
|
|
strBody.AppendFormat(" <tr>")
|
|
strBody.AppendFormat(" <td style='vertical-align: top'>")
|
|
strBody.AppendFormat(" <fieldset>")
|
|
strBody.AppendFormat(" <legend><b>Productos / Servicios <br/>{0}</b> </legend>", "")
|
|
strBody.AppendFormat(" <table width='1000px'>")
|
|
strBody.AppendFormat(" <tr style='background-color: gray; color: White; font-family: Verdana; font-size: 10px; text-align: center; vertical-align: middle; font-weight: bold; height: 20px; text-decoration: none;'>")
|
|
strBody.AppendFormat(" <th scope='col' style='width: 10%'>Cantidad</th>")
|
|
strBody.AppendFormat(" <th scope='col' style='width: 20%'>Unidad</th>")
|
|
strBody.AppendFormat(" <th scope='col' style='width: 70%'>Producto / Servicio</th>")
|
|
'strBody.AppendFormat(" <th scope='col' style='width: 40%'>Folio Fiscal</th>")
|
|
'strBody.AppendFormat(" <th scope='col' style='width: 15%'>NC Aplicadas</th>")
|
|
strBody.AppendFormat(" </tr>")
|
|
|
|
|
|
For Each dr As DataRow In ObjInventario.DtResultados.Rows
|
|
strBody.AppendFormat(" <tr class='Texto'>")
|
|
strBody.AppendFormat(" <td>{0}</td>", dr("Cantidad").ToString.FormatoNumero)
|
|
strBody.AppendFormat(" <td>{0}</td>", dr("UnidadMedida").ToString)
|
|
strBody.AppendFormat(" <td>{0}</td>", dr("CodigoPS").ToString)
|
|
'strBody.AppendFormat(" <td>{0}</td>", dr("FolioFiscal"))
|
|
'strBody.AppendFormat(" <td>{0}</td>", dr("ImporteNC").ToString.FormatoNumero)
|
|
strBody.AppendFormat(" </tr>")
|
|
Next
|
|
|
|
|
|
strBody.AppendFormat(" <tr class='Texto'>")
|
|
strBody.AppendFormat(" <td colspan='3'>")
|
|
strBody.AppendFormat(" <hr />")
|
|
strBody.AppendFormat(" </td>")
|
|
strBody.AppendFormat(" </tr>")
|
|
strBody.AppendFormat(" </table>")
|
|
strBody.AppendFormat(" </fieldset>")
|
|
strBody.AppendFormat(" </td>")
|
|
strBody.AppendFormat(" </tr>")
|
|
strBody.AppendFormat(" </table>")
|
|
strBody.AppendFormat("</div>")
|
|
End If
|
|
|
|
strBody.Append(" <div> Favor de no responder a este correo. </div> ")
|
|
|
|
strBody.Append("</body></html>")
|
|
|
|
|
|
End If
|
|
|
|
ObjInventario.Dispose()
|
|
Return strBody.ToString
|
|
End Function
|
|
|
|
#End Region
|
|
|
|
#Region "TIMBRADO"
|
|
Private Sub CreaObjetosVenta()
|
|
ObjFactura = New Modelos.Factura
|
|
ObjFactura.Version = "3.3"
|
|
ObjFactura.CveUsuario = UsuarioActual.CveUsuario
|
|
ObjFactura.CveEmpresa = UsuarioActual.CveEmpresa
|
|
ObjFactura.TipoCambio = 0
|
|
ObjFactura.ConvertirPesos = False
|
|
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.RefDocto = ""
|
|
ObjFactura.Folio = Folio.ToEntero
|
|
ObjFactura.Serie = "Tra"
|
|
ObjFactura.CveMesa = -1
|
|
ObjFactura.Fecha = Now
|
|
ObjFactura.CvePrePoliza = -1
|
|
ObjFactura.FechaPago = Now
|
|
ObjFactura.MotivoDescuento = ""
|
|
ObjFactura.Observaciones = ""
|
|
ObjFactura.FechaEjecucion = Now
|
|
ObjFactura.UsuarioCreo = UsuarioActual.Usuario
|
|
ObjFactura.CveCondicionEntrega = -1
|
|
ObjFactura.CondicionEntrega = ""
|
|
ObjFactura.NumeroCuenta = ""
|
|
ObjFactura.CondicionesPago = 0
|
|
ObjFactura.FormaPago = 0
|
|
ObjFactura.PedidoContrato = ""
|
|
ObjFactura.OrdenCompra = ""
|
|
ObjFactura.NumeroContrato = ""
|
|
ObjFactura.NumeroDescripcionContrato = ""
|
|
ObjFactura.DescripcionContrato = ""
|
|
ObjFactura.CveCorte = -1
|
|
ObjFactura.TipoDocumento = "Traspaso"
|
|
ObjFactura.Alfa1 = ""
|
|
ObjFactura.Alfa2 = ""
|
|
ObjFactura.Alfa3 = ""
|
|
ObjFactura.Descuento = 0
|
|
ObjFactura.Amortizacion = 0
|
|
ObjFactura.CveContrato = 0
|
|
ObjFactura.CveVendedor = 0
|
|
ObjFactura.FechaVencimiento = Now
|
|
ObjFactura.TipoEstatus = 0
|
|
ObjFactura.Det_OrdenCompra = ""
|
|
ObjFactura.Inv_CveEstatusEntrega = 0
|
|
ObjFactura.FormaPago33 = ""
|
|
ObjFactura.MetodoPago33 = ""
|
|
ObjFactura.UsoCFDI = ""
|
|
ObjFactura.CveClienteSucursal = 0
|
|
Dim CveSubProyecto As Integer = -1
|
|
If GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros($"CveAlmacen = {DdlAlmacenOrigen.SelectedValue}").Rows.Count > 0 Then
|
|
CveSubProyecto = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros($"CveAlmacen = {DdlAlmacenOrigen.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
|
|
|
|
'DETALLES
|
|
ObjFactura.DtDetalle = DtMovimientos
|
|
|
|
'SUBPROYECTO
|
|
ObjFactura.SetSubProyectoMatriz(Me)
|
|
ObjFactura.SetSubProyecto(Me)
|
|
|
|
ObjFactura.Inv_CveMovimiento = CveMovimientoTimbrado
|
|
|
|
ObjFactura.Timbre = PreParaTimbre(ObjFactura)
|
|
|
|
End Sub
|
|
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.FormaPagoSAT33
|
|
Timbre.Comprobante.CondicionesdePago = Obj.FormaPago33
|
|
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
|
|
|
|
Private Sub PrepararTimbrado(ByRef FM As Modelos.FemsaFactura, ByRef TmpDT7Eleven As DataTable, ByRef TmpDTComplementosTimbrado As DataTable)
|
|
FM.AplicaFEMSA = False
|
|
FM.FEMSA_NumSociedad = ""
|
|
FM.FEMSA_NumProveedor = ""
|
|
FM.FEMSA_Mail = ""
|
|
FM.FEMSA_Version = 0
|
|
FM.FEMSA_NumPedido = 0
|
|
FM.FEMSA_NumEntrada = ""
|
|
FM.FEMSA_NumRemision = ""
|
|
FM.FEMSA_NumSocio = ""
|
|
FM.FEMSA_CentroCosto = ""
|
|
FM.FEMSA_IPeriodoLiquidacion = ""
|
|
FM.FEMSA_FPeriodoLiquidacion = ""
|
|
FM.FEMSA_CodRetencion1 = ""
|
|
FM.FEMSA_CodRetencion2 = ""
|
|
|
|
TmpDT7Eleven.Columns.Add("sevenElevenNumProveedor")
|
|
TmpDT7Eleven.Columns.Add("sevenElevenFolio")
|
|
TmpDT7Eleven.Columns.Add("sevenElevenTienda")
|
|
TmpDT7Eleven.Columns.Add("sevenElevenFecha")
|
|
|
|
Dim Row As DataRow = TmpDT7Eleven.NewRow
|
|
Row("sevenElevenNumProveedor") = ""
|
|
Row("sevenElevenFolio") = ""
|
|
Row("sevenElevenTienda") = ""
|
|
Row("sevenElevenFecha") = ""
|
|
|
|
TmpDT7Eleven.Rows.Add(Row)
|
|
|
|
TmpDTComplementosTimbrado.Columns.Add("CveComplemento")
|
|
TmpDTComplementosTimbrado.Columns.Add("IdContabilidad")
|
|
TmpDTComplementosTimbrado.Columns.Add("TipoProceso")
|
|
TmpDTComplementosTimbrado.Columns.Add("TipoAmbito")
|
|
TmpDTComplementosTimbrado.Columns.Add("Entidad")
|
|
|
|
Dim Row2 As DataRow = TmpDTComplementosTimbrado.NewRow
|
|
|
|
Row2("CveComplemento") = ""
|
|
Row2("IdContabilidad") = ""
|
|
Row2("TipoProceso") = ""
|
|
Row2("TipoAmbito") = ""
|
|
Row2("Entidad") = ""
|
|
|
|
TmpDTComplementosTimbrado.Rows.Add(Row2)
|
|
End Sub
|
|
|
|
Private Sub Timbrar()
|
|
CreaObjetosVenta()
|
|
Dim ObjTimbrado As New Timbrado
|
|
Dim FM As New Modelos.FemsaFactura
|
|
Dim TmpDT7Eleven As New DataTable
|
|
Dim TmpDTComplementosTimbrado As New DataTable
|
|
PrepararTimbrado(FM, TmpDT7Eleven, TmpDTComplementosTimbrado)
|
|
MensajeAlert.Append("<br/><br/>")
|
|
If ObjTimbrado.TimbrarFactura(UsuarioActual, ObjFactura) Then
|
|
MensajeAlert.Append("Emitido con exito.")
|
|
'XML
|
|
Dim ArchivoXML = String.Format("{0}/XML/{1}/{2}.xml", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto, 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", ObjFactura.SerieFolio, ObjFactura.TipoDocto)))
|
|
End If
|
|
'PDF
|
|
GeneraPDFFactura()
|
|
Dim ArchivoPDF = String.Format("{0}/PDF/{1}/{2}.pdf", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto, 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", ObjFactura.SerieFolio, ObjFactura.TipoDocto)))
|
|
End If
|
|
|
|
MensajeAlert.AppendFormat("<ul><li><a class=""Texto"" href=""/Compras/PopUpVerFactura.aspx?P={0}"">Descargar Carta Porte</a></li></ul>", Encripta(String.Format("OP=CARPO&CVEMOV={0}", CveMovimientoTimbrado)))
|
|
|
|
Else
|
|
MensajeAlert.AppendFormat(ObjTimbrado.MensajeErrorCFDI)
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub GeneraPDFFactura()
|
|
Try
|
|
PdfFactura(ObjFactura)
|
|
Catch ex As Exception
|
|
Alert("Ocurrió un error al generar el PDF", TipoMensaje.MsgError)
|
|
End Try
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
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 BtnCargaExcelConceptos_Click(sender As Object, e As EventArgs)
|
|
If TxtExcelConceptos.getfiles().Archivos.Count > 0 Then
|
|
Dim file As Archivo = TxtExcelConceptos.getfiles().Archivos(0)
|
|
Dim Directorio As String = AppDomain.CurrentDomain.BaseDirectory & file.patch
|
|
CargarArchivoConceptos(Directorio, file.filename)
|
|
RegistraScript("$('#DivCargaExcelConceptos').modal('hide');")
|
|
Else
|
|
Alert("No existe el archivo. Favor de subir un archivo excel a la plataforma.", TipoMensaje.MsgError)
|
|
End If
|
|
End Sub
|
|
Protected Sub BtnDescargarFormatoExcelConceptos_Click(sender As Object, e As EventArgs)
|
|
Dim DtExcel As New DataTable
|
|
DtExcel.Columns.Add(New DataColumn("Cantidad", GetType(Decimal)))
|
|
DtExcel.Columns.Add(New DataColumn("Codigo", GetType(String)))
|
|
DtExcel.Columns.Add(New DataColumn("Producto", GetType(String)))
|
|
DtExcel.Columns.Add(New DataColumn("Serie", GetType(String)))
|
|
DtExcel.Columns.Add(New DataColumn("Observaciones", GetType(String)))
|
|
|
|
DtExcel.TableName = "Traspaso"
|
|
|
|
SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet)
|
|
|
|
Dim FileExcel As New ExcelFile()
|
|
|
|
Dim worksheet = FileExcel.Worksheets.Add(DtExcel.TableName)
|
|
worksheet.InsertDataTable(DtExcel, New InsertDataTableOptions() With
|
|
{
|
|
.ColumnHeaders = True,
|
|
.StartRow = 0,
|
|
.StartColumn = 0
|
|
})
|
|
worksheet.Rows(0).Style.FillPattern.SetPattern(FillPatternStyle.Solid, SpreadsheetColor.FromArgb(75, 119, 190), SpreadsheetColor.FromArgb(255, 255, 255))
|
|
worksheet.Rows(0).Style.Font.Color = SpreadsheetColor.FromArgb(255, 255, 255)
|
|
|
|
Dim columnCount = worksheet.CalculateMaxUsedColumns()
|
|
For i = 0 To columnCount
|
|
worksheet.Columns(i).AutoFit(1, worksheet.Rows(0), worksheet.Rows(worksheet.Rows.Count - 1))
|
|
Next
|
|
|
|
FileExcel.Save(Response, "Traspaso.xlsx", SaveOptions.XlsxDefault)
|
|
|
|
End Sub
|
|
|
|
Protected Sub CargarArchivoConceptos(Ruta As String, FileName As String)
|
|
SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet)
|
|
|
|
Dim dt As DataTable = Nothing
|
|
Dim ErrorArchivo = 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
|
|
|
|
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 = "Codigo" Then
|
|
Alert("El nombre de la segunda columna debe ser 'Codigo'. Favor de corregirlo", TipoMensaje.MsgError)
|
|
Exit Sub
|
|
End If
|
|
If Not dt.Columns(2).ColumnName = "Producto" Then
|
|
Alert("El nombre de la tercera columna debe ser 'Producto'. Favor de corregirlo", TipoMensaje.MsgError)
|
|
Exit Sub
|
|
End If
|
|
If Not dt.Columns(3).ColumnName = "Serie" Then
|
|
Alert("El nombre de la cuarta columna debe ser 'Serie'. Favor de corregirlo", TipoMensaje.MsgError)
|
|
Exit Sub
|
|
End If
|
|
If Not dt.Columns(4).ColumnName = "Observaciones" Then
|
|
Alert("El nombre de la quinta columna debe ser 'Observaciones'. Favor de corregirlo", TipoMensaje.MsgError)
|
|
Exit Sub
|
|
End If
|
|
|
|
dt.TableName = "Datos"
|
|
Dim ProductosNoCargados As New StringBuilder()
|
|
Dim RowsCargados As Integer = 0
|
|
Dim RowsNoCargados As Integer = 0
|
|
Dim NoPSConSerie As Integer = 0
|
|
Try
|
|
Dim DtPS As DataTable = GlobalDTPS(UsuarioActual.CveEmpresa)
|
|
For Each RowExcel As DataRow In dt.Rows
|
|
If RowExcel("Codigo").ToString() <> "" Then
|
|
|
|
|
|
Dim RowPS = DtPS.FiltroPrimero(String.Format("Codigo='{0}'", RowExcel("Codigo").ToString()))
|
|
|
|
Dim CveProducto As Integer = RowPS("CvePS").ToString().ToEntero()
|
|
Dim CveUnidadMedida As Integer = RowPS("CveUnidadMedida").ToString().ToEntero()
|
|
|
|
Dim Cantidad As Double = RowExcel("Cantidad").ToString().ToDecimal()
|
|
Dim Serie As String = RowExcel("Serie").ToString()
|
|
Dim Observaciones As String = RowExcel("Observaciones").ToString()
|
|
Dim FechaCaducidad As Date = MinFecha
|
|
Dim Lote As String = "-1"
|
|
|
|
If CveProducto > 0 Then
|
|
|
|
Dim Valido As Boolean = True
|
|
|
|
Dim CveMetodoInventario As Integer = RowPS("Inv_CveMetodoInventario").ToString().ToEntero()
|
|
|
|
If CveMetodoInventario = 5 And (String.IsNullOrEmpty(Serie.Trim()) OrElse Serie = "-1") Then
|
|
Valido = False
|
|
Alert($"El producto '{RowPS("PS")}' requiere 'Serie'", TipoMensaje.MsgAdvertencia)
|
|
ProductosNoCargados.AppendFormat("{0},", RowPS("PS").ToString())
|
|
End If
|
|
|
|
If CveMetodoInventario = 5 AndAlso Not String.IsNullOrEmpty(Serie.Trim()) Then
|
|
NoPSConSerie = NoPSConSerie + 1
|
|
End If
|
|
|
|
If Valido AndAlso (Cantidad > 0 AndAlso RowPS("VentaMinima").ToString.ToDecimal > 0) Then
|
|
If Cantidad Mod RowPS("VentaMinima").ToString.ToDecimal <> 0 Then
|
|
Valido = False
|
|
ProductosNoCargados.AppendFormat("{0},", RowPS("PS").ToString())
|
|
End If
|
|
End If
|
|
|
|
If Valido Then
|
|
Valido = ValidaExistencia(Cantidad, CveProducto, CveUnidadMedida, -1, If(Not String.IsNullOrEmpty(Serie), Serie, "-1"), Lote, FechaCaducidad)
|
|
End If
|
|
|
|
If Valido Then
|
|
AgregarPS(Cantidad, CveProducto, CveUnidadMedida, Observaciones, CveSeccionAlmacen:=DdlSeccionAlmacen.SelectedValue.ToEntero, SeccionAlmacen:=DdlSeccionAlmacen.SelectedItem.Text, Serie:=If(Not String.IsNullOrEmpty(Serie), Serie, ""), Limpia:=False)
|
|
RowsCargados = RowsCargados + 1
|
|
Else
|
|
RowsNoCargados = RowsNoCargados + 1
|
|
ProductosNoCargados.AppendFormat("{0},", RowPS("PS").ToString())
|
|
End If
|
|
|
|
Else
|
|
RowsNoCargados = RowsNoCargados + 1
|
|
ProductosNoCargados.AppendFormat("{0},", RowExcel("Producto").ToString())
|
|
End If
|
|
End If
|
|
Next
|
|
Catch ex As Exception
|
|
OnError("Ocurrió un error al cargar los productos." & ProductosNoCargados.ToString(), ex)
|
|
Finally
|
|
|
|
If NoPSConSerie > 0 Then
|
|
ThSerie.Visible = True
|
|
TdSerie.Visible = True
|
|
TxtnSerie.Visible = True
|
|
GvDatos.Columns(5).Visible = True
|
|
End If
|
|
|
|
Dim MensajeFinal As New StringBuilder()
|
|
If RowsNoCargados = 0 AndAlso RowsCargados > 0 Then
|
|
MensajeFinal.Append("Los productos se cargaron correctamente. <br/><br/>")
|
|
End If
|
|
If RowsCargados > 0 Then
|
|
MensajeFinal.Append("Se cargaron <b>" & RowsCargados & "</b> productos correctamente.")
|
|
End If
|
|
If RowsNoCargados > 0 Then
|
|
MensajeFinal.Append("No se pudieron cargar <b>" & RowsNoCargados & "</b> productos. <br/>Los siguientes productos no se pudieron cargar: " & ProductosNoCargados.ToString())
|
|
End If
|
|
|
|
Alert(MensajeFinal.ToString())
|
|
|
|
End Try
|
|
UpDatos.Update()
|
|
End If
|
|
End Sub
|
|
|
|
|
|
Private Function ReadExcelFile(ByVal flatFilePath As String, ByVal firstRowHasHeaders As Boolean) As DataTable
|
|
SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet)
|
|
Dim excelFile As ExcelFile = ExcelFile.Load(flatFilePath)
|
|
|
|
Dim unnamed As Integer = 0
|
|
Dim cols As Integer
|
|
Dim columns As String()
|
|
Dim curRow As Integer = 0
|
|
Dim curCol As Integer = 0
|
|
Dim dataTable As DataTable = New DataTable()
|
|
Dim worksheet As ExcelWorksheet = excelFile.Worksheets(0)
|
|
|
|
For cols = 0 To worksheet.Rows(0).AllocatedCells.Count - 1
|
|
|
|
If firstRowHasHeaders Then
|
|
|
|
If worksheet.Rows(0).Cells(cols).Value IsNot Nothing Then
|
|
dataTable.Columns.Add(worksheet.Rows(0).Cells(cols).Value.ToString())
|
|
Else
|
|
dataTable.Columns.Add("Unnamed Column " & (System.Threading.Interlocked.Increment(unnamed)))
|
|
End If
|
|
|
|
curRow = 1
|
|
Else
|
|
dataTable.Columns.Add("Column " & (cols + 1))
|
|
End If
|
|
Next
|
|
|
|
While curRow < worksheet.Rows.Count
|
|
columns = New String(cols - 1) {}
|
|
|
|
For curCol = 0 To cols - 1
|
|
|
|
If worksheet.Rows(curRow).Cells(curCol).Value Is Nothing Then
|
|
columns(curCol) = ""
|
|
Else
|
|
columns(curCol) = worksheet.Rows(curRow).Cells(curCol).Value.ToString()
|
|
End If
|
|
Next
|
|
|
|
dataTable.Rows.Add(columns)
|
|
curRow += 1
|
|
End While
|
|
|
|
Return dataTable
|
|
End Function
|
|
|
|
Public Sub CargarCamiones()
|
|
DdlUnidadCamion.Items.Clear()
|
|
Dim ObjInventarios As New ClsInventarios
|
|
If ObjInventarios.GetCamiones(-1, UsuarioActual.CveEmpresa) AndAlso ObjInventarios.DtResultados.Rows.Count > 0 Then
|
|
DdlUnidadCamion.DataSource = ObjInventarios.DtResultados
|
|
DtCamiones = ObjInventarios.DtResultados
|
|
End If
|
|
ObjInventarios.Dispose()
|
|
DdlUnidadCamion.Items.Insert(0, New ListItem("Otro", "-1"))
|
|
DdlUnidadCamion.DataBind()
|
|
End Sub
|
|
Public Sub BtnAgregarCamion_Click(sender As Object, e As EventArgs) Handles BtnAgregarCamion.Click
|
|
Dim ObjInventarios As New ClsInventarios
|
|
If ObjInventarios.AddCamiones(TxtPlacaNuevo.Text, TxtEspecificacionNuevo.Text, UsuarioActual.CveEmpresa) Then
|
|
RegistraScript("$('#DivAgregarNuevoCamion').modal('hide');")
|
|
CargarCamiones()
|
|
TxtPlacaNuevo.Text = ""
|
|
TxtEspecificacionNuevo.Text = ""
|
|
End If
|
|
ObjInventarios.Dispose()
|
|
End Sub
|
|
|
|
Private Sub DdlUnidadCamion_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlUnidadCamion.SelectedIndexChanged
|
|
If DdlUnidadCamion.SelectedValue = "-1" Then
|
|
'divPlacaEspecificacion.Visible = True
|
|
TxtPlaca.Text = ""
|
|
TxtEspecifUnidad.Text = ""
|
|
Else
|
|
'divPlacaEspecificacion.Visible = False
|
|
TxtPlaca.Text = DtCamiones.FiltroPrimeroValor("Placa", String.Format("CveCamion = {0}", DdlUnidadCamion.SelectedValue))
|
|
TxtEspecifUnidad.Text = DtCamiones.FiltroPrimeroValor("Especificacion", String.Format("CveCamion = {0}", DdlUnidadCamion.SelectedValue))
|
|
End If
|
|
End Sub
|
|
|
|
Protected Sub DdlAlmacenOrigen_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlAlmacenOrigen.SelectedIndexChanged
|
|
If UsuarioActual.Empresa.Funcionalidad(141) = "1" Then
|
|
CargaExistenciasSucursal()
|
|
End If
|
|
If DdlAlmacenOrigen.SelectedValue.ToEntero > 0 Then
|
|
DdlSeccionAlmacen.DataSource = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero)
|
|
DdlSeccionAlmacen.DataBind()
|
|
DdlSeccionAlmacen.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
UpDatos.Update()
|
|
|
|
CargaAlmacenDestino()
|
|
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub CargaAlmacenDestino()
|
|
|
|
Dim DrAlmO As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacenOrigen.SelectedValue.ToEntero).FiltroPrimero("")
|
|
If DrAlmO("CveTipoAlmacen").ToString.ToEntero = 26 Then 'costeados
|
|
|
|
DdlAlmacenDestino.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoAlmacen IN (26) AND Estatus = 'Activo'")
|
|
DdlAlmacenDestino.DataBind()
|
|
DdlAlmacenDestino.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
Else
|
|
|
|
Dim Str As String
|
|
If ChkTransitorio.Checked Then
|
|
Str = "" ' String.Format(" AND CveSubProyecto <> {0} ", DrAlmO("CveSubProyecto")) 'RMF. pueden haber almacen que esten dentro de lamisma sucursal, pero que requeiren transitorio
|
|
Else
|
|
Str = String.Format(" AND CveSubProyecto = {0} ", DrAlmO("CveSubProyecto"))
|
|
End If
|
|
DdlAlmacenDestino.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros(String.Format(" CveTipoAlmacen NOT IN (3,4,9,10,11,24,27,28) AND Estatus = 'Activo' {0} ", Str))
|
|
DdlAlmacenDestino.DataBind()
|
|
DdlAlmacenDestino.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
|
|
End If
|
|
End Sub
|
|
|
|
Protected Sub DdlAlmacenDestino_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlAlmacenDestino.SelectedIndexChanged
|
|
|
|
'If GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveTipoAlmacen", $"CveAlmacen = {DdlAlmacenDestino.SelectedValue.ToEntero}").ToString.ToEntero = 21 Then
|
|
' ChkTransitorio.Checked = False
|
|
' ChkTransitorio.Enabled = False
|
|
'Else
|
|
' ChkTransitorio.Enabled = True
|
|
'End If
|
|
If DdlAlmacenDestino.SelectedValue.ToEntero > 0 Then
|
|
DdlSeccionAlmacenDestino.DataSource = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa, DdlAlmacenDestino.SelectedValue.ToEntero)
|
|
DdlSeccionAlmacenDestino.DataBind()
|
|
DdlSeccionAlmacenDestino.Items.Insert(0, New ListItem("Seleccione", "-1"))
|
|
UpDatos.Update()
|
|
End If
|
|
End Sub
|
|
End Class
|