diff --git a/App_Code/CFDITimbreRetenciones.vb b/App_Code/CFDITimbreRetenciones.vb new file mode 100644 index 000000000..12cc0135b --- /dev/null +++ b/App_Code/CFDITimbreRetenciones.vb @@ -0,0 +1,134 @@ +Option Strict On +Option Explicit On +Imports Extensiones + + +Public Class CFDITimbreRetenciones + Private StrMsg As StringBuilder + Public Property Retencion As CFDIRetencion + Public Property CFDIRelacionados As CFDIRelacionados + Public Property Fecha As DateTime + Public Property Emisor As CFDIEmisor + Public Property Receptor As CFDIReceptorR + Public Property RetencionesImpuestos As List(Of CFDIImpuestosRetenidos) + Public Property ISRCorrespondiente As Decimal = 0 + 'Public Property Complementos As CFDIComplementos + Public Property Timbrado As Boolean + Public Property IStimbreFiniquito As Boolean + + Public ReadOnly Property TotalOperacionRetenidos As Decimal + Get + Return (From c In RetencionesImpuestos + Where c.ImpuestoRetencion = "001" + Select c.MontoRetencion).Sum + End Get + End Property + + Public ReadOnly Property TotalImpuestosGravado As Decimal + Get + Return (From c In RetencionesImpuestos + Where c.ImpuestoRetencion = "001" + Select c.MontoRetencion).Sum + End Get + End Property + + Public ReadOnly Property TotalImpuestosRetenidos As Decimal + Get + Return (From c In RetencionesImpuestos + Where c.ImpuestoRetencion = "001" + Select c.MontoRetencion).Sum + End Get + End Property + Public ReadOnly Property TotalImpuestosExento As Decimal + Get + Return (From c In RetencionesImpuestos + Where c.ImpuestoRetencion = "001" + Select c.MontoRetencion).Sum + End Get + End Property + + + 'Public ReadOnly Property Retenciones As List(Of CFDIRetenciones) + ' Get + ' Dim tRetorno As New List(Of CFDIRetenciones) + ' Dim TRetenciones As New List(Of CFDIRetenciones) + ' For Each c As CFDIConceptos In Conceptos + ' For Each imp As CFDIConceptosImpuestos In c.Impuestos + ' If imp.TrasladooRetencion = "R" Then + ' tRetorno.Add(New CFDIRetenciones With {.Impuesto = imp.Impuesto, .Importe = imp.Importe}) + ' 'If imp.Impuesto = "001" Then RetencionISR += imp.Importe + ' 'If imp.Impuesto = "002" Then RetencionIVA += imp.Importe + ' 'If imp.Impuesto = "003" Then RetencionIEPS += imp.Importe + ' End If + ' Next + ' Next + ' If tRetorno.Count > 0 Then + ' TRetenciones = tRetorno.GroupBy(Function(t) New With {Key t.Impuesto}) _ + ' .Select(Function(t) New CFDIRetenciones With {.Impuesto = t.Key.Impuesto, + ' .Importe = t.Sum(Function(tt) tt.Importe)}) _ + ' .OrderBy(Function(x) x.Impuesto).ToList + ' End If + ' 'If RetencionISR > 0 Then Retorno.Add(New CFDIRetenciones With {.Impuesto = "001", .Importe = RetencionISR}) + ' 'if RetencionIVA > 0 Then Retorno.Add(New CFDIRetenciones With {.Impuesto = "002", .Importe = RetencionIVA}) + ' 'If RetencionIEPS > 0 Then Retorno.Add(New CFDIRetenciones With {.Impuesto = "003", .Importe = RetencionIEPS}) + ' tRetorno = Nothing + ' Return TRetenciones + + ' End Get + 'End Property + + Public ReadOnly Property Mensaje As String + Get + Return StrMsg.ToString + End Get + End Property + Sub New() + StrMsg = New StringBuilder + Retencion = New CFDIRetencion + CFDIRelacionados = New CFDIRelacionados + Emisor = New CFDIEmisor + Receptor = New CFDIReceptorR + RetencionesImpuestos = New List(Of CFDIImpuestosRetenidos) + 'Complementos = New CFDIComplementos + End Sub + + Public Sub AddMsg(Msg As String) + StrMsg.AppendLine(Msg) + End Sub + +End Class + +Public Class CFDIRetencion + Public Property Version As String + Public Property Serie As String = "" + Public Property Folio As String = "" + Public ReadOnly Property SerieFolio As String + Get + 'sino tiene serie no pone el guión + Return If(Serie = "", Folio, $"{Serie}-{Folio}") + End Get + End Property + Public Property ClaveRetencion As String = "28" + Public Property Fecha As Date + Public Property LugarExpedicion As String = "" + Public Property PeriodoMesInicio As String = "" + Public Property PeriodoMesFin As String = "" + Public Property PeriodoEjercicio As Integer = 0 + +End Class + + +Public Class CFDIReceptorR + Public Property RFCR As String + Public Property NombreDenominacionR As String + Public Property NacionalidadR As String = "Nacional" + Public Property DomicilioFiscalR As String = "" +End Class +Public Class CFDIImpuestosRetenidos + Public Property BaseRetencion As Decimal = 0.00D + Public Property ImpuestoRetencion As String = "" '001,002,003 + Public Property MontoRetencion As Decimal = 0.00D ' propiedad utilizada solo para hacer ajustes, por default toma la multiplicación de base * tasa + Public Property TipoPagoRetencion As String = "" + Public Property BaseRetencionGravado As Decimal = 0.00D + Public Property BaseRetencionExento As Decimal = 0.00D +End Class diff --git a/App_Code/ClsContabilidad.vb b/App_Code/ClsContabilidad.vb index 1964dcf3a..e21cb2136 100644 --- a/App_Code/ClsContabilidad.vb +++ b/App_Code/ClsContabilidad.vb @@ -3599,6 +3599,32 @@ Public Class ClsContabilidad Return Retorno End Function + + Public Function GetLibroMayor2(CveCuenta As Integer, FechaI As Date, FechaF As Date, CveMoneda As Integer, CveProyecto As Integer, CveSubProyecto As Integer, CveEmpresa As Integer, TipoReporte As String, OpcionCuentas As Integer) As Boolean + Dim Retorno As Boolean = False + + DataAdapter("PA_Conta_LibroMayor2Get") + + With SqlAdapter.SelectCommand.Parameters + .Add("@FechaI", SqlDbType.Date).Value = FechaI + .Add("@FechaF", SqlDbType.Date).Value = FechaF + .Add("@CveCuenta", SqlDbType.Int).Value = CveCuenta + .Add("@CveProyecto", SqlDbType.Int).Value = CveProyecto + .Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + .Add("@Tipo", SqlDbType.Int).Value = TipoReporte + .Add("@OpcionCuentas", SqlDbType.Int).Value = OpcionCuentas + End With + SqlAdapter.SelectCommand.CommandTimeout = 0 + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + Me.OnError("Ocurrió un error al obtener los Movimientos Libro mayor", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + + Return Retorno + End Function Public Function PolizaGet(CvePoliza As Integer) As Boolean Dim Retorno As Boolean = False diff --git a/App_Code/ClsInventarios.vb b/App_Code/ClsInventarios.vb index 0813ad5c8..9d36dd399 100644 --- a/App_Code/ClsInventarios.vb +++ b/App_Code/ClsInventarios.vb @@ -4495,24 +4495,24 @@ Public Class ClsInventarios Return Retorno End Function - Public Function UpdateOSEstatusInventario(CveOS As Integer, Estatus As Boolean, CveEmpresa As Integer) As Boolean - Dim Retorno As Boolean = False - - DataAdapter("PA_OS_OSEstatusInventarioUpdate") - - With SqlAdapter.SelectCommand.Parameters + Public Function UpdateOSEstatusInventario(CveOS As Integer, Estatus As Boolean, CveEmpresa As Integer) As Boolean + Dim Retorno As Boolean = False + + DataAdapter("PA_OS_OSEstatusInventarioUpdate") + + With SqlAdapter.SelectCommand.Parameters .Add("@CveOS", SqlDbType.Int).Value = CveOS - .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa - End With - - Try - SqlAdapter.Fill(Data) - Retorno = True - Catch ex As Exception - OnError("Ocurrió un error al actualizar el estatus de OS.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) - End Try - - Return Retorno + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al actualizar el estatus de OS.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno End Function #End Region diff --git a/App_Code/ClsMovimientos.vb b/App_Code/ClsMovimientos.vb index 2f8a91298..dfc6f3027 100644 --- a/App_Code/ClsMovimientos.vb +++ b/App_Code/ClsMovimientos.vb @@ -1539,7 +1539,7 @@ Public Class ClsMovimientos Public Function GetRepRecuperacion(FechaI As Date, FechaF As Date, CveCliente As Integer, CveSubProyecto As Integer, CveVendedor As Integer, CveUsuario As Integer, CveEstatus As Integer, IVA As String, CveEmpresa As Integer, Gpo As Integer, CveResponsable As Integer, - Optional TipoDocto As String = "-1", + Optional TipoDocto As String = "-1", Optional CveProyecto As Integer = -1, Optional EstatusCliente As Integer = -1, Optional CveUsuarioConsulta As Integer = -1, Optional CveBanco As Integer = -1, Optional CveCuenta As Integer = -1, Optional TipoCambio As Integer = -1, Optional TCEspecifico As Double = 0, Optional CveClienteClasificacion As Integer = -1, @@ -1554,6 +1554,7 @@ Public Class ClsMovimientos .Add("@FechaI", SqlDbType.Date).Value = FechaI .Add("@FechaF", SqlDbType.Date).Value = FechaF .Add("@CveCliente", SqlDbType.Int).Value = CveCliente + .Add("@CveProyecto", SqlDbType.Int).Value = CveProyecto .Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto .Add("@CveVendedor", SqlDbType.VarChar).Value = CveVendedor .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario @@ -1588,7 +1589,7 @@ Public Class ClsMovimientos End Try Return Retorno End Function - Public Function GetRepRecuperacionPerido(FechaI As Date, FechaF As Date, CveCliente As Integer, CveSubProyecto As Integer, + Public Function GetRepRecuperacionPerido(FechaI As Date, FechaF As Date, CveCliente As Integer, CveProyecto As Integer, CveSubProyecto As Integer, CveVendedor As Integer, CveUsuario As Integer, CveEstatus As Integer, IVA As String, CveEmpresa As Integer, Gpo As Integer, CveResponsable As Integer, TipoDocto As String, EstatusCliente As Integer, CveUsuarioConsulta As Integer, @@ -1600,6 +1601,7 @@ Public Class ClsMovimientos .Add("@FechaI", SqlDbType.Date).Value = FechaI .Add("@FechaF", SqlDbType.Date).Value = FechaF .Add("@CveCliente", SqlDbType.Int).Value = CveCliente + .Add("@CveProyecto", SqlDbType.Int).Value = CveProyecto .Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto .Add("@CveVendedor", SqlDbType.VarChar).Value = CveVendedor .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario @@ -1627,7 +1629,7 @@ Public Class ClsMovimientos Public Function GetRepRecuperacionDetalle(FechaI As Date, FechaF As Date, CveCliente As Integer, CveSubProyecto As Integer, CveVendedor As Integer, CveUsuario As Integer, CveClienteSucursal As Integer, CveEstatus As Integer, IVA As String, Agrupador As Integer, CveEmpresa As Integer, - CveResponsable As Integer, Optional TipoDocto As String = "-1", + CveResponsable As Integer, Optional TipoDocto As String = "-1", Optional CveProyecto As Integer = -1, Optional CveUsuarioConsulta As Integer = -1, Optional CveBanco As Integer = -1, Optional CveCuenta As Integer = -1, Optional Grupo As String = "-1", Optional TipoCambio As Integer = -1, Optional TCEspecifico As Double = 0, @@ -1644,6 +1646,7 @@ Public Class ClsMovimientos .Add("@FechaI", SqlDbType.Date).Value = FechaI .Add("@FechaF", SqlDbType.Date).Value = FechaF .Add("@CveCliente", SqlDbType.Int).Value = CveCliente + .Add("@CveProyecto", SqlDbType.Int).Value = CveProyecto .Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto .Add("@CveVendedor", SqlDbType.VarChar).Value = CveVendedor .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario diff --git a/App_Code/ClsOC.vb b/App_Code/ClsOC.vb index a9083317b..5f7256e58 100644 --- a/App_Code/ClsOC.vb +++ b/App_Code/ClsOC.vb @@ -1670,7 +1670,8 @@ Public Class ClsOC FechaFin As Date, CveOrdenCompra As Integer, CveProveedor As Integer, Folio As Integer, CveUsuarioRegistro As Integer, CveUsuario As Integer, CveEmpresa As Integer, CvePS As Integer, Optional PendientePorSurtir As Boolean = False, Optional CveCliente As Integer = -1, Optional Guia As String = "-1", Optional CveActivoFijo As Integer = -1, Optional SoloSubProyectosConPermiso As Boolean = False, Optional CveUsuarioAutorizo As Integer = -1, - Optional CveUsuarioAsignado As Integer = -1, Optional EntregaDirecta As Integer = -1, Optional TopSelect As Integer = 10000, Optional CveMoneda As Integer = -1, Optional MetodoPago As Integer = -1) As Boolean + Optional CveUsuarioAsignado As Integer = -1, Optional EntregaDirecta As Integer = -1, Optional TopSelect As Integer = 10000, Optional CveMoneda As Integer = -1, + Optional MetodoPago As Integer = -1, Optional Serie As String = "-1") As Boolean Dim Retorno As Boolean = False DataAdapter("PA_OC_OrdenesCompraRep") @@ -1701,6 +1702,7 @@ Public Class ClsOC .Add("@TopSelect", SqlDbType.Int).Value = TopSelect .Add("@CveMoneda", SqlDbType.Int).Value = CveMoneda .Add("@MetodoPago", SqlDbType.Int).Value = MetodoPago + .Add("@Serie", SqlDbType.VarChar).Value = Serie End With diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 2a64841fe..c67828485 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -9719,6 +9719,7 @@ Public Class ClsPaginas PaginaDict.Add("/General/JAMComparativos.aspx".ToUpper(), 643) PaginaDict.Add("/General/CatMotivoRechazoGuias.aspx".ToUpper(), 729) PaginaDict.Add("/General/FolioFechaCancelacion.aspx".ToUpper(), -1) + PaginaDict.Add("/General/TimbraRetencion.aspx".ToUpper(), 588) #Region "####### Q U I T A R #######" 'PaginaDict.Add("/Contratos/Estimaciones.aspx".ToUpper(), -1) @@ -10172,6 +10173,9 @@ Public Class ClsPaginas PaginaDict.Add("/Contabilidad/RepEstadoResultadosHorizontal.aspx".ToUpper(), 420) PaginaDict.Add("/Contabilidad/RepAnexoCatalogoMensualHorizontal.aspx".ToUpper(), -1) PaginaDict.Add("/Contabilidad/CatBloqueoDiario.aspx".ToUpper(), 680) + PaginaDict.Add("/Contabilidad/LibroMayor2.aspx".ToUpper(), 1353) + + #End Region #Region "Contratos" '--------------------- C O N T R A T O S - P R E S U P U E S T O S --------------------- @@ -10822,6 +10826,10 @@ Public Class ClsPaginas PaginaDict.Add("/Ventas/CatPSSubProyectosVendedores.aspx".ToUpper(), 787) #End Region +#Region "VIA" + PaginaDict.Add("/VIA/TripsChecks.aspx".ToUpper(), 1351) + PaginaDict.Add("/VIA/RepTripsChecks.aspx".ToUpper(), 1352) +#End Region #Region "Varios" 'Portal Cliente/Proveedor PaginaDict.Add("/PortalCliente/PortalCliente.aspx".ToUpper(), 1101) diff --git a/App_Code/ClsSisUsuarioAutenticacion.vb b/App_Code/ClsSisUsuarioAutenticacion.vb index 5b8070cbc..d4d25cdd9 100644 --- a/App_Code/ClsSisUsuarioAutenticacion.vb +++ b/App_Code/ClsSisUsuarioAutenticacion.vb @@ -34,34 +34,6 @@ Public Class ClsSisUsuarioAutenticacion End Get End Property - - Public Property CveUsuario As Integer - Public Property Usuario As String - Public Property Nombre As String - Public Property CveRol As Integer - Public Property Correo As String - Public Property CveSupervisa As Integer - Public Property CveAutoriza As Integer - Public Property CveEmpresa As Integer - Public Property CveAlmacen As Integer - Public Property CveEmpresaPredeterminada As Integer - Public Property CvePersonal As Integer - Public Property CveVendedor As Integer - Public Property CveTipoDocumento As String - Public Property Estado As Boolean - Public Property Fecha As DateTime - Public Property Registro As Integer - Public Property UsuarioCreo As String - Public Property Contraseña As String - Public Property EsLogIn As Integer - Public Property FechaUltimoAcceso As Date - Public Property FechaUltimoCambioContraseña As Date - Public Property PolCambiarContraseña As Boolean - Public Property TipoControl As Integer - Public Property CveSubProyecto As Integer - Public Property AsignarAutomaticamenteSubProyecto As Boolean - Public Property AsignarAutomaticamenteOC As Boolean - Public Property DescuentoAutorizado As Double #End Region Sub New(Optional TransaccionCompartida As SqlTransaction = Nothing, Optional NombreCadena As String = "Conexion") @@ -342,7 +314,7 @@ Public Class ClsSisUsuarioAutenticacion Retorno.Acceso = Data.Rows(0)("Acceso").ToString().ToEntero() Retorno.CveUsuario = Data.Rows(0)("CveUsuario").ToString().ToEntero() - Retorno.Usuario = Usuario + Retorno.Usuario = Data.Rows(0)("Usuario").ToString() Retorno.Contraseña = Data.Rows(0)("Contraseña").ToString() Retorno.Nombre = Data.Rows(0)("Nombre").ToString() Retorno.CveRol = Data.Rows(0)("CveRol").ToString().ToEntero() @@ -354,6 +326,7 @@ Public Class ClsSisUsuarioAutenticacion Retorno.FechaUltimoAcceso = Data.Rows(0)("FechaUltimoAcceso").ToString().ToDate() Retorno.FechaUltimoCambioContraseña = Data.Rows(0)("FechaUltimoCambioContraseña").ToString().ToDate() Retorno.ActCambiarContraseña = If(Data.Rows(0)("ActCambiarContraseña").ToString() = "SI", True, False) + 'Retorno.PolCambiarContraseña = If(Data.Rows(0)("PolCambiarContraseña").ToString() = "SI", True, False) Retorno.TipoControl = Data.Rows(0)("TipoControl").ToString().ToEntero() '* Retorno.CveProveedor = Data.Rows(0)("CveProveedor").ToString().ToEntero() @@ -400,6 +373,8 @@ Public Class ClsSisUsuarioAutenticacion Return Retorno End Function + + 'Public Function ValidaUsuarioAsignacion(CveUsuario As Integer, CveEmpresa As Integer) As Usuario ' Dim Retorno As Usuario = Nothing diff --git a/App_Code/ClsSisUsuarios.vb b/App_Code/ClsSisUsuarios.vb index 0dd213315..06c89f0a9 100644 --- a/App_Code/ClsSisUsuarios.vb +++ b/App_Code/ClsSisUsuarios.vb @@ -575,6 +575,35 @@ Public Class ClsSisUsuarios Return Retorno End Function + + Public Function UpdateUsuarioContrasenia(Contrasenia As String, CveUsuario As Integer, CveEmpresa As Integer) As Boolean + Dim Retorno As Boolean = False + + DataAdapter("UPDATE U SET [Contraseña] = @Contrasenia, FechaUltimoCambioContraseña = GETDATE() FROM Usuarios U WHERE U.CveUsuario = @CveUsuario ", CommandType.Text) + + With SqlAdapter.SelectCommand.Parameters + + .Add("@Contrasenia", SqlDbType.VarChar).Value = Contrasenia + .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch Ex1 As SqlException + If Ex1.Message.Contains("Número: 2627;") Then + Alert("Ya existe un Usuario con el mismo nombre: " & Usuario & ".", TipoMensaje.MsgAdvertencia) + Else + Me.OnError("Ocurrió un error al guardar los cambios en el Usuario", Ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End If + Catch ex As Exception + OnError("Ocurrió un error al guardar los cambios en el Usuario.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + End Function Public Function AddUsuarioAsignar(CvePersonal As Integer, CveVendedor As Integer, CveSubProyecto As Integer, CveAlmacen As Integer, CveTipoDocumento As String, CveEmpresa As Integer, CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False @@ -723,34 +752,6 @@ Public Class ClsSisUsuarios Return Retorno End Function - Public Function UpdateUsuarioContrasenia(Contrasenia As String, CveUsuario As Integer, CveEmpresa As Integer) As Boolean - Dim Retorno As Boolean = False - - DataAdapter("UPDATE U SET [Contraseña] = @Contrasenia, FechaUltimoCambioContraseña = GETDATE() FROM Usuarios U WHERE U.CveUsuario = @CveUsuario ", CommandType.Text) - - With SqlAdapter.SelectCommand.Parameters - - .Add("@Contrasenia", SqlDbType.VarChar).Value = Contrasenia - .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario - .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa - - End With - - Try - SqlAdapter.Fill(Data) - Retorno = True - Catch Ex1 As SqlException - If Ex1.Message.Contains("Número: 2627;") Then - Alert("Ya existe un Usuario con el mismo nombre: " & Usuario & ".", TipoMensaje.MsgAdvertencia) - Else - Me.OnError("Ocurrió un error al guardar los cambios en el Usuario", Ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) - End If - Catch ex As Exception - OnError("Ocurrió un error al guardar los cambios en el Usuario.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) - End Try - - Return Retorno - End Function Public Function RemoveUsuario(CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False diff --git a/Bancos/PopIECompras.aspx b/Bancos/PopIECompras.aspx index 48e01ca67..5f33cdea9 100644 --- a/Bancos/PopIECompras.aspx +++ b/Bancos/PopIECompras.aspx @@ -433,8 +433,7 @@
- -
+ @@ -485,7 +484,8 @@ - + +
diff --git a/Bancos/PopIECompras.aspx.vb b/Bancos/PopIECompras.aspx.vb index c4bc99aac..38f68f496 100644 --- a/Bancos/PopIECompras.aspx.vb +++ b/Bancos/PopIECompras.aspx.vb @@ -1501,7 +1501,7 @@ Partial Class Bancos_PopIECompras End If If RBLContado.SelectedValue.ToEntero = 6 And ChkEmitirComplementoPago.Checked Then GeneraTimbre(CvePrePoliza) Else Alert(StrMsg.ToString, TipoMensaje.MsgInformacion, "self.parent.tb_remove();self.parent.location.reload();") - EnviarCorreoNotificacion(CveIE, NotificarA, "", UsuarioActual, False) + If NotificarA <> "" Then EnviarCorreoNotificacion(CveIE, NotificarA, "", UsuarioActual, False) Else ObjIE.RollBack() @@ -1574,7 +1574,7 @@ Partial Class Bancos_PopIECompras Banco.IniciaTransacSQL() - If Banco.GeneraTimbrePago(CveIE, -1, UsuarioActual, CvePrePoliza:=CvePrePoliza) Then + If Banco.GeneraTimbrePago(-1, -1, UsuarioActual, CvePrePoliza:=CvePrePoliza) Then If Banco.Mensaje = "" Then Banco.Commit() PDFReciboDePagos(-1, -1, Banco.CveComplementoPago, False) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index a24cdb404..6f1b1b0c9 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -14902,7 +14902,7 @@ Partial Class Compras_Compras AjusteProntoPagoConIVA = (ImporteCompraConIVA - ImporteOCConIVA) AjusteProntoPagoSinIVA = (ImporteCompraSinIVA - ImporteOCSinIVA) - If ConfirmaVinculacionOCProntoPago() Then + If ConfirmaVinculacionOCProntoPago(AjusteProntoPagoPorcentajeIVA) Then Vinculacion() End If @@ -21246,14 +21246,18 @@ Partial Class Compras_Compras End Set End Property - Public Function ConfirmaVinculacionOCProntoPago() As Boolean + Public Function ConfirmaVinculacionOCProntoPago(AjusteProntoPagoPorcentajeIVA As Decimal) As Boolean If VincularOcProntoPago Then Return True Else - Dim StrMsg As String = $"Existe una diferencia de ${(ImporteRNC + ImporteRNCProntoPago).ToString("###,###,###.00")} entre la compra y la Orden de Compra.
Se generaran Remisiones de Nota de Crédito.
- Descuento de ${ImporteRNC.ToString("###,###,###.00")}.
" - If ImporteRNCProntoPago > 0 Then - StrMsg = StrMsg & $"- Pronto pago de ${ImporteRNCProntoPago.ToString("###,###,###.00")}" + + Dim TmpImporteRNC As Decimal = If(AjusteProntoPagoPorcentajeIVA > 0, ImporteRNC + (ImporteRNC * AjusteProntoPagoPorcentajeIVA), ImporteRNC) + Dim TmpImporteRNCProntoPago As Decimal = If(AjusteProntoPagoPorcentajeIVA > 0, ImporteRNCProntoPago + (ImporteRNCProntoPago * AjusteProntoPagoPorcentajeIVA), ImporteRNCProntoPago) + + Dim StrMsg As String = $"Existe una diferencia de ${(TmpImporteRNC + TmpImporteRNCProntoPago).ToString("###,###,###.00")} entre la compra y la Orden de Compra.
Se generaran Remisiones de Nota de Crédito.
- Descuento de ${TmpImporteRNC.ToString("###,###,###.00")}.
" + If TmpImporteRNCProntoPago > 0 Then + StrMsg = StrMsg & $"- Pronto pago de ${TmpImporteRNCProntoPago.ToString("###,###,###.00")}" End If LblModalConfirmaVinculacionProntoPago.Text = StrMsg diff --git a/Contabilidad/LibroMayor2.aspx b/Contabilidad/LibroMayor2.aspx new file mode 100644 index 000000000..176e9ab44 --- /dev/null +++ b/Contabilidad/LibroMayor2.aspx @@ -0,0 +1,246 @@ +<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="LibroMayor2.aspx.vb" Inherits="Conta_LibroMayor2" EnableEventValidation="false" %> + + + + + + +
  • + Generar EXCEL +
  • +
  • + Imprimir +
  • + +
    + + Libro Mayor + + + + + +
    +
    +
    + + "><%--class="expand"--%> + +
    +
    +
    +
    + Cuenta: +
    +
    + + + + + +
    +
    + Fecha Inicio: +
    +
    +
    + + + + +
    + + + + + + +
    +
    + Fecha Fin: +
    +
    +
    + + + + +
    + + + + + + +
    +
    +
    +
    +
    > +
    +
    + Tipo Movto +
    +
    + + + + + + + +
    +
    + Tipo +
    +
    + + + + + +
    +
    + Proyecto: +
    +
    + + +
    + SubProyecto: +
    + + +
    + +
    +
    +
    +
    +
    +
    + " style="display: inline-block; margin-right: -20px; width: 150px;" /> + " style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"> +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    CuentaNombreSaldo Inicial
    FechaTipoNúmeroConceptoReferenciaReferencia MovtoSubProyectoCargosAbonosSaldo
    +
    + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Saldo Inicial: + + +
    + + + + + + +
    + +
    +
    + + + + + + + + + + + +
    +
    + +
    +
    +
    + +
    +
    + + + + + +
    + + + + + diff --git a/Contabilidad/LibroMayor2.aspx.vb b/Contabilidad/LibroMayor2.aspx.vb new file mode 100644 index 000000000..800fb365f --- /dev/null +++ b/Contabilidad/LibroMayor2.aspx.vb @@ -0,0 +1,456 @@ +Option Explicit On +Option Strict On + +Imports System.Data +Imports Extensiones +Imports Microsoft.Reporting.WebForms + +Partial Class Conta_LibroMayor2 + Inherits ClsPaginas + + +#Region "PROPIEDADES" + Private Property DtDatos As DataTable + Get + DtDatos = DirectCast(ViewState("DtDatos"), DataTable) + End Get + + Set(ByVal value As DataTable) + ViewState("DtDatos") = value + End Set + End Property + Private Property DtTotales As DataTable + Get + DtTotales = DirectCast(ViewState("DtTotales"), DataTable) + End Get + + Set(ByVal value As DataTable) + ViewState("DtTotales") = value + End Set + End Property + Private Property FechaInicio As Date + Get + FechaInicio = ViewState("FechaInicio").ToString.ToDate + End Get + Set(value As Date) + ViewState("FechaInicio") = value + End Set + End Property + Private Property FechaFin As Date + Get + FechaFin = ViewState("FechaFin").ToString.ToDate + End Get + Set(value As Date) + ViewState("FechaFin") = value + End Set + End Property + + Private Property TotalPadre As Boolean + Get + TotalPadre = CBool(ViewState("TotalPadre")) + End Get + Set(value As Boolean) + ViewState("TotalPadre") = value + End Set + End Property + Private Property DTCuentas As DataTable + Get + Return CType(ViewState("DTCuentas"), DataTable) + End Get + Set(value As DataTable) + ViewState("DTCuentas") = value + End Set + End Property + Private Property TipoReporte As String + Get + TipoReporte = ViewState("TP").ToString + End Get + Set(value As String) + ViewState("TP") = value + End Set + End Property + Private Property Cuenta As String + Get + Return ViewState("Cuenta").ToString + End Get + Set(value As String) + ViewState("Cuenta") = 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 + + 'If UsuarioActual.Empresa.TipoContabilidad = 2 AndAlso UsuarioActual.CveEmpresa <> 119 Then + ' Response.Redirect($"/Contabilidad/RepMovimientosAuxiliaresCatalogo.aspx") + 'End If + + Dim ErrorParametros As Boolean = True + + CargaTipoCuentas() + 'TxtCuenta.Enabled = False + + txtFechaI.Text = NowADS().FirstDayOfMonth.ToShortDateString + txtFechaF.Text = NowADS().LastDayOfMonth.ToShortDateString + + + If Request("CveCuenta") IsNot Nothing AndAlso IsNumeric(Request("CveCuenta")) AndAlso Request("CveCuenta").ToEntero > 0 Then + If Request("FF") IsNot Nothing AndAlso Request("FF").ToString.Length = 10 AndAlso Request("FF").ToDate > "01/01/1000".ToDate Then + + FechaFin = Request("FF").ToDate + txtFechaF.Text = FechaFin.ToShortDateString + + DdlCuentas.SelectedValueExist(Request("CveCuenta").ToEntero) + + + If Request("FI") IsNot Nothing AndAlso Request("FI").ToString.Length = 10 AndAlso Request("FI").ToDate > "01/01/1000".ToDate Then + FechaInicio = Request("FI").ToDate + txtFechaI.Text = FechaInicio.ToShortDateString + Else + FechaInicio = DateSerial(Year(FechaFin), Month(FechaFin), 1) + TxtFechaF.Text = FechaInicio.ToShortDateString + End If + + If Request("CveProyecto") IsNot Nothing AndAlso IsNumeric(Request("CveProyecto")) Then + DdlProyecto.SelectedValueExist(Request("CveProyecto")) + DdlProyecto_SelectedIndexChanged(Nothing, Nothing) + End If + + If Request("CveSubProyecto") IsNot Nothing AndAlso IsNumeric(Request("CveSubProyecto")) Then + DdlSubproyecto.SelectedValueExist(Request("CveSubProyecto")) + End If + + ErrorParametros = False + + If Request("TP") IsNot Nothing AndAlso IsNumeric(Request("TP")) AndAlso Request("TP").ToEntero > 0 Then + TipoReporte = Request("TP").ToString + + ' DdlTipoReporte.SelectedValue = TipoReporte.ToString + End If + + + ''If DdlTipoCuentas.Items.FindByValue(IdCuenta.ToString) IsNot Nothing Then + '' DdlTipoCuentas.SelectedValue = IdCuenta.ToString + ''Else + '' DdlTipoCuentas.SelectedValue = "-2" + '' TxtCuenta.Enabled = True + + '' If DTCuentas.FiltraParametros(String.Format("Cvecuenta = {0}", IdCuenta)).Rows.Count > 0 Then + '' TxtCuenta.Text = DTCuentas.FiltraParametros(String.Format("CveCuenta = {0}", IdCuenta)).Rows(0)("Codigo").ToString + '' End If + ''End If + + End If + End If + + + If Not ErrorParametros Then + TotalPadre = True + TipoReporte = "1" + CargaDatos() + End If + + End If + End Sub + + Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs) + If DdlCuentas.SelectedValue.ToEntero = -2 Then + Alert("El campo Cuenta es obligatorio.", TipoMensaje.MsgError) + Else + FechaInicio = If(txtFechaI.Text = "" Or txtFechaI.Text = "__/__/____", NowADS(), txtFechaI.Text.ToDate) + FechaFin = If(txtFechaF.Text = "" Or txtFechaF.Text = "__/__/____", NowADS(), txtFechaF.Text.ToDate) + + CargaDatos() + End If + ' Imprimir_click(sender, e) + 'RegistraScript("Enable();") + End Sub + +#Region "C A R G A - D A T O S" + Public Function WSCuentas() As String + Dim Str As New StringBuilder + Dim i As Integer = 0 + Dim dt As DataTable = DTCuentas + + For Each dr As DataRow In dt.Rows + i += 1 + Str.AppendFormat("{{value:""{0}"",label:""{1}""}}{2}", dr("CveCuenta"), dr("Codigo").ToString.Replace("""", ""), If(i < dt.Rows.Count, ",", "")) + Next + + Return Str.ToString + End Function + Private Sub CargaTipoCuentas() + + Dim ObjTipoCuenta As New ClsContabilidad + DdlCuentas.Enabled = True + + If ObjTipoCuenta.GetCuentas(-1, "-1", -1, UsuarioActual.CveEmpresa) Then + DTCuentas = ObjTipoCuenta.DtResultados + DdlCuentas.DataSource = ObjTipoCuenta.DtResultados.FiltraParametros("Codigo NOT IN ('_ACTIVO', '_PASIVO', '_CAPITAL', '_CUADRE', '_ESTADISTICAS', '_ORDEN', '_RACREEDOR', '_RDEUDOR', '_UTILIDAD')") + + End If + ObjTipoCuenta.Dispose() + DdlCuentas.DataBind() + + CargarCentrosDeCosto(DdlProyecto, DdlSubproyecto, LblProyecto, LblSubProyecto, divProyecto:=divProyecto) + + End Sub + + Protected Sub DdlProyecto_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlProyecto.SelectedIndexChanged + CargarSubProyecto(DdlSubproyecto, DdlProyecto.SelectedValue, "Todos") + End Sub + Private Sub CargaDatos() + + Dim CveProyecto As Integer = DdlProyecto.SelectedValue.ToEntero + Dim CveSubProyecto As Integer = DdlSubproyecto.SelectedValue.ToEntero + TipoReporte = DdlTipoReporte.SelectedValue.ToString + 'If TipoReporte = "1" And DdlCuentas.SelectedValue.ToEntero < 0 Then + ' Alert("No ha seleccionado cuenta, Favor de especificar una", TipoMensaje.MsgAdvertencia) + ' Exit Sub + 'End If + + Cuenta = DdlCuentas.SelectedItem.ToString + Dim ObjConta As New ClsContabilidad + If ObjConta.GetLibroMayor2(DdlCuentas.SelectedValue.ToEntero, FechaInicio, FechaFin, -1, CveProyecto, CveSubProyecto, UsuarioActual.CveEmpresa, TipoReporte, DdlOpcionCuentas.SelectedValue.ToEntero) Then + DtDatos = ObjConta.DtResultados + DtTotales = DtDatos.Clone + + CargaGrid() + Else + DtDatos = Nothing + End If + + ObjConta.Dispose() + End Sub +#End Region + + Private Sub InsertaTotales() + Dim i As Integer = 0 + Dim Aumento As Integer = 0 + Dim Row As DataRow + Dim Row2 As DataRow + + 'Llena DtTotales + For Each dr As DataRow In DtDatos.Rows + If dr("Concepto").ToString = "" Then + + Row = DtTotales.NewRow + + Row("CveCuenta") = -1 + Row("CargosMovto") = If("1" = "1", dr("Cargos"), dr("CargosME")) + Row("AbonosMovto") = If("1" = "1", dr("Abonos"), dr("AbonosME")) + Row("Saldo") = dr("SaldoActual") + Row("CtaMayor") = dr("CtaMayor") + Row("Concepto") = String.Format("Total {0}:", dr("Nombre")) + Row("Nombre") = dr("Nombre") + DtTotales.Rows.Add(Row) + Row("Clasificacion") = i + End If + + i += 1 + Next + + 'Inserta Totales en DtDatos + For Each dr As DataRow In DtTotales.Rows + i = 0 + + If dr("CtaMayor").ToString = "1" Then + DtDatos.ImportRow(dr) + End If + + If dr("CtaMayor").ToString = "2" Then + For index As Integer = dr("Clasificacion").ToString.ToEntero + Aumento To DtDatos.Rows.Count + If DtDatos.Rows(index)("Nombre").ToString <> dr("Nombre").ToString Then + i = index + Exit For + End If + Next + + Row2 = DtDatos.NewRow + Row2.ItemArray = dr.ItemArray + + DtDatos.Rows.InsertAt(Row2, i + Aumento) + Aumento += 1 + End If + + Next + + End Sub + + +#Region "G R I D - GV DATOS" + Private Sub CargaGrid() + GvDatos.DataSource = DtDatos + 'GvDatos.Dispose() + GvDatos.DataBind() + UpDatos.Update() + End Sub + Protected Sub GvDatos_RowDataBound(sender As Object, e As GridViewRowEventArgs) + If e.Row.RowType = DataControlRowType.DataRow Then + + If e.Row.DBCampo("Concepto") = "" Then + e.Row.ControlStyle.Font.Bold = True + e.Row.ControlStyle.Height = 35 + + 'Cuando es Titulo + If e.Row.DBCampo("SaldoActual") = "" Then + CType(e.Row.FindControl("tr2"), HtmlTableRow).Visible = False + + + 'Cuando Es Total + Else + CType(e.Row.FindControl("tr1"), HtmlTableRow).Visible = False + + 'Anterior para TotalPadre + 'If e.Row.DBCampo("CtaMayor").ToString = "2" And (e.Row.DBCampo("Nivel3").ToString <> "" Xor e.Row.DBCampo("Orden").ToString.Length = 18) Then + ' e.Row.FCLabel("LbReferencia").Text = "Total:" + 'Else + ' e.Row.FCLabel("LbConcepto").Text = String.Format("Total {0}:", e.Row.DBCampo("Nombre").ToString) + 'End If + + If TotalPadre Then + CType(e.Row.FindControl("tr2"), HtmlTableRow).Cells(3).Width = "1px" + 'CType(e.Row.FindControl("tr2"), HtmlTableRow).Cells.Remove(CType(e.Row.FindControl("tr2"), HtmlTableRow).Cells(3)) + CType(e.Row.FindControl("tr2"), HtmlTableRow).Cells(3).Align = "Right" + CType(e.Row.FindControl("tr2"), HtmlTableRow).Cells(3).Width = "400px" + If e.Row.RowIndex + 1 = DtDatos.Rows.Count Then + CType(e.Row.FindControl("tr2"), HtmlTableRow).Cells(4).Attributes.Add("style", "border-top: 1px solid black;") + CType(e.Row.FindControl("tr2"), HtmlTableRow).Cells(5).Attributes.Add("style", "border-top: 1px solid black;") + CType(e.Row.FindControl("tr2"), HtmlTableRow).Cells(6).Attributes.Add("style", "border-top: 1px solid black;") + End If + e.Row.FCLabel("LbReferencia").Text = String.Format("Total {0}:", e.Row.DBCampo("Nombre").ToString) + + + Else + TotalPadre = True + e.Row.FCLabel("LbReferencia").Font.Bold = False + e.Row.FCLabel("LbReferencia").Text = "Total:" + CType(e.Row.FindControl("tr2"), HtmlTableRow).Cells(4).Align = "Right" + End If + + 'e.Row.FCLabel("LbReferencia").Text = String.Format("Total {0}:", If(e.Row.DBCampo("CtaMayor").ToString = "2", "", e.Row.DBCampo("Nombre").ToString)) + e.Row.FCLabel("LbCargos").Text = e.Row.DBCampo("Cargos").ToString.FormatoNumero(If("1" = "1", 2, 4)) + e.Row.FCLabel("LbAbonos").Text = e.Row.DBCampo("Abonos").ToString.FormatoNumero(If("1" = "1", 2, 4)) + e.Row.FCLabel("LbSaldo").Text = e.Row.DBCampo("SaldoActual").ToString.FormatoNumero(If("1" = "1", 2, 4)) + End If + + Else + TotalPadre = False + e.Row.ControlStyle.Font.Bold = False + CType(e.Row.FindControl("tr1"), HtmlTableRow).Visible = False + e.Row.FCHyperLink("HLPoliza").NavigateUrl = String.Format("/Contabilidad/RegPrePolizas.aspx?CvePrePoliza={0}", e.Row.DBCampo("CvePoliza")) + + If e.Row.DBCampo("CargosMovto").ToDouble <> 0 Then e.Row.FCLabel("LbCargos").Text = e.Row.DBCampo("CargosMovto").ToString.FormatoNumero(If("1" = "1", 2, 4)) + If e.Row.DBCampo("AbonosMovto").ToDouble <> 0 Then e.Row.FCLabel("LbAbonos").Text = e.Row.DBCampo("AbonosMovto").ToString.FormatoNumero(If("1" = "1", 2, 4)) + If e.Row.DBCampo("Saldo").ToDouble <> 0 Then e.Row.FCLabel("LbSaldo").Text = e.Row.DBCampo("Saldo").ToString.FormatoNumero(If("1" = "1", 2, 4)) + + End If + + + 'COLOREA NEGATIVOS + If e.Row.FCLabel("LbCargos").Text.ToDouble < 0 Then + e.Row.FCLabel("LbCargos").ForeColor = Drawing.Color.Red + Else + e.Row.FCLabel("LbCargos").ForeColor = Drawing.Color.Black + End If + + If e.Row.FCLabel("LbAbonos").Text.ToDouble < 0 Then + e.Row.FCLabel("LbAbonos").ForeColor = Drawing.Color.Red + Else + e.Row.FCLabel("LbAbonos").ForeColor = Drawing.Color.Black + End If + + If e.Row.FCLabel("LbSaldo").Text.ToDouble < 0 Then + e.Row.FCLabel("LbSaldo").ForeColor = Drawing.Color.Red + Else + e.Row.FCLabel("LbSaldo").ForeColor = Drawing.Color.Black + End If + + If e.Row.FCLabel("LbSaldoInicial").Text.ToDouble < 0 Then + e.Row.FCLabel("LbSaldoInicial").ForeColor = Drawing.Color.Red + Else + e.Row.FCLabel("LbSaldoInicial").ForeColor = Drawing.Color.Black + End If + + End If + End Sub + +#End Region + + Protected Sub Imprimir_click(sender As Object, e As EventArgs) Handles Imprimir.Click + If DdlCuentas.SelectedValue.ToEntero = -1 Then + Alert("El campo Cuenta es obligatorio.", TipoMensaje.MsgError) + Else + FechaInicio = If(txtFechaI.Text = "" Or txtFechaI.Text = "__/__/____", NowADS(), txtFechaI.Text.ToDate) + FechaFin = If(txtFechaF.Text = "" Or txtFechaF.Text = "__/__/____", NowADS(), txtFechaF.Text.ToDate) + + DtDatos = DtDatos + ImprimirReporte() + End If + End Sub + + Protected Sub ImgExcel_Click(sender As Object, e As EventArgs) Handles ImgExcel.Click + ImprimirReporte("Excel") + + 'Dim htmlTabe As New HtmlTable + 'Dim RutaLogo As String = $"{UsuarioActual.Empresa.Ruta}Logo.png" + 'Dim strinLiteral As String = "" + + 'Dim EncabezadoLiteral As New LiteralControl + + + + 'If System.IO.File.Exists(RutaLogo) Then + ' RutaLogo = $"http://{Request.Url.Host }/Empresas/{UsuarioActual.CveEmpresa}/Logo.png" + + ' strinLiteral = $" + ' + ' + ' + ' + ' + ' + '

    {UsuarioActual.Empresa.Empresa}
    Movimientos Auxiliares del Catálogo

    Fecha:{NowADS().ToString("dd/MM/yyyy")}
    + ' Filtros Cuenta: {DdlCuentas.SelectedItem.Text} Fecha inicio: { TxtFechaDel.Text} Fecha Fin: {TxtFechaAl.Text} + ' + '
    " + 'Else + ' strinLiteral = $" + ' + ' + ' + ' + ' + ' + '

    {UsuarioActual.Empresa.Empresa}
    Movimientos Auxiliares del Catálogo

    Fecha:{NowADS().ToString("dd/MM/yyyy")}
    + ' Filtros Cuenta: {DdlCuentas.SelectedItem.Text} Fecha inicio: { TxtFechaDel.Text} Fecha Fin: {TxtFechaAl.Text} + ' + + '
    " + 'End If + + 'EncabezadoLiteral.Text = strinLiteral + 'GvDatos.ExportToExcel($"MovimientosAuxiliares_{NowADS().ToString("yyyyMMddmmss")}", Encabezado2:=EncabezadoLiteral) + + End Sub + + Private Sub ImprimirReporte(Optional Formato As String = "PDF") + + Dim params As New List(Of ReportParameter) + params.Add(New ReportParameter("pEmp", UsuarioActual.Empresa.Empresa)) + Dim Imagen As New System.IO.FileInfo($"{UsuarioActual.Empresa.Ruta}/Logo.png") + params.Add(New ReportParameter("pImg", If(Imagen.Exists, $"file://{Imagen.FullName}", ""))) + params.Add(New ReportParameter("pFechaFin", FechaFin.ToString("dd/MM/yyyy"))) + params.Add(New ReportParameter("pFechaInicio", FechaInicio.ToString("dd/MM/yyyy"))) + params.Add(New ReportParameter("CveMoneda", "1")) + params.Add(New ReportParameter("Cuenta", Cuenta)) + ImprimirPDF("Empresas/Grales/Formatos/RepMovimientosAuxiliaresCatalogo.rdlc", DtDatos, params, "MovimientosAuxiliares", Formato) + + End Sub + Public Overrides Sub VerifyRenderingInServerForm(control As Control) + + End Sub + + +End Class diff --git a/Contabilidad/RepBalanzaComprobacion.aspx b/Contabilidad/RepBalanzaComprobacion.aspx index 5cd0c879a..703e6c717 100644 --- a/Contabilidad/RepBalanzaComprobacion.aspx +++ b/Contabilidad/RepBalanzaComprobacion.aspx @@ -10,6 +10,9 @@ Imprimir <%--  --%> +
  • + Imprimir por Sub Proyecto +
  • diff --git a/Contabilidad/RepBalanzaComprobacion.aspx.vb b/Contabilidad/RepBalanzaComprobacion.aspx.vb index 96760e3c7..d8ca1cafc 100644 --- a/Contabilidad/RepBalanzaComprobacion.aspx.vb +++ b/Contabilidad/RepBalanzaComprobacion.aspx.vb @@ -5,6 +5,12 @@ Imports System Imports System.Data Imports Extensiones Imports Microsoft.Reporting.WebForms +Imports ClosedXML.Excel +Imports Profact.TimbraCFDI40 +Imports System.IO +Imports System.Drawing + + Partial Class Contabilidad2_RepBalanzaComprobacion Inherits ClsPaginas @@ -105,6 +111,10 @@ Partial Class Contabilidad2_RepBalanzaComprobacion End If CargarCentrosDeCosto(DdlProyecto, DdlSubproyecto, LblProyecto, LblSubProyecto) + If UsuarioActual.CveRol = 1 Then + BtnImprimirPoSubProyecto.Visible = True + End If + End If End Sub @@ -254,4 +264,238 @@ Partial Class Contabilidad2_RepBalanzaComprobacion ImprimirPDF(reportpath, DtDatos, params, fileName, Formato) End Sub + + Protected Sub BtnImprimirPoSubProyecto_Click(sender As Object, e As EventArgs) + + Dim WBAnexoBalanza = New ClosedXML.Excel.XLWorkbook + Dim TipoReporte = DdlTipoReporte.SelectedValue.ToEntero + + FechaInicio = If(TxtFechaDel.Text = "" Or TxtFechaDel.Text = "__/__/____", NowADS(), TxtFechaDel.Text.ToDate) + FechaFin = If(TxtFechaAl.Text = "" Or TxtFechaAl.Text = "__/__/____", NowADS(), TxtFechaAl.Text.ToDate) + + Dim SPCounter As Integer = 1 + For Each drSP As DataRow In GlobalDTSubProyectos(UsuarioActual.CveEmpresa).Rows + + Dim ObjConta As New ClsContabilidad + If ObjConta.GetBalanzaComprobacion(FechaInicio, FechaFin, 2, TipoReporte, -1, drSP("CveSubProyecto").ToString.ToEntero, UsuarioActual.CveEmpresa, DdlVista.SelectedValue.ToEntero, DdlNivel.SelectedValue.ToEntero) Then + DtDatos = ObjConta.DtResultados + Else + DtDatos = Nothing + Alert("Ocurrio un error al cargar los datos del Anexo del Catálogo", TipoMensaje.MsgError) + Exit For + End If + ObjConta.Dispose() + + If DtDatos.Rows.Count > 0 Then + WBAnexoBalanza.AddWorksheet(WSDocumento(drSP("SubProyecto").ToString, DtDatos)) + Dim spNombre As String = drSP("SubProyecto").ToString().Replace(":", "_").Replace("/", "_").Replace("\", "_").Replace("?", "_").Replace("*", "_").Replace("[", "_").Replace("]", "_") + WBAnexoBalanza.Worksheet(SPCounter).Name = $"{SPCounter}_{spNombre}" + SPCounter = SPCounter + 1 + + End If + + + Next + + Dim msB = New MemoryStream() + WBAnexoBalanza.SaveAs(msB) + + Dim BB As Byte() = msB.ToArray + msB.Dispose() + + Response.Clear() + Response.Buffer = True + Response.AddHeader("content-disposition", "attachment; filename=Balanza_" & Now.ToString("yyyyMMddhhmmss") & ".xlsx") + Response.ContentType = "application/vnd.ms-excel" + Response.BinaryWrite(BB) + Response.End() + + End Sub + + + Function WSDocumento(SubProyecto As String, DtDatos As DataTable) As IXLWorksheet + + + Dim WBAnexoSalvar = New ClosedXML.Excel.XLWorkbook + Dim WBReporte = New ClosedXML.Excel.XLWorkbook() + WBReporte.Worksheets.Add("1") + + Dim WSReporte = WBReporte.Worksheet(1) + + Dim RutaLogo As String = String.Format("{0}Logo.png", UsuarioActual.Empresa.Ruta) + If File.Exists(RutaLogo) Then + + Dim imagePath As String = RutaLogo + Dim img As Bitmap = New Bitmap(imagePath) + Dim picture = WSReporte.AddPicture(img).MoveTo(WSReporte.Cell("A1")) + picture.Scale(0.5) + + End If + + Dim Tamaniofuente As Integer = 13 + Dim Range = WSReporte.Range("A1:D1") + + WSReporte.Style.Font.FontSize = 10 + WSReporte.Style.Font.FontName = "Arial Narrow" + + WSReporte.Style.Alignment.WrapText = True + + Range.Merge().Style.Font.SetBold().Font.FontSize = Tamaniofuente + + WSReporte.Range("A1:F1").Merge().Style.Font.SetBold().Font.FontSize = Tamaniofuente + WSReporte.Range("A2:F2").Merge().Style.Font.SetBold().Font.FontSize = Tamaniofuente + WSReporte.Range("A3:F3").Merge().Style.Font.SetBold().Font.FontSize = Tamaniofuente + WSReporte.Range("A4:F4").Merge().Style.Font.SetBold().Font.FontSize = Tamaniofuente + WSReporte.Range("A5:F5").Merge().Style.Font.SetBold().Font.FontSize = Tamaniofuente + + WSReporte.Range("A1:A5").Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center) + + WSReporte.Column(1).Width = 15 + WSReporte.Column(2).Width = 35 + WSReporte.Column(3).Width = 14 + WSReporte.Column(4).Width = 14 + WSReporte.Column(5).Width = 14 + WSReporte.Column(6).Width = 14 + WSReporte.Column(7).Width = 14 + + WSReporte.Cell(1, 1).Value = UsuarioActual.Empresa.Empresa + WSReporte.Cell(2, 1).Value = $"Balanza de Comprobación del {TxtFechaDel.Text} al {TxtFechaAl.Text}" + + WSReporte.Cell(5, 1).Value = $"Sub Proyecto: {SubProyecto}" + WSReporte.Cell(5, 1).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left + WSReporte.Cell(5, 1).Style.Font.Bold = True + + WSReporte.Cell(6, 1).Value = "Cuenta" + WSReporte.Cell(6, 2).Value = "Nombre" + WSReporte.Cell(6, 1).Style.Alignment.Vertical = XLAlignmentVerticalValues.Center + WSReporte.Cell(6, 2).Style.Alignment.Vertical = XLAlignmentVerticalValues.Center + + WSReporte.Cell(6, 3).Value = $"Saldos Iniciales{vbCrLf}Deudor Acreedor" + WSReporte.Cell(6, 4).Value = $"Cargos" + WSReporte.Cell(6, 5).Value = $"Abonos" + WSReporte.Cell(6, 6).Value = $"Saldo Actuales{vbCrLf} Deudor Acreedo" + + WSReporte.Range("A6:F6").Style.Font.Bold = True + WSReporte.Range("A6:F6").Style.Font.FontSize = 10 + WSReporte.Range("A6:F6").Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center) + WSReporte.Range("A6:F6").Style.Border.TopBorder = ClosedXML.Excel.XLBorderStyleValues.Medium + WSReporte.Range("A6:F6").Style.Border.BottomBorder = ClosedXML.Excel.XLBorderStyleValues.Medium + WSReporte.Range("A6:F6").Style.Border.RightBorder = ClosedXML.Excel.XLBorderStyleValues.Medium + + Dim CuerrentRow As Integer = 7 + + CuerrentRow = CuerrentRow + 1 + + For Each Drow As DataRow In DtDatos.Rows + + WSReporte.Cell(CuerrentRow, 1).Value = Drow("Codigo").ToString + WSReporte.Cell(CuerrentRow, 2).Value = Drow("Nombre").ToString + WSReporte.Cell(CuerrentRow, 3).Value = Drow("SaldoInicial").ToString + WSReporte.Cell(CuerrentRow, 4).Value = Drow("Cargos").ToString + WSReporte.Cell(CuerrentRow, 5).Value = Drow("Abonos").ToString + WSReporte.Cell(CuerrentRow, 6).Value = Drow("SaldoActual").ToString + + If Drow("CtaMayor").ToString.ToEntero.Contiene(1) Then + + WSReporte.Cell(CuerrentRow, 1).Style.Font.Bold = True + WSReporte.Cell(CuerrentRow, 2).Style.Font.Bold = True + WSReporte.Cell(CuerrentRow, 3).Style.Font.Bold = True + WSReporte.Cell(CuerrentRow, 4).Style.Font.Bold = True + WSReporte.Cell(CuerrentRow, 5).Style.Font.Bold = True + WSReporte.Cell(CuerrentRow, 6).Style.Font.Bold = True + + If Drow("CtaMayor").ToString.ToEntero.Contiene(1) Then + WSReporte.Cell(CuerrentRow, 1).Style.Alignment.Indent = 1 + WSReporte.Cell(CuerrentRow, 1).Style.Font.Italic = True + End If + + Else + WSReporte.Cell(CuerrentRow, 1).Style.Alignment.WrapText = True + WSReporte.Cell(CuerrentRow, 1).Style.Alignment.Indent = 2 + End If + + WSReporte.Cell(CuerrentRow, 2).Style.NumberFormat.Format = "#,##0.00; [Black] - #,##0.00 ;""-""" + WSReporte.Cell(CuerrentRow, 3).Style.NumberFormat.Format = "#,##0.00; [Black] - #,##0.00 ;""-""" + WSReporte.Cell(CuerrentRow, 4).Style.NumberFormat.Format = "#,##0.00; [Black] - #,##0.00 ;""-""" + WSReporte.Cell(CuerrentRow, 5).Style.NumberFormat.Format = "#,##0.00; [Black] - #,##0.00 ;""-""" + WSReporte.Cell(CuerrentRow, 6).Style.NumberFormat.Format = "#,##0.00; [Black] - #,##0.00 ;""-""" + + CuerrentRow = CuerrentRow + 1 + Next + + + For xy As Integer = 6 To CuerrentRow + WSReporte.Cell(xy, 6).Style.Border.RightBorder = ClosedXML.Excel.XLBorderStyleValues.Medium + WSReporte.Cell(xy, 1).Style.Border.LeftBorder = ClosedXML.Excel.XLBorderStyleValues.Medium + Next + + CuerrentRow = CuerrentRow + 1 + + WSReporte.Cell(CuerrentRow, 1).Style.Alignment.Vertical = XLAlignmentVerticalValues.Center + WSReporte.Cell(CuerrentRow, 2).Style.Alignment.Vertical = XLAlignmentVerticalValues.Center + + WSReporte.Cell(CuerrentRow, 3).Value = $"Saldos Iniciales{vbCrLf}Deudor Acreedor" + WSReporte.Cell(CuerrentRow, 4).Value = $"Cargos" + WSReporte.Cell(CuerrentRow, 5).Value = $"Abonos" + WSReporte.Cell(CuerrentRow, 6).Value = $"Saldo Actuales{vbCrLf} Deudor Acreedo" + + WSReporte.Cell(CuerrentRow, 1).Style.Border.BottomBorder = ClosedXML.Excel.XLBorderStyleValues.Medium + WSReporte.Cell(CuerrentRow, 2).Style.Border.BottomBorder = ClosedXML.Excel.XLBorderStyleValues.Medium + WSReporte.Cell(CuerrentRow, 3).Style.Border.BottomBorder = ClosedXML.Excel.XLBorderStyleValues.Medium + WSReporte.Cell(CuerrentRow, 4).Style.Border.BottomBorder = ClosedXML.Excel.XLBorderStyleValues.Medium + WSReporte.Cell(CuerrentRow, 5).Style.Border.BottomBorder = ClosedXML.Excel.XLBorderStyleValues.Medium + WSReporte.Cell(CuerrentRow, 6).Style.Border.BottomBorder = ClosedXML.Excel.XLBorderStyleValues.Medium + WSReporte.Range($"A{CuerrentRow}:F{CuerrentRow}").Style.Font.Bold = True + WSReporte.Range($"A{CuerrentRow}:F{CuerrentRow}").Style.Font.FontSize = 10 + WSReporte.Range($"A{CuerrentRow}:F{CuerrentRow}").Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center) + WSReporte.Range($"A{CuerrentRow}:F{CuerrentRow}").Style.Border.TopBorder = ClosedXML.Excel.XLBorderStyleValues.Medium + WSReporte.Range($"A{CuerrentRow}:F{CuerrentRow}").Style.Border.BottomBorder = ClosedXML.Excel.XLBorderStyleValues.Medium + WSReporte.Range($"A{CuerrentRow}:F{CuerrentRow}").Style.Border.RightBorder = ClosedXML.Excel.XLBorderStyleValues.Medium + + CuerrentRow = CuerrentRow + 1 + + Dim ultimaFila As DataRow = DtDatos.Rows(DtDatos.Rows.Count - 1) + + Dim LastSaldoID As Decimal = ultimaFila("SaldoID").ToString.ToDecimal + Dim LastTotalAbonos As Decimal = ultimaFila("TotalAbonos").ToString.ToDecimal + Dim LastTotalCargos As Decimal = ultimaFila("TotalCargos").ToString.ToDecimal + Dim LastSaldoAD As Decimal = ultimaFila("SaldoAD").ToString.ToDecimal + Dim LastSaldoIA As Decimal = ultimaFila("SaldoIA").ToString.ToDecimal + Dim LastSaldoAA As Decimal = ultimaFila("SaldoAA").ToString.ToDecimal + + WSReporte.Cell(CuerrentRow, 2).Value = "Sumas Iguales" + WSReporte.Cell(CuerrentRow, 3).Value = LastSaldoID + WSReporte.Cell(CuerrentRow, 4).Value = LastTotalCargos + WSReporte.Cell(CuerrentRow, 5).Value = LastTotalAbonos + WSReporte.Cell(CuerrentRow, 6).Value = LastSaldoAD + + WSReporte.Cell(CuerrentRow, 3).Style.NumberFormat.Format = "#,##0.00; [Black] - #,##0.00 ;""-""" + WSReporte.Cell(CuerrentRow, 4).Style.NumberFormat.Format = "#,##0.00; [Black] - #,##0.00 ;""-""" + WSReporte.Cell(CuerrentRow, 5).Style.NumberFormat.Format = "#,##0.00; [Black] - #,##0.00 ;""-""" + WSReporte.Cell(CuerrentRow, 6).Style.NumberFormat.Format = "#,##0.00; [Black] - #,##0.00 ;""-""" + + + CuerrentRow = CuerrentRow + 1 + + WSReporte.Cell(CuerrentRow, 3).Value = LastSaldoIA + WSReporte.Cell(CuerrentRow, 6).Value = LastSaldoAA + + + WSReporte.Cell(CuerrentRow, 3).Style.NumberFormat.Format = "#,##0.00; [Black] - #,##0.00 ;""-""" + WSReporte.Cell(CuerrentRow, 6).Style.NumberFormat.Format = "#,##0.00; [Black] - #,##0.00 ;""-""" + + WSReporte.Range($"B{CuerrentRow}:F{CuerrentRow}").Style.Border.BottomBorder = ClosedXML.Excel.XLBorderStyleValues.Medium + + WSReporte.PageSetup.PrintAreas.Add($"A1:G{CuerrentRow + 0 + 1}") + WSReporte.PageSetup.Margins.Top = 0.3 + WSReporte.PageSetup.Margins.Left = 0.8 + WSReporte.PageSetup.Margins.Right = 0.8 + WSReporte.PageSetup.FitToPages(1, 1) + + WBReporte.Worksheet(1).CopyTo(WBAnexoSalvar, "SubProyecto") + + Return WBReporte.Worksheet(1) + + End Function + End Class diff --git a/General/TimbraRetencion.aspx b/General/TimbraRetencion.aspx new file mode 100644 index 000000000..4b95fe6dc --- /dev/null +++ b/General/TimbraRetencion.aspx @@ -0,0 +1,171 @@ +<%@ Page Title="" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="TimbraRetencion.aspx.vb" Inherits="General_TimbraRetencion" %> + + + + + + + + Timbrados de retenciones + + + + + + +
  • + Agregar Retención
  • + +
    +
    +
  • + Genera Excel +
  • +
    + + + + + + + diff --git a/General/TimbraRetencion.aspx.vb b/General/TimbraRetencion.aspx.vb new file mode 100644 index 000000000..d62ce4858 --- /dev/null +++ b/General/TimbraRetencion.aspx.vb @@ -0,0 +1,345 @@ +Option Explicit On +Option Strict On +Imports System.IO +Imports System.Data +Imports System.Xml +Imports System.Xml.Serialization +Imports ADSNetLibrary.PacsTimbrado.SAT +Imports Extensiones +Imports Profact.TimbraCFDI40 + +Partial Class General_TimbraRetencion + Inherits ClsPaginas + +#Region "PROPIEDADES" + Private Property CveMarca() As Integer + Get + Return If(IsNothing(ViewState("CveMarca")), -1, CInt(ViewState("CveMarca"))) + End Get + Set + ViewState("CveMarca") = Value + End Set + End Property + Private Property Modalidad() As String + Get + Return If(IsNothing(ViewState("Modalidad")), "", (ViewState("Modalidad").ToString)) + End Get + Set + ViewState("Modalidad") = Value + End Set + End Property + + Private Property DtDetalle As Data.DataTable + Get + Return If(IsNothing(ViewState("DtDetalle")), Nothing, CType(ViewState("DtDetalle"), DataTable)) + End Get + Set(value As DataTable) + ViewState("DtDetalle") = value + End Set + End Property + +#End Region + + Private Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load + If Not IsPostBack Then + DdlClientes.setEsWebService(True) + End If + End Sub + +#Region "Timbra" + Private Function TimbraRetencion(cfditimbre As CFDITimbreRetenciones, UsuarioActual As Usuario) As String + Dim sw As New Diagnostics.Stopwatch + Dim swTiempo As New StringBuilder + Dim swmili As Long = 0 + sw.Start() + Dim ArchivoLLave As String = $"{UsuarioActual.Empresa.Ruta}Certificados\{UsuarioActual.Empresa.ArchivoKey}" + Dim ArchivoCertificado As String = $"{UsuarioActual.Empresa.Ruta}Certificados\{UsuarioActual.Empresa.ArchivoCer}" + + Dim Clave As String = UsuarioActual.Empresa.ContraseñaKey + Dim EmisorRFC As String = UsuarioActual.Empresa.RFC + Dim EmisorNombre As String = UsuarioActual.Empresa.Empresa + Dim SubTotal As Decimal = 0 + Dim AmbienteProductivo As Boolean = True + Dim NumDecimalesImporte As Integer = 2 + + + If Not ClsPaginas.EsProduccion AndAlso (Not UsuarioActual.Empresa.FacturaProduccion OrElse UsuarioActual.CveEmpresa = 1) Then + AmbienteProductivo = False + Clave = "12345678a" + EmisorRFC = "EKU9003173C9" + EmisorNombre = "ESCUELA KEMPER URGATE" + ArchivoLLave = $"{Extensiones.ModExtensiones.DirectorioEmpresas}\1\Certificados\EKU9003173C9.key" + ArchivoCertificado = $"{Extensiones.ModExtensiones.DirectorioEmpresas}\1\Certificados\EKU9003173C9.cer" + UsuarioActual.Empresa.CodigoRegimenFiscal = "601" + End If + +#Region "Valida" + If Not File.Exists(ArchivoCertificado) Then + Alert("El archivo de certificado no existe", TipoMensaje.MsgError) + Return "" + End If + If Not File.Exists(ArchivoLLave) Then + Alert("El archivo de llave privada no existe", TipoMensaje.MsgError) + Return "" + End If + If UsuarioActual.Empresa.ContraseñaKey = "" Then + Alert("La clave no puede ser vacía", TipoMensaje.MsgError) + Return "" + End If +#End Region + + +#Region "Variables" + Dim llaveByte As Byte(), certByte As Byte() + Dim llaveBase64 As String, certBase64 As String + + Dim complemento As String = "" + Dim complementoConcepto As String = "" + '//Inicializamos el conector el parámetro indica el ambiente en el que se utilizará + '//Fasle = Ambiente de pruebas + '//True = Ambiente de producción + Dim cfdi As New Profact.TimbraCFDI40.Conector(AmbienteProductivo) + Dim comprobante As New Profact.TimbraCFDI40.Comprobante() + + If Not UsuarioActual.Empresa.FacturaProduccion OrElse UsuarioActual.CveEmpresa = 1 OrElse Not ClsPaginas.EsProduccion Then + cfdi.EstableceCredenciales("mvpNUXmQfK8=") + Else + cfdi.EstableceCredenciales($"vSGxMFWnNRy/nDoowxqrqw==|Sia123654") + End If + +#End Region + +#Region "Verifica" + Try + llaveByte = System.IO.File.ReadAllBytes(ArchivoLLave) + llaveBase64 = Convert.ToBase64String(llaveByte) + Catch ex As Exception + Alert($"Error al leer la llave privada: {ex.Message}", TipoMensaje.MsgError) + Return "" + End Try + + Try + certByte = System.IO.File.ReadAllBytes(ArchivoCertificado) + certBase64 = Convert.ToBase64String(certByte) + Catch ex As Exception + Alert($"Error al leer el certificado: {ex.Message}", TipoMensaje.MsgError) + Return "" + End Try + sw.Stop() + swTiempo.AppendFormat("Verificado : ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds) + swmili = sw.ElapsedMilliseconds + sw.Start() +#End Region + 'CType([Enum].Parse(GetType(ProfactCartaPorte.CartaPorteTranspInternac), Carta.TranspInternac), ProfactCartaPorte.CartaPorteTranspInternac) + + Dim retenciones As Retenciones = New Profact.TimbraCFDI40.Retenciones() + retenciones.Version = "2.0" + retenciones.FechaExp = cfditimbre.Fecha + retenciones.CveRetenc = CType([Enum].Parse(GetType(c_CveRetenc), "Item" & cfditimbre.Retencion.ClaveRetencion), c_CveRetenc) + retenciones.Emisor = New RetencionesEmisor() + retenciones.Emisor.RfcE = EmisorRFC + retenciones.Emisor.NomDenRazSocE = EmisorNombre + retenciones.Emisor.RegimenFiscalE = CType([Enum].Parse(GetType(c_RegimenFiscal), "Item" & UsuarioActual.Empresa.CodigoRegimenFiscal), c_RegimenFiscal) + retenciones.LugarExpRetenc = cfditimbre.Retencion.LugarExpedicion + + Dim retencionNacional As RetencionesReceptorNacional = New RetencionesReceptorNacional() + retenciones.Receptor = New RetencionesReceptor() + retenciones.Receptor.NacionalidadR = If(cfditimbre.Receptor.NacionalidadR = "Nacional", RetencionesReceptorNacionalidadR.Nacional, RetencionesReceptorNacionalidadR.Extranjero) + retencionNacional.RfcR = cfditimbre.Receptor.RFCR + retencionNacional.NomDenRazSocR = cfditimbre.Receptor.NombreDenominacionR + retencionNacional.DomicilioFiscalR = cfditimbre.Receptor.DomicilioFiscalR + retenciones.Receptor.Item = retencionNacional + If cfditimbre.CFDIRelacionados.TipoRelacion <> "" Then + For Each uid As String In cfditimbre.CFDIRelacionados.UUID + Dim uuidrela As New RetencionesCfdiRetenRelacionados + uuidrela.TipoRelacion = CType([Enum].Parse(GetType(c_TipoRelacion), "Item" & cfditimbre.CFDIRelacionados.TipoRelacion), c_TipoRelacion) + uuidrela.UUID = uid + retenciones.CfdiRetenRelacionados = uuidrela + Next + End If + + retenciones.Periodo = New RetencionesPeriodo() + retenciones.Periodo.MesIni = CType([Enum].Parse(GetType(c_Periodo), "Item" & cfditimbre.Retencion.PeriodoMesInicio), c_Periodo) + retenciones.Periodo.MesFin = CType([Enum].Parse(GetType(c_Periodo), "Item" & cfditimbre.Retencion.PeriodoMesFin), c_Periodo) + retenciones.Periodo.Ejercicio = CType([Enum].Parse(GetType(c_Ejercicio), "Item" & cfditimbre.Retencion.PeriodoEjercicio.ToString), c_Ejercicio) + retenciones.Totales = New RetencionesTotales() + retenciones.Totales.MontoTotOperacion = 0 + retenciones.Totales.MontoTotGrav = 0 + retenciones.Totales.MontoTotExent = 0 + retenciones.Totales.MontoTotRet = cfditimbre.TotalImpuestosRetenidos + retenciones.Totales.UtilidadBimestral = 1 + retenciones.Totales.UtilidadBimestralSpecified = True + retenciones.Totales.ISRCorrespondiente = cfditimbre.ISRCorrespondiente + retenciones.Totales.ISRCorrespondienteSpecified = True + retenciones.Totales.ImpRetenidos = New RetencionesTotalesImpRetenidos(cfditimbre.RetencionesImpuestos.Count - 1) {} + Dim i As Integer = 0 + For Each drimp As CFDIImpuestosRetenidos In cfditimbre.RetencionesImpuestos + retenciones.Totales.ImpRetenidos(i) = New RetencionesTotalesImpRetenidos() + retenciones.Totales.ImpRetenidos(i).BaseRet = 0 + retenciones.Totales.ImpRetenidos(i).BaseRetSpecified = True + retenciones.Totales.ImpRetenidos(i).ImpuestoRet = CType([Enum].Parse(GetType(c_Impuesto), "Item0" & drimp.ImpuestoRetencion), c_Impuesto) ' c_Impuesto.Item001 + retenciones.Totales.ImpRetenidos(i).ImpuestoRetSpecified = True + retenciones.Totales.ImpRetenidos(i).MontoRet = drimp.MontoRetencion + retenciones.Totales.ImpRetenidos(i).TipoPagoRet = CType([Enum].Parse(GetType(c_TipoPagoRet), "Item" & drimp.TipoPagoRetencion), c_TipoPagoRet) 'c_TipoPagoRet.Item04 + i += 1 + Next + + 'retenciones.Totales.ImpRetenidos(i) = New RetencionesTotalesImpRetenidos() + 'retenciones.Totales.ImpRetenidos(i).BaseRet = 0 + 'retenciones.Totales.ImpRetenidos(i).BaseRetSpecified = True + 'retenciones.Totales.ImpRetenidos(i).ImpuestoRet = c_Impuesto.Item001 + 'retenciones.Totales.ImpRetenidos(i).ImpuestoRetSpecified = True + 'retenciones.Totales.ImpRetenidos(i).MontoRet = 705 + 'retenciones.Totales.ImpRetenidos(i).TipoPagoRet = c_TipoPagoRet.Item04 + + '' dividendos + 'Dim dividendos As Profact.TimbraCFDI.Dividendos = New Profact.TimbraCFDI.Dividendos() + 'dividendos.Version = "1.0" + 'dividendos.DividOUtil = New Profact.TimbraCFDI.DividendosDividOUtil() + 'dividendos.DividOUtil.CveTipDivOUtil = Profact.TimbraCFDI.c_TipoDividendoOUtilidadDistribuida.Item06 + 'dividendos.DividOUtil.MontISRAcredRetMexico = 0.00D + 'dividendos.DividOUtil.MontISRAcredRetExtranjero = 0.00D + 'dividendos.DividOUtil.TipoSocDistrDiv = Profact.TimbraCFDI.DividendosDividOUtilTipoSocDistrDiv.SociedadNacional + 'dividendos.DividOUtil.MontDivAcumNal = 426180D + 'dividendos.DividOUtil.MontDivAcumNalSpecified = True + 'dividendos.DividOUtil.MontISRAcredNal = 127586D + 'dividendos.DividOUtil.MontDivAcumNalSpecified = True + Dim LXmlComplementos As List(Of XmlElement) = New List(Of XmlElement)() + 'Dim nombres As System.Xml.Serialization.XmlSerializerNamespaces = New System.Xml.Serialization.XmlSerializerNamespaces() + 'nombres.Add("dividendos", "http://www.sat.gob.mx/esquemas/retencionpago/1/dividendos") + 'Dim xmlDividendos As String = Profact.TimbraCFDI.XMLUtilerias.SerializaObjeto(dividendos, GetType(Profact.TimbraCFDI.Dividendos), nombres) + 'Dim docDividendos As XmlDocument = New XmlDocument() + 'docDividendos.LoadXml(xmlDividendos) + 'retenciones.DividendosSpecified = True + 'LXmlComplementos.Add(docDividendos.DocumentElement) + ''fin dividendos + + 'retenciones.Complemento = New RetencionesComplemento() + 'retenciones.Complemento.Any = LXmlComplementos.ToArray() + Dim xmlEncode As String + + Using sww As New System.IO.StringWriter() + Dim xs As XmlSerializer + xs = New System.Xml.Serialization.XmlSerializer(GetType(Profact.TimbraCFDI40.Retenciones)) + xs.Serialize(sww, retenciones) + xmlEncode = sww.ToString() + End Using + + Dim resultadoTimbre As Profact.TimbraCFDI.ResultadoTimbre + resultadoTimbre = cfdi.TimbraRetencion(retenciones) + + If resultadoTimbre.Exitoso Then + Dim Retorno As String = "" + Dim RutaArchivo As String = $"{UsuarioActual.Empresa.Ruta}XML\Ret\" + Dim NombreArchivoXML As String = "" + Dim objGrales As New ClsGenerales + objGrales.IniciaTransacSQL() + Dim tCveTimbre As Integer = objGrales.AddGralTimbre("Ret", 12679, cfditimbre.Fecha, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + NombreArchivoXML = $"{objGrales.SerieInsertada}-{objGrales.FolioInsertado}.xml" + If Not Directory.Exists(RutaArchivo) Then Directory.CreateDirectory(RutaArchivo) + + If tCveTimbre > 0 Then + If objGrales.UpdateTimbreTimbrado(tCveTimbre, resultadoTimbre.FolioUUID, cfditimbre.Fecha, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 3, "4.0") Then + resultadoTimbre.GuardaXml(RutaArchivo, NombreArchivoXML) + Else + Retorno = "Error" + End If + Else + Retorno = "Error" + End If + If Retorno = "" Then + objGrales.Commit() + Else + objGrales.RollBack() + End If + objGrales.Dispose() + + 'If resultadoTimbre.GuardaXml("C:/", "EjemploRetencion_nombre") Then + ' Alert("El xml fue guardado correctamente") + 'Else + ' Alert("Ocurrió un error al guardar el comprobante, por favor verifica los permisos de la carpeta") + 'End If + + 'If resultadoTimbre.GuardaCodigoBidimensional("C:/", "codigoRetencion_nombre") Then + ' Alert("El código bidimensional fue guardado correctamente") + 'Else + ' Alert("Ocurrió un error al guardar el código bidimensional, por favor verifica los permisos de la carpeta") + 'End If + + 'Dim folioFiscal As String = resultadoTimbre.FolioUUID + 'Dim noCertificado As String = resultadoTimbre.No_Certificado + 'Dim noCertificadoSAT As String = resultadoTimbre.No_Certificado_SAT + 'Dim fechaCert As String = resultadoTimbre.FechaCertificacion + 'Dim selloCFDI As String = resultadoTimbre.SelloCFDI + 'Dim selloSAT As String = resultadoTimbre.SelloSAT + 'Dim cadena As String = resultadoTimbre.CadenaTimbre + Alert("Timbrado Exitoso") + Else + Alert(resultadoTimbre.Descripcion) + Dim detalle As String = resultadoTimbre.Detalle + End If + End Function +#End Region + + + Protected Sub BtnEmitirRetencion_Click(sender As Object, e As EventArgs) + Dim cfditimbre As New CFDITimbreRetenciones + cfditimbre.Fecha = Now + cfditimbre.Retencion.ClaveRetencion = DdlClaveRetencion.SelectedValue + cfditimbre.Retencion.PeriodoMesInicio = DdlPeriodoInicio.SelectedValue + cfditimbre.Retencion.PeriodoMesFin = DdlPeriodoFin.SelectedValue + cfditimbre.Retencion.PeriodoEjercicio = DdlEjercicio.SelectedValue.ToEntero + cfditimbre.Retencion.LugarExpedicion = UsuarioActual.Empresa.CP + cfditimbre.Receptor.RFCR = "AEMV690902NM5" + cfditimbre.Receptor.NacionalidadR = "Nacional" + cfditimbre.Receptor.DomicilioFiscalR = "11950" + cfditimbre.Receptor.NombreDenominacionR = "VERONICA MICHELLE ARMENTA MASON" + cfditimbre.CFDIRelacionados.TipoRelacion = "01" + cfditimbre.CFDIRelacionados.UUID.Add("671fdb07-406a-42a6-9a89-40219f663ea1") + cfditimbre.ISRCorrespondiente = 705 + cfditimbre.RetencionesImpuestos.Add(New CFDIImpuestosRetenidos With {.MontoRetencion = 705, .BaseRetencion = 0, .ImpuestoRetencion = "01", .TipoPagoRetencion = "04"}) + + For Each gvr As GridViewRow In GvD.Rows + Dim ret As New CFDIImpuestosRetenidos With {.BaseRetencion = gvr.DataKey("BaseRetencion").ToDecimal, + .ImpuestoRetencion = gvr.DataKey("ImpuestoRetencion")} + cfditimbre.RetencionesImpuestos.Add(ret) + Next + + + TimbraRetencion(cfditimbre, UsuarioActual) + + End Sub + + + Protected Sub LnkAgregarRetencion_Click(sender As Object, e As EventArgs) + + UpModal.Update() + RegistraScript("$('#DModalRetencion').modal()") + + DtDetalle = New DataTable + DtDetalle.Columns.Add("TipoImpuesto", GetType(String)) + DtDetalle.Columns.Add("ClaveTipoImpuesto", GetType(String)) + DtDetalle.Columns.Add("BaseRetencion", GetType(Decimal)) + DtDetalle.Columns.Add("ClaveTipoPago", GetType(String)) + DtDetalle.Columns.Add("TipoPago", GetType(String)) + DtDetalle.Columns.Add("ImpuestoRetenido", GetType(Decimal)) + + End Sub + + Protected Sub BtnAgregar_Click(sender As Object, e As EventArgs) + + Dim dr As DataRow = DtDetalle.NewRow + dr("TipoImpuesto") = DdlTipoImpuesto.Text + dr("ClaveTipoImpuesto") = DdlTipoImpuesto.SelectedValue + dr("BaseRetencion") = TxtBase.Text.ToDecimal + dr("ClaveTipoPago") = DdlTipoPagoRet.SelectedValue + dr("TipoPago") = DdlTipoPagoRet.Text + dr("ImpuestoRetenido") = TxtImpuestoRetenido.Text.ToDecimal + + DtDetalle.Rows.Add(dr) + + GvD.DataSource = DtDetalle + GvD.DataBind() + + End Sub +End Class diff --git a/Inventarios/EntregaAlmacen.aspx.vb b/Inventarios/EntregaAlmacen.aspx.vb index 7d810834e..54b9f9400 100644 --- a/Inventarios/EntregaAlmacen.aspx.vb +++ b/Inventarios/EntregaAlmacen.aspx.vb @@ -1,20 +1,20 @@ -Option Strict On -Option Explicit On - -Imports System.Data +Option Strict On +Option Explicit On + +Imports System.Data Imports System.Data.SqlClient -Imports System.IO -Imports System.Web.Management -Imports DocumentFormat.OpenXml.InkML +Imports System.IO +Imports System.Web.Management +Imports DocumentFormat.OpenXml.InkML Imports Extensiones -Imports Microsoft.Reporting.WebForms -Imports MoreLinq -Imports Telerik.Web.UI - -Partial Class Inventarios_EntregaAlmacen +Imports Microsoft.Reporting.WebForms +Imports MoreLinq +Imports Telerik.Web.UI + +Partial Class Inventarios_EntregaAlmacen Inherits ClsPaginas -#Region "PROPIEDADES" +#Region "PROPIEDADES" 'Private Property CveVentaAD As Integer ' Get ' Return CType(ViewState("CveVentaAD"), Integer) @@ -23,326 +23,326 @@ Partial Class Inventarios_EntregaAlmacen ' ViewState("CveVentaAD") = value ' End Set 'End Property - Private Property DtDatos As DataTable - Get - Return CType(ViewState("DtDatos"), DataTable) - End Get - Set(value As DataTable) - ViewState("DtDatos") = value - End Set - End Property - Private Property DtDatosDetalle As DataTable - Get - Return CType(ViewState("DtDatosDetalle"), DataTable) - End Get - Set(value As DataTable) - ViewState("DtDatosDetalle") = value - End Set - End Property - Private Property DtDatosSugerencias As DataTable - Get - Return CType(ViewState("DtDatosSugerencias"), DataTable) - End Get - Set(value As DataTable) - ViewState("DtDatosSugerencias") = value - End Set - End Property - Private Property DtDatosDetalleLote As DataTable - Get - Return CType(ViewState("DtDatosDetalleLote"), DataTable) - End Get - Set(value As DataTable) - ViewState("DtDatosDetalleLote") = value - End Set - End Property - Private Property PSSerie As String - Get - Return CType(ViewState("PSSerie"), String) - End Get - Set(value As String) - ViewState("PSSerie") = value - End Set - End Property - Private Property CveConsecSerie As Integer - Get - Return CType(ViewState("CveConsecSerie"), Integer) - End Get - Set(value As Integer) - ViewState("CveConsecSerie") = 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 EsInterno As Boolean - Get - Return CBool(If(ViewState("EsInterno") Is Nothing, 0, ViewState("EsInterno"))) - End Get - Set(value As Boolean) - ViewState("EsInterno") = value - End Set - End Property - Private Property CveMetodoInventario As Integer - Get - Return CType(ViewState("CveMetodoInventario"), Integer) - End Get - Set(value As Integer) - ViewState("CveMetodoInventario") = value - End Set - End Property - Private Property CveVentaSurtir As Integer - Get - Return CType(ViewState("CveVentaSurtir"), Integer) - End Get - Set(value As Integer) - ViewState("CveVentaSurtir") = value - End Set + Private Property DtDatos As DataTable + Get + Return CType(ViewState("DtDatos"), DataTable) + End Get + Set(value As DataTable) + ViewState("DtDatos") = value + End Set + End Property + Private Property DtDatosDetalle As DataTable + Get + Return CType(ViewState("DtDatosDetalle"), DataTable) + End Get + Set(value As DataTable) + ViewState("DtDatosDetalle") = value + End Set + End Property + Private Property DtDatosSugerencias As DataTable + Get + Return CType(ViewState("DtDatosSugerencias"), DataTable) + End Get + Set(value As DataTable) + ViewState("DtDatosSugerencias") = value + End Set + End Property + Private Property DtDatosDetalleLote As DataTable + Get + Return CType(ViewState("DtDatosDetalleLote"), DataTable) + End Get + Set(value As DataTable) + ViewState("DtDatosDetalleLote") = value + End Set + End Property + Private Property PSSerie As String + Get + Return CType(ViewState("PSSerie"), String) + End Get + Set(value As String) + ViewState("PSSerie") = value + End Set + End Property + Private Property CveConsecSerie As Integer + Get + Return CType(ViewState("CveConsecSerie"), Integer) + End Get + Set(value As Integer) + ViewState("CveConsecSerie") = 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 EsInterno As Boolean + Get + Return CBool(If(ViewState("EsInterno") Is Nothing, 0, ViewState("EsInterno"))) + End Get + Set(value As Boolean) + ViewState("EsInterno") = value + End Set + End Property + Private Property CveMetodoInventario As Integer + Get + Return CType(ViewState("CveMetodoInventario"), Integer) + End Get + Set(value As Integer) + ViewState("CveMetodoInventario") = value + End Set + End Property + Private Property CveVentaSurtir As Integer + Get + Return CType(ViewState("CveVentaSurtir"), Integer) + End Get + Set(value As Integer) + ViewState("CveVentaSurtir") = value + End Set End Property - Private Property CveOSSurtir As Integer - Get - Return CType(ViewState("CveOSSurtir"), Integer) - End Get - Set(value As Integer) - ViewState("CveOSSurtir") = value - End Set + Private Property CveOSSurtir As Integer + Get + Return CType(ViewState("CveOSSurtir"), Integer) + End Get + Set(value As Integer) + ViewState("CveOSSurtir") = value + End Set End Property - Private Property CveTipoVenta As Integer - Get + Private Property CveTipoVenta As Integer + Get If ViewState("CveTipoVenta") Is Nothing Then ViewState("CveTipoVenta") = -1 - End If - Return CType(ViewState("CveTipoVenta"), Integer) - End Get - Set(value As Integer) - ViewState("CveTipoVenta") = value - End Set + End If + Return CType(ViewState("CveTipoVenta"), Integer) + End Get + Set(value As Integer) + ViewState("CveTipoVenta") = value + End Set End Property - Private Property TipoEstatus As Integer - Get - Return CType(ViewState("TipoEstatus"), Integer) - End Get - Set(value As Integer) - ViewState("TipoEstatus") = value - End Set - End Property - Private Property CveContrato As Integer - Get - Return CType(ViewState("CveContrato"), Integer) - End Get - Set(value As Integer) - ViewState("CveContrato") = value - End Set - End Property - Private Property CveAlmacenTraspasoOrigen As Integer - Get - Return CType(ViewState("CveAlmacenTraspasoOrigen"), Integer) - End Get - Set(value As Integer) - ViewState("CveAlmacenTraspasoOrigen") = value - End Set - End Property - Private Property CveAlmacenTraspasoDestino As Integer - Get - Return CType(ViewState("CveAlmacenTraspasoDestino"), Integer) - End Get - Set(value As Integer) - ViewState("CveAlmacenTraspasoDestino") = value - End Set - End Property - Private Property TipoMovimiento As Integer - Get - Return CType(ViewState("TipoMovimiento"), Integer) - End Get - Set(value As Integer) - ViewState("TipoMovimiento") = value - End Set - End Property - Private Property TipoDocto As String - Get - Return CType(ViewState("TipoDocto"), String) - End Get - Set(value As String) - ViewState("TipoDocto") = value - End Set - End Property - Private Property DtExistencias As DataTable - Get - Return CType(ViewState("DtExistencias"), DataTable) - End Get - Set(value As DataTable) - ViewState("DtExistencias") = value - End Set - End Property - Private Property RowIndexCantidadEspecial As Integer - Get - Return CType(ViewState("RowIndexCantidadEspecial"), Integer) - End Get - Set(value As Integer) - ViewState("RowIndexCantidadEspecial") = value - End Set - End Property - Private Property CantidadEspecialTemp As Decimal - Get - Return CType(ViewState("CantidadEspecialTemp"), Decimal) - End Get - Set(value As Decimal) - ViewState("CantidadEspecialTemp") = value - End Set - End Property - Private Property EsDevolucionVenta As Integer - Get - Return CType(ViewState("EsDevolucionVenta"), Integer) - End Get - Set(value As Integer) - ViewState("EsDevolucionVenta") = value - End Set - End Property - Private Property CveVendedor As Integer - Get - Return CType(ViewState("CveVendedor"), Integer) - End Get - Set(value As Integer) - ViewState("CveVendedor") = value - End Set - End Property - Private Property CveSubProyecto As Integer - Get - Return CType(ViewState("CveSubProyecto"), Integer) - End Get - Set(value As Integer) - ViewState("CveSubProyecto") = value - End Set - End Property - Private Property CveOP As Integer - Get - Return CType(ViewState("CveOP"), Integer) - End Get - Set(value As Integer) - ViewState("CveOP") = value - End Set - End Property - Private Property CveCliente As Integer - Get - Return CType(ViewState("CveCliente"), Integer) - End Get - Set(value As Integer) - ViewState("CveCliente") = value - End Set - End Property - Private Property CveDireccionEnvio As Integer - Get - Return CType(ViewState("CveDireccionEnvio"), Integer) - End Get - Set(value As Integer) - ViewState("CveDireccionEnvio") = value - End Set - End Property - Private Property CveMovimiento As Integer - Get - Return CType(ViewState("CveMovimiento"), Integer) - End Get - Set(value As Integer) - ViewState("CveMovimiento") = value - End Set - End Property - Private Property CveTraspasoSurtir As Integer - Get - Return CType(ViewState("CveTraspasoSurtir"), Integer) - End Get - Set(value As Integer) - ViewState("CveTraspasoSurtir") = value - End Set - End Property - Private Property TipoEntrega As Integer - Get - Return CType(ViewState("TipoEntrega"), Integer) - End Get - Set(value As Integer) - ViewState("TipoEntrega") = value - End Set - End Property - - Private Property EsDevolucionDirecta As Boolean - Get - Return CBool(If(ViewState("EsDevolucionDirecta") Is Nothing, 0, ViewState("EsDevolucionDirecta"))) - End Get - Set(value As Boolean) - ViewState("EsDevolucionDirecta") = value - End Set - End Property - Private Property FormaPaqueteria As Integer - Get - Return CType(ViewState("FormaPaqueteria"), Integer) - End Get - Set(value As Integer) - ViewState("FormaPaqueteria") = value - End Set - End Property - 'Private Property IndexSeccionAlmacen As Integer - ' Get - ' Return CType(ViewState("IndexSeccionAlmacen"), Integer) - ' End Get - ' Set(value As Integer) - ' ViewState("IndexSeccionAlmacen") = value - ' End Set - 'End Property - Private Property ArchivoBitacora As String - Get - Return CType(ViewState("ArchivoBitacora"), String) - End Get - Set(value As String) - ViewState("ArchivoBitacora") = value - End Set - End Property - Private Property ArchivoBitacoraDetalle As String - Get - Return CType(ViewState("ArchivoBitacoraDetalle"), String) - End Get - Set(value As String) - ViewState("ArchivoBitacoraDetalle") = value - End Set - End Property - - Private Property CargaBitacora As Boolean - Get - If ViewState("CargaBitacora") Is Nothing Then - ViewState("CargaBitacora") = False - End If - Return Boolean.Parse(ViewState("CargaBitacora").ToString) - End Get - Set(value As Boolean) - ViewState("CargaBitacora") = value - End Set + Private Property TipoEstatus As Integer + Get + Return CType(ViewState("TipoEstatus"), Integer) + End Get + Set(value As Integer) + ViewState("TipoEstatus") = value + End Set + End Property + Private Property CveContrato As Integer + Get + Return CType(ViewState("CveContrato"), Integer) + End Get + Set(value As Integer) + ViewState("CveContrato") = value + End Set + End Property + Private Property CveAlmacenTraspasoOrigen As Integer + Get + Return CType(ViewState("CveAlmacenTraspasoOrigen"), Integer) + End Get + Set(value As Integer) + ViewState("CveAlmacenTraspasoOrigen") = value + End Set + End Property + Private Property CveAlmacenTraspasoDestino As Integer + Get + Return CType(ViewState("CveAlmacenTraspasoDestino"), Integer) + End Get + Set(value As Integer) + ViewState("CveAlmacenTraspasoDestino") = value + End Set + End Property + Private Property TipoMovimiento As Integer + Get + Return CType(ViewState("TipoMovimiento"), Integer) + End Get + Set(value As Integer) + ViewState("TipoMovimiento") = value + End Set + End Property + Private Property TipoDocto As String + Get + Return CType(ViewState("TipoDocto"), String) + End Get + Set(value As String) + ViewState("TipoDocto") = value + End Set + End Property + Private Property DtExistencias As DataTable + Get + Return CType(ViewState("DtExistencias"), DataTable) + End Get + Set(value As DataTable) + ViewState("DtExistencias") = value + End Set + End Property + Private Property RowIndexCantidadEspecial As Integer + Get + Return CType(ViewState("RowIndexCantidadEspecial"), Integer) + End Get + Set(value As Integer) + ViewState("RowIndexCantidadEspecial") = value + End Set + End Property + Private Property CantidadEspecialTemp As Decimal + Get + Return CType(ViewState("CantidadEspecialTemp"), Decimal) + End Get + Set(value As Decimal) + ViewState("CantidadEspecialTemp") = value + End Set + End Property + Private Property EsDevolucionVenta As Integer + Get + Return CType(ViewState("EsDevolucionVenta"), Integer) + End Get + Set(value As Integer) + ViewState("EsDevolucionVenta") = value + End Set + End Property + Private Property CveVendedor As Integer + Get + Return CType(ViewState("CveVendedor"), Integer) + End Get + Set(value As Integer) + ViewState("CveVendedor") = value + End Set + End Property + Private Property CveSubProyecto As Integer + Get + Return CType(ViewState("CveSubProyecto"), Integer) + End Get + Set(value As Integer) + ViewState("CveSubProyecto") = value + End Set + End Property + Private Property CveOP As Integer + Get + Return CType(ViewState("CveOP"), Integer) + End Get + Set(value As Integer) + ViewState("CveOP") = value + End Set + End Property + Private Property CveCliente As Integer + Get + Return CType(ViewState("CveCliente"), Integer) + End Get + Set(value As Integer) + ViewState("CveCliente") = value + End Set + End Property + Private Property CveDireccionEnvio As Integer + Get + Return CType(ViewState("CveDireccionEnvio"), Integer) + End Get + Set(value As Integer) + ViewState("CveDireccionEnvio") = value + End Set + End Property + Private Property CveMovimiento As Integer + Get + Return CType(ViewState("CveMovimiento"), Integer) + End Get + Set(value As Integer) + ViewState("CveMovimiento") = value + End Set + End Property + Private Property CveTraspasoSurtir As Integer + Get + Return CType(ViewState("CveTraspasoSurtir"), Integer) + End Get + Set(value As Integer) + ViewState("CveTraspasoSurtir") = value + End Set + End Property + Private Property TipoEntrega As Integer + Get + Return CType(ViewState("TipoEntrega"), Integer) + End Get + Set(value As Integer) + ViewState("TipoEntrega") = value + End Set End Property - Private Property BloqueCantidad As Boolean - Get + Private Property EsDevolucionDirecta As Boolean + Get + Return CBool(If(ViewState("EsDevolucionDirecta") Is Nothing, 0, ViewState("EsDevolucionDirecta"))) + End Get + Set(value As Boolean) + ViewState("EsDevolucionDirecta") = value + End Set + End Property + Private Property FormaPaqueteria As Integer + Get + Return CType(ViewState("FormaPaqueteria"), Integer) + End Get + Set(value As Integer) + ViewState("FormaPaqueteria") = value + End Set + End Property + 'Private Property IndexSeccionAlmacen As Integer + ' Get + ' Return CType(ViewState("IndexSeccionAlmacen"), Integer) + ' End Get + ' Set(value As Integer) + ' ViewState("IndexSeccionAlmacen") = value + ' End Set + 'End Property + Private Property ArchivoBitacora As String + Get + Return CType(ViewState("ArchivoBitacora"), String) + End Get + Set(value As String) + ViewState("ArchivoBitacora") = value + End Set + End Property + Private Property ArchivoBitacoraDetalle As String + Get + Return CType(ViewState("ArchivoBitacoraDetalle"), String) + End Get + Set(value As String) + ViewState("ArchivoBitacoraDetalle") = value + End Set + End Property + + Private Property CargaBitacora As Boolean + Get + If ViewState("CargaBitacora") Is Nothing Then + ViewState("CargaBitacora") = False + End If + Return Boolean.Parse(ViewState("CargaBitacora").ToString) + End Get + Set(value As Boolean) + ViewState("CargaBitacora") = value + End Set + End Property + + Private Property BloqueCantidad As Boolean + Get If ViewState("BloqueCantidad") Is Nothing Then ViewState("BloqueCantidad") = False - End If - Return Boolean.Parse(ViewState("BloqueCantidad").ToString) - End Get - Set(value As Boolean) - ViewState("BloqueCantidad") = value - End Set + End If + Return Boolean.Parse(ViewState("BloqueCantidad").ToString) + End Get + Set(value As Boolean) + ViewState("BloqueCantidad") = value + End Set End Property Private Property Adjunto As String Get @@ -357,366 +357,366 @@ Partial Class Inventarios_EntregaAlmacen End Set End Property -#End Region +#End Region + + Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load + If Not IsPostBack Then + + InicializaValores() + CargaParametrosAD() + If UsuarioActual.CveEmpresa.Contiene(1, 72, 80, 146, 119, 186) Then DdlAlmacen.AutoPostBack = True + + If UsuarioActual.Empresa.Funcionalidad(281).ToEntero() = 1 Then + TxtFecha.Enabled = False + ImgFecha.Visible = False + End If - Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load - If Not IsPostBack Then - - InicializaValores() - CargaParametrosAD() - If UsuarioActual.CveEmpresa.Contiene(1, 72, 80, 146, 119, 186) Then DdlAlmacen.AutoPostBack = True - - If UsuarioActual.Empresa.Funcionalidad(281).ToEntero() = 1 Then - TxtFecha.Enabled = False - ImgFecha.Visible = False - End If - If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then divUsuarioRegistra.Visible = True - End If - - End If + End If + + End If End Sub -#Region " INICIALIZA VALORES " - Private Sub InicializaValores() - TipoEstatus = -1 - CveVendedor = -1 - CveCliente = -1 - CveSubProyecto = -1 - - DtDatosSugerencias = New DataTable - - Dim StrAlmacenes As String = "CveTipoAlmacen IN (1,2)" - - If (UsuarioActual.Empresa.Funcionalidad(105) = "1" Or UsuarioActual.Empresa.Funcionalidad(141) = "1") Then - DdlClientes.setEsWebService(True) - DdlClientes.Attributes.Add("data-metodo", "getcliente") - DdlClientes.SelectedText = "Todos" - DdlClientes.SelectedValue = "-1" - Else - DdlClientes.setEsWebService(False) - DdlClientes.ddl.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa) - DdlClientes.ddl.DataBind() - DdlClientes.ddl.Items.Insert(0, New ListItem("Todos", "-1")) - End If - - - DdlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros(StrAlmacenes) 'GlobalDTAlmacen(UsuarioActual.CveEmpresa) - DdlAlmacen.Items.Insert(0, New ListItem(" Seleccione ", "-1")) - DdlAlmacen.SelectedValue = "-1" - DdlAlmacen.DataBind() - If UsuarioActual.CveAlmacen > 0 Then - DdlAlmacen.SelectedValueExist(UsuarioActual.CveAlmacen) - RecargaporAlmacenes() - End If - - DdlAlmacenTransitorio.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 3) - DdlAlmacenTransitorio.DataBind() - DdlAlmacenTransitorio.Items.Insert(0, New ListItem("Seleccione", "-1")) - - DdlFolio.Items.Insert(0, New ListItem("Seleccione", "-1")) - +#Region " INICIALIZA VALORES " + Private Sub InicializaValores() + TipoEstatus = -1 + CveVendedor = -1 + CveCliente = -1 + CveSubProyecto = -1 + + DtDatosSugerencias = New DataTable + + Dim StrAlmacenes As String = "CveTipoAlmacen IN (1,2)" + + If (UsuarioActual.Empresa.Funcionalidad(105) = "1" Or UsuarioActual.Empresa.Funcionalidad(141) = "1") Then + DdlClientes.setEsWebService(True) + DdlClientes.Attributes.Add("data-metodo", "getcliente") + DdlClientes.SelectedText = "Todos" + DdlClientes.SelectedValue = "-1" + Else + DdlClientes.setEsWebService(False) + DdlClientes.ddl.DataSource = GlobalDTCliente(UsuarioActual.CveEmpresa) + DdlClientes.ddl.DataBind() + DdlClientes.ddl.Items.Insert(0, New ListItem("Todos", "-1")) + End If + + + DdlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros(StrAlmacenes) 'GlobalDTAlmacen(UsuarioActual.CveEmpresa) + DdlAlmacen.Items.Insert(0, New ListItem(" Seleccione ", "-1")) + DdlAlmacen.SelectedValue = "-1" + DdlAlmacen.DataBind() + If UsuarioActual.CveAlmacen > 0 Then + DdlAlmacen.SelectedValueExist(UsuarioActual.CveAlmacen) + RecargaporAlmacenes() + End If + + DdlAlmacenTransitorio.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, 3) + DdlAlmacenTransitorio.DataBind() + DdlAlmacenTransitorio.Items.Insert(0, New ListItem("Seleccione", "-1")) + + DdlFolio.Items.Insert(0, New ListItem("Seleccione", "-1")) + TxtFechaPendientes.Text = NowADS().ToShortDateString - TxtFecha.Text = NowADS().ToShortDateString - RVFecha.MaximumValue = MaxFecha.ToShortDateString + TxtFecha.Text = NowADS().ToShortDateString + RVFecha.MaximumValue = MaxFecha.ToShortDateString If UsuarioActual.CveEmpresa.Contiene(119) Then RVFecha.MinimumValue = NowADS().ToShortDateString CEFecha.StartDate = NowADS() trGuia.Visible = True Else - RVFecha.MinimumValue = MinFecha.ToShortDateString + RVFecha.MinimumValue = MinFecha.ToShortDateString End If - - If Not UsuarioActual.TienePermisoProceso(190) Then - 'CARGA SOLO LAS SUCURSALES DE LOS ALMCENES QUE TIENE ASIGNADO EL USUARIO - Dim ObjInventarios As New ClsInventarios - If ObjInventarios.GetSucursalesAlmacenUsuario(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then - DdlSubProyectos.DataSource = ObjInventarios.DtResultados - End If - ObjInventarios.Dispose() - Else - DdlSubProyectos.DataSource = GlobalDTSubProyectos(UsuarioActual.CveEmpresa) - End If - DdlSubProyectos.DataBind() - DdlSubProyectos.SelectedValueExist(UsuarioActual.CveSubProyecto.ToString()) - - If UsuarioActual.TienePermisoProceso(152) Then DdlSubProyectos.Enabled = False - If UsuarioActual.Empresa.Funcionalidad(280) = "1" Then PnlEntrega.Visible = True - - CreaDtDetalle() - CreaDtDetalleLote() - CargaPendientes() - LimpiaCampos() + + If Not UsuarioActual.TienePermisoProceso(190) Then + 'CARGA SOLO LAS SUCURSALES DE LOS ALMCENES QUE TIENE ASIGNADO EL USUARIO + Dim ObjInventarios As New ClsInventarios + If ObjInventarios.GetSucursalesAlmacenUsuario(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + DdlSubProyectos.DataSource = ObjInventarios.DtResultados + End If + ObjInventarios.Dispose() + Else + DdlSubProyectos.DataSource = GlobalDTSubProyectos(UsuarioActual.CveEmpresa) + End If + DdlSubProyectos.DataBind() + DdlSubProyectos.SelectedValueExist(UsuarioActual.CveSubProyecto.ToString()) + + If UsuarioActual.TienePermisoProceso(152) Then DdlSubProyectos.Enabled = False + If UsuarioActual.Empresa.Funcionalidad(280) = "1" Then PnlEntrega.Visible = True + + CreaDtDetalle() + CreaDtDetalleLote() + CargaPendientes() + LimpiaCampos() End Sub -#End Region +#End Region -#Region " CARGA PARAMETROS - EXCLUSIVO USO AD " - Private Sub CargaParametrosAD() - - 'CveVentaAD = -1 - - 'If UsuarioActual.CveUsuario <> 100 Then - ' Exit Sub - 'End If - - If Not IsNothing(Request("CveVenta")) AndAlso IsNumeric(Request("CveVenta")) Then - 'CveVentaAD = Request("CveVenta").ToEntero() - CargaVentaPorSurtir(Request("CveVenta").ToEntero()) - 'LbSurtida.Visible = True - 'LbSurtida.Text = "SOLO MODO VISUAL" - 'BtnGuardar.Visible = False - End If - +#Region " CARGA PARAMETROS - EXCLUSIVO USO AD " + Private Sub CargaParametrosAD() + + 'CveVentaAD = -1 + + 'If UsuarioActual.CveUsuario <> 100 Then + ' Exit Sub + 'End If + + If Not IsNothing(Request("CveVenta")) AndAlso IsNumeric(Request("CveVenta")) Then + 'CveVentaAD = Request("CveVenta").ToEntero() + CargaVentaPorSurtir(Request("CveVenta").ToEntero()) + 'LbSurtida.Visible = True + 'LbSurtida.Text = "SOLO MODO VISUAL" + 'BtnGuardar.Visible = False + End If + End Sub -#End Region +#End Region -#Region " CARGA PENDIENTES POR SURTIR " - Protected Sub DdlCliente_SelectedIndexChanged(sender As Object, e As EventArgs) - CargaFolios() - End Sub - Private Sub CargaFolios() - Dim ObjInventarios As New ClsInventarios - - DdlFolio.Items.Clear() - - If DdlClientes.SelectedValue.ToEntero() > 0 Then - If ObjInventarios.VentasPendientesAlmacenGet(DdlClientes.SelectedValue.ToEntero(), MinFecha, DdlSubProyectos.SelectedValue.ToEntero(), UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario) Then - DdlFolio.DataSource = ObjInventarios.DtResultados - Else - Alert("Ocurrió un error al obtener las Compras pendientes de recibir del proveedor. Por favor vuelva a intentar", TipoMensaje.MsgError) - End If - End If - - ObjInventarios.Dispose() - - DdlFolio.DataBind() - DdlFolio.Items.Insert(0, New ListItem("Seleccione", "-1")) - UpFiltros.Update() - End Sub - Protected Sub TimmerRefresh_Tick(sender As Object, e As EventArgs) - CargaPendientes() - End Sub - Protected Sub BtnConsultarPendientes_Click(sender As Object, e As EventArgs) - CargaPendientes() - End Sub - Private Sub CargaPendientes() - DivTipoCambioAdvertencia.Visible = False - - Dim ObjInventarios As New ClsInventarios - Dim DtPendientes As New DataTable - - If ObjInventarios.VentasPendientesAlmacenGet(-1, TxtFechaPendientes.Text.ToDate, DdlSubProyectos.SelectedValue.ToEntero(), UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario) Then - - - If UsuarioActual.TienePermisoProceso(266) AndAlso UsuarioActual.TienePermisoProceso(267) Then - DtPendientes = ObjInventarios.DtResultados.FiltraParametros("TipoDocto IN ('Ing','Dev','Rem','Traspaso','Ped','PDev','DPe','Ant','RNC')") - ElseIf UsuarioActual.TienePermisoProceso(266) AndAlso Not UsuarioActual.TienePermisoProceso(267) Then - DtPendientes = ObjInventarios.DtResultados.FiltraParametros("TipoDocto IN ('Ing','Dev','Rem','Traspaso','Ant','RNC')") - ElseIf UsuarioActual.TienePermisoProceso(267) AndAlso Not UsuarioActual.TienePermisoProceso(266) Then - DtPendientes = ObjInventarios.DtResultados.FiltraParametros("TipoDocto IN ('Ped','PDev','DPe','RNC')") - Else - DtPendientes = ObjInventarios.DtResultados - End If - Else - DtPendientes = Nothing - Alert("Ocurrió un error al obtener las Compras pendientes de recibir del proveedor. Por favor vuelva a intentar", TipoMensaje.MsgError) - End If - - If UsuarioActual.Empresa.Funcionalidad(540) = "1" Then - BtnGuardar.Enabled = False - Dim FI As Date = NowADS().AddDays(-1) - Dim FF As Date = NowADS().AddDays(-7) - If ObjInventarios.RepNotasSinAlmacen(1, -1, FI, FF, "-1", -1, UsuarioActual.Empresa.CveEmpresa) Then - If ObjInventarios.DtResultados IsNot Nothing AndAlso ObjInventarios.DtResultados.Rows.Count > 1 Then - BtnGuardar.Enabled = False - Alert("No se podrá realizar entrega de mercancía si no se les da salida a los documentos pendientes. Para más información ver el Reporte de notas sin entrada en la sección Ventas.", TipoMensaje.MsgAdvertencia) - Else - BtnGuardar.Enabled = True - End If - End If - End If - ObjInventarios.Dispose() - - If DtPendientes IsNot Nothing Then - GVPendientes.DataSource = DtPendientes - End If - LtActualizado.Text = String.Format("Actualizado: {0}", NowADS().ToString("H:mm")) - - GVPendientes.DataBind() - UpPendientes.Update() - If DtPendientes IsNot Nothing Then DtPendientes.Dispose() - - End Sub - Protected Sub GVPendientes_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GVPendientes.RowDataBound - If e.Row.RowType = DataControlRowType.DataRow Then - e.Row.FCLinkButton("BtnSurtir").CommandArgument = If(e.Row.DBCampo("TipoEntrega") = "1", e.Row.DBCampo("CveVenta"), e.Row.DBCampo("CveTraspasoSolicitud")) - - Select Case e.Row.DBCampo("TipoEntrega").ToString().ToEntero() - Case 1 - If UsuarioActual.TienePermisoProceso(201) Then - Dim Css As String = "Texto" - Dim Liga As String = $"/Ventas/Ventas.aspx?&CveVenta={e.Row.DBCampo("CveVenta")}" - e.Row.FCLabel("LblFolio").Text = "" + e.Row.FCLabel("LblFolio").Text + "" - End If - - If UsuarioActual.CveEmpresa.Contiene(72, 80) Then - GVPendientes.Columns(4).Visible = True - e.Row.FCHyperLink("HplDownPDF").Visible = True - e.Row.FCHyperLink("HplDownPDF").NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=VTA&CVEVENTA={0}", e.Row.DBCampo("CveVenta")))) - End If - - If e.Row.DBCampo("TipoDocto").ToString().Contiene({"Rem", "Ing", "Ped", "PeC", "Ant"}) And e.Row.DBCampo("EsDevolucionVenta").ToString().ToEntero() = 0 Then - e.Row.FCLinkButton("BtnSurtir").CssClass = "btn btn-primary btn-sm" - e.Row.FCLinkButton("BtnSurtir").Text = " Surtir " - Else - e.Row.FCLinkButton("BtnSurtir").CssClass = "btn yellow-gold btn-sm" - e.Row.FCLinkButton("BtnSurtir").Text = " Recibir" - End If - Case 2 - Dim Css As String = "Texto" - Dim Liga As String = $"/Inventarios/TrasladoSolicitud.aspx?&CveTraspasoSolicitud={e.Row.DBCampo("CveTraspasoSolicitud")}" - e.Row.FCLabel("LblFolio").Text = "" + e.Row.FCLabel("LblFolio").Text + "" - e.Row.FCLinkButton("BtnSurtir").CssClass = "btn btn-primary btn-sm" - e.Row.FCLinkButton("BtnSurtir").Text = " Traspasar " - End Select - UpPendientes.Update() - End If +#Region " CARGA PENDIENTES POR SURTIR " + Protected Sub DdlCliente_SelectedIndexChanged(sender As Object, e As EventArgs) + CargaFolios() + End Sub + Private Sub CargaFolios() + Dim ObjInventarios As New ClsInventarios + + DdlFolio.Items.Clear() + + If DdlClientes.SelectedValue.ToEntero() > 0 Then + If ObjInventarios.VentasPendientesAlmacenGet(DdlClientes.SelectedValue.ToEntero(), MinFecha, DdlSubProyectos.SelectedValue.ToEntero(), UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario) Then + DdlFolio.DataSource = ObjInventarios.DtResultados + Else + Alert("Ocurrió un error al obtener las Compras pendientes de recibir del proveedor. Por favor vuelva a intentar", TipoMensaje.MsgError) + End If + End If + + ObjInventarios.Dispose() + + DdlFolio.DataBind() + DdlFolio.Items.Insert(0, New ListItem("Seleccione", "-1")) + UpFiltros.Update() + End Sub + Protected Sub TimmerRefresh_Tick(sender As Object, e As EventArgs) + CargaPendientes() + End Sub + Protected Sub BtnConsultarPendientes_Click(sender As Object, e As EventArgs) + CargaPendientes() + End Sub + Private Sub CargaPendientes() + DivTipoCambioAdvertencia.Visible = False + + Dim ObjInventarios As New ClsInventarios + Dim DtPendientes As New DataTable + + If ObjInventarios.VentasPendientesAlmacenGet(-1, TxtFechaPendientes.Text.ToDate, DdlSubProyectos.SelectedValue.ToEntero(), UsuarioActual.CveEmpresa, UsuarioActual.CveUsuario) Then + + + If UsuarioActual.TienePermisoProceso(266) AndAlso UsuarioActual.TienePermisoProceso(267) Then + DtPendientes = ObjInventarios.DtResultados.FiltraParametros("TipoDocto IN ('Ing','Dev','Rem','Traspaso','Ped','PDev','DPe','Ant','RNC')") + ElseIf UsuarioActual.TienePermisoProceso(266) AndAlso Not UsuarioActual.TienePermisoProceso(267) Then + DtPendientes = ObjInventarios.DtResultados.FiltraParametros("TipoDocto IN ('Ing','Dev','Rem','Traspaso','Ant','RNC')") + ElseIf UsuarioActual.TienePermisoProceso(267) AndAlso Not UsuarioActual.TienePermisoProceso(266) Then + DtPendientes = ObjInventarios.DtResultados.FiltraParametros("TipoDocto IN ('Ped','PDev','DPe','RNC')") + Else + DtPendientes = ObjInventarios.DtResultados + End If + Else + DtPendientes = Nothing + Alert("Ocurrió un error al obtener las Compras pendientes de recibir del proveedor. Por favor vuelva a intentar", TipoMensaje.MsgError) + End If + + If UsuarioActual.Empresa.Funcionalidad(540) = "1" Then + BtnGuardar.Enabled = False + Dim FI As Date = NowADS().AddDays(-1) + Dim FF As Date = NowADS().AddDays(-7) + If ObjInventarios.RepNotasSinAlmacen(1, -1, FI, FF, "-1", -1, UsuarioActual.Empresa.CveEmpresa) Then + If ObjInventarios.DtResultados IsNot Nothing AndAlso ObjInventarios.DtResultados.Rows.Count > 1 Then + BtnGuardar.Enabled = False + Alert("No se podrá realizar entrega de mercancía si no se les da salida a los documentos pendientes. Para más información ver el Reporte de notas sin entrada en la sección Ventas.", TipoMensaje.MsgAdvertencia) + Else + BtnGuardar.Enabled = True + End If + End If + End If + ObjInventarios.Dispose() + + If DtPendientes IsNot Nothing Then + GVPendientes.DataSource = DtPendientes + End If + LtActualizado.Text = String.Format("Actualizado: {0}", NowADS().ToString("H:mm")) + + GVPendientes.DataBind() + UpPendientes.Update() + If DtPendientes IsNot Nothing Then DtPendientes.Dispose() + + End Sub + Protected Sub GVPendientes_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GVPendientes.RowDataBound + If e.Row.RowType = DataControlRowType.DataRow Then + e.Row.FCLinkButton("BtnSurtir").CommandArgument = If(e.Row.DBCampo("TipoEntrega") = "1", e.Row.DBCampo("CveVenta"), e.Row.DBCampo("CveTraspasoSolicitud")) + + Select Case e.Row.DBCampo("TipoEntrega").ToString().ToEntero() + Case 1 + If UsuarioActual.TienePermisoProceso(201) Then + Dim Css As String = "Texto" + Dim Liga As String = $"/Ventas/Ventas.aspx?&CveVenta={e.Row.DBCampo("CveVenta")}" + e.Row.FCLabel("LblFolio").Text = "" + e.Row.FCLabel("LblFolio").Text + "" + End If + + If UsuarioActual.CveEmpresa.Contiene(72, 80) Then + GVPendientes.Columns(4).Visible = True + e.Row.FCHyperLink("HplDownPDF").Visible = True + e.Row.FCHyperLink("HplDownPDF").NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=VTA&CVEVENTA={0}", e.Row.DBCampo("CveVenta")))) + End If + + If e.Row.DBCampo("TipoDocto").ToString().Contiene({"Rem", "Ing", "Ped", "PeC", "Ant"}) And e.Row.DBCampo("EsDevolucionVenta").ToString().ToEntero() = 0 Then + e.Row.FCLinkButton("BtnSurtir").CssClass = "btn btn-primary btn-sm" + e.Row.FCLinkButton("BtnSurtir").Text = " Surtir " + Else + e.Row.FCLinkButton("BtnSurtir").CssClass = "btn yellow-gold btn-sm" + e.Row.FCLinkButton("BtnSurtir").Text = " Recibir" + End If + Case 2 + Dim Css As String = "Texto" + Dim Liga As String = $"/Inventarios/TrasladoSolicitud.aspx?&CveTraspasoSolicitud={e.Row.DBCampo("CveTraspasoSolicitud")}" + e.Row.FCLabel("LblFolio").Text = "" + e.Row.FCLabel("LblFolio").Text + "" + e.Row.FCLinkButton("BtnSurtir").CssClass = "btn btn-primary btn-sm" + e.Row.FCLinkButton("BtnSurtir").Text = " Traspasar " + End Select + UpPendientes.Update() + End If End Sub -#End Region +#End Region -#Region " CARGA VENTA POR SURTIR " - Protected Sub BtnSurtir_Click(sender As Object, e As EventArgs) - - Dim Boton As LinkButton = CType(sender, LinkButton) - - Dim GvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) +#Region " CARGA VENTA POR SURTIR " + Protected Sub BtnSurtir_Click(sender As Object, e As EventArgs) + + Dim Boton As LinkButton = CType(sender, LinkButton) + + Dim GvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) Dim CveOS As Integer = GvRow.DataKey("CveOS").ToEntero - 'CveVentaAD = -1 - - If Boton.CommandArgument.ToEntero() > 0 Then - TimmerRefresh.Enabled = False - - DivTransitorio1.Visible = False - ChkTransitorio.Checked = False - TxtResponsable.Text = "" - DivTransitorio2.Visible = False - DdlAlmacen.Enabled = True - - Select Case CType(Boton.NamingContainer, GridViewRow).DataKey("TipoEntrega").ToEntero() - Case 1 ' VENTA - CargaVentaPorSurtir(CType(sender, LinkButton).CommandArgument.ToEntero(), CveOS:=CveOS) - Case 2 ' TRASPASO - DivTransitorio1.Visible = True - CargaTraspasoPorSurtir(CType(Boton.NamingContainer, GridViewRow).DataKey("CveTraspasoSolicitud").ToEntero()) - End Select - - End If - - End Sub - Protected Sub BtnBuscar_Click(sender As Object, e As EventArgs) - 'CveVentaAD = -2 - CargaVentaPorSurtir(DdlFolio.SelectedValue.ToEntero()) - End Sub + 'CveVentaAD = -1 + + If Boton.CommandArgument.ToEntero() > 0 Then + TimmerRefresh.Enabled = False + + DivTransitorio1.Visible = False + ChkTransitorio.Checked = False + TxtResponsable.Text = "" + DivTransitorio2.Visible = False + DdlAlmacen.Enabled = True + + Select Case CType(Boton.NamingContainer, GridViewRow).DataKey("TipoEntrega").ToEntero() + Case 1 ' VENTA + CargaVentaPorSurtir(CType(sender, LinkButton).CommandArgument.ToEntero(), CveOS:=CveOS) + Case 2 ' TRASPASO + DivTransitorio1.Visible = True + CargaTraspasoPorSurtir(CType(Boton.NamingContainer, GridViewRow).DataKey("CveTraspasoSolicitud").ToEntero()) + End Select + + End If + + End Sub + Protected Sub BtnBuscar_Click(sender As Object, e As EventArgs) + 'CveVentaAD = -2 + CargaVentaPorSurtir(DdlFolio.SelectedValue.ToEntero()) + End Sub Private Sub CargaVentaPorSurtir(CveVenta As Integer, Optional CveAlmacen As Integer = -1, Optional CveOS As Integer = -1) - Adjunto = "" + Adjunto = "" BtnArchivoAdjunto.Visible = False - LbSurtida.Visible = False - CveContrato = -1 - CveSubProyecto = -1 - CveOP = -1 - DtDatos = Nothing - TipoEntrega = 1 + LbSurtida.Visible = False + CveContrato = -1 + CveSubProyecto = -1 + CveOP = -1 + DtDatos = Nothing + TipoEntrega = 1 BtnGuardar.Visible = True - Dim StrAlmacenes As String = "CveTipoAlmacen IN (1,2,26)" - If UsuarioActual.CveSubProyecto = 8804 Then - StrAlmacenes = "CveTipoAlmacen IN (1,2,12)" - End If - - Dim ObjInventario As New ClsInventarios - - If ObjInventario.EntregaAlmacenGet(CveVenta, UsuarioActual.CveEmpresa, CveAlmacen) Then - If ObjInventario.DtResultados IsNot Nothing AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then - - ArchivoBitacora = String.Format("{0}Temp\EntregaDT_{1}_{2}.xml", UsuarioActual.Empresa.Ruta, UsuarioActual.CveUsuario, CveVenta) - ArchivoBitacoraDetalle = String.Format("{0}Temp\EntregaDTD_{1}_{2}.xml", UsuarioActual.Empresa.Ruta, UsuarioActual.CveUsuario, CveVenta) - If ArchivoBitacora <> "" Then - Dim Archivo As New System.IO.FileInfo(ArchivoBitacora) - If Archivo.Exists() Then - HplCargaBitacora.Visible = True - uppCargaBitacora.Update() - End If - End If - - DtDatos = ObjInventario.DtResultados - If Not DtDatos.Columns.Contains("Consec") Then DtDatos.Columns.Add("Consec", GetType(Integer)) - If Not DtDatos.Columns.Contains("CantidadGV") Then DtDatos.Columns.Add("CantidadGV", GetType(Double)) - If Not DtDatos.Columns.Contains("CantidadTraspaso") Then DtDatos.Columns.Add("CantidadTraspaso", GetType(Double)) - Dim Index As Integer = 1 - For Each Dr As DataRow In DtDatos.Rows - Dr("Consec") = Index - Index += 1 - Next - - DtDatosDetalle = Nothing - CreaDtDetalle() - - DtDatosDetalleLote = Nothing - CreaDtDetalleLote() - - If DtDatos.Rows(0) IsNot Nothing Then - Dim drE As DataRow = DtDatos.Rows(0) - - EsDevolucionVenta = drE("EsDevolucionVenta").ToString().ToEntero() - TipoDocto = DtDatos.Rows(0)("TipoDocto").ToString() - 'TipoMovimiento = If(TipoDocto.Contiene({"Rem", "Ped", "Ing", "Ped", "PeC", "Ant"}) And (EsDevolucionVenta = 0 Or CveVentaAD > 0), 1, 2) - TipoMovimiento = If(TipoDocto.Contiene({"Rem", "Ped", "Ing", "Ped", "PeC", "Ant"}) And (EsDevolucionVenta = 0), 1, 2) - + Dim StrAlmacenes As String = "CveTipoAlmacen IN (1,2,26)" + If UsuarioActual.CveSubProyecto = 8804 Then + StrAlmacenes = "CveTipoAlmacen IN (1,2,12)" + End If + + Dim ObjInventario As New ClsInventarios + + If ObjInventario.EntregaAlmacenGet(CveVenta, UsuarioActual.CveEmpresa, CveAlmacen) Then + If ObjInventario.DtResultados IsNot Nothing AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then + + ArchivoBitacora = String.Format("{0}Temp\EntregaDT_{1}_{2}.xml", UsuarioActual.Empresa.Ruta, UsuarioActual.CveUsuario, CveVenta) + ArchivoBitacoraDetalle = String.Format("{0}Temp\EntregaDTD_{1}_{2}.xml", UsuarioActual.Empresa.Ruta, UsuarioActual.CveUsuario, CveVenta) + If ArchivoBitacora <> "" Then + Dim Archivo As New System.IO.FileInfo(ArchivoBitacora) + If Archivo.Exists() Then + HplCargaBitacora.Visible = True + uppCargaBitacora.Update() + End If + End If + + DtDatos = ObjInventario.DtResultados + If Not DtDatos.Columns.Contains("Consec") Then DtDatos.Columns.Add("Consec", GetType(Integer)) + If Not DtDatos.Columns.Contains("CantidadGV") Then DtDatos.Columns.Add("CantidadGV", GetType(Double)) + If Not DtDatos.Columns.Contains("CantidadTraspaso") Then DtDatos.Columns.Add("CantidadTraspaso", GetType(Double)) + Dim Index As Integer = 1 + For Each Dr As DataRow In DtDatos.Rows + Dr("Consec") = Index + Index += 1 + Next + + DtDatosDetalle = Nothing + CreaDtDetalle() + + DtDatosDetalleLote = Nothing + CreaDtDetalleLote() + + If DtDatos.Rows(0) IsNot Nothing Then + Dim drE As DataRow = DtDatos.Rows(0) + + EsDevolucionVenta = drE("EsDevolucionVenta").ToString().ToEntero() + TipoDocto = DtDatos.Rows(0)("TipoDocto").ToString() + 'TipoMovimiento = If(TipoDocto.Contiene({"Rem", "Ped", "Ing", "Ped", "PeC", "Ant"}) And (EsDevolucionVenta = 0 Or CveVentaAD > 0), 1, 2) + TipoMovimiento = If(TipoDocto.Contiene({"Rem", "Ped", "Ing", "Ped", "PeC", "Ant"}) And (EsDevolucionVenta = 0), 1, 2) + If UsuarioActual.Empresa.Funcionalidad(578).ToEntero = 1 AndAlso TipoDocto.Contiene("Ped", "Ing") Then TxtObservaciones.Text = $"Dr. {drE("Medico").ToString}{vbCrLf}Cx. {drE("Procedimiento").ToString}{vbCrLf}F. Cirugía {drE("FechaParaSurtir").ToString.ToDateTime.ToString("dd/MM/yyyy HH:mm")}{vbCrLf}H. {drE("Sucursal").ToString}{vbCrLf}" TxtObservaciones.Rows = 4 - End If - - LbCliente.Text = DtDatos.Rows(0)("Nombre").ToString() - HLFolio.Text = drE("SerieFolio").ToString() + End If + + LbCliente.Text = DtDatos.Rows(0)("Nombre").ToString() + HLFolio.Text = drE("SerieFolio").ToString() LtlRegistra.Text = drE("UsuarioRegistra").ToString - If UsuarioActual.TienePermisoProceso(201) Then - HLFolio.NavigateUrl = $"/Ventas/Ventas.aspx?CveVenta={CveVenta}" - End If - - 'filtra los Almacenes de domicilio - If DtDatos.Rows(0)("ServicioDomicilio").ToString() = "True" Then - StrAlmacenes = "CveTipoAlmacen = 29" - End If - - trObsGral.Visible = drE("Observaciones").ToString() <> "" - LbObservaciones.Text = DtDatos.Rows(0)("Observaciones").ToString() - trObsAlmacen.Visible = drE("ObservacionesAlmacen").ToString() <> "" - LbObservacionesAlmacen.Text = drE("ObservacionesAlmacen").ToString() - CveVentaSurtir = CveVenta - CveOSSurtir = CveOS - + If UsuarioActual.TienePermisoProceso(201) Then + HLFolio.NavigateUrl = $"/Ventas/Ventas.aspx?CveVenta={CveVenta}" + End If + + 'filtra los Almacenes de domicilio + If DtDatos.Rows(0)("ServicioDomicilio").ToString() = "True" Then + StrAlmacenes = "CveTipoAlmacen = 29" + End If + + trObsGral.Visible = drE("Observaciones").ToString() <> "" + LbObservaciones.Text = DtDatos.Rows(0)("Observaciones").ToString() + trObsAlmacen.Visible = drE("ObservacionesAlmacen").ToString() <> "" + LbObservacionesAlmacen.Text = drE("ObservacionesAlmacen").ToString() + CveVentaSurtir = CveVenta + CveOSSurtir = CveOS + If TipoDocto = "Ped" And CveOSSurtir <= 0 Then CveOSSurtir = drE("CveOS").ToString().ToEntero - End If - + End If + CveTipoVenta = drE("CveTipoVenta").ToString().ToEntero - CveAlmacenTraspasoDestino = drE(If(EsDevolucionVenta = 1 And TipoDocto <> "Rem" And TipoDocto <> "Ped", "CveAlmacenTraspasoOrigen", "CveAlmacenTraspasoDestino")).ToString().ToEntero() - CveAlmacenTraspasoOrigen = drE(If(EsDevolucionVenta = 1 And TipoDocto <> "Rem" And TipoDocto <> "Ped", "CveAlmacenTraspasoDestino", "CveAlmacenTraspasoOrigen")).ToString().ToEntero() - CveContrato = drE("CveContrato").ToString().ToEntero() - CveVendedor = drE("CveVendedor").ToString().ToEntero() - CveCliente = drE("CveCliente").ToString().ToEntero() - 'ClienteEntregaPersonal(CveCliente) - CveSubProyecto = drE("CveSubProyecto").ToString().ToEntero() - EsInterno = CBool(DtDatos.Rows(0)("EsInterno").ToString()) + CveAlmacenTraspasoDestino = drE(If(EsDevolucionVenta = 1 And TipoDocto <> "Rem" And TipoDocto <> "Ped", "CveAlmacenTraspasoOrigen", "CveAlmacenTraspasoDestino")).ToString().ToEntero() + CveAlmacenTraspasoOrigen = drE(If(EsDevolucionVenta = 1 And TipoDocto <> "Rem" And TipoDocto <> "Ped", "CveAlmacenTraspasoDestino", "CveAlmacenTraspasoOrigen")).ToString().ToEntero() + CveContrato = drE("CveContrato").ToString().ToEntero() + CveVendedor = drE("CveVendedor").ToString().ToEntero() + CveCliente = drE("CveCliente").ToString().ToEntero() + 'ClienteEntregaPersonal(CveCliente) + CveSubProyecto = drE("CveSubProyecto").ToString().ToEntero() + EsInterno = CBool(DtDatos.Rows(0)("EsInterno").ToString()) CveDireccionEnvio = drE("CveDireccionEnvio").ToString.ToEntero Adjunto = drE("Adjunto").ToString() @@ -731,69 +731,69 @@ Partial Class Inventarios_EntregaAlmacen End If End If - If CveDireccionEnvio > 0 Then - trDireccionEnvio.Visible = True - 'carga la dirección de envío - Dim ObjClientes As New ClsClientes - If ObjClientes.DireccionEnvioGet(CveDireccionEnvio, CveCliente, -1) Then - Dim drenvio As DataRow = ObjClientes.DtResultados.FiltroPrimero("") - LblDirEnvio.Text = drenvio("SucursalClienteVentaDireccion").ToString - End If - - ObjClientes.Dispose() - Else - trDireccionEnvio.Visible = False - End If - - If DtDatos.SUM("CantidadS") <= 0 Then - GvDatos.CssClass = "table table-striped table-hover Widthall gvInventario gvEscondeColumna" - Else - GvDatos.CssClass = "table table-striped table-hover Widthall gvInventario" - End If - - If CveAlmacenTraspasoDestino > 0 And Not (TipoMovimiento = 2 And TipoDocto.Contiene("Rem", "Ped")) Then - DivTipoCambioAdvertencia.Visible = True - LtTipoCambioAdvertencia.Text = $"Los productos seran Trasladados al Almacen: {GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Almacen", $"CveAlmacen = {CveAlmacenTraspasoDestino}")}" - Else - DivTipoCambioAdvertencia.Visible = False - End If - - 'DEVOLUCION REMISION - If TipoMovimiento = 2 And TipoDocto.Contiene("Rem", "Ped") And Not CveAlmacenTraspasoDestino > 0 Then - Alert("La remisión que se intenta devolver presenta inconsistencias. Comuniquese con servicio técnico SIG.", TipoMensaje.MsgError) - BtnGuardar.Visible = False - End If - - If CveAlmacen <= 0 Then - DdlAlmacen.Items.Clear() - If CveAlmacenTraspasoOrigen > 0 Then 'Not (EsDevolucionVenta = 1 And DtDatos.Rows(0)("TipoDocto").ToString() = "Rem" And UsuarioActual.Empresa.Funcionalidad(145) = "1") - ESTO ES PARA CUANDO SEA REMISION DE ENTREGA POR ADELANTADO FUNCIONA LA DEVOLUCION - DdlAlmacen.Items.Clear() - DdlAlmacen.Items.Insert(0, New ListItem(GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Almacen", $"CveAlmacen = {CveAlmacenTraspasoOrigen}"), CveAlmacenTraspasoOrigen.ToString())) - Else - '[IPP] PARCHE - Debe hacerse permiso proceso - 17Enero2018 - Dim RestriccionAlmacenSubProyecto As String = If(UsuarioActual.CveEmpresa.Contiene(72, 80), $" AND CveSubProyecto = {CveSubProyecto}", "") - DdlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros($"{StrAlmacenes} {RestriccionAlmacenSubProyecto}") - End If - - DdlAlmacen.Items.Insert(0, New ListItem(" Seleccione ", "-1")) - DdlAlmacen.SelectedValue = "-1" - DdlAlmacen.DataBind() - DdlAlmacen.SelectedValueExist(UsuarioActual.CveAlmacen) - If CveAlmacenTraspasoOrigen > 0 Then - DdlAlmacen.SelectedValueExist(CveAlmacenTraspasoOrigen) - End If - End If - - If Not DtDatos.Columns.Contains("Serie") Then DtDatos.Columns.Add("Serie", GetType(String)) - - If Not DtDatos.Columns.Contains("Lote") Then DtDatos.Columns.Add("Lote", GetType(String)) - - If Not DtDatos.Columns.Contains("CveSeccion") Then DtDatos.Columns.Add("CveSeccion", GetType(Integer)) - - If Not DtDatos.Columns.Contains("FechaCaducidad") Then DtDatos.Columns.Add("FechaCaducidad", GetType(Date)) - - If Not DtDatos.Columns.Contains("Seleccionado") Then DtDatos.Columns.Add("Seleccionado", GetType(Boolean)) - + If CveDireccionEnvio > 0 Then + trDireccionEnvio.Visible = True + 'carga la dirección de envío + Dim ObjClientes As New ClsClientes + If ObjClientes.DireccionEnvioGet(CveDireccionEnvio, CveCliente, -1) Then + Dim drenvio As DataRow = ObjClientes.DtResultados.FiltroPrimero("") + LblDirEnvio.Text = drenvio("SucursalClienteVentaDireccion").ToString + End If + + ObjClientes.Dispose() + Else + trDireccionEnvio.Visible = False + End If + + If DtDatos.SUM("CantidadS") <= 0 Then + GvDatos.CssClass = "table table-striped table-hover Widthall gvInventario gvEscondeColumna" + Else + GvDatos.CssClass = "table table-striped table-hover Widthall gvInventario" + End If + + If CveAlmacenTraspasoDestino > 0 And Not (TipoMovimiento = 2 And TipoDocto.Contiene("Rem", "Ped")) Then + DivTipoCambioAdvertencia.Visible = True + LtTipoCambioAdvertencia.Text = $"Los productos seran Trasladados al Almacen: {GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Almacen", $"CveAlmacen = {CveAlmacenTraspasoDestino}")}" + Else + DivTipoCambioAdvertencia.Visible = False + End If + + 'DEVOLUCION REMISION + If TipoMovimiento = 2 And TipoDocto.Contiene("Rem", "Ped") And Not CveAlmacenTraspasoDestino > 0 Then + Alert("La remisión que se intenta devolver presenta inconsistencias. Comuniquese con servicio técnico SIG.", TipoMensaje.MsgError) + BtnGuardar.Visible = False + End If + + If CveAlmacen <= 0 Then + DdlAlmacen.Items.Clear() + If CveAlmacenTraspasoOrigen > 0 Then 'Not (EsDevolucionVenta = 1 And DtDatos.Rows(0)("TipoDocto").ToString() = "Rem" And UsuarioActual.Empresa.Funcionalidad(145) = "1") - ESTO ES PARA CUANDO SEA REMISION DE ENTREGA POR ADELANTADO FUNCIONA LA DEVOLUCION + DdlAlmacen.Items.Clear() + DdlAlmacen.Items.Insert(0, New ListItem(GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Almacen", $"CveAlmacen = {CveAlmacenTraspasoOrigen}"), CveAlmacenTraspasoOrigen.ToString())) + Else + '[IPP] PARCHE - Debe hacerse permiso proceso - 17Enero2018 + Dim RestriccionAlmacenSubProyecto As String = If(UsuarioActual.CveEmpresa.Contiene(72, 80), $" AND CveSubProyecto = {CveSubProyecto}", "") + DdlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros($"{StrAlmacenes} {RestriccionAlmacenSubProyecto}") + End If + + DdlAlmacen.Items.Insert(0, New ListItem(" Seleccione ", "-1")) + DdlAlmacen.SelectedValue = "-1" + DdlAlmacen.DataBind() + DdlAlmacen.SelectedValueExist(UsuarioActual.CveAlmacen) + If CveAlmacenTraspasoOrigen > 0 Then + DdlAlmacen.SelectedValueExist(CveAlmacenTraspasoOrigen) + End If + End If + + If Not DtDatos.Columns.Contains("Serie") Then DtDatos.Columns.Add("Serie", GetType(String)) + + If Not DtDatos.Columns.Contains("Lote") Then DtDatos.Columns.Add("Lote", GetType(String)) + + If Not DtDatos.Columns.Contains("CveSeccion") Then DtDatos.Columns.Add("CveSeccion", GetType(Integer)) + + If Not DtDatos.Columns.Contains("FechaCaducidad") Then DtDatos.Columns.Add("FechaCaducidad", GetType(Date)) + + If Not DtDatos.Columns.Contains("Seleccionado") Then DtDatos.Columns.Add("Seleccionado", GetType(Boolean)) + If Not DtDatos.Columns.Contains("CantidadSeleccionada") Then DtDatos.Columns.Add("CantidadSeleccionada", GetType(Double)) If UsuarioActual.Empresa.Funcionalidad(578) = "1" AndAlso TipoMovimiento = 1 Then @@ -837,237 +837,237 @@ Partial Class Inventarios_EntregaAlmacen End If End If - If UsuarioActual.Empresa.Funcionalidad(280) = "1" Then - FormaPaqueteria = DtDatos.Rows(0)("FormaPaqueteria").ToString().ToEntero() - Dim FormaPaq As Integer = FormaPaqueteria - RbSinEntrega.Checked = False - RbEntregaInterna.Checked = False - RbEntregaExterna.Checked = False - Select Case FormaPaq - Case 1 - RbSinEntrega.Checked = True - LnkPaqueteriaDetalle.Visible = False - Case 2 - RbEntregaInterna.Checked = True - 'LnkPaqueteriaDetalle.Visible = True - DdlEstatus.SelectedValue = "5" - Case 3 - RbEntregaExterna.Checked = True - LnkPaqueteriaDetalle.Visible = True - End Select - End If - 'TxtFecha.Text = If(EsDevolucionVenta = 1, NowADS().ToShortDateString, DtDatos.Rows(0)("Fecha").ToString()) - End If - - If UsuarioActual.Empresa.Funcionalidad(132) = "1" Then - DivCodigoSeriePS.Visible = True - Else - DivCodigoSeriePS.Visible = False - End If - - If TipoMovimiento = 2 Then ' cuando es cancelación - Dim Filtro As String '= If(ObjInventario.DtResultados.Rows(0)("TipoDocto").ToString().Contiene({"Ing", "Dev", "Ped"}), "CveConcepto = 3", "CveConcepto = 9") - Dim FiltroPS As String = "" - Select Case ObjInventario.DtResultados.Rows(0)("TipoDocto").ToString() - Case "Ing" - Filtro = "CveConcepto IN (3,40)" - Case "Dev" - 'cuand es devolucionventa=1, es cancelación de la devolución - If EsDevolucionVenta = 1 Then - Filtro = "CveConcepto = 18" - Else - Filtro = "CveConcepto IN (3,40)" 'cuando es devolución - For Each drr As DataRow In ObjInventario.DtResultados.Rows - FiltroPS = FiltroPS + "," + drr("CvePS").ToString - Next - FiltroPS = "AND CvePS IN (" & FiltroPS.Substring(1) & ")" 'elimino la primer comma - End If - Case "DPe" - Filtro = "CveConcepto = 9" - Case Else - Filtro = "CveConcepto = 9" - End Select - If ObjInventario.GetInv_Mov(ObjInventario.DtResultados.Rows(0)("CveVentaPadre").ToString().ToEntero(), UsuarioActual.CveEmpresa) Then - DtExistencias = ObjInventario.DtResultados.FiltraParametros($"CvePS Is Not NULL AND {Filtro} " & FiltroPS) - - If Not DtExistencias.Rows.Count > 0 Then - Alert("La Venta original de la Devolución no tiene salida de Almacén.", TipoMensaje.MsgAdvertencia) - End If - - If TipoDocto.Contiene("Ing") AndAlso TipoMovimiento = 2 Then - Dim DtMov As DataTable = DtExistencias.FiltraParametros("CveConcepto = 40", "", {"CveAlmacen"}) - If DtMov.Rows.Count > 0 AndAlso CveAlmacen <= 0 Then - Dim CveAlmacenDev As Integer = DtMov.Rows(0)("CveAlmacen").ToString().ToEntero() - Dim AlmacenDev As String = "" - If CveAlmacenDev > 0 Then - AlmacenDev = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=CveAlmacenDev).FiltroPrimeroValor("Almacen") - 'DdlAlmacen.Items.Clear() - 'DdlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros($"CveAlmacen = {CveAlmacenDev}") - 'DdlAlmacen.DataBind() - - DdlAlmacen.SelectedValueExistInsert(CveAlmacenDev, AlmacenDev) ' se va a poder regresar en algun almacen diferente - DdlAlmacen.Enabled = False - End If - - EsDevolucionDirecta = True - End If - End If - - Else - Alert("Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar.", TipoMensaje.MsgError) - End If - End If - If UsuarioActual.Empresa.FacturaProduccion Then - CargaDocumentos(CveVenta) - End If - Else - Alert("No se encontraron productos pendientes por surtir. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - End If - Else - DtDatos = Nothing - End If - - ObjInventario.Dispose() + If UsuarioActual.Empresa.Funcionalidad(280) = "1" Then + FormaPaqueteria = DtDatos.Rows(0)("FormaPaqueteria").ToString().ToEntero() + Dim FormaPaq As Integer = FormaPaqueteria + RbSinEntrega.Checked = False + RbEntregaInterna.Checked = False + RbEntregaExterna.Checked = False + Select Case FormaPaq + Case 1 + RbSinEntrega.Checked = True + LnkPaqueteriaDetalle.Visible = False + Case 2 + RbEntregaInterna.Checked = True + 'LnkPaqueteriaDetalle.Visible = True + DdlEstatus.SelectedValue = "5" + Case 3 + RbEntregaExterna.Checked = True + LnkPaqueteriaDetalle.Visible = True + End Select + End If + 'TxtFecha.Text = If(EsDevolucionVenta = 1, NowADS().ToShortDateString, DtDatos.Rows(0)("Fecha").ToString()) + End If + + If UsuarioActual.Empresa.Funcionalidad(132) = "1" Then + DivCodigoSeriePS.Visible = True + Else + DivCodigoSeriePS.Visible = False + End If + + If TipoMovimiento = 2 Then ' cuando es cancelación + Dim Filtro As String '= If(ObjInventario.DtResultados.Rows(0)("TipoDocto").ToString().Contiene({"Ing", "Dev", "Ped"}), "CveConcepto = 3", "CveConcepto = 9") + Dim FiltroPS As String = "" + Select Case ObjInventario.DtResultados.Rows(0)("TipoDocto").ToString() + Case "Ing" + Filtro = "CveConcepto IN (3,40)" + Case "Dev" + 'cuand es devolucionventa=1, es cancelación de la devolución + If EsDevolucionVenta = 1 Then + Filtro = "CveConcepto = 18" + Else + Filtro = "CveConcepto IN (3,40)" 'cuando es devolución + For Each drr As DataRow In ObjInventario.DtResultados.Rows + FiltroPS = FiltroPS + "," + drr("CvePS").ToString + Next + FiltroPS = "AND CvePS IN (" & FiltroPS.Substring(1) & ")" 'elimino la primer comma + End If + Case "DPe" + Filtro = "CveConcepto = 9" + Case Else + Filtro = "CveConcepto = 9" + End Select + If ObjInventario.GetInv_Mov(ObjInventario.DtResultados.Rows(0)("CveVentaPadre").ToString().ToEntero(), UsuarioActual.CveEmpresa) Then + DtExistencias = ObjInventario.DtResultados.FiltraParametros($"CvePS Is Not NULL AND {Filtro} " & FiltroPS) + + If Not DtExistencias.Rows.Count > 0 Then + Alert("La Venta original de la Devolución no tiene salida de Almacén.", TipoMensaje.MsgAdvertencia) + End If + + If TipoDocto.Contiene("Ing") AndAlso TipoMovimiento = 2 Then + Dim DtMov As DataTable = DtExistencias.FiltraParametros("CveConcepto = 40", "", {"CveAlmacen"}) + If DtMov.Rows.Count > 0 AndAlso CveAlmacen <= 0 Then + Dim CveAlmacenDev As Integer = DtMov.Rows(0)("CveAlmacen").ToString().ToEntero() + Dim AlmacenDev As String = "" + If CveAlmacenDev > 0 Then + AlmacenDev = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=CveAlmacenDev).FiltroPrimeroValor("Almacen") + 'DdlAlmacen.Items.Clear() + 'DdlAlmacen.DataSource = GlobalDTAlmacenUsuarios(UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1).FiltraParametros($"CveAlmacen = {CveAlmacenDev}") + 'DdlAlmacen.DataBind() + + DdlAlmacen.SelectedValueExistInsert(CveAlmacenDev, AlmacenDev) ' se va a poder regresar en algun almacen diferente + DdlAlmacen.Enabled = False + End If + + EsDevolucionDirecta = True + End If + End If + + Else + Alert("Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar.", TipoMensaje.MsgError) + End If + End If + If UsuarioActual.Empresa.FacturaProduccion Then + CargaDocumentos(CveVenta) + End If + Else + Alert("No se encontraron productos pendientes por surtir. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + End If + Else + DtDatos = Nothing + End If + + ObjInventario.Dispose() UpGenerales.Update() If (EsDevolucionVenta = 1 AndAlso CveOSSurtir > 0 AndAlso TipoMovimiento = 2 AndAlso TipoDocto = "Ped") Or (UsuarioActual.Empresa.Funcionalidad(578).ToEntero = 1 AndAlso CveTipoVenta <> 3) Then BloqueCantidad = True Else BloqueCantidad = False - End If - + End If + If CveAlmacen <= 0 Then CargaGvDatos() UpVenta.Update() - End Sub - Private Sub CargaTraspasoPorSurtir(CveTraspaso As Integer) - LbSurtida.Visible = False - CveContrato = -1 - CveSubProyecto = -1 - DtDatos = Nothing - TipoEntrega = 2 - - Dim ObjInventario As New ClsInventarios - - If ObjInventario.EntregaAlmacenTraspasosGet(CveTraspaso) Then - If ObjInventario.DtResultados IsNot Nothing AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then - CveTraspasoSurtir = CveTraspaso - TipoMovimiento = 1 - - DtDatos = ObjInventario.DtResultados - DtDatos.Columns.Add("Consec", GetType(Integer)) - DtDatos.Columns.Add("CantidadGV", GetType(Double)) - DtDatos.Columns.Add("CantidadTraspaso", GetType(Double)) - - LbCliente.Text = DtDatos.Rows(0)("Nombre").ToString() - HLFolio.Text = DtDatos.Rows(0)("SerieFolio").ToString() - If UsuarioActual.TienePermisoProceso(201) Then - HLFolio.NavigateUrl = $"/Inventarios/TrasladoSolicitud.aspx?CveTraspasoSolicitud={CveTraspasoSurtir}" - End If - LbObservaciones.Text = DtDatos.Rows(0)("Observaciones").ToString() - - Dim Index As Integer = 1 - For Each Dr As DataRow In DtDatos.Rows - Dr("Consec") = Index - Index += 1 - Next - - DtDatosDetalle = Nothing - CreaDtDetalle() - - DtDatosDetalleLote = Nothing - CreaDtDetalleLote() - - CveAlmacenTraspasoDestino = DtDatos.Rows(0)("CveAlmacenDestino").ToString().ToEntero() - CveAlmacenTraspasoOrigen = DtDatos.Rows(0)("CveAlmacenOrigen").ToString().ToEntero() - CveSubProyecto = DtDatos.Rows(0)("CveSubProyecto").ToString().ToEntero() - EsInterno = CBool(DtDatos.Rows(0)("EsInterno").ToString()) - CveOP = DtDatos.Rows(0)("CveOP").ToString().ToEntero() - CveVentaSurtir = -1 - CveOSSurtir = -1 - If DtDatos.SUM("CantidadS") <= 0 Then - GvDatos.CssClass = "table table-striped table-hover Widthall gvInventario gvEscondeColumna" - Else - GvDatos.CssClass = "table table-striped table-hover Widthall gvInventario" - End If - - If CveAlmacenTraspasoDestino > 0 Then - DivTipoCambioAdvertencia.Visible = True - LtTipoCambioAdvertencia.Text = $"Los productos seran Trasladados al Almacen: {GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Almacen", $"CveAlmacen = {CveAlmacenTraspasoDestino}")}" - Else - DivTipoCambioAdvertencia.Visible = False - End If - - 'If DtDatos.Rows.Cast(Of DataRow).Any(Function(Row) Row("CveTamaño").ToString().ToEntero() > 0) Then - - 'End If - - - DdlAlmacen.Items.Clear() - If CveAlmacenTraspasoOrigen > 0 Then - DdlAlmacen.Items.Insert(0, New ListItem(GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Almacen", $"CveAlmacen = {CveAlmacenTraspasoOrigen}"), CveAlmacenTraspasoOrigen.ToString())) - End If - - DdlAlmacen.Items.Insert(0, New ListItem(" Seleccione ", "-1")) - DdlAlmacen.SelectedValue = "-1" - DdlAlmacen.DataBind() - DdlAlmacen.SelectedValueExist(UsuarioActual.CveAlmacen) - If CveAlmacenTraspasoOrigen > 0 Then - DdlAlmacen.SelectedValueExist(CveAlmacenTraspasoOrigen) - End If - - If Not DtDatos.Columns.Contains("CveSeccion") Then - DtDatos.Columns.Add("CveSeccion", GetType(Integer)) - End If - - If Not DtDatos.Columns.Contains("Lote") Then - DtDatos.Columns.Add("Lote", GetType(String)) - End If - - If Not DtDatos.Columns.Contains("FechaCaducidad") Then - DtDatos.Columns.Add("FechaCaducidad", GetType(Date)) - End If - If Not DtDatos.Columns.Contains("Seleccionado") Then - DtDatos.Columns.Add("Seleccionado", GetType(Boolean)) - End If - If Not DtDatos.Columns.Contains("CantidadSeleccionada") Then - DtDatos.Columns.Add("CantidadSeleccionada", GetType(Double)) - End If - - If UsuarioActual.Empresa.Funcionalidad(132) = "1" Then - DivCodigoSeriePS.Visible = True - Else - DivCodigoSeriePS.Visible = False - End If - - Else - Alert("No se encontraron productos pendientes por surtir. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - End If - Else - DtDatos = Nothing - End If - - ObjInventario.Dispose() - UpGenerales.Update() - CargaGvDatos() - - End Sub - Private Sub CargaGvDatos(Optional RecargaVenta As Boolean = True) - - If DtDatos IsNot Nothing Then - - - Dim AplicaSeccion, AplicaLote, AplicaCaducidad, AplicaSerie As Boolean - If DtDatos IsNot Nothing AndAlso DtDatos.Rows.Count > 0 Then - AplicaSerie = CBool(DtDatos.MAX("AplicaSerie")) - AplicaSeccion = CBool(DtDatos.MAX("AplicaSeccion")) - AplicaLote = CBool(DtDatos.MAX("AplicaLote")) - AplicaCaducidad = CBool(DtDatos.MAX("AplicaCaducidad")) - End If - - If AplicaSeccion Then GvDatos.Columns(7).Visible = True - If AplicaLote Then GvDatos.Columns(9).Visible = True + End Sub + Private Sub CargaTraspasoPorSurtir(CveTraspaso As Integer) + LbSurtida.Visible = False + CveContrato = -1 + CveSubProyecto = -1 + DtDatos = Nothing + TipoEntrega = 2 + + Dim ObjInventario As New ClsInventarios + + If ObjInventario.EntregaAlmacenTraspasosGet(CveTraspaso) Then + If ObjInventario.DtResultados IsNot Nothing AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then + CveTraspasoSurtir = CveTraspaso + TipoMovimiento = 1 + + DtDatos = ObjInventario.DtResultados + DtDatos.Columns.Add("Consec", GetType(Integer)) + DtDatos.Columns.Add("CantidadGV", GetType(Double)) + DtDatos.Columns.Add("CantidadTraspaso", GetType(Double)) + + LbCliente.Text = DtDatos.Rows(0)("Nombre").ToString() + HLFolio.Text = DtDatos.Rows(0)("SerieFolio").ToString() + If UsuarioActual.TienePermisoProceso(201) Then + HLFolio.NavigateUrl = $"/Inventarios/TrasladoSolicitud.aspx?CveTraspasoSolicitud={CveTraspasoSurtir}" + End If + LbObservaciones.Text = DtDatos.Rows(0)("Observaciones").ToString() + + Dim Index As Integer = 1 + For Each Dr As DataRow In DtDatos.Rows + Dr("Consec") = Index + Index += 1 + Next + + DtDatosDetalle = Nothing + CreaDtDetalle() + + DtDatosDetalleLote = Nothing + CreaDtDetalleLote() + + CveAlmacenTraspasoDestino = DtDatos.Rows(0)("CveAlmacenDestino").ToString().ToEntero() + CveAlmacenTraspasoOrigen = DtDatos.Rows(0)("CveAlmacenOrigen").ToString().ToEntero() + CveSubProyecto = DtDatos.Rows(0)("CveSubProyecto").ToString().ToEntero() + EsInterno = CBool(DtDatos.Rows(0)("EsInterno").ToString()) + CveOP = DtDatos.Rows(0)("CveOP").ToString().ToEntero() + CveVentaSurtir = -1 + CveOSSurtir = -1 + If DtDatos.SUM("CantidadS") <= 0 Then + GvDatos.CssClass = "table table-striped table-hover Widthall gvInventario gvEscondeColumna" + Else + GvDatos.CssClass = "table table-striped table-hover Widthall gvInventario" + End If + + If CveAlmacenTraspasoDestino > 0 Then + DivTipoCambioAdvertencia.Visible = True + LtTipoCambioAdvertencia.Text = $"Los productos seran Trasladados al Almacen: {GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Almacen", $"CveAlmacen = {CveAlmacenTraspasoDestino}")}" + Else + DivTipoCambioAdvertencia.Visible = False + End If + + 'If DtDatos.Rows.Cast(Of DataRow).Any(Function(Row) Row("CveTamaño").ToString().ToEntero() > 0) Then + + 'End If + + + DdlAlmacen.Items.Clear() + If CveAlmacenTraspasoOrigen > 0 Then + DdlAlmacen.Items.Insert(0, New ListItem(GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Almacen", $"CveAlmacen = {CveAlmacenTraspasoOrigen}"), CveAlmacenTraspasoOrigen.ToString())) + End If + + DdlAlmacen.Items.Insert(0, New ListItem(" Seleccione ", "-1")) + DdlAlmacen.SelectedValue = "-1" + DdlAlmacen.DataBind() + DdlAlmacen.SelectedValueExist(UsuarioActual.CveAlmacen) + If CveAlmacenTraspasoOrigen > 0 Then + DdlAlmacen.SelectedValueExist(CveAlmacenTraspasoOrigen) + End If + + If Not DtDatos.Columns.Contains("CveSeccion") Then + DtDatos.Columns.Add("CveSeccion", GetType(Integer)) + End If + + If Not DtDatos.Columns.Contains("Lote") Then + DtDatos.Columns.Add("Lote", GetType(String)) + End If + + If Not DtDatos.Columns.Contains("FechaCaducidad") Then + DtDatos.Columns.Add("FechaCaducidad", GetType(Date)) + End If + If Not DtDatos.Columns.Contains("Seleccionado") Then + DtDatos.Columns.Add("Seleccionado", GetType(Boolean)) + End If + If Not DtDatos.Columns.Contains("CantidadSeleccionada") Then + DtDatos.Columns.Add("CantidadSeleccionada", GetType(Double)) + End If + + If UsuarioActual.Empresa.Funcionalidad(132) = "1" Then + DivCodigoSeriePS.Visible = True + Else + DivCodigoSeriePS.Visible = False + End If + + Else + Alert("No se encontraron productos pendientes por surtir. Por favor verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + End If + Else + DtDatos = Nothing + End If + + ObjInventario.Dispose() + UpGenerales.Update() + CargaGvDatos() + + End Sub + Private Sub CargaGvDatos(Optional RecargaVenta As Boolean = True) + + If DtDatos IsNot Nothing Then + + + Dim AplicaSeccion, AplicaLote, AplicaCaducidad, AplicaSerie As Boolean + If DtDatos IsNot Nothing AndAlso DtDatos.Rows.Count > 0 Then + AplicaSerie = CBool(DtDatos.MAX("AplicaSerie")) + AplicaSeccion = CBool(DtDatos.MAX("AplicaSeccion")) + AplicaLote = CBool(DtDatos.MAX("AplicaLote")) + AplicaCaducidad = CBool(DtDatos.MAX("AplicaCaducidad")) + End If + + If AplicaSeccion Then GvDatos.Columns(7).Visible = True + If AplicaLote Then GvDatos.Columns(9).Visible = True If AplicaCaducidad Then GvDatos.Columns(10).Visible = True If UsuarioActual.Empresa.Funcionalidad(578).ToEntero = 1 Then @@ -1077,41 +1077,41 @@ Partial Class Inventarios_EntregaAlmacen End If If Not String.IsNullOrWhiteSpace(UsuarioActual.Empresa.Funcionalidad(147)) Then - GvDatos.Columns(10).HeaderText = UsuarioActual.Empresa.Funcionalidad(147) + GvDatos.Columns(10).HeaderText = UsuarioActual.Empresa.Funcionalidad(147) End If 'GvDatos.Columns(9).HeaderText = If(UsuarioActual.Empresa.Funcionalidad(147) <> "", UsuarioActual.Empresa.Funcionalidad(147), "") 'SugerirFecha() - If RecargaVenta AndAlso DdlAlmacen.SelectedValue.ToEntero > 0 And CveVentaSurtir > 0 Then - CargaVentaPorSurtir(CveVentaSurtir, CveAlmacen:=DdlAlmacen.SelectedValue.ToEntero, CveOS:=CveOSSurtir) - - If CargaBitacora Then - CargaBitacoraSerie() + If RecargaVenta AndAlso DdlAlmacen.SelectedValue.ToEntero > 0 And CveVentaSurtir > 0 Then + CargaVentaPorSurtir(CveVentaSurtir, CveAlmacen:=DdlAlmacen.SelectedValue.ToEntero, CveOS:=CveOSSurtir) + + If CargaBitacora Then + CargaBitacoraSerie() End If - Else - - End If - End If - GvDatos.DataSource = DtDatos - - GvDatos.DataBind() - UpDatos.Update() - UpVenta.Update() - - 'CARGA LO PRECARGADO CON SERIE - Dim Contador As Integer = 0 - For Each Gvr As GridViewRow In GvDatos.Rows - If Gvr.DataKey("CvePS").ToEntero() = CvePSSerie AndAlso DtDatosDetalle IsNot Nothing Then - Contador = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Gvr.DataKey("Consec"))).Rows.Count - Gvr.FCCheckBox("cbInv").Enabled = False - Gvr.FCCheckBox("cbInv").Checked = True - Gvr.FCTextBox("TbCantidadF").Text = Contador.ToString() - End If - Next - - End Sub - - Protected Sub GvDatos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvDatos.RowDataBound + Else + + End If + End If + GvDatos.DataSource = DtDatos + + GvDatos.DataBind() + UpDatos.Update() + UpVenta.Update() + + 'CARGA LO PRECARGADO CON SERIE + Dim Contador As Integer = 0 + For Each Gvr As GridViewRow In GvDatos.Rows + If Gvr.DataKey("CvePS").ToEntero() = CvePSSerie AndAlso DtDatosDetalle IsNot Nothing Then + Contador = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Gvr.DataKey("Consec"))).Rows.Count + Gvr.FCCheckBox("cbInv").Enabled = False + Gvr.FCCheckBox("cbInv").Checked = True + Gvr.FCTextBox("TbCantidadF").Text = Contador.ToString() + End If + Next + + End Sub + + Protected Sub GvDatos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvDatos.RowDataBound If e.Row.RowType = DataControlRowType.Header Then If UsuarioActual.Empresa.Funcionalidad(578) = "1" Then @@ -1124,8 +1124,8 @@ Partial Class Inventarios_EntregaAlmacen End If End If - End If - + End If + If e.Row.RowType = DataControlRowType.DataRow Then If UsuarioActual.Empresa.Funcionalidad(578) = "1" Then @@ -1139,132 +1139,132 @@ Partial Class Inventarios_EntregaAlmacen End If 'código temporal - Dim AplicaSerie As Boolean = CBool(e.Row.DBCampo("AplicaSerie")) - - If AplicaSerie Then - e.Row.FCButton("BtnSerie").Visible = True - e.Row.FCButton("BtnSerie").Text = "Serie" - e.Row.FCButton("BtnSerie").CommandArgument = String.Format("{0}°{1}°{2}°{3}°{4}°{5}", e.Row.DBCampo("CvePS"), e.Row.DBCampo("CveUM"), e.Row.DBCampo("PS"), e.Row.DBCampo("CantidadF"), e.Row.DBCampo("Consec"), e.Row.DBCampo("Inv_CveMetodoInventario")) - e.Row.FCTextBox("TbCantidadF").Enabled = False - e.Row.FCCheckBox("cbInv").Enabled = False - If e.Row.DBCampo("Consec") <> "" AndAlso DtDatosDetalle IsNot Nothing Then - Dim Contador As Integer = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", e.Row.DBCampo("Consec"))).Rows.Count - e.Row.FCTextBox("TbCantidadF").Text = Contador.ToString() - Else - e.Row.FCTextBox("TbCantidadF").Text = "0" - End If - - If TipoDocto = "DPe" Then - CveConsecSerie = e.Row.DBCampo("Consec").ToString().ToEntero() - PSSerie = e.Row.DBCampo("PS").ToString() - CvePSSerie = e.Row.DBCampo("CvePS").ToEntero() - CveUMSerie = e.Row.DBCampo("CveUM").ToEntero() - LbCantidad.Text = e.Row.DBCampo("CantidadF") - LbCantidad2.Text = e.Row.DBCampo("CantidadF") - AgregaSerie(e.Row.DBCampo("ObservacionesDetalle"), 3) - End If - - If TipoDocto = "Ing" AndAlso e.Row.DBCampo("ObservacionesDetalle").Length > 8 AndAlso DdlAlmacen.SelectedValue.ToEntero > 0 AndAlso UsuarioActual.CveRol = 1 Then - Dim Str As Array = e.Row.DBCampo("ObservacionesDetalle").Replace(",", " ").Replace(".", " ").Replace(vbTab, " ").Replace(vbLf, " ").Split(" "c) - CveConsecSerie = e.Row.DBCampo("Consec").ToString().ToEntero() - PSSerie = e.Row.DBCampo("PS").ToString() - CvePSSerie = e.Row.DBCampo("CvePS").ToEntero() - CveUMSerie = e.Row.DBCampo("CveUM").ToEntero() - LbCantidad.Text = e.Row.DBCampo("CantidadF") - LbCantidad2.Text = e.Row.DBCampo("CantidadF") - For Each st As String In Str - If Not st.Contiene("", "/") Then - AgregaSerie(st, 3) - End If - Next - - End If - - Else - e.Row.FCButton("BtnSerie").Visible = False - e.Row.FCTextBox("TbCantidadF").Enabled = True - e.Row.FCTextBox("TbCantidadF").Attributes.Add("onblur", String.Format("ValidarCantidad(this, {0})", e.Row.DBCampo("CantidadF"))) - End If - - - If CBool(e.Row.DBCampo("AplicaSeccion")) Then - e.Row.FCDropDownList("DdlSeccionAlmacen").Visible = True - If DdlAlmacen.SelectedValue.ToEntero() > 0 Then - CargaSeccionesAlmacen(e.Row.FCDropDownList("DdlSeccionAlmacen"), DdlAlmacen.SelectedValue.ToEntero(), e.Row.DBCampo("CvePS").ToEntero(), UsuarioActual.CveEmpresa, True) - End If - Else - e.Row.FCDropDownList("DdlSeccionAlmacen").Visible = False + Dim AplicaSerie As Boolean = CBool(e.Row.DBCampo("AplicaSerie")) + + If AplicaSerie Then + e.Row.FCButton("BtnSerie").Visible = True + e.Row.FCButton("BtnSerie").Text = "Serie" + e.Row.FCButton("BtnSerie").CommandArgument = String.Format("{0}°{1}°{2}°{3}°{4}°{5}", e.Row.DBCampo("CvePS"), e.Row.DBCampo("CveUM"), e.Row.DBCampo("PS"), e.Row.DBCampo("CantidadF"), e.Row.DBCampo("Consec"), e.Row.DBCampo("Inv_CveMetodoInventario")) + e.Row.FCTextBox("TbCantidadF").Enabled = False + e.Row.FCCheckBox("cbInv").Enabled = False + If e.Row.DBCampo("Consec") <> "" AndAlso DtDatosDetalle IsNot Nothing Then + Dim Contador As Integer = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", e.Row.DBCampo("Consec"))).Rows.Count + e.Row.FCTextBox("TbCantidadF").Text = Contador.ToString() + Else + e.Row.FCTextBox("TbCantidadF").Text = "0" + End If + + If TipoDocto = "DPe" Then + CveConsecSerie = e.Row.DBCampo("Consec").ToString().ToEntero() + PSSerie = e.Row.DBCampo("PS").ToString() + CvePSSerie = e.Row.DBCampo("CvePS").ToEntero() + CveUMSerie = e.Row.DBCampo("CveUM").ToEntero() + LbCantidad.Text = e.Row.DBCampo("CantidadF") + LbCantidad2.Text = e.Row.DBCampo("CantidadF") + AgregaSerie(e.Row.DBCampo("ObservacionesDetalle"), 3) + End If + + If TipoDocto = "Ing" AndAlso e.Row.DBCampo("ObservacionesDetalle").Length > 8 AndAlso DdlAlmacen.SelectedValue.ToEntero > 0 AndAlso UsuarioActual.CveRol = 1 Then + Dim Str As Array = e.Row.DBCampo("ObservacionesDetalle").Replace(",", " ").Replace(".", " ").Replace(vbTab, " ").Replace(vbLf, " ").Split(" "c) + CveConsecSerie = e.Row.DBCampo("Consec").ToString().ToEntero() + PSSerie = e.Row.DBCampo("PS").ToString() + CvePSSerie = e.Row.DBCampo("CvePS").ToEntero() + CveUMSerie = e.Row.DBCampo("CveUM").ToEntero() + LbCantidad.Text = e.Row.DBCampo("CantidadF") + LbCantidad2.Text = e.Row.DBCampo("CantidadF") + For Each st As String In Str + If Not st.Contiene("", "/") Then + AgregaSerie(st, 3) + End If + Next + + End If + + Else + e.Row.FCButton("BtnSerie").Visible = False + e.Row.FCTextBox("TbCantidadF").Enabled = True + e.Row.FCTextBox("TbCantidadF").Attributes.Add("onblur", String.Format("ValidarCantidad(this, {0})", e.Row.DBCampo("CantidadF"))) End If - Dim DvFechaCaducidad As HtmlGenericControl = TryCast(e.Row.FindControl("DvFechaCaducidad"), HtmlGenericControl) - + + If CBool(e.Row.DBCampo("AplicaSeccion")) Then + e.Row.FCDropDownList("DdlSeccionAlmacen").Visible = True + If DdlAlmacen.SelectedValue.ToEntero() > 0 Then + CargaSeccionesAlmacen(e.Row.FCDropDownList("DdlSeccionAlmacen"), DdlAlmacen.SelectedValue.ToEntero(), e.Row.DBCampo("CvePS").ToEntero(), UsuarioActual.CveEmpresa, True) + End If + Else + e.Row.FCDropDownList("DdlSeccionAlmacen").Visible = False + End If + + Dim DvFechaCaducidad As HtmlGenericControl = TryCast(e.Row.FindControl("DvFechaCaducidad"), HtmlGenericControl) + If CBool(e.Row.DBCampo("AplicaCaducidad")) Then DvFechaCaducidad.Visible = True ' e.Row.FCTextBox("TxtCaducidad").Visible = True 'e.Row.FCLinkButton("LnkCaducidad").Visible = True - e.Row.FCTextBox("TxtCaducidad").ReadOnly = True - 'CType(e.Row.FindControl("RFVCaducidad"), RequiredFieldValidator).Enabled = False - - 'si aplica caducidad y viene vacía (posible por venta anterior), que se active su registro - If (e.Row.FCTextBox("TxtCaducidad").Text = "" OrElse e.Row.FCTextBox("TxtCaducidad").Text.ToDate <= MinFecha) OrElse UsuarioActual.TienePermisoProceso(364) OrElse UsuarioActual.Empresa.Funcionalidad(578).ToEntero = 1 Then - e.Row.FCTextBox("TxtCaducidad").ReadOnly = False - 'CType(e.Row.FindControl("RFVCaducidad"), RequiredFieldValidator).Enabled = True - 'e.Row.FCTextBox("TxtCaducidad").Enabled = True - End If - - Else - 'e.Row.FCTextBox("TxtCaducidad").Visible = False - 'e.Row.FCLinkButton("LnkCaducidad").Visible = False - 'e.Row.FCTextBox("TxtCaducidad").Enabled = True - DvFechaCaducidad.Visible = False - End If - - If CBool(e.Row.DBCampo("AplicaLote")) Then - e.Row.FCTextBox("TxtLote").Visible = True - 'si aplica caducidad y viene vacía (posible por venta anterior), que se active su registro - If e.Row.FCTextBox("TxtLote").Text = "" OrElse UsuarioActual.TienePermisoProceso(364) OrElse UsuarioActual.Empresa.Funcionalidad(578).ToEntero = 1 Then - e.Row.FCTextBox("TxtLote").ReadOnly = False - e.Row.FCTextBox("TxtLote").Enabled = True - Else - e.Row.FCTextBox("TxtLote").ReadOnly = True - End If - Else - e.Row.FCTextBox("TxtLote").Visible = False + e.Row.FCTextBox("TxtCaducidad").ReadOnly = True + 'CType(e.Row.FindControl("RFVCaducidad"), RequiredFieldValidator).Enabled = False + + 'si aplica caducidad y viene vacía (posible por venta anterior), que se active su registro + If (e.Row.FCTextBox("TxtCaducidad").Text = "" OrElse e.Row.FCTextBox("TxtCaducidad").Text.ToDate <= MinFecha) OrElse UsuarioActual.TienePermisoProceso(364) OrElse UsuarioActual.Empresa.Funcionalidad(578).ToEntero = 1 Then + e.Row.FCTextBox("TxtCaducidad").ReadOnly = False + 'CType(e.Row.FindControl("RFVCaducidad"), RequiredFieldValidator).Enabled = True + 'e.Row.FCTextBox("TxtCaducidad").Enabled = True + End If + + Else + 'e.Row.FCTextBox("TxtCaducidad").Visible = False + 'e.Row.FCLinkButton("LnkCaducidad").Visible = False + 'e.Row.FCTextBox("TxtCaducidad").Enabled = True + DvFechaCaducidad.Visible = False End If - e.Row.FCButton("BtnDividir").Attributes.Add("onclick", String.Format("Dividir('{0}');", e.Row.FCTextBox("TxtDividir").ClientID)) - e.Row.FCButton("BtnDividir").CommandArgument = e.Row.RowIndex.ToString() - e.Row.FCTextBox("TxtDividir").Attributes.Add("onkeyup", String.Format("LimitaCantidad({0},this,'{1}');", e.Row.DBCampo("CantidadF"), e.Row.FCButton("BtnDividir").ClientID)) - - - 'FUNCIONALIDAD PISTOLA DE CODIGOS - If e.Row.DBCampo("CodigoBarras").Trim <> "" AndAlso UsuarioActual.Empresa.Funcionalidad(132) = "1" Then - - 'NO BLOQUEA PARA ROL AD - If UsuarioActual.CveRol = 1 Then - If AplicaSerie Then - e.Row.FCTextBox("TbCantidadF").Enabled = False - e.Row.FCTextBox("TbCantidadF").Text = "0" - Else - e.Row.FCTextBox("TbCantidadF").Text = e.Row.DBCampo("CantidadF").ToDecimal.ToString("#,##0.######") - End If - End If - - If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then 'acumuladoras - If e.Row.DBCampo("CveCategoria") <> "249" Then - e.Row.FCTextBox("TbCantidadF").Enabled = True - End If - Else - If Not UsuarioActual.CveRol = 1 Then - e.Row.FCTextBox("TbCantidadF").Enabled = False - e.Row.FCTextBox("TbCantidadF").Text = "0" - End If - End If - End If - - 'SI ES TRASPASO OBLIGATORIO SURTIR TODO - If TipoEntrega = 2 Then - e.Row.FCCheckBox("cbInv").Enabled = False + If CBool(e.Row.DBCampo("AplicaLote")) Then + e.Row.FCTextBox("TxtLote").Visible = True + 'si aplica caducidad y viene vacía (posible por venta anterior), que se active su registro + If e.Row.FCTextBox("TxtLote").Text = "" OrElse UsuarioActual.TienePermisoProceso(364) OrElse UsuarioActual.Empresa.Funcionalidad(578).ToEntero = 1 Then + e.Row.FCTextBox("TxtLote").ReadOnly = False + e.Row.FCTextBox("TxtLote").Enabled = True + Else + e.Row.FCTextBox("TxtLote").ReadOnly = True + End If + Else + e.Row.FCTextBox("TxtLote").Visible = False + End If + + e.Row.FCButton("BtnDividir").Attributes.Add("onclick", String.Format("Dividir('{0}');", e.Row.FCTextBox("TxtDividir").ClientID)) + e.Row.FCButton("BtnDividir").CommandArgument = e.Row.RowIndex.ToString() + e.Row.FCTextBox("TxtDividir").Attributes.Add("onkeyup", String.Format("LimitaCantidad({0},this,'{1}');", e.Row.DBCampo("CantidadF"), e.Row.FCButton("BtnDividir").ClientID)) + + + 'FUNCIONALIDAD PISTOLA DE CODIGOS + If e.Row.DBCampo("CodigoBarras").Trim <> "" AndAlso UsuarioActual.Empresa.Funcionalidad(132) = "1" Then + + 'NO BLOQUEA PARA ROL AD + If UsuarioActual.CveRol = 1 Then + If AplicaSerie Then + e.Row.FCTextBox("TbCantidadF").Enabled = False + e.Row.FCTextBox("TbCantidadF").Text = "0" + Else + e.Row.FCTextBox("TbCantidadF").Text = e.Row.DBCampo("CantidadF").ToDecimal.ToString("#,##0.######") + End If + End If + + If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then 'acumuladoras + If e.Row.DBCampo("CveCategoria") <> "249" Then + e.Row.FCTextBox("TbCantidadF").Enabled = True + End If + Else + If Not UsuarioActual.CveRol = 1 Then + e.Row.FCTextBox("TbCantidadF").Enabled = False + e.Row.FCTextBox("TbCantidadF").Text = "0" + End If + End If + End If + + 'SI ES TRASPASO OBLIGATORIO SURTIR TODO + If TipoEntrega = 2 Then + e.Row.FCCheckBox("cbInv").Enabled = False End If If BloqueCantidad Then @@ -1285,7 +1285,7 @@ Partial Class Inventarios_EntregaAlmacen End If - End If + End If End Sub Protected Sub DdlCaducidadProducto_SelectedIndexChanged(sender As Object, e As EventArgs) @@ -1342,698 +1342,698 @@ Partial Class Inventarios_EntregaAlmacen DdlLoteFechaCaducidad.SelectedValueExist(ValorAsignado) End If - End Sub - - Private Sub CargaDocumentos(tCveVenta As Integer) - If tCveVenta > 0 Then - Dim objInv As New ClsEdocumentacion - - If objInv.DocumentacionElectronicaGet(-1, -1, -1, UsuarioActual.CveEmpresa, -1, tCveVenta) Then - GvDocs.DataSource = objInv.DtResultados.FiltraParametros("Adjunto <> ''") - End If - objInv.Dispose() - GvDocs.DataBind() - End If - + End Sub + + Private Sub CargaDocumentos(tCveVenta As Integer) + If tCveVenta > 0 Then + Dim objInv As New ClsEdocumentacion + + If objInv.DocumentacionElectronicaGet(-1, -1, -1, UsuarioActual.CveEmpresa, -1, tCveVenta) Then + GvDocs.DataSource = objInv.DtResultados.FiltraParametros("Adjunto <> ''") + End If + objInv.Dispose() + GvDocs.DataBind() + End If + End Sub -#End Region +#End Region -#Region " AGREGAR " +#Region " AGREGAR " + + Protected Sub BtnSerie_Click(sender As Object, e As EventArgs) + + Dim Argumentos As String() = CType(sender, Button).CommandArgument.Split("°"c) + + LbProducto.Text = Argumentos(2) + LbCantidad.Text = Argumentos(3) + + LbProducto2.Text = Argumentos(2) + LbCantidad2.Text = Argumentos(3) + + CvePSSerie = Argumentos(0).ToEntero() + CveUMSerie = Argumentos(1).ToEntero() + PSSerie = Argumentos(2).ToString() + CveConsecSerie = Argumentos(4).ToEntero() + CveMetodoInventario = Argumentos(5).ToEntero() + + If CveMetodoInventario = 6 Then + RegistraScript("$('#DivLote').modal({backdrop: 'static', keyboard: false});") + CargaLote() + UpLoteBatch.Update() + Else + RegistraScript("$('#DivSerie').modal({backdrop: 'static', keyboard: false});") + CargaSerie() + UpSerie.Update() + End If - Protected Sub BtnSerie_Click(sender As Object, e As EventArgs) - - Dim Argumentos As String() = CType(sender, Button).CommandArgument.Split("°"c) - - LbProducto.Text = Argumentos(2) - LbCantidad.Text = Argumentos(3) - - LbProducto2.Text = Argumentos(2) - LbCantidad2.Text = Argumentos(3) - - CvePSSerie = Argumentos(0).ToEntero() - CveUMSerie = Argumentos(1).ToEntero() - PSSerie = Argumentos(2).ToString() - CveConsecSerie = Argumentos(4).ToEntero() - CveMetodoInventario = Argumentos(5).ToEntero() - - If CveMetodoInventario = 6 Then - RegistraScript("$('#DivLote').modal({backdrop: 'static', keyboard: false});") - CargaLote() - UpLoteBatch.Update() - Else - RegistraScript("$('#DivSerie').modal({backdrop: 'static', keyboard: false});") - CargaSerie() - UpSerie.Update() - End If - End Sub -#Region " AGREGA POR SERIE/LOTE " +#Region " AGREGA POR SERIE/LOTE " - Private Sub CreaDtDetalle() - If DtDatosDetalle Is Nothing Then - DtDatosDetalle = New DataTable - DtDatosDetalle.Columns.Add("CveVentaDetalle", GetType(Integer)) - DtDatosDetalle.Columns.Add("Consec", GetType(Integer)) - DtDatosDetalle.Columns.Add("ConsecId", GetType(Integer)) - DtDatosDetalle.Columns.Add("CvePS", GetType(Integer)) - DtDatosDetalle.Columns.Add("PS", GetType(String)) - DtDatosDetalle.Columns.Add("CveUM", GetType(Integer)) - DtDatosDetalle.Columns.Add("Serie", GetType(String)) - DtDatosDetalle.Columns.Add("Lote", GetType(String)) - DtDatosDetalle.Columns.Add("FechaCaducidad", GetType(Date)) - DtDatosDetalle.Columns.Add("FueTraspaso", GetType(Integer)) - End If - End Sub - Private Sub CargaSerie(Optional CerrarCompletado As Boolean = False, Optional CargaMasivo As Boolean = False) - - If Not CargaMasivo Then RegistraScript("$('#DivSerie').modal({backdrop: 'static', keyboard: false})", "show") - - Dim AplicaCaducidad As Boolean = False - Dim dttt As DataTable = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePSSerie) - If dttt IsNot Nothing AndAlso dttt.Rows.Count > 0 Then - AplicaCaducidad = If(dttt.FiltraParametros("").Rows(0)("AplicaCaducidad").ToString() = "True", True, False) - End If - - GvSerie.Columns(1).HeaderText = UsuarioActual.Empresa.Funcionalidad(147) - - If AplicaCaducidad Then - GvSerie.Columns(1).Visible = True - TdCaducidad1.Visible = True - TdCaducidad2.Visible = True - Else - GvSerie.Columns(1).Visible = False - TdCaducidad1.Visible = False - TdCaducidad2.Visible = False - End If - - GvSerie.DataSource = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerie), "Consec DESC") - GvSerie.DataBind() - - 'SERIE LOTE RECOMENDADO - Dim DtSerie As New DataTable - If TipoMovimiento = 1 AndAlso Not CargaMasivo Then - Dim ObjInventarios As New ClsInventarios - If ObjInventarios.SerieRecomendadoGet(CvePSSerie, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero(), CveSubProyecto:=CveSubProyecto, CveCliente:=CveCliente, CveVendedor:=CveVendedor) Then - DtSerie = ObjInventarios.DtResultados - End If - ObjInventarios.Dispose() - Else - DtSerie = DtExistencias.FiltraParametros("Serie <> ''") - End If - 'SERIE LOTE RECOMENDADO - QUITA YA COMPLETADOS EN EL CLIENTE - If DtSerie IsNot Nothing AndAlso DtSerie.Rows.Count > 0 Then - 'CALCULA YA COMPLETADOS - Dim DrsRemove As New List(Of DataRow) - DtSerie.Columns.Add("CantidadSeleccionada", GetType(Integer)) - For Each dr As DataRow In DtSerie.Rows - dr("CantidadSeleccionada") = DtDatosDetalle.FiltraParametros(String.Format("Consec = {0} AND Serie = '{1}'", CveConsecSerie, dr("Serie").ToString().Replace("'", "''"))).Rows.Count - If dr("CantidadSeleccionada").ToString().ToDecimal = dr("Existencia").ToString().ToDecimal Then - DrsRemove.Add(dr) - End If - Next - - 'ELIMINA YA COMPLETADOS EN PAGINA - For Each dr As DataRow In DrsRemove - DtSerie.Rows.Remove(dr) - Next - - If DtSerie.Rows.Count > 0 Then - Dim Mensaje As New StringBuilder - Mensaje.AppendFormat("Serie Recomendado: {0}", DtSerie.Rows(0)("Serie")) - - If AplicaCaducidad Then Mensaje.AppendFormat(", Caducidad: {0}", DtSerie.Rows(0)("FechaCaducidad").ToString().ToDate.ToShortDateString) - LbSerieRecomendado.Text = Mensaje.ToString() 'String.Format("Serie / Lote Recomendado: {0}, Caducicdad: {1}", ObjInventarios.DtResultados.Rows(0)("SerieLote"), ObjInventarios.DtResultados.Rows(0)("FechaCaducidad").ToString().ToDate.ToShortDateString) - Else - LbSerieRecomendado.Text = "No se encontro ningun Serie/Lote." - End If - Else - LbSerieRecomendado.Text = "No se encontro ningun Serie/Lote." - End If - - 'SI TIENE SALIDA POR SERIE LOTE, BLOQUEAMOS CHECK Y TXTCANTIDAD - Dim Contador As Integer = 0 - For Each Gvr As GridViewRow In GvDatos.Rows - If Gvr.DataKey("AplicaSerie") = "True" Then - Contador = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Gvr.DataKey("Consec"))).Rows.Count - Gvr.FCCheckBox("cbInv").Enabled = False - Gvr.FCCheckBox("cbInv").Checked = True - Gvr.FCTextBox("TbCantidadF").Text = Contador.ToString() - End If - Next - UpDatos.Update() - - 'VALIDA QUE SIGA AGREGANDO - If DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerie)).Rows.Count = LbCantidad.Text.ToEntero() Then - BtnAgregarPS.Enabled = False - If CerrarCompletado Then - RegistraScript("$('#DivSerie').modal('hide')", "hide") - End If - UpSerie.Update() - Exit Sub - Else - BtnAgregarPS.Enabled = True - UpSerie.Update() - End If - - End Sub - - Protected Sub BtnAgregarPS_Click(sender As Object, e As EventArgs) - If TxtSerie.Text.Trim.Length >= 2 AndAlso TxtSerie.Text.Trim.StartsWith("*") AndAlso TxtSerie.Text.Trim.EndsWith("*") Then - Dim ArraySeries() As String = Nothing - Dim Series As String = Nothing - - Series = TxtSerie.Text.Trim - Series = Series.Replace("*", "") - ArraySeries = Series.Trim.Split(","c) - - For i As Integer = 0 To ArraySeries.Length - 1 - If ArraySeries(i).Trim.Length > 1 Then AgregaSerie(ArraySeries(i).Trim, 1, True) - Next - Else - AgregaSerie(TxtSerie.Text.Trim, 1) - End If - End Sub - - Private Sub AgregaSerie(Serie As String, Tipo As Integer, Optional CargaMasivo As Boolean = False) - - If Serie.Trim = "" Then - Alert("El campo 'Serie' es obligatorio. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - If Serie.Trim.Length < 6 Then - Alert("El campo 'Serie' debe tener minimo 6 caracteres. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - If DtDatosDetalle.FiltraParametros($"CvePS = {CvePSSerie} AND Serie = '{Serie}'").Rows.Count > 0 Then - Alert("La Serie indicada ya esta registrada. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - RegistraScript("playsonidito('142608__autistic-lucario__error.wav')", "Error1") - TxtSerie.Text = "" - Exit Sub - End If - - Dim AplicaCaducidad As Boolean = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePSSerie).FiltroPrimeroValor("AplicaCaducidad", "") = "True" - 'If GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePSSerie).FiltraParametros("").Rows(0) IsNot Nothing Then - ' AplicaCaducidad = If(GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerie).FiltraParametros("").Rows(0)("AplicaCaducidad").ToString() = "True", True, False) - 'End If - - - 'Valida Existencia - If TipoMovimiento = 1 Then - Dim ObjInventarios As New ClsInventarios - Dim Existencia As Decimal = ObjInventarios.GetExistenciasPS(CvePSSerie, CveUMSerie, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero(), FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), Serie:=Serie, CveVendedor:=CveVendedor, CveSubProyecto:=CveSubProyecto, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeApartados:=If(TipoEntrega = 2, 1, -1)) - If Existencia < 1 Then - Alert($"No hay existencia suficiente del producto ""{PSSerie}"" con la Serie definida ""{Serie}"". Por favor rectifique y vuelva a intentar", TipoMensaje.MsgAdvertencia, If(Tipo = 2, "window.setTimeout(Focus,200);", "")) - RegistraScript("playsonidito('142608__autistic-lucario__error.wav')", "Error2") - ObjInventarios.Dispose() - Exit Sub - End If - ObjInventarios.Dispose() - Else - If DtExistencias IsNot Nothing Then - Dim Existencia As Decimal = DtExistencias.SUMD("Cantidad", $"CvePS = {CvePSSerie} AND CveUM = {CveUMSerie} AND Serie = '{Serie}'") - If Existencia < 1 Then - Alert($"No hay existencia suficiente del producto ""{PSSerie}"" con la Serie definida ""{Serie}"". Por favor rectifique y vuelva a intentar", TipoMensaje.MsgAdvertencia, If(Tipo = 2, "window.setTimeout(Focus,200);", "")) - RegistraScript("playsonidito('142608__autistic-lucario__error.wav')", "Error3") - Exit Sub - End If - End If - End If - - Dim Row As DataRow = DtDatosDetalle.NewRow - - Row("ConsecId") = CveConsecSerie - Row("Consec") = DtDatosDetalle.Rows.Count + 1 - Row("PS") = PSSerie - Row("CvePS") = CvePSSerie - Row("CveUM") = CveUMSerie - Row("Serie") = Serie - Row("FechaCaducidad") = If(AplicaCaducidad, TxtFechaCaducidad.Text, MinFecha.ToShortDateString) - - DtDatosDetalle.Rows.Add(Row) - ActualizaBitacora() - RegistraScript("playsonidito('beep-07.wav')", "Sonidito") - - If Tipo = 1 Then - TxtSerie.Text = "" - TxtFechaCaducidad.Text = "" - End If - - If Tipo < 3 Then - CargaSerie(True, CargaMasivo) - End If - - End Sub - - Protected Sub GvSerie_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvSerie.RowDeleting - - Dim keySerie As String = e.Keys("Serie").ToString() - Try - For Each dr As DataRow In DtDatosDetalle.Rows - If dr("Serie").ToString() = keySerie Then - dr.Delete() - End If - Next - Catch ex As Exception - - End Try - - DtDatosDetalle.AcceptChanges() - ActualizaBitacora() - CargaSerie() - + Private Sub CreaDtDetalle() + If DtDatosDetalle Is Nothing Then + DtDatosDetalle = New DataTable + DtDatosDetalle.Columns.Add("CveVentaDetalle", GetType(Integer)) + DtDatosDetalle.Columns.Add("Consec", GetType(Integer)) + DtDatosDetalle.Columns.Add("ConsecId", GetType(Integer)) + DtDatosDetalle.Columns.Add("CvePS", GetType(Integer)) + DtDatosDetalle.Columns.Add("PS", GetType(String)) + DtDatosDetalle.Columns.Add("CveUM", GetType(Integer)) + DtDatosDetalle.Columns.Add("Serie", GetType(String)) + DtDatosDetalle.Columns.Add("Lote", GetType(String)) + DtDatosDetalle.Columns.Add("FechaCaducidad", GetType(Date)) + DtDatosDetalle.Columns.Add("FueTraspaso", GetType(Integer)) + End If End Sub -#End Region -#Region "Bitacora" - Private Sub ActualizaBitacora(Optional Eliminar As Boolean = False) - If Not Eliminar Then - DtDatos.TableName = "DtDatos" - DtDatosDetalle.TableName = "DtDatosDetalle" - DtDatos.WriteXml(ArchivoBitacora, XmlWriteMode.WriteSchema) - DtDatosDetalle.WriteXml(ArchivoBitacoraDetalle, XmlWriteMode.WriteSchema) - Else - File.Delete(ArchivoBitacora) - End If - - End Sub - - Protected Sub HplCargaBitacora_Click(sender As Object, e As EventArgs) - - CargaBitacora = False - If IO.File.Exists(ArchivoBitacora) Then - - CargaBitacoraSerie() - CargaGvDatos() - CargaBitacora = True - Else - Alert("No hay bitácora para recuperar.", TipoMensaje.ToastInformacion) - End If - - End Sub - - Private Sub CargaBitacoraSerie() - - If IO.File.Exists(ArchivoBitacora) Then - - DtDatos.ReadXml(ArchivoBitacora) - If IO.File.Exists(ArchivoBitacoraDetalle) Then - Dim dtt As New DataTable - dtt.ReadXml(ArchivoBitacoraDetalle) - DtDatosDetalle = dtt - Alert("Registro(s) Recuperados", TipoMensaje.ToastInformacion) - - End If - Else - Alert("No hay bitácora para recuperar.", TipoMensaje.ToastInformacion) - End If + Private Sub CargaSerie(Optional CerrarCompletado As Boolean = False, Optional CargaMasivo As Boolean = False) + + If Not CargaMasivo Then RegistraScript("$('#DivSerie').modal({backdrop: 'static', keyboard: false})", "show") + + Dim AplicaCaducidad As Boolean = False + Dim dttt As DataTable = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePSSerie) + If dttt IsNot Nothing AndAlso dttt.Rows.Count > 0 Then + AplicaCaducidad = If(dttt.FiltraParametros("").Rows(0)("AplicaCaducidad").ToString() = "True", True, False) + End If + + GvSerie.Columns(1).HeaderText = UsuarioActual.Empresa.Funcionalidad(147) + + If AplicaCaducidad Then + GvSerie.Columns(1).Visible = True + TdCaducidad1.Visible = True + TdCaducidad2.Visible = True + Else + GvSerie.Columns(1).Visible = False + TdCaducidad1.Visible = False + TdCaducidad2.Visible = False + End If + + GvSerie.DataSource = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerie), "Consec DESC") + GvSerie.DataBind() + + 'SERIE LOTE RECOMENDADO + Dim DtSerie As New DataTable + If TipoMovimiento = 1 AndAlso Not CargaMasivo Then + Dim ObjInventarios As New ClsInventarios + If ObjInventarios.SerieRecomendadoGet(CvePSSerie, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero(), CveSubProyecto:=CveSubProyecto, CveCliente:=CveCliente, CveVendedor:=CveVendedor) Then + DtSerie = ObjInventarios.DtResultados + End If + ObjInventarios.Dispose() + Else + DtSerie = DtExistencias.FiltraParametros("Serie <> ''") + End If + 'SERIE LOTE RECOMENDADO - QUITA YA COMPLETADOS EN EL CLIENTE + If DtSerie IsNot Nothing AndAlso DtSerie.Rows.Count > 0 Then + 'CALCULA YA COMPLETADOS + Dim DrsRemove As New List(Of DataRow) + DtSerie.Columns.Add("CantidadSeleccionada", GetType(Integer)) + For Each dr As DataRow In DtSerie.Rows + dr("CantidadSeleccionada") = DtDatosDetalle.FiltraParametros(String.Format("Consec = {0} AND Serie = '{1}'", CveConsecSerie, dr("Serie").ToString().Replace("'", "''"))).Rows.Count + If dr("CantidadSeleccionada").ToString().ToDecimal = dr("Existencia").ToString().ToDecimal Then + DrsRemove.Add(dr) + End If + Next + + 'ELIMINA YA COMPLETADOS EN PAGINA + For Each dr As DataRow In DrsRemove + DtSerie.Rows.Remove(dr) + Next + + If DtSerie.Rows.Count > 0 Then + Dim Mensaje As New StringBuilder + Mensaje.AppendFormat("Serie Recomendado: {0}", DtSerie.Rows(0)("Serie")) + + If AplicaCaducidad Then Mensaje.AppendFormat(", Caducidad: {0}", DtSerie.Rows(0)("FechaCaducidad").ToString().ToDate.ToShortDateString) + LbSerieRecomendado.Text = Mensaje.ToString() 'String.Format("Serie / Lote Recomendado: {0}, Caducicdad: {1}", ObjInventarios.DtResultados.Rows(0)("SerieLote"), ObjInventarios.DtResultados.Rows(0)("FechaCaducidad").ToString().ToDate.ToShortDateString) + Else + LbSerieRecomendado.Text = "No se encontro ningun Serie/Lote." + End If + Else + LbSerieRecomendado.Text = "No se encontro ningun Serie/Lote." + End If + + 'SI TIENE SALIDA POR SERIE LOTE, BLOQUEAMOS CHECK Y TXTCANTIDAD + Dim Contador As Integer = 0 + For Each Gvr As GridViewRow In GvDatos.Rows + If Gvr.DataKey("AplicaSerie") = "True" Then + Contador = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Gvr.DataKey("Consec"))).Rows.Count + Gvr.FCCheckBox("cbInv").Enabled = False + Gvr.FCCheckBox("cbInv").Checked = True + Gvr.FCTextBox("TbCantidadF").Text = Contador.ToString() + End If + Next + UpDatos.Update() + + 'VALIDA QUE SIGA AGREGANDO + If DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerie)).Rows.Count = LbCantidad.Text.ToEntero() Then + BtnAgregarPS.Enabled = False + If CerrarCompletado Then + RegistraScript("$('#DivSerie').modal('hide')", "hide") + End If + UpSerie.Update() + Exit Sub + Else + BtnAgregarPS.Enabled = True + UpSerie.Update() + End If + End Sub -#End Region -#Region " AGREGA CON LOTE BATCH " + Protected Sub BtnAgregarPS_Click(sender As Object, e As EventArgs) + If TxtSerie.Text.Trim.Length >= 2 AndAlso TxtSerie.Text.Trim.StartsWith("*") AndAlso TxtSerie.Text.Trim.EndsWith("*") Then + Dim ArraySeries() As String = Nothing + Dim Series As String = Nothing - Private Sub CreaDtDetalleLote() - If DtDatosDetalleLote Is Nothing Then - DtDatosDetalleLote = New DataTable - DtDatosDetalleLote.Columns.Add("CveVentaDetalle", GetType(Integer)) - DtDatosDetalleLote.Columns.Add("Consec", GetType(Integer)) - DtDatosDetalleLote.Columns.Add("ConsecId", GetType(Integer)) - DtDatosDetalleLote.Columns.Add("Cantidad", GetType(Double)) - DtDatosDetalleLote.Columns.Add("CvePS", GetType(Integer)) - DtDatosDetalleLote.Columns.Add("PS", GetType(String)) - DtDatosDetalleLote.Columns.Add("CveUM", GetType(Integer)) - DtDatosDetalleLote.Columns.Add("Lote", GetType(String)) - DtDatosDetalleLote.Columns.Add("FechaCaducidad", GetType(String)) - DtDatosDetalleLote.Columns.Add("FueTraspaso", GetType(Integer)) - End If - End Sub - Private Sub CargaLote(Optional CerrarCompletado As Boolean = False) - - RegistraScript("$('#DivLote').modal({backdrop: 'static', keyboard: false})") - GvLote.Columns(2).HeaderText = UsuarioActual.Empresa.Funcionalidad(147) - GvLote.DataSource = DtDatosDetalleLote.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerie), "Consec DESC") - GvLote.DataBind() - - 'VALIDA QUE SIGA AGREGANDO - If DtDatosDetalleLote.SUM("Cantidad", String.Format("ConsecId = {0}", CveConsecSerie)) = LbCantidad2.Text.ToDecimal Then - BtnLote.Enabled = False - If CerrarCompletado Then - RegistraScript("$('#DivLote').modal('hide')", "hide") - End If - Else - BtnLote.Enabled = True - End If - - 'LOTE RECOMENDADO - Dim DtLotes As New DataTable - If TipoMovimiento = 1 Then - Dim ObjInventarios As New ClsInventarios - If ObjInventarios.LoteRecomendadoGet(CvePSSerie, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero()) Then - DtLotes = ObjInventarios.DtResultados - End If - ObjInventarios.Dispose() - Else - DtLotes = DtExistencias.FiltraParametros("Lote <> ''") - End If - - Dim DrsRemove As New List(Of DataRow) - - If DtLotes.Rows.Count > 0 Then - 'CALCULA YA COMPLETADOS - DtLotes.Columns.Add("CantidadSeleccionada", GetType(Integer)) - For Each dr As DataRow In DtLotes.Rows - dr("CantidadSeleccionada") = DtDatosDetalleLote.SUM("Cantidad", String.Format("Consec = {0} AND Lote = '{1}'", CveConsecSerie, dr("Lote"))) - If dr("CantidadSeleccionada").ToString().ToDecimal = dr("Existencia").ToString().ToDecimal Then - DrsRemove.Add(dr) - End If - Next - - 'ELIMINA YA COMPLETADOS EN PAGINA - For Each dr As DataRow In DrsRemove - DtLotes.Rows.Remove(dr) - Next - - If DtLotes.Rows.Count > 0 Then - Dim Mensaje As New StringBuilder - Mensaje.AppendFormat("Recomendado: Existencia: {0} Lote: {1} Fecha Caducidad: {2} ", DtLotes.Rows(0)("Existencia").ToString().FormatoNumero, DtLotes.Rows(0)("Lote"), DtLotes.Rows(0)("FechaCaducidad").ToString().ToDate.ToShortDateString) - LbLoteRecomendado.Text = Mensaje.ToString() - Else - LbLoteRecomendado.Text = "No se encontro ningún Lote recomendado." - End If - Else - LbLoteRecomendado.Text = "No se encontro ningún Lote recomendado." - End If - - - 'SI TIENE SALIDA POR LOTE, BLOQUEAMOS CHECK Y TXTCANTIDAD - Dim Contador As Decimal = 0 - For Each Gvr As GridViewRow In GvDatos.Rows - If Gvr.DataKey("CvePS").ToEntero() = CvePSSerie Then - Contador = DtDatosDetalleLote.SUM("Cantidad", String.Format("ConsecId = {0}", Gvr.DataKey("Consec"))) - Gvr.FCCheckBox("cbInv").Enabled = False - Gvr.FCCheckBox("cbInv").Checked = True - Gvr.FCTextBox("TbCantidadF").Text = Contador.ToString().FormatoNumero - End If - Next - - RVCantidadLote.MaximumValue = (If((LbCantidad2.Text.ToDecimal - Contador) = 0, 0.02, LbCantidad2.Text.ToDecimal - Contador)).ToString().FormatoNumero - - TxtCantidadLote.Text = "1" - TxtLote.Text = "" - TxtBatch.Text = "" - TxtLote.Focus() - - UpLoteBatch.Update() - UpDatos.Update() - - End Sub - - Protected Sub BtnAgregarPS2_Click(sender As Object, e As EventArgs) - AgregaLote(TxtLote.Text.Trim, TxtBatch.Text.Trim, 1) - End Sub - Private Sub AgregaLote(Lote As String, Batch As String, Tipo As Integer) - - If Lote = "" Then - Alert("El campo Lote es obligatorio. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - 'VALIDACION DE SERIES DUPLICADAS - Dim MensajeAlert As New StringBuilder - Dim DtDuplicado As New DataTable - Dim DtSeriesNuevas As New DataTable - DtSeriesNuevas.Columns.Add("Serie", GetType(String)) - - DtDuplicado = DtDatosDetalleLote.FiltraParametros($"ConsecId = {CveConsecSerie} AND Lote = '{Lote}' AND Batch = '{Batch}'") - If DtDuplicado IsNot Nothing AndAlso DtDuplicado.Rows.Count > 0 Then - Alert($"
    El numero de Lote ""{Lote}"" y Batch = '{Batch}' proporcionado ya se encuentra ingresado.", TipoMensaje.MsgAdvertencia) - RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") - Exit Sub - End If - - Dim Row As DataRow = DtDatosDetalleLote.NewRow - Dim CantidadLote As Decimal = TxtCantidadLote.Text.ToDecimal - - Dim MensajeSinExistencias As New StringBuilder - Dim ObjInventarios As New ClsInventarios - - 'VERIFICA EXISTENCIAS - If TipoMovimiento = 1 Then - Dim Existencia As Decimal = ObjInventarios.GetExistenciasPS(CvePSSerie, CveUMSerie, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero(), FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), CveVendedor:=CveVendedor, CveSubProyecto:=CveSubProyecto, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), Lote:=Lote, ExcluyeApartados:=If(TipoEntrega = 2, 1, -1)) - If Existencia < CantidadLote Then - Alert($"No hay existencia suficiente del producto ""{PSSerie}"" con el lote definido ""{Lote}"" y el batch ""{Batch}"". Por favor rectifique y vuelva a intentar", TipoMensaje.MsgAdvertencia) - RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") - ObjInventarios.Dispose() - Exit Sub - End If - Else - If DtExistencias IsNot Nothing Then - Dim Existencia As Decimal = DtExistencias.SUMD("Cantidad", $"CvePS = {CvePSSerie} AND CveUM = {CveUMSerie} AND Lote = '{Lote}' AND Batch = '{Batch}'") - If Existencia < CantidadLote Then - Alert($"No hay existencia suficiente del producto ""{PSSerie}"" con el lote definido ""{Lote}"" y el batch ""{Batch}"". Por favor rectifique y vuelva a intentar", TipoMensaje.MsgAdvertencia) - RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") - ObjInventarios.Dispose() - Exit Sub - End If - End If - End If - - Dim FechaCaducidad As String = "" - If ObjInventarios.LoteRecomendadoGet(CvePSSerie, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero()) AndAlso ObjInventarios.DtResultados.Rows.Count > 0 Then - FechaCaducidad = ObjInventarios.DtResultados.Rows(0)("FechaCaducidad").ToString().ToDate.ToShortDateString - End If - - Row("ConsecId") = CveConsecSerie - Row("Consec") = DtDatosDetalle.Rows.Count + 1 - Row("Cantidad") = CantidadLote - Row("CvePS") = CvePSSerie - Row("PS") = PSSerie - Row("CveUM") = CveUMSerie - Row("Lote") = Lote - Row("Batch") = Batch - Row("FechaCaducidad") = FechaCaducidad - - DtDatosDetalleLote.Rows.Add(Row) - ObjInventarios.Dispose() - - If Tipo = 1 Then - TxtCantidadLote.Text = "1" - TxtLote.Text = "" - TxtBatch.Text = "" - End If - - CargaLote(True) - - End Sub - - Protected Sub GvLote_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvLote.RowDeleting - - Dim keyLote As String = e.Keys("Lote").ToString() - Try - For Each dr As DataRow In DtDatosDetalleLote.Rows - If dr("Lote").ToString() = keyLote Then - dr.Delete() - End If - Next - Catch ex As Exception - - End Try - DtDatosDetalleLote.AcceptChanges() - CargaLote() + Series = TxtSerie.Text.Trim + Series = Series.Replace("*", "") + ArraySeries = Series.Trim.Split(","c) + + For i As Integer = 0 To ArraySeries.Length - 1 + If ArraySeries(i).Trim.Length > 1 Then AgregaSerie(ArraySeries(i).Trim, 1, True) + Next + Else + AgregaSerie(TxtSerie.Text.Trim, 1) + End If End Sub -#End Region -#Region " AGREGA CON TXT | CODIGO - SERIE " - Protected Sub BtnCodigoPS_Click(sender As Object, e As EventArgs) - - If TxtCodigoPS.Text = "" Then - Exit Sub - End If - - TdSeriePS.Visible = False - Dim Existe As Boolean = False - Dim PSTemp As String = "" - - For Each Gvr As GridViewRow In GvDatos.Rows - If Gvr.DataKey("CodigoBarras") = TxtCodigoPS.Text.Trim Then - Dim TxtCantidad As TextBox = GvDatos.Rows(Gvr.RowIndex).FCTextBox("TbCantidadF") - If Gvr.DataKey("CantidadF").ToDecimal - TxtCantidad.Text.ToDecimal - 1 >= 0 Then - - ''VALIDA EXISTENCIA - If Not TipoDocto.Contiene("Dev", "RNC") Then - If TipoMovimiento = 1 Then - Dim ObjInventario As New ClsInventarios - Dim Existencia As Decimal = ObjInventario.GetExistenciasPS(Gvr.DataKey("CvePS").ToString().ToEntero(), Gvr.DataKey("CveUM").ToString().ToEntero(), UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero(), FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), CveVendedor:=CveVendedor, CveSubProyecto:=CveSubProyecto, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeApartados:=If(TipoEntrega = 2, 1, -1)) - ObjInventario.Dispose() - If Not Existencia >= TxtCantidad.Text.ToDecimal + 1 Then - TxtCodigoPS.Text = "" - Alert($"No hay existencias suficientes del producto:
    ""{Gvr.DataKey("Codigo")}-{Gvr.DataKey("PS")}"".
    Solo hay disponibles {Existencia.FormatoNumero} en Almacen. Por favor Verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus,200);") - RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") - Exit Sub - End If - Else - If DtExistencias IsNot Nothing Then - Dim Existencia As Decimal = DtExistencias.SUMD("Cantidad", $"CvePS = {Gvr.DataKey("CvePS")} AND CveUM = {Gvr.DataKey("CveUM").ToString().ToEntero()}") - If Not Existencia >= TxtCantidad.Text.ToDecimal + 1 Then - TxtCodigoPS.Text = "" - Alert($"No hay existencias suficientes del producto:
    ""{Gvr.DataKey("Codigo")}-{Gvr.DataKey("PS")}"".
    Solo hay disponibles {Existencia.FormatoNumero} en Almacen. Por favor Verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus,200);") - RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") - Exit Sub - End If - End If - End If - End If - - If Gvr.DataKey("AplicaSerie") = "True" Then - TdSeriePS.Visible = True - TxtSeriePS.Focus() - - CveConsecSerie = Gvr.DataKey("Consec").ToString().ToEntero() - PSSerie = Gvr.DataKey("PS").ToString() - CvePSSerie = Gvr.DataKey("CvePS").ToEntero() - CveUMSerie = Gvr.DataKey("CveUM").ToEntero() - Exit Sub - End If - - Dim CantidadEspecial As Boolean = Gvr.DataKey("CveClasificacion").ToString().ToEntero().Contiene(17601, 17881) OrElse Gvr.DataKey("CvePS").ToString().ToEntero().Contiene(343032, 343033) - - If CantidadEspecial Then - RegistraScript("CantidadEspecial();window.setTimeout(FocusCantidadEspecial,200);") - LtlProductoCantidad.Text = $"{Gvr.DataKey("Codigo")}" - RowIndexCantidadEspecial = Gvr.RowIndex - CantidadEspecialTemp = Gvr.DataKey("CantidadF").ToDecimal - TxtCodigoPS.Text = "" - Exit Sub - Else - TxtCantidad.Text = (TxtCantidad.Text.ToDecimal + 1).ToString().FormatoNumero - TxtCodigoPS.Text = "" - UpDatos.Update() - Exit Sub - End If - - VerificaVentaSurtida() - Exit Sub - End If - - Existe = True - PSTemp = Gvr.DataKey("PS").ToString() - 'Alert($"Ya se ha cargado la totalidad del Producto ""{Gvr.DataKey("PS").ToString()}"" con el Codigo ""{TxtCodigoPS.Text}"".", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus,200);") - 'VerificaVentaSurtida() - 'Exit Sub - End If - Next - - VerificaVentaSurtida() - If Existe Then - Alert($"Ya se ha cargado la totalidad del Producto ""{PSTemp}"" con el Codigo ""{TxtCodigoPS.Text}"".", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus,200);") - Else - Alert($"No se ha encontrado un producto para surtir con el Codigo ""{TxtCodigoPS.Text}"". ", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus,200);") - End If - RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") - TxtCodigoPS.Text = "" - - End Sub - Private Sub VerificaVentaSurtida() - Dim Surtida As Boolean = True - - For Each Gvr As GridViewRow In GvDatos.Rows - If Gvr.DataKey("CantidadF").ToDecimal <> Gvr.FCTextBox("TbCantidadF").Text.ToDecimal Then - Surtida = False - Exit Sub - End If - Next - - If Surtida Then - LbSurtida.Visible = True - End If - End Sub - Protected Sub BtnSeriePS_Click(sender As Object, e As EventArgs) - AgregaSerie(TxtSeriePS.Text.Trim, 2, True) - - TdSeriePS.Visible = False - TxtSeriePS.Text = "" - TxtCodigoPS.Text = "" - TxtCodigoPS.Focus() - VerificaVentaSurtida() - - End Sub - Protected Sub BtnGuardarCantidadEspecial_Click(sender As Object, e As EventArgs) - AgregaCantidadEspecial() - End Sub - Private Sub AgregaCantidadEspecial() - Dim TxtCantidad As TextBox = GvDatos.Rows(RowIndexCantidadEspecial).FCTextBox("TbCantidadF") - If CantidadEspecialTemp - TxtCantidadEspecialDiv.Text.ToDecimal - TxtCantidad.Text.ToDecimal >= 0 Then - TxtCantidad.Text = (TxtCantidad.Text.ToDecimal + TxtCantidadEspecialDiv.Text.ToDecimal).ToString().FormatoNumero - 'RegistraScript("$('#ModalCantidad').modal('hide');") - RegistraScript("$('#DivCantidadEspecial').hide(200);") - UpDatos.Update() - TxtCodigoPS.Focus() - Else - Alert("La cantidad excede la pendiente por surtir. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus,200);") - RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") - End If - - TxtCantidadEspecialDiv.Text = "1" + Private Sub AgregaSerie(Serie As String, Tipo As Integer, Optional CargaMasivo As Boolean = False) + + If Serie.Trim = "" Then + Alert("El campo 'Serie' es obligatorio. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + If Serie.Trim.Length < 6 Then + Alert("El campo 'Serie' debe tener minimo 6 caracteres. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + If DtDatosDetalle.FiltraParametros($"CvePS = {CvePSSerie} AND Serie = '{Serie}'").Rows.Count > 0 Then + Alert("La Serie indicada ya esta registrada. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')", "Error1") + TxtSerie.Text = "" + Exit Sub + End If + + Dim AplicaCaducidad As Boolean = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePSSerie).FiltroPrimeroValor("AplicaCaducidad", "") = "True" + 'If GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePSSerie).FiltraParametros("").Rows(0) IsNot Nothing Then + ' AplicaCaducidad = If(GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerie).FiltraParametros("").Rows(0)("AplicaCaducidad").ToString() = "True", True, False) + 'End If + + + 'Valida Existencia + If TipoMovimiento = 1 Then + Dim ObjInventarios As New ClsInventarios + Dim Existencia As Decimal = ObjInventarios.GetExistenciasPS(CvePSSerie, CveUMSerie, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero(), FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), Serie:=Serie, CveVendedor:=CveVendedor, CveSubProyecto:=CveSubProyecto, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeApartados:=If(TipoEntrega = 2, 1, -1)) + If Existencia < 1 Then + Alert($"No hay existencia suficiente del producto ""{PSSerie}"" con la Serie definida ""{Serie}"". Por favor rectifique y vuelva a intentar", TipoMensaje.MsgAdvertencia, If(Tipo = 2, "window.setTimeout(Focus,200);", "")) + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')", "Error2") + ObjInventarios.Dispose() + Exit Sub + End If + ObjInventarios.Dispose() + Else + If DtExistencias IsNot Nothing Then + Dim Existencia As Decimal = DtExistencias.SUMD("Cantidad", $"CvePS = {CvePSSerie} AND CveUM = {CveUMSerie} AND Serie = '{Serie}'") + If Existencia < 1 Then + Alert($"No hay existencia suficiente del producto ""{PSSerie}"" con la Serie definida ""{Serie}"". Por favor rectifique y vuelva a intentar", TipoMensaje.MsgAdvertencia, If(Tipo = 2, "window.setTimeout(Focus,200);", "")) + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')", "Error3") + Exit Sub + End If + End If + End If + + Dim Row As DataRow = DtDatosDetalle.NewRow + + Row("ConsecId") = CveConsecSerie + Row("Consec") = DtDatosDetalle.Rows.Count + 1 + Row("PS") = PSSerie + Row("CvePS") = CvePSSerie + Row("CveUM") = CveUMSerie + Row("Serie") = Serie + Row("FechaCaducidad") = If(AplicaCaducidad, TxtFechaCaducidad.Text, MinFecha.ToShortDateString) + + DtDatosDetalle.Rows.Add(Row) + ActualizaBitacora() + RegistraScript("playsonidito('beep-07.wav')", "Sonidito") + + If Tipo = 1 Then + TxtSerie.Text = "" + TxtFechaCaducidad.Text = "" + End If + + If Tipo < 3 Then + CargaSerie(True, CargaMasivo) + End If + End Sub -#End Region -#End Region + Protected Sub GvSerie_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvSerie.RowDeleting + + Dim keySerie As String = e.Keys("Serie").ToString() + Try + For Each dr As DataRow In DtDatosDetalle.Rows + If dr("Serie").ToString() = keySerie Then + dr.Delete() + End If + Next + Catch ex As Exception + + End Try + + DtDatosDetalle.AcceptChanges() + ActualizaBitacora() + CargaSerie() + + End Sub +#End Region +#Region "Bitacora" + Private Sub ActualizaBitacora(Optional Eliminar As Boolean = False) + If Not Eliminar Then + DtDatos.TableName = "DtDatos" + DtDatosDetalle.TableName = "DtDatosDetalle" + DtDatos.WriteXml(ArchivoBitacora, XmlWriteMode.WriteSchema) + DtDatosDetalle.WriteXml(ArchivoBitacoraDetalle, XmlWriteMode.WriteSchema) + Else + File.Delete(ArchivoBitacora) + End If + + End Sub + + Protected Sub HplCargaBitacora_Click(sender As Object, e As EventArgs) + + CargaBitacora = False + If IO.File.Exists(ArchivoBitacora) Then + + CargaBitacoraSerie() + CargaGvDatos() + CargaBitacora = True + Else + Alert("No hay bitácora para recuperar.", TipoMensaje.ToastInformacion) + End If + + End Sub + + Private Sub CargaBitacoraSerie() + + If IO.File.Exists(ArchivoBitacora) Then + + DtDatos.ReadXml(ArchivoBitacora) + If IO.File.Exists(ArchivoBitacoraDetalle) Then + Dim dtt As New DataTable + dtt.ReadXml(ArchivoBitacoraDetalle) + DtDatosDetalle = dtt + Alert("Registro(s) Recuperados", TipoMensaje.ToastInformacion) + + End If + Else + Alert("No hay bitácora para recuperar.", TipoMensaje.ToastInformacion) + End If + End Sub + +#End Region +#Region " AGREGA CON LOTE BATCH " + + Private Sub CreaDtDetalleLote() + If DtDatosDetalleLote Is Nothing Then + DtDatosDetalleLote = New DataTable + DtDatosDetalleLote.Columns.Add("CveVentaDetalle", GetType(Integer)) + DtDatosDetalleLote.Columns.Add("Consec", GetType(Integer)) + DtDatosDetalleLote.Columns.Add("ConsecId", GetType(Integer)) + DtDatosDetalleLote.Columns.Add("Cantidad", GetType(Double)) + DtDatosDetalleLote.Columns.Add("CvePS", GetType(Integer)) + DtDatosDetalleLote.Columns.Add("PS", GetType(String)) + DtDatosDetalleLote.Columns.Add("CveUM", GetType(Integer)) + DtDatosDetalleLote.Columns.Add("Lote", GetType(String)) + DtDatosDetalleLote.Columns.Add("FechaCaducidad", GetType(String)) + DtDatosDetalleLote.Columns.Add("FueTraspaso", GetType(Integer)) + End If + End Sub + Private Sub CargaLote(Optional CerrarCompletado As Boolean = False) + + RegistraScript("$('#DivLote').modal({backdrop: 'static', keyboard: false})") + GvLote.Columns(2).HeaderText = UsuarioActual.Empresa.Funcionalidad(147) + GvLote.DataSource = DtDatosDetalleLote.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerie), "Consec DESC") + GvLote.DataBind() + + 'VALIDA QUE SIGA AGREGANDO + If DtDatosDetalleLote.SUM("Cantidad", String.Format("ConsecId = {0}", CveConsecSerie)) = LbCantidad2.Text.ToDecimal Then + BtnLote.Enabled = False + If CerrarCompletado Then + RegistraScript("$('#DivLote').modal('hide')", "hide") + End If + Else + BtnLote.Enabled = True + End If + + 'LOTE RECOMENDADO + Dim DtLotes As New DataTable + If TipoMovimiento = 1 Then + Dim ObjInventarios As New ClsInventarios + If ObjInventarios.LoteRecomendadoGet(CvePSSerie, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero()) Then + DtLotes = ObjInventarios.DtResultados + End If + ObjInventarios.Dispose() + Else + DtLotes = DtExistencias.FiltraParametros("Lote <> ''") + End If + + Dim DrsRemove As New List(Of DataRow) + + If DtLotes.Rows.Count > 0 Then + 'CALCULA YA COMPLETADOS + DtLotes.Columns.Add("CantidadSeleccionada", GetType(Integer)) + For Each dr As DataRow In DtLotes.Rows + dr("CantidadSeleccionada") = DtDatosDetalleLote.SUM("Cantidad", String.Format("Consec = {0} AND Lote = '{1}'", CveConsecSerie, dr("Lote"))) + If dr("CantidadSeleccionada").ToString().ToDecimal = dr("Existencia").ToString().ToDecimal Then + DrsRemove.Add(dr) + End If + Next + + 'ELIMINA YA COMPLETADOS EN PAGINA + For Each dr As DataRow In DrsRemove + DtLotes.Rows.Remove(dr) + Next + + If DtLotes.Rows.Count > 0 Then + Dim Mensaje As New StringBuilder + Mensaje.AppendFormat("Recomendado: Existencia: {0} Lote: {1} Fecha Caducidad: {2} ", DtLotes.Rows(0)("Existencia").ToString().FormatoNumero, DtLotes.Rows(0)("Lote"), DtLotes.Rows(0)("FechaCaducidad").ToString().ToDate.ToShortDateString) + LbLoteRecomendado.Text = Mensaje.ToString() + Else + LbLoteRecomendado.Text = "No se encontro ningún Lote recomendado." + End If + Else + LbLoteRecomendado.Text = "No se encontro ningún Lote recomendado." + End If -#Region " GUARDAR " - Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) - - Select Case TipoEntrega - Case 1 - GuardaVenta() - Case 2 - GuardaTraspaso() - End Select - - End Sub - + 'SI TIENE SALIDA POR LOTE, BLOQUEAMOS CHECK Y TXTCANTIDAD + Dim Contador As Decimal = 0 + For Each Gvr As GridViewRow In GvDatos.Rows + If Gvr.DataKey("CvePS").ToEntero() = CvePSSerie Then + Contador = DtDatosDetalleLote.SUM("Cantidad", String.Format("ConsecId = {0}", Gvr.DataKey("Consec"))) + Gvr.FCCheckBox("cbInv").Enabled = False + Gvr.FCCheckBox("cbInv").Checked = True + Gvr.FCTextBox("TbCantidadF").Text = Contador.ToString().FormatoNumero + End If + Next + + RVCantidadLote.MaximumValue = (If((LbCantidad2.Text.ToDecimal - Contador) = 0, 0.02, LbCantidad2.Text.ToDecimal - Contador)).ToString().FormatoNumero + + TxtCantidadLote.Text = "1" + TxtLote.Text = "" + TxtBatch.Text = "" + TxtLote.Focus() + + UpLoteBatch.Update() + UpDatos.Update() + + End Sub + + Protected Sub BtnAgregarPS2_Click(sender As Object, e As EventArgs) + AgregaLote(TxtLote.Text.Trim, TxtBatch.Text.Trim, 1) + End Sub + Private Sub AgregaLote(Lote As String, Batch As String, Tipo As Integer) + + If Lote = "" Then + Alert("El campo Lote es obligatorio. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + 'VALIDACION DE SERIES DUPLICADAS + Dim MensajeAlert As New StringBuilder + Dim DtDuplicado As New DataTable + Dim DtSeriesNuevas As New DataTable + DtSeriesNuevas.Columns.Add("Serie", GetType(String)) + + DtDuplicado = DtDatosDetalleLote.FiltraParametros($"ConsecId = {CveConsecSerie} AND Lote = '{Lote}' AND Batch = '{Batch}'") + If DtDuplicado IsNot Nothing AndAlso DtDuplicado.Rows.Count > 0 Then + Alert($"
    El numero de Lote ""{Lote}"" y Batch = '{Batch}' proporcionado ya se encuentra ingresado.", TipoMensaje.MsgAdvertencia) + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") + Exit Sub + End If + + Dim Row As DataRow = DtDatosDetalleLote.NewRow + Dim CantidadLote As Decimal = TxtCantidadLote.Text.ToDecimal + + Dim MensajeSinExistencias As New StringBuilder + Dim ObjInventarios As New ClsInventarios + + 'VERIFICA EXISTENCIAS + If TipoMovimiento = 1 Then + Dim Existencia As Decimal = ObjInventarios.GetExistenciasPS(CvePSSerie, CveUMSerie, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero(), FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), CveVendedor:=CveVendedor, CveSubProyecto:=CveSubProyecto, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), Lote:=Lote, ExcluyeApartados:=If(TipoEntrega = 2, 1, -1)) + If Existencia < CantidadLote Then + Alert($"No hay existencia suficiente del producto ""{PSSerie}"" con el lote definido ""{Lote}"" y el batch ""{Batch}"". Por favor rectifique y vuelva a intentar", TipoMensaje.MsgAdvertencia) + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") + ObjInventarios.Dispose() + Exit Sub + End If + Else + If DtExistencias IsNot Nothing Then + Dim Existencia As Decimal = DtExistencias.SUMD("Cantidad", $"CvePS = {CvePSSerie} AND CveUM = {CveUMSerie} AND Lote = '{Lote}' AND Batch = '{Batch}'") + If Existencia < CantidadLote Then + Alert($"No hay existencia suficiente del producto ""{PSSerie}"" con el lote definido ""{Lote}"" y el batch ""{Batch}"". Por favor rectifique y vuelva a intentar", TipoMensaje.MsgAdvertencia) + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") + ObjInventarios.Dispose() + Exit Sub + End If + End If + End If + + Dim FechaCaducidad As String = "" + If ObjInventarios.LoteRecomendadoGet(CvePSSerie, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero()) AndAlso ObjInventarios.DtResultados.Rows.Count > 0 Then + FechaCaducidad = ObjInventarios.DtResultados.Rows(0)("FechaCaducidad").ToString().ToDate.ToShortDateString + End If + + Row("ConsecId") = CveConsecSerie + Row("Consec") = DtDatosDetalle.Rows.Count + 1 + Row("Cantidad") = CantidadLote + Row("CvePS") = CvePSSerie + Row("PS") = PSSerie + Row("CveUM") = CveUMSerie + Row("Lote") = Lote + Row("Batch") = Batch + Row("FechaCaducidad") = FechaCaducidad + + DtDatosDetalleLote.Rows.Add(Row) + ObjInventarios.Dispose() + + If Tipo = 1 Then + TxtCantidadLote.Text = "1" + TxtLote.Text = "" + TxtBatch.Text = "" + End If + + CargaLote(True) + + End Sub + + Protected Sub GvLote_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GvLote.RowDeleting + + Dim keyLote As String = e.Keys("Lote").ToString() + Try + For Each dr As DataRow In DtDatosDetalleLote.Rows + If dr("Lote").ToString() = keyLote Then + dr.Delete() + End If + Next + Catch ex As Exception + + End Try + DtDatosDetalleLote.AcceptChanges() + CargaLote() + 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 Existe As Boolean = False + Dim PSTemp As String = "" + + For Each Gvr As GridViewRow In GvDatos.Rows + If Gvr.DataKey("CodigoBarras") = TxtCodigoPS.Text.Trim Then + Dim TxtCantidad As TextBox = GvDatos.Rows(Gvr.RowIndex).FCTextBox("TbCantidadF") + If Gvr.DataKey("CantidadF").ToDecimal - TxtCantidad.Text.ToDecimal - 1 >= 0 Then + + ''VALIDA EXISTENCIA + If Not TipoDocto.Contiene("Dev", "RNC") Then + If TipoMovimiento = 1 Then + Dim ObjInventario As New ClsInventarios + Dim Existencia As Decimal = ObjInventario.GetExistenciasPS(Gvr.DataKey("CvePS").ToString().ToEntero(), Gvr.DataKey("CveUM").ToString().ToEntero(), UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero(), FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), CveVendedor:=CveVendedor, CveSubProyecto:=CveSubProyecto, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeApartados:=If(TipoEntrega = 2, 1, -1)) + ObjInventario.Dispose() + If Not Existencia >= TxtCantidad.Text.ToDecimal + 1 Then + TxtCodigoPS.Text = "" + Alert($"No hay existencias suficientes del producto:
    ""{Gvr.DataKey("Codigo")}-{Gvr.DataKey("PS")}"".
    Solo hay disponibles {Existencia.FormatoNumero} en Almacen. Por favor Verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus,200);") + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") + Exit Sub + End If + Else + If DtExistencias IsNot Nothing Then + Dim Existencia As Decimal = DtExistencias.SUMD("Cantidad", $"CvePS = {Gvr.DataKey("CvePS")} AND CveUM = {Gvr.DataKey("CveUM").ToString().ToEntero()}") + If Not Existencia >= TxtCantidad.Text.ToDecimal + 1 Then + TxtCodigoPS.Text = "" + Alert($"No hay existencias suficientes del producto:
    ""{Gvr.DataKey("Codigo")}-{Gvr.DataKey("PS")}"".
    Solo hay disponibles {Existencia.FormatoNumero} en Almacen. Por favor Verifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus,200);") + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") + Exit Sub + End If + End If + End If + End If + + If Gvr.DataKey("AplicaSerie") = "True" Then + TdSeriePS.Visible = True + TxtSeriePS.Focus() + + CveConsecSerie = Gvr.DataKey("Consec").ToString().ToEntero() + PSSerie = Gvr.DataKey("PS").ToString() + CvePSSerie = Gvr.DataKey("CvePS").ToEntero() + CveUMSerie = Gvr.DataKey("CveUM").ToEntero() + Exit Sub + End If + + Dim CantidadEspecial As Boolean = Gvr.DataKey("CveClasificacion").ToString().ToEntero().Contiene(17601, 17881) OrElse Gvr.DataKey("CvePS").ToString().ToEntero().Contiene(343032, 343033) + + If CantidadEspecial Then + RegistraScript("CantidadEspecial();window.setTimeout(FocusCantidadEspecial,200);") + LtlProductoCantidad.Text = $"{Gvr.DataKey("Codigo")}" + RowIndexCantidadEspecial = Gvr.RowIndex + CantidadEspecialTemp = Gvr.DataKey("CantidadF").ToDecimal + TxtCodigoPS.Text = "" + Exit Sub + Else + TxtCantidad.Text = (TxtCantidad.Text.ToDecimal + 1).ToString().FormatoNumero + TxtCodigoPS.Text = "" + UpDatos.Update() + Exit Sub + End If + + VerificaVentaSurtida() + Exit Sub + End If + + Existe = True + PSTemp = Gvr.DataKey("PS").ToString() + 'Alert($"Ya se ha cargado la totalidad del Producto ""{Gvr.DataKey("PS").ToString()}"" con el Codigo ""{TxtCodigoPS.Text}"".", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus,200);") + 'VerificaVentaSurtida() + 'Exit Sub + End If + Next + + VerificaVentaSurtida() + If Existe Then + Alert($"Ya se ha cargado la totalidad del Producto ""{PSTemp}"" con el Codigo ""{TxtCodigoPS.Text}"".", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus,200);") + Else + Alert($"No se ha encontrado un producto para surtir con el Codigo ""{TxtCodigoPS.Text}"". ", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus,200);") + End If + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") + TxtCodigoPS.Text = "" + + End Sub + Private Sub VerificaVentaSurtida() + Dim Surtida As Boolean = True + + For Each Gvr As GridViewRow In GvDatos.Rows + If Gvr.DataKey("CantidadF").ToDecimal <> Gvr.FCTextBox("TbCantidadF").Text.ToDecimal Then + Surtida = False + Exit Sub + End If + Next + + If Surtida Then + LbSurtida.Visible = True + End If + End Sub + Protected Sub BtnSeriePS_Click(sender As Object, e As EventArgs) + AgregaSerie(TxtSeriePS.Text.Trim, 2, True) + + TdSeriePS.Visible = False + TxtSeriePS.Text = "" + TxtCodigoPS.Text = "" + TxtCodigoPS.Focus() + VerificaVentaSurtida() + + End Sub + Protected Sub BtnGuardarCantidadEspecial_Click(sender As Object, e As EventArgs) + AgregaCantidadEspecial() + End Sub + Private Sub AgregaCantidadEspecial() + Dim TxtCantidad As TextBox = GvDatos.Rows(RowIndexCantidadEspecial).FCTextBox("TbCantidadF") + If CantidadEspecialTemp - TxtCantidadEspecialDiv.Text.ToDecimal - TxtCantidad.Text.ToDecimal >= 0 Then + TxtCantidad.Text = (TxtCantidad.Text.ToDecimal + TxtCantidadEspecialDiv.Text.ToDecimal).ToString().FormatoNumero + 'RegistraScript("$('#ModalCantidad').modal('hide');") + RegistraScript("$('#DivCantidadEspecial').hide(200);") + UpDatos.Update() + TxtCodigoPS.Focus() + Else + Alert("La cantidad excede la pendiente por surtir. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia, "window.setTimeout(Focus,200);") + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") + End If + + TxtCantidadEspecialDiv.Text = "1" + End Sub +#End Region + +#End Region + + +#Region " GUARDAR " + Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) + + Select Case TipoEntrega + Case 1 + GuardaVenta() + Case 2 + GuardaTraspaso() + End Select + + End Sub + Private Sub GuardaVenta() Dim CantidadVenta As Decimal = 0 '' INICIA: VALIDACIONES 'Valida el estatus de la Venta, si es = 5 O DevolucionVenta = 2, NO SE SURTE! - Dim ObjVentaInv As New ClsInventarios - If ObjVentaInv.GetEstatusVentaPorSurtir(CveVentaSurtir) Then - TipoEstatus = ObjVentaInv.TipoEstatus - EsDevolucionVenta = ObjVentaInv.EsDevolucionVenta - CantidadVenta = ObjVentaInv.CantidadVenta - End If - ObjVentaInv.Dispose() - - Dim VerificaCancelada As Boolean = True - + Dim ObjVentaInv As New ClsInventarios + If ObjVentaInv.GetEstatusVentaPorSurtir(CveVentaSurtir) Then + TipoEstatus = ObjVentaInv.TipoEstatus + EsDevolucionVenta = ObjVentaInv.EsDevolucionVenta + CantidadVenta = ObjVentaInv.CantidadVenta + End If + ObjVentaInv.Dispose() + + Dim VerificaCancelada As Boolean = True + If UsuarioActual.Empresa.Funcionalidad(578) = "1" AndAlso TipoDocto = "Ped" Then VerificaCancelada = False - End If - + End If + If VerificaCancelada Then If TipoEstatus = 5 Then Alert("No se puede surtir esta venta, verifique que no esté cancelada", TipoMensaje.MsgAdvertencia) Exit Sub End If - End If - - If EsDevolucionVenta.Contiene(2, 3) Then - Alert("No se puede surtir esta venta, verifique que no esté registrado su movimiento en almacen", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - Dim ValidaSeccion As Boolean = False : Dim ValidaCaducidad As Boolean = False : Dim ValidaLote As Boolean = False - 'VALIDA CANTIDAD DE SALIDA + End If + + If EsDevolucionVenta.Contiene(2, 3) Then + Alert("No se puede surtir esta venta, verifique que no esté registrado su movimiento en almacen", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + Dim ValidaSeccion As Boolean = False : Dim ValidaCaducidad As Boolean = False : Dim ValidaLote As Boolean = False + 'VALIDA CANTIDAD DE SALIDA Dim Cantidad As Decimal = 0.0D - Dim NumRegistros As Integer = 0 - - For Each Gvr As GridViewRow In GvDatos.Rows + Dim NumRegistros As Integer = 0 + + For Each Gvr As GridViewRow In GvDatos.Rows If Gvr.RowType = DataControlRowType.DataRow Then If Gvr.FCCheckBox("cbInv").Checked Then NumRegistros += 1 @@ -2070,36 +2070,36 @@ Partial Class Inventarios_EntregaAlmacen Cantidad += Gvr.FCTextBox("TbCantidadF").Text.ToDecimal End If End If - End If + End If Next - If ValidaSeccion Then - Alert("La sección de almacen no ha sido especificada en todos los productos.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - If ValidaCaducidad Then - Alert("La caducidad no ha sido especificada en todos los productos.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - If ValidaLote Then - Alert("El lote de almacen no ha sido especificada en todos los productos.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - If Not Cantidad > 0 Then - Alert("No se detecto ningun movimiento por hacer. Por favor verifique e intente nuevamente.", TipoMensaje.MsgAdvertencia) - Exit Sub + If ValidaSeccion Then + Alert("La sección de almacen no ha sido especificada en todos los productos.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + If ValidaCaducidad Then + Alert("La caducidad no ha sido especificada en todos los productos.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + If ValidaLote Then + Alert("El lote de almacen no ha sido especificada en todos los productos.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + If Not Cantidad > 0 Then + Alert("No se detecto ningun movimiento por hacer. Por favor verifique e intente nuevamente.", TipoMensaje.MsgAdvertencia) + Exit Sub End If If UsuarioActual.Empresa.Funcionalidad(578) = "1" AndAlso TipoDocto = "Ped" Then VerificaCancelada = False - End If - + End If + Dim ValidaEntregaCompleto As Boolean = Not UsuarioActual.TienePermisoProceso(176) If CveTipoVenta = 3 Then ValidaEntregaCompleto = False 'PROCESO , si tiene proceso "176" no lo valida - If ValidaEntregaCompleto Then 'Tipoventa diferente a A-vista + If ValidaEntregaCompleto Then 'Tipoventa diferente a A-vista If Not TipoDocto.Contiene("Dev") Then 'para devoluciones debe de aceptar parcialidades For Each Gvr As GridViewRow In GvDatos.Rows If Gvr.DataKey("CantidadF").ToDecimal <> Gvr.FCTextBox("TbCantidadF").Text.ToDecimal Then @@ -2108,9 +2108,9 @@ Partial Class Inventarios_EntregaAlmacen End If Next End If - End If + End If Dim Guia As String = TxtGuia.Text.Trim - Dim Recibio As String = "" + Dim Recibio As String = "" If EsDevolucionVenta = 1 Or TipoDocto.Contiene({"Ped"}) Then Dim ValidaSalidaCompleta As Boolean = Not (EsDevolucionVenta = 1 And TipoDocto.Contiene("Rem", "Ped")) 'LIMITAR EL NUMERO DE PARTIDAS QUE SE PUEDEN ENTREGAR @@ -2136,50 +2136,50 @@ Partial Class Inventarios_EntregaAlmacen End If End If ValidaSalidaCompleta = False - End If - - If ValidaSalidaCompleta Then ' condicion si hay una devolucion de remision, no verifique la totalidad surtido - For Each Gvr As GridViewRow In GvDatos.Rows - If Not Gvr.FCCheckBox("cbInv").Checked Or (Gvr.FCCheckBox("cbInv").Checked AndAlso Gvr.FCTextBox("TbCantidadF").Text.ToDecimal <> Gvr.DataKey("CantidadC").ToString().ToDecimal) Then - Alert("Es necesario surtir todos los productos. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") - Exit Sub - End If - Next - End If - End If - - Dim EsInterno As Integer = -1 - 'If TipoDocto = "Ped" Then - ' EsInterno = If(Me.EsInterno, 1, 0) - 'End If - - Dim ObjInventario As New ClsInventarios - Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) - Dim ObjVentas As New ClsVentas(ObjInventario.IniciaTransacSQL()) - Dim ObjEventos As New ClsOIEventos(ObjInventario.IniciaTransacSQL()) - Dim ObjAcumuladores As New ClsAcumuladores(ObjInventario.IniciaTransacSQL()) - Dim ObjGeneral As New ClsGenerales(ObjInventario.IniciaTransacSQL()) - Dim CveMovimiento As Integer - Dim Folio As Integer - Dim ErrorMovInv As Boolean - Dim DtDetalle As New DataTable - Dim DtDetalleLote As New DataTable - Dim TextoError As New StringBuilder - - Dim CveMovimientoGarantia As Integer = -1 - Dim FolioGarantia As Integer = -1 - - Dim CveMovimientoVirtual As Integer = -1 - Dim FolioVirtual As Integer = -1 - - 'PASA DATOS DEL GV A DATATABLE PARA MANEJOR CON FOR EACH - Dim Index As Integer = 0 - For Each gvr As GridViewRow In GvDatos.Rows - If gvr.FCCheckBox("cbInv").Checked AndAlso gvr.FCTextBox("TbCantidadF").Text.ToDecimal > 0 Then - DtDatos.Rows(Index)("CantidadGV") = gvr.FCTextBox("TbCantidadF").Text.ToDecimal - DtDatos.Rows(Index)("CveSeccion") = gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero() - + End If + + If ValidaSalidaCompleta Then ' condicion si hay una devolucion de remision, no verifique la totalidad surtido + For Each Gvr As GridViewRow In GvDatos.Rows + If Not Gvr.FCCheckBox("cbInv").Checked Or (Gvr.FCCheckBox("cbInv").Checked AndAlso Gvr.FCTextBox("TbCantidadF").Text.ToDecimal <> Gvr.DataKey("CantidadC").ToString().ToDecimal) Then + Alert("Es necesario surtir todos los productos. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") + Exit Sub + End If + Next + End If + End If + + Dim EsInterno As Integer = -1 + 'If TipoDocto = "Ped" Then + ' EsInterno = If(Me.EsInterno, 1, 0) + 'End If + + Dim ObjInventario As New ClsInventarios + Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) + Dim ObjVentas As New ClsVentas(ObjInventario.IniciaTransacSQL()) + Dim ObjEventos As New ClsOIEventos(ObjInventario.IniciaTransacSQL()) + Dim ObjAcumuladores As New ClsAcumuladores(ObjInventario.IniciaTransacSQL()) + Dim ObjGeneral As New ClsGenerales(ObjInventario.IniciaTransacSQL()) + Dim CveMovimiento As Integer + Dim Folio As Integer + Dim ErrorMovInv As Boolean + Dim DtDetalle As New DataTable + Dim DtDetalleLote As New DataTable + Dim TextoError As New StringBuilder + + Dim CveMovimientoGarantia As Integer = -1 + Dim FolioGarantia As Integer = -1 + + Dim CveMovimientoVirtual As Integer = -1 + Dim FolioVirtual As Integer = -1 + + 'PASA DATOS DEL GV A DATATABLE PARA MANEJOR CON FOR EACH + Dim Index As Integer = 0 + For Each gvr As GridViewRow In GvDatos.Rows + If gvr.FCCheckBox("cbInv").Checked AndAlso gvr.FCTextBox("TbCantidadF").Text.ToDecimal > 0 Then + DtDatos.Rows(Index)("CantidadGV") = gvr.FCTextBox("TbCantidadF").Text.ToDecimal + DtDatos.Rows(Index)("CveSeccion") = gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero() + If UsuarioActual.Empresa.Funcionalidad(578).ToEntero = 1 Then 'Esto es por que Dim DdlCaducidadProducto As DropDownList = gvr.FCDropDownList("DdlCaducidadProducto") @@ -2195,95 +2195,95 @@ Partial Class Inventarios_EntregaAlmacen DtDatos.Rows(Index)("Lote") = gvr.FCTextBox("TxtLote").Text End If - End If - Index += 1 - Next - - 'VALIDA SI HUBO CAMBIOS EN LA EXISTENCIA - Dim DtDatosVenta As New DataTable - If ObjInventario.EntregaAlmacenGet(CveVentaSurtir, UsuarioActual.CveEmpresa) Then - DtDatosVenta = ObjInventario.DtResultados - End If - Dim CantidadGV As Decimal = GvDatos.Rows.Cast(Of GridViewRow)().Sum(Function(gvr) gvr.DataKey("CantidadF").ToDecimal) - - 'VERIFICA SI LA CANTIDADES NOT SON MAYORES A LO ESTABLECIDO EN LA VENTA O LO QUE FALTA POR RECIBIR - If CantidadGV > DtDatosVenta.SUMD("CantidadF") OrElse Cantidad > CantidadVenta Then - ObjInventario.RollBack() - ObjInventario.Dispose() - ObjConta.Dispose() - ObjVentas.Dispose() - ObjEventos.Dispose() - '' identificar que productos no están completos. - CargaVentaPorSurtir(CveVentaSurtir) - CargaPendientes() - + End If + Index += 1 + Next + + 'VALIDA SI HUBO CAMBIOS EN LA EXISTENCIA + Dim DtDatosVenta As New DataTable + If ObjInventario.EntregaAlmacenGet(CveVentaSurtir, UsuarioActual.CveEmpresa) Then + DtDatosVenta = ObjInventario.DtResultados + End If + Dim CantidadGV As Decimal = GvDatos.Rows.Cast(Of GridViewRow)().Sum(Function(gvr) gvr.DataKey("CantidadF").ToDecimal) + + 'VERIFICA SI LA CANTIDADES NOT SON MAYORES A LO ESTABLECIDO EN LA VENTA O LO QUE FALTA POR RECIBIR + If CantidadGV > DtDatosVenta.SUMD("CantidadF") OrElse Cantidad > CantidadVenta Then + ObjInventario.RollBack() + ObjInventario.Dispose() + ObjConta.Dispose() + ObjVentas.Dispose() + ObjEventos.Dispose() + '' identificar que productos no están completos. + CargaVentaPorSurtir(CveVentaSurtir) + CargaPendientes() + If Cantidad > CantidadVenta Then Alert("No se puede procesar una cantidad mayor a la que esta definida en la venta.", TipoMensaje.MsgAdvertencia) Else Alert("Ha sido cambiada la informacion de existencias de la venta actual, se han recargado la información.", TipoMensaje.MsgAdvertencia) End If - Exit Sub - End If - - If Not ObjVentas.UpdateVentasDevolucionAlmacen(3, CveVentaSurtir) Then - ObjInventario.RollBack() - ObjInventario.Dispose() - ObjConta.Dispose() - ObjVentas.Dispose() - ObjEventos.Dispose() - Exit Sub - End If - - Dim DtTraspasos As New DataTable - DtTraspasos.Columns.Add("CveAlmacen", GetType(Integer)) - DtTraspasos.Columns.Add("Almacen", GetType(String)) - DtTraspasos.Columns.Add("CveMovimientoSalida", GetType(Integer)) - DtTraspasos.Columns.Add("FolioSalida", GetType(Integer)) - DtTraspasos.Columns.Add("CveMovimientoEntrada", GetType(Integer)) - DtTraspasos.Columns.Add("FolioEntrada", GetType(Integer)) - DtTraspasos.Columns.Add("CveTipoAlmacen", GetType(Integer)) - DtTraspasos.Columns.Add("CveConceptoMovimientoSalida", GetType(Integer)) - - Dim CveMovimientoSalida As Integer = -1, FolioSalida As Integer = -1, CveMovimientoEntrada As Integer = -1, CveMovimientoEntradaApartado As Integer = -1, FolioEntrada As Integer = -1, CveMovimientoSalidaDevRem As Integer = -1, FolioMovimientoSalidaDevRem As Integer = -1, CveMovimientoEntradaDevRem As Integer = -1, FolioMovimientoEntradaDevRem As Integer = -1 - - Dim DtDevSinCosto As New DataTable - DtDevSinCosto.Columns.Add("CveAlmacen", GetType(Integer)) - DtDevSinCosto.Columns.Add("Almacen", GetType(String)) - DtDevSinCosto.Columns.Add("CveMovimientoEntrada", GetType(Integer)) - DtDevSinCosto.Columns.Add("FolioEntrada", GetType(Integer)) - DtDevSinCosto.Columns.Add("CveTipoAlmacen", GetType(Integer)) - DtDevSinCosto.Columns.Add("CveConceptoMovimientoSalida", GetType(Integer)) - - Try - 'VALIDA EXISTENCIA 2 - If TipoMovimiento = 1 Then - Dim StrXML As New StringBuilder - StrXML.Append("") - Dim FechaCaducidad As Date - Dim Lote As String = "" - - For Each Dr As DataRow In DtDatos.Rows - FechaCaducidad = If(CBool(Dr("AplicaCaducidad")) AndAlso Dr("FechaCaducidad").ToString() <> "", Dr("FechaCaducidad").ToString().ToDate, MinFecha) - Lote = If(CBool(Dr("AplicaLote")), Dr("Lote").ToString().Trim, "-1") - - If Dr("CantidadGV").ToString().ToDecimal > 0 Then - If CBool(Dr("AplicaSerie")) Then - DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Dr("Consec"))) - For Each Dr1 As DataRow In DtDetalle.Rows - StrXML.AppendFormat("", Dr1("CvePS"), Dr1("CveUM"), 1, IfNull(Dr("CveSeccion"), -1), Dr1("Serie"), Lote, FechaCaducidad.ToString("yyyy/MM/dd")) - Next - Else - StrXML.AppendFormat("", Dr("CvePS"), Dr("CveUM"), Dr("CantidadGV"), IfNull(Dr("CveSeccion"), -1), "-1", Lote, FechaCaducidad.ToString("yyyy/MM/dd")) - End If - End If - Next - StrXML.Append("") - - Dim TieneErrorExistencia As Boolean = False - If ObjInventario.GetExistenciasPSXML(StrXML.ToString(), DdlAlmacen.SelectedValue.ToEntero(), TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), CveSubProyecto, CveVendedor, If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), If(TipoEntrega = 2, 1, -1), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then - If ObjInventario.DtResultados.Rows.Count > 0 Then - TieneErrorExistencia = True + Exit Sub + End If + + If Not ObjVentas.UpdateVentasDevolucionAlmacen(3, CveVentaSurtir) Then + ObjInventario.RollBack() + ObjInventario.Dispose() + ObjConta.Dispose() + ObjVentas.Dispose() + ObjEventos.Dispose() + Exit Sub + End If + + Dim DtTraspasos As New DataTable + DtTraspasos.Columns.Add("CveAlmacen", GetType(Integer)) + DtTraspasos.Columns.Add("Almacen", GetType(String)) + DtTraspasos.Columns.Add("CveMovimientoSalida", GetType(Integer)) + DtTraspasos.Columns.Add("FolioSalida", GetType(Integer)) + DtTraspasos.Columns.Add("CveMovimientoEntrada", GetType(Integer)) + DtTraspasos.Columns.Add("FolioEntrada", GetType(Integer)) + DtTraspasos.Columns.Add("CveTipoAlmacen", GetType(Integer)) + DtTraspasos.Columns.Add("CveConceptoMovimientoSalida", GetType(Integer)) + + Dim CveMovimientoSalida As Integer = -1, FolioSalida As Integer = -1, CveMovimientoEntrada As Integer = -1, CveMovimientoEntradaApartado As Integer = -1, FolioEntrada As Integer = -1, CveMovimientoSalidaDevRem As Integer = -1, FolioMovimientoSalidaDevRem As Integer = -1, CveMovimientoEntradaDevRem As Integer = -1, FolioMovimientoEntradaDevRem As Integer = -1 + + Dim DtDevSinCosto As New DataTable + DtDevSinCosto.Columns.Add("CveAlmacen", GetType(Integer)) + DtDevSinCosto.Columns.Add("Almacen", GetType(String)) + DtDevSinCosto.Columns.Add("CveMovimientoEntrada", GetType(Integer)) + DtDevSinCosto.Columns.Add("FolioEntrada", GetType(Integer)) + DtDevSinCosto.Columns.Add("CveTipoAlmacen", GetType(Integer)) + DtDevSinCosto.Columns.Add("CveConceptoMovimientoSalida", GetType(Integer)) + + Try + 'VALIDA EXISTENCIA 2 + If TipoMovimiento = 1 Then + Dim StrXML As New StringBuilder + StrXML.Append("") + Dim FechaCaducidad As Date + Dim Lote As String = "" + + For Each Dr As DataRow In DtDatos.Rows + FechaCaducidad = If(CBool(Dr("AplicaCaducidad")) AndAlso Dr("FechaCaducidad").ToString() <> "", Dr("FechaCaducidad").ToString().ToDate, MinFecha) + Lote = If(CBool(Dr("AplicaLote")), Dr("Lote").ToString().Trim, "-1") + + If Dr("CantidadGV").ToString().ToDecimal > 0 Then + If CBool(Dr("AplicaSerie")) Then + DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Dr("Consec"))) + For Each Dr1 As DataRow In DtDetalle.Rows + StrXML.AppendFormat("", Dr1("CvePS"), Dr1("CveUM"), 1, IfNull(Dr("CveSeccion"), -1), Dr1("Serie"), Lote, FechaCaducidad.ToString("yyyy/MM/dd")) + Next + Else + StrXML.AppendFormat("", Dr("CvePS"), Dr("CveUM"), Dr("CantidadGV"), IfNull(Dr("CveSeccion"), -1), "-1", Lote, FechaCaducidad.ToString("yyyy/MM/dd")) + End If + End If + Next + StrXML.Append("") + + Dim TieneErrorExistencia As Boolean = False + If ObjInventario.GetExistenciasPSXML(StrXML.ToString(), DdlAlmacen.SelectedValue.ToEntero(), TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), CveSubProyecto, CveVendedor, If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), If(TipoEntrega = 2, 1, -1), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + If ObjInventario.DtResultados.Rows.Count > 0 Then + TieneErrorExistencia = True For Each Dr As DataRow In ObjInventario.DtResultados.Rows Dim SerieLoteCaducidad As String = "," @@ -2297,1721 +2297,1721 @@ Partial Class Inventarios_EntregaAlmacen SerieLoteCaducidad = $"{SerieLoteCaducidad} Caducidad: { Dr("FechaCaducidad").ToString.Trim.ToDate.ToString("dd/MM/yyyy")}" End If TextoError.AppendFormat(" - {0} Existencia: {1:#,##0.##} {2}
    ", Dr("CodigoPS"), Dr("Existencia"), If(SerieLoteCaducidad <> ",", SerieLoteCaducidad, "")) - Next - End If - Else - TieneErrorExistencia = True - End If - - If TieneErrorExistencia Then - ObjInventario.RollBack() - ObjInventario.Dispose() - ObjConta.Dispose() - ObjVentas.Dispose() - ObjEventos.Dispose() - If TextoError.Length > 0 Then - Alert($" Lo(s) siguiente(s) Productos no tienen existencia suficiente:

    {TextoError}", TipoMensaje.MsgAdvertencia) - End If - RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") - Exit Sub - End If - End If - - '' TERMINA: VALIDACIONES - - Dim CantidadPendienteSinCosto As Decimal = 0 - Dim CantidadSaldoSinCosto As Decimal = 0 - - Dim CantidadSalidaSinCosto As Decimal = 0 - - '' COMIENZA: SIN COSTO - If TipoDocto.Contiene("Ing", "Rem", "Ped") AndAlso UsuarioActual.Empresa.Funcionalidad(587) = "1" AndAlso TipoMovimiento = 1 Then - - Dim CveConceptoSalidaSinCosto As Integer = If(TipoDocto.Contiene("Rem", "Ped"), 8, 40) - - For Each Dr As DataRow In DtDatos.Rows - If Dr("CantidadGV").ToString().ToDecimal > 0 Then - If CBool(Dr("AplicaSerie")) Then - DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Dr("Consec"))) - For Each Dr1 As DataRow In DtDetalle.Rows - If ObjInventario.GetExistenciasProducto(Dr1("CvePS").ToString().ToEntero(), Dr1("CveUM").ToString().ToEntero(), UsuarioActual.CveEmpresa, -1, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), Serie:=Dr1("Serie").ToString(), CveTipoAlmacen:=26, CveSubProyecto:=CveSubProyecto, Caducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString().ToEntero(), -1)) Then - For Each Dr2 As DataRow In ObjInventario.DtResultados.FiltraParametros("CveAlmacen > 0 AND ExistenciaFinal > 0").Rows - - 'BUSCA SI EXISTE YA UN TRASPASO DEL ALMACEN DE APARTADO - CveMovimientoSalida = DtTraspasos.FiltroPrimeroValor("CveMovimientoSalida", $"CveAlmacen = {Dr2("CveAlmacen")}").ToEntero() - - If Not CveMovimientoSalida > 0 Then - - CveMovimientoSalida = ObjInventario.AddMovimiento(Dr2("CveAlmacen").ToString().ToEntero(), CveConceptoSalidaSinCosto, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, - Observaciones:=TxtObservaciones.Text.Trim, Guia:=Guia, CveContrato:=CveContrato, Modulo:="RE/GSC1") - FolioSalida = ObjInventario.Folio - - If Not CveMovimientoSalida > 0 Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.") - Exit For - End If - - Dim DrMovto As DataRow = DtTraspasos.NewRow - DrMovto("Almacen") = Dr2("Almacen").ToString().ToEntero() - DrMovto("CveAlmacen") = Dr2("CveAlmacen").ToString().ToEntero() - DrMovto("CveMovimientoSalida") = CveMovimientoSalida - DrMovto("FolioSalida") = FolioSalida - DrMovto("CveTipoAlmacen") = 26 - DrMovto("CveConceptoMovimientoSalida") = CveConceptoSalidaSinCosto - DtTraspasos.Rows.Add(DrMovto) - End If - - - CantidadPendienteSinCosto = 1 - - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, CantidadPendienteSinCosto, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), 0, Serie:=Dr1("Serie").ToString(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString().ToEntero(), -1)) Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un Error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") - Exit For - End If - - DtDatosDetalle.Select($"Consec = {Dr1("Consec")}")(0)("FueTraspaso") = 1 - DtDatosDetalle.Select($"Consec = {Dr1("Consec")}")(0)("CveVentaDetalle") = Dr("CveVentaDetalle") - Dr("CantidadTraspaso") = Dr("CantidadTraspaso").ToString().ToDecimal + CantidadPendienteSinCosto - Exit For - Next - End If - If ErrorMovInv Then Exit For - Next - - Else - - If ObjInventario.GetExistenciasProducto(Dr("CvePS").ToString().ToEntero(), Dr("CveUM").ToString().ToEntero(), UsuarioActual.CveEmpresa, -1, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), CveTipoAlmacen:=26, CveSubProyecto:=CveSubProyecto, Caducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString().ToEntero(), -1)) Then - - CantidadSaldoSinCosto = Dr("CantidadGV").ToString().ToDecimal - - For Each Dr1 As DataRow In ObjInventario.DtResultados.FiltraParametros("CveAlmacen > 0 AND ExistenciaFinal > 0").Rows - - 'BUSCA SI EXISTE YA UN TRASPASO DEL ALMACEN DE APARTADO - CveMovimientoSalida = DtTraspasos.FiltroPrimeroValor("CveMovimientoSalida", $"CveAlmacen = {Dr1("CveAlmacen")}").ToEntero() - - If Not CveMovimientoSalida > 0 Then - CveMovimientoSalida = ObjInventario.AddMovimiento(Dr1("CveAlmacen").ToString().ToEntero(), CveConceptoSalidaSinCosto, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, - Observaciones:=TxtObservaciones.Text.Trim, Guia:=Guia, CveContrato:=CveContrato, Modulo:="RE/GSC3") - FolioSalida = ObjInventario.Folio - - If Not CveMovimientoSalida > 0 Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.") - Exit For - End If - - Dim DrMovto As DataRow = DtTraspasos.NewRow - DrMovto("Almacen") = Dr1("Almacen").ToString().ToEntero() - DrMovto("CveAlmacen") = Dr1("CveAlmacen").ToString().ToEntero() - DrMovto("CveMovimientoSalida") = CveMovimientoSalida - DrMovto("FolioSalida") = FolioSalida - DrMovto("CveTipoAlmacen") = 26 - DrMovto("CveConceptoMovimientoSalida") = CveConceptoSalidaSinCosto - DtTraspasos.Rows.Add(DrMovto) - End If - - CantidadPendienteSinCosto = If(Dr1("ExistenciaFinal").ToString().ToDecimal > CantidadSaldoSinCosto, CantidadSaldoSinCosto, Dr1("ExistenciaFinal").ToString().ToDecimal) - - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, CantidadPendienteSinCosto.ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), 0, - Serie:=Dr("Serie").ToString(), - CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), - FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), - Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), - CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString().ToEntero(), -1)) Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") - Exit For - End If - CantidadSaldoSinCosto -= CantidadPendienteSinCosto - Dr("CantidadTraspaso") = Dr("CantidadTraspaso").ToString().ToDecimal + CantidadPendienteSinCosto - If CantidadSaldoSinCosto <= 0 Then Exit For - Next - - If ErrorMovInv Then Exit For - Else - ErrorMovInv = True - End If - End If - CantidadSalidaSinCosto += Dr("CantidadTraspaso").ToString().ToDecimal() - If ErrorMovInv Then Exit For - End If - Next - - 'ENTRADA POR TRASPASO A ENTREGA POR ADELANTADO - If TipoDocto.Contiene("Rem", "Ped") AndAlso Not ErrorMovInv Then - For Each Dr1 As DataRow In DtTraspasos.Select("CveTipoAlmacen = 26") - CveMovimientoSalida = Dr1("CveMovimientoSalida").ToString().ToEntero() - - Dim CveAlmacenExA As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveTipoAlmacen:=10).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto={CveSubProyecto}").ToEntero() - - CveMovimientoEntradaApartado = ObjInventario.AddMovimiento(CveAlmacenExA, 9, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, - Observaciones:=TxtObservaciones.Text.Trim, CveAlmacenDestino:=DdlAlmacen.SelectedValue.ToEntero(), CveMovimientoRelacionado:=CveMovimientoSalida, - Guia:=Guia, CveContrato:=CveContrato, CveVendedor:=CveVendedor, CveCliente:=CveCliente, Modulo:="RE/G4") - FolioEntrada = ObjInventario.Folio - - If Not CveMovimientoEntradaApartado > 0 Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.") - Exit For - End If - - Dr1("CveMovimientoEntrada") = CveMovimientoEntradaApartado - Dr1("FolioEntrada") = FolioEntrada - - If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then - Dim CveSeccionAlmacen As Integer = -1 - For Each Dr As DataRow In ObjInventario.DtResultados.Rows - - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntradaApartado, Dr("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), Dr("PU").ToString().ToDecimal, CveAF:=Dr("CveAF").ToString().ToEntero(), Serie:=Dr("Serie").ToString(), CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString().ToEntero(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=-3) Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") - Exit For - End If - Next - End If - - If ErrorMovInv Then Exit For - Next - End If - - If Not ErrorMovInv AndAlso CveMovimientoSalida > 0 AndAlso TipoDocto.Contiene("Rem", "Ped") Then - Dim CvePrePolizaSinCosto As Integer = ObjConta.AddPrePolizas("EA/SinCost", 53, 0, 0, 1, TxtFecha.Text.ToDate, "Entrega", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) - If CvePrePolizaSinCosto > 0 Then - - If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePolizaSinCosto, True, 0, 0, 68, TxtObservaciones.Text, TxtObservaciones.Text, -1, -1, CveMovimientoAlmacen:=CveMovimientoSalida, Contabilizable:=False) Then - ErrorMovInv = True - End If - If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePolizaSinCosto, False, 0, 0, 68, TxtObservaciones.Text, TxtObservaciones.Text, -1, -1, CveMovimientoAlmacen:=CveMovimientoEntradaApartado, Contabilizable:=False) Then - ErrorMovInv = True - End If - - Else - ErrorMovInv = True - End If - End If - - End If - - If Not ErrorMovInv Then - For Each DrMovto As DataRow In DtTraspasos.FiltraParametros("CveConceptoMovimientoSalida = 40").Rows - ErrorMovInv = Not GenerarPrePoliza(ObjInventario, ObjVentas, ObjConta, DrMovto("CveMovimientoSalida").ToString().ToEntero(), TextoError) - If ErrorMovInv Then - Exit For - End If - Next - End If - - ''TERMINA: SIN COSTO - - '' COMIENZA: APARTADOS - Dim CantidadPendiente As Decimal = 0 - Dim CantidadSaldo As Decimal = 0 - - - If Not ErrorMovInv AndAlso CveVendedor > 0 AndAlso (UsuarioActual.Empresa.Funcionalidad(146) = "1" Or CveCliente > 0) Then 'no debe considerar cuando es pedido de contrato - If TipoMovimiento = 1 Then ' SI ES DEVOLUCION NO APLICA APARTADO - ' SALIDA POR TRASPASO DE LOS ALMACENES DE APARTADO - For Each Dr As DataRow In DtDatos.Rows - If Dr("CantidadGV").ToString().ToDecimal > 0 Then - - If CBool(Dr("AplicaSerie")) Then - - DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Dr("Consec"))) - For Each Dr1 As DataRow In DtDetalle.Rows - If ObjInventario.GetExistenciasProducto(Dr1("CvePS").ToString().ToEntero(), Dr1("CveUM").ToString().ToEntero(), UsuarioActual.CveEmpresa, -1, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), Serie:=Dr1("Serie").ToString(), CveTipoAlmacen:=9, CveVendedor:=CveVendedor, CveSubProyecto:=CveSubProyecto, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeApartados:=-1, Caducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=-1) Then - Dim CveSeccionAlmacen As Integer = 0 - For Each Dr2 As DataRow In ObjInventario.DtResultados.FiltraParametros("CveAlmacen > 0 AND ExistenciaFinal > 0").Rows - - 'BUSCA SI EXISTE YA UN TRASPASO DEL ALMACEN DE APARTADO - CveMovimientoSalida = DtTraspasos.FiltroPrimeroValor("CveMovimientoSalida", $"CveAlmacen = {Dr2("CveAlmacen")}").ToEntero() - - If Not CveMovimientoSalida > 0 Then - CveMovimientoSalida = ObjInventario.AddMovimiento(Dr2("CveAlmacen").ToString().ToEntero(), 8, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, - Observaciones:=TxtObservaciones.Text.Trim, Guia:=Guia, CveContrato:=CveContrato, CveVendedor:=CveVendedor, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), - CveAlmacenDestino:=DdlAlmacen.SelectedValue.ToEntero(), Modulo:="RE/G1") - FolioSalida = ObjInventario.Folio - - If Not CveMovimientoSalida > 0 Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.") - Exit For - End If - - Dim DrMovto As DataRow = DtTraspasos.NewRow - DrMovto("Almacen") = Dr2("Almacen").ToString().ToEntero() - DrMovto("CveAlmacen") = Dr2("CveAlmacen").ToString().ToEntero() - DrMovto("CveMovimientoSalida") = CveMovimientoSalida - DrMovto("FolioSalida") = FolioSalida - DrMovto("CveTipoAlmacen") = 9 - DrMovto("CveConceptoMovimientoSalida") = 8 - DtTraspasos.Rows.Add(DrMovto) - End If - - - CantidadPendiente = 1 - CveSeccionAlmacen = -3 - - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, CantidadPendiente.ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), 0, Serie:=Dr1("Serie").ToString(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=CveSeccionAlmacen) Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un Error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") - Exit For - End If - - DtDatosDetalle.Select($"Consec = {Dr1("Consec")}")(0)("FueTraspaso") = 1 - DtDatosDetalle.Select($"Consec = {Dr1("Consec")}")(0)("CveVentaDetalle") = Dr("CveVentaDetalle") - Dr("CantidadTraspaso") = Dr("CantidadTraspaso").ToString().ToDecimal + CantidadPendiente - Exit For - Next - End If - If ErrorMovInv Then Exit For - Next - - ElseIf CBool(Dr("AplicaLote")) Then - - DtDetalle = DtDatosDetalleLote.FiltraParametros(String.Format("ConsecId = {0}", Dr("Consec"))) - For Each Dr1 As DataRow In DtDetalle.Rows - If ObjInventario.GetExistenciasProducto(Dr1("CvePS").ToString().ToEntero(), Dr1("CveUM").ToString().ToEntero(), UsuarioActual.CveEmpresa, -1, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), Lote:=Dr1("Lote").ToString(), CveTipoAlmacen:=9, CveVendedor:=CveVendedor, CveSubProyecto:=CveSubProyecto, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeApartados:=-1, Caducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), CveSeccionAlmacen:=-1) Then - - CantidadSaldo = Dr("CantidadGV").ToString().ToDecimal - - For Each Dr2 As DataRow In ObjInventario.DtResultados.FiltraParametros("CveAlmacen > 0 AND ExistenciaFinal > 0").Rows - - 'BUSCA SI EXISTE YA UN TRASPASO DEL ALMACEN DE APARTADO - CveMovimientoSalida = DtTraspasos.FiltroPrimeroValor("CveMovimientoSalida", $"CveAlmacen = {Dr2("CveAlmacen")}").ToEntero() - - If Not CveMovimientoSalida > 0 Then - CveMovimientoSalida = ObjInventario.AddMovimiento(Dr2("CveAlmacen").ToString().ToEntero(), 8, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, Observaciones:=TxtObservaciones.Text.Trim, - Guia:=Guia, CveContrato:=CveContrato, CveVendedor:=CveVendedor, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), - CveAlmacenDestino:=DdlAlmacen.SelectedValue.ToEntero(), Modulo:="RE/G2") - FolioSalida = ObjInventario.Folio - - If Not CveMovimientoSalida > 0 Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.") - Exit For - End If - - Dim DrMovto As DataRow = DtTraspasos.NewRow - DrMovto("Almacen") = Dr2("Almacen").ToString().ToEntero() - DrMovto("CveAlmacen") = Dr2("CveAlmacen").ToString().ToEntero() - DrMovto("CveMovimientoSalida") = CveMovimientoSalida - DrMovto("FolioSalida") = FolioSalida - DrMovto("CveTipoAlmacen") = 9 - DrMovto("CveConceptoMovimientoSalida") = 8 - DtTraspasos.Rows.Add(DrMovto) - End If - - CantidadPendiente = If(Dr1("Cantidad").ToString().ToDecimal > CantidadSaldo, CantidadSaldo, Dr1("Cantidad").ToString().ToDecimal) - - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, CantidadPendiente.ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), 0, Lote:=Dr1("Lote").ToString(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString().ToEntero(), -1)) Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") - Exit For - End If - - DtDatosDetalle.Select($"Consec = {Dr1("Consec")}")(0)("FueTraspaso") = 1 - DtDatosDetalle.Select($"Consec = {Dr1("Consec")}")(0)("CveVentaDetalle") = Dr("CveVentaDetalle") - - CantidadSaldo -= CantidadPendiente - Dr("CantidadTraspaso") = Dr("CantidadTraspaso").ToString().ToDecimal + CantidadPendiente - If CantidadSaldo <= 0 Then Exit For - Next - End If - Next - - Else - - If ObjInventario.GetExistenciasProducto(Dr("CvePS").ToString().ToEntero(), Dr("CveUM").ToString().ToEntero(), UsuarioActual.CveEmpresa, -1, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), CveTipoAlmacen:=9, CveVendedor:=CveVendedor, CveSubProyecto:=CveSubProyecto, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeApartados:=-1, Caducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=-1) Then - - CantidadSaldo = Dr("CantidadGV").ToString().ToDecimal - - For Each Dr1 As DataRow In ObjInventario.DtResultados.FiltraParametros("CveAlmacen > 0 AND ExistenciaFinal > 0").Rows - - 'BUSCA SI EXISTE YA UN TRASPASO DEL ALMACEN DE APARTADO - CveMovimientoSalida = DtTraspasos.FiltroPrimeroValor("CveMovimientoSalida", $"CveAlmacen = {Dr1("CveAlmacen")}").ToEntero() - - If Not CveMovimientoSalida > 0 Then - - - CveMovimientoSalida = ObjInventario.AddMovimiento(Dr1("CveAlmacen").ToString().ToEntero(), 8, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, - Observaciones:=TxtObservaciones.Text.Trim, Guia:=Guia, CveContrato:=CveContrato, CveVendedor:=CveVendedor, - CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), CveAlmacenDestino:=DdlAlmacen.SelectedValue.ToEntero(), Modulo:="RE/G3") - FolioSalida = ObjInventario.Folio - - If Not CveMovimientoSalida > 0 Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.") - Exit For - End If - - Dim DrMovto As DataRow = DtTraspasos.NewRow - DrMovto("Almacen") = Dr1("Almacen").ToString().ToEntero() - DrMovto("CveAlmacen") = Dr1("CveAlmacen").ToString().ToEntero() - DrMovto("CveMovimientoSalida") = CveMovimientoSalida - DrMovto("FolioSalida") = FolioSalida - DrMovto("CveTipoAlmacen") = 9 - DrMovto("CveConceptoMovimientoSalida") = 8 - DtTraspasos.Rows.Add(DrMovto) - End If - - CantidadPendiente = If(Dr1("ExistenciaFinal").ToString().ToDecimal > CantidadSaldo, CantidadSaldo, Dr1("ExistenciaFinal").ToString().ToDecimal) - - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, CantidadPendiente.ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), 0, - Serie:=Dr("Serie").ToString(), - CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), - FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), - Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), - CveSeccionAlmacen:=-3) Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") - Exit For - End If - - CantidadSaldo -= CantidadPendiente - Dr("CantidadTraspaso") = Dr("CantidadTraspaso").ToString().ToDecimal + CantidadPendiente - If CantidadSaldo <= 0 Then Exit For - Next - - If ErrorMovInv Then Exit For - - - Else - ErrorMovInv = True - End If - - End If - If ErrorMovInv Then Exit For - - End If - - Next - - 'ENTRADA POR TRASPASO AL ALMACEN GENERAL - If Not ErrorMovInv Then - For Each Dr1 As DataRow In DtTraspasos.Select("CveTipoAlmacen = 9") - CveMovimientoSalida = Dr1("CveMovimientoSalida").ToString().ToEntero() - - CveMovimientoEntradaApartado = ObjInventario.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero(), 9, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, - Observaciones:=TxtObservaciones.Text.Trim, CveAlmacenDestino:=DdlAlmacen.SelectedValue.ToEntero(), CveMovimientoRelacionado:=CveMovimientoSalida, - Guia:=Guia, CveContrato:=CveContrato, CveVendedor:=CveVendedor, CveCliente:=CveCliente, Modulo:="RE/G4") - FolioEntrada = ObjInventario.Folio - - If Not CveMovimientoEntradaApartado > 0 Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.") - Exit For - End If - - Dr1("CveMovimientoEntrada") = CveMovimientoEntradaApartado - Dr1("FolioEntrada") = FolioEntrada - - If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then - For Each Dr As DataRow In ObjInventario.DtResultados.Rows - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntradaApartado, Dr("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), Dr("PU").ToString().ToDecimal, CveAF:=Dr("CveAF").ToString().ToEntero(), Serie:=Dr("Serie").ToString(), CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString().ToEntero(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=-3) Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") - Exit For - End If - Next - End If - - If ErrorMovInv Then Exit For - - Next - End If - End If - End If - '' TERMINA: APARTADOS - Dim TotalGarantia As Decimal = 0 - - ' COMIENZA: GARANTIAS - If Not ErrorMovInv AndAlso TipoDocto.Contiene("Ing", "Rem", "Ped") AndAlso UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso TipoMovimiento = 1 Then - - Dim CveAlmacenGarantia As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveTipoAlmacen:=6).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto={CveSubProyecto}").ToEntero() - Dim DtGarantias As DataTable = Nothing - - If ObjAcumuladores.GetGarantiasDetalle(CveVentaSurtir) Then - DtGarantias = ObjAcumuladores.DtResultados.Copy() - End If - - If DtGarantias IsNot Nothing AndAlso DtGarantias.Rows.Count > 0 AndAlso CveAlmacenGarantia > 0 Then - CveMovimientoGarantia = ObjInventario.AddMovimiento(CveAlmacenGarantia, 14, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, Observaciones:=TxtObservaciones.Text.Trim, Guia:=Guia, Modulo:="EA/G5") - FolioGarantia = ObjInventario.Folio - - For Each RowGarantia As DataRow In DtGarantias.Rows - Dim CvePS As Integer = RowGarantia("CvePS").ToString().ToEntero() - Dim CveTamaño As Integer = RowGarantia("CveTamaño").ToString().ToEntero() - Dim CveUM As Integer = RowGarantia("CveUnidadMedida").ToString().ToEntero() - Dim PU As Decimal = 0 'valor cero, por tema contable 'RowGarantia("Importe").ToString().ToDecimal() ' / RowGarantia("Cantidad").ToString().ToDouble() - Dim Serie As String = RowGarantia("Comprobante").ToString - - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoGarantia, RowGarantia("Cantidad").ToString().ToDecimal, CveUM, CvePS, PU, Serie:=Serie, CveVentaDetalle:=IIf(RowGarantia("MismoCvePS").ToString = "1", RowGarantia("CveVentaDetalle"), -1).ToString.ToEntero) Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") - Exit For - End If - TotalGarantia += (RowGarantia("Cantidad").ToString().ToDecimal() * PU) - Next - - ''se registra - 'If ContabilizaMovimientoAlmacen(ObjConta, TxtFecha.Text.ToDate, HLFolio.Text, "EntregaAlmacen", -1, CveMovimientoGarantia, TotalGarantia, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, True) <= 0 Then - ' ErrorMovInv = True - 'End If - - Dim CvePrePolizaTraspaso As Integer = ObjConta.AddPrePolizas("EA/Gar", 53, 0, 0, 1, TxtFecha.Text.ToDate, "Entrada Garantía", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) - If CvePrePolizaTraspaso > 0 Then - - Dim TotalGarantiaValor As Decimal = 0 ' el valor en almacen es cero, por tema contable - If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTraspaso, False, TotalGarantiaValor, TotalGarantia, 68, TxtObservaciones.Text, TxtObservaciones.Text, CveMovimientoAlmacen:=CveMovimientoGarantia, Contabilizable:=False) Then - ErrorMovInv = True - End If - - If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTraspaso, True, TotalGarantiaValor, TotalGarantia, 331, TxtObservaciones.Text, TxtObservaciones.Text, CveMovimientoAlmacen:=CveMovimientoGarantia, Contabilizable:=False) Then - ErrorMovInv = True - End If - Else - ErrorMovInv = True - End If - End If - End If - ' TERMINA: GARANTIAS - - 'DEVOLUCION DE SIN COSTO - Dim CantidadEntradaSinCosto As Decimal = 0 - - If Not ErrorMovInv AndAlso TipoMovimiento = 2 AndAlso UsuarioActual.Empresa.Funcionalidad(587) = "1" Then - For Each Dr1 As DataRow In DtExistencias.FiltraParametros("CveTipoAlmacenDevolucion = 26").Rows - Dim CveMovimientoSalidaSinCosto As Integer = Dr1("CveMovimiento").ToString().ToEntero() - - 'Dim CveAlmacenSinCosto As Integer = Dr1("CveAlmacenDevolucion").ToString().ToEntero() - - 'Dim AlmacenSinCosto As String = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveTipoAlmacen:=26).FiltroPrimeroValor("Almacen", $"CveAlmacen={CveAlmacenSinCosto}").ToString() - - Dim CveMovimientoDevolucionSinCosto As Integer = ObjInventario.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero(), 41, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, - Observaciones:=TxtObservaciones.Text.Trim, CveAlmacenDestino:=DdlAlmacen.SelectedValue.ToEntero(), CveMovimientoRelacionado:=CveMovimientoSalida, - Guia:=Guia, CveContrato:=CveContrato, CveVendedor:=CveVendedor, CveCliente:=CveCliente, Modulo:="RE/G4") - Dim FolioDevSinCosto As Integer = ObjInventario.Folio - - If Not CveMovimientoDevolucionSinCosto > 0 Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.") - Exit For - End If - - If ObjInventario.GetMovimientosDetalle(CveMovimientoSalidaSinCosto, UsuarioActual.CveEmpresa) Then - For Each Dr As DataRow In ObjInventario.DtResultados.Rows - - CantidadEntradaSinCosto += Dr("Cantidad").ToString().ToDecimal() - - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoDevolucionSinCosto, Dr("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), Dr("PU").ToString().ToDecimal, CveAF:=Dr("CveAF").ToString().ToEntero(), Serie:=Dr("Serie").ToString(), CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString().ToEntero(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString().ToEntero(), -1)) Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") - Exit For - End If - Next - End If - - If ErrorMovInv Then Exit For - - Dim DrMovto As DataRow = DtDevSinCosto.NewRow - DrMovto("Almacen") = DdlAlmacen.SelectedItem.Text - DrMovto("CveAlmacen") = DdlAlmacen.SelectedValue.ToEntero() - DrMovto("CveMovimientoEntrada") = CveMovimientoDevolucionSinCosto - DrMovto("FolioEntrada") = FolioDevSinCosto - DrMovto("CveTipoAlmacen") = 10 - DrMovto("CveConceptoMovimientoSalida") = 41 - DtDevSinCosto.Rows.Add(DrMovto) - - If Not ErrorMovInv Then - ErrorMovInv = Not GenerarPrePoliza(ObjInventario, ObjVentas, ObjConta, CveMovimientoDevolucionSinCosto, TextoError) - End If - - Next - End If - - Dim CantidadPendientePorSalir As Decimal = DtDatos.SUM("CantidadGV") - - If TipoMovimiento = 1 Then - CantidadPendientePorSalir = CantidadPendientePorSalir - CantidadSalidaSinCosto - ElseIf TipoMovimiento = 2 Then - CantidadPendientePorSalir = CantidadPendientePorSalir - CantidadEntradaSinCosto - End If - 'si el alamcen del que salio, es el mismo que entra, no hay traspasos. - If CveAlmacenTraspasoDestino = DdlAlmacen.SelectedValue.ToEntero() And TipoDocto <> "Rem" And TipoDocto <> "Ped" Then CveAlmacenTraspasoDestino = 0 - - If Not ErrorMovInv AndAlso CantidadPendientePorSalir > 0 Then - Dim ConceptoMovimiento As Integer = 3 - ConceptoMovimiento = If(TipoMovimiento = 1, ConceptoMovimiento, 18) - ConceptoMovimiento = If(CveAlmacenTraspasoDestino > 0, 8, ConceptoMovimiento) - - Dim Almacen1 As Integer = DdlAlmacen.SelectedValue.ToEntero() - Dim tCveAlmacenTraspasoDestino As Integer = CveAlmacenTraspasoDestino - - If TipoDocto.Contiene("Rem", "Ped") AndAlso tCveAlmacenTraspasoDestino = 0 Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error. no se tiene definido el almacen destino") - End If - - 'DEVOLUCION REMISION - If TipoMovimiento = 2 And TipoDocto.Contiene("Rem", "Ped") Then - ConceptoMovimiento = 8 - Almacen1 = CveAlmacenTraspasoDestino - tCveAlmacenTraspasoDestino = DdlAlmacen.SelectedValue.ToEntero() - End If - - 'CANCELACION DE DEVOLUCION - If TipoMovimiento = 2 And TipoDocto = "Dev" And EsDevolucionVenta = 1 Then - ConceptoMovimiento = 3 - Almacen1 = DdlAlmacen.SelectedValue.ToEntero() - tCveAlmacenTraspasoDestino = DdlAlmacen.SelectedValue.ToEntero() - End If - - 'DEVOLUCION DIRECTA A ENTREGA POR ADELANTADO - If TipoMovimiento = 2 And ConceptoMovimiento = 18 AndAlso EsDevolucionDirecta Then - ConceptoMovimiento = 41 - End If - 'sms + Next + End If + Else + TieneErrorExistencia = True + End If + + If TieneErrorExistencia Then + ObjInventario.RollBack() + ObjInventario.Dispose() + ObjConta.Dispose() + ObjVentas.Dispose() + ObjEventos.Dispose() + If TextoError.Length > 0 Then + Alert($" Lo(s) siguiente(s) Productos no tienen existencia suficiente:

    {TextoError}", TipoMensaje.MsgAdvertencia) + End If + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") + Exit Sub + End If + End If + + '' TERMINA: VALIDACIONES + + Dim CantidadPendienteSinCosto As Decimal = 0 + Dim CantidadSaldoSinCosto As Decimal = 0 + + Dim CantidadSalidaSinCosto As Decimal = 0 + + '' COMIENZA: SIN COSTO + If TipoDocto.Contiene("Ing", "Rem", "Ped") AndAlso UsuarioActual.Empresa.Funcionalidad(587) = "1" AndAlso TipoMovimiento = 1 Then + + Dim CveConceptoSalidaSinCosto As Integer = If(TipoDocto.Contiene("Rem", "Ped"), 8, 40) + + For Each Dr As DataRow In DtDatos.Rows + If Dr("CantidadGV").ToString().ToDecimal > 0 Then + If CBool(Dr("AplicaSerie")) Then + DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Dr("Consec"))) + For Each Dr1 As DataRow In DtDetalle.Rows + If ObjInventario.GetExistenciasProducto(Dr1("CvePS").ToString().ToEntero(), Dr1("CveUM").ToString().ToEntero(), UsuarioActual.CveEmpresa, -1, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), Serie:=Dr1("Serie").ToString(), CveTipoAlmacen:=26, CveSubProyecto:=CveSubProyecto, Caducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString().ToEntero(), -1)) Then + For Each Dr2 As DataRow In ObjInventario.DtResultados.FiltraParametros("CveAlmacen > 0 AND ExistenciaFinal > 0").Rows + + 'BUSCA SI EXISTE YA UN TRASPASO DEL ALMACEN DE APARTADO + CveMovimientoSalida = DtTraspasos.FiltroPrimeroValor("CveMovimientoSalida", $"CveAlmacen = {Dr2("CveAlmacen")}").ToEntero() + + If Not CveMovimientoSalida > 0 Then + + CveMovimientoSalida = ObjInventario.AddMovimiento(Dr2("CveAlmacen").ToString().ToEntero(), CveConceptoSalidaSinCosto, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, + Observaciones:=TxtObservaciones.Text.Trim, Guia:=Guia, CveContrato:=CveContrato, Modulo:="RE/GSC1") + FolioSalida = ObjInventario.Folio + + If Not CveMovimientoSalida > 0 Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.") + Exit For + End If + + Dim DrMovto As DataRow = DtTraspasos.NewRow + DrMovto("Almacen") = Dr2("Almacen").ToString().ToEntero() + DrMovto("CveAlmacen") = Dr2("CveAlmacen").ToString().ToEntero() + DrMovto("CveMovimientoSalida") = CveMovimientoSalida + DrMovto("FolioSalida") = FolioSalida + DrMovto("CveTipoAlmacen") = 26 + DrMovto("CveConceptoMovimientoSalida") = CveConceptoSalidaSinCosto + DtTraspasos.Rows.Add(DrMovto) + End If + + + CantidadPendienteSinCosto = 1 + + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, CantidadPendienteSinCosto, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), 0, Serie:=Dr1("Serie").ToString(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString().ToEntero(), -1)) Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un Error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") + Exit For + End If + + DtDatosDetalle.Select($"Consec = {Dr1("Consec")}")(0)("FueTraspaso") = 1 + DtDatosDetalle.Select($"Consec = {Dr1("Consec")}")(0)("CveVentaDetalle") = Dr("CveVentaDetalle") + Dr("CantidadTraspaso") = Dr("CantidadTraspaso").ToString().ToDecimal + CantidadPendienteSinCosto + Exit For + Next + End If + If ErrorMovInv Then Exit For + Next + + Else + + If ObjInventario.GetExistenciasProducto(Dr("CvePS").ToString().ToEntero(), Dr("CveUM").ToString().ToEntero(), UsuarioActual.CveEmpresa, -1, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), CveTipoAlmacen:=26, CveSubProyecto:=CveSubProyecto, Caducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString().ToEntero(), -1)) Then + + CantidadSaldoSinCosto = Dr("CantidadGV").ToString().ToDecimal + + For Each Dr1 As DataRow In ObjInventario.DtResultados.FiltraParametros("CveAlmacen > 0 AND ExistenciaFinal > 0").Rows + + 'BUSCA SI EXISTE YA UN TRASPASO DEL ALMACEN DE APARTADO + CveMovimientoSalida = DtTraspasos.FiltroPrimeroValor("CveMovimientoSalida", $"CveAlmacen = {Dr1("CveAlmacen")}").ToEntero() + + If Not CveMovimientoSalida > 0 Then + CveMovimientoSalida = ObjInventario.AddMovimiento(Dr1("CveAlmacen").ToString().ToEntero(), CveConceptoSalidaSinCosto, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, + Observaciones:=TxtObservaciones.Text.Trim, Guia:=Guia, CveContrato:=CveContrato, Modulo:="RE/GSC3") + FolioSalida = ObjInventario.Folio + + If Not CveMovimientoSalida > 0 Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.") + Exit For + End If + + Dim DrMovto As DataRow = DtTraspasos.NewRow + DrMovto("Almacen") = Dr1("Almacen").ToString().ToEntero() + DrMovto("CveAlmacen") = Dr1("CveAlmacen").ToString().ToEntero() + DrMovto("CveMovimientoSalida") = CveMovimientoSalida + DrMovto("FolioSalida") = FolioSalida + DrMovto("CveTipoAlmacen") = 26 + DrMovto("CveConceptoMovimientoSalida") = CveConceptoSalidaSinCosto + DtTraspasos.Rows.Add(DrMovto) + End If + + CantidadPendienteSinCosto = If(Dr1("ExistenciaFinal").ToString().ToDecimal > CantidadSaldoSinCosto, CantidadSaldoSinCosto, Dr1("ExistenciaFinal").ToString().ToDecimal) + + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, CantidadPendienteSinCosto.ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), 0, + Serie:=Dr("Serie").ToString(), + CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), + FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), + Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), + CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString().ToEntero(), -1)) Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") + Exit For + End If + CantidadSaldoSinCosto -= CantidadPendienteSinCosto + Dr("CantidadTraspaso") = Dr("CantidadTraspaso").ToString().ToDecimal + CantidadPendienteSinCosto + If CantidadSaldoSinCosto <= 0 Then Exit For + Next + + If ErrorMovInv Then Exit For + Else + ErrorMovInv = True + End If + End If + CantidadSalidaSinCosto += Dr("CantidadTraspaso").ToString().ToDecimal() + If ErrorMovInv Then Exit For + End If + Next + + 'ENTRADA POR TRASPASO A ENTREGA POR ADELANTADO + If TipoDocto.Contiene("Rem", "Ped") AndAlso Not ErrorMovInv Then + For Each Dr1 As DataRow In DtTraspasos.Select("CveTipoAlmacen = 26") + CveMovimientoSalida = Dr1("CveMovimientoSalida").ToString().ToEntero() + + Dim CveAlmacenExA As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveTipoAlmacen:=10).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto={CveSubProyecto}").ToEntero() + + CveMovimientoEntradaApartado = ObjInventario.AddMovimiento(CveAlmacenExA, 9, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, + Observaciones:=TxtObservaciones.Text.Trim, CveAlmacenDestino:=DdlAlmacen.SelectedValue.ToEntero(), CveMovimientoRelacionado:=CveMovimientoSalida, + Guia:=Guia, CveContrato:=CveContrato, CveVendedor:=CveVendedor, CveCliente:=CveCliente, Modulo:="RE/G4") + FolioEntrada = ObjInventario.Folio + + If Not CveMovimientoEntradaApartado > 0 Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.") + Exit For + End If + + Dr1("CveMovimientoEntrada") = CveMovimientoEntradaApartado + Dr1("FolioEntrada") = FolioEntrada + + If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then + Dim CveSeccionAlmacen As Integer = -1 + For Each Dr As DataRow In ObjInventario.DtResultados.Rows + + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntradaApartado, Dr("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), Dr("PU").ToString().ToDecimal, CveAF:=Dr("CveAF").ToString().ToEntero(), Serie:=Dr("Serie").ToString(), CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString().ToEntero(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=-3) Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") + Exit For + End If + Next + End If + + If ErrorMovInv Then Exit For + Next + End If + + If Not ErrorMovInv AndAlso CveMovimientoSalida > 0 AndAlso TipoDocto.Contiene("Rem", "Ped") Then + Dim CvePrePolizaSinCosto As Integer = ObjConta.AddPrePolizas("EA/SinCost", 53, 0, 0, 1, TxtFecha.Text.ToDate, "Entrega", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + If CvePrePolizaSinCosto > 0 Then + + If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePolizaSinCosto, True, 0, 0, 68, TxtObservaciones.Text, TxtObservaciones.Text, -1, -1, CveMovimientoAlmacen:=CveMovimientoSalida, Contabilizable:=False) Then + ErrorMovInv = True + End If + If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePolizaSinCosto, False, 0, 0, 68, TxtObservaciones.Text, TxtObservaciones.Text, -1, -1, CveMovimientoAlmacen:=CveMovimientoEntradaApartado, Contabilizable:=False) Then + ErrorMovInv = True + End If + + Else + ErrorMovInv = True + End If + End If + + End If + + If Not ErrorMovInv Then + For Each DrMovto As DataRow In DtTraspasos.FiltraParametros("CveConceptoMovimientoSalida = 40").Rows + ErrorMovInv = Not GenerarPrePoliza(ObjInventario, ObjVentas, ObjConta, DrMovto("CveMovimientoSalida").ToString().ToEntero(), TextoError) + If ErrorMovInv Then + Exit For + End If + Next + End If + + ''TERMINA: SIN COSTO + + '' COMIENZA: APARTADOS + Dim CantidadPendiente As Decimal = 0 + Dim CantidadSaldo As Decimal = 0 + + + If Not ErrorMovInv AndAlso CveVendedor > 0 AndAlso (UsuarioActual.Empresa.Funcionalidad(146) = "1" Or CveCliente > 0) Then 'no debe considerar cuando es pedido de contrato + If TipoMovimiento = 1 Then ' SI ES DEVOLUCION NO APLICA APARTADO + ' SALIDA POR TRASPASO DE LOS ALMACENES DE APARTADO + For Each Dr As DataRow In DtDatos.Rows + If Dr("CantidadGV").ToString().ToDecimal > 0 Then + + If CBool(Dr("AplicaSerie")) Then + + DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Dr("Consec"))) + For Each Dr1 As DataRow In DtDetalle.Rows + If ObjInventario.GetExistenciasProducto(Dr1("CvePS").ToString().ToEntero(), Dr1("CveUM").ToString().ToEntero(), UsuarioActual.CveEmpresa, -1, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), Serie:=Dr1("Serie").ToString(), CveTipoAlmacen:=9, CveVendedor:=CveVendedor, CveSubProyecto:=CveSubProyecto, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeApartados:=-1, Caducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=-1) Then + Dim CveSeccionAlmacen As Integer = 0 + For Each Dr2 As DataRow In ObjInventario.DtResultados.FiltraParametros("CveAlmacen > 0 AND ExistenciaFinal > 0").Rows + + 'BUSCA SI EXISTE YA UN TRASPASO DEL ALMACEN DE APARTADO + CveMovimientoSalida = DtTraspasos.FiltroPrimeroValor("CveMovimientoSalida", $"CveAlmacen = {Dr2("CveAlmacen")}").ToEntero() + + If Not CveMovimientoSalida > 0 Then + CveMovimientoSalida = ObjInventario.AddMovimiento(Dr2("CveAlmacen").ToString().ToEntero(), 8, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, + Observaciones:=TxtObservaciones.Text.Trim, Guia:=Guia, CveContrato:=CveContrato, CveVendedor:=CveVendedor, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), + CveAlmacenDestino:=DdlAlmacen.SelectedValue.ToEntero(), Modulo:="RE/G1") + FolioSalida = ObjInventario.Folio + + If Not CveMovimientoSalida > 0 Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.") + Exit For + End If + + Dim DrMovto As DataRow = DtTraspasos.NewRow + DrMovto("Almacen") = Dr2("Almacen").ToString().ToEntero() + DrMovto("CveAlmacen") = Dr2("CveAlmacen").ToString().ToEntero() + DrMovto("CveMovimientoSalida") = CveMovimientoSalida + DrMovto("FolioSalida") = FolioSalida + DrMovto("CveTipoAlmacen") = 9 + DrMovto("CveConceptoMovimientoSalida") = 8 + DtTraspasos.Rows.Add(DrMovto) + End If + + + CantidadPendiente = 1 + CveSeccionAlmacen = -3 + + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, CantidadPendiente.ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), 0, Serie:=Dr1("Serie").ToString(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=CveSeccionAlmacen) Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un Error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") + Exit For + End If + + DtDatosDetalle.Select($"Consec = {Dr1("Consec")}")(0)("FueTraspaso") = 1 + DtDatosDetalle.Select($"Consec = {Dr1("Consec")}")(0)("CveVentaDetalle") = Dr("CveVentaDetalle") + Dr("CantidadTraspaso") = Dr("CantidadTraspaso").ToString().ToDecimal + CantidadPendiente + Exit For + Next + End If + If ErrorMovInv Then Exit For + Next + + ElseIf CBool(Dr("AplicaLote")) Then + + DtDetalle = DtDatosDetalleLote.FiltraParametros(String.Format("ConsecId = {0}", Dr("Consec"))) + For Each Dr1 As DataRow In DtDetalle.Rows + If ObjInventario.GetExistenciasProducto(Dr1("CvePS").ToString().ToEntero(), Dr1("CveUM").ToString().ToEntero(), UsuarioActual.CveEmpresa, -1, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), Lote:=Dr1("Lote").ToString(), CveTipoAlmacen:=9, CveVendedor:=CveVendedor, CveSubProyecto:=CveSubProyecto, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeApartados:=-1, Caducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), CveSeccionAlmacen:=-1) Then + + CantidadSaldo = Dr("CantidadGV").ToString().ToDecimal + + For Each Dr2 As DataRow In ObjInventario.DtResultados.FiltraParametros("CveAlmacen > 0 AND ExistenciaFinal > 0").Rows + + 'BUSCA SI EXISTE YA UN TRASPASO DEL ALMACEN DE APARTADO + CveMovimientoSalida = DtTraspasos.FiltroPrimeroValor("CveMovimientoSalida", $"CveAlmacen = {Dr2("CveAlmacen")}").ToEntero() + + If Not CveMovimientoSalida > 0 Then + CveMovimientoSalida = ObjInventario.AddMovimiento(Dr2("CveAlmacen").ToString().ToEntero(), 8, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, Observaciones:=TxtObservaciones.Text.Trim, + Guia:=Guia, CveContrato:=CveContrato, CveVendedor:=CveVendedor, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), + CveAlmacenDestino:=DdlAlmacen.SelectedValue.ToEntero(), Modulo:="RE/G2") + FolioSalida = ObjInventario.Folio + + If Not CveMovimientoSalida > 0 Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.") + Exit For + End If + + Dim DrMovto As DataRow = DtTraspasos.NewRow + DrMovto("Almacen") = Dr2("Almacen").ToString().ToEntero() + DrMovto("CveAlmacen") = Dr2("CveAlmacen").ToString().ToEntero() + DrMovto("CveMovimientoSalida") = CveMovimientoSalida + DrMovto("FolioSalida") = FolioSalida + DrMovto("CveTipoAlmacen") = 9 + DrMovto("CveConceptoMovimientoSalida") = 8 + DtTraspasos.Rows.Add(DrMovto) + End If + + CantidadPendiente = If(Dr1("Cantidad").ToString().ToDecimal > CantidadSaldo, CantidadSaldo, Dr1("Cantidad").ToString().ToDecimal) + + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, CantidadPendiente.ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), 0, Lote:=Dr1("Lote").ToString(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString().ToEntero(), -1)) Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") + Exit For + End If + + DtDatosDetalle.Select($"Consec = {Dr1("Consec")}")(0)("FueTraspaso") = 1 + DtDatosDetalle.Select($"Consec = {Dr1("Consec")}")(0)("CveVentaDetalle") = Dr("CveVentaDetalle") + + CantidadSaldo -= CantidadPendiente + Dr("CantidadTraspaso") = Dr("CantidadTraspaso").ToString().ToDecimal + CantidadPendiente + If CantidadSaldo <= 0 Then Exit For + Next + End If + Next + + Else + + If ObjInventario.GetExistenciasProducto(Dr("CvePS").ToString().ToEntero(), Dr("CveUM").ToString().ToEntero(), UsuarioActual.CveEmpresa, -1, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), CveTipoAlmacen:=9, CveVendedor:=CveVendedor, CveSubProyecto:=CveSubProyecto, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeApartados:=-1, Caducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=-1) Then + + CantidadSaldo = Dr("CantidadGV").ToString().ToDecimal + + For Each Dr1 As DataRow In ObjInventario.DtResultados.FiltraParametros("CveAlmacen > 0 AND ExistenciaFinal > 0").Rows + + 'BUSCA SI EXISTE YA UN TRASPASO DEL ALMACEN DE APARTADO + CveMovimientoSalida = DtTraspasos.FiltroPrimeroValor("CveMovimientoSalida", $"CveAlmacen = {Dr1("CveAlmacen")}").ToEntero() + + If Not CveMovimientoSalida > 0 Then + + + CveMovimientoSalida = ObjInventario.AddMovimiento(Dr1("CveAlmacen").ToString().ToEntero(), 8, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, + Observaciones:=TxtObservaciones.Text.Trim, Guia:=Guia, CveContrato:=CveContrato, CveVendedor:=CveVendedor, + CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), CveAlmacenDestino:=DdlAlmacen.SelectedValue.ToEntero(), Modulo:="RE/G3") + FolioSalida = ObjInventario.Folio + + If Not CveMovimientoSalida > 0 Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.") + Exit For + End If + + Dim DrMovto As DataRow = DtTraspasos.NewRow + DrMovto("Almacen") = Dr1("Almacen").ToString().ToEntero() + DrMovto("CveAlmacen") = Dr1("CveAlmacen").ToString().ToEntero() + DrMovto("CveMovimientoSalida") = CveMovimientoSalida + DrMovto("FolioSalida") = FolioSalida + DrMovto("CveTipoAlmacen") = 9 + DrMovto("CveConceptoMovimientoSalida") = 8 + DtTraspasos.Rows.Add(DrMovto) + End If + + CantidadPendiente = If(Dr1("ExistenciaFinal").ToString().ToDecimal > CantidadSaldo, CantidadSaldo, Dr1("ExistenciaFinal").ToString().ToDecimal) + + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, CantidadPendiente.ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), 0, + Serie:=Dr("Serie").ToString(), + CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), + FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), + Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), + CveSeccionAlmacen:=-3) Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") + Exit For + End If + + CantidadSaldo -= CantidadPendiente + Dr("CantidadTraspaso") = Dr("CantidadTraspaso").ToString().ToDecimal + CantidadPendiente + If CantidadSaldo <= 0 Then Exit For + Next + + If ErrorMovInv Then Exit For + + + Else + ErrorMovInv = True + End If + + End If + If ErrorMovInv Then Exit For + + End If + + Next + + 'ENTRADA POR TRASPASO AL ALMACEN GENERAL + If Not ErrorMovInv Then + For Each Dr1 As DataRow In DtTraspasos.Select("CveTipoAlmacen = 9") + CveMovimientoSalida = Dr1("CveMovimientoSalida").ToString().ToEntero() + + CveMovimientoEntradaApartado = ObjInventario.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero(), 9, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, + Observaciones:=TxtObservaciones.Text.Trim, CveAlmacenDestino:=DdlAlmacen.SelectedValue.ToEntero(), CveMovimientoRelacionado:=CveMovimientoSalida, + Guia:=Guia, CveContrato:=CveContrato, CveVendedor:=CveVendedor, CveCliente:=CveCliente, Modulo:="RE/G4") + FolioEntrada = ObjInventario.Folio + + If Not CveMovimientoEntradaApartado > 0 Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.") + Exit For + End If + + Dr1("CveMovimientoEntrada") = CveMovimientoEntradaApartado + Dr1("FolioEntrada") = FolioEntrada + + If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then + For Each Dr As DataRow In ObjInventario.DtResultados.Rows + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntradaApartado, Dr("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), Dr("PU").ToString().ToDecimal, CveAF:=Dr("CveAF").ToString().ToEntero(), Serie:=Dr("Serie").ToString(), CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString().ToEntero(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=-3) Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") + Exit For + End If + Next + End If + + If ErrorMovInv Then Exit For + + Next + End If + End If + End If + '' TERMINA: APARTADOS + Dim TotalGarantia As Decimal = 0 + + ' COMIENZA: GARANTIAS + If Not ErrorMovInv AndAlso TipoDocto.Contiene("Ing", "Rem", "Ped") AndAlso UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso TipoMovimiento = 1 Then + + Dim CveAlmacenGarantia As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveTipoAlmacen:=6).FiltroPrimeroValor("CveAlmacen", $"CveSubProyecto={CveSubProyecto}").ToEntero() + Dim DtGarantias As DataTable = Nothing + + If ObjAcumuladores.GetGarantiasDetalle(CveVentaSurtir) Then + DtGarantias = ObjAcumuladores.DtResultados.Copy() + End If + + If DtGarantias IsNot Nothing AndAlso DtGarantias.Rows.Count > 0 AndAlso CveAlmacenGarantia > 0 Then + CveMovimientoGarantia = ObjInventario.AddMovimiento(CveAlmacenGarantia, 14, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, Observaciones:=TxtObservaciones.Text.Trim, Guia:=Guia, Modulo:="EA/G5") + FolioGarantia = ObjInventario.Folio + + For Each RowGarantia As DataRow In DtGarantias.Rows + Dim CvePS As Integer = RowGarantia("CvePS").ToString().ToEntero() + Dim CveTamaño As Integer = RowGarantia("CveTamaño").ToString().ToEntero() + Dim CveUM As Integer = RowGarantia("CveUnidadMedida").ToString().ToEntero() + Dim PU As Decimal = 0 'valor cero, por tema contable 'RowGarantia("Importe").ToString().ToDecimal() ' / RowGarantia("Cantidad").ToString().ToDouble() + Dim Serie As String = RowGarantia("Comprobante").ToString + + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoGarantia, RowGarantia("Cantidad").ToString().ToDecimal, CveUM, CvePS, PU, Serie:=Serie, CveVentaDetalle:=IIf(RowGarantia("MismoCvePS").ToString = "1", RowGarantia("CveVentaDetalle"), -1).ToString.ToEntero) Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") + Exit For + End If + TotalGarantia += (RowGarantia("Cantidad").ToString().ToDecimal() * PU) + Next + + ''se registra + 'If ContabilizaMovimientoAlmacen(ObjConta, TxtFecha.Text.ToDate, HLFolio.Text, "EntregaAlmacen", -1, CveMovimientoGarantia, TotalGarantia, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, True) <= 0 Then + ' ErrorMovInv = True + 'End If + + Dim CvePrePolizaTraspaso As Integer = ObjConta.AddPrePolizas("EA/Gar", 53, 0, 0, 1, TxtFecha.Text.ToDate, "Entrada Garantía", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + If CvePrePolizaTraspaso > 0 Then + + Dim TotalGarantiaValor As Decimal = 0 ' el valor en almacen es cero, por tema contable + If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTraspaso, False, TotalGarantiaValor, TotalGarantia, 68, TxtObservaciones.Text, TxtObservaciones.Text, CveMovimientoAlmacen:=CveMovimientoGarantia, Contabilizable:=False) Then + ErrorMovInv = True + End If + + If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTraspaso, True, TotalGarantiaValor, TotalGarantia, 331, TxtObservaciones.Text, TxtObservaciones.Text, CveMovimientoAlmacen:=CveMovimientoGarantia, Contabilizable:=False) Then + ErrorMovInv = True + End If + Else + ErrorMovInv = True + End If + End If + End If + ' TERMINA: GARANTIAS + + 'DEVOLUCION DE SIN COSTO + Dim CantidadEntradaSinCosto As Decimal = 0 + + If Not ErrorMovInv AndAlso TipoMovimiento = 2 AndAlso UsuarioActual.Empresa.Funcionalidad(587) = "1" Then + For Each Dr1 As DataRow In DtExistencias.FiltraParametros("CveTipoAlmacenDevolucion = 26").Rows + Dim CveMovimientoSalidaSinCosto As Integer = Dr1("CveMovimiento").ToString().ToEntero() + + 'Dim CveAlmacenSinCosto As Integer = Dr1("CveAlmacenDevolucion").ToString().ToEntero() + + 'Dim AlmacenSinCosto As String = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveTipoAlmacen:=26).FiltroPrimeroValor("Almacen", $"CveAlmacen={CveAlmacenSinCosto}").ToString() + + Dim CveMovimientoDevolucionSinCosto As Integer = ObjInventario.AddMovimiento(DdlAlmacen.SelectedValue.ToEntero(), 41, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, + Observaciones:=TxtObservaciones.Text.Trim, CveAlmacenDestino:=DdlAlmacen.SelectedValue.ToEntero(), CveMovimientoRelacionado:=CveMovimientoSalida, + Guia:=Guia, CveContrato:=CveContrato, CveVendedor:=CveVendedor, CveCliente:=CveCliente, Modulo:="RE/G4") + Dim FolioDevSinCosto As Integer = ObjInventario.Folio + + If Not CveMovimientoDevolucionSinCosto > 0 Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.") + Exit For + End If + + If ObjInventario.GetMovimientosDetalle(CveMovimientoSalidaSinCosto, UsuarioActual.CveEmpresa) Then + For Each Dr As DataRow In ObjInventario.DtResultados.Rows + + CantidadEntradaSinCosto += Dr("Cantidad").ToString().ToDecimal() + + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoDevolucionSinCosto, Dr("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), Dr("PU").ToString().ToDecimal, CveAF:=Dr("CveAF").ToString().ToEntero(), Serie:=Dr("Serie").ToString(), CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString().ToEntero(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString().ToEntero(), -1)) Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") + Exit For + End If + Next + End If + + If ErrorMovInv Then Exit For + + Dim DrMovto As DataRow = DtDevSinCosto.NewRow + DrMovto("Almacen") = DdlAlmacen.SelectedItem.Text + DrMovto("CveAlmacen") = DdlAlmacen.SelectedValue.ToEntero() + DrMovto("CveMovimientoEntrada") = CveMovimientoDevolucionSinCosto + DrMovto("FolioEntrada") = FolioDevSinCosto + DrMovto("CveTipoAlmacen") = 10 + DrMovto("CveConceptoMovimientoSalida") = 41 + DtDevSinCosto.Rows.Add(DrMovto) + + If Not ErrorMovInv Then + ErrorMovInv = Not GenerarPrePoliza(ObjInventario, ObjVentas, ObjConta, CveMovimientoDevolucionSinCosto, TextoError) + End If + + Next + End If + + Dim CantidadPendientePorSalir As Decimal = DtDatos.SUM("CantidadGV") + + If TipoMovimiento = 1 Then + CantidadPendientePorSalir = CantidadPendientePorSalir - CantidadSalidaSinCosto + ElseIf TipoMovimiento = 2 Then + CantidadPendientePorSalir = CantidadPendientePorSalir - CantidadEntradaSinCosto + End If + 'si el alamcen del que salio, es el mismo que entra, no hay traspasos. + If CveAlmacenTraspasoDestino = DdlAlmacen.SelectedValue.ToEntero() And TipoDocto <> "Rem" And TipoDocto <> "Ped" Then CveAlmacenTraspasoDestino = 0 + + If Not ErrorMovInv AndAlso CantidadPendientePorSalir > 0 Then + Dim ConceptoMovimiento As Integer = 3 + ConceptoMovimiento = If(TipoMovimiento = 1, ConceptoMovimiento, 18) + ConceptoMovimiento = If(CveAlmacenTraspasoDestino > 0, 8, ConceptoMovimiento) + + Dim Almacen1 As Integer = DdlAlmacen.SelectedValue.ToEntero() + Dim tCveAlmacenTraspasoDestino As Integer = CveAlmacenTraspasoDestino + + If TipoDocto.Contiene("Rem", "Ped") AndAlso tCveAlmacenTraspasoDestino = 0 Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error. no se tiene definido el almacen destino") + End If + + 'DEVOLUCION REMISION + If TipoMovimiento = 2 And TipoDocto.Contiene("Rem", "Ped") Then + ConceptoMovimiento = 8 + Almacen1 = CveAlmacenTraspasoDestino + tCveAlmacenTraspasoDestino = DdlAlmacen.SelectedValue.ToEntero() + End If + + 'CANCELACION DE DEVOLUCION + If TipoMovimiento = 2 And TipoDocto = "Dev" And EsDevolucionVenta = 1 Then + ConceptoMovimiento = 3 + Almacen1 = DdlAlmacen.SelectedValue.ToEntero() + tCveAlmacenTraspasoDestino = DdlAlmacen.SelectedValue.ToEntero() + End If + + 'DEVOLUCION DIRECTA A ENTREGA POR ADELANTADO + If TipoMovimiento = 2 And ConceptoMovimiento = 18 AndAlso EsDevolucionDirecta Then + ConceptoMovimiento = 41 + End If + 'sms If UsuarioActual.Empresa.Funcionalidad(578) = "1" AndAlso ConceptoMovimiento = 8 AndAlso TipoMovimiento = 1 Then ConceptoMovimiento = 35 - End If - - CveMovimiento = ObjInventario.AddMovimiento(Almacen1, ConceptoMovimiento, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, Observaciones:=TxtObservaciones.Text.Trim, Guia:=Guia, Recibio:=Recibio, - CveContrato:=CveContrato, CveAlmacenDestino:=tCveAlmacenTraspasoDestino, Modulo:="RE/G7") - Folio = ObjInventario.Folio - - 'SALIDA DE ALMACEN - SALIDA POR TRASPASO CUANDO ES REMISION - DEVOLUCION (SI ES TRASPASO Y TIENE CONTRATO NO HACE DEVOLUCIóN) - 'If Not (CveContrato > 0 And CveAlmacenTraspasoDestino > 0) Then - If CveMovimiento > 0 Then - - 'SACA LO DE TRASPASOS - APARTADO - For Each Dr1 As DataRow In DtTraspasos.Select("CveTipoAlmacen = 9") - CveMovimientoSalida = Dr1("CveMovimientoEntrada").ToString().ToEntero() - If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then - If ObjInventario.DtResultados.Rows.Count = 0 Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error, no se tienen registros que ingresar") - Exit Sub - End If - For Each Dr As DataRow In ObjInventario.DtResultados.Rows - - If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), Dr("PU").ToString().ToDecimal, CveAF:=Dr("CveAF").ToString().ToEntero(), Serie:=Dr("Serie").ToString(), CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString().ToEntero(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=-3, EsInterno:=EsInterno) Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") - Exit For - End If - Next - Else - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al obtener los registros") - End If - If ErrorMovInv Then Exit For - Next - - 'ES EL MOVIMIENTO PRINCIPAL - CantidadPendiente = 0 - Dim Cont As Integer = 0 - For Each Dr As DataRow In DtDatos.Rows - CantidadPendiente = Dr("CantidadGV").ToString().ToDecimal - Dr("CantidadTraspaso").ToString().ToDecimal - CantidadEntradaSinCosto - If CantidadPendiente > 0 Then - Dim PU As Decimal = 0 - Dim CveSeccionAlmacen As Integer = If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString().ToEntero(), -1) - - 'SI FUE POR SERIE - DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0} AND FueTraspaso IS NULL", Dr("Consec"))) - DtDetalleLote = DtDatosDetalleLote.FiltraParametros(String.Format("ConsecId = {0} AND FueTraspaso IS NULL", Dr("Consec"))) - If DtDetalle.Rows.Count > 0 Then - For Each Dr1 As DataRow In DtDetalle.Rows - If TipoMovimiento = 2 AndAlso DtExistencias IsNot Nothing Then - 'CveSeccionAlmacen = DtExistencias.FiltroPrimeroValor("CveSeccionAlmacen", $"ISNULL(CveTipoAlmacenDevolucion,0) <> 26 AND CvePS = {Dr("CvePS")} AND CveUM = {Dr("CveUM").ToString().ToEntero()} AND Serie = '{Dr1("Serie").ToString()}'").ToString().ToEntero - - PU = DtExistencias.FiltroPrimeroValor("PU", $"ISNULL(CveTipoAlmacenDevolucion,-1) <> 26 AND CvePS = {Dr("CvePS")} AND CveUM = {Dr("CveUM").ToString().ToEntero()} AND Serie = '{Dr1("Serie").ToString()}'").ToString().ToDecimal - End If - - If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, 1, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), PU, Serie:=Dr1("Serie").ToString(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), CveVentaDetalleRemision:=Dr("CveVentaDetalleRemision").ToString().ToEntero(), FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=-3) Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar los conceptos con serie. Por favor vuelva a intentar.") - Exit For - End If - Next - ElseIf DtDetalleLote.Rows.Count > 0 Then - For Each Dr1 As DataRow In DtDetalleLote.Rows - If TipoMovimiento = 2 AndAlso DtExistencias IsNot Nothing Then - 'CveSeccionAlmacen = DtExistencias.FiltroPrimeroValor("CveSeccionAlmacen", $"CvePS = {Dr("CvePS")} AND CveUM = {Dr("CveUM").ToString().ToEntero()} AND Serie = '{Dr1("Serie").ToString()}'").ToString().ToEntero - PU = DtExistencias.FiltroPrimeroValor("PU", $"CvePS = {Dr("CvePS")} AND CveUM = {Dr("CveUM").ToString().ToEntero()} AND Serie = '{Dr1("Serie").ToString()}'").ToString().ToDecimal - End If - - If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr1("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), PU, CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), CveVentaDetalleRemision:=Dr("CveVentaDetalleRemision").ToString().ToEntero(), FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=-3) Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar los conceptos con serie. Por favor vuelva a intentar.") - Exit For - End If - Next - Else - If TipoMovimiento = 2 AndAlso DtExistencias IsNot Nothing Then - PU = DtExistencias.FiltroPrimeroValor("PU", $"CvePS = {Dr("CvePS")} AND CveUM = {Dr("CveUM").ToString().ToEntero()}").ToString().ToDecimal - End If - - If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, CantidadPendiente, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), PU, CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), CveVentaDetalleRemision:=Dr("CveVentaDetalleRemision").ToString().ToEntero(), FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=-3) Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de salida. Por favor vuelva a intentar.") - Exit For - End If - End If - 'If ObjInventario.CveMovimientoDetalle > 0 AndAlso DtSeccionAlmacen.Rows.Count > 0 Then - ' For Each Dr2 As DataRow In DtSeccionAlmacen.FiltraParametros($"IndexSeccionAlmacen = {Cont}").Rows - ' If Not ObjInventario.AddMovimientosDetalleSeccionesAlmacen(ObjInventario.CveMovimientoDetalle, Dr2("CveSeccionAlmacen").ToString().ToEntero(), -Dr2("CantidadSeccionAlmacen").ToString().ToDecimal) Then - ' ErrorMovInv = True - ' TextoError = "Ocurrió un error al procesar las secciones de almacen. Por favor vuelva a intentar." - ' Exit For - ' End If - ' Next - 'End If - Cont += 1 - End If - Next - Else - ErrorMovInv = True - End If - - 'ENTRADA POR TRASPASO CUANDO ES REMISION - If Not ErrorMovInv Then - If tCveAlmacenTraspasoDestino > 0 AndAlso Not (TipoMovimiento = 2 And TipoDocto = "Dev" And EsDevolucionVenta = 1) Then ' TRASPASO CUANDO ES REMISION - CveMovimientoEntrada = ObjInventario.AddMovimiento(tCveAlmacenTraspasoDestino, 9, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, Observaciones:=TxtObservaciones.Text.Trim, Guia:=Guia, CveContrato:=CveContrato, - CveMovimientoRelacionado:=CveMovimiento, CveAlmacenDestino:=DdlAlmacen.SelectedValue.ToEntero(), Modulo:="RE/G8") - FolioEntrada = ObjInventario.Folio - Dim ImporteAlmacen As Decimal = 0 - - If CveMovimientoEntrada <= 0 Then - TextoError.AppendFormat("No se pudo generar el movimiento de entrada correctamente") - ErrorMovInv = True - Else - If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then - ImporteAlmacen = ObjInventario.DtResultados.SUMD("Total").RoundSQL - - For Each Dr As DataRow In ObjInventario.DtResultados.Rows - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), Dr("PU").ToString().ToDecimal, CveAF:=Dr("CveAF").ToString().ToEntero(), CveSeccionAlmacen:=-3, Serie:=Dr("Serie").ToString(), Lote:=Dr("Lote").ToString(), FechaCaducidad:=Dr("FechaCaducidad").ToString().ToDate, CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), EsInterno:=EsInterno, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString().ToEntero()) Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al guardar los movimientos de entrada") - Exit For - End If - Next - - Else - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al guardar los movimientos de entrada") - End If - End If - - 'se registra + End If + + CveMovimiento = ObjInventario.AddMovimiento(Almacen1, ConceptoMovimiento, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, Observaciones:=TxtObservaciones.Text.Trim, Guia:=Guia, Recibio:=Recibio, + CveContrato:=CveContrato, CveAlmacenDestino:=tCveAlmacenTraspasoDestino, Modulo:="RE/G7") + Folio = ObjInventario.Folio + + 'SALIDA DE ALMACEN - SALIDA POR TRASPASO CUANDO ES REMISION - DEVOLUCION (SI ES TRASPASO Y TIENE CONTRATO NO HACE DEVOLUCIóN) + 'If Not (CveContrato > 0 And CveAlmacenTraspasoDestino > 0) Then + If CveMovimiento > 0 Then + + 'SACA LO DE TRASPASOS - APARTADO + For Each Dr1 As DataRow In DtTraspasos.Select("CveTipoAlmacen = 9") + CveMovimientoSalida = Dr1("CveMovimientoEntrada").ToString().ToEntero() + If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then + If ObjInventario.DtResultados.Rows.Count = 0 Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error, no se tienen registros que ingresar") + Exit Sub + End If + For Each Dr As DataRow In ObjInventario.DtResultados.Rows + + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), Dr("PU").ToString().ToDecimal, CveAF:=Dr("CveAF").ToString().ToEntero(), Serie:=Dr("Serie").ToString(), CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString().ToEntero(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=-3, EsInterno:=EsInterno) Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") + Exit For + End If + Next + Else + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al obtener los registros") + End If + If ErrorMovInv Then Exit For + Next + + 'ES EL MOVIMIENTO PRINCIPAL + CantidadPendiente = 0 + Dim Cont As Integer = 0 + For Each Dr As DataRow In DtDatos.Rows + CantidadPendiente = Dr("CantidadGV").ToString().ToDecimal - Dr("CantidadTraspaso").ToString().ToDecimal - CantidadEntradaSinCosto + If CantidadPendiente > 0 Then + Dim PU As Decimal = 0 + Dim CveSeccionAlmacen As Integer = If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString().ToEntero(), -1) + + 'SI FUE POR SERIE + DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0} AND FueTraspaso IS NULL", Dr("Consec"))) + DtDetalleLote = DtDatosDetalleLote.FiltraParametros(String.Format("ConsecId = {0} AND FueTraspaso IS NULL", Dr("Consec"))) + If DtDetalle.Rows.Count > 0 Then + For Each Dr1 As DataRow In DtDetalle.Rows + If TipoMovimiento = 2 AndAlso DtExistencias IsNot Nothing Then + 'CveSeccionAlmacen = DtExistencias.FiltroPrimeroValor("CveSeccionAlmacen", $"ISNULL(CveTipoAlmacenDevolucion,0) <> 26 AND CvePS = {Dr("CvePS")} AND CveUM = {Dr("CveUM").ToString().ToEntero()} AND Serie = '{Dr1("Serie").ToString()}'").ToString().ToEntero + + PU = DtExistencias.FiltroPrimeroValor("PU", $"ISNULL(CveTipoAlmacenDevolucion,-1) <> 26 AND CvePS = {Dr("CvePS")} AND CveUM = {Dr("CveUM").ToString().ToEntero()} AND Serie = '{Dr1("Serie").ToString()}'").ToString().ToDecimal + End If + + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, 1, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), PU, Serie:=Dr1("Serie").ToString(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), CveVentaDetalleRemision:=Dr("CveVentaDetalleRemision").ToString().ToEntero(), FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=-3) Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar los conceptos con serie. Por favor vuelva a intentar.") + Exit For + End If + Next + ElseIf DtDetalleLote.Rows.Count > 0 Then + For Each Dr1 As DataRow In DtDetalleLote.Rows + If TipoMovimiento = 2 AndAlso DtExistencias IsNot Nothing Then + 'CveSeccionAlmacen = DtExistencias.FiltroPrimeroValor("CveSeccionAlmacen", $"CvePS = {Dr("CvePS")} AND CveUM = {Dr("CveUM").ToString().ToEntero()} AND Serie = '{Dr1("Serie").ToString()}'").ToString().ToEntero + PU = DtExistencias.FiltroPrimeroValor("PU", $"CvePS = {Dr("CvePS")} AND CveUM = {Dr("CveUM").ToString().ToEntero()} AND Serie = '{Dr1("Serie").ToString()}'").ToString().ToDecimal + End If + + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr1("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), PU, CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), CveVentaDetalleRemision:=Dr("CveVentaDetalleRemision").ToString().ToEntero(), FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=-3) Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar los conceptos con serie. Por favor vuelva a intentar.") + Exit For + End If + Next + Else + If TipoMovimiento = 2 AndAlso DtExistencias IsNot Nothing Then + PU = DtExistencias.FiltroPrimeroValor("PU", $"CvePS = {Dr("CvePS")} AND CveUM = {Dr("CveUM").ToString().ToEntero()}").ToString().ToDecimal + End If + + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, CantidadPendiente, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), PU, CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), CveVentaDetalleRemision:=Dr("CveVentaDetalleRemision").ToString().ToEntero(), FechaCaducidad:=If(CBool(Dr("AplicaCaducidad")), Dr("FechaCaducidad").ToString().ToDate, MinFecha), Lote:=If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1"), CveSeccionAlmacen:=-3) Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de salida. Por favor vuelva a intentar.") + Exit For + End If + End If + 'If ObjInventario.CveMovimientoDetalle > 0 AndAlso DtSeccionAlmacen.Rows.Count > 0 Then + ' For Each Dr2 As DataRow In DtSeccionAlmacen.FiltraParametros($"IndexSeccionAlmacen = {Cont}").Rows + ' If Not ObjInventario.AddMovimientosDetalleSeccionesAlmacen(ObjInventario.CveMovimientoDetalle, Dr2("CveSeccionAlmacen").ToString().ToEntero(), -Dr2("CantidadSeccionAlmacen").ToString().ToDecimal) Then + ' ErrorMovInv = True + ' TextoError = "Ocurrió un error al procesar las secciones de almacen. Por favor vuelva a intentar." + ' Exit For + ' End If + ' Next + 'End If + Cont += 1 + End If + Next + Else + ErrorMovInv = True + End If + + 'ENTRADA POR TRASPASO CUANDO ES REMISION + If Not ErrorMovInv Then + If tCveAlmacenTraspasoDestino > 0 AndAlso Not (TipoMovimiento = 2 And TipoDocto = "Dev" And EsDevolucionVenta = 1) Then ' TRASPASO CUANDO ES REMISION + CveMovimientoEntrada = ObjInventario.AddMovimiento(tCveAlmacenTraspasoDestino, 9, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, Observaciones:=TxtObservaciones.Text.Trim, Guia:=Guia, CveContrato:=CveContrato, + CveMovimientoRelacionado:=CveMovimiento, CveAlmacenDestino:=DdlAlmacen.SelectedValue.ToEntero(), Modulo:="RE/G8") + FolioEntrada = ObjInventario.Folio + Dim ImporteAlmacen As Decimal = 0 + + If CveMovimientoEntrada <= 0 Then + TextoError.AppendFormat("No se pudo generar el movimiento de entrada correctamente") + ErrorMovInv = True + Else + If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then + ImporteAlmacen = ObjInventario.DtResultados.SUMD("Total").RoundSQL + + For Each Dr As DataRow In ObjInventario.DtResultados.Rows + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), Dr("PU").ToString().ToDecimal, CveAF:=Dr("CveAF").ToString().ToEntero(), CveSeccionAlmacen:=-3, Serie:=Dr("Serie").ToString(), Lote:=Dr("Lote").ToString(), FechaCaducidad:=Dr("FechaCaducidad").ToString().ToDate, CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), EsInterno:=EsInterno, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString().ToEntero()) Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al guardar los movimientos de entrada") + Exit For + End If + Next + + Else + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al guardar los movimientos de entrada") + End If + End If + + 'se registra If Not ErrorMovInv Then If ContabilizaMovimientoAlmacen(ObjConta, TxtFecha.Text.ToDate, HLFolio.Text, "EntregaAlmacen", CveMovimiento, CveMovimientoEntrada, ImporteAlmacen, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, False) <= 0 Then ErrorMovInv = True End If End If - Else 'REGISTRO LA PREPOLIZA DE COSTO VS ALMACEN - SALIDA ALMACEN - ErrorMovInv = Not GenerarPrePoliza(ObjInventario, ObjVentas, ObjConta, CveMovimiento, TextoError) - End If - - End If - - End If - - - 'DEVOLUCION APARTADOS - If Not ErrorMovInv Then - If TipoMovimiento = 2 Then - If ObjInventario.VentasAlmacenApartadosGet(CveVentaSurtir) Then - - Dim DtTempApartados As DataTable = ObjInventario.DtResultados.FiltraParametros("CveTipoAlmacen = 9", "CveAlmacen") - Dim CveMovimientoSalidaApartado As Integer = -1 - Dim CveAlmacenApartado As Integer = -1 - Dim CveAlmacenOrigen As Integer = If(CveAlmacenTraspasoDestino > 0, CveAlmacenTraspasoDestino, DdlAlmacen.SelectedValue.ToEntero()) - Dim CveSeccionAlmacen As Integer = 0 - Dim ValorTraspaso As Decimal = 0 - If DtTempApartados IsNot Nothing AndAlso DtTempApartados.Rows.Count > 0 Then - For Each Dr As DataRow In DtTempApartados.Rows - - If CveMovimientoSalidaApartado = -1 Or CveAlmacenApartado <> Dr("CveAlmacen").ToString().ToEntero() Then - CveMovimientoSalidaApartado = ObjInventario.AddMovimiento(CveAlmacenOrigen, 8, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, - Observaciones:=TxtObservaciones.Text.Trim, Guia:=Guia, CveContrato:=CveContrato, CveVendedor:=CveVendedor, CveCliente:=CveCliente, - CveAlmacenDestino:=Dr("CveAlmacen").ToString().ToEntero(), Modulo:="RE/G9") - FolioSalida = ObjInventario.Folio - CveAlmacenApartado = Dr("CveAlmacen").ToString().ToEntero() - - Dim DrMovto As DataRow = DtTraspasos.NewRow - DrMovto("Almacen") = Dr("Almacen").ToString().ToEntero() - DrMovto("CveAlmacen") = Dr("CveAlmacen").ToString().ToEntero() - DrMovto("CveMovimientoSalida") = CveMovimientoSalidaApartado - DrMovto("FolioSalida") = FolioSalida - DtTraspasos.Rows.Add(DrMovto) - End If - - If Not CveMovimientoSalidaApartado > 0 Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al guardar los movimientos de control de apartados") - Exit For - End If - 'If CBool(Dr("AplicaSeccion")) Then - ' CveSeccionAlmacen = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, CveAlmacenOrigen, Dr("CvePS").ToString().ToEntero()).FiltroPrimeroValor("CveSeccionAlmacen").ToEntero() - ' Dim a As String = String.Format("CveAlmacen={0}-CvePS:{1}-CveseccionAlmacen={2}", CveAlmacenOrigen, Dr("CvePS"), CveSeccionAlmacen) - 'Else - ' CveSeccionAlmacen = -1 - 'End If - CveSeccionAlmacen = -3 - - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalidaApartado, Dr("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), Dr("PU").ToString().ToDecimal, CveAF:=Dr("CveAF").ToString().ToEntero(), Serie:=Dr("Serie").ToString(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), Lote:=Dr("Lote").ToString(), CveSeccionAlmacen:=CveSeccionAlmacen) Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al guardar los movimientos de control de apartados") - Exit For - End If - Next - - If Not ErrorMovInv Then - - Dim CvePrePolizaTraspaso As Integer = ObjConta.AddPrePolizas("EA/Apart", 53, 0, 0, 1, TxtFecha.Text.ToDate, "Traspaso Apartado", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) - If CvePrePolizaTraspaso > 0 Then - - If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTraspaso, True, ValorTraspaso, ValorTraspaso, 68, TxtObservaciones.Text, TxtObservaciones.Text, CveMovimientoAlmacen:=CveMovimientoSalidaApartado, Contabilizable:=False) Then - ErrorMovInv = True - End If - - For Each Dr1 As DataRow In DtTraspasos.Rows - CveMovimientoSalida = Dr1("CveMovimientoSalida").ToString().ToEntero() - - CveMovimientoEntradaApartado = ObjInventario.AddMovimiento(Dr1("CveAlmacen").ToString().ToEntero(), 9, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, - -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, Observaciones:=TxtObservaciones.Text.Trim, CveAlmacenDestino:=DdlAlmacen.SelectedValue.ToEntero(), - CveMovimientoRelacionado:=CveMovimientoSalida, Guia:=Guia, CveContrato:=CveContrato, CveVendedor:=CveVendedor, - CveCliente:=CveCliente, Modulo:="RE/G10") - FolioEntrada = ObjInventario.Folio - - If Not CveMovimientoEntradaApartado > 0 Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.") - Exit For - End If - - Dr1("CveMovimientoEntrada") = CveMovimientoEntradaApartado - Dr1("FolioEntrada") = FolioEntrada - - If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then - ValorTraspaso = ObjInventario.DtResultados.SUMD("Total").RoundSQL - For Each Dr As DataRow In ObjInventario.DtResultados.Rows - - CveSeccionAlmacen = -3 - - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntradaApartado, Dr("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), Dr("PU").ToString().ToDecimal, CveAF:=Dr("CveAF").ToString().ToEntero(), Serie:=Dr("Serie").ToString(), CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString().ToEntero(), Lote:=Dr("Lote").ToString(), CveSeccionAlmacen:=CveSeccionAlmacen) Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") - Exit For - End If - Next - End If - - If ErrorMovInv Then Exit For - - If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTraspaso, False, ValorTraspaso, ValorTraspaso, 68, TxtObservaciones.Text, TxtObservaciones.Text, CveMovimientoAlmacen:=CveMovimientoEntradaApartado, Contabilizable:=False) Then - ErrorMovInv = True - End If - Next - - - Else - ErrorMovInv = True - End If - End If - End If - End If - End If - End If - - 'QUEMAR REMISIONES - If Not ErrorMovInv And EsDevolucionVenta = 1 And TipoDocto = "Ing" Then - Dim DtDevRem As New DataTable - - 'CARGA REMISIONES DE LA VENTA DEVUELTA - If ObjInventario.GetDevolucionRemisionesFacturadas(CveVentaSurtir) Then - DtDevRem = ObjInventario.DtResultados.FiltraParametros("CantidadAlmacen = 0") - Else - ErrorMovInv = True - End If - - If Not ErrorMovInv Then - If DtDevRem.Rows.Count > 0 Then - For Each DrMovtos As DataRow In DtDevRem.FiltraParametros("", "CveRem", {"CveRem"}).Rows - If Not ObjInventario.ActualizarEsDevolucionVenta(DrMovtos("CveRem").ToString().ToEntero(), 2) Then - TextoError.AppendFormat("Ocurrió un error al hacer la devolución hacia la remision. Por favor vuelva a intentar.") - ErrorMovInv = True - Exit For - End If - Next - End If - Else - TextoError.AppendFormat("Ocurrió un error al hacer la devolucion a remisión. Por favor vuelva a intentar.") - ErrorMovInv = True - End If - - End If - - 'QUEMA DEVOLUCION | QUEMA = LA QUITA DE PENDIENTE POR RECIBIR (DEVOLVER) - If Not ErrorMovInv And EsDevolucionVenta = 1 Then - If Not ObjVentas.UpdateVentasDevolucionAlmacen(2, CveVentaSurtir) Then - TextoError.AppendFormat("Ocurrió un error al hacer la devolución. Por favor vuelva a intentar.") - ErrorMovInv = True - End If - End If - - If Not ErrorMovInv And EsDevolucionVenta = 0 Then - If Not ObjVentas.UpdateVentasDevolucionAlmacen(0, CveVentaSurtir) Then - TextoError.AppendFormat("Ocurrió un error al hacer la devolucion. Por favor vuelva a intentar.") - ErrorMovInv = True - End If - End If - - If Not ErrorMovInv And EsDevolucionVenta = 0 AndAlso TipoDocto = "RNC" Then - If Not ObjVentas.UpdateVentasDevolucionAlmacen(2, CveVentaSurtir) Then - TextoError.AppendFormat("Ocurrió un error al hacer la devolucion. Por favor vuelva a intentar.") - ErrorMovInv = True - End If - End If - - Dim TotalVirtual As Decimal = 0 - - ' COMIENZA: VIRTUAL - If Not ErrorMovInv AndAlso TipoDocto.Contiene("Ing", "Dev") AndAlso UsuarioActual.Empresa.Funcionalidad(573) = "1" AndAlso CveMovimiento > 0 Then - Dim DtPSVirtual As New DataTable("DtTamanios") - Dim tCveAlmacen As Integer = -1 - - If ObjInventario.GetMovimientos(CveMovimiento, -1, -1, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then - tCveAlmacen = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen").ToEntero() - End If - - If ObjInventario.GetMovimientosDetalleVirtual(CveMovimiento, UsuarioActual.CveEmpresa) Then - DtPSVirtual = ObjInventario.DtResultados - End If - - ' - 'DtPSVirtual.Columns.Add(New DataColumn("CvePS", GetType(Integer))) - 'DtPSVirtual.Columns.Add(New DataColumn("Cantidad", GetType(Decimal))) - 'DtPSVirtual.Columns.Add(New DataColumn("PU", GetType(Decimal))) - 'DtPSVirtual.Columns.Add(New DataColumn("CveUM", GetType(Integer))) - - 'Dim DtTamanios As DataTable = Nothing - - 'If ObjAcumuladores.TamañoGet(-1, UsuarioActual.CveEmpresa) Then - ' DtTamanios = ObjAcumuladores.DtResultados.Copy() - 'End If - - Dim CveConceptoMovimientoVirtual As Integer = -1 - Dim CveAlmacenVirtual As Integer = -1 - Dim CveMovimientoRelacionadoVirtual As Integer = CveMovimiento - Dim ValidaVirtual As Boolean = False - CveAlmacenVirtual = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=tCveAlmacen).FiltroPrimeroValor("CveAlmacenVirtual").ToEntero() - - If TipoMovimiento = 1 Then - CveConceptoMovimientoVirtual = 37 - ElseIf TipoMovimiento = 2 Then - ValidaVirtual = True - CveConceptoMovimientoVirtual = 36 - End If - - 'SI NO TIENE ALMACEN VIRTUAL ASIGNADO NO GENERA EL MOVIMIENTO VIRTUAL - If CveAlmacenVirtual <= 0 Then - ValidaVirtual = False - End If - - 'SI NO APLICA VIRTUAL EN LOS PRODUCTOS NO VALIDA - If CveAlmacenVirtual > 0 AndAlso DtPSVirtual IsNot Nothing AndAlso DtPSVirtual.Rows.Count = 0 Then - ValidaVirtual = False - End If - - If DtPSVirtual IsNot Nothing AndAlso DtPSVirtual.Rows.Count > 0 AndAlso CveAlmacenVirtual > 0 AndAlso CveConceptoMovimientoVirtual > 0 Then - CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirtual, CveConceptoMovimientoVirtual, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, - Observaciones:=TxtObservaciones.Text.Trim, Guia:=Guia, CveMovimientoRelacionado:=CveMovimientoRelacionadoVirtual, Modulo:="RE/G6") - FolioVirtual = ObjInventario.Folio - - If CveMovimientoVirtual > 0 Then - Dim TmpDTDetalleFactura As DataTable = Nothing - If ObjVentas.GetVentaDetalle(CveVentaSurtir) Then - TmpDTDetalleFactura = ObjVentas.DtResultados.Copy() - End If - - For Each RowUsado As DataRow In DtPSVirtual.Rows - Dim CvePS As Integer = RowUsado("CvePS").ToString().ToEntero() - Dim CantidadUsado As Decimal = RowUsado("Cantidad").ToString().ToDecimal() - Dim PU As Decimal = RowUsado("Cargo").ToString().ToDecimal() - Dim CveUM As Integer = RowUsado("CveUM").ToString().ToEntero() - - Dim CveVentaDetalle As Integer = -1 - If TmpDTDetalleFactura IsNot Nothing Then - CveVentaDetalle = TmpDTDetalleFactura.FiltroPrimeroValor("CveVentaDetalle", $"Cantidad = {RowUsado("Cantidad")} AND CvePS = {RowUsado("CvePS")}").ToEntero() - If CveVentaDetalle <= 0 Then - CveVentaDetalle = -1 - End If - End If - - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtual, CantidadUsado, CveUM, CvePS, PU, CveVentaDetalle:=CveVentaDetalle) Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") - Exit For - End If - TotalVirtual += (CantidadUsado * PU) - Next - 'insertar en prepóliza de la salida virtual - If Not ErrorMovInv Then - ErrorMovInv = Not GenerarPrePoliza(ObjInventario, ObjVentas, ObjConta, CveMovimientoVirtual, TextoError) - - End If - - Else - ErrorMovInv = True - End If - - Else - If ValidaVirtual Then - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un error al procesar el movimiento en almacen virtual. Por favor vuelva a intentar.") - - End If - End If - - If DtPSVirtual.Rows.Count = 0 AndAlso ValidaVirtual = True Then - ErrorMovInv = True - TextoError.AppendFormat("No se tienen productos para el almacen virtual.") - End If - End If - - ' TERMINA: VIRTUAL - - - 'AGREGA BITACORA A VENTA - If Not ErrorMovInv Then - Dim MensajeBitacora As String = If(TipoMovimiento = 1, "Surtida", "Devuelta") - Dim LigaVenta As String = String.Format("Venta {2} en Folio: {1}", CveMovimiento, Folio, MensajeBitacora) - - If Not ObjEventos.AddEventoBitacora(LigaVenta, "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVentaSurtir, CveOS:=CveOSSurtir) Then - ErrorMovInv = True - End If - - End If - - 'Paqueterias guias - If RbEntregaInterna.Checked AndAlso Not ErrorMovInv Then - Dim CveEstatus As Integer = 1 ' DdlEstatus.SelectedValue.ToEntero() - Dim Fecha As String = NowADS().ToString() 'TxtFechaPaqInterna.Text - Dim FechaEstimada As String = "-1" 'If(TxtFechaEstimada.Text = "", "-1", TxtFechaEstimada.Text) - Dim NoCajas As Integer = 0 'TxtNoCajas.Text.ToEntero() - Dim Observaciones As String = "" 'TxtObservacionesPaqInterna.Text - Dim CvePaqueteria As Integer = GlobalDTPaqueterias(UsuarioActual.CveEmpresa, 0).FiltroPrimeroValor("CvePaqueteria", "").ToEntero() - - If CveSubProyecto > 0 Then - Dim CvePaqueteriaGuia As Integer = ObjGeneral.AddPaqueteriasGuias(CvePaqueteria, 9, CveEstatus, CveSubProyecto, Fecha, "", "", NoCajas, 0.00, "-1", FechaEstimada, Observaciones, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, EsEntregaInterna:=True) - - If CvePaqueteriaGuia > 0 Then - - If CveVentaSurtir > 0 OrElse CveSubProyecto > 0 Then - If Not ObjGeneral.AddPaqueteriasGuiasDetalles(CvePaqueteriaGuia, CveVentaSurtir, -1, CveMovimientoSalida, -1) Then - ''manda correo - ErrorMovInv = True - End If - End If - If ErrorMovInv Then - Alert("Error en el paqueteria guia detalle", TipoMensaje.MsgError) - End If - Else - ErrorMovInv = True - Alert("Error en el paqueteria guia", TipoMensaje.MsgError) - End If - Else - Alert("Hace falta indicar un Sub Proyecto", TipoMensaje.MsgAdvertencia) - ErrorMovInv = True - End If - ElseIf RbSinEntrega.Checked AndAlso Not ErrorMovInv Then - MandaCorreoEntrega(CveVentaSurtir) - End If - Catch ex As Exception - ErrorMovInv = True - OnError("Ocurrió un error al guardar", ex) - End Try - + Else 'REGISTRO LA PREPOLIZA DE COSTO VS ALMACEN - SALIDA ALMACEN + ErrorMovInv = Not GenerarPrePoliza(ObjInventario, ObjVentas, ObjConta, CveMovimiento, TextoError) + End If + + End If + + End If + + + 'DEVOLUCION APARTADOS + If Not ErrorMovInv Then + If TipoMovimiento = 2 Then + If ObjInventario.VentasAlmacenApartadosGet(CveVentaSurtir) Then + + Dim DtTempApartados As DataTable = ObjInventario.DtResultados.FiltraParametros("CveTipoAlmacen = 9", "CveAlmacen") + Dim CveMovimientoSalidaApartado As Integer = -1 + Dim CveAlmacenApartado As Integer = -1 + Dim CveAlmacenOrigen As Integer = If(CveAlmacenTraspasoDestino > 0, CveAlmacenTraspasoDestino, DdlAlmacen.SelectedValue.ToEntero()) + Dim CveSeccionAlmacen As Integer = 0 + Dim ValorTraspaso As Decimal = 0 + If DtTempApartados IsNot Nothing AndAlso DtTempApartados.Rows.Count > 0 Then + For Each Dr As DataRow In DtTempApartados.Rows + + If CveMovimientoSalidaApartado = -1 Or CveAlmacenApartado <> Dr("CveAlmacen").ToString().ToEntero() Then + CveMovimientoSalidaApartado = ObjInventario.AddMovimiento(CveAlmacenOrigen, 8, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, + Observaciones:=TxtObservaciones.Text.Trim, Guia:=Guia, CveContrato:=CveContrato, CveVendedor:=CveVendedor, CveCliente:=CveCliente, + CveAlmacenDestino:=Dr("CveAlmacen").ToString().ToEntero(), Modulo:="RE/G9") + FolioSalida = ObjInventario.Folio + CveAlmacenApartado = Dr("CveAlmacen").ToString().ToEntero() + + Dim DrMovto As DataRow = DtTraspasos.NewRow + DrMovto("Almacen") = Dr("Almacen").ToString().ToEntero() + DrMovto("CveAlmacen") = Dr("CveAlmacen").ToString().ToEntero() + DrMovto("CveMovimientoSalida") = CveMovimientoSalidaApartado + DrMovto("FolioSalida") = FolioSalida + DtTraspasos.Rows.Add(DrMovto) + End If + + If Not CveMovimientoSalidaApartado > 0 Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al guardar los movimientos de control de apartados") + Exit For + End If + 'If CBool(Dr("AplicaSeccion")) Then + ' CveSeccionAlmacen = GlobalDTInvPSSeccionesAlmacen(UsuarioActual.CveEmpresa, CveAlmacenOrigen, Dr("CvePS").ToString().ToEntero()).FiltroPrimeroValor("CveSeccionAlmacen").ToEntero() + ' Dim a As String = String.Format("CveAlmacen={0}-CvePS:{1}-CveseccionAlmacen={2}", CveAlmacenOrigen, Dr("CvePS"), CveSeccionAlmacen) + 'Else + ' CveSeccionAlmacen = -1 + 'End If + CveSeccionAlmacen = -3 + + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalidaApartado, Dr("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), Dr("PU").ToString().ToDecimal, CveAF:=Dr("CveAF").ToString().ToEntero(), Serie:=Dr("Serie").ToString(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), Lote:=Dr("Lote").ToString(), CveSeccionAlmacen:=CveSeccionAlmacen) Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al guardar los movimientos de control de apartados") + Exit For + End If + Next + + If Not ErrorMovInv Then + + Dim CvePrePolizaTraspaso As Integer = ObjConta.AddPrePolizas("EA/Apart", 53, 0, 0, 1, TxtFecha.Text.ToDate, "Traspaso Apartado", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + If CvePrePolizaTraspaso > 0 Then + + If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTraspaso, True, ValorTraspaso, ValorTraspaso, 68, TxtObservaciones.Text, TxtObservaciones.Text, CveMovimientoAlmacen:=CveMovimientoSalidaApartado, Contabilizable:=False) Then + ErrorMovInv = True + End If + + For Each Dr1 As DataRow In DtTraspasos.Rows + CveMovimientoSalida = Dr1("CveMovimientoSalida").ToString().ToEntero() + + CveMovimientoEntradaApartado = ObjInventario.AddMovimiento(Dr1("CveAlmacen").ToString().ToEntero(), 9, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, + -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, Observaciones:=TxtObservaciones.Text.Trim, CveAlmacenDestino:=DdlAlmacen.SelectedValue.ToEntero(), + CveMovimientoRelacionado:=CveMovimientoSalida, Guia:=Guia, CveContrato:=CveContrato, CveVendedor:=CveVendedor, + CveCliente:=CveCliente, Modulo:="RE/G10") + FolioEntrada = ObjInventario.Folio + + If Not CveMovimientoEntradaApartado > 0 Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar los movimientos de traspaso de apartado. Por favor vuelva a intentar.") + Exit For + End If + + Dr1("CveMovimientoEntrada") = CveMovimientoEntradaApartado + Dr1("FolioEntrada") = FolioEntrada + + If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then + ValorTraspaso = ObjInventario.DtResultados.SUMD("Total").RoundSQL + For Each Dr As DataRow In ObjInventario.DtResultados.Rows + + CveSeccionAlmacen = -3 + + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntradaApartado, Dr("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), Dr("PU").ToString().ToDecimal, CveAF:=Dr("CveAF").ToString().ToEntero(), Serie:=Dr("Serie").ToString(), CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString().ToEntero(), Lote:=Dr("Lote").ToString(), CveSeccionAlmacen:=CveSeccionAlmacen) Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") + Exit For + End If + Next + End If + + If ErrorMovInv Then Exit For + + If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTraspaso, False, ValorTraspaso, ValorTraspaso, 68, TxtObservaciones.Text, TxtObservaciones.Text, CveMovimientoAlmacen:=CveMovimientoEntradaApartado, Contabilizable:=False) Then + ErrorMovInv = True + End If + Next + + + Else + ErrorMovInv = True + End If + End If + End If + End If + End If + End If + + 'QUEMAR REMISIONES + If Not ErrorMovInv And EsDevolucionVenta = 1 And TipoDocto = "Ing" Then + Dim DtDevRem As New DataTable + + 'CARGA REMISIONES DE LA VENTA DEVUELTA + If ObjInventario.GetDevolucionRemisionesFacturadas(CveVentaSurtir) Then + DtDevRem = ObjInventario.DtResultados.FiltraParametros("CantidadAlmacen = 0") + Else + ErrorMovInv = True + End If + + If Not ErrorMovInv Then + If DtDevRem.Rows.Count > 0 Then + For Each DrMovtos As DataRow In DtDevRem.FiltraParametros("", "CveRem", {"CveRem"}).Rows + If Not ObjInventario.ActualizarEsDevolucionVenta(DrMovtos("CveRem").ToString().ToEntero(), 2) Then + TextoError.AppendFormat("Ocurrió un error al hacer la devolución hacia la remision. Por favor vuelva a intentar.") + ErrorMovInv = True + Exit For + End If + Next + End If + Else + TextoError.AppendFormat("Ocurrió un error al hacer la devolucion a remisión. Por favor vuelva a intentar.") + ErrorMovInv = True + End If + + End If + + 'QUEMA DEVOLUCION | QUEMA = LA QUITA DE PENDIENTE POR RECIBIR (DEVOLVER) + If Not ErrorMovInv And EsDevolucionVenta = 1 Then + If Not ObjVentas.UpdateVentasDevolucionAlmacen(2, CveVentaSurtir) Then + TextoError.AppendFormat("Ocurrió un error al hacer la devolución. Por favor vuelva a intentar.") + ErrorMovInv = True + End If + End If + + If Not ErrorMovInv And EsDevolucionVenta = 0 Then + If Not ObjVentas.UpdateVentasDevolucionAlmacen(0, CveVentaSurtir) Then + TextoError.AppendFormat("Ocurrió un error al hacer la devolucion. Por favor vuelva a intentar.") + ErrorMovInv = True + End If + End If + + If Not ErrorMovInv And EsDevolucionVenta = 0 AndAlso TipoDocto = "RNC" Then + If Not ObjVentas.UpdateVentasDevolucionAlmacen(2, CveVentaSurtir) Then + TextoError.AppendFormat("Ocurrió un error al hacer la devolucion. Por favor vuelva a intentar.") + ErrorMovInv = True + End If + End If + + Dim TotalVirtual As Decimal = 0 + + ' COMIENZA: VIRTUAL + If Not ErrorMovInv AndAlso TipoDocto.Contiene("Ing", "Dev") AndAlso UsuarioActual.Empresa.Funcionalidad(573) = "1" AndAlso CveMovimiento > 0 Then + Dim DtPSVirtual As New DataTable("DtTamanios") + Dim tCveAlmacen As Integer = -1 + + If ObjInventario.GetMovimientos(CveMovimiento, -1, -1, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0 Then + tCveAlmacen = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen").ToEntero() + End If + + If ObjInventario.GetMovimientosDetalleVirtual(CveMovimiento, UsuarioActual.CveEmpresa) Then + DtPSVirtual = ObjInventario.DtResultados + End If + + ' + 'DtPSVirtual.Columns.Add(New DataColumn("CvePS", GetType(Integer))) + 'DtPSVirtual.Columns.Add(New DataColumn("Cantidad", GetType(Decimal))) + 'DtPSVirtual.Columns.Add(New DataColumn("PU", GetType(Decimal))) + 'DtPSVirtual.Columns.Add(New DataColumn("CveUM", GetType(Integer))) + + 'Dim DtTamanios As DataTable = Nothing + + 'If ObjAcumuladores.TamañoGet(-1, UsuarioActual.CveEmpresa) Then + ' DtTamanios = ObjAcumuladores.DtResultados.Copy() + 'End If + + Dim CveConceptoMovimientoVirtual As Integer = -1 + Dim CveAlmacenVirtual As Integer = -1 + Dim CveMovimientoRelacionadoVirtual As Integer = CveMovimiento + Dim ValidaVirtual As Boolean = False + CveAlmacenVirtual = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=tCveAlmacen).FiltroPrimeroValor("CveAlmacenVirtual").ToEntero() + + If TipoMovimiento = 1 Then + CveConceptoMovimientoVirtual = 37 + ElseIf TipoMovimiento = 2 Then + ValidaVirtual = True + CveConceptoMovimientoVirtual = 36 + End If + + 'SI NO TIENE ALMACEN VIRTUAL ASIGNADO NO GENERA EL MOVIMIENTO VIRTUAL + If CveAlmacenVirtual <= 0 Then + ValidaVirtual = False + End If + + 'SI NO APLICA VIRTUAL EN LOS PRODUCTOS NO VALIDA + If CveAlmacenVirtual > 0 AndAlso DtPSVirtual IsNot Nothing AndAlso DtPSVirtual.Rows.Count = 0 Then + ValidaVirtual = False + End If + + If DtPSVirtual IsNot Nothing AndAlso DtPSVirtual.Rows.Count > 0 AndAlso CveAlmacenVirtual > 0 AndAlso CveConceptoMovimientoVirtual > 0 Then + CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirtual, CveConceptoMovimientoVirtual, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVentaSurtir, -1, -1, CveOS:=CveOSSurtir, + Observaciones:=TxtObservaciones.Text.Trim, Guia:=Guia, CveMovimientoRelacionado:=CveMovimientoRelacionadoVirtual, Modulo:="RE/G6") + FolioVirtual = ObjInventario.Folio + + If CveMovimientoVirtual > 0 Then + Dim TmpDTDetalleFactura As DataTable = Nothing + If ObjVentas.GetVentaDetalle(CveVentaSurtir) Then + TmpDTDetalleFactura = ObjVentas.DtResultados.Copy() + End If + + For Each RowUsado As DataRow In DtPSVirtual.Rows + Dim CvePS As Integer = RowUsado("CvePS").ToString().ToEntero() + Dim CantidadUsado As Decimal = RowUsado("Cantidad").ToString().ToDecimal() + Dim PU As Decimal = RowUsado("Cargo").ToString().ToDecimal() + Dim CveUM As Integer = RowUsado("CveUM").ToString().ToEntero() + + Dim CveVentaDetalle As Integer = -1 + If TmpDTDetalleFactura IsNot Nothing Then + CveVentaDetalle = TmpDTDetalleFactura.FiltroPrimeroValor("CveVentaDetalle", $"Cantidad = {RowUsado("Cantidad")} AND CvePS = {RowUsado("CvePS")}").ToEntero() + If CveVentaDetalle <= 0 Then + CveVentaDetalle = -1 + End If + End If + + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoVirtual, CantidadUsado, CveUM, CvePS, PU, CveVentaDetalle:=CveVentaDetalle) Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar los conceptos de traspaso de apartado. Por favor vuelva a intentar.") + Exit For + End If + TotalVirtual += (CantidadUsado * PU) + Next + 'insertar en prepóliza de la salida virtual + If Not ErrorMovInv Then + ErrorMovInv = Not GenerarPrePoliza(ObjInventario, ObjVentas, ObjConta, CveMovimientoVirtual, TextoError) + + End If + + Else + ErrorMovInv = True + End If + + Else + If ValidaVirtual Then + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un error al procesar el movimiento en almacen virtual. Por favor vuelva a intentar.") + + End If + End If + + If DtPSVirtual.Rows.Count = 0 AndAlso ValidaVirtual = True Then + ErrorMovInv = True + TextoError.AppendFormat("No se tienen productos para el almacen virtual.") + End If + End If + + ' TERMINA: VIRTUAL + + + 'AGREGA BITACORA A VENTA + If Not ErrorMovInv Then + Dim MensajeBitacora As String = If(TipoMovimiento = 1, "Surtida", "Devuelta") + Dim LigaVenta As String = String.Format("Venta {2} en Folio: {1}", CveMovimiento, Folio, MensajeBitacora) + + If Not ObjEventos.AddEventoBitacora(LigaVenta, "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVentaSurtir, CveOS:=CveOSSurtir) Then + ErrorMovInv = True + End If + + End If + + 'Paqueterias guias + If RbEntregaInterna.Checked AndAlso Not ErrorMovInv Then + Dim CveEstatus As Integer = 1 ' DdlEstatus.SelectedValue.ToEntero() + Dim Fecha As String = NowADS().ToString() 'TxtFechaPaqInterna.Text + Dim FechaEstimada As String = "-1" 'If(TxtFechaEstimada.Text = "", "-1", TxtFechaEstimada.Text) + Dim NoCajas As Integer = 0 'TxtNoCajas.Text.ToEntero() + Dim Observaciones As String = "" 'TxtObservacionesPaqInterna.Text + Dim CvePaqueteria As Integer = GlobalDTPaqueterias(UsuarioActual.CveEmpresa, 0).FiltroPrimeroValor("CvePaqueteria", "").ToEntero() + + If CveSubProyecto > 0 Then + Dim CvePaqueteriaGuia As Integer = ObjGeneral.AddPaqueteriasGuias(CvePaqueteria, 9, CveEstatus, CveSubProyecto, Fecha, "", "", NoCajas, 0.00, "-1", FechaEstimada, Observaciones, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, EsEntregaInterna:=True) + + If CvePaqueteriaGuia > 0 Then + + If CveVentaSurtir > 0 OrElse CveSubProyecto > 0 Then + If Not ObjGeneral.AddPaqueteriasGuiasDetalles(CvePaqueteriaGuia, CveVentaSurtir, -1, CveMovimientoSalida, -1) Then + ''manda correo + ErrorMovInv = True + End If + End If + If ErrorMovInv Then + Alert("Error en el paqueteria guia detalle", TipoMensaje.MsgError) + End If + Else + ErrorMovInv = True + Alert("Error en el paqueteria guia", TipoMensaje.MsgError) + End If + Else + Alert("Hace falta indicar un Sub Proyecto", TipoMensaje.MsgAdvertencia) + ErrorMovInv = True + End If + ElseIf RbSinEntrega.Checked AndAlso Not ErrorMovInv Then + MandaCorreoEntrega(CveVentaSurtir) + End If + Catch ex As Exception + ErrorMovInv = True + OnError("Ocurrió un error al guardar", ex) + End Try + If Not ErrorMovInv AndAlso EsDevolucionVenta = 1 AndAlso CveOSSurtir > 0 AndAlso TipoMovimiento = 2 AndAlso TipoDocto = "Ped" Then If Not CierreOS(CveOSSurtir, CveMovimiento, ObjInventario.IniciaTransacSQL) Then ErrorMovInv = True Alert("Error al finalizar orden de servicio", TipoMensaje.MsgError) End If - End If - - 'SI YA FUE DEVUELTO LA CANTIDAD COMPLETA DE LA DEVOLUCION,MARCAR PARA QUE NO APAREZCA + End If + + 'SI YA FUE DEVUELTO LA CANTIDAD COMPLETA DE LA DEVOLUCION,MARCAR PARA QUE NO APAREZCA If Not ErrorMovInv AndAlso Cantidad.RoundSQL(6) = CantidadVenta.RoundSQL(6) AndAlso TipoDocto = "Dev" Then If Not ObjVentas.UpdateVentasDevolucionAlmacen(2, CveVentaSurtir) Then TextoError.AppendFormat("Ocurrió un error al actualizar la devolucion.") ErrorMovInv = True End If - End If - - If Not ErrorMovInv Then - - ObjInventario.Commit() - ObjGeneral.Dispose() - RegistraScript("playsonidito('beep-07.wav')") - Dim Msg As New StringBuilder - - Msg.AppendFormat("Movimiento {2}: {1}", CveMovimiento, Folio, If(TipoMovimiento = 1, "Salida", "Entrada")) - Msg.AppendFormat("
    Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimiento))) + End If + + If Not ErrorMovInv Then + + ObjInventario.Commit() + ObjGeneral.Dispose() + RegistraScript("playsonidito('beep-07.wav')") + Dim Msg As New StringBuilder + + Msg.AppendFormat("Movimiento {2}: {1}", CveMovimiento, Folio, If(TipoMovimiento = 1, "Salida", "Entrada")) + Msg.AppendFormat("
    Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimiento))) If Consola.Trim.Length > 0 Then Msg.AppendFormat("
    Consola ", Encripta(String.Format("OP=Alm&CveMovimiento={0}&Consola={1}", CveMovimiento, Consola))) - End If - - If CveMovimientoEntrada > 0 AndAlso Not UsuarioActual.Empresa.Funcionalidad(578).ToEntero = 1 Then - Msg.AppendFormat("

    Movimiento Entrada (Traspaso): {1}", CveMovimientoEntrada, FolioEntrada) - Msg.AppendFormat("
    Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoEntrada))) - End If - - If DtTraspasos.FiltraParametros("CveTipoAlmacen=9").Rows.Count > 0 Then - Msg.AppendFormat("

    Movimientos de Control (Apartados):") - For Each Dr As DataRow In DtTraspasos.Rows - Msg.AppendFormat("
    Almacén {0} | Salida por Traspaso: {2} | Entrada por Traspaso: {4} ", Dr("Almacen"), Dr("CveMovimientoSalida"), Dr("FolioSalida"), Dr("CveMovimientoEntrada"), Dr("FolioEntrada")) - Next - End If - - If DtTraspasos.FiltraParametros("CveTipoAlmacen=26").Rows.Count > 0 Then - Msg.AppendFormat("

    Movimientos de Control (Sin Costo):") - For Each Dr As DataRow In DtTraspasos.FiltraParametros("CveConceptoMovimientoSalida=40").Rows - Msg.AppendFormat("
    Almacén {0} | Salida directa de almacen: {2} ", Dr("Almacen"), Dr("CveMovimientoSalida"), Dr("FolioSalida"), Dr("CveMovimientoEntrada"), Dr("FolioEntrada")) - Next - For Each Dr As DataRow In DtTraspasos.FiltraParametros("CveConceptoMovimientoSalida=8").Rows - Msg.AppendFormat("
    Almacén {0} | Salida por Traspaso: {2} ", Dr("Almacen"), Dr("CveMovimientoSalida"), Dr("FolioSalida"), Dr("CveMovimientoEntrada"), Dr("FolioEntrada")) - Next - End If - - If DtDevSinCosto.Rows.Count > 0 Then - Msg.AppendFormat("

    Movimientos de Control (Sin Costo):") - For Each Dr As DataRow In DtDevSinCosto.Rows - Msg.AppendFormat("
    Almacén {0} | Devolución directa de almacen: {2} ", Dr("Almacen"), Dr("CveMovimientoEntrada"), Dr("FolioEntrada")) - Next - End If - - If CveMovimientoGarantia > 0 Then - Msg.AppendFormat("
    Movimiento de Entrada (garantías): {1}", CveMovimientoGarantia, FolioGarantia) - Msg.AppendFormat("
    Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoGarantia))) - End If - - If CveMovimientoVirtual > 0 Then - Msg.AppendFormat("

    {0} Almacen Virtual: ", If(TipoMovimiento = 1, "Salida", "Entrada")) - Msg.AppendFormat("{1}", CveMovimientoVirtual, FolioVirtual) - Msg.AppendFormat("
    Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoVirtual))) - End If - - If RbEntregaInterna.Checked Then - Msg.AppendFormat("

    Se agregó una guía de paquetería interna") - End If - - 'SI NO ES GARANTIA MANDA A RECIBIR AL USADO - If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso TipoDocto.Contiene("Rem", "Ped") AndAlso CveMovimientoGarantia <= 0 Then - Msg.AppendFormat("

    Recibir Usado: Ir a Recepción de Usados", CveVentaSurtir) End If - Alert(Msg.ToString(), TipoMensaje.MsgInformacion) - - Limpia() - CargaPendientes() - LimpiaCampos() - CargaBitacora = False - Else - ObjInventario.RollBack() - Alert(TextoError.ToString(), TipoMensaje.MsgError) - RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") - End If - - ObjAcumuladores.Dispose() - ObjInventario.Dispose() - ObjConta.Dispose() - ObjVentas.Dispose() - ObjEventos.Dispose() - - End Sub - - Private Function GenerarPrePoliza(ByRef ObjInventario As ClsInventarios, ByRef ObjVentas As ClsVentas, ByRef ObjConta As ClsContabilidad, CveMovimiento As Integer, ByRef TextoError As StringBuilder) As Boolean - Dim ErrorMovInv As Boolean = False - Dim DtCostos As DataTable = Nothing - Dim ValorInventario As Decimal = 0 - If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then - DtCostos = ObjInventario.DtResultados - - Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"}) - If tmpCostos.Rows.Count > 0 Then - - If ObjVentas.GetVenta(CveVentaSurtir, UsuarioActual.CveEmpresa, False) Then - Dim Fecha As Date = TxtFecha.Text.ToDate ' If(TipoMovimiento <> 1, TxtFecha.Text.ToDate, ObjVentas.DtResultados(0)("Fecha").ToString().ToDate) - Dim CveCliente As Integer = ObjVentas.DtResultados(0)("CveCliente").ToString().ToEntero() - Dim ClienteNombre As String = ObjVentas.DtResultados(0)("ClienteNombre").ToString() - Dim Serie As String = ObjVentas.DtResultados(0)("SerieFolio").ToString() - Dim TotalCosto As Decimal = DtCostos.SUMD("Total").RoundSQL() - Dim TotalCostoAcumulado As Decimal = 0 - Dim cont As Integer = 1 - - Dim ValorMultiplicador As Decimal = 1 - - If TipoMovimiento = 1 Then - ValorMultiplicador = 1 - ElseIf TipoMovimiento = 2 AndAlso TipoDocto.Contiene({"Dev"}) AndAlso (EsDevolucionVenta = 1) Then - ValorMultiplicador = 1 - ElseIf TipoMovimiento = 2 Then - ValorMultiplicador = -1 - End If - - Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inventario/EntregaAlmacen", 4, TotalCosto, TotalCosto, 1, Fecha, ClienteNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) - 'Se agrega movimiento separado por la cuenta de ventas (ER) - - If CvePrePoliza > 0 Then - - For Each RowInv As DataRow In tmpCostos.Rows - ValorInventario = DtCostos.SUMD("Total", $"CveClasificacion = {RowInv("CveClasificacion")}").RoundSQL() - TotalCostoAcumulado += ValorInventario - - 'cuando es el último movimiento y hay diferencias en los importes - If cont = DtCostos.FiltraParametros("", "", {"CveClasificacion"}).Rows.Count AndAlso TotalCosto <> TotalCostoAcumulado Then - ValorInventario = ValorInventario + (TotalCosto - TotalCostoAcumulado) + If CveMovimientoEntrada > 0 AndAlso Not UsuarioActual.Empresa.Funcionalidad(578).ToEntero = 1 Then + Msg.AppendFormat("

    Movimiento Entrada (Traspaso): {1}", CveMovimientoEntrada, FolioEntrada) + Msg.AppendFormat("
    Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoEntrada))) + End If + + If DtTraspasos.FiltraParametros("CveTipoAlmacen=9").Rows.Count > 0 Then + Msg.AppendFormat("

    Movimientos de Control (Apartados):") + For Each Dr As DataRow In DtTraspasos.Rows + Msg.AppendFormat("
    Almacén {0} | Salida por Traspaso: {2} | Entrada por Traspaso: {4} ", Dr("Almacen"), Dr("CveMovimientoSalida"), Dr("FolioSalida"), Dr("CveMovimientoEntrada"), Dr("FolioEntrada")) + Next + End If + + If DtTraspasos.FiltraParametros("CveTipoAlmacen=26").Rows.Count > 0 Then + Msg.AppendFormat("

    Movimientos de Control (Sin Costo):") + For Each Dr As DataRow In DtTraspasos.FiltraParametros("CveConceptoMovimientoSalida=40").Rows + Msg.AppendFormat("
    Almacén {0} | Salida directa de almacen: {2} ", Dr("Almacen"), Dr("CveMovimientoSalida"), Dr("FolioSalida"), Dr("CveMovimientoEntrada"), Dr("FolioEntrada")) + Next + For Each Dr As DataRow In DtTraspasos.FiltraParametros("CveConceptoMovimientoSalida=8").Rows + Msg.AppendFormat("
    Almacén {0} | Salida por Traspaso: {2} ", Dr("Almacen"), Dr("CveMovimientoSalida"), Dr("FolioSalida"), Dr("CveMovimientoEntrada"), Dr("FolioEntrada")) + Next + End If + + If DtDevSinCosto.Rows.Count > 0 Then + Msg.AppendFormat("

    Movimientos de Control (Sin Costo):") + For Each Dr As DataRow In DtDevSinCosto.Rows + Msg.AppendFormat("
    Almacén {0} | Devolución directa de almacen: {2} ", Dr("Almacen"), Dr("CveMovimientoEntrada"), Dr("FolioEntrada")) + Next + End If + + If CveMovimientoGarantia > 0 Then + Msg.AppendFormat("
    Movimiento de Entrada (garantías): {1}", CveMovimientoGarantia, FolioGarantia) + Msg.AppendFormat("
    Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoGarantia))) + End If + + If CveMovimientoVirtual > 0 Then + Msg.AppendFormat("

    {0} Almacen Virtual: ", If(TipoMovimiento = 1, "Salida", "Entrada")) + Msg.AppendFormat("{1}", CveMovimientoVirtual, FolioVirtual) + Msg.AppendFormat("
    Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoVirtual))) + End If + + If RbEntregaInterna.Checked Then + Msg.AppendFormat("

    Se agregó una guía de paquetería interna") + End If + + 'SI NO ES GARANTIA MANDA A RECIBIR AL USADO + If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso TipoDocto.Contiene("Rem", "Ped") AndAlso CveMovimientoGarantia <= 0 Then + Msg.AppendFormat("

    Recibir Usado: Ir a Recepción de Usados", CveVentaSurtir) + End If + + Alert(Msg.ToString(), TipoMensaje.MsgInformacion) + + Limpia() + CargaPendientes() + LimpiaCampos() + CargaBitacora = False + Else + ObjInventario.RollBack() + Alert(TextoError.ToString(), TipoMensaje.MsgError) + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") + End If + + ObjAcumuladores.Dispose() + ObjInventario.Dispose() + ObjConta.Dispose() + ObjVentas.Dispose() + ObjEventos.Dispose() + + End Sub + + Private Function GenerarPrePoliza(ByRef ObjInventario As ClsInventarios, ByRef ObjVentas As ClsVentas, ByRef ObjConta As ClsContabilidad, CveMovimiento As Integer, ByRef TextoError As StringBuilder) As Boolean + Dim ErrorMovInv As Boolean = False + Dim DtCostos As DataTable = Nothing + Dim ValorInventario As Decimal = 0 + If ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then + DtCostos = ObjInventario.DtResultados + + Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"}) + If tmpCostos.Rows.Count > 0 Then + + If ObjVentas.GetVenta(CveVentaSurtir, UsuarioActual.CveEmpresa, False) Then + Dim Fecha As Date = TxtFecha.Text.ToDate ' If(TipoMovimiento <> 1, TxtFecha.Text.ToDate, ObjVentas.DtResultados(0)("Fecha").ToString().ToDate) + Dim CveCliente As Integer = ObjVentas.DtResultados(0)("CveCliente").ToString().ToEntero() + Dim ClienteNombre As String = ObjVentas.DtResultados(0)("ClienteNombre").ToString() + Dim Serie As String = ObjVentas.DtResultados(0)("SerieFolio").ToString() + Dim TotalCosto As Decimal = DtCostos.SUMD("Total").RoundSQL() + Dim TotalCostoAcumulado As Decimal = 0 + Dim cont As Integer = 1 + + Dim ValorMultiplicador As Decimal = 1 + + If TipoMovimiento = 1 Then + ValorMultiplicador = 1 + ElseIf TipoMovimiento = 2 AndAlso TipoDocto.Contiene({"Dev"}) AndAlso (EsDevolucionVenta = 1) Then + ValorMultiplicador = 1 + ElseIf TipoMovimiento = 2 Then + ValorMultiplicador = -1 + End If + + Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inventario/EntregaAlmacen", 4, TotalCosto, TotalCosto, 1, Fecha, ClienteNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + 'Se agrega movimiento separado por la cuenta de ventas (ER) + + If CvePrePoliza > 0 Then + + For Each RowInv As DataRow In tmpCostos.Rows + ValorInventario = DtCostos.SUMD("Total", $"CveClasificacion = {RowInv("CveClasificacion")}").RoundSQL() + TotalCostoAcumulado += ValorInventario + + 'cuando es el último movimiento y hay diferencias en los importes + If cont = DtCostos.FiltraParametros("", "", {"CveClasificacion"}).Rows.Count AndAlso TotalCosto <> TotalCostoAcumulado Then + ValorInventario = ValorInventario + (TotalCosto - TotalCostoAcumulado) End If - If Not ErrorMovInv Then - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ValorMultiplicador * ValorInventario, ValorMultiplicador * ValorInventario, 69, Serie, Serie, CveVenta:=CveVentaSurtir, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimiento, CveSubProyecto:=CveSubProyecto, CveClasificacion:=RowInv("CveClasificacion").ToString().ToEntero()) Then - ErrorMovInv = True - End If - End If - - cont += 1 - Next - Dim tCveSubProyectoAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacen.SelectedValue.ToEntero).FiltroPrimeroValor("CveSubProyecto").ToEntero() - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ValorMultiplicador * TotalCosto, ValorMultiplicador * TotalCosto, 68, Serie, Serie, CveVenta:=CveVentaSurtir, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimiento, CveSubProyecto:=tCveSubProyectoAlmacen) Then - ErrorMovInv = True - End If - - If Not ErrorMovInv AndAlso ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual) Then - If ObjConta.ValorPolizaDescuadre > 0 Then - GuardaLogAD($"Inventario/EntregaAlmacen | Error{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") - ErrorMovInv = True - End If + If Not ErrorMovInv Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ValorMultiplicador * ValorInventario, ValorMultiplicador * ValorInventario, 69, Serie, Serie, CveVenta:=CveVentaSurtir, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimiento, CveSubProyecto:=CveSubProyecto, CveClasificacion:=RowInv("CveClasificacion").ToString().ToEntero()) Then + ErrorMovInv = True + End If + End If + + cont += 1 + Next + Dim tCveSubProyectoAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=DdlAlmacen.SelectedValue.ToEntero).FiltroPrimeroValor("CveSubProyecto").ToEntero() + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ValorMultiplicador * TotalCosto, ValorMultiplicador * TotalCosto, 68, Serie, Serie, CveVenta:=CveVentaSurtir, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimiento, CveSubProyecto:=tCveSubProyectoAlmacen) Then + ErrorMovInv = True End If - Else - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un Error al ingresar la prepoliza.1") - End If - Else - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un Error al ingresar las prepolizas.2") - End If - Else - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un Error al ingresar las prepolizas.3") - End If - Else - ErrorMovInv = True - TextoError.AppendFormat("Ocurrió un Error al ingresar las prepolizas.4") - End If - - Return Not ErrorMovInv - End Function - - Private Sub GuardaTraspaso() - - 'OBLIGA A SURTIR TODO - For Each Gvr As GridViewRow In GvDatos.Rows - If Not Gvr.FCCheckBox("cbInv").Checked Or (Gvr.FCCheckBox("cbInv").Checked AndAlso Gvr.FCTextBox("TbCantidadF").Text.ToDecimal <> Gvr.DataKey("CantidadC").ToString().ToDecimal) Then - Alert("Es necesario surtir todos los productos. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") - Exit Sub - End If - Next - - Dim ValidaSeccion As Boolean = False : Dim ValidaCaducidad As Boolean = False : Dim ValidaLote As Boolean = False - 'VALIDA CANTIDAD DE SALIDA - Dim Cantidad As Decimal = 0.0D - For Each Gvr As GridViewRow In GvDatos.Rows - If CBool(Gvr.DataKey("AplicaSeccion")) AndAlso Gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero() <= 0 Then - ValidaSeccion = True - End If - If CBool(Gvr.DataKey("AplicaCaducidad")) AndAlso Gvr.FCTextBox("TxtCaducidad").Text.Trim = "" Then - ValidaCaducidad = True - End If - If CBool(Gvr.DataKey("AplicaLote")) AndAlso Gvr.FCTextBox("TxtLote").Text.Trim = "" Then - ValidaLote = True - End If - - If Gvr.FCCheckBox("cbInv").Checked AndAlso Gvr.FCTextBox("TbCantidadF").Text.ToDecimal > 0 Then - Cantidad = Gvr.FCTextBox("TbCantidadF").Text.ToDecimal - Exit For - End If - Next - - If ValidaSeccion Then - Alert("La sección de almacen no ha sido especificada en todos los productos.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - If ValidaCaducidad Then - Alert("La caducidad no ha sido especificada en todos los productos.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - If ValidaLote Then - Alert("El lote de almacen no ha sido especificada en todos los productos.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - 'VALIDA TRANSITORIO - If ChkTransitorio.Checked Then - If TxtResponsable.Text.Trim = "" 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);") - 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);") - Exit Sub - End If - End If - - Dim ObjInventario As New ClsInventarios : ObjInventario.IniciaTransacSQL() - Dim ObjGeneral As New ClsGenerales(ObjInventario.IniciaTransacSQL()) - Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) - Dim CveMovimientoSalida As Integer - Dim ConceptoMovimiento As Integer = 0 - Dim FolioSalida As Integer - Dim CveMovimientoEntrada As Integer - Dim FolioEntrada As Integer - Dim ErrorMovInv As Boolean - Dim DtDetalle As New DataTable - Dim TextoError As String = "" - - 'PASA DATOS DEL GV A DATATABLE PARA MANEJOR CON FOR EACH - Dim Index As Integer = 0 - For Each gvr As GridViewRow In GvDatos.Rows - If gvr.FCCheckBox("cbInv").Checked AndAlso gvr.FCTextBox("TbCantidadF").Text.ToDecimal > 0 Then - DtDatos.Rows(Index)("CantidadGV") = gvr.FCTextBox("TbCantidadF").Text.ToDecimal - DtDatos.Rows(Index)("CveSeccion") = gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero() - DtDatos.Rows(Index)("FechaCaducidad") = gvr.FCTextBox("TxtCaducidad").Text.ToDate - DtDatos.Rows(Index)("Lote") = gvr.FCTextBox("TxtLote").Text - End If - Index += 1 - Next - - 'VALIDA SI HUBO CAMBIOS EN LA EXISTENCIA - Dim DtDatosTraspaso As New DataTable - If ObjInventario.EntregaAlmacenTraspasosGet(CveTraspasoSurtir) Then - DtDatosTraspaso = ObjInventario.DtResultados - End If - Dim CantidadGV As Decimal = GvDatos.Rows.Cast(Of GridViewRow)().Sum(Function(gvr) gvr.DataKey("CantidadF").ToDecimal) - If DtDatos.SUM("CantidadF") <> DtDatosTraspaso.SUM("CantidadF") Then - ObjInventario.RollBack() - ObjInventario.Dispose() - CargaTraspasoPorSurtir(CveTraspasoSurtir) - CargaPendientes() - Alert("Ha sido cambiada la informacion de existencias del traspaso actual. Por favor verifique.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - 'VALIDA QUE EL TRASPASO SIGA VIGENTE - If ObjInventario.AddTrasladoSolicitudGet(CveTraspasoSurtir, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0 AndAlso ObjInventario.DtResultados.Rows(0)("CveTrasladoEstatus").ToString() = "2" Then - ObjInventario.RollBack() - ObjInventario.Dispose() - CargaTraspasoPorSurtir(CveTraspasoSurtir) - CargaPendientes() - Alert("Ha sido cambiada la informacion del traspaso actual. Por favor verifique.", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - 'VALIDA ALMACENES - Dim Almacen1 As Integer = DdlAlmacen.SelectedValue.ToEntero() - Dim Almacen2 As Integer = CveAlmacenTraspasoDestino - If Almacen1 <= 0 Or Almacen2 <= 0 Then - Alert("Ocurrió un error al obtener los almacenes del movimiento. Por favor recargue y vuelva a intentar.", TipoMensaje.MsgAdvertencia) - ObjInventario.RollBack() - ObjInventario.Dispose() - Exit Sub - End If - - 'VERIFICAR EXISTENCIA - Dim StrXML As New StringBuilder - Dim Lote As String = "" - Dim FechaCaducidad As Date - StrXML.Append("") - For Each Dr As DataRow In DtDatos.Rows - FechaCaducidad = If(CBool(Dr("AplicaCaducidad")) AndAlso Dr("FechaCaducidad").ToString() <> "", Dr("FechaCaducidad").ToString().ToDate, MinFecha) - Lote = If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1") - - If Dr("CantidadGV").ToString().ToDecimal > 0 Then - If CBool(Dr("AplicaSerie")) Then - DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Dr("Consec"))) - For Each Dr1 As DataRow In DtDetalle.Rows - StrXML.AppendFormat("", Dr1("CvePS"), Dr1("CveUM"), 1, IfNull(Dr("CveSeccion"), -1), Dr1("Serie"), Lote, FechaCaducidad.ToString("yyyy/MM/dd")) - Next - Else - StrXML.AppendFormat("", Dr("CvePS"), Dr("CveUM"), Dr("CantidadGV"), IfNull(Dr("CveSeccion"), -1), "-1", Lote, FechaCaducidad.ToString("yyyy/MM/dd")) - End If - End If - Next - StrXML.Append("") - - Dim TieneErrorExistencia As Boolean = False - If ObjInventario.GetExistenciasPSXML(StrXML.ToString(), DdlAlmacen.SelectedValue.ToEntero(), TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), CveSubProyecto, CveVendedor, If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), If(TipoEntrega = 2, 1, -1), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then - If ObjInventario.DtResultados.Rows.Count > 0 Then - TieneErrorExistencia = True - For Each Dr As DataRow In ObjInventario.DtResultados.Rows - TextoError += $" - {Dr("CodigoPS")} Existencia: {Dr("Existencia").ToString().ToDecimal.ToString("#,##0.##")}
    " - Next - End If - Else - TieneErrorExistencia = True - End If - - If TieneErrorExistencia Then - ObjInventario.RollBack() - ObjInventario.Dispose() - If TextoError.Length > 0 Then - Alert($" Lo(s) siguiente(s) Productos no tienen existencia suficiente:

    {TextoError}", TipoMensaje.MsgAdvertencia) - End If - RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") - Exit Sub - End If - - 'SALIDA POR TRASPASO - If Not ErrorMovInv Then - ConceptoMovimiento = 26 - CveMovimientoSalida = ObjInventario.AddMovimiento(Almacen1, ConceptoMovimiento, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Guia:="", - CveContrato:=-1, CveAlmacenDestino:=CveAlmacenTraspasoDestino, Recibio:=If(ChkTransitorio.Checked, TxtResponsable.Text.Trim, ""), Modulo:="RE/GT", CveOP:=CveOP) - FolioSalida = ObjInventario.Folio - If CveMovimientoSalida > 0 Then - Dim CantidadPendiente As Decimal = 0 - Dim CveSeccionAlmacen As Integer = -1 - - For Each Dr As DataRow In DtDatos.Rows - + + If Not ErrorMovInv AndAlso ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual) Then + If ObjConta.ValorPolizaDescuadre > 0 Then + GuardaLogAD($"Inventario/EntregaAlmacen | Error{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") + ErrorMovInv = True + End If + End If + Else + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un Error al ingresar la prepoliza.1") + End If + Else + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un Error al ingresar las prepolizas.2") + End If + Else + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un Error al ingresar las prepolizas.3") + End If + Else + ErrorMovInv = True + TextoError.AppendFormat("Ocurrió un Error al ingresar las prepolizas.4") + End If + + Return Not ErrorMovInv + End Function + + Private Sub GuardaTraspaso() + + 'OBLIGA A SURTIR TODO + For Each Gvr As GridViewRow In GvDatos.Rows + If Not Gvr.FCCheckBox("cbInv").Checked Or (Gvr.FCCheckBox("cbInv").Checked AndAlso Gvr.FCTextBox("TbCantidadF").Text.ToDecimal <> Gvr.DataKey("CantidadC").ToString().ToDecimal) Then + Alert("Es necesario surtir todos los productos. Por favor rectifique y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") + Exit Sub + End If + Next + + Dim ValidaSeccion As Boolean = False : Dim ValidaCaducidad As Boolean = False : Dim ValidaLote As Boolean = False + 'VALIDA CANTIDAD DE SALIDA + Dim Cantidad As Decimal = 0.0D + For Each Gvr As GridViewRow In GvDatos.Rows + If CBool(Gvr.DataKey("AplicaSeccion")) AndAlso Gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero() <= 0 Then + ValidaSeccion = True + End If + If CBool(Gvr.DataKey("AplicaCaducidad")) AndAlso Gvr.FCTextBox("TxtCaducidad").Text.Trim = "" Then + ValidaCaducidad = True + End If + If CBool(Gvr.DataKey("AplicaLote")) AndAlso Gvr.FCTextBox("TxtLote").Text.Trim = "" Then + ValidaLote = True + End If + + If Gvr.FCCheckBox("cbInv").Checked AndAlso Gvr.FCTextBox("TbCantidadF").Text.ToDecimal > 0 Then + Cantidad = Gvr.FCTextBox("TbCantidadF").Text.ToDecimal + Exit For + End If + Next + + If ValidaSeccion Then + Alert("La sección de almacen no ha sido especificada en todos los productos.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + If ValidaCaducidad Then + Alert("La caducidad no ha sido especificada en todos los productos.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + If ValidaLote Then + Alert("El lote de almacen no ha sido especificada en todos los productos.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + 'VALIDA TRANSITORIO + If ChkTransitorio.Checked Then + If TxtResponsable.Text.Trim = "" 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);") + 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);") + Exit Sub + End If + End If + + Dim ObjInventario As New ClsInventarios : ObjInventario.IniciaTransacSQL() + Dim ObjGeneral As New ClsGenerales(ObjInventario.IniciaTransacSQL()) + Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) + Dim CveMovimientoSalida As Integer + Dim ConceptoMovimiento As Integer = 0 + Dim FolioSalida As Integer + Dim CveMovimientoEntrada As Integer + Dim FolioEntrada As Integer + Dim ErrorMovInv As Boolean + Dim DtDetalle As New DataTable + Dim TextoError As String = "" + + 'PASA DATOS DEL GV A DATATABLE PARA MANEJOR CON FOR EACH + Dim Index As Integer = 0 + For Each gvr As GridViewRow In GvDatos.Rows + If gvr.FCCheckBox("cbInv").Checked AndAlso gvr.FCTextBox("TbCantidadF").Text.ToDecimal > 0 Then + DtDatos.Rows(Index)("CantidadGV") = gvr.FCTextBox("TbCantidadF").Text.ToDecimal + DtDatos.Rows(Index)("CveSeccion") = gvr.FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero() + DtDatos.Rows(Index)("FechaCaducidad") = gvr.FCTextBox("TxtCaducidad").Text.ToDate + DtDatos.Rows(Index)("Lote") = gvr.FCTextBox("TxtLote").Text + End If + Index += 1 + Next + + 'VALIDA SI HUBO CAMBIOS EN LA EXISTENCIA + Dim DtDatosTraspaso As New DataTable + If ObjInventario.EntregaAlmacenTraspasosGet(CveTraspasoSurtir) Then + DtDatosTraspaso = ObjInventario.DtResultados + End If + Dim CantidadGV As Decimal = GvDatos.Rows.Cast(Of GridViewRow)().Sum(Function(gvr) gvr.DataKey("CantidadF").ToDecimal) + If DtDatos.SUM("CantidadF") <> DtDatosTraspaso.SUM("CantidadF") Then + ObjInventario.RollBack() + ObjInventario.Dispose() + CargaTraspasoPorSurtir(CveTraspasoSurtir) + CargaPendientes() + Alert("Ha sido cambiada la informacion de existencias del traspaso actual. Por favor verifique.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + 'VALIDA QUE EL TRASPASO SIGA VIGENTE + If ObjInventario.AddTrasladoSolicitudGet(CveTraspasoSurtir, UsuarioActual.CveEmpresa) AndAlso ObjInventario.DtResultados.Rows.Count > 0 AndAlso ObjInventario.DtResultados.Rows(0)("CveTrasladoEstatus").ToString() = "2" Then + ObjInventario.RollBack() + ObjInventario.Dispose() + CargaTraspasoPorSurtir(CveTraspasoSurtir) + CargaPendientes() + Alert("Ha sido cambiada la informacion del traspaso actual. Por favor verifique.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + 'VALIDA ALMACENES + Dim Almacen1 As Integer = DdlAlmacen.SelectedValue.ToEntero() + Dim Almacen2 As Integer = CveAlmacenTraspasoDestino + If Almacen1 <= 0 Or Almacen2 <= 0 Then + Alert("Ocurrió un error al obtener los almacenes del movimiento. Por favor recargue y vuelva a intentar.", TipoMensaje.MsgAdvertencia) + ObjInventario.RollBack() + ObjInventario.Dispose() + Exit Sub + End If + + 'VERIFICAR EXISTENCIA + Dim StrXML As New StringBuilder + Dim Lote As String = "" + Dim FechaCaducidad As Date + StrXML.Append("") + For Each Dr As DataRow In DtDatos.Rows + FechaCaducidad = If(CBool(Dr("AplicaCaducidad")) AndAlso Dr("FechaCaducidad").ToString() <> "", Dr("FechaCaducidad").ToString().ToDate, MinFecha) + Lote = If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1") + + If Dr("CantidadGV").ToString().ToDecimal > 0 Then + If CBool(Dr("AplicaSerie")) Then + DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", Dr("Consec"))) + For Each Dr1 As DataRow In DtDetalle.Rows + StrXML.AppendFormat("", Dr1("CvePS"), Dr1("CveUM"), 1, IfNull(Dr("CveSeccion"), -1), Dr1("Serie"), Lote, FechaCaducidad.ToString("yyyy/MM/dd")) + Next + Else + StrXML.AppendFormat("", Dr("CvePS"), Dr("CveUM"), Dr("CantidadGV"), IfNull(Dr("CveSeccion"), -1), "-1", Lote, FechaCaducidad.ToString("yyyy/MM/dd")) + End If + End If + Next + StrXML.Append("") + + Dim TieneErrorExistencia As Boolean = False + If ObjInventario.GetExistenciasPSXML(StrXML.ToString(), DdlAlmacen.SelectedValue.ToEntero(), TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), CveSubProyecto, CveVendedor, If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), If(TipoEntrega = 2, 1, -1), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + If ObjInventario.DtResultados.Rows.Count > 0 Then + TieneErrorExistencia = True + For Each Dr As DataRow In ObjInventario.DtResultados.Rows + TextoError += $" - {Dr("CodigoPS")} Existencia: {Dr("Existencia").ToString().ToDecimal.ToString("#,##0.##")}
    " + Next + End If + Else + TieneErrorExistencia = True + End If + + If TieneErrorExistencia Then + ObjInventario.RollBack() + ObjInventario.Dispose() + If TextoError.Length > 0 Then + Alert($" Lo(s) siguiente(s) Productos no tienen existencia suficiente:

    {TextoError}", TipoMensaje.MsgAdvertencia) + End If + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") + Exit Sub + End If + + 'SALIDA POR TRASPASO + If Not ErrorMovInv Then + ConceptoMovimiento = 26 + CveMovimientoSalida = ObjInventario.AddMovimiento(Almacen1, ConceptoMovimiento, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, Guia:="", + CveContrato:=-1, CveAlmacenDestino:=CveAlmacenTraspasoDestino, Recibio:=If(ChkTransitorio.Checked, TxtResponsable.Text.Trim, ""), Modulo:="RE/GT", CveOP:=CveOP) + FolioSalida = ObjInventario.Folio + If CveMovimientoSalida > 0 Then + Dim CantidadPendiente As Decimal = 0 + Dim CveSeccionAlmacen As Integer = -1 + + For Each Dr As DataRow In DtDatos.Rows + If ErrorMovInv Then Exit For - End If - - FechaCaducidad = If(CBool(Dr("AplicaCaducidad")) AndAlso Dr("FechaCaducidad").ToString() <> "", Dr("FechaCaducidad").ToString().ToDate, MinFecha) - Lote = If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1") - CveSeccionAlmacen = If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString().ToEntero(), -1) - - DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0} AND FueTraspaso IS NULL", Dr("Consec"))) - 'DtDetalleLote = DtDatosDetalleLote.FiltraParametros(String.Format("ConsecId = {0} AND FueTraspaso IS NULL", Dr("Consec"))) - If DtDetalle.Rows.Count > 0 Then 'SI FUE POR SERIE - For Each Dr1 As DataRow In DtDetalle.Rows - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, 1, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), 0, Serie:=Dr1("Serie").ToString(), Lote:=Lote, FechaCaducidad:=FechaCaducidad, CveSeccionAlmacen:=CveSeccionAlmacen, CveVentaDetalle:=-1, CveContratoDetalle:=Dr("CveContratoDetalle").ToString().ToEntero()) Then - ErrorMovInv = True - TextoError = $"Ocurrió un error al procesar los conceptos con serie '{Dr1("Serie").ToString()}'. Por favor vuelva a intentar." - Exit For - End If - Next - 'ElseIf DtDetalleLote.Rows.Count > 0 Then 'SI FUE POR LOTE BATCH - ' For Each Dr1 As DataRow In DtDetalleLote.Rows - ' If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, Dr1("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), 0, Serie:="", Lote:=Dr1("Lote").ToString(), FechaCaducidad:=FechaCaducidad, CveSeccionAlmacen:=CveSeccionAlmacen, CveVentaDetalle:=-1, CveContratoDetalle:=Dr("CveContratoDetalle").ToString().ToEntero()) Then - ' ErrorMovInv = True - ' TextoError = "Ocurrió un error al procesar los conceptos con serie. Por favor vuelva a intentar." - ' Exit For - ' End If - ' Next - Else 'NORMAL - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, Dr("CantidadGV").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), 0, -1, Lote:=Lote, FechaCaducidad:=FechaCaducidad, CveSeccionAlmacen:=CveSeccionAlmacen, CveContratoDetalle:=Dr("CveContratoDetalle").ToString().ToEntero()) Then - ErrorMovInv = True - TextoError = "Ocurrió un error al procesar los conceptos de salida. Por favor vuelva a intentar." - Exit For - End If - End If - Next - Else - TextoError = "Ocurrió un error al generar el movimiento de salida." - ErrorMovInv = True - End If - End If - - Dim ValorTraspaso As Decimal = 0 - 'ENTRADA POR TRASPASO - If Not ErrorMovInv Then - 'sino es transitorio, los transitorios, ya no se hace otro movimiento - - ConceptoMovimiento = If(ChkTransitorio.Checked, 2, 27) - Almacen2 = If(ChkTransitorio.Checked, DdlAlmacenTransitorio.SelectedValue.ToEntero(), CveAlmacenTraspasoDestino) - CveMovimientoEntrada = ObjInventario.AddMovimiento(Almacen2, ConceptoMovimiento, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, - Guia:="", CveContrato:=CveContrato, CveMovimientoRelacionado:=CveMovimientoSalida, CveAlmacenDestino:=CveAlmacenTraspasoDestino, - Recibio:=If(ChkTransitorio.Checked, TxtResponsable.Text.Trim, ""), Modulo:="RE/GT1", CveOP:=CveOP) - FolioEntrada = ObjInventario.Folio - If CveMovimientoEntrada > 0 Then - If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then - Dim CveSeccionAlmacen As Integer = -1 - ValorTraspaso = ObjInventario.DtResultados.SUMD("Total").RoundSQL - For Each Dr As DataRow In ObjInventario.DtResultados.Rows - - CveSeccionAlmacen = -3 - - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), Dr("PU").ToString().ToDecimal, CveAF:=Dr("CveAF").ToString().ToEntero(), CveSeccionAlmacen:=CveSeccionAlmacen, Serie:=Dr("Serie").ToString(), Lote:=Dr("Lote").ToString(), FechaCaducidad:=Dr("FechaCaducidad").ToString().ToDate, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString().ToEntero(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero()) Then - ErrorMovInv = True - TextoError = "Ocurrió un error al guardar los movimientos de entrada" - Exit For - End If - Next - End If - Else - TextoError = "Ocurrió un error al generar el movimiento de entrada" - ErrorMovInv = True - End If - - End If - - 'MARCA SOLICITUD CON EL MOVIMIENTO GENERADO - If Not ErrorMovInv Then - If Not ObjInventario.UpdateTraspasoSolicitudMovimiento(CveTraspasoSurtir, CveMovimientoSalida) Then - TextoError = "Ocurrió un error al vincular los movimientos con la solicitud de traspaso. Por favor verifique y vuelva a intentar" - ErrorMovInv = True - End If - End If - - Dim Fecha As Date = TxtFecha.Text.ToDate - 'Paqueterias Guias - If RbEntregaInterna.Checked AndAlso Not ErrorMovInv Then - Dim CveEstatus As Integer = 0 ' DdlEstatus.SelectedValue.ToEntero() - Dim FechaEstimada As String = "-1" 'If(TxtFechaEstimada.Text = "", "-1", TxtFechaEstimada.Text) - Dim NoCajas As Integer = 0 'TxtNoCajas.Text.ToEntero() - Dim Observaciones As String = "" 'TxtObservacionesPaqInterna.Text - Dim CvePaqueteria As Integer = GlobalDTPaqueterias(UsuarioActual.CveEmpresa, 0).FiltroPrimeroValor("CvePaqueteria", "").ToEntero() - - Dim CvePaqueteriaGuia As Integer = ObjGeneral.AddPaqueteriasGuias(CvePaqueteria, 9, CveEstatus, CveSubProyecto, Fecha.ToShortDateString, "-1", "-1", NoCajas, 0.00, "-1", FechaEstimada, Observaciones, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, EsEntregaInterna:=True) - - If CvePaqueteriaGuia > 0 Then - If CveVentaSurtir > 0 OrElse CveSubProyecto > 0 Then - ErrorMovInv = Not ObjGeneral.AddPaqueteriasGuiasDetalles(CvePaqueteriaGuia, CveVentaSurtir, -1, CveMovimientoEntrada, -1) - End If - - If ErrorMovInv Then - Alert("Error en el paqueteria guia detalle", TipoMensaje.MsgError) - End If - Else - ErrorMovInv = True - Alert("Error en el paqueteria guia", TipoMensaje.MsgError) - End If - End If - - 'AGREGAMOS PREPOLIZAS TRASPASO DIRECTO: - - Dim CvePrePolizaTraspaso As Integer = ObjConta.AddPrePolizas("EA/GT", 53, 0, 0, 1, Fecha, "Traspaso", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) - If CvePrePolizaTraspaso > 0 Then - - - If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTraspaso, True, ValorTraspaso, ValorTraspaso, 68, TxtObservaciones.Text, TxtObservaciones.Text, CveMovimientoAlmacen:=CveMovimientoSalida, Contabilizable:=False) Then - ErrorMovInv = True - End If - - If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTraspaso, False, ValorTraspaso, ValorTraspaso, 68, TxtObservaciones.Text, TxtObservaciones.Text, CveMovimientoAlmacen:=CveMovimientoEntrada, Contabilizable:=False) Then - ErrorMovInv = True - End If - Else - ErrorMovInv = True - End If - - - If Not ErrorMovInv Then - ObjInventario.Commit() - ObjGeneral.Dispose() - RegistraScript("playsonidito('beep-07.wav')") - - Dim Msg As New StringBuilder - Msg.AppendFormat("Movimiento Salida: {1}", CveMovimientoSalida, FolioSalida) - Msg.AppendFormat("
    Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoSalida))) - - Msg.AppendFormat("

    Movimiento Entrada (Traspaso): {1}", CveMovimientoEntrada, FolioEntrada) - Msg.AppendFormat("
    Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoEntrada))) - - If RbEntregaInterna.Checked Then - Msg.AppendFormat("

    Se agregó una guía de paquetería interna") - End If - - Alert(Msg.ToString(), TipoMensaje.MsgInformacion) - - Limpia() - LimpiaCampos() - CargaPendientes() - - CargaBitacora = False - - Else - Alert(TextoError, TipoMensaje.MsgError) - RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") - ObjInventario.RollBack() - End If - - ObjInventario.Dispose() - - End Sub - - - Private Sub MandaCorreoEntrega(tCveVenta As Integer) - EnviarCorreoEntrega(tCveVenta, UsuarioActual) - End Sub - - Private Sub EnviarCorreoEntrega(tCveVenta As Integer, UsuarioActual As Usuario) - 'Dim Correo As New ClsSisMail - Dim SerieFolio As String = "" - Dim Asunto As String = String.Format("{0} Envio de pedido: {1}", UsuarioActual.Empresa.NombreCorto, SerieFolio) - Dim Cuerpo As New StringBuilder() - Dim Destinatario As String = "" - Dim MensajeEnviado As Boolean = False - Dim tCvecliente As Integer - Dim tCveVendedor As Integer - Dim bytes() As Byte = Nothing - Dim ObjVentas As New ClsVentas() - - Dim strBody As New StringBuilder - If ObjVentas.GetVenta(tCveVenta, UsuarioActual.CveEmpresa) Then - Dim dr As DataRow = ObjVentas.DtResultados.FiltroPrimero("") - tCveVendedor = dr("CveVendedor").ToString().ToEntero() - Dim CorreoVendedor As String = GlobalDTVendedores(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Correo", String.Format("CveVendedor = {0}", tCveVendedor)) - Dim CorreoAsistente As String = GlobalDTVendedores(UsuarioActual.CveEmpresa, VendedorTipo:=3).FiltroPrimeroValor("Correo", String.Format("CveSuperior = {0}", CveVendedor)) - Destinatario = String.Format("{0};{1};{2}", dr("CorreoNotificacion"), CorreoVendedor, CorreoAsistente) - tCvecliente = dr("CveCliente").ToString().ToEntero() - - Dim drC As DataRow = GlobalDTCliente(UsuarioActual.CveEmpresa, CveCliente:=tCvecliente).FiltroPrimero("") - If drC IsNot Nothing Then - - Destinatario += String.Format(";{0};{1}", drC("CorreoEntregaCompras"), drC("CorreoEntregaAlmacen")) - - Dim ClienteNombre As String = dr("ClienteNombre").ToString() - Dim FolioVenta As String = dr("SerieFolio").ToString() - Dim Pedido As String = dr("PedidoContrato").ToString() - Dim OrdenCompra As String = dr("OrdenCompra").ToString() - Dim CveVenta As Integer = dr("CveVenta").ToString().ToEntero() - Dim TipoDocto As String = dr("TipoDocto").ToString() - - Dim dtDetalle As New DataTable - If ObjVentas.GetVentaDetalle(CveVenta) Then - dtDetalle = ObjVentas.DtResultados - End If - Dim DetalleTable As String = "" - For Each dRow As DataRow In dtDetalle.Rows - Dim detalle As String = String.Format("{0}{1}{2}", dRow("Codigo"), dRow("Cantidad"), dRow("PS")) - DetalleTable += detalle - Next - - strBody.Append("") - strBody.Append("") - strBody.Append("") - strBody.Append("") - strBody.Append(" ") - strBody.Append("
    ") - strBody.Append($"") - strBody.Append("
    ") - strBody.Append("

    ") - strBody.Append($" Apreciable {ClienteNombre}, le confirmamos los") - strBody.Append(" productos surtidos y entregados en mostrador conforme a la") - strBody.Append($" {TipoDocto}:") - strBody.Append("

    ") - strBody.Append($"

    {FolioVenta} - Pedido {Pedido} - Orden de Compra {OrdenCompra}

    ") - strBody.Append("
    ") - strBody.Append(" ") - strBody.Append(DetalleTable) - strBody.Append(" ") - strBody.Append("
    ") - strBody.Append("
    ") - strBody.Append("

    ") - strBody.Append(" Se entregaron los productos conforme a las especificaciones de su pedido y verificamos que no se presentara alguno de los siguientes inconvenientes:") - strBody.Append("

    ") - strBody.Append("

    ") - strBody.Append(" • Empaque violado.
    ") - strBody.Append("• Daño físico en la caja.
    ") - strBody.Append("• Producto incompleto o distinto al solicitado.
    ") - strBody.Append("• Alguna otra situación que se considere que compromete la integridad de la mercancía.
    ") - strBody.Append("") - strBody.Append("

    ") - strBody.Append("
    ") - strBody.Append("

    ") - strBody.Append($" Aceptando a entera satisfacción a las {Today.Hour}:{Today.Minute} hrs del {Today.ToString()}") - strBody.Append("

    ") - strBody.Append("
    ") - strBody.Append("

    ") - strBody.Append(" Gracias por su compra
    ") - 'strBody.Append(" Compuproveedores") - strBody.Append("

    ") - strBody.Append("

    ") - strBody.Append(" Sigue disfrutando de nuestros productos y servicios
    ") - 'strBody.Append(" www.compuproveedores.com") - strBody.Append("") - strBody.Append("

    ") - strBody.Append(" ") - strBody.Append("") - End If - - End If - ObjVentas.Dispose() - - Dim MailCls As New ClsSisMail - - Dim LSRutasMail As New List(Of ClsSisMail.ArchivoMail) - Dim itemMail As New ClsSisMail.ArchivoMail() - LSRutasMail.Add(New ClsSisMail.ArchivoMail With {.ArchivoBinario = bytes, .NombreArchivo = "Entrega en mostrador"}) - - MailCls.SendMail(ClsPaginas.EmpresaNotificaciones, Destinatario, "Enviado desde Entrega Almacen", strBody.ToString(), Destinatario) - MailCls = Nothing - End Sub - - Private Sub Limpia() - - 'DATOS DE LA VENTA - LbCantidad.Text = "" - LbCliente.Text = "" - LbObservaciones.Text = "" - 'LbFolio.Text = "" - HLFolio.Text = "" - - 'DATOS DEL MOVIMINETO - TxtObservaciones.Text = "" - TxtFecha.Text = NowADS().ToShortDateString - DdlAlmacen.SelectedValueExist(-1) - CargaFolios() - - 'VARIABLES GENERALES + End If + + FechaCaducidad = If(CBool(Dr("AplicaCaducidad")) AndAlso Dr("FechaCaducidad").ToString() <> "", Dr("FechaCaducidad").ToString().ToDate, MinFecha) + Lote = If(CBool(Dr("AplicaLote")), Dr("Lote").ToString(), "-1") + CveSeccionAlmacen = If(CBool(Dr("AplicaSeccion")), Dr("CveSeccion").ToString().ToEntero(), -1) + + DtDetalle = DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0} AND FueTraspaso IS NULL", Dr("Consec"))) + 'DtDetalleLote = DtDatosDetalleLote.FiltraParametros(String.Format("ConsecId = {0} AND FueTraspaso IS NULL", Dr("Consec"))) + If DtDetalle.Rows.Count > 0 Then 'SI FUE POR SERIE + For Each Dr1 As DataRow In DtDetalle.Rows + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, 1, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), 0, Serie:=Dr1("Serie").ToString(), Lote:=Lote, FechaCaducidad:=FechaCaducidad, CveSeccionAlmacen:=CveSeccionAlmacen, CveVentaDetalle:=-1, CveContratoDetalle:=Dr("CveContratoDetalle").ToString().ToEntero()) Then + ErrorMovInv = True + TextoError = $"Ocurrió un error al procesar los conceptos con serie '{Dr1("Serie").ToString()}'. Por favor vuelva a intentar." + Exit For + End If + Next + 'ElseIf DtDetalleLote.Rows.Count > 0 Then 'SI FUE POR LOTE BATCH + ' For Each Dr1 As DataRow In DtDetalleLote.Rows + ' If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, Dr1("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), 0, Serie:="", Lote:=Dr1("Lote").ToString(), FechaCaducidad:=FechaCaducidad, CveSeccionAlmacen:=CveSeccionAlmacen, CveVentaDetalle:=-1, CveContratoDetalle:=Dr("CveContratoDetalle").ToString().ToEntero()) Then + ' ErrorMovInv = True + ' TextoError = "Ocurrió un error al procesar los conceptos con serie. Por favor vuelva a intentar." + ' Exit For + ' End If + ' Next + Else 'NORMAL + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalida, Dr("CantidadGV").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), 0, -1, Lote:=Lote, FechaCaducidad:=FechaCaducidad, CveSeccionAlmacen:=CveSeccionAlmacen, CveContratoDetalle:=Dr("CveContratoDetalle").ToString().ToEntero()) Then + ErrorMovInv = True + TextoError = "Ocurrió un error al procesar los conceptos de salida. Por favor vuelva a intentar." + Exit For + End If + End If + Next + Else + TextoError = "Ocurrió un error al generar el movimiento de salida." + ErrorMovInv = True + End If + End If + + Dim ValorTraspaso As Decimal = 0 + 'ENTRADA POR TRASPASO + If Not ErrorMovInv Then + 'sino es transitorio, los transitorios, ya no se hace otro movimiento + + ConceptoMovimiento = If(ChkTransitorio.Checked, 2, 27) + Almacen2 = If(ChkTransitorio.Checked, DdlAlmacenTransitorio.SelectedValue.ToEntero(), CveAlmacenTraspasoDestino) + CveMovimientoEntrada = ObjInventario.AddMovimiento(Almacen2, ConceptoMovimiento, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=TxtObservaciones.Text.Trim, + Guia:="", CveContrato:=CveContrato, CveMovimientoRelacionado:=CveMovimientoSalida, CveAlmacenDestino:=CveAlmacenTraspasoDestino, + Recibio:=If(ChkTransitorio.Checked, TxtResponsable.Text.Trim, ""), Modulo:="RE/GT1", CveOP:=CveOP) + FolioEntrada = ObjInventario.Folio + If CveMovimientoEntrada > 0 Then + If ObjInventario.GetMovimientosDetalle(CveMovimientoSalida, UsuarioActual.CveEmpresa) Then + Dim CveSeccionAlmacen As Integer = -1 + ValorTraspaso = ObjInventario.DtResultados.SUMD("Total").RoundSQL + For Each Dr As DataRow In ObjInventario.DtResultados.Rows + + CveSeccionAlmacen = -3 + + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Dr("Cantidad").ToString().ToDecimal, Dr("CveUM").ToString().ToEntero(), Dr("CvePS").ToString().ToEntero(), Dr("PU").ToString().ToDecimal, CveAF:=Dr("CveAF").ToString().ToEntero(), CveSeccionAlmacen:=CveSeccionAlmacen, Serie:=Dr("Serie").ToString(), Lote:=Dr("Lote").ToString(), FechaCaducidad:=Dr("FechaCaducidad").ToString().ToDate, CveMovimientoDetalleEntrada:=Dr("CveMovimientoDetalle").ToString().ToEntero(), CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero()) Then + ErrorMovInv = True + TextoError = "Ocurrió un error al guardar los movimientos de entrada" + Exit For + End If + Next + End If + Else + TextoError = "Ocurrió un error al generar el movimiento de entrada" + ErrorMovInv = True + End If + + End If + + 'MARCA SOLICITUD CON EL MOVIMIENTO GENERADO + If Not ErrorMovInv Then + If Not ObjInventario.UpdateTraspasoSolicitudMovimiento(CveTraspasoSurtir, CveMovimientoSalida) Then + TextoError = "Ocurrió un error al vincular los movimientos con la solicitud de traspaso. Por favor verifique y vuelva a intentar" + ErrorMovInv = True + End If + End If + + Dim Fecha As Date = TxtFecha.Text.ToDate + 'Paqueterias Guias + If RbEntregaInterna.Checked AndAlso Not ErrorMovInv Then + Dim CveEstatus As Integer = 0 ' DdlEstatus.SelectedValue.ToEntero() + Dim FechaEstimada As String = "-1" 'If(TxtFechaEstimada.Text = "", "-1", TxtFechaEstimada.Text) + Dim NoCajas As Integer = 0 'TxtNoCajas.Text.ToEntero() + Dim Observaciones As String = "" 'TxtObservacionesPaqInterna.Text + Dim CvePaqueteria As Integer = GlobalDTPaqueterias(UsuarioActual.CveEmpresa, 0).FiltroPrimeroValor("CvePaqueteria", "").ToEntero() + + Dim CvePaqueteriaGuia As Integer = ObjGeneral.AddPaqueteriasGuias(CvePaqueteria, 9, CveEstatus, CveSubProyecto, Fecha.ToShortDateString, "-1", "-1", NoCajas, 0.00, "-1", FechaEstimada, Observaciones, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, EsEntregaInterna:=True) + + If CvePaqueteriaGuia > 0 Then + If CveVentaSurtir > 0 OrElse CveSubProyecto > 0 Then + ErrorMovInv = Not ObjGeneral.AddPaqueteriasGuiasDetalles(CvePaqueteriaGuia, CveVentaSurtir, -1, CveMovimientoEntrada, -1) + End If + + If ErrorMovInv Then + Alert("Error en el paqueteria guia detalle", TipoMensaje.MsgError) + End If + Else + ErrorMovInv = True + Alert("Error en el paqueteria guia", TipoMensaje.MsgError) + End If + End If + + 'AGREGAMOS PREPOLIZAS TRASPASO DIRECTO: + + Dim CvePrePolizaTraspaso As Integer = ObjConta.AddPrePolizas("EA/GT", 53, 0, 0, 1, Fecha, "Traspaso", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + If CvePrePolizaTraspaso > 0 Then + + + If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTraspaso, True, ValorTraspaso, ValorTraspaso, 68, TxtObservaciones.Text, TxtObservaciones.Text, CveMovimientoAlmacen:=CveMovimientoSalida, Contabilizable:=False) Then + ErrorMovInv = True + End If + + If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePolizaTraspaso, False, ValorTraspaso, ValorTraspaso, 68, TxtObservaciones.Text, TxtObservaciones.Text, CveMovimientoAlmacen:=CveMovimientoEntrada, Contabilizable:=False) Then + ErrorMovInv = True + End If + Else + ErrorMovInv = True + End If + + + If Not ErrorMovInv Then + ObjInventario.Commit() + ObjGeneral.Dispose() + RegistraScript("playsonidito('beep-07.wav')") + + Dim Msg As New StringBuilder + Msg.AppendFormat("Movimiento Salida: {1}", CveMovimientoSalida, FolioSalida) + Msg.AppendFormat("
    Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoSalida))) + + Msg.AppendFormat("

    Movimiento Entrada (Traspaso): {1}", CveMovimientoEntrada, FolioEntrada) + Msg.AppendFormat("
    Imprimir Movimiento ", Encripta(String.Format("OP=Alm&CveMovimiento={0}", CveMovimientoEntrada))) + + If RbEntregaInterna.Checked Then + Msg.AppendFormat("

    Se agregó una guía de paquetería interna") + End If + + Alert(Msg.ToString(), TipoMensaje.MsgInformacion) + + Limpia() + LimpiaCampos() + CargaPendientes() + + CargaBitacora = False + + Else + Alert(TextoError, TipoMensaje.MsgError) + RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") + ObjInventario.RollBack() + End If + + ObjInventario.Dispose() + + End Sub + + + Private Sub MandaCorreoEntrega(tCveVenta As Integer) + EnviarCorreoEntrega(tCveVenta, UsuarioActual) + End Sub + + Private Sub EnviarCorreoEntrega(tCveVenta As Integer, UsuarioActual As Usuario) + 'Dim Correo As New ClsSisMail + Dim SerieFolio As String = "" + Dim Asunto As String = String.Format("{0} Envio de pedido: {1}", UsuarioActual.Empresa.NombreCorto, SerieFolio) + Dim Cuerpo As New StringBuilder() + Dim Destinatario As String = "" + Dim MensajeEnviado As Boolean = False + Dim tCvecliente As Integer + Dim tCveVendedor As Integer + Dim bytes() As Byte = Nothing + Dim ObjVentas As New ClsVentas() + + Dim strBody As New StringBuilder + If ObjVentas.GetVenta(tCveVenta, UsuarioActual.CveEmpresa) Then + Dim dr As DataRow = ObjVentas.DtResultados.FiltroPrimero("") + tCveVendedor = dr("CveVendedor").ToString().ToEntero() + Dim CorreoVendedor As String = GlobalDTVendedores(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Correo", String.Format("CveVendedor = {0}", tCveVendedor)) + Dim CorreoAsistente As String = GlobalDTVendedores(UsuarioActual.CveEmpresa, VendedorTipo:=3).FiltroPrimeroValor("Correo", String.Format("CveSuperior = {0}", CveVendedor)) + Destinatario = String.Format("{0};{1};{2}", dr("CorreoNotificacion"), CorreoVendedor, CorreoAsistente) + tCvecliente = dr("CveCliente").ToString().ToEntero() + + Dim drC As DataRow = GlobalDTCliente(UsuarioActual.CveEmpresa, CveCliente:=tCvecliente).FiltroPrimero("") + If drC IsNot Nothing Then + + Destinatario += String.Format(";{0};{1}", drC("CorreoEntregaCompras"), drC("CorreoEntregaAlmacen")) + + Dim ClienteNombre As String = dr("ClienteNombre").ToString() + Dim FolioVenta As String = dr("SerieFolio").ToString() + Dim Pedido As String = dr("PedidoContrato").ToString() + Dim OrdenCompra As String = dr("OrdenCompra").ToString() + Dim CveVenta As Integer = dr("CveVenta").ToString().ToEntero() + Dim TipoDocto As String = dr("TipoDocto").ToString() + + Dim dtDetalle As New DataTable + If ObjVentas.GetVentaDetalle(CveVenta) Then + dtDetalle = ObjVentas.DtResultados + End If + Dim DetalleTable As String = "" + For Each dRow As DataRow In dtDetalle.Rows + Dim detalle As String = String.Format("{0}{1}{2}", dRow("Codigo"), dRow("Cantidad"), dRow("PS")) + DetalleTable += detalle + Next + + strBody.Append("") + strBody.Append("") + strBody.Append("") + strBody.Append("") + strBody.Append(" ") + strBody.Append("
    ") + strBody.Append($"") + strBody.Append("
    ") + strBody.Append("

    ") + strBody.Append($" Apreciable {ClienteNombre}, le confirmamos los") + strBody.Append(" productos surtidos y entregados en mostrador conforme a la") + strBody.Append($" {TipoDocto}:") + strBody.Append("

    ") + strBody.Append($"

    {FolioVenta} - Pedido {Pedido} - Orden de Compra {OrdenCompra}

    ") + strBody.Append("
    ") + strBody.Append(" ") + strBody.Append(DetalleTable) + strBody.Append(" ") + strBody.Append("
    ") + strBody.Append("
    ") + strBody.Append("

    ") + strBody.Append(" Se entregaron los productos conforme a las especificaciones de su pedido y verificamos que no se presentara alguno de los siguientes inconvenientes:") + strBody.Append("

    ") + strBody.Append("

    ") + strBody.Append(" • Empaque violado.
    ") + strBody.Append("• Daño físico en la caja.
    ") + strBody.Append("• Producto incompleto o distinto al solicitado.
    ") + strBody.Append("• Alguna otra situación que se considere que compromete la integridad de la mercancía.
    ") + strBody.Append("") + strBody.Append("

    ") + strBody.Append("
    ") + strBody.Append("

    ") + strBody.Append($" Aceptando a entera satisfacción a las {Today.Hour}:{Today.Minute} hrs del {Today.ToString()}") + strBody.Append("

    ") + strBody.Append("
    ") + strBody.Append("

    ") + strBody.Append(" Gracias por su compra
    ") + 'strBody.Append(" Compuproveedores") + strBody.Append("

    ") + strBody.Append("

    ") + strBody.Append(" Sigue disfrutando de nuestros productos y servicios
    ") + 'strBody.Append(" www.compuproveedores.com") + strBody.Append("") + strBody.Append("

    ") + strBody.Append(" ") + strBody.Append("") + End If + + End If + ObjVentas.Dispose() + + Dim MailCls As New ClsSisMail + + Dim LSRutasMail As New List(Of ClsSisMail.ArchivoMail) + Dim itemMail As New ClsSisMail.ArchivoMail() + LSRutasMail.Add(New ClsSisMail.ArchivoMail With {.ArchivoBinario = bytes, .NombreArchivo = "Entrega en mostrador"}) + + MailCls.SendMail(ClsPaginas.EmpresaNotificaciones, Destinatario, "Enviado desde Entrega Almacen", strBody.ToString(), Destinatario) + MailCls = Nothing + End Sub + + Private Sub Limpia() + + 'DATOS DE LA VENTA + LbCantidad.Text = "" + LbCliente.Text = "" + LbObservaciones.Text = "" + 'LbFolio.Text = "" + HLFolio.Text = "" + + 'DATOS DEL MOVIMINETO + TxtObservaciones.Text = "" + TxtFecha.Text = NowADS().ToShortDateString + DdlAlmacen.SelectedValueExist(-1) + CargaFolios() + + 'VARIABLES GENERALES CveVentaSurtir = -1 CveOSSurtir = -1 - DtDatosDetalle = Nothing - DtDatosDetalleLote = Nothing - DtDatos = Nothing - - DivTipoCambioAdvertencia.Visible = False - - 'TRASPASO - DivTransitorio1.Visible = False - ChkTransitorio.Checked = False - TxtResponsable.Text = "" - DivTransitorio2.Visible = False - - LbSurtida.Visible = False - TimmerRefresh.Enabled = True - - DdlAlmacen.Enabled = True - - UpGenerales.Update() - CargaGvDatos() - - UpDatos.Update() + DtDatosDetalle = Nothing + DtDatosDetalleLote = Nothing + DtDatos = Nothing + + DivTipoCambioAdvertencia.Visible = False + + 'TRASPASO + DivTransitorio1.Visible = False + ChkTransitorio.Checked = False + TxtResponsable.Text = "" + DivTransitorio2.Visible = False + + LbSurtida.Visible = False + TimmerRefresh.Enabled = True + + DdlAlmacen.Enabled = True + + UpGenerales.Update() + CargaGvDatos() + + UpDatos.Update() End Sub -#End Region +#End Region + +#Region " TRASPASO - TRANSITORIO " + Protected Sub ChkTransitorio_CheckedChanged(sender As Object, e As EventArgs) + + TxtResponsable.Text = "" + DivTransitorio2.Visible = ChkTransitorio.Checked -#Region " TRASPASO - TRANSITORIO " - Protected Sub ChkTransitorio_CheckedChanged(sender As Object, e As EventArgs) - - TxtResponsable.Text = "" - DivTransitorio2.Visible = ChkTransitorio.Checked - End Sub -#End Region +#End Region -#Region "SECCION ALMACEN" +#Region "SECCION ALMACEN" 'Private Sub CreaDtSeccionAlmacen() ' DtSeccionAlmacen = New DataTable ' DtSeccionAlmacen.Columns.Add("CantidadSeccionAlmacen", GetType(Decimal)) @@ -4148,70 +4148,70 @@ Partial Class Inventarios_EntregaAlmacen ' RegistraScript("$('#ModalVerSeccionesAlmacen').modal()") 'End Sub -#End Region +#End Region -#Region "DIVIDIR" +#Region "DIVIDIR" + + Protected Sub Dividir(sender As Object, e As EventArgs) + Dim index2 As Integer = 0 + + For Each Row As DataRow In DtDatos.Rows + Row("Seleccionado") = GvDatos.Rows(index2).FCCheckBox("cbInv").Checked + If GvDatos.Rows(index2).FCTextBox("TbCantidadF").Text <> "" Then + Row("CantidadSeleccionada") = GvDatos.Rows(index2).FCTextBox("TbCantidadF").Text + End If + If GvDatos.Rows(index2).FCTextBox("TxtLote").Text <> "" Then + Row("Lote") = GvDatos.Rows(index2).FCTextBox("TxtLote").Text + End If + If GvDatos.Rows(index2).FCDropDownList("DdlSeccionAlmacen").SelectedValue <> "-1" Then + Row("CveSeccion") = GvDatos.Rows(index2).FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero() + End If + If GvDatos.Rows(index2).FCTextBox("TxtCaducidad").Text <> "" Then + Row("FechaCaducidad") = GvDatos.Rows(index2).FCTextBox("TxtCaducidad").Text.ToDate + End If + index2 += 1 + Next + DtDatos.AcceptChanges() + + Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, Button)).NamingContainer, GridViewRow) + Dim Index As Integer = gvRow.RowIndex + Dim Cantidad As String = HdnCantidadMovimiento.Value + Dim dr1 As DataRow = DtDatos.Rows(Index) + Dim dr As DataRow = DtDatos.NewRow + dr.ItemArray = dr1.ItemArray + dr1("CantidadC") = (dr1("CantidadC").ToString().ToDouble - Cantidad.ToDouble) + Dim CantidadFOriginal As Double = dr1("CantidadF").ToString().ToDouble + dr1("CantidadF") = (dr1("CantidadF").ToString().ToDouble - Cantidad.ToDouble) + Dim CantidadSOriginal As Double = dr1("CantidadS").ToString().ToDouble + dr1("CantidadS") = (CantidadSOriginal * dr1("CantidadF").ToString().ToDouble) / CantidadFOriginal + Dim CantidadSeleccionadaOriginal As Double = dr1("CantidadSeleccionada").ToString().ToDouble + dr1("CantidadSeleccionada") = If(CantidadSeleccionadaOriginal > dr1("CantidadF").ToString().ToDouble, dr1("CantidadF").ToString().ToDouble, CantidadSeleccionadaOriginal) + CantidadSeleccionadaOriginal = CantidadSeleccionadaOriginal - dr1("CantidadF").ToString().ToDouble + + 'Dim CostoIndirectoOriginal As Double = dr1("CostoIndirecto").ToString().ToDouble + 'dr1("CostoIndirecto") = (CostoIndirectoOriginal * dr1("CantidadF").ToString().ToDouble) / CantidadFOriginal + 'Dim CostoIndirectoExtranjeroOriginal As Double = dr1("CostoIndirectoExtranjero").ToString().ToDouble + 'dr1("CostoIndirectoExtranjero") = (CostoIndirectoExtranjeroOriginal * dr1("CantidadF").ToString().ToDouble) / CantidadFOriginal + + DtDatos.AcceptChanges() + + dr("CantidadC") = Cantidad.ToDouble + dr("CantidadF") = Cantidad.ToDouble + dr("CantidadS") = (CantidadSOriginal * dr("CantidadF").ToString().ToDouble) / CantidadFOriginal + dr("CantidadSeleccionada") = If(CantidadSeleccionadaOriginal > 0, CantidadSeleccionadaOriginal, 0) + dr("Seleccionado") = If(CantidadSeleccionadaOriginal > 0, True, False) + 'dr("CostoIndirecto") = (CostoIndirectoOriginal * dr("CantidadF").ToString().ToDouble) / CantidadFOriginal + 'dr("CostoIndirectoExtranjero") = (CostoIndirectoExtranjeroOriginal * dr("CantidadF").ToString().ToDouble) / CantidadFOriginal + DtDatos.Rows.InsertAt(dr, Index) + DtDatos.AcceptChanges() + + index2 = 1 + For Each Row As DataRow In DtDatos.Rows + Row("Consec") = index2 + index2 += 1 + Next + DtDatos.AcceptChanges() - Protected Sub Dividir(sender As Object, e As EventArgs) - Dim index2 As Integer = 0 - - For Each Row As DataRow In DtDatos.Rows - Row("Seleccionado") = GvDatos.Rows(index2).FCCheckBox("cbInv").Checked - If GvDatos.Rows(index2).FCTextBox("TbCantidadF").Text <> "" Then - Row("CantidadSeleccionada") = GvDatos.Rows(index2).FCTextBox("TbCantidadF").Text - End If - If GvDatos.Rows(index2).FCTextBox("TxtLote").Text <> "" Then - Row("Lote") = GvDatos.Rows(index2).FCTextBox("TxtLote").Text - End If - If GvDatos.Rows(index2).FCDropDownList("DdlSeccionAlmacen").SelectedValue <> "-1" Then - Row("CveSeccion") = GvDatos.Rows(index2).FCDropDownList("DdlSeccionAlmacen").SelectedValue.ToEntero() - End If - If GvDatos.Rows(index2).FCTextBox("TxtCaducidad").Text <> "" Then - Row("FechaCaducidad") = GvDatos.Rows(index2).FCTextBox("TxtCaducidad").Text.ToDate - End If - index2 += 1 - Next - DtDatos.AcceptChanges() - - Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, Button)).NamingContainer, GridViewRow) - Dim Index As Integer = gvRow.RowIndex - Dim Cantidad As String = HdnCantidadMovimiento.Value - Dim dr1 As DataRow = DtDatos.Rows(Index) - Dim dr As DataRow = DtDatos.NewRow - dr.ItemArray = dr1.ItemArray - dr1("CantidadC") = (dr1("CantidadC").ToString().ToDouble - Cantidad.ToDouble) - Dim CantidadFOriginal As Double = dr1("CantidadF").ToString().ToDouble - dr1("CantidadF") = (dr1("CantidadF").ToString().ToDouble - Cantidad.ToDouble) - Dim CantidadSOriginal As Double = dr1("CantidadS").ToString().ToDouble - dr1("CantidadS") = (CantidadSOriginal * dr1("CantidadF").ToString().ToDouble) / CantidadFOriginal - Dim CantidadSeleccionadaOriginal As Double = dr1("CantidadSeleccionada").ToString().ToDouble - dr1("CantidadSeleccionada") = If(CantidadSeleccionadaOriginal > dr1("CantidadF").ToString().ToDouble, dr1("CantidadF").ToString().ToDouble, CantidadSeleccionadaOriginal) - CantidadSeleccionadaOriginal = CantidadSeleccionadaOriginal - dr1("CantidadF").ToString().ToDouble - - 'Dim CostoIndirectoOriginal As Double = dr1("CostoIndirecto").ToString().ToDouble - 'dr1("CostoIndirecto") = (CostoIndirectoOriginal * dr1("CantidadF").ToString().ToDouble) / CantidadFOriginal - 'Dim CostoIndirectoExtranjeroOriginal As Double = dr1("CostoIndirectoExtranjero").ToString().ToDouble - 'dr1("CostoIndirectoExtranjero") = (CostoIndirectoExtranjeroOriginal * dr1("CantidadF").ToString().ToDouble) / CantidadFOriginal - - DtDatos.AcceptChanges() - - dr("CantidadC") = Cantidad.ToDouble - dr("CantidadF") = Cantidad.ToDouble - dr("CantidadS") = (CantidadSOriginal * dr("CantidadF").ToString().ToDouble) / CantidadFOriginal - dr("CantidadSeleccionada") = If(CantidadSeleccionadaOriginal > 0, CantidadSeleccionadaOriginal, 0) - dr("Seleccionado") = If(CantidadSeleccionadaOriginal > 0, True, False) - 'dr("CostoIndirecto") = (CostoIndirectoOriginal * dr("CantidadF").ToString().ToDouble) / CantidadFOriginal - 'dr("CostoIndirectoExtranjero") = (CostoIndirectoExtranjeroOriginal * dr("CantidadF").ToString().ToDouble) / CantidadFOriginal - DtDatos.Rows.InsertAt(dr, Index) - DtDatos.AcceptChanges() - - index2 = 1 - For Each Row As DataRow In DtDatos.Rows - Row("Consec") = index2 - index2 += 1 - Next - DtDatos.AcceptChanges() - If UsuarioActual.Empresa.Funcionalidad(578) = "1" Then CargaGvDatos(False) Else @@ -4219,151 +4219,151 @@ Partial Class Inventarios_EntregaAlmacen End If - index2 = 0 - For Each Row As DataRow In DtDatos.Rows - GvDatos.Rows(index2).FCCheckBox("cbInv").Checked = CBool(Row("Seleccionado")) - If Row("CantidadSeleccionada").ToString() <> "" Then - GvDatos.Rows(index2).FCTextBox("TbCantidadF").Text = Row("CantidadSeleccionada").ToString() - End If - If Row("Lote").ToString() <> "" Then - GvDatos.Rows(index2).FCTextBox("TxtLote").Text = Row("Lote").ToString() - End If - If Row("CveSeccion").ToString() <> "" Then - GvDatos.Rows(index2).FCDropDownList("DdlSeccionAlmacen").SelectedValue = Row("CveSeccion").ToString() - End If - If Row("FechaCaducidad").ToString() <> "" Then - GvDatos.Rows(index2).FCTextBox("TxtCaducidad").Text = Row("FechaCaducidad").ToString().ToDate.ToShortDateString - End If - index2 += 1 - Next - + index2 = 0 + For Each Row As DataRow In DtDatos.Rows + GvDatos.Rows(index2).FCCheckBox("cbInv").Checked = CBool(Row("Seleccionado")) + If Row("CantidadSeleccionada").ToString() <> "" Then + GvDatos.Rows(index2).FCTextBox("TbCantidadF").Text = Row("CantidadSeleccionada").ToString() + End If + If Row("Lote").ToString() <> "" Then + GvDatos.Rows(index2).FCTextBox("TxtLote").Text = Row("Lote").ToString() + End If + If Row("CveSeccion").ToString() <> "" Then + GvDatos.Rows(index2).FCDropDownList("DdlSeccionAlmacen").SelectedValue = Row("CveSeccion").ToString() + End If + If Row("FechaCaducidad").ToString() <> "" Then + GvDatos.Rows(index2).FCTextBox("TxtCaducidad").Text = Row("FechaCaducidad").ToString().ToDate.ToShortDateString + End If + index2 += 1 + Next + End Sub -#End Region +#End Region -#Region " GUIAS - SABE QUE ES PORQUE NO VEO QUE SE UTILIZE EN ALGUNA PARTE - EN MIRAS DE ELIMINAR - IPP 24 AGOSTO 2017 " - Private Sub BtnNumeroGuia_Click(sender As Object, e As EventArgs) Handles BtnNumeroGuia.Click - Dim Objeto As New ClsInventarios - If Objeto.UpdateMovimientoGuia(TxtGuia.Text, CveMovimiento, UsuarioActual.CveEmpresa) Then - Alert("Se ha guardado correctamente la póliza", TipoMensaje.MsgConfirmacion) - End If - Objeto.Dispose() - End Sub - - Private Sub GvDocs_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvDocs.RowDataBound - - If e.Row.RowType = DataControlRowType.DataRow Then - - Dim ImgDownLoad As Literal = e.Row.FCLiteral("HplDown") - Dim Adjunto As String = e.Row.DBCampo("Adjunto").ToString() - Dim ArchivoRuta As String = "" - - If Adjunto.Trim.Length > 0 Then - ArchivoRuta = UsuarioActual.Empresa.Ruta & "Documentacion\Ventas\" & Adjunto - Dim fi As New FileInfo(ArchivoRuta) - Dim linkDescarga As String = "" - If fi.Exists() Then - linkDescarga = $"/Empresas/{UsuarioActual.CveEmpresa}/Documentacion/ventas/{fi.Name}" - ImgDownLoad.Visible = True - ImgDownLoad.Text = String.Format(" ", linkDescarga) - - - End If - - End If - - End If - +#Region " GUIAS - SABE QUE ES PORQUE NO VEO QUE SE UTILIZE EN ALGUNA PARTE - EN MIRAS DE ELIMINAR - IPP 24 AGOSTO 2017 " + Private Sub BtnNumeroGuia_Click(sender As Object, e As EventArgs) Handles BtnNumeroGuia.Click + Dim Objeto As New ClsInventarios + If Objeto.UpdateMovimientoGuia(TxtGuia.Text, CveMovimiento, UsuarioActual.CveEmpresa) Then + Alert("Se ha guardado correctamente la póliza", TipoMensaje.MsgConfirmacion) + End If + Objeto.Dispose() End Sub -#End Region -#Region "SUGERENCIAS" + Private Sub GvDocs_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvDocs.RowDataBound - Protected Sub BtnVerSugerencias_Click(sender As Object, e As EventArgs) - If Not CveVentaSurtir > 0 Then - Alert("Tiene que seleccionar la venta a surtir", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - If Not DdlAlmacen.SelectedValue.ToEntero() > 0 Then - Alert("Tiene que seleccionar el almacen", TipoMensaje.MsgAdvertencia) - Exit Sub - End If - - Dim ObjInv As New ClsInventarios - If ObjInv.GetSugerenciasSalidaAlmacen(CveVentaSurtir, DdlAlmacen.SelectedValue.ToEntero(), UsuarioActual.CveEmpresa) Then - GvSugerencias.DataSource = ObjInv.DtResultados - - - DtDatosSugerencias = ObjInv.DtResultados - - DtDatosSugerencias.Columns.Add("Consec", GetType(Integer)) - DtDatosSugerencias.Columns.Add("CantidadGV", GetType(Double)) - DtDatosSugerencias.Columns.Add("CantidadTraspaso", GetType(Double)) - - If Not DtDatosSugerencias.Columns.Contains("Lote") Then - DtDatosSugerencias.Columns.Add("Lote", GetType(String)) - End If - If Not DtDatosSugerencias.Columns.Contains("CveSeccion") Then - DtDatosSugerencias.Columns.Add("CveSeccion", GetType(Integer)) - End If - - If Not DtDatosSugerencias.Columns.Contains("Seleccionado") Then - DtDatosSugerencias.Columns.Add("Seleccionado", GetType(Boolean)) - End If - If Not DtDatosSugerencias.Columns.Contains("CantidadSeleccionada") Then - DtDatosSugerencias.Columns.Add("CantidadSeleccionada", GetType(Double)) - End If - - Dim Index As Integer = 1 - For Each Dr As DataRow In DtDatosSugerencias.Rows - Dr("Consec") = Index - - Index += 1 - Next - - DtDatosSugerencias.AcceptChanges() - - If DtDatosSugerencias IsNot Nothing AndAlso DtDatosSugerencias.Rows.Count > 0 Then - GvSugerencias.Columns(2).Visible = DtDatosSugerencias.MAX("Seccion") <> "" - GvSugerencias.Columns(3).Visible = DtDatosSugerencias.MAX("Serie") <> "" - GvSugerencias.Columns(4).Visible = DtDatosSugerencias.MAX("Lote") <> "" - GvSugerencias.Columns(5).Visible = DtDatosSugerencias.MAX("FechaCaducidad") <> "" - End If - - - End If - ObjInv.Dispose() - GvSugerencias.DataBind() - - UpVerSugerencias.Update() - - RegistraScript("$('#ModalVerSugerencias').modal({backdrop: 'static', keyboard: false});") - End Sub - Protected Sub BtnAplicarSugerencias_Click(sender As Object, e As EventArgs) - - DtDatos = Nothing - DtDatos = New DataTable - DtDatos = DtDatosSugerencias - - DtDatosDetalle = Nothing - CreaDtDetalle() - - DtDatosDetalleLote = Nothing - CreaDtDetalleLote() - - CargaGvDatos() - - RegistraScript("$('#ModalVerSugerencias').modal('hide')") - End Sub - - Protected Sub DdlAlmacen_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlAlmacen.SelectedIndexChanged - RecargaporAlmacenes() - End Sub - - Private Sub RecargaporAlmacenes() - If DdlAlmacen.SelectedValue <> "-1" Then + If e.Row.RowType = DataControlRowType.DataRow Then + + Dim ImgDownLoad As Literal = e.Row.FCLiteral("HplDown") + Dim Adjunto As String = e.Row.DBCampo("Adjunto").ToString() + Dim ArchivoRuta As String = "" + + If Adjunto.Trim.Length > 0 Then + ArchivoRuta = UsuarioActual.Empresa.Ruta & "Documentacion\Ventas\" & Adjunto + Dim fi As New FileInfo(ArchivoRuta) + Dim linkDescarga As String = "" + If fi.Exists() Then + linkDescarga = $"/Empresas/{UsuarioActual.CveEmpresa}/Documentacion/ventas/{fi.Name}" + ImgDownLoad.Visible = True + ImgDownLoad.Text = String.Format(" ", linkDescarga) + + + End If + + End If + + End If + + End Sub +#End Region + +#Region "SUGERENCIAS" + + Protected Sub BtnVerSugerencias_Click(sender As Object, e As EventArgs) + If Not CveVentaSurtir > 0 Then + Alert("Tiene que seleccionar la venta a surtir", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + If Not DdlAlmacen.SelectedValue.ToEntero() > 0 Then + Alert("Tiene que seleccionar el almacen", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + Dim ObjInv As New ClsInventarios + If ObjInv.GetSugerenciasSalidaAlmacen(CveVentaSurtir, DdlAlmacen.SelectedValue.ToEntero(), UsuarioActual.CveEmpresa) Then + GvSugerencias.DataSource = ObjInv.DtResultados + + + DtDatosSugerencias = ObjInv.DtResultados + + DtDatosSugerencias.Columns.Add("Consec", GetType(Integer)) + DtDatosSugerencias.Columns.Add("CantidadGV", GetType(Double)) + DtDatosSugerencias.Columns.Add("CantidadTraspaso", GetType(Double)) + + If Not DtDatosSugerencias.Columns.Contains("Lote") Then + DtDatosSugerencias.Columns.Add("Lote", GetType(String)) + End If + If Not DtDatosSugerencias.Columns.Contains("CveSeccion") Then + DtDatosSugerencias.Columns.Add("CveSeccion", GetType(Integer)) + End If + + If Not DtDatosSugerencias.Columns.Contains("Seleccionado") Then + DtDatosSugerencias.Columns.Add("Seleccionado", GetType(Boolean)) + End If + If Not DtDatosSugerencias.Columns.Contains("CantidadSeleccionada") Then + DtDatosSugerencias.Columns.Add("CantidadSeleccionada", GetType(Double)) + End If + + Dim Index As Integer = 1 + For Each Dr As DataRow In DtDatosSugerencias.Rows + Dr("Consec") = Index + + Index += 1 + Next + + DtDatosSugerencias.AcceptChanges() + + If DtDatosSugerencias IsNot Nothing AndAlso DtDatosSugerencias.Rows.Count > 0 Then + GvSugerencias.Columns(2).Visible = DtDatosSugerencias.MAX("Seccion") <> "" + GvSugerencias.Columns(3).Visible = DtDatosSugerencias.MAX("Serie") <> "" + GvSugerencias.Columns(4).Visible = DtDatosSugerencias.MAX("Lote") <> "" + GvSugerencias.Columns(5).Visible = DtDatosSugerencias.MAX("FechaCaducidad") <> "" + End If + + + End If + ObjInv.Dispose() + GvSugerencias.DataBind() + + UpVerSugerencias.Update() + + RegistraScript("$('#ModalVerSugerencias').modal({backdrop: 'static', keyboard: false});") + End Sub + Protected Sub BtnAplicarSugerencias_Click(sender As Object, e As EventArgs) + + DtDatos = Nothing + DtDatos = New DataTable + DtDatos = DtDatosSugerencias + + DtDatosDetalle = Nothing + CreaDtDetalle() + + DtDatosDetalleLote = Nothing + CreaDtDetalleLote() + + CargaGvDatos() + + RegistraScript("$('#ModalVerSugerencias').modal('hide')") + End Sub + + Protected Sub DdlAlmacen_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlAlmacen.SelectedIndexChanged + RecargaporAlmacenes() + End Sub + + Private Sub RecargaporAlmacenes() + If DdlAlmacen.SelectedValue <> "-1" Then If UsuarioActual.Empresa.Funcionalidad(578) = "1" Then CargaGvDatos(False) Else @@ -4371,138 +4371,138 @@ Partial Class Inventarios_EntregaAlmacen End If - End If - End Sub - - Protected Sub BtnImprimirSugerencias_Click(sender As Object, e As EventArgs) - Dim LogoRutaFisica As String = String.Format("Empresas\{0}\Logo.png", UsuarioActual.CveEmpresa) - Dim logouri As String = String.Format("{0}://{1}:{2}/ashx/sigfiles.ashx?P={3}", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, Encripta(LogoRutaFisica)) - Dim Imagen As New System.IO.FileInfo(String.Format("{0}Logo.png", UsuarioActual.Empresa.Ruta)) - - Dim params As New List(Of ReportParameter) - params.Add(New ReportParameter("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", ""))) - params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) - params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Usuario)) - - ImprimirPDF("Empresas/Grales/Formatos/RepEntregaAlmacenSugerencia.rdlc", DtDatosSugerencias, params, "Equipo GPS") + End If End Sub -#End Region + Protected Sub BtnImprimirSugerencias_Click(sender As Object, e As EventArgs) + Dim LogoRutaFisica As String = String.Format("Empresas\{0}\Logo.png", UsuarioActual.CveEmpresa) + Dim logouri As String = String.Format("{0}://{1}:{2}/ashx/sigfiles.ashx?P={3}", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, Encripta(LogoRutaFisica)) + Dim Imagen As New System.IO.FileInfo(String.Format("{0}Logo.png", UsuarioActual.Empresa.Ruta)) -#Region "TipoEntrega" + Dim params As New List(Of ReportParameter) + params.Add(New ReportParameter("LogoPath", If(Imagen.Exists, $"file://{Imagen.FullName}", ""))) + params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) + params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Usuario)) - Protected Sub EntregaRadioGroup_Click(sender As Object, e As EventArgs) - If RbEntregaExterna.Checked Then - RegistraScript($"AbrirVentana('/General/PopUpPaqueteriasGuias.aspx?CveVenta={CveVentaSurtir}',800,547,'N')") - ElseIf RbEntregaInterna.Checked Then - 'RegistraScript("$('#ModalPaqueteriaInterna').modal('show')") - 'RegistraScript($"AbrirVentana('/General/PopUpPaqueteriasGuiasInternas.aspx?CveVenta={CveVentaSurtir}&CveSubProyecto={CveSubProyecto}',800,547,'N')") - 'CveVentaSurtir - ElseIf RbSinEntrega.Checked Then - LimpiaCampos() - End If - End Sub - - Protected Sub LimpiaCampos() - DdlEstatus.SelectedValue = "1" - TxtFechaPaqInterna.Text = "" - TxtFechaEstimada.Text = "" - TxtNoCajas.Text = "" - TxtObservacionesPaqInterna.Text = "" - UpPaqInterna.Update() - End Sub - Protected Sub PaqueteriaDetalle_Click(sender As Object, e As EventArgs) - If RbEntregaExterna.Checked Then - RegistraScript($"AbrirVentana('/General/PopUpPaqueteriasGuias.aspx?CveVenta={CveVentaSurtir}',800,547,'N')") - ElseIf RbEntregaInterna.Checked Then - 'RegistraScript("$('#ModalPaqueteriaInterna').modal('show')") - End If - End Sub -#End Region - -#Region "Cliente entrega personal" - Private Sub ClienteEntregaPersonal(CveCliente As Integer) - Dim ObjVentas As New ClsVentas() - If ObjVentas.GetClientesPersonalEntrega(-1, CveCliente, UsuarioActual.CveEmpresa, 1) Then - If ObjVentas.DtResultados.Rows.Count > 0 Then - GvClentesPersonalEntrega.DataSource = ObjVentas.DtResultados - GvClentesPersonalEntrega.DataBind() - DivPersonalEntrega.Visible = True - Else - DivPersonalEntrega.Visible = False - End If - End If - ObjVentas.Dispose() - UpClentesPersonalEntrega.Update() - End Sub -#End Region - -#Region "sugerir caducidad" - - Private Sub SugiereLoteCaducidad(CveAlmacen As Integer) - Dim TempDT As New DataTable - Dim DtLotesCaducidad As New DataTable - TempDT = DtDatos.Clone - Dim CvePSAnterior As Integer = 0 - Dim ObjInventarios As New ClsInventarios() - - For Each dr As DataRow In DtDatos.Rows - If CBool(dr("AplicaLote")) Then - If CvePSAnterior <> dr("CvePS").ToString.ToEntero Then - CvePSAnterior = dr("CvePS").ToString.ToEntero - - If ObjInventarios.GetExistenciasCaducidad(dr("CvePS").ToString.ToEntero, CveAlmacen, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then - DtLotesCaducidad.Merge(ObjInventarios.DtResultados) - - End If - End If - End If - Next - - ObjInventarios.Dispose() - - For Each dr As DataRow In DtDatos.Rows - If CBool(dr("AplicaLote")) Then - - Dim dtta As DataTable = DtLotesCaducidad.FiltraParametros(String.Format("CvePS = {0}", dr("CvePS"))) - - If dtta IsNot Nothing AndAlso dtta.Rows.Count > 0 Then - - 'recorre que cumplan con la cantidad total a llenar - Dim CantidadSurtir As Decimal = dr("CantidadF").ToString.ToDecimal - For Each drl As DataRow In dtta.Rows - If CantidadSurtir < drl("Cantidad").ToString.ToDecimal Then - dr("CantidadF") = CantidadSurtir - dr("CantidadC") = CantidadSurtir - dr("Lote") = drl("Lote") - dr("FechaCaducidad") = drl("FechaCaducidad") - TempDT.ImportRow(dr) - CantidadSurtir = 0 - Else - CantidadSurtir -= drl("Cantidad").ToString.ToDecimal - dr("CantidadF") = drl("Cantidad").ToString.ToDecimal - dr("CantidadC") = drl("Cantidad").ToString.ToDecimal - dr("Lote") = drl("Lote") - dr("FechaCaducidad") = drl("FechaCaducidad") - TempDT.ImportRow(dr) - End If - If CantidadSurtir <= 0 Then Exit For - Next - - Else - 'error, no hay lote sugerido - End If - Else - TempDT.ImportRow(dr) - End If - - Next - - - DtDatos = TempDT + ImprimirPDF("Empresas/Grales/Formatos/RepEntregaAlmacenSugerencia.rdlc", DtDatosSugerencias, params, "Equipo GPS") End Sub -#End Region +#End Region + +#Region "TipoEntrega" + + Protected Sub EntregaRadioGroup_Click(sender As Object, e As EventArgs) + If RbEntregaExterna.Checked Then + RegistraScript($"AbrirVentana('/General/PopUpPaqueteriasGuias.aspx?CveVenta={CveVentaSurtir}',800,547,'N')") + ElseIf RbEntregaInterna.Checked Then + 'RegistraScript("$('#ModalPaqueteriaInterna').modal('show')") + 'RegistraScript($"AbrirVentana('/General/PopUpPaqueteriasGuiasInternas.aspx?CveVenta={CveVentaSurtir}&CveSubProyecto={CveSubProyecto}',800,547,'N')") + 'CveVentaSurtir + ElseIf RbSinEntrega.Checked Then + LimpiaCampos() + End If + End Sub + + Protected Sub LimpiaCampos() + DdlEstatus.SelectedValue = "1" + TxtFechaPaqInterna.Text = "" + TxtFechaEstimada.Text = "" + TxtNoCajas.Text = "" + TxtObservacionesPaqInterna.Text = "" + UpPaqInterna.Update() + End Sub + Protected Sub PaqueteriaDetalle_Click(sender As Object, e As EventArgs) + If RbEntregaExterna.Checked Then + RegistraScript($"AbrirVentana('/General/PopUpPaqueteriasGuias.aspx?CveVenta={CveVentaSurtir}',800,547,'N')") + ElseIf RbEntregaInterna.Checked Then + 'RegistraScript("$('#ModalPaqueteriaInterna').modal('show')") + End If + End Sub +#End Region + +#Region "Cliente entrega personal" + Private Sub ClienteEntregaPersonal(CveCliente As Integer) + Dim ObjVentas As New ClsVentas() + If ObjVentas.GetClientesPersonalEntrega(-1, CveCliente, UsuarioActual.CveEmpresa, 1) Then + If ObjVentas.DtResultados.Rows.Count > 0 Then + GvClentesPersonalEntrega.DataSource = ObjVentas.DtResultados + GvClentesPersonalEntrega.DataBind() + DivPersonalEntrega.Visible = True + Else + DivPersonalEntrega.Visible = False + End If + End If + ObjVentas.Dispose() + UpClentesPersonalEntrega.Update() + End Sub +#End Region + +#Region "sugerir caducidad" + + Private Sub SugiereLoteCaducidad(CveAlmacen As Integer) + Dim TempDT As New DataTable + Dim DtLotesCaducidad As New DataTable + TempDT = DtDatos.Clone + Dim CvePSAnterior As Integer = 0 + Dim ObjInventarios As New ClsInventarios() + + For Each dr As DataRow In DtDatos.Rows + If CBool(dr("AplicaLote")) Then + If CvePSAnterior <> dr("CvePS").ToString.ToEntero Then + CvePSAnterior = dr("CvePS").ToString.ToEntero + + If ObjInventarios.GetExistenciasCaducidad(dr("CvePS").ToString.ToEntero, CveAlmacen, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + DtLotesCaducidad.Merge(ObjInventarios.DtResultados) + + End If + End If + End If + Next + + ObjInventarios.Dispose() + + For Each dr As DataRow In DtDatos.Rows + If CBool(dr("AplicaLote")) Then + + Dim dtta As DataTable = DtLotesCaducidad.FiltraParametros(String.Format("CvePS = {0}", dr("CvePS"))) + + If dtta IsNot Nothing AndAlso dtta.Rows.Count > 0 Then + + 'recorre que cumplan con la cantidad total a llenar + Dim CantidadSurtir As Decimal = dr("CantidadF").ToString.ToDecimal + For Each drl As DataRow In dtta.Rows + If CantidadSurtir < drl("Cantidad").ToString.ToDecimal Then + dr("CantidadF") = CantidadSurtir + dr("CantidadC") = CantidadSurtir + dr("Lote") = drl("Lote") + dr("FechaCaducidad") = drl("FechaCaducidad") + TempDT.ImportRow(dr) + CantidadSurtir = 0 + Else + CantidadSurtir -= drl("Cantidad").ToString.ToDecimal + dr("CantidadF") = drl("Cantidad").ToString.ToDecimal + dr("CantidadC") = drl("Cantidad").ToString.ToDecimal + dr("Lote") = drl("Lote") + dr("FechaCaducidad") = drl("FechaCaducidad") + TempDT.ImportRow(dr) + End If + If CantidadSurtir <= 0 Then Exit For + Next + + Else + 'error, no hay lote sugerido + End If + Else + TempDT.ImportRow(dr) + End If + + Next + + + DtDatos = TempDT + End Sub + +#End Region 'Protected void LnkEditarDir_Click(Object sender, EventArgs e) @@ -4522,52 +4522,52 @@ Partial Class Inventarios_EntregaAlmacen - Protected Sub LnkEditarDir_Click(sender As Object, e As EventArgs) - - HdnCveVenta.Value = CveVentaSurtir.ToString - CargaModalCombosDirecciones(CveCliente, CveDireccionEnvio) - - RegistraScript("$('#DivEditarEntrega').modal({backdrop: 'static', keyboard: false});") - - End Sub - - - Private Sub CargaModalCombosDirecciones(CveCliente As Integer, CveDireccionEnvio As Integer) - - DdlModalDireccionEnvio.Items.Clear() - - Dim dtt As New DataTable() - Dim ObjClientes As New ClsClientes() - If (ObjClientes.DireccionEnvioGet(-1, CveCliente, -1)) Then - dtt = ObjClientes.DtResultados - End If - ObjClientes.Dispose() - - DdlModalDireccionEnvio.DataSource = dtt - DdlModalDireccionEnvio.DataBind() - DdlModalDireccionEnvio.SelectedValueExist(CveDireccionEnvio) - UpModalEditarentrega.Update() - dtt.Dispose() - - End Sub - - - Protected Sub BtnModalEditarentrega_Click(sender As Object, e As EventArgs) - Dim ProcesoOK As Boolean = True - - Dim ObjVentas As New ClsVentas() - If Not ObjVentas.UpdateDireccionEnvioVenta(HdnCveVenta.Value.ToEntero(), DdlModalDireccionEnvio.SelectedValue.ToEntero(), UsuarioActual.CveEmpresa) Then - ProcesoOK = False - End If - ObjVentas.Dispose() - - If ProcesoOK Then - RegistraScript("$('#DivEditarEntrega').modal('hide');") - Alert("Dirección Actualizada correctamente.", ModExtensiones.TipoMensaje.ToastInformacion) - 'CargaDatos() - End If - - + Protected Sub LnkEditarDir_Click(sender As Object, e As EventArgs) + + HdnCveVenta.Value = CveVentaSurtir.ToString + CargaModalCombosDirecciones(CveCliente, CveDireccionEnvio) + + RegistraScript("$('#DivEditarEntrega').modal({backdrop: 'static', keyboard: false});") + + End Sub + + + Private Sub CargaModalCombosDirecciones(CveCliente As Integer, CveDireccionEnvio As Integer) + + DdlModalDireccionEnvio.Items.Clear() + + Dim dtt As New DataTable() + Dim ObjClientes As New ClsClientes() + If (ObjClientes.DireccionEnvioGet(-1, CveCliente, -1)) Then + dtt = ObjClientes.DtResultados + End If + ObjClientes.Dispose() + + DdlModalDireccionEnvio.DataSource = dtt + DdlModalDireccionEnvio.DataBind() + DdlModalDireccionEnvio.SelectedValueExist(CveDireccionEnvio) + UpModalEditarentrega.Update() + dtt.Dispose() + + End Sub + + + Protected Sub BtnModalEditarentrega_Click(sender As Object, e As EventArgs) + Dim ProcesoOK As Boolean = True + + Dim ObjVentas As New ClsVentas() + If Not ObjVentas.UpdateDireccionEnvioVenta(HdnCveVenta.Value.ToEntero(), DdlModalDireccionEnvio.SelectedValue.ToEntero(), UsuarioActual.CveEmpresa) Then + ProcesoOK = False + End If + ObjVentas.Dispose() + + If ProcesoOK Then + RegistraScript("$('#DivEditarEntrega').modal('hide');") + Alert("Dirección Actualizada correctamente.", ModExtensiones.TipoMensaje.ToastInformacion) + 'CargaDatos() + End If + + End Sub Private Function CierreOS(CveOSCerrar As Integer, CveMovimientoGenerado As Integer, ByRef TransaccionSql As SqlTransaction) As Boolean @@ -4588,6 +4588,39 @@ Partial Class Inventarios_EntregaAlmacen Dim ObjInventario As New ClsInventarios(TransaccionSql) If ObjInventario.GetMovimientosDetalle(CveMovimientoGenerado, UsuarioActual.CveEmpresa) Then If Not cancelarPeido Then + + + 'Dim DT_Ventas_Detalles As DataTable = DTSolicitudDev.FiltraParametros("", "", {"CantidadPedido", "CvePS", "CveVentaDetalle"}) + 'DT_Ventas_Detalles.Columns.Add("CantidadUsada", GetType(Decimal)) + 'DT_Ventas_Detalles.AcceptChanges() + + 'For Each dRow As DataRow In DT_Ventas_Detalles.Rows + + ' For Each gvRow As GridViewRow In GvMU.Rows + + ' Dim CantidadUsada As Decimal = gvRow.FCTextBox("TxtUtilizado").Text.ToDecimal + + ' If dRow("CvePS").ToString.ToDecimal = gvRow.DataKey("CvePS").ToDecimal AndAlso CantidadUsada > 0 Then + + ' dRow("CantidadUsada") = dRow("CantidadUsada").ToString.ToDecimal + CantidadUsada + + ' End If + ' Next + + 'Next + + 'For Each dRow As DataRow In DT_Ventas_Detalles.Rows + ' Dim CantidadUsada As Decimal = dRow("CantidadUsada").ToString.ToDecimal + ' If dRow("CantidadUsada").ToString.ToDecimal < dRow("CantidadPedido").ToString.ToDecimal Then + ' If Not ObjInventario.UpdatePedidoDetalleCantidad(dRow("CveVentaDetalle").ToString.ToEntero, CantidadUsada, 2) Then + ' ProcesoOK = False + ' Exit For + ' End If + ' End If + 'Next + + + For Each Dr As DataRow In ObjInventario.DtResultados.Rows Dim CveVentaDetalle As Integer = Dr("CveVentaDetalle").ToString().ToEntero() @@ -4603,8 +4636,10 @@ Partial Class Inventarios_EntregaAlmacen End If Next - End If + + + End If End If End If @@ -4622,8 +4657,8 @@ Partial Class Inventarios_EntregaAlmacen Return Respuesta - End Function - + End Function + Private Function CancelarPedido(ByRef TransaccionSql As SqlTransaction, CveMovimientoGenerado As Integer, ByRef RespuestaPadre As Boolean) As Boolean Dim Cancelar As Boolean = True @@ -4742,4 +4777,4 @@ Partial Class Inventarios_EntregaAlmacen End Sub -End Class +End Class diff --git a/Inventarios/RepNotasSinAlmacen.aspx b/Inventarios/RepNotasSinAlmacen.aspx index bbe1ffb73..0eb7ee138 100644 --- a/Inventarios/RepNotasSinAlmacen.aspx +++ b/Inventarios/RepNotasSinAlmacen.aspx @@ -79,7 +79,7 @@
    - +
    @@ -136,11 +136,11 @@
    - <%--
    Sucursal:
    -
    - - - + <%--
    Sucursal:
    +
    + + +
    --%>
    @@ -192,7 +192,7 @@ <%--7--%> <%--8--%> - + <%--9--%> @@ -243,51 +243,51 @@ - <%-- - + --%> diff --git a/Inventarios/TrasladoSolicitud.aspx b/Inventarios/TrasladoSolicitud.aspx index 47be19ad5..233a9f6af 100644 --- a/Inventarios/TrasladoSolicitud.aspx +++ b/Inventarios/TrasladoSolicitud.aspx @@ -121,7 +121,7 @@
    - +
    diff --git a/LogIn.aspx.vb b/LogIn.aspx.vb index 23402497a..104e4dd54 100644 --- a/LogIn.aspx.vb +++ b/LogIn.aspx.vb @@ -116,35 +116,25 @@ Partial Class LogIn PnlLogin.Visible = False If elapsedSpan.Days < 3 Then + Dim tGrupoEmpresa As String = ClsPaginas.GlobalGrupoEmpresa(Request.Url.Host.ToUpper()) + Dim NombreCadena As String = ClsPaginas.GlobalNombreCadenaConexionDominio(Request.Url.Host.ToUpper()) - Dim Usr As New ClsSisUsuarios - If Usr.GetUsuarios(CveUsuario, -1, -1) Then + Dim ObjUsuario As New ClsSisUsuarioAutenticacion(NombreCadena:=NombreCadena) + Dim Usuario As Usuario = ObjUsuario.GetUsuarioDetalle(CveUsuario, CveEmpresa:=CveEmpresa) - Dim dr As DataRow = Usr.DtResultados.FiltroPrimero("") - - If dr IsNot Nothing Then - If dr("PolCambiarContraseña").ToString = "SI" Then - PnlContra.Visible = True - 'HCambio.Visible = True - 'HdnCveUsr.Value = CveUsuario.ToString - Me.Form.DefaultButton = BtnGuardar.ClientID - 'If Usr.UpdateUsuarioPortal(dr("Usuario").ToString, dr("Nombre").ToString, - ' dr("Permiso1").ToString = "True", dr("Permiso2").ToString = "True", dr("Permiso3").ToString = "True", dr("Permiso4").ToString = "True", dr("Permiso5").ToString = "True", - ' dr("Permiso6").ToString = "True", dr("Permiso7").ToString = "True", dr("Permiso8").ToString = "True", dr("Permiso9").ToString = "True", dr("Permiso10").ToString = "True", - ' True, TxtContrasenia1.Text, dr("CveCliente").ToString.ToEntero, dr("CveProveedor").ToString.ToEntero, CveUsr) Then - - ' Alert("Contraseña Modificada.", TipoMensaje.MsgConfirmacion, JSBtnAceptar:="location.href=""ConsultaCliente.aspx""") - - 'End If - Else - Alert("El usuario ya cambio su contraseña, inicie sesión normalmente.", TipoMensaje.MsgInformacion) - PnlLogin.Visible = True - End If + If Usuario IsNot Nothing Then + If Usuario.Contraseña = ClsPaginas.ContraseñaPredeterminadaEncriptada Then + PnlContra.Visible = True + Me.Form.DefaultButton = BtnGuardar.ClientID Else - Alert("El Usuario no existe", TipoMensaje.MsgError) + Alert("El usuario ya cambio su contraseña, inicie sesión normalmente.", TipoMensaje.MsgInformacion) + PnlLogin.Visible = True End If + Else + Alert("El Usuario no existe", TipoMensaje.MsgError) End If - Usr.Dispose() + ObjUsuario.Dispose() + Usuario = Nothing Else Alert("La Activación expiró", TipoMensaje.MsgError) End If @@ -177,20 +167,6 @@ Partial Class LogIn Return URLParametros End Function - 'Property GlobalDTUsuarios(Optional CveUsuario As Integer = -1, Optional CveEmpresa As Integer = -1) As Data.DataTable - ' Get - ' If CveUsuario <> -1 Then - ' Dim Dv As New Data.DataView(DirectCast(Application("GlobalDTUsuarios"), Data.DataTable), "CveUsuario =" & CveUsuario, "", Data.DataViewRowState.CurrentRows) - ' GlobalDTUsuarios = Dv.ToTable - ' Dv.Dispose() - ' Else - ' GlobalDTUsuarios = DirectCast(Application("GlobalDTUsuarios"), Data.DataTable) - ' End If - ' End Get - ' Set(value As Data.DataTable) - ' Application("GlobalDTUsuarios") = value - ' End Set - 'End Property Dim BtnLogIn_Clickenter As Integer = 0 Protected Sub BtnLogIn_Click(ByVal sender As Object, ByVal e As EventArgs) 'Handles CmdLogIn.Click Dim ReturnUrl As String = "/" @@ -218,7 +194,6 @@ Partial Class LogIn If Usuario IsNot Nothing Then If Not Usuario.AutorizadoxIP OrElse (HddAdsCodex.Text.Length > 0 AndAlso Usuario.CodigoAutorizado = HddAdsCodex.Text) Then - 'CreaObjetoEmpresa(Usuario, NombreCadena) ADSSessionConfig.sessionUser.MultipleEmpresa = True Dim x As New ADSSessionObj(Usuario.CveUsuario, Usuario.CveEmpresa) @@ -227,21 +202,14 @@ Partial Class LogIn If Usuario.CvePlataforma = 6 And Usuario.CveRol = 10 Then 'PLATAFORMA PORTAL CLIENTE - 'FormsAuthentication.RedirectFromLoginPage(_sessionid, False) - 'Response.Redirect("/PortalCliente/PortalCliente.aspx", True) - ReturnUrl = "/PortalCliente/PortalCliente.aspx" + If Usuario.CveEmpresa = 194 Then ReturnUrl = "/Ventas/RepPedidosSTF.aspx" ElseIf Usuario.CvePlataforma = 7 And Usuario.CveRol = 11 Then 'PLATAFORMA PORTAL PROVEEDOR - 'FormsAuthentication.RedirectFromLoginPage(Encripta(Usuario.CveUsuario), False) - 'Response.Redirect("/PortalProveedor/PortalProveedor.aspx", True) - ReturnUrl = "/PortalProveedor/PortalProveedor.aspx" ElseIf Usuario.CveRol = 1200 And Usuario.Acceso > 0 Then 'PLATAFORMA GPS Usuario.CvePlataforma = 3 - 'FormsAuthentication.RedirectFromLoginPage(Encripta(Usuario.CveUsuario), False) - 'Response.Redirect("/PortalGPS/InicioGPS.aspx", True) ReturnUrl = "/PortalGPS/InicioGPS.aspx" Else 'PLATAFORMA SIG @@ -308,51 +276,28 @@ Partial Class LogIn End If End Function - 'Private Sub CreaObjetoEmpresa(ByRef UsuarioActual As Usuario, Optional NombreCadena As String = "Conexion") - ' Dim ObjEmpresa As New ClsSisEmpresas(UsuarioActual:=UsuarioActual) - ' If ObjEmpresa.GetEmpresas(UsuarioActual.CveEmpresa, "-1", "-1", "-1", "-1") Then - ' If ObjEmpresa.GetEmpresasFuncionalidades(UsuarioActual.CveEmpresa) Then - ' Dim dttmp As Data.DataTable = ObjEmpresa.DtResultados - - ' Dim EmpresasFuncionalidades As New HybridDictionary - ' For Each Row As Data.DataRow In dttmp.Rows - ' EmpresasFuncionalidades.Add(Convert.ToInt32(Row("CveFuncionalidad")), Row("Valor").ToString) - ' Next - ' ObjEmpresa.Empresa.SetFuncionalidades(EmpresasFuncionalidades) - ' End If - - ' UsuarioActual.Empresa = ObjEmpresa.Empresa - ' Else - ' End If - ' ObjEmpresa.Dispose() - 'End Sub Dim BtnGuardar_Clickenter As Integer = 0 Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs) If BtnGuardar_Clickenter = 0 Then 'esta variable se recicla con cada postaback BtnGuardar_Clickenter = 1 Dim TieneError As Boolean = False - Dim ObjUsuario As New ClsSisUsuarios + Dim tGrupoEmpresa As String = ClsPaginas.GlobalGrupoEmpresa(Request.Url.Host.ToUpper()) + Dim NombreCadena As String = ClsPaginas.GlobalNombreCadenaConexionDominio(Request.Url.Host.ToUpper()) - If ObjUsuario.UpdateUsuarioContrasenia(Encripta(TxtContrasenia1.Text), CveUsuario, CveEmpresa) Then - If ObjUsuario.GetUsuarios(CveUsuario) Then - If ObjUsuario.DtResultados.Rows.Count = 1 Then - Dim dr As DataRow = ObjUsuario.DtResultados.Rows(0) - - txtUsuario.Text = dr("Usuario").ToString - Dim Contraseña As String = Decripta(dr("Contraseña").ToString) - TxtContraseña.Text = Contraseña - - Else - TieneError = True - End If + Dim ObjUsuario As New ClsSisUsuarioAutenticacion(NombreCadena:=NombreCadena) + Dim Usuario As Usuario = ObjUsuario.GetUsuarioDetalle(CveUsuario, CveEmpresa:=CveEmpresa) + If Usuario IsNot Nothing Then + Dim ObjUsuario2 As New ClsSisUsuarios(UsuarioActual:=Usuario) + If ObjUsuario2.UpdateUsuarioContrasenia(Encripta(TxtContrasenia1.Text), CveUsuario, CveEmpresa) Then + txtUsuario.Text = Usuario.Usuario + TxtContraseña.Text = TxtContrasenia1.Text Else TieneError = True End If Else TieneError = True End If - ObjUsuario.Dispose() If Not TieneError Then diff --git a/Nomina/Finiquito.aspx.cs b/Nomina/Finiquito.aspx.cs index dc0e08602..80f5bf986 100644 --- a/Nomina/Finiquito.aspx.cs +++ b/Nomina/Finiquito.aspx.cs @@ -1700,6 +1700,7 @@ public partial class Nomina_Finiquito : ClsPaginas string urlfile = System.IO.Path.Combine(string.Format("{0}Formatos/SobreReciboFiniquito.rdlc", UsuarioActual.Empresa.Ruta)); if (!System.IO.File.Exists(urlfile)) { + parametros.Add(new Microsoft.Reporting.WebForms.ReportParameter("EmpresaDireccion", string.Format("{0} No. {1},Colonia {2} ", UsuarioActual.Empresa.Direccion, UsuarioActual.Empresa.NoExt , UsuarioActual.Empresa.Colonia).ToLower())); urlfile = System.IO.Path.Combine(ModExtensiones.DirectorioBaseEmpresas, "Empresas/Grales/Formatos/SobreReciboFiniquito.rdlc"); } diff --git a/OC/PopUpBuscarReq.aspx b/OC/PopUpBuscarReq.aspx index b6ecbfc70..ad7f39e32 100644 --- a/OC/PopUpBuscarReq.aspx +++ b/OC/PopUpBuscarReq.aspx @@ -141,8 +141,8 @@ - - + + diff --git a/OC/PopUpBuscarReq.aspx.vb b/OC/PopUpBuscarReq.aspx.vb index 23ef40fde..64e17073b 100644 --- a/OC/PopUpBuscarReq.aspx.vb +++ b/OC/PopUpBuscarReq.aspx.vb @@ -176,13 +176,45 @@ Partial Class OC_PopUpBuscarReq Dim guia As String = If(TxtGuia.Text.Trim = "", "-1", TxtGuia.Text) 'Cargar Datos + + Dim Serie As String = "-1" + Dim Folio As Integer = -1 + + If TxtFolio.Text.Trim.Length = 0 Then + Serie = "-1" + Folio = -1 + Else + Dim Array() As String = TxtFolio.Text.Trim.Split(CChar("-")) + + If Array.Length >= 2 Then + If Array.Length = 2 Then + Serie = Array(0) + Folio = Array(1).ToEntero + End If + If Array.Length = 3 Then + Serie = Array(0) + "-" + Array(1) + Folio = Array(2).ToEntero + End If + Else + + Serie = "-1" + Folio = -1 + + If TxtFolio.Text.Trim.ToEntero > 0 Then + Folio = TxtFolio.Text.Trim.ToEntero + Else + Serie = TxtFolio.Text.Trim + End If + End If + End If + If ValidarFiltrosSeleccionado() Then Dim CveProveedor As Integer = If(DdlProveedor.SelectedValue.ToEntero > 0, DdlProveedor.SelectedValue.ToEntero, -1) Dim ObjOC As New ClsOC ObjOC.GetOrdenesCompraRep(DdlTipo.SelectedValue, CveProyecto, CveSubProyecto, -1, DdlEstatus.SelectedValue.ToEntero, FI, MaxFecha, -1, CveProveedor, - If(TxtFolio.Text.ToEntero <= 0, -1, TxtFolio.Text.ToEntero), -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, Guia:=guia, - SoloSubProyectosConPermiso:=If(UsuarioActual.Empresa.Funcionalidad(530) = "1", True, False), TopSelect:=100) + Folio, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, Guia:=guia, + SoloSubProyectosConPermiso:=If(UsuarioActual.Empresa.Funcionalidad(530) = "1", True, False), TopSelect:=100, Serie:=Serie) Dim DtOC As Data.DataTable = ObjOC.DtResultados ' tipotermino, esattus inicial ObjOC.Dispose() @@ -262,7 +294,7 @@ Partial Class OC_PopUpBuscarReq If DdlTipo.SelectedValue = "REQ" OrElse DdlTipo.SelectedValue = "OC" Then Return True If DdlEstatus.SelectedValue.ToEntero > 0 Then Return True If DdlProveedor.SelectedValue.ToEntero > 0 Then Return True - If TxtFolio.Text.ToEntero > 0 Then Return True + If TxtFolio.Text.Trim.Length > 0 Then Return True If DdlSubProyectos.SelectedValue.ToEntero > 0 Then Return True If DdlProyectos.SelectedValue.ToEntero > 0 Then Return True Return False diff --git a/OS/Asignaciones.aspx.vb b/OS/Asignaciones.aspx.vb index 30f26dad3..0d54934db 100644 --- a/OS/Asignaciones.aspx.vb +++ b/OS/Asignaciones.aspx.vb @@ -2,13 +2,14 @@ Option Strict On Imports System.Data +Imports DocumentFormat.OpenXml.Spreadsheet Imports Extensiones Imports Microsoft.Reporting.WebForms Imports MKB.TimePicker Partial Class OS_Asignaciones - Inherits ClsPaginas - + Inherits ClsPaginas + #Region "PROPIEDADES" Private Property TmpDT As DataTable Get @@ -35,7 +36,7 @@ Partial Class OS_Asignaciones Set(value As DataTable) ViewState("DtTecnicosSubProyectos") = value End Set - End Property + End Property #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not IsPostBack Then @@ -103,8 +104,8 @@ Partial Class OS_Asignaciones GvNA.Columns(11).HeaderText = "Hora Cirugía" End If - End Sub - + End Sub + #Region "C A R G A S " Private Sub CargaSubProyecto() DdlSubProyecto.Items.Clear() @@ -139,10 +140,17 @@ Partial Class OS_Asignaciones GvNA.DataSource = Nothing End If GvNA.DataBind() - ObjOS.Dispose() + ObjOS.Dispose() + + + + UpOS.Update() CargarTecnico() - End Sub + End Sub + + + Private Sub CargaOrdenesServiciosAsignadas() Dim ObjOS As New ClsOS @@ -240,7 +248,7 @@ Partial Class OS_Asignaciones Dim picker As MKB.TimePicker.TimeSelector = DirectCast(row.FindControl("TimeSelector"), MKB.TimePicker.TimeSelector) If row.FCCheckBox("ChbxAsignar").Checked Then - time = DateTime.Parse(String.Format("{0} {1}:{2} {3}", row.FCTextBox("FechaOS").Text, picker.Hour, picker.Minute, picker.AmPm)) + time = DateTime.Parse(String.Format("{0} {1}:{2} {3}", row.FCTextBox("FechaOS").Text, picker.Hour, picker.Minute, If(picker.Hour < 12, TimeSelector.AmPmSpec.AM, TimeSelector.AmPmSpec.PM))) contadorOrdenesAsignadas += 1 If ObjOS.GetSubProyectosEstatusInicial(DdlTecnico.SelectedValue.ToEntero, 3, UsuarioActual.CveEmpresa) Then @@ -555,8 +563,14 @@ Partial Class OS_Asignaciones e.Row.FindControl("TimeSelector").Visible = True Dim TMSelector = DirectCast(e.Row.FindControl("TimeSelector"), TimeSelector) - TMSelector.Date = FechaCita - + TMSelector.Date = FechaCita + + 'If TMSelector.Hour = 0 And TMSelector.AmPm = TimeSelector.AmPmSpec.AM Or e.Row.DataKey("CveOS").ToEntero = 9004 Then + If FechaCita.Hour = 0 Then + Dim scripttxth As String = " $(document).ready(function() {setTimeout(function() { document.getElementById('" + TMSelector.UniqueID + "_txtHour').value = '00'; }, 100);}); " + RegistraScript(scripttxth) + End If + e.Row.Cells(10).Attributes.Add("data-order", e.Row.DBCampo("FechaCitaOS").ToDate.Ticks.ToString) e.Row.Cells(11).Attributes.Add("data-order", e.Row.DBCampo("FechaCitaOS").ToDate.ToString("HHmm")) diff --git a/OS/OrdenesServicios.aspx.vb b/OS/OrdenesServicios.aspx.vb index 14029ca24..6c0f5e7cd 100644 --- a/OS/OrdenesServicios.aspx.vb +++ b/OS/OrdenesServicios.aspx.vb @@ -10,6 +10,7 @@ Imports System.ServiceModel.Security Imports RVCFDI.RVLTimbrado Imports Microsoft.Owin.Security.Provider Imports Telerik.Web.UI +Imports ADSNetLibrary.SIGAPI.Services.SAT.DescargaCFDI @@ -478,12 +479,23 @@ Partial Class OS_OrdenesServicios End If End If - If TipoEstatus.Contiene(1, 2, 3, 4) And CveVenta <= 0 Then + If TipoEstatus.Contiene(1, 2, 3) And CveVenta <= 0 And (UsuarioActual.TienePermisoProceso(370) Or UsuarioActual.TienePermisoProceso(382)) Then BtnCancelar.Visible = True - Else + ElseIf TipoEstatus.Contiene(4) And (UsuarioActual.TienePermisoProceso(370) Or UsuarioActual.TienePermisoProceso(382)) Then + BtnCancelar.Visible = False + BtnGuardar.Visible = True + DdlEstatusOS.Enabled = False + ElseIf TipoEstatus.Contiene(5) And (UsuarioActual.TienePermisoProceso(370) Or UsuarioActual.TienePermisoProceso(382)) Then + BtnCancelar.Visible = False BtnGuardar.Visible = False + DdlEstatusOS.Enabled = False + Else + If UsuarioActual.TienePermisoProceso(369) Then ' terminado + BtnGuardar.Visible = True + Else + BtnGuardar.Visible = False + End If End If - End If End Sub @@ -1189,27 +1201,27 @@ Partial Class OS_OrdenesServicios 'ObjEstatusPermisos.Dispose() 'OS Estatus Inicial - If tipoEstatus = 1 And UsuarioActual.TienePermisoProceso(366) Then + If tipoEstatus = 1 AndAlso UsuarioActual.TienePermisoProceso(366) Then Exit Sub End If 'OS Estatus Asignación - If tipoEstatus = 2 And UsuarioActual.TienePermisoProceso(367) Then + If tipoEstatus = 2 AndAlso UsuarioActual.TienePermisoProceso(367) Then Exit Sub End If 'OS Estatus Proceso - If tipoEstatus = 3 And UsuarioActual.TienePermisoProceso(368) Then + If tipoEstatus.Contiene(2, 3) AndAlso UsuarioActual.TienePermisoProceso(368) Then Exit Sub End If 'OS Estatus Terminado - If tipoEstatus = 4 And UsuarioActual.TienePermisoProceso(369) Then + If tipoEstatus.Contiene(2, 3, 4) AndAlso UsuarioActual.TienePermisoProceso(369) Then Exit Sub End If 'OS Estatus Cancelada - If tipoEstatus = 5 And UsuarioActual.TienePermisoProceso(370) Then + If tipoEstatus.Contiene(2, 3, 4, 5) AndAlso UsuarioActual.TienePermisoProceso(370) Then Exit Sub End If @@ -3202,6 +3214,9 @@ Partial Class OS_OrdenesServicios End If End If End If + + 'ProcesoOK = False + Dim Respuesta As New RespuestaFacturacion() Dim DtVentaDetalle As New DataTable Dim CveMovimientoSalida, CveMovimientoEntrada As Integer diff --git a/Planeacion/CatFolios.aspx.vb b/Planeacion/CatFolios.aspx.vb index 0bed2e008..429a06127 100644 --- a/Planeacion/CatFolios.aspx.vb +++ b/Planeacion/CatFolios.aspx.vb @@ -72,6 +72,7 @@ Partial Class CatFolios DdlTipoDocto.Items.Insert(33, New ListItem("Productos/Servicios", "PS")) DdlTipoDocto.Items.Insert(34, New ListItem("NC de Remisión", "RNC")) DdlTipoDocto.Items.Insert(35, New ListItem("Traspaso Carta Porte", "Tra")) + DdlTipoDocto.Items.Insert(35, New ListItem("Retenciones", "Ret")) ElseIf UsuarioActual.Empresa.CvePlataforma = 2 Then DdlTipoDocto.Items.Insert(1, New ListItem("Facturas", "Ing")) DdlTipoDocto.Items.Insert(2, New ListItem("Notas de Crédito", "Egs")) diff --git a/Sistemas/UsuarioDetalle.aspx.vb b/Sistemas/UsuarioDetalle.aspx.vb index 43a048ad0..90c180f2c 100644 --- a/Sistemas/UsuarioDetalle.aspx.vb +++ b/Sistemas/UsuarioDetalle.aspx.vb @@ -1471,14 +1471,16 @@ Partial Class Sistemas_UsuarioDetalle #Region " CONTRASEÑA " - Protected Sub LnkRestablecer_Click(sender As Object, e As EventArgs) Handles LnkRestablecer.Click - Dim Usuario As New ClsSisUsuarios + Protected Sub LnkRestablecer_Click(sender As Object, e As EventArgs) Handles LnkRestablecer.Click + + + Dim ObjUsuario As New ClsSisUsuarios() - If Usuario.UpdateUsuarioContrasenia(Encripta(ContraseñaPredeterminada), CveUsuario, CveEmpresa) Then + If ObjUsuario.UpdateUsuarioContrasenia(Encripta(ContraseñaPredeterminada), CveUsuario, CveEmpresa) Then Alert("Contraseña Restablecida.
    La nueva contraseña es: """ & ContraseñaPredeterminada & "", TipoMensaje.MsgInformacion) End If - Usuario.Dispose() + ObjUsuario.Dispose() End Sub Protected Sub LnkVerPass_Click(sender As Object, e As EventArgs) Handles LnkVerPass.Click diff --git a/Transportes/RepContratoDetalle.aspx b/Transportes/RepContratoDetalle.aspx index 540b89c61..4e00508b8 100644 --- a/Transportes/RepContratoDetalle.aspx +++ b/Transportes/RepContratoDetalle.aspx @@ -117,7 +117,7 @@
    - +
    diff --git a/Transportes/RepContratoDetalle.aspx.vb b/Transportes/RepContratoDetalle.aspx.vb index c5228d721..b766777c9 100644 --- a/Transportes/RepContratoDetalle.aspx.vb +++ b/Transportes/RepContratoDetalle.aspx.vb @@ -148,7 +148,7 @@ Partial Class RepContratoDetalle CveContratoTipo = Contrato.Rows(0)("CveContratoTipo").ToString.ToEntero SubProyecto = Contrato.Rows(0)("SubProyecto").ToString CveMasivo = Contrato.Rows(0)("CveMasivo").ToString.ToEntero - LbFolio.Text = Contrato.Rows(0)("NumeroContrato").ToString + TxtFolio.Text = Contrato.Rows(0)("NumeroContrato").ToString DdlClientes.SelectedText = Contrato.Rows(0)("NombreComercial").ToString DdlClientes.SelectedValue = Contrato.Rows(0)("CveCliente").ToString @@ -267,7 +267,7 @@ Partial Class RepContratoDetalle Response.Clear() Response.ClearHeaders() Response.ClearContent() - Response.AddHeader("Content-Disposition", "attachment; filename=" & LbFolio.Text & $"{File.Extension}") + Response.AddHeader("Content-Disposition", "attachment; filename=" & TxtFolio.Text & $"{File.Extension}") Response.AddHeader("Content-Length", File.Length.ToString()) 'Response.ContentType = "text/plain" Response.ContentType = "application/octet-stream" @@ -297,7 +297,7 @@ Partial Class RepContratoDetalle Dim ObjContratos As New ClsContratos ObjContratos.IniciaTransacSQL() Try - If ObjContratos.UpdateContratos(CveContrato, LbFolio.Text, TxtDescripcion.Text, "", UsuarioActual.CveProveedor, DdlClientes.SelectedValue.ToEntero, -1, TxtFechaSalida.Text.ToDate, TxtFechaRegreso.Text.ToDate, TxtUbicacion.Text, "", + If ObjContratos.UpdateContratos(CveContrato, TxtFolio.Text, TxtDescripcion.Text, "", UsuarioActual.CveProveedor, DdlClientes.SelectedValue.ToEntero, -1, TxtFechaSalida.Text.ToDate, TxtFechaRegreso.Text.ToDate, TxtUbicacion.Text, "", DdlSubProyecto.SelectedValue.ToEntero, -1, -1, -1, -1, ArchivoUpdate, "", -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, False, TxtAnticipo.Text.ToDecimal, -1, TxtImporte.Text.ToDecimal, DdlMoneda.SelectedValue.ToEntero, 0, CveContratoTipo:=CveContratoTipo, CveTipoAF:=DdlTipoAF.SelectedValue.ToEntero, CveContratosEstatus:=CveContratoEstatus, Observaciones:=TxtObservaciones.Text) Then Alert("Contrato actualizado correctamente") @@ -345,7 +345,7 @@ Partial Class RepContratoDetalle Dim dtResult As New DataTable() Dim params As New List(Of ReportParameter) From { - New ReportParameter("Folio", LbFolio.Text), + New ReportParameter("Folio", TxtFolio.Text), New ReportParameter("Cliente", DdlClientes.SelectedText), New ReportParameter("Servicio", TxtDescripcion.Text), New ReportParameter("Observaciones", TxtObservaciones.Text), @@ -364,7 +364,7 @@ Partial Class RepContratoDetalle New ReportParameter("Usuario", UsuarioActual.Nombre) } - ImprimirPDFStimul($"{UsuarioActual.Empresa.Ruta}Formatos\Contrato.mrt", dtResult, params, NombreArchivo:=LbFolio.Text) + ImprimirPDFStimul($"{UsuarioActual.Empresa.Ruta}Formatos\Contrato.mrt", dtResult, params, NombreArchivo:=TxtFolio.Text) End Sub Protected Sub AgregarABitacora(Descripcion As String) Dim ObjEventoBitacora As New ClsOIEventos diff --git a/VIA/RepTripsChecks.aspx b/VIA/RepTripsChecks.aspx new file mode 100644 index 000000000..080746e10 --- /dev/null +++ b/VIA/RepTripsChecks.aspx @@ -0,0 +1,19 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="RepTripsChecks.aspx.cs" Inherits="VYA_RepTripsChecks" %> + + + + + + + + + + + + + + + + + + diff --git a/VIA/RepTripsChecks.aspx.cs b/VIA/RepTripsChecks.aspx.cs new file mode 100644 index 000000000..f7a9ba830 --- /dev/null +++ b/VIA/RepTripsChecks.aspx.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +public partial class VYA_RepTripsChecks : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + + } +} \ No newline at end of file diff --git a/VIA/TripsChecks.aspx b/VIA/TripsChecks.aspx new file mode 100644 index 000000000..9fdf6fea5 --- /dev/null +++ b/VIA/TripsChecks.aspx @@ -0,0 +1,19 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="TripsChecks.aspx.cs" Inherits="VYA_TripsChecks" %> + + + + + + + + + + + + + + + + + + diff --git a/VIA/TripsChecks.aspx.cs b/VIA/TripsChecks.aspx.cs new file mode 100644 index 000000000..a8e28c66e --- /dev/null +++ b/VIA/TripsChecks.aspx.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +public partial class VYA_TripsChecks : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + + } +} \ No newline at end of file diff --git a/Ventas/ProductosServicios.aspx.vb b/Ventas/ProductosServicios.aspx.vb index b3a35cb8a..684a7cc16 100644 --- a/Ventas/ProductosServicios.aspx.vb +++ b/Ventas/ProductosServicios.aspx.vb @@ -458,7 +458,7 @@ Partial Class ProductosyServicios DivCitricos.Visible = True CargaPanelCitricos() End If - If UsuarioActual.CveEmpresa = 119 Then + If UsuarioActual.CveEmpresa.Contiene(119, 194) Then DiveCommerce.Visible = True Dim CveCategoria2 As Integer = GlobalDTGralCategorias2(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveCategoria", "Categoria = 'Ecommerce'").ToEntero DdlEcommerceClasificacion.DataSource = GlobalDTClasificaciones2(UsuarioActual.CveEmpresa, CveCategoria2) diff --git a/Ventas/RepPS.aspx.vb b/Ventas/RepPS.aspx.vb index 8a6227ec3..181747b38 100644 --- a/Ventas/RepPS.aspx.vb +++ b/Ventas/RepPS.aspx.vb @@ -70,7 +70,6 @@ Partial Class Ventas_RepPS DdlPS.ddl.Items.Insert(0, New ListItem("Seleccione el Producto", "-1")) End If - If UsuarioActual.Empresa.Funcionalidad(130) = "1" Then DivMarca.Visible = True LblMarca.Visible = True @@ -78,17 +77,12 @@ Partial Class Ventas_RepPS DivLinea.Visible = True DdlMarcaPSDes.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa) - 'Using ObjMarcas As New ClsProductosServicios - ' If ObjMarcas.GetMarcas(UsuarioActual.CveEmpresa) Then - ' DdlMarcaPSDes.DataSource = ObjMarcas.DtResultados - ' DdlMarcaPSDes.DataBind() - ' End If - 'End Using + DdlMarcaPSDes.DataBind() End If DdlLinea.DataSource = GlobalDTClasificacionesDetalle(UsuarioActual.CveEmpresa) DdlLinea.DataBind() - 'DdlMarcaPSDes.Items.Insert(0, New ListItem(" Todos ", "-1")) + DdlMarcaPSDes.Items.Insert(0, New ListItem(" Todos ", "-1")) End Sub Private Sub CargaDatos() diff --git a/Ventas/RepPedidosSTF.aspx b/Ventas/RepPedidosSTF.aspx index 4bea386f3..9393f1d83 100644 --- a/Ventas/RepPedidosSTF.aspx +++ b/Ventas/RepPedidosSTF.aspx @@ -20,7 +20,7 @@
  • - Ver Dlls en pesos +
  • @@ -120,13 +120,17 @@ - - - - - - - + + +
    + +
    +
    + + + + + diff --git a/Ventas/RepPedidosSTF.aspx.vb b/Ventas/RepPedidosSTF.aspx.vb index d32d8d548..e8fd6f860 100644 --- a/Ventas/RepPedidosSTF.aspx.vb +++ b/Ventas/RepPedidosSTF.aspx.vb @@ -62,7 +62,8 @@ Partial Class Ventas_RepPedidosSTF Protected Sub GvDatos_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GvDatos.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then - If e.Row.DBCampo("CveVendedor") = "" Then e.Row.FCCheckBox("Chk").Visible = False + If e.Row.DBCampo("CveVendedor") = "" OrElse e.Row.DBCampo("CvePS") = "" Then e.Row.FCCheckBox("Chk").Visible = False + If e.Row.DBCampo("TipoRenglon") = "1" Then e.Row.CssClass = "SubTotales" End If End Sub diff --git a/Ventas/RepRecuperacion.aspx b/Ventas/RepRecuperacion.aspx index bd0cc58e1..d5e2c20c7 100644 --- a/Ventas/RepRecuperacion.aspx +++ b/Ventas/RepRecuperacion.aspx @@ -76,14 +76,18 @@
    -
    Sucursal:
    -
    - - - -
    + Proyecto: +
    + +
    + SubProyecto: +
    + + + +
    Grupo:
    -
    +
    @@ -100,7 +104,7 @@ - +
    diff --git a/Ventas/RepRecuperacion.aspx.vb b/Ventas/RepRecuperacion.aspx.vb index ce26278dd..271fbc768 100644 --- a/Ventas/RepRecuperacion.aspx.vb +++ b/Ventas/RepRecuperacion.aspx.vb @@ -108,8 +108,12 @@ Partial Class Ventas_RepRecuperacion End If 'Carga SubProyectos - DdlSubProyecto.DataSource = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1) - DdlSubProyecto.DataBind() + 'DdlSubProyecto.DataSource = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1) + 'DdlSubProyecto.DataBind() + + CargarCentrosDeCosto(DdlProyecto, DdlSubProyecto, LblProyecto, LblSubProyecto, divProyecto:=DivProyecto, VisualizacionReporte:=1) + + If UsuarioActual.Empresa.Funcionalidad(307) <> "" Then DdlGrupo.Items.Add(New ListItem(UsuarioActual.Empresa.Funcionalidad(307), "18")) 'Carga Vendedor DdlVendedor.DataSource = GlobalDTVendedores(UsuarioActual.CveEmpresa) @@ -149,7 +153,6 @@ Partial Class Ventas_RepRecuperacion txtFechaI.Text = $"01/{NowADS().Month}/{NowADS().Year}" txtFechaF.Text = NowADS().ToShortDateString - If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then lblEsDistribuidor.Visible = True divEsDistribuidor.Visible = True @@ -169,13 +172,12 @@ Partial Class Ventas_RepRecuperacion Dim FechaAplicadoI As Date = If(IsDate(TxtFechaAplicadoI.Text), TxtFechaAplicadoI.Text.ToDate, MinFecha) Dim FechaAplicadoF As Date = If(IsDate(TxtFechaAplicadoF.Text), TxtFechaAplicadoF.Text.ToDate, MaxFecha) - Dim FechaRegistroIEI As Date = If(IsDate(TxtFechaRegistroIEI.Text), TxtFechaRegistroIEI.Text.ToDate, MinFecha) Dim FechaRegistroIEF As Date = If(IsDate(TxtFechaRegistroIEF.Text), TxtFechaRegistroIEF.Text.ToDate, MaxFecha) If ObjMovtos.GetRepRecuperacion(txtFechaI.Text.ToDate, txtFechaF.Text.ToDate, DdlClientes.SelectedValue.ToEntero, DdlSubProyecto.SelectedValue.ToEntero, DdlVendedor.SelectedValue.ToEntero, DdlUsuario.SelectedValue.ToEntero, -1, - "-1", UsuarioActual.CveEmpresa, DdlGrupo.SelectedValue.ToEntero, DdlResponsable.SelectedValue.ToEntero, DdlTipoDocto.SelectedValue.ToString, CveBanco:=DdlBanco.SelectedValue.ToEntero, CveCuenta:=DdlCuentaBancaria.SelectedValue.ToEntero, + "-1", UsuarioActual.CveEmpresa, DdlGrupo.SelectedValue.ToEntero, DdlResponsable.SelectedValue.ToEntero, DdlTipoDocto.SelectedValue.ToString, CveProyecto:=DdlProyecto.SelectedValue.ToEntero, CveBanco:=DdlBanco.SelectedValue.ToEntero, CveCuenta:=DdlCuentaBancaria.SelectedValue.ToEntero, EstatusCliente:=DdlEstatusCliente.SelectedValue.ToEntero, CveUsuarioConsulta:=UsuarioActual.CveUsuario, TipoCambio:=RblTipoCambio.SelectedValue.ToEntero, TCEspecifico:=TCEspecifico, CveClienteClasificacion:=DdlClienteClasificacion.SelectedValue.ToEntero, EsDistribuidor:=DdlDistribuidor.SelectedValue.ToEntero(), FechaAplicadoI:=FechaAplicadoI, FechaAplicadoF:=FechaAplicadoF, FechaRegistroIEI:=FechaRegistroIEI, FechaRegistroIEF:=FechaRegistroIEF, CveCondicionesPago:=DdlCondicionesPago.SelectedValue.ToEntero, CveMoneda:=DdlMoneda.SelectedValue.ToEntero) Then @@ -220,15 +222,15 @@ Partial Class Ventas_RepRecuperacion End If End If - Dim Liga4 As String = String.Format("/Ventas/RepRecuperacionDetalle.aspx?GPO={0}&CveCliente={1}&CveSubProyecto={2}&Vendedor={3}&CveUsuario={4}&CveEstatusFactura={5}&IVA={6}&FechaI={7}&FechaF={8}&CveResponsable={9}&TipoDocto={10}&CveClienteSucursal={11}&CveBanco{12}&CveCuenta{13}&Grupo={14}&TipoCambio={15}&TCEspecifico={16}&CveMoneda={17}&Tipo={18}&EsDistribuidor={19}&FechaAplicadoI={20}&FechaAplicadoF={21}&FechaRegistroIEI={22}&FechaRegistroIEF={23}&CveCondicionesPago={24}&CveTipoTransaccion={25}", + Dim Liga4 As String = String.Format("/Ventas/RepRecuperacionDetalle.aspx?GPO={0}&CveCliente={1}&CveSubProyecto={2}&Vendedor={3}&CveUsuario={4}&CveEstatusFactura={5}&IVA={6}&FechaI={7}&FechaF={8}&CveResponsable={9}&TipoDocto={10}&CveClienteSucursal={11}&CveBanco{12}&CveCuenta{13}&Grupo={14}&TipoCambio={15}&TCEspecifico={16}&CveMoneda={17}&Tipo={18}&EsDistribuidor={19}&FechaAplicadoI={20}&FechaAplicadoF={21}&FechaRegistroIEI={22}&FechaRegistroIEF={23}&CveCondicionesPago={24}&CveTipoTransaccion={25}&CveProyecto={26}", DdlGrupo.SelectedValue, e.Row.DBCampo("CveCliente"), e.Row.DBCampo("CveSubProyecto"), e.Row.DBCampo("CveVendedor"), - e.Row.DBCampo("CveUsuario"), e.Row.DBCampo("CveEstatusFactura"), e.Row.DBCampo("GPO_IVA"), FechaI, FechaF, DdlResponsable.SelectedValue, e.Row.DBCampo("TipoDocto"), CveClienteSucursal, e.Row.DBCampo("CveBanco"), e.Row.DBCampo("CveCuenta"), e.Row.DBCampo("GPO"), e.Row.DBCampo("TipoCambio"), e.Row.DBCampo("TCEspecifico"), e.Row.DBCampo("CveMoneda"), 2, e.Row.DBCampo("EsDistribuidor"), FechaAplicadoI, FechaAplicadoF, FechaRegistroIEI, FechaRegistroIEF, e.Row.DBCampo("CveCondicionesPago"), e.Row.DBCampo("CveTipoTransaccion")) + e.Row.DBCampo("CveUsuario"), e.Row.DBCampo("CveEstatusFactura"), e.Row.DBCampo("GPO_IVA"), FechaI, FechaF, DdlResponsable.SelectedValue, e.Row.DBCampo("TipoDocto"), CveClienteSucursal, e.Row.DBCampo("CveBanco"), e.Row.DBCampo("CveCuenta"), e.Row.DBCampo("GPO"), e.Row.DBCampo("TipoCambio"), e.Row.DBCampo("TCEspecifico"), e.Row.DBCampo("CveMoneda"), 2, e.Row.DBCampo("EsDistribuidor"), FechaAplicadoI, FechaAplicadoF, FechaRegistroIEI, FechaRegistroIEF, e.Row.DBCampo("CveCondicionesPago"), e.Row.DBCampo("CveTipoTransaccion"), e.Row.DBCampo("CveProyecto")) e.Row.FCHyperLink("HplPagado").NavigateUrl = Liga4 - Dim Liga5 As String = String.Format("/Ventas/RepRecuperacionDetalle.aspx?GPO={0}&CveCliente={1}&CveSubProyecto={2}&Vendedor={3}&CveUsuario={4}&CveEstatusFactura={5}&IVA={6}&FechaI={7}&FechaF={8}&CveResponsable={9}&TipoDocto={10}&CveClienteSucursal={11}&CveBanco{12}&CveCuenta{13}&Grupo={14}&TipoCambio={15}&TCEspecifico={16}&CveMoneda={17}&Tipo={18}&EsDistribuidor={19}&FechaAplicadoI={20}&FechaAplicadoF={21}&FechaRegistroIEI={22}&FechaRegistroIEF={23}&CveCondicionesPago={24}&CveTipoTransaccion={25}", + Dim Liga5 As String = String.Format("/Ventas/RepRecuperacionDetalle.aspx?GPO={0}&CveCliente={1}&CveSubProyecto={2}&Vendedor={3}&CveUsuario={4}&CveEstatusFactura={5}&IVA={6}&FechaI={7}&FechaF={8}&CveResponsable={9}&TipoDocto={10}&CveClienteSucursal={11}&CveBanco{12}&CveCuenta{13}&Grupo={14}&TipoCambio={15}&TCEspecifico={16}&CveMoneda={17}&Tipo={18}&EsDistribuidor={19}&FechaAplicadoI={20}&FechaAplicadoF={21}&FechaRegistroIEI={22}&FechaRegistroIEF={23}&CveCondicionesPago={24}&CveTipoTransaccion={25}&CveProyecto={26}", DdlGrupo.SelectedValue, e.Row.DBCampo("CveCliente"), e.Row.DBCampo("CveSubProyecto"), e.Row.DBCampo("CveVendedor"), - e.Row.DBCampo("CveUsuario"), e.Row.DBCampo("CveEstatusFactura"), e.Row.DBCampo("GPO_IVA"), FechaI, FechaF, DdlResponsable.SelectedValue, e.Row.DBCampo("TipoDocto"), CveClienteSucursal, e.Row.DBCampo("CveBanco"), e.Row.DBCampo("CveCuenta"), e.Row.DBCampo("GPO"), e.Row.DBCampo("TipoCambio"), e.Row.DBCampo("TCEspecifico"), e.Row.DBCampo("CveMoneda"), 1, e.Row.DBCampo("EsDistribuidor"), FechaAplicadoI, FechaAplicadoF, FechaRegistroIEI, FechaRegistroIEF, e.Row.DBCampo("CveCondicionesPago"), e.Row.DBCampo("CveTipoTransaccion")) + e.Row.DBCampo("CveUsuario"), e.Row.DBCampo("CveEstatusFactura"), e.Row.DBCampo("GPO_IVA"), FechaI, FechaF, DdlResponsable.SelectedValue, e.Row.DBCampo("TipoDocto"), CveClienteSucursal, e.Row.DBCampo("CveBanco"), e.Row.DBCampo("CveCuenta"), e.Row.DBCampo("GPO"), e.Row.DBCampo("TipoCambio"), e.Row.DBCampo("TCEspecifico"), e.Row.DBCampo("CveMoneda"), 1, e.Row.DBCampo("EsDistribuidor"), FechaAplicadoI, FechaAplicadoF, FechaRegistroIEI, FechaRegistroIEF, e.Row.DBCampo("CveCondicionesPago"), e.Row.DBCampo("CveTipoTransaccion"), e.Row.DBCampo("CveProyecto")) e.Row.FCHyperLink("HplVendido").NavigateUrl = Liga5 @@ -241,28 +243,43 @@ Partial Class Ventas_RepRecuperacion e.Row.CssClass = "SubTotales" End If End If - - End If End If - End Sub - + End Sub + #End Region - + #Region "SELECTED INDEX CHANGE" - + Protected Sub DdlBanco_SelectedIndexChanged(sender As Object, e As EventArgs) DdlCuentaBancaria.Items.Clear() DdlCuentaBancaria.DataSource = GlobalDTBancosCuentas(UsuarioActual.CveUsuario, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros($"CveBanco = {DdlBanco.SelectedValue.ToEntero}") DdlCuentaBancaria.Items.Insert(0, New ListItem("Todos", "-1")) DdlCuentaBancaria.DataBind() - End Sub - + End Sub + + + Protected Sub DdlProyecto_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles DdlProyecto.SelectedIndexChanged + CargaSubProyecto(DdlSubProyecto, DdlProyecto.SelectedValue) + End Sub + Public Sub CargaSubProyecto(DdlSubProyecto As DropDownList, CveProyecto As String, Optional AplicaTodos As String = "Todos") + DdlSubProyecto.Items.Clear() + DdlSubProyecto.ClearSelection() + DdlSubProyecto.DataSource = If(Not UsuarioActual.TienePermisoProceso(110), GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, CveProyecto.ToEntero(), UsuarioActual.CveEmpresa, -1, 1), GlobalDTSubProyectos(UsuarioActual.CveEmpresa, CveProyecto:=CveProyecto.ToEntero(), Estatus:=1)) + DdlSubProyecto.DataBind() + If AplicaTodos <> "" Then + If DdlSubProyecto.GetType() Is GetType(ListBox) Then + 'DdlSubProyecto.Text = "Seleccione" + Else + DdlSubProyecto.Items.Insert(0, New ListItem(If(CveProyecto <> "-1", AplicaTodos, "Todos"), "-1")) + End If + End If + End Sub #End Region - + #Region "IMPRESIONES" - + Protected Sub LnkPdf_Click(sender As Object, e As EventArgs) Imprimir("PDF") End Sub diff --git a/Ventas/RepRecuperacionDetalle.aspx b/Ventas/RepRecuperacionDetalle.aspx index e4ee3e6ff..60e27f49a 100644 --- a/Ventas/RepRecuperacionDetalle.aspx +++ b/Ventas/RepRecuperacionDetalle.aspx @@ -81,14 +81,18 @@
    -
    Sucursal:
    -
    + Proyecto: +
    + +
    + SubProyecto: +
    - - -
    + + +
    Grupo:
    -
    +
    @@ -104,7 +108,7 @@ - +
    diff --git a/Ventas/RepRecuperacionDetalle.aspx.vb b/Ventas/RepRecuperacionDetalle.aspx.vb index b073c75a2..0fc3118bb 100644 --- a/Ventas/RepRecuperacionDetalle.aspx.vb +++ b/Ventas/RepRecuperacionDetalle.aspx.vb @@ -94,7 +94,7 @@ Partial Class Ventas_RepRecuperacionDetalle #Region "CARGAS" Private Sub CargaCombos() - Dim CveCliente, CveVendedor, CveUsuario, CveSubProyecto, + Dim CveCliente, CveVendedor, CveUsuario, CveProyecto, CveSubProyecto, CveEstatus, CveResponsable, CveAgrupador, CveBanco, CveCuenta, CveClienteSucursal, CveMoneda, CveClienteClasificacion As Integer Dim FechaI, FechaF, TipoDocto, TipoCambio, FechaAplicadoI, FechaAplicadoF, FechaRegistroIEI, FechaRegistroIEF As String @@ -111,9 +111,11 @@ Partial Class Ventas_RepRecuperacionDetalle DdlClientes.ddl.Items.Insert(0, New ListItem("Todos", "-1")) End If + If UsuarioActual.Empresa.Funcionalidad(307) <> "" Then DdlGrupo.Items.Add(New ListItem(UsuarioActual.Empresa.Funcionalidad(307), "18")) 'Carga SubProyectos - DdlSubProyecto.DataSource = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1) - DdlSubProyecto.DataBind() + 'DdlSubProyecto.DataSource = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1) + 'DdlSubProyecto.DataBind() + CargarCentrosDeCosto(DdlProyecto, DdlSubProyecto, LblProyecto, LblSubProyecto, divProyecto:=DivProyecto, VisualizacionReporte:=1) 'Carga Vendedor DdlVendedor.DataSource = GlobalDTVendedores(UsuarioActual.CveEmpresa) @@ -179,7 +181,8 @@ Partial Class Ventas_RepRecuperacionDetalle End If TipoDocto = IfNull(Request("TipoDocto"), "-1").ToString - CveClienteSucursal = IfNull(Request("CveClienteSucursal"), "-1").ToString.ToEntero + CveClienteSucursal = IfNull(Request("CveClienteSucursal"), "-1").ToString.ToEntero + CveProyecto = IfNull(Request("CveProyecto"), "-1").ToString.ToEntero CveSubProyecto = IfNull(Request("CveSubProyecto"), "-1").ToString.ToEntero CveVendedor = IfNull(Request("Vendedor"), "-1").ToString.ToEntero CveCliente = IfNull(Request("CveCliente"), "-1").ToString.ToEntero @@ -225,6 +228,7 @@ Partial Class Ventas_RepRecuperacionDetalle DdlClienteClasificacion.Items.Insert(0, New ListItem("Todas", "-1")) DdlVendedor.SelectedValueExist(CveVendedor) + DdlProyecto.SelectedValueExist(CveProyecto) DdlSubProyecto.SelectedValueExist(CveSubProyecto) If CveCliente > 0 Then DdlClientes.SelectedText = GlobalDTCliente(UsuarioActual.CveEmpresa, Estatus:=-1, CveCliente:=CveCliente).FiltroPrimeroValor("NombreComercial", "") @@ -268,7 +272,7 @@ Partial Class Ventas_RepRecuperacionDetalle If ObjMovtos.GetRepRecuperacionDetalle(txtFechaI.Text.ToDate, txtFechaF.Text.ToDate, DdlClientes.SelectedValue.ToEntero, DdlSubProyecto.SelectedValue.ToEntero, DdlVendedor.SelectedValue.ToEntero, DdlUsuario.SelectedValue.ToEntero, DdlClienteSucursal.SelectedValue.ToEntero, -1, Iva.ToString, DdlGrupo.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, DdlResponsable.SelectedValue.ToEntero, - DdlTipoDocto.SelectedValue, CveUsuarioConsulta:=UsuarioActual.CveUsuario, CveBanco:=DdlBanco.SelectedValue.ToEntero, CveCuenta:=DdlCuentaBancaria.SelectedValue.ToEntero, Grupo:=Grupo, + DdlTipoDocto.SelectedValue, CveProyecto:=DdlProyecto.SelectedValue.ToEntero, CveUsuarioConsulta:=UsuarioActual.CveUsuario, CveBanco:=DdlBanco.SelectedValue.ToEntero, CveCuenta:=DdlCuentaBancaria.SelectedValue.ToEntero, Grupo:=Grupo, TipoCambio:=RblTipoCambio.SelectedValue.ToEntero, TCEspecifico:=TCEspecifico, CveMoneda:=DdlMoneda.SelectedValue.ToEntero, CveClienteClasificacion:=DdlClienteClasificacion.SelectedValue.ToEntero, Tipo:=Tipo, EsDistribuidor:=DdlDistribuidor.SelectedValue.ToEntero(), FechaAplicadoI:=FechaAplicadoI, FechaAplicadoF:=FechaAplicadoF, FechaRegistroIEI:=FechaRegistroIEI, FechaRegistroIEF:=FechaRegistroIEF, CveTipoTransaccion:=DdlTipoTransaccion.SelectedValue.ToEntero, CveCondicionesPago:=DdlCondicionesPago.SelectedValue.ToEntero) Then diff --git a/Ventas/RepRecuperacionPeriodo.aspx.cs b/Ventas/RepRecuperacionPeriodo.aspx.cs index 955c2d1bb..614ee2c84 100644 --- a/Ventas/RepRecuperacionPeriodo.aspx.cs +++ b/Ventas/RepRecuperacionPeriodo.aspx.cs @@ -163,7 +163,7 @@ public partial class Ventas_RepRecuperacionPeriodo : ClsPaginas { if (RblTipoCambio.SelectedValue.ToEntero() == 3 && TxtEspecifico.Text != "") { TCEspecifico = TxtEspecifico.Text.ToDouble(); } else { TCEspecifico = -1; } ClsMovimientos ObjMov = new ClsMovimientos(); - if (ObjMov.GetRepRecuperacionPerido(txtFechaI.Text.ToDate(),txtFechaF.Text.ToDate(),DdlClientes.SelectedValue.ToEntero(),DdlSubProyecto.SelectedValue.ToEntero(), + if (ObjMov.GetRepRecuperacionPerido(txtFechaI.Text.ToDate(),txtFechaF.Text.ToDate(),DdlClientes.SelectedValue.ToEntero(),-1,DdlSubProyecto.SelectedValue.ToEntero(), DdlVendedor.SelectedValue.ToEntero(),DdlUsuario.SelectedValue.ToEntero(),-1,"-1",UsuarioActual.CveEmpresa,DdlGrupo.SelectedValue.ToEntero(), DdlResponsable.SelectedValue.ToEntero(),DdlTipoDocto.SelectedValue, DdlEstatusCliente.SelectedValue.ToEntero(),UsuarioActual.CveUsuario, DdlBanco.SelectedValue.ToEntero(), DdlCuentaBancaria.SelectedValue.ToEntero(), TipoCambio, TCEspecifico, DdlClienteClasificacion.SelectedValue.ToEntero())) diff --git a/Ventas/Ventas.aspx b/Ventas/Ventas.aspx index b98899480..0f7f47cb2 100644 --- a/Ventas/Ventas.aspx +++ b/Ventas/Ventas.aspx @@ -4240,7 +4240,7 @@ - + Orden de Compra: