Imports Extensiones Partial Class Inventarios_PrestamosdeProveedor Inherits ClsPaginas Private Property CveProveedor As Integer Get Return ViewState("CveProveedor").ToString.ToEntero End Get Set(value As Integer) ViewState("CveProveedor") = value End Set End Property Private Property CveMovimiento As Integer Get Return ViewState("CveMovimiento").ToString.ToEntero End Get Set(value As Integer) ViewState("CveMovimiento") = value End Set End Property Private Sub Inventarios_PrestamosdeProveedor_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Page.IsPostBack Then CargaCombos() CveMovimiento = 0 CveProveedor = 0 CargaDatos() End If End Sub Private Sub CargaCombos() RVFechaEntrega.MaximumValue = Now.ToShortDateString ddlProveedor.setEsWebService(UsuarioActual.Empresa.Funcionalidad(105) = "1") If ddlProveedor.UsaWebService Then ddlProveedor.Attributes.Add("data-metodo", "getproveedores") Else ddlProveedor.DataSource = GlobalDTCompProveedores(UsuarioActual.CveEmpresa) ddlProveedor.DataBind() ddlProveedor.SelectedValue = "-1" ddlProveedor.SelectedText = "Seleccione el Proveedor" End If DdlAlmacenOrigen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 1) DdlAlmacenOrigen.DataBind() End Sub Private Sub CargaDatos() Dim tCveProveedor As Integer = -1 Dim tFolio As Integer = -1 If ddlProveedor.SelectedValue.ToEntero > 0 Then tCveProveedor = ddlProveedor.SelectedValue.ToEntero If TxtFolioEntrega.Text <> "" Then tFolio = TxtFolioEntrega.Text.ToEntero Dim ObjInv As New ClsInventarios If ObjInv.PrestamosdeProveedorGet(tCveProveedor, tFolio, UsuarioActual.CveEmpresa) Then GvD.DataSource = ObjInv.DtResultados Dim Dr As Data.DataRow = ObjInv.DtResultados.FiltroPrimero("") If Dr IsNot Nothing AndAlso tFolio > 0 Then CveProveedor = Dr("CveProveedor").ToString.ToEntero CveMovimiento = Dr("CveMovimiento").ToString.ToEntero End If End If ObjInv.Dispose() GvD.DataBind() UppEntrega.Update() End Sub Protected Sub GvD_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvD.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then '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: {0} ", 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("Proveedor: {0} ", e.Row.DBCampo("RazonSocial")) Else If TxtFolioEntrega.Text <> "" Then e.Row.FCCheckBox("Chk").Visible = True e.Row.FCTextBox("TxtCantidad").Enabled = True End If e.Row.FCTextBox("TxtCantidad").Visible = True e.Row.FCTextBox("TxtCantidad").Attributes.Add("onkeyup", String.Format("ValidaCantidad(this,{0});", e.Row.DBCampo("Cantidad"))) 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 BtnRecibir_Click(sender As Object, e As EventArgs) If GvD.Rows.Count > 0 Then 'Valida Movimientos Dim ValidaMovtos = 0.0 For Each gvr As GridViewRow In GvD.Rows If gvr.FCCheckBox("Chk").Checked AndAlso gvr.FCTextBox("TxtCantidad").Text.ToDecimal > 0 Then ValidaMovtos += gvr.FCTextBox("TxtCantidad").Text.ToDecimal If gvr.FCTextBox("TxtCantidad").Text.ToDecimal > 0 Then Dim Serie As String = "-1" Dim Lote As String = "-1" Dim FechaCaducidad As Date = MinFecha If gvr.DataKey("Serie") <> "" Then Serie = gvr.DataKey("Serie") If gvr.DataKey("Lote") <> "" Then Lote = gvr.DataKey("Lote") If gvr.DataKey("FechaCaducidad").ToDate > MinFecha Then FechaCaducidad = gvr.DataKey("FechaCaducidad") Dim Valido = ValidaExistencia(gvr.FCTextBox("TxtCantidad").Text.ToDecimal, gvr.DataKey("CvePS").ToEntero, gvr.DataKey("CveUM").ToEntero, gvr.DataKey("CveSeccionAlmacen").ToEntero, Serie:=Serie, Lote:=Lote, FechaCaducidad:=FechaCaducidad) If Not Valido Then Alert("No hay existencia del producto a devolver.", TipoMensaje.MsgAdvertencia) Exit Sub End If End If 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 ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) Dim CveMovimientoEntrada As Integer = 0 Dim Folio = 0 Dim ErrorMovInv As Boolean = False Dim TextoError = "" 'REGISTRA LA SALIDA Y ENTRADA (TRASPASO) Dim Fecha As Date = TxtFechaEntrega.Text.ToDate Dim CveMovimientoSalida As Integer Dim CvePS As Integer = 0 'AGREGAMOS LA SALIDA CveMovimientoSalida = ObjInventario.AddMovimiento(DdlAlmacenOrigen.SelectedValue.ToEntero, 29, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservacionesEntrega.Text.Trim, CveProveedor:=CveProveedor, CveMovimientoRelacionado:=CveMovimiento, Modulo:="PresP") Folio = ObjInventario.Folio If CveMovimientoSalida <= 0 Then TextoError = "No se pudo generar el movimiento de salida correctamente" ErrorMovInv = True Else Dim CveMovimientoDetalleEntrada As Integer = 0 For Each gvr As GridViewRow In GvD.Rows If gvr.FCCheckBox("Chk").Checked AndAlso gvr.FCTextBox("TxtCantidad").Text.ToString.ToDecimal > 0 Then CveMovimientoDetalleEntrada = gvr.DataKey("CveMovimientoDetalle").ToString.ToEntero CvePS = gvr.DataKey("CvePS").ToString.ToEntero If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, gvr.FCTextBox("TxtCantidad").Text.ToString.ToDecimal, gvr.DataKey("CveUM").ToString.ToEntero, gvr.DataKey("CvePS").ToString.ToEntero, 0, -1, CveMovimientoDetalleEntrada:=CveMovimientoDetalleEntrada, Serie:=gvr.DataKey("Serie").ToString, Lote:=gvr.DataKey("Lote").ToString, FechaCaducidad:=gvr.DataKey("FechaCaducidad").ToString.ToDate) Then ErrorMovInv = True TextoError = "Ocurrió un error al guardar los movimientos de salida" Exit For End If End If Next 'faltan las prepólizas If Not ErrorMovInv AndAlso ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inv/PrestamodeProvedor", 53, 0, 0, 1, Fecha, $" {TxtObservacionesEntrega.Text}", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoPoliza:=3) Dim tValorInventario As Decimal = ObjInventario.DtResultados.SUM("Total", "").ToDecimal.RoundSQL() Dim idCtaContable As Integer = 0 Dim IdCtaContableOtro As Integer = UsuarioActual.Empresa.IdCuentaOtrosIngresos Dim TipoMovtoAlmacen As Boolean = False Dim drA2 As Data.DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", DdlAlmacenOrigen.SelectedValue)) If drA2 IsNot Nothing Then idCtaContable = drA2("IdCtaContable").ToString.ToEntero Dim OrigenMov As Integer = GlobalDTInvConceptos.FiltroPrimeroValor("Origen", "CveConcepto = 29").ToEntero If OrigenMov = 1 Then TipoMovtoAlmacen = False Else TipoMovtoAlmacen = True Dim CveConceptoContable As Integer = 69 ' Dim CveSubProyecto As Integer = 0 Dim CveSubProyecto As Integer = -1 If ObjInventario.GetAlmacenes(-1, -1, UsuarioActual.CveEmpresa, -1) Then CveSubProyecto = ObjInventario.DtResultados.FiltraParametros($"CveAlmacen = {DdlAlmacenOrigen.SelectedValue.ToEntero } ").FiltroPrimeroValor("CveSubProyecto").ToString.ToEntero End If If CveSubProyecto <= 0 Then Alert("Debe de asignar un sub proyecto o centro de costos.", TipoMensaje.MsgAdvertencia) ErrorMovInv = True End If Dim CveClasifCosto As Integer = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveClasificacion", String.Format("CvePS ={0} ", CvePS)) IdCtaContableOtro = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCuentaCostos", $"CveClasificacion = {CveClasifCosto}").ToEntero If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovtoAlmacen, tValorInventario, TxtObservacionesEntrega.Text.Trim, 68, TxtObservacionesEntrega.Text.Trim, Fecha, idCtaContable, -1, CveMovimientoAlmacen:=CveMovimientoSalida, ImporteMX:=tValorInventario) Then ErrorMovInv = True Else If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovtoAlmacen, -tValorInventario, TxtObservacionesEntrega.Text.Trim, CveConceptoContable, TxtObservacionesEntrega.Text.Trim, Fecha, IdCtaContableOtro, -1, CveMovimientoAlmacen:=CveMovimientoSalida, CveClasificacion:=CveClasifCosto, ImporteMX:=-tValorInventario, CveSubProyecto:=CveSubProyecto) Then ErrorMovInv = True End If End If Else ErrorMovInv = True End If End If If Not ErrorMovInv Then ObjInventario.Commit() TxtRecibio.Text = "" TxtFechaEntrega.Text = Now.ToShortDateString TxtObservacionesEntrega.Text = "" HdnCveProveedor.Value = "" Dim Mensaje As StringBuilder = New StringBuilder Mensaje.AppendFormat("Se realizo correctamente la recepción.
Folio de Salida: {0}", Folio, CveMovimientoSalida) Mensaje.AppendFormat("
Imprimir Reporte", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoSalida))) 'onclick='ImprimirTraslado()' Alert(Mensaje.ToString, TipoMensaje.MsgInformacion) GvD.DataBind() CargaDatos() UPDatosAlmacen.Update() Else ObjInventario.RollBack() Alert(TextoError, TipoMensaje.MsgError) End If ObjInventario.Dispose() ' CargaEntrega() Else Alert("No hay movimientos por devolver", TipoMensaje.MsgAdvertencia) 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 Inv As New ClsInventarios Dim Existencia As Double = Inv.GetExistenciasPS(CvePS, CveUnidadMedida, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero, FechaMovto:=TxtFechaEntrega.Text.ToDate.ToString("yyyy/MM/dd 23:59"), Serie:=Serie, Lote:=Lote, FechaCaducidad:=FechaCaducidad, CveSeccionAlmacen:=CveSeccionAlmacen) Inv.Dispose() If Existencia - Cantidad < 0 Then If Existencia < 0 Then Alert("No hay existencia del producto", TipoMensaje.MsgAdvertencia) Else Alert(String.Format("Solo hay en existencia: {0}", Existencia), TipoMensaje.MsgAdvertencia) End If Retorno = False End If Return Retorno End Function Private Sub BtnCargaPendientes_Click(sender As Object, e As EventArgs) Handles BtnCargaPendientes.Click CargaDatos() End Sub End Class