diff --git a/Acumuladores/EntradasUsadosResumenRep.aspx.vb b/Acumuladores/EntradasUsadosResumenRep.aspx.vb index 3a33a5241..335c7881f 100644 --- a/Acumuladores/EntradasUsadosResumenRep.aspx.vb +++ b/Acumuladores/EntradasUsadosResumenRep.aspx.vb @@ -169,24 +169,15 @@ Partial Class Acumuladores_RepEntradasUsados ObjAcum.Dispose() RegistraScript("$('#DModalEditarFecha').modal('hide')") - - - End Sub Protected Sub GvAcum_RowDataBound(sender As Object, e As GridViewRowEventArgs) If e.Row.RowType = DataControlRowType.DataRow Then - If e.Row.DataKey("CvePSCargo").ToEntero <= 0 Then - e.Row.CssClass = "Totales" - End If - - End If - End Sub End Class diff --git a/App_Code/ClsClientes.vb b/App_Code/ClsClientes.vb index 2bed6a55e..c1729537e 100644 --- a/App_Code/ClsClientes.vb +++ b/App_Code/ClsClientes.vb @@ -1667,6 +1667,24 @@ Public Class ClsClientes Return Retorno End Function + Public Function BuscarClienteRFCNombre(RFCNombre As String, CveEmpresa As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Vta_ClientesRFCNombreGet") + + With SqlAdapter.SelectCommand.Parameters + .Add("@RFCNombre", SqlDbType.VarChar).Value = RFCNombre + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + End With + + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al validar el cliente", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + End Function Public Function ValidaClienteRFC(RFC As String, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Vta_ValidarRFC") diff --git a/App_Code/ClsInventarios.vb b/App_Code/ClsInventarios.vb index 59a28d0d3..c2a581513 100644 --- a/App_Code/ClsInventarios.vb +++ b/App_Code/ClsInventarios.vb @@ -1530,13 +1530,14 @@ Public Class ClsInventarios Return Retorno End Function - Public Function GetRepResumenMovimientosDiario(Fecha As Date, CveUsuario As Integer, CveEmpresa As Integer) As Boolean + Public Function GetRepResumenMovimientosDiario(Fecha As Date, CveUsuario As Integer, CveEmpresa As Integer, CveAlmacen As Integer) As Boolean Dim retorno As Boolean = False DataAdapter("PA_Inv_RepResumenMovimientosDiarioGet", CommandType.StoredProcedure) With SqlAdapter.SelectCommand.Parameters .Add("@Fecha", SqlDbType.Date).Value = Fecha .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + .Add("@CveAlmacen", SqlDbType.Int).Value = CveAlmacen End With Try SqlAdapter.Fill(Data) @@ -2328,7 +2329,7 @@ Public Class ClsInventarios Return Retorno End Function - Public Function GetExistenciasPSXML(XML As String, CveAlmacen As Integer, Fecha As String, CveSubProyecto As Integer, CveVendedor As Integer, CveCliente As Integer, ExcluyeApartados As Integer, CveUsuario As Integer, CveEmpresa As Integer) As Boolean + Public Function GetExistenciasPSXML(XML As String, CveAlmacen As Integer, Fecha As String, CveSubProyecto As Integer, CveVendedor As Integer, CveCliente As Integer, ExcluyeApartados As Integer, CveUsuario As Integer, CveEmpresa As Integer, Optional BuscarEnTabla As Boolean = False) As Boolean Dim Retorno As Boolean = False If Fecha = "-1" Then @@ -2346,6 +2347,7 @@ Public Class ClsInventarios .Add("@ExcluyeApartados", SqlDbType.Int).Value = ExcluyeApartados .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + .Add("@BuscarEnTabla", SqlDbType.Bit).Value = BuscarEnTabla End With Try diff --git a/App_Code/ClsMovimientos.vb b/App_Code/ClsMovimientos.vb index c096aa61b..c48d73aee 100644 --- a/App_Code/ClsMovimientos.vb +++ b/App_Code/ClsMovimientos.vb @@ -1899,7 +1899,6 @@ Public Class ClsMovimientos With SqlAdapter.SelectCommand.Parameters .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa .Add("@CveCompra", SqlDbType.Int).Value = CveCompra - End With Try SqlAdapter.Fill(Data) @@ -1911,14 +1910,15 @@ Public Class ClsMovimientos Return Retorno End Function - Public Function GetRemisionesCobranza(CveEmpresa As Integer, CveSubProyecto As Integer, FechaInicio As Date, FechaFin As Date) As Boolean + Public Function GetRemisionesCobranza(CveEmpresa As Integer, CveSubProyecto As Integer, FechaInicio As Date, FechaFin As Date, CveUsuario As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Vta_RemisionesCobranza") With SqlAdapter.SelectCommand.Parameters .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa .Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto .Add("@FechaInicio", SqlDbType.Date).Value = FechaInicio - .Add("@FechaFin", SqlDbType.Date).Value = FechaFin + .Add("@FechaFin", SqlDbType.Date).Value = FechaFin + .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario End With Try SqlAdapter.Fill(Data) diff --git a/App_Code/ClsNominas.vb b/App_Code/ClsNominas.vb index bf0484c07..4bbe11761 100644 --- a/App_Code/ClsNominas.vb +++ b/App_Code/ClsNominas.vb @@ -2828,7 +2828,7 @@ Public Class ClsNominas End Function #Region "Vacaciones" - Public Function GETPersonalVacResumen(CveEmpresa As Integer, CvePersonal As Integer) As Boolean + Public Function GetPersonalVacResumen(CveEmpresa As Integer, CvePersonal As Integer) As Boolean Dim retorno As Boolean = False Try @@ -2848,7 +2848,7 @@ Public Class ClsNominas End Try Return retorno End Function - Public Function GETPersonalVacaciones(CveEmpresa As Integer, CvePersonal As Integer) As Boolean + Public Function GetPersonalVacaciones(CveEmpresa As Integer, CvePersonal As Integer) As Boolean Dim retorno As Boolean = False Try @@ -2972,8 +2972,6 @@ Public Class ClsNominas .Add("@Fecha", SqlDbType.Date).Value = Fecha .Add("@PrimadeRiesgo", SqlDbType.Money).Value = PrimadeRiesgo End With - - SqlAdapter.Fill(DTSet) retorno = True Catch sqEx As SqlException @@ -2994,8 +2992,6 @@ Public Class ClsNominas .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa .Add("@Ejercicio", SqlDbType.Int).Value = Ejercicio End With - - SqlAdapter.Fill(DTSet) retorno = True Catch sqEx As SqlException @@ -3017,8 +3013,6 @@ Public Class ClsNominas .Add("@CveTabla", SqlDbType.Int).Value = CveTabla .Add("@Ejercicio", SqlDbType.Int).Value = Ejercicio End With - - SqlAdapter.Fill(Data) retorno = True Catch sqEx As SqlException @@ -3474,7 +3468,6 @@ Public Class ClsNominas End Function #End Region - #Region "CRUD_RH_TablasValores" Public Function RH_TablasValoresGet(cveEmpresa As Int32, tipo As Int32) As Boolean Dim retorno As Boolean = False @@ -3564,8 +3557,6 @@ Public Class ClsNominas Return retorno End Function #End Region - - Public Function GetAsistenciabetweendate(CveEmpresa As Integer, FechaInicio As DateTime, FechaFin As DateTime) As Boolean Dim retorno As Boolean = False Try @@ -3599,7 +3590,6 @@ Public Class ClsNominas End Try Return retorno End Function - Public Function EmbarqueManifiestoGet(cveSubproyecto As Int32, cveUsuario As Int32, cveEmpresa As Int32, cveEmbarqueManifiesto As Int32) As Boolean Dim retorno As Boolean = False DataAdapter("PA_AGRO_Embarque_ManifiestoGet", CommandType.StoredProcedure) @@ -3610,7 +3600,6 @@ Public Class ClsNominas retorno = RunQuery("Ocurrió un error al obtener el Embarque Manifiesto .") Return retorno End Function - Public Function RepFiniquitos(cveSubproyecto As Int32, CveEstatusFiniquito As Int32, cveEmpresa As Int32, FechaInicio As String, FechaFin As String) As Boolean Dim retorno As Boolean = False DataAdapter("PA_Nom_RepFiniquitos", CommandType.StoredProcedure) @@ -3843,9 +3832,6 @@ Public Class ClsNominas #End Region #End Region - - - Public Function GetLayoutAltaBanorte(CvePeriodo As Integer, CveEmpresa As Integer) As Boolean Dim retorno As Boolean = False DataAdapter("PA_Nom_LayoutAltaBanorteGet", CommandType.StoredProcedure) @@ -3862,7 +3848,6 @@ Public Class ClsNominas Return retorno End Function - 'Public Function GetDispersionNominaBanorte(CvePeriodo As Integer, CveEmpresa As Integer) As Boolean ' Dim retorno As Boolean = False ' DataAdapter("PA_Nom_DispersionNominaBanorteGet", CommandType.StoredProcedure) @@ -3878,7 +3863,6 @@ Public Class ClsNominas ' End Try ' Return retorno 'End Function - Public Function PreNominaTotalSemana(numeroPeriodo As Int32, cveEmpresa As Int32, cveSubProyecto As Int32, cveTipoNomina As Int32, tipoTrabajador As String, ejercicio As Int32, facturado As Boolean) As Boolean Dim retorno As Boolean = False DataAdapter("PA_RH_PreNominaTotalSemana", CommandType.StoredProcedure) @@ -3902,9 +3886,6 @@ Public Class ClsNominas retorno = RunQuery("Ocurrió un error al obtener el PA_Agro_Embarque_TableroGet.") Return retorno End Function - - - Public Function GetRepPersonalDIM(Ejercicio As Integer, CveEmpresa As Integer) As Boolean Dim retorno As Boolean = False DataAdapter("PA_Nom_PersonalDIM", CommandType.StoredProcedure) @@ -3936,7 +3917,6 @@ Public Class ClsNominas End Try Return retorno End Function - Public Function CargaPeriodosEjercicio(ejercicio As Int32, cveTipoPeriodo As Int32, cveSubTipoPeriodo As Int32, numero As Int32, fechaInicio As String, cveEmpresa As Int32, cveUsuario As Int32) As Boolean Dim retorno As Boolean = False DataAdapter("PA_Nom_CargaPeriodosEjercicio", CommandType.StoredProcedure) @@ -3950,8 +3930,6 @@ Public Class ClsNominas retorno = RunQuery("Ocurrió un error al realizar la carga de periodos.") Return retorno End Function - - Public Function CalculaDiasFeriados(fechaInicio As String, fechaFin As String, DiasPagos As Int32, DiasFeriados As Int32, cveEmpresa As Int32, cveUsuario As Int32) As Boolean Dim retorno As Boolean = False DataAdapter("PA_Nom_CalculaDiasFeriados", CommandType.StoredProcedure) @@ -3964,8 +3942,6 @@ Public Class ClsNominas retorno = RunQuery("Ocurrió un error al realizar la carga de periodos.") Return retorno End Function - - Public Function MovimientosSaldosGet(cvePersonal As Int32, cvePeriodo As Int32, cveUsuario As Int32, cveEmpresa As Int32) As Boolean Dim retorno As Boolean = False DataAdapter("PA_Nom_MovimientosSaldosGet", CommandType.StoredProcedure) diff --git a/App_Code/ClsOC.vb b/App_Code/ClsOC.vb index 5e6cc5b5c..29c6072ed 100644 --- a/App_Code/ClsOC.vb +++ b/App_Code/ClsOC.vb @@ -715,7 +715,7 @@ Public Class ClsOC Optional PorcentajeIVA As Decimal = 0.16D, Optional IVA As Decimal = 0, Optional RetIVA As Decimal = 0, Optional RetISR As Decimal = 0, Optional FechaExpiracion As Date = Nothing, Optional CveCotizacion As Integer = -1, Optional FolioAdicional As String = "", Optional EntregaDirecta As Integer = -1, Optional CveDireccionEnvio As Integer = -1, Optional Guia As String = "-1", Optional IEPS As Decimal = -1, Optional CveIEAnticipo As Integer = -1, Optional ImporteAnticipo As Decimal = 0, Optional UsoCFDI As Integer = -1, Optional Promocion As String = "-1", Optional CveProveedorContacto As Integer = -1, Optional NumRemision As String = "-1", - Optional CveColectiva As Integer = -1, Optional MetodoPago As Integer = -1, Optional CveSubProyectoEntrega As Integer = -1, Optional PorcentajeProntoPago As Decimal = 0) As Boolean + Optional CveColectiva As Integer = -1, Optional MetodoPago As Integer = -1, Optional CveSubProyectoEntrega As Integer = -1, Optional PorcentajeProntoPago As Decimal = 0, Optional EsTemporal As Boolean = False) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_OC_OrdenesCompraAdd") @@ -763,6 +763,8 @@ Public Class ClsOC .Add("@MetodoPago", SqlDbType.Int).Value = MetodoPago ' 0 Contado, 1 Credito .Add("@CveSubProyectoEntrega", SqlDbType.Int).Value = CveSubProyectoEntrega ' 0 Contado, 1 Credito .Add("@PorcentajeProntoPago", SqlDbType.Decimal).Value = PorcentajeProntoPago + .Add("@EsTemporal", SqlDbType.Bit).Value = EsTemporal + .Add("@vCveOrdenCompra", SqlDbType.Int).Direction = ParameterDirection.Output .Add("@vFolio", SqlDbType.Int).Direction = ParameterDirection.Output @@ -1673,7 +1675,7 @@ Public Class ClsOC 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, Optional Serie As String = "-1") As Boolean + Optional MetodoPago As Integer = -1, Optional Serie As String = "-1", Optional TieneAnticipo As Integer = -1, Optional EsTemporal As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_OC_OrdenesCompraRep") @@ -1705,6 +1707,9 @@ Public Class ClsOC .Add("@CveMoneda", SqlDbType.Int).Value = CveMoneda .Add("@MetodoPago", SqlDbType.Int).Value = MetodoPago .Add("@Serie", SqlDbType.VarChar).Value = Serie + .Add("@TieneAnticipo", SqlDbType.Int).Value = TieneAnticipo + .Add("@EsTemporal", SqlDbType.Int).Value = EsTemporal + End With @@ -1843,7 +1848,8 @@ Public Class ClsOC End Function Public Function GetOrdenesPendientes(pTipo As String, pTipoBusqueda As Integer, pCveEmpresa As Integer, pCveProyecto As Integer, pCveSubProyecto As Integer, pCveEstatusCompra As Integer, - pCveUsuario As Integer, CveCliente As Integer, Optional SoloSubProyectosConPermiso As Boolean = False, Optional CveUsuarioAsignado As Integer = -1, Optional EntregaDirecta As Integer = -1) As Boolean + pCveUsuario As Integer, CveCliente As Integer, Optional SoloSubProyectosConPermiso As Boolean = False, Optional CveUsuarioAsignado As Integer = -1, Optional EntregaDirecta As Integer = -1, + Optional TieneAnticipo As Integer = -1, Optional EsTemporal As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_OC_OrdenesCompraPendientes") @@ -1860,6 +1866,8 @@ Public Class ClsOC .Add("@SoloSubProyectosConPermiso", SqlDbType.Bit).Value = SoloSubProyectosConPermiso .Add("@CveUsuarioAsignado", SqlDbType.Int).Value = CveUsuarioAsignado .Add("@EntregaDirecta", SqlDbType.Int).Value = EntregaDirecta + .Add("@TieneAnticipo", SqlDbType.Int).Value = TieneAnticipo + .Add("@EsTemporal", SqlDbType.Int).Value = EsTemporal End With Try diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 90d787cc5..0039b43eb 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -2154,18 +2154,30 @@ Public Class ClsPaginas HttpContext.Current.Application(AppNombre) = value End Set End Property - 'Property GlobalDTBancosCuentas(CveUsuario As Integer) As DataTable - ' Get - ' Dim Str As String = String.Format("CveEmpresa = {0} ", UsuarioActual.CveEmpresa) - ' If CveUsuario > -1 Then Str = String.Format("{0} AND CveUsuario ={1}", Str, CveUsuario) - ' Dim Dv As New DataView(DirectCast(Application("GlobalDTBancosCuentas"), DataTable), Str, "", DataViewRowState.CurrentRows) - ' GlobalDTBancosCuentas = Dv.ToTable - ' Dv.Dispose() - ' End Get - ' Set(value As DataTable) - ' Application("GlobalDTBancosCuentas") = value - ' End Set - 'End Property + Public Shared Property GlobalDTBancosCuentasGral(CveEmpresa As Integer, Optional Estatus As Integer = 1, Optional CveTipoCuenta As Integer = -1) As DataTable + Get + Dim AppNombre As String = $"GlobalDTBancosCuentasGral-{CveEmpresa}" + If HttpContext.Current.Application(AppNombre) Is Nothing Then + Using ObjBancos As New ClsBancos + If ObjBancos.GetBancosCuentas(-1, CveEmpresa) Then + HttpContext.Current.Application(AppNombre) = ObjBancos.DtResultados + Else + HttpContext.Current.Application(AppNombre) = Nothing + End If + End Using + End If + Dim Str As String = String.Format("CveEmpresa = {0} ", CveEmpresa) + If CveTipoCuenta > -1 Then Str = String.Format("{0} AND CveTipoCuenta = {1}", Str, CveTipoCuenta) + If Estatus > -1 Then Str = String.Format("{0} AND Estatus = '{1}'", Str, If(Estatus = 1, "Activo", "Inactivo")) + Dim Dv As New DataView(DirectCast(HttpContext.Current.Application(AppNombre), DataTable), Str, "", DataViewRowState.CurrentRows) + GlobalDTBancosCuentasGral = Dv.ToTable + Dv.Dispose() + End Get + Set(value As DataTable) + Dim AppNombre As String = $"GlobalDTBancosCuentasGral-{CveEmpresa}" + HttpContext.Current.Application(AppNombre) = value + End Set + End Property Public Shared Property GlobalDTBancosCuentas(CveUsuario As Integer, Optional CveCuenta As Integer = -1, Optional Estatus As Integer = 1, Optional CveEmpresa As Integer = -1, Optional CveTipoCuenta As Integer = -1) As DataTable Get Dim AppNombre As String = $"GlobalDTBancosCuentas-{CveEmpresa}" diff --git a/App_Code/ClsProductosServicios.vb b/App_Code/ClsProductosServicios.vb index 229864a49..ca7b91b0a 100644 --- a/App_Code/ClsProductosServicios.vb +++ b/App_Code/ClsProductosServicios.vb @@ -2545,6 +2545,28 @@ Public Class ClsProductosServicios End Function + Public Function UpdateUltimoCosto(CvePS As Integer, UltimoCosto As Decimal, CveUsuarioModifico As Integer, CveEmpresa As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_ProductosServiciosUpdateUltimoCostoUpdate") + + With SqlAdapter.SelectCommand.Parameters + .Add("@CvePS", SqlDbType.Int).Value = CvePS + .Add("@UltimoCosto", SqlDbType.Decimal).Value = UltimoCosto + .Add("@CveUsuarioModifico", SqlDbType.Int).Value = CveUsuarioModifico + .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 ultimo Costo.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + + Return Retorno + End Function + + #Region " P S C O M P L E M E N T O S" Public Function GetProductosServiciosComplementos(CvePS As Integer) As Boolean diff --git a/App_Code/ClsVentas.vb b/App_Code/ClsVentas.vb index c01821bed..96e987c23 100644 --- a/App_Code/ClsVentas.vb +++ b/App_Code/ClsVentas.vb @@ -2525,7 +2525,14 @@ Public Class ClsVentas SqlAdapter.Fill(Data) Retorno = SqlAdapter.SelectCommand.Parameters("@CvePromocion").Value.ToString.ToEntero Catch ex As Exception - OnError("Ocurrió un error al agregar la Promoción.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + + If ex.Message.Contains("UK_Vta_Promociones_CveEmpresa_Promocion") Then + Alert($"Ya existe una promoción con el nombre {Promocion} .", TipoMensaje.MsgAdvertencia) + Else + OnError("Ocurrió un error al agregar la Promoción.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End If + + End Try Return Retorno @@ -2580,7 +2587,13 @@ Public Class ClsVentas SqlAdapter.Fill(Data) Retorno = True Catch ex As Exception - OnError("Ocurrió un error al actualizar la Promoción.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + + If ex.Message.Contains("UK_Vta_Promociones_CveEmpresa_Promocion") Then + Alert($"Ya existe una promoción con el nombre {Promocion} .", TipoMensaje.MsgAdvertencia) + Else + OnError("Ocurrió un error al actualizar la Promoción.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End If + End Try Return Retorno @@ -3292,7 +3305,7 @@ Public Class ClsVentas Return Retorno End Function - Public Function GetRepCotizacionesSinFacturar(FechaI As Date, FechaF As Date, CveSubProyecto As String, CveCliente As Integer, CveEmpresa As Integer, Optional CveUsuarioConsulta As Integer = -1, Optional CveEstatusFactura As Integer = -1) As Boolean + Public Function GetRepCotizacionesSinFacturar(FechaI As Date, FechaF As Date, CveSubProyecto As String, CveCliente As Integer, CvesVendedores As String, CveEmpresa As Integer, Optional CveUsuarioConsulta As Integer = -1, Optional CveEstatusFactura As Integer = -1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Vta_RepCotizacionesSinFacturarGet") @@ -3302,6 +3315,7 @@ Public Class ClsVentas .Add("@CveSubProyecto", SqlDbType.VarChar).Value = CveSubProyecto .Add("@CveCliente", SqlDbType.Int).Value = CveCliente .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + .Add("@CvesVendedores", SqlDbType.VarChar).Value = CvesVendedores .Add("@CveEstatusFactura", SqlDbType.Int).Value = CveEstatusFactura .Add("@CveUsuarioConsulta", SqlDbType.Int).Value = CveUsuarioConsulta End With @@ -4599,12 +4613,14 @@ Public Class ClsVentas Public Function GetRepPSPeriodo(FechaI As Date, FechaF As Date, FechaIEjec As Date, FechaFEjec As Date, CveCliente As Integer, CveSubProyectoEjecucion As Integer, - CveVendedor As Integer, CveUsuario As Integer, CveEstatus As Integer, IVA As String, CveEmpresa As Integer, Gpo As Integer, Optional TipoDocto As String = "-1", - Optional CveProyecto As Integer = -1, Optional CveSubProyecto As Integer = -1, Optional TipoCambio As Integer = 1, Optional TCEspecifico As Decimal = -1, - Optional CveUsuarioConsulta As Integer = -1, Optional VerEn As Integer = -1, Optional CvePS As Integer = -1, Optional CveClasificacion As Integer = -1, - Optional CveCategoria As Integer = -1, Optional TipoFecha As Integer = 1, Optional CveClienteClasificacion As Integer = -1, Optional ModalidadContable As Boolean = False) As Boolean + CveVendedor As Integer, CveUsuario As Integer, CveEstatus As Integer, IVA As String, CveEmpresa As Integer, Gpo As Integer, Optional TipoDocto As String = "-1", + Optional CveProyecto As Integer = -1, Optional CveSubProyecto As Integer = -1, Optional TipoCambio As Integer = 1, Optional TCEspecifico As Decimal = -1, + Optional CveUsuarioConsulta As Integer = -1, Optional VerEn As Integer = -1, Optional CvePS As Integer = -1, Optional CveClasificacion As Integer = -1, + Optional CveCategoria As Integer = -1, Optional TipoFecha As Integer = 1, Optional CveClienteClasificacion As Integer = -1, Optional ModalidadContable As Boolean = False, + Optional OpVista As Integer = 1) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_VentasGetRepPeriodoPS") + SqlAdapter.SelectCommand.CommandTimeout = 0 With SqlAdapter.SelectCommand.Parameters '.Add("@CveVenta", SqlDbType.Int).Value = CveVenta .Add("@FechaI", SqlDbType.Date).Value = FechaI @@ -4632,6 +4648,7 @@ Public Class ClsVentas .Add("@TipoFecha", SqlDbType.Int).Value = TipoFecha .Add("@CveClienteClasificacion", SqlDbType.Int).Value = CveClienteClasificacion .Add("@ModalidadContable", SqlDbType.Bit).Value = ModalidadContable + .Add("@OpVista", SqlDbType.Int).Value = OpVista End With Try SqlAdapter.Fill(Data) diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index d35d6198d..283f93c50 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -347,6 +347,12 @@ Namespace Modelos #Region " OBJETOS Ventas" + Public Enum OpcionesCancelacionPagos + SinPagos = 1 + ConPagos_CancelarIE = 2 + ConPagos_GenerarIxC = 3 + End Enum + Public Class MPrecioSugerido Public Property CvePrecioLista As Integer @@ -3062,9 +3068,10 @@ Namespace Modelos Optional ValorMultiplicador As Integer = 1, ByRef Optional ObjBancos As ClsBancos = Nothing, ByRef Optional ObjVentas As ClsVentas = Nothing, ByRef Optional ObjEventos As ClsOIEventos = Nothing, Optional ByRef DtRemisionesRelacionadas As DataTable = Nothing, Optional SeCancelaRemisionProceso As Boolean = False, Optional CancelarRemisiones As Boolean = False, Optional ListaRemisionesCancelar As List(Of Integer) = Nothing, Optional CveEstatusRefacturacion As Integer = 0, Optional ByRef ObjInventario As ClsInventarios = Nothing, Optional FechaCancelacion As DateTime = MinFecha, Optional ObjClientes As ClsClientes = Nothing, - Optional AplicaCancelacionConPagos As Boolean = False, Optional GeneraIxCconPago As Boolean = False) As Boolean + Optional CancelacionPagos As OpcionesCancelacionPagos = OpcionesCancelacionPagos.SinPagos) As Boolean Dim ErrorPrepoliza As Boolean = False Try + Dim AplicaCancelacionConPagos As Boolean = (CancelacionPagos = OpcionesCancelacionPagos.ConPagos_CancelarIE OrElse CancelacionPagos = OpcionesCancelacionPagos.ConPagos_GenerarIxC) If ObjFactura.TipoDocto.Contiene("Ing", "Rem") AndAlso AplicaCancelacionConPagos AndAlso ValorMultiplicador = -1 Then Dim DtPagosVenta As DataTable = Nothing @@ -3088,21 +3095,27 @@ Namespace Modelos 'SI ES PAGO DE BANCOS, CANCELAR EL IE If DrPago("TipoPago").ToString() = "B" Then - If GeneraIxCconPago Then - 'RESTAR SALDOS APLICADOS - Dim ImporteIxC As Decimal = DrPago("Importe").ToString().ToDecimal() - Dim ImportePago As Decimal = ImporteIxC * -1 - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, True, ImportePago, ImportePago, 2, DrPago("Folio").ToString(), DrPago("Folio").ToString(), CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=DrPago("CveIE").ToString().ToEntero(), ImporteME:=If(ObjFactura.TipoCambio = 1, 0, ImportePago), Contabilizable:=True, CveSubProyecto:=ObjFactura.CveSubProyecto) Then - ErrorPrepoliza = True - End If + 'RESTAR SALDOS APLICADOS + Select Case CancelacionPagos + Case OpcionesCancelacionPagos.ConPagos_GenerarIxC + Dim ImporteIxC As Decimal = DrPago("Importe").ToString().ToDecimal() + Dim ImportePago As Decimal = ImporteIxC * -1 - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, True, ImporteIxC, ImporteIxC, 66, DrPago("Folio").ToString(), DrPago("Folio").ToString(), CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=DrPago("CveIE").ToString().ToEntero(), ImporteME:=If(ObjFactura.TipoCambio = 1, 0, ImporteIxC), Contabilizable:=True, CveSubProyecto:=ObjFactura.CveSubProyecto) Then + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, True, ImportePago, ImportePago, 2, DrPago("Folio").ToString(), DrPago("Folio").ToString(), CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=DrPago("CveIE").ToString().ToEntero(), ImporteME:=If(ObjFactura.TipoCambio = 1, 0, ImportePago), Contabilizable:=True, CveSubProyecto:=ObjFactura.CveSubProyecto) Then + ErrorPrepoliza = True + End If + + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, True, ImporteIxC, ImporteIxC, 66, DrPago("Folio").ToString(), DrPago("Folio").ToString(), CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=DrPago("CveIE").ToString().ToEntero(), ImporteME:=If(ObjFactura.TipoCambio = 1, 0, ImporteIxC), Contabilizable:=True, CveSubProyecto:=ObjFactura.CveSubProyecto) Then + ErrorPrepoliza = True + End If + + Case OpcionesCancelacionPagos.ConPagos_CancelarIE + ErrorPrepoliza = ObjBancos.CancelarBancos_IE(UsuarioActual.CveUsuario, DrPago("CveIE").ToString().ToEntero(), False, -1, -1, Now) <= 0 + Case OpcionesCancelacionPagos.SinPagos ErrorPrepoliza = True - End If - Else - ErrorPrepoliza = ObjBancos.CancelarBancos_IE(UsuarioActual.CveUsuario, DrPago("CveIE").ToString().ToEntero(), False, -1, -1, Now) <= 0 - End If + End Select + Else 'RESTAR SALDOS APLICADOS Dim Importe As Decimal = DrPago("Importe").ToString().ToDecimal() * -1 @@ -5639,7 +5652,7 @@ Namespace Modelos ''' ''' ''' - Public Function EjecutarCancelacionPendiente(CveEstatus As Integer, FechaCancelacion As DateTime, AcuseCancelacion As String, Optional ValidarSAT As Boolean = True, Optional AplicaCancelacionConPagos As Boolean = False) As MCancelacionVentaMensaje + Public Function EjecutarCancelacionPendiente(CveEstatus As Integer, FechaCancelacion As DateTime, AcuseCancelacion As String, Optional ValidarSAT As Boolean = True, Optional CancelacionPagos As OpcionesCancelacionPagos = OpcionesCancelacionPagos.SinPagos) As MCancelacionVentaMensaje Dim ListaRemisionesCancelar As New List(Of Integer) Dim ObjVentas As New ClsVentas() If ObjVentas.GetRemisionesXCancelar(Me.CveVenta) Then @@ -5649,7 +5662,7 @@ Namespace Modelos End If ObjVentas.Dispose() - Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=Me.RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveEstatusFacturaAsignado:=CveEstatus, FechaCancelacion:=FechaCancelacion.ToString("dd/MM/yyyy hh:mm:ss"), AcuseCancelacion:=AcuseCancelacion, CveMotivoCancelacion:=Me.CveMotivoCancelacion, MotivoCancelacion:=Me.MotivoCancelacion, ValidarSAT:=ValidarSAT, AplicaCancelacionConPagos:=AplicaCancelacionConPagos) + Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=Me.RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveEstatusFacturaAsignado:=CveEstatus, FechaCancelacion:=FechaCancelacion.ToString("dd/MM/yyyy hh:mm:ss"), AcuseCancelacion:=AcuseCancelacion, CveMotivoCancelacion:=Me.CveMotivoCancelacion, MotivoCancelacion:=Me.MotivoCancelacion, ValidarSAT:=ValidarSAT, CancelacionPagos:=CancelacionPagos) End Function ''' ''' Cancela la factura para poder realizar la refacturacion @@ -5664,16 +5677,16 @@ Namespace Modelos ''' ''' ''' - Public Function CancelarFactura(RealizarDevolucionAlmacen As Integer, Optional ListaRemisionesCancelar As List(Of Integer) = Nothing, Optional CveMotivoCancelacion As Integer = -1, Optional Motivo As String = "", Optional ValidarSAT As Boolean = True, Optional CveEstadoCancelacion As Integer = 0, Optional CancelarBoletos As Boolean = False, Optional AplicaCancelacionConPagos As Boolean = False, Optional GeneraIxCconPago As Boolean = False) As MCancelacionVentaMensaje + Public Function CancelarFactura(RealizarDevolucionAlmacen As Integer, Optional ListaRemisionesCancelar As List(Of Integer) = Nothing, Optional CveMotivoCancelacion As Integer = -1, Optional Motivo As String = "", Optional ValidarSAT As Boolean = True, Optional CveEstadoCancelacion As Integer = 0, Optional CancelarBoletos As Boolean = False, Optional ForzarDevolucion As Boolean = False, Optional CancelacionPagos As OpcionesCancelacionPagos = OpcionesCancelacionPagos.SinPagos) As MCancelacionVentaMensaje 'Comprobante emitido con errores sin relación - Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveMotivoCancelacion:=CveMotivoCancelacion, MotivoCancelacion:=Motivo, CveEstadoCancelacion:=CveEstadoCancelacion, CancelarBoletos:=CancelarBoletos, AplicaCancelacionConPagos:=AplicaCancelacionConPagos, GeneraIxCconPago:=GeneraIxCconPago) + Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveMotivoCancelacion:=CveMotivoCancelacion, MotivoCancelacion:=Motivo, CveEstadoCancelacion:=CveEstadoCancelacion, CancelarBoletos:=CancelarBoletos, ForzarDevolucion:=ForzarDevolucion, CancelacionPagos:=CancelacionPagos) End Function Private Function CancelarVenta(ObjFactura As Modelos.Factura, UsuarioActual As Usuario, Optional EsRefacturacion As Boolean = False, Optional RealizarDevolucionAlmacen As Integer = 0, Optional ListaRemisionesCancelar As List(Of Integer) = Nothing, Optional CveEstatusFacturaAsignado As Integer = -1, Optional FechaCancelacion As String = "-1", Optional AcuseCancelacion As String = "", Optional CveMotivoCancelacion As Integer = -1, Optional MotivoCancelacion As String = "", Optional FolioSustitucion As String = "", Optional ValidarSAT As Boolean = True, Optional CveEstadoCancelacion As Integer = 0, - Optional CancelarBoletos As Boolean = False, Optional AplicaCancelacionConPagos As Boolean = False, Optional GeneraIxCconPago As Boolean = False) As MCancelacionVentaMensaje + Optional CancelarBoletos As Boolean = False, Optional ForzarDevolucion As Boolean = False, Optional CancelacionPagos As OpcionesCancelacionPagos = OpcionesCancelacionPagos.SinPagos) As MCancelacionVentaMensaje Dim Retorno As New MCancelacionVentaMensaje() Dim ErrorList As New List(Of String) @@ -5731,6 +5744,8 @@ Namespace Modelos AplicaRefacturacionConPagos = False End If + Dim AplicaCancelacionConPagos As Boolean = (CancelacionPagos = OpcionesCancelacionPagos.ConPagos_CancelarIE OrElse CancelacionPagos = OpcionesCancelacionPagos.ConPagos_GenerarIxC) + 'VALIDA QUE LA FACTURA NO TENGA PAGOS If Not AplicaRefacturacionConPagos AndAlso Not AplicaCancelacionConPagos AndAlso ObjFactura.TipoDocto.Contiene("Ing", "Rem") AndAlso ObjFactura.Pagado > 0 Then Retorno.Mensaje = "La factura no se puede cancelar debido a que tiene pagos vinculados." @@ -6173,7 +6188,7 @@ Namespace Modelos If Not ErrorCancelar Then ErrorCancelar = ProcesoPrepolizas(ObjFactura, ObjConta, -1, ObjFactura.DtDetalle, -1, ObjBancos, ObjVentas, ObjEventos, DtRemisionesRelacionadas:=DtRemisionesRelacionadas, SeCancelaRemisionProceso:=SeCancelaRemisionProceso, CancelarRemisiones:=CancelarRemisiones, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveEstatusRefacturacion:=CveEstatusRefacturacion, ObjInventario:=ObjInventario, FechaCancelacion:=CancelacionFecha, - ObjClientes:=ObjClientes, AplicaCancelacionConPagos:=AplicaCancelacionConPagos, GeneraIxCconPago:=GeneraIxCconPago) + ObjClientes:=ObjClientes, CancelacionPagos:=CancelacionPagos) MensajeError = "Ocurrió un error al generar la prepoliza de cancelación." End If @@ -6185,275 +6200,398 @@ Namespace Modelos End If + Dim MoverInventario As Boolean = False + + If TieneAlmacen Then + MoverInventario = (Not EsRefacturacion AndAlso (CveEstatus > 0 AndAlso Not CveEstatus.Contiene(20, 23)) AndAlso CveEstatusRefacturacion = 0) OrElse ForzarDevolucion + End If + 'CUANDO LA CANCELACION ESTA EN PROCESO NO DEBE REALIZAR NADA DE ESTE PROCESO - If Not ErrorCancelar AndAlso Not EsRefacturacion AndAlso (CveEstatus > 0 AndAlso Not CveEstatus.Contiene(20, 23)) AndAlso CveEstatusRefacturacion = 0 Then + If Not ErrorCancelar AndAlso MoverInventario Then 'DEVOLUCION DE ALMACEN - If Not ErrorCancelar AndAlso TieneAlmacen Then - Dim TieneSalida As Boolean = False - Dim DtInventario As DataTable = Nothing - Dim DtSalidas As DataTable = Nothing - Dim DtVirtuales As DataTable = Nothing - Dim DtDevPrevias As DataTable = Nothing - Dim DtDevoluciones As DataTable = Nothing - Dim DtExistencias As DataTable = Nothing - Dim DtRemisionesFacturadas As DataTable = Nothing + Dim TieneSalida As Boolean = False + Dim DtInventario As DataTable = Nothing + Dim DtSalidas As DataTable = Nothing + Dim DtVirtuales As DataTable = Nothing + Dim DtDevPrevias As DataTable = Nothing + Dim DtDevoluciones As DataTable = Nothing + Dim DtExistencias As DataTable = Nothing + Dim DtRemisionesFacturadas As DataTable = Nothing - 'CUANDO SE VAYA A REALIZAR LA DEVOLUCION AQUI DEBE MARCALA PARA NO SOLICITARLA DE NUEVO, SI NO LA SOLICITARA - If ObjFactura.EsDevolucionVenta = 0 Then - Dim EstatusDevolucion As Integer = 1 - If Not ObjVentas.UpdateVentasDevolucionAlmacen(EstatusDevolucion, CveVenta) Then - ErrorCancelar = True - MensajeError = "Ocurrió un error al solicitar la devolución de almacen." - End If + 'CUANDO SE VAYA A REALIZAR LA DEVOLUCION AQUI DEBE MARCALA PARA NO SOLICITARLA DE NUEVO, SI NO LA SOLICITARA + If ObjFactura.EsDevolucionVenta = 0 Then + Dim EstatusDevolucion As Integer = 1 + If Not ObjVentas.UpdateVentasDevolucionAlmacen(EstatusDevolucion, CveVenta) Then + ErrorCancelar = True + MensajeError = "Ocurrió un error al solicitar la devolución de almacen." + End If + End If + + If Not ErrorCancelar Then + Dim Filtro As String = "" + Dim FiltroDevAlmacen As String = "" + Dim FiltroEntradaUsados As String = "" + + Select Case ObjFactura.TipoDocto + Case "Ing" + Filtro = "CveConcepto IN (3, 40)" + FiltroDevAlmacen = "CveConcepto IN (18, 41)" + Case "Dev" + Filtro = "CveConcepto = 18" + Case Else + Filtro = "CveConcepto = 9" + 'VERIFICA SI TIENE ENTRADAS DE USADOS TAMBIEN + If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso ObjFactura.TipoDocto = "Rem" Then + FiltroEntradaUsados = "CveConcepto = 42" + End If + End Select + + 'CARGA REMISIONES DE LA VENTA DEVUELTA + If ObjInventario.GetDevolucionRemisionesFacturadas(CveVenta) Then + DtRemisionesFacturadas = ObjInventario.DtResultados.FiltraParametros("CantidadAlmacen > 0") + Else + ErrorCancelar = True End If If Not ErrorCancelar Then - Dim Filtro As String = "" - Dim FiltroDevAlmacen As String = "" - Dim FiltroEntradaUsados As String = "" + If ObjInventario.GetInv_Mov(CveVenta, UsuarioActual.CveEmpresa) Then + DtInventario = ObjInventario.DtResultados.Copy() + DtSalidas = DtInventario.FiltraParametros($"CvePS IS NULL AND {Filtro}") - Select Case ObjFactura.TipoDocto - Case "Ing" - Filtro = "CveConcepto IN (3, 40)" - FiltroDevAlmacen = "CveConcepto IN (18, 41)" - Case "Dev" - Filtro = "CveConcepto = 18" - Case Else - Filtro = "CveConcepto = 9" - 'VERIFICA SI TIENE ENTRADAS DE USADOS TAMBIEN - If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso ObjFactura.TipoDocto = "Rem" Then - FiltroEntradaUsados = "CveConcepto = 42" + If UsuarioActual.Empresa.Funcionalidad(573) = "1" Then + DtVirtuales = DtInventario.FiltraParametros($"CvePS IS NULL AND CveConcepto = 37") + If ObjFactura.TipoDocto = "Dev" Then + DtVirtuales = DtInventario.FiltraParametros($"CvePS IS NULL AND CveConcepto = 36") End If - End Select + End If - 'CARGA REMISIONES DE LA VENTA DEVUELTA - If ObjInventario.GetDevolucionRemisionesFacturadas(CveVenta) Then - DtRemisionesFacturadas = ObjInventario.DtResultados.FiltraParametros("CantidadAlmacen > 0") + If ObjFactura.TipoDocto = "Ing" Then + DtDevPrevias = DtInventario.FiltraParametros($"CvePS IS NULL AND {FiltroDevAlmacen}") + End If + + DtExistencias = DtInventario.FiltraParametros($"CvePS IS NOT NULL AND {Filtro} AND CveTipoPS = 2") + TieneSalida = DtExistencias.Rows.Count > 0 + + 'VERIFICA SI SOLO TIENE CARGA DE USADOS EN CASO DE NO TENER SALIDAS DE ALMACEN + If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso ObjFactura.TipoDocto = "Rem" Then + FiltroEntradaUsados = "CveConcepto = 42" + If Not TieneSalida Then + TieneSalida = DtInventario.FiltraParametros($"CvePS IS NOT NULL AND {FiltroEntradaUsados}").Rows.Count > 0 + End If + End If Else ErrorCancelar = True + MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar." End If - - If Not ErrorCancelar Then - If ObjInventario.GetInv_Mov(CveVenta, UsuarioActual.CveEmpresa) Then - DtInventario = ObjInventario.DtResultados.Copy() - DtSalidas = DtInventario.FiltraParametros($"CvePS IS NULL AND {Filtro}") - - If UsuarioActual.Empresa.Funcionalidad(573) = "1" Then - DtVirtuales = DtInventario.FiltraParametros($"CvePS IS NULL AND CveConcepto = 37") - If ObjFactura.TipoDocto = "Dev" Then - DtVirtuales = DtInventario.FiltraParametros($"CvePS IS NULL AND CveConcepto = 36") - End If - End If - - If ObjFactura.TipoDocto = "Ing" Then - DtDevPrevias = DtInventario.FiltraParametros($"CvePS IS NULL AND {FiltroDevAlmacen}") - End If - - DtExistencias = DtInventario.FiltraParametros($"CvePS IS NOT NULL AND {Filtro} AND CveTipoPS = 2") - TieneSalida = DtExistencias.Rows.Count > 0 - - 'VERIFICA SI SOLO TIENE CARGA DE USADOS EN CASO DE NO TENER SALIDAS DE ALMACEN - If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso ObjFactura.TipoDocto = "Rem" Then - FiltroEntradaUsados = "CveConcepto = 42" - If Not TieneSalida Then - TieneSalida = DtInventario.FiltraParametros($"CvePS IS NOT NULL AND {FiltroEntradaUsados}").Rows.Count > 0 - End If - End If - Else - ErrorCancelar = True - MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar." - End If - End If - End If - If Not ErrorCancelar AndAlso TieneSalida Then + End If - If Not ErrorCancelar AndAlso RealizarDevolucionAlmacen = 1 Then - 'REALIZA DEVOLUCION A LAS SALIDAS PENDIENTES - If Not ObjFactura.TipoDocto.Contiene("Rem", "Ped") Then - For Each RowMovimiento As DataRow In DtSalidas.Rows - Dim CveConceptoMovimiento As Integer = -1 - Dim CveAlmacenMovimiento As Integer = -1 + If Not ErrorCancelar AndAlso TieneSalida Then + If Not ErrorCancelar AndAlso RealizarDevolucionAlmacen = 1 Then + 'REALIZA DEVOLUCION A LAS SALIDAS PENDIENTES + If Not ObjFactura.TipoDocto.Contiene("Rem", "Ped") Then + For Each RowMovimiento As DataRow In DtSalidas.Rows + Dim CveConceptoMovimiento As Integer = -1 + Dim CveAlmacenMovimiento As Integer = -1 - Dim CveMovimientoDevolucion As Integer = 0 - Dim Folio As Integer = 0 + Dim CveMovimientoDevolucion As Integer = 0 + Dim Folio As Integer = 0 - Dim CveMovimientoSalida As Integer = -1 + Dim CveMovimientoSalida As Integer = -1 - Select Case RowMovimiento("CveConcepto").ToString().ToEntero() - Case 3 - CveConceptoMovimiento = 18 'DEVOLUCION DEL CLIENTE - CveAlmacenMovimiento = RowMovimiento("CveAlmacen").ToString().ToEntero() - CveMovimientoSalida = RowMovimiento("CveMovimiento").ToString().ToEntero() - Case 40 - CveConceptoMovimiento = 41 'DEVOLUCIÓN DEL CLIENTE DIRECTA - CveAlmacenMovimiento = RowMovimiento("CveAlmacen").ToString().ToEntero() - Case 18 - CveConceptoMovimiento = 3 'SALIDA DE ALMACEN - CveAlmacenMovimiento = RowMovimiento("CveAlmacen").ToString().ToEntero() - ''SI TIENE REMISIONES RELACIONADAS - 'If DtRemisionesFacturadas.Rows.Count > 0 Then - ' Dim RowRemision As DataRow = DtExistencias.FiltroPrimero($"CveMovimiento = {RowMovimiento("CveMovimiento").ToString()}") + Select Case RowMovimiento("CveConcepto").ToString().ToEntero() + Case 3 + CveConceptoMovimiento = 18 'DEVOLUCION DEL CLIENTE + CveAlmacenMovimiento = RowMovimiento("CveAlmacen").ToString().ToEntero() + CveMovimientoSalida = RowMovimiento("CveMovimiento").ToString().ToEntero() + Case 40 + CveConceptoMovimiento = 41 'DEVOLUCIÓN DEL CLIENTE DIRECTA + CveAlmacenMovimiento = RowMovimiento("CveAlmacen").ToString().ToEntero() + Case 18 + CveConceptoMovimiento = 3 'SALIDA DE ALMACEN + CveAlmacenMovimiento = RowMovimiento("CveAlmacen").ToString().ToEntero() + ''SI TIENE REMISIONES RELACIONADAS + 'If DtRemisionesFacturadas.Rows.Count > 0 Then + ' Dim RowRemision As DataRow = DtExistencias.FiltroPrimero($"CveMovimiento = {RowMovimiento("CveMovimiento").ToString()}") - ' Dim CveRemision As Integer = RowRemision("CveRemision").ToString().ToEntero() + ' Dim CveRemision As Integer = RowRemision("CveRemision").ToString().ToEntero() - ' Dim CancelarRemision As Boolean = (ListaRemisionesCancelar IsNot Nothing) AndAlso (ListaRemisionesCancelar.Any(Function(CveRemisionCancelar) CveRemisionCancelar = CveRemision)) + ' Dim CancelarRemision As Boolean = (ListaRemisionesCancelar IsNot Nothing) AndAlso (ListaRemisionesCancelar.Any(Function(CveRemisionCancelar) CveRemisionCancelar = CveRemision)) - ' 'SI LA REMISION SE VA A CANCELAR DEBE REGRESAR AL ALMACEN GENERAL - ' If CancelarRemision Then - ' CveAlmacenDevolucion = RowRemision("CveAlmacenDevolucion").ToString().ToEntero() - ' Else - ' CveAlmacenDevolucion = RowMovimiento("CveAlmacen").ToString().ToEntero() - ' End If + ' 'SI LA REMISION SE VA A CANCELAR DEBE REGRESAR AL ALMACEN GENERAL + ' If CancelarRemision Then + ' CveAlmacenDevolucion = RowRemision("CveAlmacenDevolucion").ToString().ToEntero() + ' Else + ' CveAlmacenDevolucion = RowMovimiento("CveAlmacen").ToString().ToEntero() + ' End If - 'Else - ' CveAlmacenDevolucion = RowMovimiento("CveAlmacen").ToString().ToEntero() - 'End If - End Select + 'Else + ' CveAlmacenDevolucion = RowMovimiento("CveAlmacen").ToString().ToEntero() + 'End If + End Select - 'SI TIENE SALDO PENDIENTE POR DEVOLVER GENERA UN MOVIMIENTO DE DEVOLUCION - If ObjFactura.SaldoAlmacen <> 0 Then - 'SALIDA DE ALMACEN - SALIDA POR TRASPASO CUANDO ES REMISION - DEVOLUCION (SI ES TRASPASO Y TIENE CONTRATO NO HACE DEVOLUCIóN) - CveMovimientoDevolucion = ObjInventario.AddMovimiento(CveAlmacenMovimiento, CveConceptoMovimiento, 1, ClsPaginas.NowADS(), -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVenta, -1, -1, Observaciones:="", Guia:="", CveContrato:=CveContrato, CveAlmacenDestino:=-1, CveMovimientoRelacionado:=CveMovimientoSalida, Modulo:="Mod/CV1") - Folio = ObjInventario.Folio + 'SI TIENE SALDO PENDIENTE POR DEVOLVER GENERA UN MOVIMIENTO DE DEVOLUCION + If ObjFactura.SaldoAlmacen <> 0 Then + 'SALIDA DE ALMACEN - SALIDA POR TRASPASO CUANDO ES REMISION - DEVOLUCION (SI ES TRASPASO Y TIENE CONTRATO NO HACE DEVOLUCIóN) + CveMovimientoDevolucion = ObjInventario.AddMovimiento(CveAlmacenMovimiento, CveConceptoMovimiento, 1, ClsPaginas.NowADS(), -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, CveVenta, -1, -1, Observaciones:="", Guia:="", CveContrato:=CveContrato, CveAlmacenDestino:=-1, CveMovimientoRelacionado:=CveMovimientoSalida, Modulo:="Mod/CV1") + Folio = ObjInventario.Folio - If CveMovimientoDevolucion > 0 Then - For Each Dr As DataRow In DtExistencias.FiltraParametros($"CveMovimiento = {RowMovimiento("CveMovimiento").ToString()}").Rows + If CveMovimientoDevolucion > 0 Then + For Each Dr As DataRow In DtExistencias.FiltraParametros($"CveMovimiento = {RowMovimiento("CveMovimiento").ToString()}").Rows - Dim FechaCaducidad As Date = MinFecha - If Not String.IsNullOrEmpty(Dr("FechaCaducidad").ToString()) Then - If IsDate(Dr("FechaCaducidad")) Then - FechaCaducidad = Dr("FechaCaducidad").ToString().ToDate() - End If - End If - - Dim CveVentaDetalleRemision As Integer = -1 - If CveConceptoMovimiento = 41 Then - CveVentaDetalleRemision = Dr("CveVentaDetalleRemision").ToString.ToEntero() - End If - - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoDevolucion, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, -1, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, FechaCaducidad:=FechaCaducidad, CveVentaDetalleRemision:=CveVentaDetalleRemision) Then - ErrorCancelar = True - MensajeError = "Ocurrió un error al procesar los conceptos de salida. Por favor vuelva a intentar." - Exit For - End If - Next - Else - MensajeError = "Ocurrió un error al agregar el movimiento" - ErrorCancelar = True - End If - - 'GENERA PREPOLIZA DEL MOVIMIENTO DE DEVOLUCION - If Not ErrorCancelar Then - Dim DtCostos As DataTable = Nothing - Dim ValorInventario As Decimal = 0 - If ObjInventario.GetMovimientosDetalle(CveMovimientoDevolucion, UsuarioActual.CveEmpresa) Then - DtCostos = ObjInventario.DtResultados - Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"}) - If tmpCostos.Rows.Count > 0 Then - Dim Multiplicador As Decimal = -1D - If ObjFactura.TipoDocto = "Dev" Then - Multiplicador = 1D - End If - - 'If ObjVentas.GetVenta(CveVenta, UsuarioActual.CveEmpresa) Then - Dim Fecha As Date = ClsPaginas.NowADS() - Dim CveCliente As Integer = ObjFactura.CveCliente 'ObjVentas.DtResultados(0)("CveCliente").ToString.ToEntero - Dim ClienteNombre As String = ObjFactura.Cliente.Nombre 'ObjVentas.DtResultados(0)("ClienteNombre").ToString - Dim SerieFolio As String = ObjFactura.SerieFolio ' ObjVentas.DtResultados(0)("SerieFolio").ToString - Dim TotalCosto As Decimal = DtCostos.SUMD("Total").RoundAD() - Dim TotalCostoAcumulado As Decimal = 0 - Dim cont As Integer = 1 - - Dim CvePrePolizaDev As Integer = ObjConta.AddPrePolizas("Modelos/RecepcionEntrega", 4, TotalCosto, TotalCosto, 1, Fecha, ClienteNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) - 'SE AGREGA MOVIMIENTO SEPARADO POR LA CUENTA DE VENTAS (ER) - For Each RowInv As DataRow In tmpCostos.Rows - ValorInventario = DtCostos.SUMD("Total", $"CveClasificacion = {RowInv("CveClasificacion")}").RoundAD() - TotalCostoAcumulado += ValorInventario - - 'CUANDO ES EL ÚLTIMO MOVIMIENTO Y HAY DIFERENCIAS EN LOS IMPORTES - If cont = DtCostos.Rows.Count AndAlso TotalCosto <> TotalCostoAcumulado Then - ValorInventario = ValorInventario + (TotalCosto - TotalCostoAcumulado) - End If - - If Not ErrorCancelar Then - If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, False, Multiplicador * ValorInventario, Multiplicador * ValorInventario, 69, SerieFolio, SerieFolio, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimientoDevolucion, CveSubProyecto:=ObjFactura.CveSubProyecto, CveClasificacion:=RowInv("CveClasificacion").ToString.ToEntero) Then - ErrorCancelar = True - End If - End If - cont += 1 - Next - - If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, True, Multiplicador * TotalCosto, Multiplicador * TotalCosto, 68, SerieFolio, SerieFolio, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimientoDevolucion, CveSubProyecto:=ObjFactura.CveSubProyecto) Then - ErrorCancelar = True - End If - - 'AUTOCONTA - EL MOVIMIENTO 1 ES EL DE VENTA - - Dim AutoConta As Boolean = UsuarioActual.Empresa.Funcionalidad(200) = "1" - - If UsuarioActual.CveEmpresa = 119 AndAlso ObjFactura.TipoDocto.Contiene("Ant", "Rem", "RNC", "Cot", "Ped", "Pd2", "PA", "Egs", "Dev") Then - AutoConta = False - End If - - If Not ErrorCancelar AndAlso ObjConta.ValidacionesPrePoliza(CvePrePolizaDev, UsuarioActual) Then - If ObjConta.ValorPolizaDescuadre > 0 Then - GuardaLogAD($"Modelos/RecepcionEntrega | Error{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") - ErrorCancelar = True - End If - End If - - If AutoConta And Not ErrorCancelar Then - If Not ObjConta.ContabilizarPrePoliza(CvePrePolizaDev, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then - ErrorCancelar = True - MensajeError = "Ocurrió un error al contabilizar la prepoliza." - End If - End If - ' Else - 'ErrorCancelar = True - 'MensajeError = "Ocurrió un Error al ingresar las prepolizas" - 'End If + Dim FechaCaducidad As Date = MinFecha + If Not String.IsNullOrEmpty(Dr("FechaCaducidad").ToString()) Then + If IsDate(Dr("FechaCaducidad")) Then + FechaCaducidad = Dr("FechaCaducidad").ToString().ToDate() End If End If - End If - 'AGREGA BITACORA A VENTA - If Not ErrorCancelar AndAlso RealizarDevolucionAlmacen = 1 AndAlso CveMovimientoDevolucion > 0 Then - Dim MensajeBitacora As String = "Devuelta" - If Not ObjEventos.AddEventoBitacora(String.Format("Venta {2} en Folio: {1}", CveMovimientoDevolucion, Folio, MensajeBitacora), "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVenta) Then - MensajeError = "Ocurrió un error al agregar la bitacora." + Dim CveVentaDetalleRemision As Integer = -1 + If CveConceptoMovimiento = 41 Then + CveVentaDetalleRemision = Dr("CveVentaDetalleRemision").ToString.ToEntero() + End If + + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoDevolucion, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, -1, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero, CveSeccionAlmacen:=Dr("CveSeccionAlmacen").ToString.ToEntero, FechaCaducidad:=FechaCaducidad, CveVentaDetalleRemision:=CveVentaDetalleRemision) Then ErrorCancelar = True + MensajeError = "Ocurrió un error al procesar los conceptos de salida. Por favor vuelva a intentar." + Exit For + End If + Next + Else + MensajeError = "Ocurrió un error al agregar el movimiento" + ErrorCancelar = True + End If + + 'GENERA PREPOLIZA DEL MOVIMIENTO DE DEVOLUCION + If Not ErrorCancelar Then + Dim DtCostos As DataTable = Nothing + Dim ValorInventario As Decimal = 0 + If ObjInventario.GetMovimientosDetalle(CveMovimientoDevolucion, UsuarioActual.CveEmpresa) Then + DtCostos = ObjInventario.DtResultados + Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"}) + If tmpCostos.Rows.Count > 0 Then + Dim Multiplicador As Decimal = -1D + If ObjFactura.TipoDocto = "Dev" Then + Multiplicador = 1D + End If + + 'If ObjVentas.GetVenta(CveVenta, UsuarioActual.CveEmpresa) Then + Dim Fecha As Date = ClsPaginas.NowADS() + Dim CveCliente As Integer = ObjFactura.CveCliente 'ObjVentas.DtResultados(0)("CveCliente").ToString.ToEntero + Dim ClienteNombre As String = ObjFactura.Cliente.Nombre 'ObjVentas.DtResultados(0)("ClienteNombre").ToString + Dim SerieFolio As String = ObjFactura.SerieFolio ' ObjVentas.DtResultados(0)("SerieFolio").ToString + Dim TotalCosto As Decimal = DtCostos.SUMD("Total").RoundAD() + Dim TotalCostoAcumulado As Decimal = 0 + Dim cont As Integer = 1 + + Dim CvePrePolizaDev As Integer = ObjConta.AddPrePolizas("Modelos/RecepcionEntrega", 4, TotalCosto, TotalCosto, 1, Fecha, ClienteNombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + 'SE AGREGA MOVIMIENTO SEPARADO POR LA CUENTA DE VENTAS (ER) + For Each RowInv As DataRow In tmpCostos.Rows + ValorInventario = DtCostos.SUMD("Total", $"CveClasificacion = {RowInv("CveClasificacion")}").RoundAD() + TotalCostoAcumulado += ValorInventario + + 'CUANDO ES EL ÚLTIMO MOVIMIENTO Y HAY DIFERENCIAS EN LOS IMPORTES + If cont = DtCostos.Rows.Count AndAlso TotalCosto <> TotalCostoAcumulado Then + ValorInventario = ValorInventario + (TotalCosto - TotalCostoAcumulado) + End If + + If Not ErrorCancelar Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, False, Multiplicador * ValorInventario, Multiplicador * ValorInventario, 69, SerieFolio, SerieFolio, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimientoDevolucion, CveSubProyecto:=ObjFactura.CveSubProyecto, CveClasificacion:=RowInv("CveClasificacion").ToString.ToEntero) Then + ErrorCancelar = True + End If + End If + cont += 1 + Next + + If Not ObjConta.AddPrePolizasDetalle(CvePrePolizaDev, True, Multiplicador * TotalCosto, Multiplicador * TotalCosto, 68, SerieFolio, SerieFolio, CveVenta:=CveVenta, CveCliente:=CveCliente, CveMovimientoAlmacen:=CveMovimientoDevolucion, CveSubProyecto:=ObjFactura.CveSubProyecto) Then + ErrorCancelar = True + End If + + 'AUTOCONTA - EL MOVIMIENTO 1 ES EL DE VENTA + + Dim AutoConta As Boolean = UsuarioActual.Empresa.Funcionalidad(200) = "1" + + If UsuarioActual.CveEmpresa = 119 AndAlso ObjFactura.TipoDocto.Contiene("Ant", "Rem", "RNC", "Cot", "Ped", "Pd2", "PA", "Egs", "Dev") Then + AutoConta = False + End If + + If Not ErrorCancelar AndAlso ObjConta.ValidacionesPrePoliza(CvePrePolizaDev, UsuarioActual) Then + If ObjConta.ValorPolizaDescuadre > 0 Then + GuardaLogAD($"Modelos/RecepcionEntrega | Error{ObjConta.MensajePolizaDescuadre} Diferencia{ObjConta.ValorDiferencia} | CvePrePoliza:{CvePrePoliza}", "LogPrePolizas") + ErrorCancelar = True + End If + End If + + If AutoConta And Not ErrorCancelar Then + If Not ObjConta.ContabilizarPrePoliza(CvePrePolizaDev, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then + ErrorCancelar = True + MensajeError = "Ocurrió un error al contabilizar la prepoliza." + End If + End If + ' Else + 'ErrorCancelar = True + 'MensajeError = "Ocurrió un Error al ingresar las prepolizas" + 'End If + End If + End If + End If + + 'AGREGA BITACORA A VENTA + If Not ErrorCancelar AndAlso RealizarDevolucionAlmacen = 1 AndAlso CveMovimientoDevolucion > 0 Then + Dim MensajeBitacora As String = "Devuelta" + If Not ObjEventos.AddEventoBitacora(String.Format("Venta {2} en Folio: {1}", CveMovimientoDevolucion, Folio, MensajeBitacora), "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVenta) Then + MensajeError = "Ocurrió un error al agregar la bitacora." + ErrorCancelar = True + End If + End If + + Else + 'SI EXISTE UNA DEVOLUCION PREVIAMENTE HECHA UTILIZAR COMO REFERENCIA + If DtDevPrevias IsNot Nothing AndAlso DtDevPrevias.Rows.Count > 0 Then + CveMovimientoDevolucion = DtDevPrevias.FiltroPrimeroValor("CveMovimiento", $"CveConcepto = {CveConceptoMovimiento}").ToEntero() + End If + + End If + + + 'DEVOLUCION REMISION - REGRESA LAS EXISTENCIAS A ENTREGA POR ADELANTADO SI LA FACTURA VIENE DE REMISION + 'SI ES DEVOLUCION DEL CLIENTE DEBE REGRESAR A ENTREGA POR ADELANTADO + If Not ErrorCancelar AndAlso CveConceptoMovimiento = 18 AndAlso RevivirRemisiones Then + If Not GeneraMovimientosEntregaPorAdelantadoRemision(CveMovimientoDevolucion, ObjVentas, ObjInventario, DtDevRem, ListaRemisionesCancelar) Then + ErrorCancelar = True + MensajeError = "Ocurrió un error al generar los movimientos de devolución a remisión" + End If + End If + + If DtVirtuales IsNot Nothing Then + For Each RowVirtual As DataRow In DtVirtuales.Rows + 'REALIZA LA DEVOLUCION AL ALMACEN VIRTUAL + If Not ErrorCancelar AndAlso Not CancelarMovimientosVirtuales(CveVenta, CveMovimientoDevolucion, RowVirtual("CveMovimiento").ToString().ToEntero(), ObjInventario, TipoDocto:=ObjFactura.TipoDocto) Then + ErrorCancelar = True + MensajeError = "Ocurrió un error al realizar la devolución del virtual. Por favor vuelva a intentar." + End If + Next + End If + + If ErrorCancelar Then + Exit For + End If + + Next + End If + + 'SI EXISTEN HAY EXISTENCIA EN (ENTREGA POR ADELANTADO) SE TIENE QUE REGRESAR AL ALMACEN ORGINAL (GENERAL,SIN COSTO) + If Not ErrorCancelar AndAlso ObjFactura.TipoDocto <> "Rem" AndAlso ListaRemisionesCancelar IsNot Nothing AndAlso ListaRemisionesCancelar.Count > 0 Then + + 'VERIFICA LOS MOVIMIENTOS DE DEVOLUCION YA GENERADOS QUE TENGAN EXISTENCIA EN (ENTREGA POR ADELANTADO) + If Not ErrorCancelar Then + If ObjInventario.GetMovimientosDevoluciones(CveVenta, UsuarioActual.CveEmpresa) Then + DtDevoluciones = ObjInventario.DtResultados.FiltraParametros("CveTipoAlmacen = 10") + Else + ErrorCancelar = True + MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar." + End If + End If + + 'DEBE REGRESAR LA EXISTENCIA DE (ENTREGA POR ADELANTADO) AL ALMACEN ORGINAL (GENERAL,SIN COSTO) + If Not ErrorCancelar AndAlso DtDevoluciones IsNot Nothing AndAlso DtDevoluciones.Rows.Count > 0 Then + For Each CveRemision As Integer In ListaRemisionesCancelar + Dim ObjRemision As New Factura(UsuarioActual, CveRemision, UsuarioActual.CveEmpresa, VerificaAlmacen:=True) + + If ObjRemision IsNot Nothing AndAlso ObjRemision.CveVenta > 0 Then + + If ObjRemision.SaldoAlmacen <> 0 Then + Dim SaldoAlmacenExA As Decimal = 0 + Dim SaldoAlmacenUsados As Decimal = 0 + Dim DtSaldosAlmacenRemision As DataTable = Nothing + 'VERIFICA SI HACE FALTA DEVOLVER PRODUCTOS Y USADOS EN ESPECIFICO + If Not ErrorCancelar Then + If ObjInventario.GetSaldoVentaDetalleAlmacen(ObjRemision.CveVenta, UsuarioActual.CveEmpresa) Then + DtSaldosAlmacenRemision = ObjInventario.DtResultados.Copy() + Else + ErrorCancelar = True + MensajeError = "Ocurrió un error al cargar los saldos de devolución. Por favor vuelva a intentar." + End If + End If + + + Dim DtDevRemision As DataTable = DtDevoluciones.FiltraParametros($"CveRemision={CveRemision}") + + Dim DtDevMovs As DataTable = DtDevRemision.FiltraParametros("", DistinctColumns:={"CveMovimiento", "CveRemision", "CveAlmacen", "CveAlmacenDestino"}) + + For Each RowDevolucion As DataRow In DtDevMovs.Rows + CveAlmacen = RowDevolucion("CveAlmacen").ToString().ToEntero() + CveAlmacenDevolucion = RowDevolucion("CveAlmacenDestino").ToString().ToEntero() + + If CveAlmacen > 0 AndAlso DtSaldosAlmacenRemision IsNot Nothing Then + SaldoAlmacenExA = DtSaldosAlmacenRemision.SUMD("SaldoAlmacen", $"CveAlmacen = {CveAlmacen}") + End If + + If SaldoAlmacenExA <> 0 Then + If Not CancelarMovimientosRemision(CveRemision, CveAlmacen, CveAlmacenDevolucion, DtDevRemision.FiltraParametros($"CveMovimiento={RowDevolucion("CveMovimiento")}"), ObjVentas, ObjInventario, ObjConta) Then + ErrorCancelar = True + MensajeError = "Ocurrió un error al cancelar los movimientos de la remisión." + Exit For + End If + End If + + Next + + 'CANCELAR MOVIMIENTOS DE USADOS SI TIENE + If Not ErrorCancelar AndAlso UsuarioActual.Empresa.Funcionalidad(531) = "1" Then + Dim CveAlmacenUsado As Integer = 0 + Dim CveMovimientoUsado As Integer = 0 + + If ObjInventario.GetInv_Mov(ObjRemision.CveVenta, UsuarioActual.CveEmpresa) Then + CveMovimientoUsado = ObjInventario.DtResultados.FiltroPrimeroValor("CveMovimiento", "CvePS IS NULL AND CveConcepto = 42").ToEntero() + CveAlmacenUsado = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen", "CvePS IS NULL AND CveConcepto = 42").ToEntero() + Else + ErrorCancelar = True + MensajeError = "Ocurrió un error al cargar los datos de devolución de usado. Por favor vuelva a intentar." + End If + + If CveAlmacenUsado > 0 AndAlso DtSaldosAlmacenRemision IsNot Nothing Then + SaldoAlmacenUsados = DtSaldosAlmacenRemision.SUMD("SaldoAlmacen", $"CveAlmacen = {CveAlmacenUsado}") + End If + + If Not ErrorCancelar AndAlso CveMovimientoUsado > 0 AndAlso SaldoAlmacenUsados <> 0 Then + If CancelarInventarioUsado(ObjRemision, CveAlmacenUsado, CveMovimientoUsado, ObjInventario, ObjConta, Contabilizable:=False) <= 0 Then + ErrorCancelar = True + MensajeError = "Ocurrió un error al cancelar los usados. Por favor vuelva a intentar." + End If + End If + + 'CANCELAR MOVIMIENTOS DE GARANTIA SI TIENE + If Not ErrorCancelar AndAlso Not GenerarMovimientoGarantia(15, "Salida Garantía", ClsPaginas.NowADS(), ObjRemision, ObjAcum, ObjInventario, ObjConta) Then + ErrorCancelar = True + End If + + 'CANCELA LOS FOLIOS DE GARANTIA + If Not ErrorCancelar AndAlso Not ObjAcum.UpdateGarantiaCancelacion(ObjRemision.CveVenta) Then + ErrorCancelar = True + MensajeError = "Ocurrió un error al actualizar la garantía" + End If + + End If + + If DtDevRemision IsNot Nothing Then + DtDevRemision.Dispose() + End If + + If DtDevMovs IsNot Nothing Then + DtDevMovs.Dispose() End If End If Else - 'SI EXISTE UNA DEVOLUCION PREVIAMENTE HECHA UTILIZAR COMO REFERENCIA - If DtDevPrevias IsNot Nothing AndAlso DtDevPrevias.Rows.Count > 0 Then - CveMovimientoDevolucion = DtDevPrevias.FiltroPrimeroValor("CveMovimiento", $"CveConcepto = {CveConceptoMovimiento}").ToEntero() - End If - + ErrorCancelar = True + MensajeError = "Ocurrió un error al cargar los datos de la remisión. Por favor vuelva a intentar." End If - - 'DEVOLUCION REMISION - REGRESA LAS EXISTENCIAS A ENTREGA POR ADELANTADO SI LA FACTURA VIENE DE REMISION - 'SI ES DEVOLUCION DEL CLIENTE DEBE REGRESAR A ENTREGA POR ADELANTADO - If Not ErrorCancelar AndAlso CveConceptoMovimiento = 18 AndAlso RevivirRemisiones Then - If Not GeneraMovimientosEntregaPorAdelantadoRemision(CveMovimientoDevolucion, ObjVentas, ObjInventario, DtDevRem, ListaRemisionesCancelar) Then - ErrorCancelar = True - MensajeError = "Ocurrió un error al generar los movimientos de devolución a remisión" - End If - End If - - If DtVirtuales IsNot Nothing Then - For Each RowVirtual As DataRow In DtVirtuales.Rows - 'REALIZA LA DEVOLUCION AL ALMACEN VIRTUAL - If Not ErrorCancelar AndAlso Not CancelarMovimientosVirtuales(CveVenta, CveMovimientoDevolucion, RowVirtual("CveMovimiento").ToString().ToEntero(), ObjInventario, TipoDocto:=ObjFactura.TipoDocto) Then - ErrorCancelar = True - MensajeError = "Ocurrió un error al realizar la devolución del virtual. Por favor vuelva a intentar." - End If - Next + If ObjRemision IsNot Nothing Then + ObjRemision.Dispose() End If If ErrorCancelar Then @@ -6463,243 +6601,126 @@ Namespace Modelos Next End If - 'SI EXISTEN HAY EXISTENCIA EN (ENTREGA POR ADELANTADO) SE TIENE QUE REGRESAR AL ALMACEN ORGINAL (GENERAL,SIN COSTO) - If Not ErrorCancelar AndAlso ObjFactura.TipoDocto <> "Rem" AndAlso ListaRemisionesCancelar IsNot Nothing AndAlso ListaRemisionesCancelar.Count > 0 Then + End If - 'VERIFICA LOS MOVIMIENTOS DE DEVOLUCION YA GENERADOS QUE TENGAN EXISTENCIA EN (ENTREGA POR ADELANTADO) - If Not ErrorCancelar Then - If ObjInventario.GetMovimientosDevoluciones(CveVenta, UsuarioActual.CveEmpresa) Then - DtDevoluciones = ObjInventario.DtResultados.FiltraParametros("CveTipoAlmacen = 10") - Else - ErrorCancelar = True - MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar." + 'CANCELACION DE MOVIMIENTOS DE REMISION, PEDIDOS + If Not ErrorCancelar AndAlso ObjFactura.TipoDocto.Contiene("Rem", "Ped") AndAlso RealizarDevolucionAlmacen = 1 AndAlso ObjFactura.SaldoAlmacen <> 0 Then + Dim CveMovimientoUsado As Integer = -1 + Dim CveAlmacenUsado As Integer = 0 + Dim CveAlmacenGeneral As Integer = 0 + Dim CveAlmacenExA As Integer = 0 + + Dim SaldoAlmacenExA As Decimal = 0 + Dim SaldoAlmacenUsados As Decimal = 0 + + Dim DtMovRemision As DataTable = Nothing + 'VERIFICA LOS MOVIMIENTOS DE DEVOLUCION YA GENERADOS QUE TENGAN EXISTENCIA EN (ENTREGA POR ADELANTADO) + If Not ErrorCancelar Then + If ObjInventario.GetInv_Mov(CveVenta, UsuarioActual.CveEmpresa) Then + DtMovRemision = ObjInventario.DtResultados.FiltraParametros("CveTipoAlmacen IN (10)") + CveAlmacenGeneral = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen", "CveTipoAlmacen IN (1,4)").ToEntero() + 'SI ES SERVICIO A DOMICILIO DEBE REGRESAR A ESTE TIPO DE ALMACEN + If Me.ServicioDomicilio Then + CveAlmacenGeneral = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen", "CveTipoAlmacen = 29").ToEntero() End If + + CveAlmacenExA = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen", "CveTipoAlmacen = 10").ToEntero() + If CveAlmacenExA <= 0 Then + CveAlmacenExA = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen", "CveTipoAlmacen = 4").ToEntero() + DtMovRemision = ObjInventario.DtResultados.FiltraParametros("CveTipoAlmacen IN (4)") + End If + + CveMovimientoUsado = ObjInventario.DtResultados.FiltroPrimeroValor("CveMovimiento", "CvePS IS NULL AND CveConcepto = 42").ToEntero() + CveAlmacenUsado = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen", "CvePS IS NULL AND CveConcepto = 42").ToEntero() + Else + ErrorCancelar = True + MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar." End If + End If - 'DEBE REGRESAR LA EXISTENCIA DE (ENTREGA POR ADELANTADO) AL ALMACEN ORGINAL (GENERAL,SIN COSTO) - If Not ErrorCancelar AndAlso DtDevoluciones IsNot Nothing AndAlso DtDevoluciones.Rows.Count > 0 Then - For Each CveRemision As Integer In ListaRemisionesCancelar - Dim ObjRemision As New Factura(UsuarioActual, CveRemision, UsuarioActual.CveEmpresa, VerificaAlmacen:=True) + 'VERIFICA SI HACE FALTA DEVOLVER PRODUCTOS Y USADOS EN ESPECIFICO + If Not ErrorCancelar Then + If ObjInventario.GetSaldoVentaDetalleAlmacen(CveVenta, UsuarioActual.CveEmpresa) Then + If CveAlmacenExA > 0 Then + SaldoAlmacenExA = ObjInventario.DtResultados.SUMD("SaldoAlmacen", $"CveAlmacen = {CveAlmacenExA}") + End If + If CveAlmacenUsado > 0 Then + SaldoAlmacenUsados = ObjInventario.DtResultados.SUMD("SaldoAlmacen", $"CveAlmacen = {CveAlmacenUsado}") + End If + Else + ErrorCancelar = True + MensajeError = "Ocurrió un error al cargar los saldos de devolución. Por favor vuelva a intentar." + End If + End If - If ObjRemision IsNot Nothing AndAlso ObjRemision.CveVenta > 0 Then + 'DEBE REGRESAR LA EXISTENCIA DE (ENTREGA POR ADELANTADO) AL ALMACEN ORGINAL (GENERAL,SIN COSTO) + If Not ErrorCancelar AndAlso DtMovRemision IsNot Nothing AndAlso DtMovRemision.Rows.Count > 0 AndAlso SaldoAlmacenExA <> 0 Then - If ObjRemision.SaldoAlmacen <> 0 Then - Dim SaldoAlmacenExA As Decimal = 0 - Dim SaldoAlmacenUsados As Decimal = 0 - Dim DtSaldosAlmacenRemision As DataTable = Nothing - 'VERIFICA SI HACE FALTA DEVOLVER PRODUCTOS Y USADOS EN ESPECIFICO - If Not ErrorCancelar Then - If ObjInventario.GetSaldoVentaDetalleAlmacen(ObjRemision.CveVenta, UsuarioActual.CveEmpresa) Then - DtSaldosAlmacenRemision = ObjInventario.DtResultados.Copy() - Else - ErrorCancelar = True - MensajeError = "Ocurrió un error al cargar los saldos de devolución. Por favor vuelva a intentar." - End If - End If + Dim DtDevMovs As DataTable = DtMovRemision.FiltraParametros("", DistinctColumns:={"CveMovimiento", "CveAlmacen"}) + For Each RowDevolucion As DataRow In DtDevMovs.Rows + CveAlmacen = RowDevolucion("CveAlmacen").ToString().ToEntero() + Dim tdtt As DataTable = DtMovRemision.FiltraParametros($"CveMovimiento={RowDevolucion("CveMovimiento")} AND CvePS > 0 AND SaldoAlmacen <> 0") - Dim DtDevRemision As DataTable = DtDevoluciones.FiltraParametros($"CveRemision={CveRemision}") - - Dim DtDevMovs As DataTable = DtDevRemision.FiltraParametros("", DistinctColumns:={"CveMovimiento", "CveRemision", "CveAlmacen", "CveAlmacenDestino"}) - - For Each RowDevolucion As DataRow In DtDevMovs.Rows - CveAlmacen = RowDevolucion("CveAlmacen").ToString().ToEntero() - CveAlmacenDevolucion = RowDevolucion("CveAlmacenDestino").ToString().ToEntero() - - If CveAlmacen > 0 AndAlso DtSaldosAlmacenRemision IsNot Nothing Then - SaldoAlmacenExA = DtSaldosAlmacenRemision.SUMD("SaldoAlmacen", $"CveAlmacen = {CveAlmacen}") - End If - - If SaldoAlmacenExA <> 0 Then - If Not CancelarMovimientosRemision(CveRemision, CveAlmacen, CveAlmacenDevolucion, DtDevRemision.FiltraParametros($"CveMovimiento={RowDevolucion("CveMovimiento")}"), ObjVentas, ObjInventario, ObjConta) Then - ErrorCancelar = True - MensajeError = "Ocurrió un error al cancelar los movimientos de la remisión." - Exit For - End If - End If - - Next - - 'CANCELAR MOVIMIENTOS DE USADOS SI TIENE - If Not ErrorCancelar AndAlso UsuarioActual.Empresa.Funcionalidad(531) = "1" Then - Dim CveAlmacenUsado As Integer = 0 - Dim CveMovimientoUsado As Integer = 0 - - If ObjInventario.GetInv_Mov(ObjRemision.CveVenta, UsuarioActual.CveEmpresa) Then - CveMovimientoUsado = ObjInventario.DtResultados.FiltroPrimeroValor("CveMovimiento", "CvePS IS NULL AND CveConcepto = 42").ToEntero() - CveAlmacenUsado = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen", "CvePS IS NULL AND CveConcepto = 42").ToEntero() - Else - ErrorCancelar = True - MensajeError = "Ocurrió un error al cargar los datos de devolución de usado. Por favor vuelva a intentar." - End If - - If CveAlmacenUsado > 0 AndAlso DtSaldosAlmacenRemision IsNot Nothing Then - SaldoAlmacenUsados = DtSaldosAlmacenRemision.SUMD("SaldoAlmacen", $"CveAlmacen = {CveAlmacenUsado}") - End If - - If Not ErrorCancelar AndAlso CveMovimientoUsado > 0 AndAlso SaldoAlmacenUsados <> 0 Then - If CancelarInventarioUsado(ObjRemision, CveAlmacenUsado, CveMovimientoUsado, ObjInventario, ObjConta, Contabilizable:=False) <= 0 Then - ErrorCancelar = True - MensajeError = "Ocurrió un error al cancelar los usados. Por favor vuelva a intentar." - End If - End If - - 'CANCELAR MOVIMIENTOS DE GARANTIA SI TIENE - If Not ErrorCancelar AndAlso Not GenerarMovimientoGarantia(15, "Salida Garantía", ClsPaginas.NowADS(), ObjRemision, ObjAcum, ObjInventario, ObjConta) Then - ErrorCancelar = True - End If - - 'CANCELA LOS FOLIOS DE GARANTIA - If Not ErrorCancelar AndAlso Not ObjAcum.UpdateGarantiaCancelacion(ObjRemision.CveVenta) Then - ErrorCancelar = True - MensajeError = "Ocurrió un error al actualizar la garantía" - End If - - End If - - If DtDevRemision IsNot Nothing Then - DtDevRemision.Dispose() - End If - - If DtDevMovs IsNot Nothing Then - DtDevMovs.Dispose() - End If - End If - - Else + If tdtt IsNot Nothing AndAlso tdtt.Rows.Count > 0 Then + If Not CancelarMovimientosRemision(CveVenta, CveAlmacen, CveAlmacenGeneral, tdtt, ObjVentas, ObjInventario, ObjConta) Then ErrorCancelar = True - MensajeError = "Ocurrió un error al cargar los datos de la remisión. Por favor vuelva a intentar." - End If - - If ObjRemision IsNot Nothing Then - ObjRemision.Dispose() - End If - - If ErrorCancelar Then + MensajeError = "Ocurrió un error al cancelar los movimientos de la remisión." Exit For End If - - Next - End If - + End If + Next End If - 'CANCELACION DE MOVIMIENTOS DE REMISION, PEDIDOS - If Not ErrorCancelar AndAlso ObjFactura.TipoDocto.Contiene("Rem", "Ped") AndAlso RealizarDevolucionAlmacen = 1 AndAlso ObjFactura.SaldoAlmacen <> 0 Then - Dim CveMovimientoUsado As Integer = -1 - Dim CveAlmacenUsado As Integer = 0 - Dim CveAlmacenGeneral As Integer = 0 - Dim CveAlmacenExA As Integer = 0 - - Dim SaldoAlmacenExA As Decimal = 0 - Dim SaldoAlmacenUsados As Decimal = 0 - - Dim DtMovRemision As DataTable = Nothing - 'VERIFICA LOS MOVIMIENTOS DE DEVOLUCION YA GENERADOS QUE TENGAN EXISTENCIA EN (ENTREGA POR ADELANTADO) - If Not ErrorCancelar Then - If ObjInventario.GetInv_Mov(CveVenta, UsuarioActual.CveEmpresa) Then - DtMovRemision = ObjInventario.DtResultados.FiltraParametros("CveTipoAlmacen IN (10)") - CveAlmacenGeneral = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen", "CveTipoAlmacen IN (1,4)").ToEntero() - 'SI ES SERVICIO A DOMICILIO DEBE REGRESAR A ESTE TIPO DE ALMACEN - If Me.ServicioDomicilio Then - CveAlmacenGeneral = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen", "CveTipoAlmacen = 29").ToEntero() - End If - - CveAlmacenExA = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen", "CveTipoAlmacen = 10").ToEntero() - If CveAlmacenExA <= 0 Then - CveAlmacenExA = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen", "CveTipoAlmacen = 4").ToEntero() - DtMovRemision = ObjInventario.DtResultados.FiltraParametros("CveTipoAlmacen IN (4)") - End If - - CveMovimientoUsado = ObjInventario.DtResultados.FiltroPrimeroValor("CveMovimiento", "CvePS IS NULL AND CveConcepto = 42").ToEntero() - CveAlmacenUsado = ObjInventario.DtResultados.FiltroPrimeroValor("CveAlmacen", "CvePS IS NULL AND CveConcepto = 42").ToEntero() - Else - ErrorCancelar = True - MensajeError = "Ocurrió un error al cargar los datos de devolución. Por favor vuelva a intentar." - End If - End If - - 'VERIFICA SI HACE FALTA DEVOLVER PRODUCTOS Y USADOS EN ESPECIFICO - If Not ErrorCancelar Then - If ObjInventario.GetSaldoVentaDetalleAlmacen(CveVenta, UsuarioActual.CveEmpresa) Then - If CveAlmacenExA > 0 Then - SaldoAlmacenExA = ObjInventario.DtResultados.SUMD("SaldoAlmacen", $"CveAlmacen = {CveAlmacenExA}") - End If - If CveAlmacenUsado > 0 Then - SaldoAlmacenUsados = ObjInventario.DtResultados.SUMD("SaldoAlmacen", $"CveAlmacen = {CveAlmacenUsado}") - End If - Else - ErrorCancelar = True - MensajeError = "Ocurrió un error al cargar los saldos de devolución. Por favor vuelva a intentar." - End If - End If - - 'DEBE REGRESAR LA EXISTENCIA DE (ENTREGA POR ADELANTADO) AL ALMACEN ORGINAL (GENERAL,SIN COSTO) - If Not ErrorCancelar AndAlso DtMovRemision IsNot Nothing AndAlso DtMovRemision.Rows.Count > 0 AndAlso SaldoAlmacenExA <> 0 Then - - Dim DtDevMovs As DataTable = DtMovRemision.FiltraParametros("", DistinctColumns:={"CveMovimiento", "CveAlmacen"}) - - For Each RowDevolucion As DataRow In DtDevMovs.Rows - CveAlmacen = RowDevolucion("CveAlmacen").ToString().ToEntero() - Dim tdtt As DataTable = DtMovRemision.FiltraParametros($"CveMovimiento={RowDevolucion("CveMovimiento")} AND CvePS > 0 AND SaldoAlmacen <> 0") - - If tdtt IsNot Nothing AndAlso tdtt.Rows.Count > 0 Then - If Not CancelarMovimientosRemision(CveVenta, CveAlmacen, CveAlmacenGeneral, tdtt, ObjVentas, ObjInventario, ObjConta) Then - ErrorCancelar = True - MensajeError = "Ocurrió un error al cancelar los movimientos de la remisión." - Exit For - End If - End If - Next - End If - - 'CANCELAR MOVIMIENTOS DE USADOS SI TIENE - If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso Not ErrorCancelar AndAlso CveMovimientoUsado > 0 AndAlso SaldoAlmacenUsados <> 0 Then - If CancelarInventarioUsado(ObjFactura, CveAlmacenUsado, CveMovimientoUsado, ObjInventario, ObjConta, Contabilizable:=False) <= 0 Then - ErrorCancelar = True - MensajeError = "Ocurrió un error al cancelar los movimientos de usados." - End If - End If - - 'CANCELAR MOVIMIENTOS DE GARANTIA SI TIENE - If Not ErrorCancelar AndAlso UsuarioActual.Empresa.Funcionalidad(531) = "1" Then - If Not GenerarMovimientoGarantia(15, "Salida Garantía", ClsPaginas.NowADS(), ObjFactura, ObjAcum, ObjInventario, ObjConta) Then - ErrorCancelar = True - End If - End If - End If - - 'VERIFICAR MOVIMIENTOS DE APARTADOS - If Not ErrorCancelar Then - If Not GeneraMovimientosApartados(ObjInventario) Then + 'CANCELAR MOVIMIENTOS DE USADOS SI TIENE + If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso Not ErrorCancelar AndAlso CveMovimientoUsado > 0 AndAlso SaldoAlmacenUsados <> 0 Then + If CancelarInventarioUsado(ObjFactura, CveAlmacenUsado, CveMovimientoUsado, ObjInventario, ObjConta, Contabilizable:=False) <= 0 Then ErrorCancelar = True - MensajeError = "Ocurrió un error al guardar los movimientos de control de apartados" + MensajeError = "Ocurrió un error al cancelar los movimientos de usados." End If End If - 'QUEMA DEVOLUCION | QUEMA = LA QUITA DE PENDIENTE POR RECIBIR (DEVOLVER) - If Not ErrorCancelar Then - If Not ObjVentas.UpdateVentasDevolucionAlmacen(2, CveVenta) Then - MensajeError = "Ocurrió un error al hacer la devolucion. Por favor vuelva a intentar." + 'CANCELAR MOVIMIENTOS DE GARANTIA SI TIENE + If Not ErrorCancelar AndAlso UsuarioActual.Empresa.Funcionalidad(531) = "1" Then + If Not GenerarMovimientoGarantia(15, "Salida Garantía", ClsPaginas.NowADS(), ObjFactura, ObjAcum, ObjInventario, ObjConta) Then ErrorCancelar = True End If End If End If - End If - 'EMPRESA HOSPITALARIA - SI ES PEDIDO LA DEVOLUCION SE DEBE HACER DESPUES DE CANCELAR EL PEDIDO - If Not ErrorCancelar AndAlso UsuarioActual.Empresa.Funcionalidad(578) = "1" AndAlso ObjFactura.TipoDocto = "Ped" Then - If Not RealizarDevolucionAlmacen = 1 AndAlso TieneAlmacen Then - If Not ObjInventario.ActualizarEsDevolucionVenta(ObjFactura.CveVenta, 1, AplicaDevolucionCompleta:=True) Then + 'VERIFICAR MOVIMIENTOS DE APARTADOS + If Not ErrorCancelar Then + If Not GeneraMovimientosApartados(ObjInventario) Then + ErrorCancelar = True + MensajeError = "Ocurrió un error al guardar los movimientos de control de apartados" + End If + End If + + 'QUEMA DEVOLUCION | QUEMA = LA QUITA DE PENDIENTE POR RECIBIR (DEVOLVER) + If Not ErrorCancelar Then + If Not ObjVentas.UpdateVentasDevolucionAlmacen(2, CveVenta) Then + MensajeError = "Ocurrió un error al hacer la devolucion. Por favor vuelva a intentar." ErrorCancelar = True - MensajeError = "No se pudo actualizar el estatus de almacen del pedido" End If End If End If End If + 'EMPRESA HOSPITALARIA - SI ES PEDIDO LA DEVOLUCION SE DEBE HACER DESPUES DE CANCELAR EL PEDIDO + If Not ErrorCancelar AndAlso UsuarioActual.Empresa.Funcionalidad(578) = "1" AndAlso ObjFactura.TipoDocto = "Ped" Then + If Not RealizarDevolucionAlmacen = 1 AndAlso TieneAlmacen Then + If Not ObjInventario.ActualizarEsDevolucionVenta(ObjFactura.CveVenta, 1, AplicaDevolucionCompleta:=True) Then + ErrorCancelar = True + MensajeError = "No se pudo actualizar el estatus de almacen del pedido" + End If + End If + End If + + End If + 'CUANDO LA CANCELACION ESTA EN PROCESO NO DEBE REALIZAR NADA DE ESTE PROCESO + If Not ErrorCancelar AndAlso (Not EsRefacturacion AndAlso (CveEstatus > 0 AndAlso Not CveEstatus.Contiene(20, 23)) AndAlso CveEstatusRefacturacion = 0) Then 'CANCELA CONTRATOS If Not ErrorCancelar Then If ObjFactura.CveContrato > 0 AndAlso ObjFactura.TipoDocto.Contiene("Ing", "Ant") Then @@ -6822,7 +6843,6 @@ Namespace Modelos End If End If End If - End If 'MARCA LA VENTA PARA REALIZAR LA DEVOLUCION POSTERIORMENTE diff --git a/Bancos/CuentasBancariasDetalle.aspx b/Bancos/CuentasBancariasDetalle.aspx index 7c2bb543c..2f73ed70c 100644 --- a/Bancos/CuentasBancariasDetalle.aspx +++ b/Bancos/CuentasBancariasDetalle.aspx @@ -383,7 +383,7 @@
- +
@@ -398,12 +398,16 @@ - - - + <%-- --%> @@ -1959,19 +1956,16 @@ - + - + - - - -
+ + +
- Clasificación -
Producto/Servicio
@@ -5167,7 +5161,7 @@
- @@ -492,15 +501,25 @@ + - + + + + + + + + @@ -1548,7 +1567,9 @@ - + @@ -1753,6 +1774,8 @@ + + diff --git a/OC/OC.aspx.vb b/OC/OC.aspx.vb index 2b6d48e9c..aba42539d 100644 --- a/OC/OC.aspx.vb +++ b/OC/OC.aspx.vb @@ -4,10 +4,11 @@ Option Strict On Imports System.Data Imports System.Data.SqlClient Imports System.IO +Imports DocumentFormat.OpenXml.Drawing.Diagrams Imports Extensiones Imports GemBox.Spreadsheet Imports Newtonsoft.Json -Imports Telerik.Web.Apoc + Partial Class OC_OC Inherits ClsPaginas @@ -657,6 +658,19 @@ Partial Class OC_OC End Set End Property + Private Property EsGrupoDiaz As Boolean + Get + If ViewState("EsGrupoDiaz") Is Nothing Then + ViewState("EsGrupoDiaz") = False + End If + + Return Boolean.Parse(ViewState("EsGrupoDiaz").ToString) + End Get + Set(value As Boolean) + ViewState("EsGrupoDiaz") = value + End Set + End Property + #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load @@ -664,7 +678,11 @@ Partial Class OC_OC If Not Page.IsPostBack Then GlobalDTCultivosCuadro(UsuarioActual.CveEmpresa) = Nothing NotificacionCorreo = True - If UsuarioActual.Empresa.Funcionalidad(382) = "1" Then NotificacionCorreo = False + + If UsuarioActual.Empresa.Funcionalidad(382) = "1" Then + NotificacionCorreo = False + EsGrupoDiaz = True + End If CargaDatosAgregarPS() CveProveedorOriginal = -1 @@ -1031,20 +1049,27 @@ Partial Class OC_OC End If End If - If UsuarioActual.Empresa.Funcionalidad(382) = "1" Then + If EsGrupoDiaz Then chkSubProyectoEntrega.Visible = True LblPrioridad.Text = "Sucursal" DdlPrioridad.Visible = False DdlSubProyectoGral.Visible = True TrDescuentoEscalonado.Visible = True TrDescuentoProntoPago.Visible = True + TrBotonesInvTemporal.Visible = True + + If TipoOC = "OC" AndAlso UsuarioActual.TienePermisoProceso(401) AndAlso EsNuevo Then + ChkEsTemporalRegistro.Visible = True + End If + + End If If UsuarioActual.Empresa.CveEmpresa = 189 AndAlso CveOrdenCompra <> Nothing AndAlso CveOrdenCompra > 0 Then BtnEdicionMasiva.Visible = True End If - If CveOrdenCompra > 0 AndAlso UsuarioActual.Empresa.Funcionalidad(382) = "1" OrElse UsuarioActual.CveRol = 1 Then + If CveOrdenCompra > 0 AndAlso EsGrupoDiaz OrElse UsuarioActual.CveRol = 1 Then LnkDescargarPSExcel.Visible = True End If @@ -1056,7 +1081,7 @@ Partial Class OC_OC If CveOrdenCompra > 0 Then GvD.Columns(20).Visible = False Else - If UsuarioActual.Empresa.Funcionalidad(382) = "1" Then + If EsGrupoDiaz Then TxtCant.Text = "1" TxtCant.Focus() RegistraScript("abrirDdlPS();", "A1") @@ -1532,7 +1557,7 @@ Partial Class OC_OC - + ChkEsTemporal.Checked = Boolean.Parse(objOC.DtResultados.Rows(0)("EsTemporal").ToString) 'PROMOCIONES TxtPromocion.Text = objOC.Promocion @@ -2032,11 +2057,40 @@ Partial Class OC_OC objOC.Dispose() GvVentaRelacionadas.DataBind() - If TieneInventario Then + If TieneInventario Or EsGrupoDiaz Then 'CARGA MOVTOS DE ALMACEN InicializaMovtosAlmacen() End If + + + If EsGrupoDiaz And TipoOC = "OC" And ChkEsTemporal.Checked Then + + Dim TieneEntrada As Boolean = False + Dim TieneSalida As Boolean = False + + For Each gvRow As GridViewRow In GVInv.Rows + If gvRow.DataKey("CveConcepto").ToEntero = 33 Then + TieneEntrada = True + End If + If gvRow.DataKey("CveConcepto").ToEntero = 35 Then + TieneSalida = True + End If + Next + + If UsuarioActual.TienePermisoProceso(401) Then + If Not TieneEntrada Then + BtnInvTempEntrada.Visible = True + End If + + If TieneEntrada AndAlso Not TieneSalida Then + BtnInvTempSalida.Visible = True + End If + End If + + + End If + If UsuarioActual.Empresa.Funcionalidad(565) = "1" And pCveOrdenCompra > 0 And TipoOC.ToUpper() = "REQ" Then 'LAS COTIZACIONES RAPIDAS SOLO DEBE APARECER SI EL PROVEEDOR ES DEDICADO If CveConfianzaProveedor = 1 Then @@ -2344,40 +2398,24 @@ Partial Class OC_OC End If End Sub Protected Sub HFProducto_ValueChanged(sender As Object, e As EventArgs) Handles DdlP2.selectedindexchange + Dim tempdt As DataTable = GlobalDTPS(CveEmpresaActual, CvePS:=DdlP2.SelectedValue.ToEntero) If tempdt.Rows.Count > 0 Then - + Dim drps As DataRow = tempdt.Rows(0) If isWithFamily() Then - DdlClasificacion.SelectedValueExist(tempdt.Rows(0)("CveSubFamilia").ToString) + DdlClasificacion.SelectedValueExist(drps("CveSubFamilia").ToString) Else - DdlClasificacion.SelectedValueExist(tempdt.Rows(0)("CveClasificacion").ToString) + DdlClasificacion.SelectedValueExist(drps("CveClasificacion").ToString) End If + txtPrecioUnitario.Text = drps("UltimoCosto").ToString.ToDecimal.FormatoNumero CboUnidadMedida.Items.Clear() - CboUnidadMedida.DataSource = GlobalDTProductosServiciosEquivalencias(DdlP2.SelectedValue.ToEntero, -1, UsuarioActual.CveEmpresa) CboUnidadMedida.DataBind() - - If CveEmpresaActual = 119 Then - txtPrecioUnitario.Text = GlobalDTPS(CveEmpresaActual, CvePS:=DdlP2.SelectedValue.ToEntero).FiltroPrimeroValor("Precio") - ElseIf CveEmpresaActual.Contiene(72, 80) Then - Dim ObjOC As New ClsOC - - If ObjOC.GetUltimoCostoPS(DdlP2.SelectedValue.ToEntero) Then - If ObjOC.DtResultados.Rows.Count.ToEntero > 0 Then - LblUltimoCosto.Visible = True - LblUltimoCosto.Text = $"UC: {ObjOC.DtResultados(0)("UltimoCosto").ToString.FormatoNumero}" - Else - LblUltimoCosto.Visible = False - LblUltimoCosto.Text = "" - End If - End If - ObjOC.Dispose() - End If End If - If UsuarioActual.Empresa.Funcionalidad(382) = "1" Then + If EsGrupoDiaz Then txtPrecioUnitario.Focus() UPPDetalle.Update() End If @@ -2387,6 +2425,12 @@ Partial Class OC_OC #Region " AGREGAR " Protected Sub LbAgregar_Click(sender As Object, e As EventArgs) Handles LbAgregar.Click + + If ModalidadSubProyectoGeneral And DdlSubProyectoGral.SelectedValue.ToEntero <= 0 Then + Alert("Debe seleccionar una Sucursal", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + 'VALIDA CVEPS If DdlP2.SelectedValue().ToEntero <= 0 Then Alert("El campo 'Producto/Servicio' es necesario, por favor seleccione uno.", TipoMensaje.MsgAdvertencia) @@ -2453,6 +2497,16 @@ Partial Class OC_OC Dim CveOrdenCompraDetalle As Integer = DtDetalle.MAX("CveOrdenCompraDetalle").ToEntero + 100 Dim CantidadVentaMinima As Decimal = DrPS("VentaMinima").ToString.ToDecimal + Dim CveSubProyectoVal As Integer = DdlSubProyecto.SelectedValue.ToString.ToEntero + + If ModalidadSubProyectoGeneral Then + CveSubProyectoVal = DdlSubProyectoGral.SelectedValue.ToEntero + SubProyecto = DdlSubProyectoGral.SelectedItem.Text + End If + + + + If CantidadVentaMinima > 0 AndAlso TxtCant.Text.ToDecimal > 0 Then If TxtCant.Text.ToDecimal Mod CantidadVentaMinima <> 0 Then Alert(String.Format("El producto se vende solo en cantidades de {0:####.####}", CantidadVentaMinima)) @@ -2471,9 +2525,11 @@ Partial Class OC_OC End If End If + + AddPS(TxtCant.Text.ToDecimal, DdlP2.SelectedValue.ToEntero, DdlP2.SelectedText, TxtObsPS.Text, ImportePS, TxtDescuentoAdd.Text.ToDecimal, TotalPS, CboUnidadMedida.SelectedValue.ToEntero, IvaPS, IEPSPS, IEPSPSIVA, DdlClasificacion.SelectedValue.ToEntero, CboUnidadMedida.SelectedItem.Text, DdlClasificacion.SelectedItem.Text, DdlProyecto.SelectedValue.ToEntero, Proyecto, - DdlSubProyecto.SelectedValue.ToEntero, SubProyecto, LblCodigo.Text, HdnCveActivoFijo.Value.ToEntero, 0, CveOrdenCompraDetalle, CveOrdenCompra, IdCuentaPorEjercer, + CveSubProyectoVal, SubProyecto, LblCodigo.Text, HdnCveActivoFijo.Value.ToEntero, 0, CveOrdenCompraDetalle, CveOrdenCompra, IdCuentaPorEjercer, IdCuentaComprometido, DdlACGeneral1.SelectedValue.ToEntero, DdlACGeneral2.SelectedValue.ToEntero, DdlACGeneral3.SelectedValue.ToEntero, DdlACGeneral4.SelectedValue.ToEntero, DdlACGeneral5.SelectedValue.ToEntero, RetIVA, RetISR, CveCultivoCuadroDetalle:=DdlCultivosCuadro.SelectedValue.ToEntero, Cuadro:=DdlCultivosCuadro.SelectedItem.Text) @@ -2748,6 +2804,13 @@ Partial Class OC_OC TieneError = True End If + If ModalidadSubProyectoGeneral Then + Dim t As Integer = DtDetalle.COUNT("CvePS", $"CveSubProyecto <> {DdlSubProyectoGral.SelectedValue}") + If t > 0 Then + Alert("Se tienen partidas de diferentes Sucursales.", TipoMensaje.MsgAdvertencia) + Return True + End If + End If 'VALIDA QUE ANTES DE QUE PUEDA MANDARLA A SUPERVISADA SE TIENE QUE SELECCIONAR UN PROVEEDOR If UsuarioActual.Empresa.Funcionalidad(565) = "1" Then @@ -2904,14 +2967,21 @@ Partial Class OC_OC TieneError = True End If + Dim tCveSubProyecto As Integer = UsuarioActual.CveSubProyecto + If ModalidadSubProyectoGeneral Then tCveSubProyecto = DdlSubProyectoGral.SelectedValue.ToEntero + + If tCveSubProyecto <= 0 Then + tCveSubProyecto = GetCveSubProyectoDetalles() + End If + If Not TieneError Then ' AGREGAR REQUISICION - If OC.AddOrdenCompra("REQ", -1, TxtDescrip.Text, TxtJustificacion.Text, DdlPrioridad.SelectedValue.ToEntero, TxtFecha.Text.ToDate, DdlMoneda.SelectedValue.ToEntero, CboE.SelectedValue.ToEntero, If(TxtFechaEstimadaEntrega.Text.Trim = "", "-1", TxtFechaEstimadaEntrega.Text.Trim), + If OC.AddOrdenCompra("REQ", tCveSubProyecto, TxtDescrip.Text, TxtJustificacion.Text, DdlPrioridad.SelectedValue.ToEntero, TxtFecha.Text.ToDate, DdlMoneda.SelectedValue.ToEntero, CboE.SelectedValue.ToEntero, If(TxtFechaEstimadaEntrega.Text.Trim = "", "-1", TxtFechaEstimadaEntrega.Text.Trim), LugarEntrega, UsuarioActual.CveUsuario, CveEmpresaActual, GvD.Rows(0).FCHiddenField("HdnCvePresupuestoEgreso").Value.ToString.ToEntero, pCveProveedor:=CveProveedor, pCveProveedorSucursal:=CveProveedorSucursal, RequiereCotizacion:=ChkCotizacion.Checked, CveCliente:=Ddlcliente.txtValue.Value.ToEntero, CveVendedor:=DdlVendedor.SelectedValue.ToEntero, PrioridadObservacion:=txtobsprioridad.Text, PorcentajeIVA:=Math.Round(DdlIVA.SelectedValue.ToDecimal - 1, 2), IVA:=IVA, RetIVA:=TxtRetIVA.Text.ToDecimal, RetISR:=TxtRetISR.Text.ToDecimal, CveCotizacion:=CveCotizacion, FolioAdicional:=TxtFolioAdicional.Text, EntregaDirecta:=If(ChkEntregaDirecta.Checked, 1, -1), CveDireccionEnvio:=If(DdlDireccionEnvio.Visible, DdlDireccionEnvio.SelectedValue.ToEntero, -1), Guia:=TxtGuia.Text.Trim, IEPS:=TxtIEPS.Text.ToDecimal, UsoCFDI:=DdlUsoCFDI.SelectedValue.ToEntero, Promocion:=Promocion, CveProveedorContacto:=CveProveedorContacto, NumRemision:=TxtNumRemision.Text.Trim(), MetodoPago:=DdlMetodoPago.SelectedValue.ToEntero(), - CveSubProyectoEntrega:=DdlSubProyectoEntrega.SelectedValue.ToEntero, PorcentajeProntoPago:=PorcentajeProntoPago) Then + CveSubProyectoEntrega:=DdlSubProyectoEntrega.SelectedValue.ToEntero, PorcentajeProntoPago:=PorcentajeProntoPago, EsTemporal:=ChkEsTemporal.Checked) Then CveOrdenCompraPadre = OC.CveOrdenCompra If CveOrdenCompraPadre > 0 Then @@ -2958,7 +3028,7 @@ Partial Class OC_OC PorcentajeIVA:=Math.Round(DdlIVA.SelectedValue.ToDecimal - 1, 2), IVA:=IVA, RetIVA:=TxtRetIVA.Text.ToDecimal, RetISR:=TxtRetISR.Text.ToDecimal, CveCotizacion:=CveCotizacion, FolioAdicional:=TxtFolioAdicional.Text, EntregaDirecta:=If(ChkEntregaDirecta.Checked, 1, -1), CveDireccionEnvio:=If(DdlDireccionEnvio.Visible, DdlDireccionEnvio.SelectedValue.ToEntero, -1), Guia:=TxtGuia.Text.Trim, IEPS:=TxtIEPS.Text.ToDecimal, CveIEAnticipo:=CveIEAnticipo, ImporteAnticipo:=ImporteAnticipos, UsoCFDI:=DdlUsoCFDI.SelectedValue.ToEntero, Promocion:=Promocion, CveProveedorContacto:=CveProveedorContacto, NumRemision:=TxtNumRemision.Text, MetodoPago:=DdlMetodoPago.SelectedValue.ToEntero(), CveSubProyectoEntrega:=DdlSubProyectoEntrega.SelectedValue.ToEntero, - PorcentajeProntoPago:=PorcentajeProntoPago) Then + PorcentajeProntoPago:=PorcentajeProntoPago, EsTemporal:=ChkEsTemporal.Checked) Then CveOrdenCompra = OC.CveOrdenCompra CveEstatus = CboE.SelectedValue.ToEntero @@ -3047,13 +3117,19 @@ Partial Class OC_OC If Not TieneError AndAlso TipoOC = "OC" Then - If Not GeneraPrePolizaPresupuesto(CveOrdenCompra, OC.IniciaTransacSQL) Then TieneError = True End If - End If + + If EsGrupoDiaz AndAlso EsNuevo AndAlso CveOrdenCompra > 0 AndAlso TipoOC = "OC" AndAlso ChkEsTemporalRegistro.Checked Then + If Not RegistroInventarioTemporal(OC.IniciaTransacSQL, CveOrdenCompra, 1, False) Then + TieneError = True + End If + End If + + If Not TieneError Then If Conta IsNot Nothing Then Conta.Commit() OC.Commit() @@ -3133,7 +3209,16 @@ Partial Class OC_OC End If - If OC.UpdateOrdenCompra(-1, TxtDescrip.Text, TxtJustificacion.Text, DdlPrioridad.SelectedValue.ToEntero, ChkCotizacion.Checked, If(TxtFechaEstimadaEntrega.Text.Trim = "", "-1", TxtFechaEstimadaEntrega.Text.Trim), + Dim tCveSubProyectoVal As Integer = -1 + If ModalidadSubProyectoGeneral Then + tCveSubProyectoVal = DdlSubProyectoGral.SelectedValue.ToEntero + If tCveSubProyectoVal <= 0 Then + tCveSubProyectoVal = GetCveSubProyectoDetalles() + End If + End If + + + If OC.UpdateOrdenCompra(tCveSubProyectoVal, TxtDescrip.Text, TxtJustificacion.Text, DdlPrioridad.SelectedValue.ToEntero, ChkCotizacion.Checked, If(TxtFechaEstimadaEntrega.Text.Trim = "", "-1", TxtFechaEstimadaEntrega.Text.Trim), LugarEntrega, DdlMoneda.SelectedValue.ToEntero, CveProveedor, CveOrdenCompra, UsuarioActual.CveUsuario, Ddlcliente.txtValue.Value.ToEntero, DdlVendedor.SelectedValue.ToEntero, txtobsprioridad.Text, IVA:=IVA, RetIVA:=TxtRetIVA.Text.ToDecimal, RetISR:=TxtRetISR.Text.ToDecimal, FolioAdicional:=TxtFolioAdicional.Text, EntregaDirecta:=If(ChkEntregaDirecta.Checked, 1, -1), CveDireccionEnvio:=If(DdlDireccionEnvio.Visible, DdlDireccionEnvio.SelectedValue.ToEntero, -1), Guia:=TxtGuia.Text.Trim, IEPS:=TxtIEPS.Text.ToDecimal, UsoCFDI:=DdlUsoCFDI.SelectedValue.ToEntero, Promocion:=Promocion, pCveProveedorSucursal:=DdlProveedorSucursal.SelectedValue.ToEntero, CveProveedorContacto:=CveProveedorContacto, @@ -3628,7 +3713,7 @@ Partial Class OC_OC PorcentajeIVA:=PorIVA, IVA:=IVACot, RetIVA:=RetIVA.ToString.ToDecimal, RetISR:=RetISR.ToString.ToDecimal, IDPoliza:=IdPoliza, CveCotizacion:=CveCotizacion, FolioAdicional:=TxtFolioAdicional.Text, EntregaDirecta:=If(ChkEntregaDirecta.Checked, 1, -1), CveDireccionEnvio:=If(DdlDireccionEnvio.Visible, DdlDireccionEnvio.SelectedValue.ToEntero, -1), IEPS:=TxtIEPS.Text.ToDecimal, CveIEAnticipo:=CveIEAnticipo, ImporteAnticipo:=ImporteAnticipos, Promocion:=Promocion, UsoCFDI:=DdlUsoCFDI.SelectedValue.ToEntero, NumRemision:=TxtNumRemision.Text.Trim, MetodoPago:=DdlMetodoPago.SelectedValue.ToEntero(), - CveSubProyectoEntrega:=DdlSubProyectoEntrega.SelectedValue.ToEntero, PorcentajeProntoPago:=PorcentajeProntoPago) Then + CveSubProyectoEntrega:=DdlSubProyectoEntrega.SelectedValue.ToEntero, PorcentajeProntoPago:=PorcentajeProntoPago, EsTemporal:=ChkEsTemporal.Checked) Then 'CREA POLIZA POR CADA PROVEEDOR @@ -3710,7 +3795,9 @@ Partial Class OC_OC CveUsuario, CveEmpresaActual, 0, pCveProveedor:=DdlProveedores.SelectedValue.ToEntero, pCveProveedorSucursal:=DdlProveedorSucursal.SelectedValue.ToEntero, CveUsuarioAsignado:=DdlUsuariosAsignado.SelectedValue.ToEntero(), CveCliente:=Ddlcliente.txtValue.Value.ToEntero, CveVendedor:=DdlVendedor.SelectedValue.ToEntero, PrioridadObservacion:=txtobsprioridad.Text, PorcentajeIVA:=Math.Round(DdlIVA.SelectedValue.ToDecimal - 1, 2), IVA:=IVA, RetIVA:=TxtRetIVA.Text.ToDecimal, RetISR:=TxtRetISR.Text.ToDecimal, IDPoliza:=IDPolizaPresupuestal, CveCotizacion:=CveCotizacion, FolioAdicional:=TxtFolioAdicional.Text, EntregaDirecta:=If(ChkEntregaDirecta.Checked, 1, -1), CveDireccionEnvio:=If(DdlDireccionEnvio.Visible, DdlDireccionEnvio.SelectedValue.ToEntero, -1), IEPS:=TxtIEPS.Text.ToDecimal, CveIEAnticipo:=CveIEAnticipo, ImporteAnticipo:=ImporteAnticipos, UsoCFDI:=DdlUsoCFDI.SelectedValue.ToEntero, - Promocion:=Promocion, NumRemision:=TxtNumRemision.Text.Trim, MetodoPago:=DdlMetodoPago.SelectedValue.ToEntero(), CveSubProyectoEntrega:=DdlSubProyectoEntrega.SelectedValue.ToEntero, PorcentajeProntoPago:=PorcentajeProntoPago) Then + Promocion:=Promocion, NumRemision:=TxtNumRemision.Text.Trim, MetodoPago:=DdlMetodoPago.SelectedValue.ToEntero(), CveSubProyectoEntrega:=DdlSubProyectoEntrega.SelectedValue.ToEntero, PorcentajeProntoPago:=PorcentajeProntoPago, + EsTemporal:=ChkEsTemporal.Checked) Then + 'USA AC @@ -4054,12 +4141,10 @@ Partial Class OC_OC e.Row.FCLabel("LtlCantidad").Attributes.Add("data-toggle", "tooltip") e.Row.FCLabel("LtlCantidad").Attributes.Add("Title", e.Row.DataKey("CveOrdenCompraDetalle")) End If - Catch ex As Exception End Try - If Not (e.Row.RowState = DataControlRowState.Edit OrElse e.Row.RowState = 5) Then If e.Row.RowState = DataControlRowState.Normal Or e.Row.RowState = DataControlRowState.Alternate Then @@ -4275,21 +4360,20 @@ Partial Class OC_OC End Sub Protected Sub GvD_RowDeleting(sender As Object, e As GridViewDeleteEventArgs) Handles GvD.RowDeleting - If GvD.Rows(e.RowIndex).DataKey("TipoDato").Contiene("1", "2") Then 'cuando viene de la bd o es editado, solo lo borraré - DrEliminados.Add(GvD.Rows(e.RowIndex).DataKey("CveOrdenCompraDetalle").ToString.ToEntero) + If e.RowIndex >= 0 AndAlso e.RowIndex < GvD.Rows.Count Then + If GvD.Rows(e.RowIndex).DataKey("TipoDato").Contiene("1", "2") Then 'cuando viene de la bd o es editado, solo lo borraré + DrEliminados.Add(GvD.Rows(e.RowIndex).DataKey("CveOrdenCompraDetalle").ToString.ToEntero) + End If + + Dim dr As DataRow() = DtDetalle.Select("CveOrdenCompraDetalle = " & GvD.Rows(e.RowIndex).DataKey("CveOrdenCompraDetalle").ToString.ToEntero) + ' If UsuarioActual.Empresa.UsaAC Then UpdateAC(dr(0).Item("CvePresupuestoEgreso").ToString.ToEntero, dr(0).Item("Total").ToString.ToEntero, True) + + dr(0).Delete() + DtDetalle.AcceptChanges() + + CargaDatosDetalles() + ModoEdicionMasiva() End If - - Dim dr As DataRow() = DtDetalle.Select("CveOrdenCompraDetalle = " & GvD.Rows(e.RowIndex).DataKey("CveOrdenCompraDetalle").ToString.ToEntero) - - ' If UsuarioActual.Empresa.UsaAC Then UpdateAC(dr(0).Item("CvePresupuestoEgreso").ToString.ToEntero, dr(0).Item("Total").ToString.ToEntero, True) - - dr(0).Delete() - DtDetalle.AcceptChanges() - - CargaDatosDetalles() - ModoEdicionMasiva() - - End Sub Protected Sub GvD_RowEditing(sender As Object, e As GridViewEditEventArgs) Handles GvD.RowEditing GvD.EditIndex = e.NewEditIndex @@ -7492,7 +7576,9 @@ Partial Class OC_OC Dim ObjInventarios As New ClsInventarios If ObjInventarios.GetMovimientosOC(CveOrdenCompra, CveEmpresaActual) Then + TabAlmacen.Visible = True + If ObjInventarios.DtResultados.Rows.Count > 0 Then GVInv.DataSource = ObjInventarios.DtResultados If ObjInventarios.DtResultados.Rows.Count > 0 Then @@ -7503,6 +7589,10 @@ Partial Class OC_OC LnkCambiarMoneda.Visible = True End If End If + Else + If EsGrupoDiaz Then + TabAlmacen.Visible = False + End If End If End If @@ -9693,6 +9783,254 @@ Partial Class OC_OC FileExcel.Save(Response, $"OC_{CveOrdenCompra}.xlsx", SaveOptions.XlsxDefault) End Sub + + Function RegistroInventarioTemporal(ByRef transaccion As SqlTransaction, CveOCInv As Integer, OpcionOrigen As Integer, Recargar As Boolean) As Boolean + + Dim CveConceptoInv As Integer = If(OpcionOrigen = 1, 33, 35) 'Conceptos 33 Entrada Manual 35 Salida Manual + + Dim Respuesta As Boolean = True + + Dim ObjOC As New ClsOC(transaccion) + Dim DTDetalleOC As New DataTable + + If ObjOC.GetOrdenesDetalle(CveOCInv, UsuarioActual.CveEmpresa) Then + DTDetalleOC = ObjOC.DtResultados.FiltraParametros(" CveTipoPS = 2 ") + + If DTDetalleOC.Rows.Count = 0 Then 'No hay PSs Tipo Producto + Return True + End If + + Else + Return False + End If + + Dim tCveSubProyecto As Integer = UsuarioActual.CveSubProyecto + If ModalidadSubProyectoGeneral Then tCveSubProyecto = DdlSubProyectoGral.SelectedValue.ToEntero + + If tCveSubProyecto <= 0 Then + tCveSubProyecto = GetCveSubProyectoDetalles() + End If + + If tCveSubProyecto <= 0 Then + Alert("Sub Proyecto no asignado.") + Return False + End If + + Dim CveAlmacen As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $" CveSubProyecto = {tCveSubProyecto} AND CveTipoAlmacen = 1 ").ToEntero + + If CveAlmacen <= 0 Then + Alert("Almacén no asignado.") + Return False + End If + + + Dim ObjConta As New ClsContabilidad(transaccion) + Dim ObjInventario As New ClsInventarios(transaccion) + + + 'Dim CveConceptoInv As Integer = If(TipoTermino = 1, 3, 2) + + Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inv/OC", 53, 0, 0, 1, TxtFecha.Text.Replace(",", "").ToDate, TxtDescrip.Text, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoPoliza:=3) + + Dim CveMovimiento As Integer = ObjInventario.AddMovimiento(CveAlmacen, CveConceptoInv, 1, NowADS, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, tCveSubProyecto, -1, Observaciones:=TxtDescrip.Text, Modulo:="OC/1") + Dim FolioMto As Integer = ObjInventario.Folio + + If CveMovimiento <= 0 OrElse CvePrePoliza <= 0 Then + Alert("No se pudo almacenar el movimiento correctamente", TipoMensaje.MsgError) + 'ObjInventario.RollBack() 'deshace lo insertado + Respuesta = False + Else + + Dim Mensaje As String = "" + + ''VALIDA EXISTENCIAS + Dim Cont As Integer = 0 + If CveConceptoInv = 3 Then + + For Each Dr As DataRow In DTDetalleOC.Rows + 'Dim FechaCaducidadVal As Date = If(Dr("AplicaCaducidad").ToString = "True", Dr("FechaCaducidad").ToString.ToDate, MinFecha) + Dim FechaMovtoExistenciaStr As String = $"{NowADS.ToString("yyyy/MM/dd")} {NowADS.ToString("HH:mm")}" + + If ObjInventario.GetExistenciasPS(Dr("CvePS").ToString.ToEntero, Dr("CveUM").ToString.ToEntero, UsuarioActual.CveEmpresa, CveAlmacen, FechaMovto:=FechaMovtoExistenciaStr) >= Dr("Cantidad").ToString.ToDouble Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, -1, Observaciones:=Dr("Descripcion").ToString, CveUsuarioModifico:=UsuarioActual.CveUsuario, CveOrdenCompraDetalle:=Dr("CveOrdenCompraDetalle").ToString.ToEntero) Then + Mensaje = "Error al guardar los movimientos" + Respuesta = False + Exit For + End If + Else + + If UsuarioActual.TienePermisoProceso(114) Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("PU").ToString.ToDecimal, -1, Observaciones:=Dr("Descripcion").ToString, CveUsuarioModifico:=UsuarioActual.CveUsuario, CveOrdenCompraDetalle:=Dr("CveOrdenCompraDetalle").ToString.ToEntero) Then + Mensaje = "Error al guardar los movimientos" + Respuesta = False + Exit For + End If + Else + Mensaje = String.Format("No hay existencias suficientes del producto: {0}", Dr("PS")) + Alert(Mensaje, TipoMensaje.MsgAdvertencia) + Respuesta = False + Exit For + End If + + End If + Cont += 1 + Next + + Else + For Each Dr As DataRow In DTDetalleOC.Rows + + Dim ImporteConcepto As Decimal = 0 + + If CveConceptoInv = 2 AndAlso DdlMoneda.SelectedValue.ToEntero = 2 Then + ImporteConcepto = Dr("PU").ToString.ToDecimal * GlobalTipoCambio(TxtFecha.Text.Replace(",", "").ToDate).ToDecimal + Else + ImporteConcepto = Dr("PU").ToString.ToDecimal + End If + + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDecimal, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, ImporteConcepto, Observaciones:=Dr("Descripcion").ToString, CveUsuarioModifico:=UsuarioActual.CveUsuario, CveOrdenCompraDetalle:=Dr("CveOrdenCompraDetalle").ToString.ToEntero) Then + Mensaje = "Error al guardar los movimientos" + Respuesta = False + Exit For + + End If + Cont += 1 + Next + End If + + Dim EsContabilizable As Boolean = False + + 'Registro la prepóliza + If Respuesta AndAlso ObjInventario.GetMovimientosDetalle(CveMovimiento, UsuarioActual.CveEmpresa) Then + Dim tValorInventario As Decimal = ObjInventario.DtResultados.SUMD("Total", "").RoundSQL() + Dim tValorOtro As Decimal = tValorInventario + + Dim TipoMovtoAlmacen As Boolean = False + Dim TipoMovtoOtro As Boolean = True + + + Dim drA2 As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", CveAlmacen)) + If drA2 IsNot Nothing Then + tCveSubProyecto = drA2("CveSubProyecto").ToString.ToEntero + End If + + Dim OrigenMov As Integer = GlobalDTInvConceptos.FiltroPrimeroValor("Origen", "CveConcepto = " & CveConceptoInv).ToEntero + If OrigenMov = 1 Then TipoMovtoAlmacen = False Else TipoMovtoAlmacen = True + TipoMovtoOtro = Not TipoMovtoAlmacen + + Dim CveConceptoContable As Integer = 260 + Dim CveClasificacion As Integer = -1 + Select Case CveConceptoInv + Case 2, 32 + CveConceptoContable = 78 + EsContabilizable = True + Case 28, 31 + CveConceptoContable = 51 + If CveConceptoInv = 28 Then + ''cuando es 28, es otros ingresos.78 + CveConceptoContable = 78 + End If + EsContabilizable = True + Case 30 + CveConceptoContable = 181 + TipoMovtoOtro = False + If DdlSubProyecto.Visible = True AndAlso DdlSubProyecto.SelectedValue.ToEntero > 0 Then tCveSubProyecto = DdlSubProyecto.SelectedValue.ToEntero + + Case 34 + CveConceptoContable = 51 + EsContabilizable = True + Case 13, 29 + CveConceptoContable = 69 + TipoMovtoOtro = True + tValorOtro = -tValorOtro + Dim drr As DataRow = GlobalDTClasificaciones(UsuarioActual.CveEmpresa).FiltroPrimero("") + If drr IsNot Nothing Then + CveClasificacion = drr("CveClasificacion").ToString.ToEntero + End If + Case 3 + CveConceptoContable = 51 + EsContabilizable = True + Case Else + CveConceptoContable = 95 + + End Select + + '2-78 + Dim Obs As String = TxtDescrip.Text + + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovtoAlmacen, tValorInventario, tValorInventario, 68, Obs, Obs, CveMovimientoAlmacen:=CveMovimiento, CveClasificacion:=CveClasificacion, Contabilizable:=EsContabilizable) Then + Respuesta = False + Else + + 'Dim Total As Decimal = 0 + If CveConceptoContable.Contiene(181, 78, 51, 69) Then + Dim Dt As DataTable = ObjInventario.DtResultados.FiltraParametros("", "", {"CveClasificacion"}).Copy + + For Each Dr As DataRow In Dt.Rows + Dim Total As Decimal = ObjInventario.DtResultados.FiltraParametros($"CveClasificacion = {Dr("CveClasificacion")}").SUM("Total").RoundSQL() + + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovtoAlmacen, Total, Total, CveConceptoContable, lblFolio.Text, Obs, 0, CveMovimientoAlmacen:=CveMovimiento, CveClasificacion:=Dr("CveClasificacion").ToString.ToEntero, CveSubProyecto:=tCveSubProyecto) Then + Respuesta = False + End If + Next + Else + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, Not TipoMovtoAlmacen, tValorInventario, tValorInventario, CveConceptoContable, Obs, Obs, CveMovimientoAlmacen:=CveMovimiento, CveClasificacion:=CveClasificacion, Contabilizable:=EsContabilizable) Then + Respuesta = False + End If + End If + End If + Else + Respuesta = False + End If + + End If + + If Respuesta Then + If Recargar Then + Alert($"Movimiento Guardado Correctamente Folio:{FolioMto}", TipoMensaje.MsgInformacion, "window.location.reload();") + Else + Alert($"Movimiento Guardado Correctamente Folio:{FolioMto}", TipoMensaje.MsgInformacion) + End If + + End If + + Return Respuesta + + End Function + + + + Protected Sub BtnInvTempEntrada_Click(sender As Object, e As EventArgs) + Dim ObjOC As New ClsOC + + Try + If RegistroInventarioTemporal(ObjOC.IniciaTransacSQL(), CveOrdenCompra, 1, True) Then + ObjOC.Commit() + Else + ObjOC.RollBack() + End If + Catch ex As Exception + ObjOC.RollBack() + Finally + ObjOC.Dispose() + End Try + + End Sub + + Protected Sub BtnInvTempSalida_Click(sender As Object, e As EventArgs) + Dim ObjOC As New ClsOC + Try + If RegistroInventarioTemporal(ObjOC.IniciaTransacSQL(), CveOrdenCompra, 0, True) Then + ObjOC.Commit() + Else + ObjOC.RollBack() + End If + Catch ex As Exception + ObjOC.RollBack() + Finally + ObjOC.Dispose() + End Try + + End Sub End Class diff --git a/OC/RepOC.aspx b/OC/RepOC.aspx index c1d483b5c..d4c3e2be0 100644 --- a/OC/RepOC.aspx +++ b/OC/RepOC.aspx @@ -201,6 +201,9 @@ +
+ +
@@ -243,6 +246,16 @@
+ +
+ + + + + +
+ +
@@ -274,7 +287,9 @@
- + + +
diff --git a/OC/RepOC.aspx.vb b/OC/RepOC.aspx.vb index fe6283f39..6536fe150 100644 --- a/OC/RepOC.aspx.vb +++ b/OC/RepOC.aspx.vb @@ -81,7 +81,9 @@ Partial Class RepOC txtFechaISemanal.Text = NowADS().FirstDayOfMonth.ToShortDateString txtFechaFSemanal.Text = NowADS().ToShortDateString - + If UsuarioActual.Empresa.Funcionalidad(382) = "1" Then + DVEsTemporal.Visible = True + End If End If @@ -220,10 +222,12 @@ Partial Class RepOC End Sub Private Sub CargaPendientes() + Dim EsTemporal As Integer = If(ChkEsTempral.Checked, 1, -1) + Dim OC As New ClsOC If OC.GetOrdenesPendientes(DdlTipo.SelectedValue.ToString, 0, UsuarioActual.CveEmpresa, DdlProyectos.SelectedValue.ToEntero, DdlSubProyectos.SelectedValue.ToEntero, DdlEstatus.SelectedValue.ToEntero, UsuarioActual.CveUsuario, ddlcliente.SelectedValue.ToEntero, SoloSubProyectosConPermiso:=If(UsuarioActual.Empresa.Funcionalidad(530) = "1", True, False), - CveUsuarioAsignado:=DdlUsuarioAsignado.SelectedValue.ToEntero(), EntregaDirecta:=DdlEntregaDirecta.SelectedValue.ToEntero()) Then + CveUsuarioAsignado:=DdlUsuarioAsignado.SelectedValue.ToEntero(), EntregaDirecta:=DdlEntregaDirecta.SelectedValue.ToEntero(), TieneAnticipo:=DdlTieneAnticipo.SelectedValue.ToEntero, EsTemporal:=EsTemporal) Then DtPorAtender = OC.DtResultados GvPorAtender.DataSource = DtPorAtender 'OC.DtResultados @@ -252,7 +256,7 @@ Partial Class RepOC If OC.GetOrdenesPendientes(DdlTipo.SelectedValue.ToString, 1, UsuarioActual.CveEmpresa, DdlProyectos.SelectedValue.ToEntero, DdlSubProyectos.SelectedValue.ToEntero, DdlEstatus.SelectedValue.ToEntero, UsuarioActual.CveUsuario, ddlcliente.SelectedValue.ToEntero, SoloSubProyectosConPermiso:=If(UsuarioActual.Empresa.Funcionalidad(530) = "1", True, False), - CveUsuarioAsignado:=DdlUsuarioAsignado.SelectedValue.ToEntero(), EntregaDirecta:=DdlEntregaDirecta.SelectedValue.ToEntero()) Then + CveUsuarioAsignado:=DdlUsuarioAsignado.SelectedValue.ToEntero(), EntregaDirecta:=DdlEntregaDirecta.SelectedValue.ToEntero(), TieneAnticipo:=DdlTieneAnticipo.SelectedValue.ToEntero, EsTemporal:=EsTemporal) Then GvPendientes.DataSource = OC.DtResultados DtPendiente = OC.DtResultados GvPendientes.DataBind() @@ -368,6 +372,10 @@ Partial Class RepOC #Region " CONSULTAR " Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs) Handles btnConsultar.Click + + + Dim EsTemporal As Integer = If(ChkEsTempral.Checked, 1, -1) + LbPorAtenderPDF.Visible = False LbPorAtender.Visible = False LbPendientes.Visible = False @@ -388,7 +396,7 @@ Partial Class RepOC If(CheckNoCompleta.Checked, -1, UsuarioActual.CveUsuario), UsuarioActual.Empresa.CveEmpresa, If(DDlPS.SelectedValue = "", -1, DDlPS.SelectedValue.ToEntero), If(CheckNoCompleta.Checked, True, False), ddlcliente.SelectedValue.ToEntero, CveActivoFijo:=DdlActivoFijo.SelectedValue.ToEntero, SoloSubProyectosConPermiso:=If(UsuarioActual.Empresa.Funcionalidad(530) = "1", True, False), CveUsuarioAutorizo:=DdlUsuarioAutorizo.SelectedValue.ToEntero(), CveUsuarioAsignado:=DdlUsuarioAsignado.SelectedValue.ToEntero(), EntregaDirecta:=DdlEntregaDirecta.SelectedValue.ToEntero(), - CveMoneda:=DdlMoneda.SelectedValue.ToEntero(), MetodoPago:=DdlMetodoPago.SelectedValue.ToEntero) Then + CveMoneda:=DdlMoneda.SelectedValue.ToEntero(), MetodoPago:=DdlMetodoPago.SelectedValue.ToEntero, TieneAnticipo:=DdlTieneAnticipo.SelectedValue.ToEntero, EsTemporal:=EsTemporal) Then GvConsultar.DataSource = OC.DtResultados DtOC = OC.DtResultados @@ -545,8 +553,7 @@ Partial Class RepOC Dim Completa As String = If(CheckNoCompleta.Checked = False, "", $" , No completa ") Dim Proveedor = If(DdlProveedores.SelectedValue = "-1", "", $" Proveedor: {DdlProveedores.txtText.Value }") Dim Cliente = If(ddlcliente.SelectedValue = "-1", "", $" Cliente: {ddlcliente.SelectedItem.Text}") - - + Dim TieneAnticipo As String = If(DdlTieneAnticipo.SelectedValue.ToEntero = -1, "", $" Anticpo: {DdlTieneAnticipo.SelectedItem.Text}") @@ -561,7 +568,7 @@ Partial Class RepOC Dim params As New List(Of ReportParameter) params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa)) params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) - params.Add(New ReportParameter("AgrupadoPor", $"{Folio}{Tipo}{Proyecto}{SubProyecto}{Estatus}{AF}{Usuario}{FI}{FF}{Clasificacion}{Producto}{Completa}{Proveedor}{Cliente}")) + params.Add(New ReportParameter("AgrupadoPor", $"{Folio}{Tipo}{Proyecto}{SubProyecto}{Estatus}{AF}{Usuario}{FI}{FF}{Clasificacion}{Producto}{Completa}{Proveedor}{Cliente}{TieneAnticipo}")) params.Add(New ReportParameter("SubProyectoHeader", LblSubProyecto.Text)) params.Add(New ReportParameter("Titulo", "REPORTE DE ORDENES DE COMPRA POR ATENDER")) diff --git a/OS/OrdenesServicios.aspx b/OS/OrdenesServicios.aspx index d25bea98a..2763ea92a 100644 --- a/OS/OrdenesServicios.aspx +++ b/OS/OrdenesServicios.aspx @@ -113,6 +113,7 @@
+
diff --git a/OS/OrdenesServicios.aspx.vb b/OS/OrdenesServicios.aspx.vb index c54a3d52e..347d43d1e 100644 --- a/OS/OrdenesServicios.aspx.vb +++ b/OS/OrdenesServicios.aspx.vb @@ -659,6 +659,7 @@ Partial Class OS_OrdenesServicios TxtFechaRecibido.Text = ObjOS.FechaRecepcion.ToString("dd/MM/yyyy") TxtFechaCita.Text = ObjOS.FechaCita.ToDateTime.ToString("yyyy-MM-dd HH:mm:ss").Replace(" ", "T") + HdnFechaCita.Value = TxtFechaCita.Text CveFolio = ObjOS.Folio LblFolio.Text = ObjOS.Folio.ToString @@ -1510,7 +1511,7 @@ Partial Class OS_OrdenesServicios Next 'ajustar - If UsuarioActual.Empresa.Funcionalidad(578) <> "" Then + If UsuarioActual.Empresa.Funcionalidad(578) = "1" Then If CvePedido > 0 AndAlso Not ObjVenta.UpdateDatosMedicosVenta(CvePedido, UsuarioActual.CveEmpresa, DdlMedico.SelectedValue.ToEntero, DdlProcedimiento.SelectedValue.ToEntero, TxtPaciente.Text.Trim, TxtIdentificadorCliente.Text.Trim, TxtFolioAdicional.Text.Trim, TxtFechaCita.Text.ToDateTime) Then Errores = True @@ -1520,6 +1521,13 @@ Partial Class OS_OrdenesServicios TxtPaciente.Text.Trim, TxtIdentificadorCliente.Text.Trim, TxtFolioAdicional.Text.Trim, TxtFechaCita.Text.ToDateTime) Then Errores = True End If + + If HdnFechaCita.Value <> TxtFechaCita.Text Then 'notif 16/17 + 'si es material ya surtido + 'EnviaNotificacionSMS(16, UsuarioActual.Empresa, CveOS, LblFolio.Text, TxtFechaCita.Text.ToDateTime, If(DdlSucursalCliente.Visible, DdlSucursalCliente.SelectedItem.Text, LblCliente.Text), TipoVenta, DdlMedico.SelectedItem.Text, DdlProcedimiento.SelectedItem.Text, DdlUsuarioAtendio.SelectedItem.Text, NombreVendedor, TxtFolioRemisionModal.Text, ListMaterialesDev, CorreoDestino)EnviaNotificacionSMS(16, UsuarioActual.Empresa, CveOS, LblFolio.Text, TxtFechaCita.Text.ToDateTime, If(DdlSucursalCliente.Visible, DdlSucursalCliente.SelectedItem.Text, LblCliente.Text), TipoVenta, DdlMedico.SelectedItem.Text, DdlProcedimiento.SelectedItem.Text, DdlUsuarioAtendio.SelectedItem.Text, NombreVendedor, TxtFolioRemisionModal.Text, ListMaterialesDev, CorreoDestino) + 'si la cirugía ya se asignó + 'EnviaNotificacionSMS(17, UsuarioActual.Empresa, CveOS, LblFolio.Text, TxtFechaCita.Text.ToDateTime, If(DdlSucursalCliente.Visible, DdlSucursalCliente.SelectedItem.Text, LblCliente.Text), TipoVenta, DdlMedico.SelectedItem.Text, DdlProcedimiento.SelectedItem.Text, DdlUsuarioAtendio.SelectedItem.Text, NombreVendedor, TxtFolioRemisionModal.Text, ListMaterialesDev, CorreoDestino) + End If End If Else Errores = True diff --git a/OS/RepOSMedicas.aspx.vb b/OS/RepOSMedicas.aspx.vb index 8f1e7c1c9..c061533f1 100644 --- a/OS/RepOSMedicas.aspx.vb +++ b/OS/RepOSMedicas.aspx.vb @@ -103,7 +103,7 @@ Partial Class OS_RepOSMedicas DdlEspecialidad.DataBind() DdlEspecialidad.Items.Insert(0, New ListItem("Todas", "-1")) - DdlClienteSucursal.DataSource = GlobalDTClientesSucursales(UsuarioActual.CveEmpresa) + DdlClienteSucursal.DataSource = GlobalDTClientesTodosSucursales(UsuarioActual.CveEmpresa) DdlClienteSucursal.DataBind() DdlClienteSucursal.Items.Insert(0, New ListItem("Todos", "-1")) diff --git a/Planeacion/CatSubProyectos.aspx b/Planeacion/CatSubProyectos.aspx index af0be3766..718d569a0 100644 --- a/Planeacion/CatSubProyectos.aspx +++ b/Planeacion/CatSubProyectos.aspx @@ -63,6 +63,11 @@ + + + + + diff --git a/RH/Personal.aspx b/RH/Personal.aspx index 772ecbda8..bbd940a33 100644 --- a/RH/Personal.aspx +++ b/RH/Personal.aspx @@ -1616,27 +1616,23 @@ - -
-
-
+
+
-
+
- +
- -
diff --git a/RH/Personal.aspx.vb b/RH/Personal.aspx.vb index 6fa45cfb1..d9fe3cfbe 100644 --- a/RH/Personal.aspx.vb +++ b/RH/Personal.aspx.vb @@ -998,8 +998,6 @@ Partial Class RH_Personal CarcaConceptosNomina() CargaFonacot() End If - - Else cargatipoTrabajador() MostrarOcultarFechasEstatus() @@ -1021,25 +1019,12 @@ Partial Class RH_Personal LIFamiliaresAcciones.Visible = True DivFamiliares.Visible = True DivPadres.Visible = False - - End If - - - - 'If UsuarioActual.TienePermisoProceso(84) Then 'abonar pago - ' HplAbonarMasivo.Visible = True - ' GvGxC.Columns(7).Visible = True - 'End If - - If Not CvePersonal > 0 Then DivSuperiorInmediato.Visible = False End If - - If UsuarioActual.CveEmpresa = 7 Then DivSuperiorInmediato.Visible = True DVSupervisorAsignado.Visible = False @@ -1055,13 +1040,10 @@ Partial Class RH_Personal CargaLicencias() LtlTareaNueva.Text = String.Format(" Tarea", CvePersonal) - If UsuarioActual.CveRol = 1 Or UsuarioActual.CveUsuario = 100 Then DVNetoPeriodo.Visible = True - DVCodigoDispersionVale.Visible = True End If - If UsuarioActual.Empresa.Funcionalidad(712) = "1" Or UsuarioActual.CveEmpresa = 1 Then DvRuta.Visible = True DVTxtTelefono.Attributes.Add("class", "col-md-6") diff --git a/Sistemas/UsuarioDetalle.aspx.vb b/Sistemas/UsuarioDetalle.aspx.vb index 8141ec2a3..46a4906b3 100644 --- a/Sistemas/UsuarioDetalle.aspx.vb +++ b/Sistemas/UsuarioDetalle.aspx.vb @@ -2295,8 +2295,8 @@ Partial Class Sistemas_UsuarioDetalle If DdlEmpresaAsignaciones.SelectedValue.ToEntero > 0 Then If UsuarioControlado Then DdlCuentasBancarias.DataSource = DtCuentasBancariasControlado.FiltraParametros($"CveEmpresa = {DdlEmpresaAsignaciones.SelectedValue}") - Else - DdlCuentasBancarias.DataSource = GlobalDTBancosCuentas(-1, -1, -1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltraParametros($"CveEmpresa = {DdlEmpresaAsignaciones.SelectedValue}", "", {"CveCuenta", "NumCuentaMoneda"}) + Else + DdlCuentasBancarias.DataSource = GlobalDTBancosCuentasGral(CveEmpresa) End If End If DdlCuentasBancarias.DataBind() diff --git a/Transportes/RepContratoDetalle.aspx b/Transportes/RepContratoDetalle.aspx index 2ca7e6e39..fe65b91fc 100644 --- a/Transportes/RepContratoDetalle.aspx +++ b/Transportes/RepContratoDetalle.aspx @@ -387,7 +387,7 @@
- TxtImporte.Text.ToDecimal OrElse DescripcionOriginal <> TxtDescripcion.Text OrElse TipoAFOriginal <> DdlTipoAF.SelectedItem.Text OrElse - FolioOriginal <> TxtFolio.Text.Trim) Then + FolioOriginal <> TxtFolio.Text.Trim OrElse + CveClienteOriginal <> DdlClientes.SelectedValue.ToEntero) Then Dim ObsRemisionPartida As String = $"{DdlTipoAF.SelectedItem.Text}-{ TxtDescripcion.Text}-{TxtFolio.Text}" - If Not UpdateRemision(ObjContratos.IniciaTransacSQL(), DdlSubProyecto.SelectedValue.ToEntero, DdlMoneda.SelectedValue.ToEntero, TxtImporte.Text.ToDecimal, ObsRemisionPartida) Then + If Not UpdateRemision(ObjContratos.IniciaTransacSQL(), DdlSubProyecto.SelectedValue.ToEntero, DdlMoneda.SelectedValue.ToEntero, TxtImporte.Text.ToDecimal, ObsRemisionPartida, DdlClientes.SelectedValue.ToEntero) Then ErrorProceso = True End If End If @@ -653,7 +667,7 @@ Partial Class RepContratoDetalle End Sub - Private Function UpdateRemision(ByRef transaccionSql As SqlTransaction, CveSubProyectoNew As Integer, CveMonedaNew As Integer, TotalNew As Decimal, DescripcionNew As String) As Boolean + Private Function UpdateRemision(ByRef transaccionSql As SqlTransaction, CveSubProyectoNew As Integer, CveMonedaNew As Integer, TotalNew As Decimal, DescripcionNew As String, CveClienteNew As Integer) As Boolean Dim Respuesta As Boolean = False Dim TmpDT As DataTable = New DataTable @@ -675,12 +689,9 @@ Partial Class RepContratoDetalle PorcentajeIVA = ObjVentas.DtResultados.MAX("PorcentajeIVA").ToDecimal If PorcentajeIVA > 0 Then - IVANew = (TotalNew * (PorcentajeIVA * 100)) / (100 + (PorcentajeIVA * 100)) SubTotalNew = TotalNew - IVANew - End If - End If If TmpDT Is Nothing OrElse TmpDT.Rows.Count = 0 Or FechaVenta = MinFecha Then @@ -697,7 +708,7 @@ Partial Class RepContratoDetalle UsuarioActual.CveEmpresa, CveVentaRemision, Vigencia:=FechaVenta, CondicionesPago:=-1, PedidoContrato:="-1", AtencionA:="-1", CveMetodoPago33:=-1, - CveFormaPago33:=-1, TipoDocto:="Rem", CveCliente:=-1, CveClienteSucursal:=-1, + CveFormaPago33:=-1, TipoDocto:="Rem", CveCliente:=CveClienteNew, CveClienteSucursal:=-1, OrdenCompra:="-1", RetIVA:=0, RetISR:=0, Kilometraje:=0D, CveUsoCFDi:=-1, CveVendedor:=-1, ServicioDomicilio:=False, CveMedico:=-1, CveProcedimiento:=-1, FechaParaSurtir:=MinFecha, Paciente:="-1", Episodio:="-1", CveCondicionEntrega:=-1, FolioRemision:="-1") Then @@ -721,7 +732,6 @@ Partial Class RepContratoDetalle If Not OcurrioError Then Dim DTPrePoliza As New DataTable - If ObjConta.GetPrePolizasDetalle(CvePrePoliza, UsuarioActual.CveEmpresa) Then DTPrePoliza = ObjConta.DtResultados If DTPrePoliza.Rows.Count = 0 Then @@ -733,8 +743,7 @@ Partial Class RepContratoDetalle End If For Each dRow As DataRow In DTPrePoliza.Rows - - If Not ObjConta.UpdatePrePolizasDetalle(dRow("CvePrePolizaDetalle").ToString.ToEntero, dRow("Concepto").ToString, dRow("CveSubProyecto").ToString.ToEntero, -1, Boolean.Parse(dRow("TipoMovto").ToString), ImporteMN:=TotalNew, Importe:=TotalNew, TipoCambio:=TC) Then + If Not ObjConta.UpdatePrePolizasDetalle(dRow("CvePrePolizaDetalle").ToString.ToEntero, dRow("Concepto").ToString, dRow("CveSubProyecto").ToString.ToEntero, -1, Boolean.Parse(dRow("TipoMovto").ToString), ImporteMN:=TotalNew, Importe:=TotalNew, TipoCambio:=TC, CveCliente:=CveClienteNew) Then OcurrioError = True Exit For End If @@ -759,6 +768,13 @@ Partial Class RepContratoDetalle Return False Else ' Alert("Los cambios se guardaron correctamente.", TipoMensaje.MsgInformacion, JSBtnAceptar:="BtnRefrescarPagina();") + CveSubProyectoOriginal = DdlSubProyecto.SelectedValue.ToEntero + CveMonedaOriginal = DdlMoneda.SelectedValue.ToEntero + ImporteOrigial = TxtImporte.Text.ToDecimal + DescripcionOriginal = TxtDescripcion.Text + TipoAFOriginal = DdlTipoAF.SelectedItem.Text + FolioOriginal = TxtFolio.Text.Trim + CveClienteOriginal = DdlClientes.SelectedValue.ToEntero Return True End If End Function diff --git a/Ventas/CatPromociones.aspx b/Ventas/CatPromociones.aspx index 0bf9564fa..97dec0a5a 100644 --- a/Ventas/CatPromociones.aspx +++ b/Ventas/CatPromociones.aspx @@ -64,8 +64,9 @@ - - + + + diff --git a/Ventas/CatPromociones.aspx.vb b/Ventas/CatPromociones.aspx.vb index 1790559c6..6c5e2393d 100644 --- a/Ventas/CatPromociones.aspx.vb +++ b/Ventas/CatPromociones.aspx.vb @@ -23,7 +23,6 @@ Partial Class Ventas_CatPromociones Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Page.IsPostBack Then - 'ImgAddPromocion.Attributes.Add("OnClick", "window.location = '/Ventas/Promociones.aspx'") 'CARGA SUCURSALES DdlSubProyecto.DataSource = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa) diff --git a/Ventas/Clientes.aspx.vb b/Ventas/Clientes.aspx.vb index b227f33e8..d68c92804 100644 --- a/Ventas/Clientes.aspx.vb +++ b/Ventas/Clientes.aspx.vb @@ -1527,7 +1527,9 @@ Partial Class Clientes TxtRetISR.Text = ObjClientes.RetISR.ToString() ChkRetIVAFletesAcarreos.Checked = ObjClientes.RetieneIVAFletes If ObjClientes.CveSubProyecto > 0 Then - DdlSubProyecto.SelectedValueExistInsert(ObjClientes.CveSubProyecto.ToString(), GlobalDTSubProyectos(UsuarioActual.CveEmpresa, CveSubProyecto:=ObjClientes.CveSubProyecto).FiltroPrimeroValor("SubProyecto")) + DdlSubProyecto.SelectedValueExistInsert(ObjClientes.CveSubProyecto.ToString(), GlobalDTSubProyectos(UsuarioActual.CveEmpresa, CveSubProyecto:=ObjClientes.CveSubProyecto).FiltroPrimeroValor("SubProyecto")) + ElseIf UsuarioActual.CveSubProyecto > 0 Then + DdlSubProyecto.SelectedValueExistInsert(UsuarioActual.CveSubProyecto, GlobalDTSubProyectos(UsuarioActual.CveEmpresa, CveSubProyecto:=UsuarioActual.CveSubProyecto).FiltroPrimeroValor("SubProyecto")) End If TxtGastosEnvio.Text = ObjClientes.GastosEnvio.FormatoNumero DdlZonaHoraria.SelectedValueExist(ObjClientes.DtResultados(0)("CveZonaHoraria").ToString()) diff --git a/Ventas/ClientesAbonar.aspx.vb b/Ventas/ClientesAbonar.aspx.vb index 88ed5969c..0090577c5 100644 --- a/Ventas/ClientesAbonar.aspx.vb +++ b/Ventas/ClientesAbonar.aspx.vb @@ -240,6 +240,12 @@ Partial Class Ventas_ClientesAbonar DVImporteDeduccionesPago.Visible = True End If + If UsuarioActual.Empresa.Funcionalidad(382) = "1" Then + If Not UsuarioActual.TienePermisoProceso(404) Then + TxtFechaDocumento.Enabled = False + ImgCalendario.Visible = False + End If + End If End If diff --git a/Ventas/PVCobranza.aspx b/Ventas/PVCobranza.aspx index bca1d3fa9..31f0620f8 100644 --- a/Ventas/PVCobranza.aspx +++ b/Ventas/PVCobranza.aspx @@ -328,9 +328,15 @@ + DataKeyNames="CveVenta,TipoDocto,Saldo,AtencionA,CveFormaPago33,SerieFolio,CondicionesPago,PlazoCobranza"> - + <%----%> + + +
+ +
+
@@ -395,7 +401,7 @@
-   +   Nombre:
         
@@ -482,6 +488,7 @@
+
@@ -546,42 +553,32 @@
-
-
+ + +
+
+ +
+
+ $ + + +
-
- - Otros - Credito - Debito - Cheque - +
+ + Seleccione + Debito + Crédito + Transferencia + +
+
+ +
- -
- $ - - -
- -
- - - -
- -
- - Meses - 3M - 6M - 9M - 12M - -
- -
-
+ +
@@ -607,13 +604,17 @@
-
-
- - - -
-
+
+
+
+
+
+
+ + + + +
@@ -633,8 +634,7 @@ - Serie - Folio - + Serie - Folio @@ -657,16 +657,10 @@ - - - - - - diff --git a/Ventas/ProductosServicios.aspx.vb b/Ventas/ProductosServicios.aspx.vb index 7c1a31aea..4361a0c36 100644 --- a/Ventas/ProductosServicios.aspx.vb +++ b/Ventas/ProductosServicios.aspx.vb @@ -364,6 +364,9 @@ Partial Class ProductosyServicios End If + If CvePS > 0 And UsuarioActual.TienePermisoProceso(402) Then + DVEditaUltimoCosto.Visible = True + End If End If End Sub @@ -1019,7 +1022,7 @@ Partial Class ProductosyServicios LblCostoPromedio.Text = ObjProductosServicios.DtResultados.Rows(0)("CostoPromedio").ToString.FormatoNumero - LblUltimoCosto.Text = ObjProductosServicios.DtResultados.Rows(0)("UltimoCosto").ToString.FormatoNumero + LblUltimoCosto.Text = ObjProductosServicios.DtResultados.Rows(0)("UltimoCosto").ToString.ToDecimal.ToString("###,###,###.######") LblFechaUltimaCompra.Text = ObjProductosServicios.DtResultados.Rows(0)("FechaUltimaCompra").ToString HplKardex.NavigateUrl = $"/Inventarios/Kardex.aspx?CvePS={CvePS}" @@ -3242,7 +3245,7 @@ Partial Class ProductosyServicios Protected Sub DdlUnidadMedida_SelectedIndexChanged(sender As Object, e As EventArgs) If ElProductoTieneExistencia() Then - DdlUnidadMedida.SelectedValue = CveUnidadMedida.ToString + DdlUnidadMedida.SelectedValueExist(CveUnidadMedida.ToString) Alert("el producto no se puede cambiar la opcion, porque tiene existencia.") End If End Sub @@ -3838,9 +3841,37 @@ Partial Class ProductosyServicios If Ps.AddPSEquivalencias(CvePS, DdlEquivalenciaUM.SelectedValue.ToEntero, TxtCantidadEquivalencia.Text.ToDecimal, False, 0, UsuarioActual.CveUsuario) Then Alert("Equivalencia registrada correctamente.", TipoMensaje.ToastInformacion) CargaEquivalencias() + GeneraGlobalEquivalencias() RegistraScript(String.Format("$('#{0}').modal('hide');", "divEquivalenciaModal")) End If Ps.Dispose() End Sub + + Protected Sub LnkEditarUltimoCostoMostrarModal_Click(sender As Object, e As EventArgs) + TxtUltimoCostoModal.Text = LblUltimoCosto.Text + UpUltimoCostoModal.Update() + RegistraScript("$('#DVUltimoCostoModal').modal('show');") + End Sub + + Protected Sub BtnGuardarUltimoCostoModal_Click(sender As Object, e As EventArgs) + + Dim ProcesoOK As Boolean = False + + Dim objPS As New ClsProductosServicios + + If objPS.UpdateUltimoCosto(CvePS, TxtUltimoCostoModal.Text.ToDecimal, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + ProcesoOK = True + End If + + objPS.Dispose() + + + If ProcesoOK Then + RegistraScript("$('#DVUltimoCostoModal').modal('hide');") + Alert("Ultimo Costo guardado correctamente", TipoMensaje.MsgInformacion) + End If + + End Sub + End Class diff --git a/Ventas/Promociones.aspx.vb b/Ventas/Promociones.aspx.vb index a57b1e6df..745338230 100644 --- a/Ventas/Promociones.aspx.vb +++ b/Ventas/Promociones.aspx.vb @@ -158,7 +158,6 @@ Partial Class Ventas_Promociones PermisoAutorizPromocionPorcentaje = UsuarioActual.TienePermisoProceso(386) EmpresaGrupoDiaz = If(UsuarioActual.Empresa.Funcionalidad(382) = "1", True, False) 'Grupo díaz - EmpresaGrupoDiaz = True ''Para pruebas If EmpresaGrupoDiaz Then DVModalClasificacion.Visible = False @@ -297,7 +296,16 @@ Partial Class Ventas_Promociones divDistribuidor.Visible = True End If + If EmpresaGrupoDiaz Then + For Each item As ListItem In DdlTipoAplicacion.Items + If item.Value = "1" Then + DdlTipoAplicacion.Items.Remove(item) + Exit For + End If + Next + + End If End Sub diff --git a/Ventas/RepCancelacionesPorRespuesta.aspx.cs b/Ventas/RepCancelacionesPorRespuesta.aspx.cs index ebbb2a994..62b89ba26 100644 --- a/Ventas/RepCancelacionesPorRespuesta.aspx.cs +++ b/Ventas/RepCancelacionesPorRespuesta.aspx.cs @@ -627,13 +627,19 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas } } - bool AplicaCancelacionConPagos = false; - if (UsuarioActual.Empresa.Funcionalidad(382) == "1" || UsuarioActual.Empresa.Funcionalidad(109) == "1") + var CancelacionPagos = Modelos.OpcionesCancelacionPagos.SinPagos; + + if (UsuarioActual.Empresa.Funcionalidad(109) == "1") { - AplicaCancelacionConPagos = true; + CancelacionPagos = Modelos.OpcionesCancelacionPagos.ConPagos_CancelarIE; } - retorno = factura.EjecutarCancelacionPendiente(CveEstatus, CancelacionFecha, CancelacionAcuse, AplicaCancelacionConPagos: AplicaCancelacionConPagos); + if (UsuarioActual.Empresa.Funcionalidad(382) == "1") + { + CancelacionPagos = Modelos.OpcionesCancelacionPagos.ConPagos_GenerarIxC; + } + + retorno = factura.EjecutarCancelacionPendiente(CveEstatus, CancelacionFecha, CancelacionAcuse, CancelacionPagos: CancelacionPagos); } @@ -722,11 +728,6 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas // if (e.Row.FCLinkButton("LnkCancelarFolioSustitucion") != null) e.Row.FCLinkButton("LnkCancelarFolioSustitucion").Visible = true; //} } - - if (string.IsNullOrEmpty(e.Row.DBCampo("FolioFiscal"))) - { - e.Row.FCLinkButton("LnkValidarRefac").Visible = false; - } } } diff --git a/Ventas/RepCotizacionesxFacturar.aspx b/Ventas/RepCotizacionesxFacturar.aspx index f475fb070..d1a54a026 100644 --- a/Ventas/RepCotizacionesxFacturar.aspx +++ b/Ventas/RepCotizacionesxFacturar.aspx @@ -170,6 +170,10 @@
+
+ +
+
@@ -201,7 +205,7 @@
-
+
" style="display: inline-block; width: 150px;" /> @@ -213,7 +217,7 @@ + data-sort="true" GridLines="None"> @@ -233,7 +237,7 @@ - + @@ -247,7 +251,8 @@ - + + @@ -255,7 +260,7 @@ - + <%-- diff --git a/Ventas/RepCotizacionesxFacturar.aspx.vb b/Ventas/RepCotizacionesxFacturar.aspx.vb index 6f734ab3f..d62cbcb06 100644 --- a/Ventas/RepCotizacionesxFacturar.aspx.vb +++ b/Ventas/RepCotizacionesxFacturar.aspx.vb @@ -2,11 +2,9 @@ Option Strict On Imports System.Data -Imports Microsoft.Reporting.WebForms Imports Extensiones Partial Class RepCotizacionesxFacturar Inherits ClsPaginas - Private Shared missing As Object = System.Reflection.Missing.Value #Region "PROPIEDADES" Private Property FechaI As String @@ -55,9 +53,7 @@ Partial Class RepCotizacionesxFacturar If Not Page.IsPostBack Then txtFechaI.Text = NowADS().ToShortDateString txtFechaF.Text = NowADS().ToShortDateString - - CargaSucursales() - CargaCliente() + CargaCombos() CargaDatos() OrdenaDatos() @@ -73,8 +69,9 @@ Partial Class RepCotizacionesxFacturar CveCliente = If(DdlClientes.SelectedValue.ToEntero > 0, DdlClientes.SelectedValue.ToEntero, -1) Sucursales = IIf(DdlSubProyectos.GetSelectedValuesM = "", "-1", DdlSubProyectos.GetSelectedValuesM).ToString + Dim Vendedores As String = If(DdlVendedor.GetSelectedValuesM = "", "-1", DdlVendedor.GetSelectedValuesM) - If ObjVentas.GetRepCotizacionesSinFacturar(FechaI.ToDate, FechaF.ToDate, Sucursales, CveCliente, UsuarioActual.CveEmpresa, CveUsuarioConsulta:=UsuarioActual.CveUsuario, CveEstatusFactura:=DdlEstatusFactura.SelectedValue.ToEntero) Then + If ObjVentas.GetRepCotizacionesSinFacturar(FechaI.ToDate, FechaF.ToDate, Sucursales, CveCliente, Vendedores, UsuarioActual.CveEmpresa, CveUsuarioConsulta:=UsuarioActual.CveUsuario, CveEstatusFactura:=DdlEstatusFactura.SelectedValue.ToEntero) Then GvDatos.DataSource = ObjVentas.DtResultados DtVentas = ObjVentas.DtResultados GvDatos.DataBind() @@ -113,7 +110,7 @@ Partial Class RepCotizacionesxFacturar e.Row.Cells(2).ForeColor = Drawing.Color.Red End If - e.Row.Cells(5).Text = e.Row.Cells(5).Text + "%" + e.Row.Cells(6).Text = e.Row.Cells(6).Text + "%" End If End If @@ -121,7 +118,7 @@ Partial Class RepCotizacionesxFacturar #End Region #Region "CARGA COMBOS FILTRO" - Private Sub CargaCliente() + Private Sub CargaCombos() 'CargaClientes Dim EsWS = If(UsuarioActual.Empresa.Funcionalidad(105) = "1" Or UsuarioActual.Empresa.Funcionalidad(141) = "1", True, False) If EsWS Then @@ -133,8 +130,17 @@ Partial Class RepCotizacionesxFacturar DdlClientes.ddl.Items.Insert(0, New ListItem("Todos", "-1")) End If - End Sub - Private Sub CargaSucursales() + 'Vendedor + DdlVendedor.DataSource = GlobalDTVendedores(UsuarioActual.CveEmpresa, VendedorTipo:=-1).FiltraParametros("VendedorTipo in (1,4)") 'vendedores y vendedores de piso + DdlVendedor.DataBind() + DdlVendedor.Items.Insert(0, New ListItem("Todos", "-1")) + DdlVendedor.Items.Insert(1, New ListItem("Sin Vendedor", "-2")) + + If UsuarioActual.CveVendedor > 0 AndAlso Not UsuarioActual.TienePermisoProceso(263) Then + DdlVendedor.SelectedValuesIfExistM(UsuarioActual.CveVendedor.ToString()) + DdlVendedor.Attributes.Add("disabled", "disabled") + DdlVendedor.Enabled = False + End If DdlSubProyectos.DataSource() = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1) DdlSubProyectos.DataBind() diff --git a/Ventas/RepProductosServiciosPeriodo.aspx b/Ventas/RepProductosServiciosPeriodo.aspx index 19fad8d2f..a71ec8df8 100644 --- a/Ventas/RepProductosServiciosPeriodo.aspx +++ b/Ventas/RepProductosServiciosPeriodo.aspx @@ -239,6 +239,14 @@
+ + +
+ + Importe + Cantidad + +
diff --git a/Ventas/RepProductosServiciosPeriodo.aspx.cs b/Ventas/RepProductosServiciosPeriodo.aspx.cs index 43ee37266..45db249c9 100644 --- a/Ventas/RepProductosServiciosPeriodo.aspx.cs +++ b/Ventas/RepProductosServiciosPeriodo.aspx.cs @@ -270,7 +270,7 @@ public partial class Ventas_RepProductosServiciosPeriodo : ClsPaginas DdlGrupo.SelectedValue.ToEntero(), DdlTipoComprobante.SelectedValue, DdlProyecto.SelectedValue.ToEntero(), DdlSubProyecto.SelectedValue.ToEntero(), RblTipoCambio.SelectedValue.ToEntero(), TCEspecifico, CveUsuarioConsulta: UsuarioActual.CveUsuario, VerEn: VerEn, CvePS: DdlPS.SelectedValue.ToEntero(), CveClasificacion: DdlClasificacion.SelectedValue.ToEntero(), CveCategoria: DdlCategoria.SelectedValue.ToEntero(), TipoFecha: DdlTipoFecha.SelectedValue.ToEntero(), - CveClienteClasificacion: DdlClienteClasificacion.SelectedValue.ToEntero(), ModalidadContable: !ChkLecturaAdmin.Checked)) + CveClienteClasificacion: DdlClienteClasificacion.SelectedValue.ToEntero(), ModalidadContable: !ChkLecturaAdmin.Checked, OpVista: DdlVista.SelectedValue.ToEntero())) { GvDatos.DataSource = ObjVentas.DtResultados; DtVentas = ObjVentas.DtResultados; diff --git a/Ventas/RepVentas.aspx.vb b/Ventas/RepVentas.aspx.vb index e4e9cfe1f..1a5f2ea60 100644 --- a/Ventas/RepVentas.aspx.vb +++ b/Ventas/RepVentas.aspx.vb @@ -260,8 +260,12 @@ Partial Class Ventas_RepVentas Dim Sucursales As String = If(DdlSubProyecto.GetSelectedValuesM = "", "-1", DdlSubProyecto.GetSelectedValuesM) Dim Estatus As String = If(DdlEstatus.GetSelectedValuesM = "", "-1", DdlEstatus.GetSelectedValuesM) Dim Vendedores As String = If(DdlVendedor.GetSelectedValuesM = "", "-1", DdlVendedor.GetSelectedValuesM) - Dim CveCliente As Integer = If(DdlClientes.SelectedValue = "", -1, DdlClientes.SelectedValue.ToEntero) - + Dim CveCliente As Integer = If(DdlClientes.SelectedValue = "", -1, DdlClientes.SelectedValue.ToEntero) + + If TipoComprobante.Contiene("Rem") And Not Estatus.Contiene("11") Then + Estatus = Estatus & ",11" + End If + If RblTipoCambio.SelectedValue.ToEntero = 3 And TxtEspecifico.Text <> "" Then TCEspecifico = TxtEspecifico.Text.ToDecimal Else @@ -340,7 +344,19 @@ Partial Class Ventas_RepVentas DdlEstatus.DataSource = GlobalDTEstatusFactura End If 'DdlEstatus.Items.Add(New ListItem("Todos", "-1")) - DdlEstatus.DataBind() + DdlEstatus.DataBind() + + If DdlTipoComprobante.GetSelectedValuesM(True).Contains("Rem") Then + For Each item As ListItem In DdlEstatus.Items + If item.Value = "11" Then + DdlEstatus.Items.Remove(item) + DdlEstatus.Items.Insert(0, New ListItem("Registrada", "2")) + Exit For + End If + Next + End If + + End Sub Private Sub RblTipoCambio_SelectedIndexChanged(sender As Object, e As EventArgs) Handles RblTipoCambio.SelectedIndexChanged diff --git a/Ventas/RepVentasDetalle.aspx.vb b/Ventas/RepVentasDetalle.aspx.vb index 680bc7f08..ab3168e0b 100644 --- a/Ventas/RepVentasDetalle.aspx.vb +++ b/Ventas/RepVentasDetalle.aspx.vb @@ -362,6 +362,17 @@ Partial Class RepVentasDetalle End If ' DdlEstatus.Items.Add(New ListItem("Todos", "-1")) DdlEstatus.DataBind() + + If DdlTipoComprobante.GetSelectedValuesM(True).Contains("Rem") Then + For Each item As ListItem In DdlEstatus.Items + If item.Value = "11" Then + DdlEstatus.Items.Remove(item) + DdlEstatus.Items.Insert(0, New ListItem("Registrada", "2")) + Exit For + End If + Next + End If + End Sub #End Region @@ -430,6 +441,10 @@ Partial Class RepVentasDetalle FechaIEjec = If(IsDate(TxtFechaIEjec.Text.Trim()), TxtFechaIEjec.Text.Trim.ToDate, MinFecha) FechaFEjec = If(IsDate(TxtFechaFEjec.Text.Trim()), TxtFechaFEjec.Text.Trim.ToDate, MaxFecha) + If TipoComprobante.Contiene("Rem") And Not Estatus.Contiene("11") Then + Estatus = Estatus & ",11" + End If + Dim ModalidadContable As Boolean = CBool(If(Request("ModalidadContable") IsNot Nothing, Request("ModalidadContable").ToEntero(), 0)) ChkLecturaAdmin.Checked = Not ModalidadContable diff --git a/Ventas/Ventas.aspx b/Ventas/Ventas.aspx index c62834433..317269edc 100644 --- a/Ventas/Ventas.aspx +++ b/Ventas/Ventas.aspx @@ -320,8 +320,6 @@ - - <%--
  • Descargar Formato
  • --%> @@ -344,7 +342,7 @@ Generar Orden de Compra - + <%--
  • @@ -357,7 +355,7 @@ - + --%>
  • Fletes @@ -402,19 +400,14 @@
  • Cancelar solo CFDI
  • -
  • Agregar Orden de Servicio
  • - - - <%-- --%> - <%-- --%>
    @@ -952,15 +945,6 @@ -
    - - - -
    Usuarios con acceso a la cuenta
    - + + + + + () + + - - <%----%> + - diff --git a/Bancos/CuentasBancariasDetalle.aspx.vb b/Bancos/CuentasBancariasDetalle.aspx.vb index c89f3e3ee..5aee71c2e 100644 --- a/Bancos/CuentasBancariasDetalle.aspx.vb +++ b/Bancos/CuentasBancariasDetalle.aspx.vb @@ -33,7 +33,7 @@ Partial Class Bancos_CuentasBancariasDetalle Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load If Not IsPostBack Then CargarTipoCuenta() - CargarBanco() + CargarBanco() CargarMoneda() CargaCuentasPadre() ViewState("DTUsuarios") = Nothing @@ -312,6 +312,7 @@ Partial Class Bancos_CuentasBancariasDetalle If Not ErrorUsuarios Then GlobalDTBancosCuentas(-1, CveEmpresa:=UsuarioActual.CveEmpresa) = Nothing + GlobalDTBancosCuentasGral(UsuarioActual.CveEmpresa) = Nothing 'If ObjCuentasBancariasDetalle.GetBancosCuentasUsuarios(-1) Then ' GlobalDTBancosCuentas(-1, CveEmpresa:=UsuarioActual.CveEmpresa) = ObjCuentasBancariasDetalle.DtResultados 'Else @@ -333,6 +334,7 @@ Partial Class Bancos_CuentasBancariasDetalle CveCuentaPadre:=DdlCuentaPadre.SelectedValue.ToEntero, CveSubProyecto:=DdlSubProyectos.SelectedValue.ToEntero, NumeroSucursal:=TxtNumeroSucursal.Text.Trim) Then 'CargaDatos() GlobalDTBancosCuentas(-1, CveEmpresa:=UsuarioActual.CveEmpresa) = Nothing + GlobalDTBancosCuentasGral(UsuarioActual.CveEmpresa) = Nothing 'If ObjCuentasBancariasDetalle.GetBancosCuentasUsuarios(-1) Then ' GlobalDTBancosCuentas(-1, CveEmpresa:=UsuarioActual.CveEmpresa) = ObjCuentasBancariasDetalle.DtResultados 'Else @@ -476,8 +478,12 @@ Partial Class Bancos_CuentasBancariasDetalle For Each row As DataRow In DTUsuarios.Rows sUsuarios = $"{sUsuarios} {row("CveUsuario").ToString}," Next - If sUsuarios <> "" Then - DdlUsuarios.DataSource = GlobalDTUsuarios(-1, UsuarioActual.CveEmpresa).FiltraParametros($"CveUsuario NOT IN ({sUsuarios.Substring(0, sUsuarios.Length - 1)})", "Nombre") + If sUsuarios <> "" Then + + ' Dim tablaUsuariosAux As DataTable = GlobalDTUsuarios(-1, UsuarioActual.CveEmpresa).FiltraParametros("", "Nombre", DistinctColumns:={"CveUsuario", "Nombre", "Usuario"}) + Dim tablaUsuariosAux As DataTable = GlobalDTUsuarios(-1, UsuarioActual.CveEmpresa).FiltraParametros($"CveUsuario NOT IN ({sUsuarios.Substring(0, sUsuarios.Length - 1)})", "Nombre") + DdlUsuarios.DataSource = CargarDdlUsuarios(tablaUsuariosAux) + 'DdlUsuarios.DataSource = GlobalDTUsuarios(-1, UsuarioActual.CveEmpresa).FiltraParametros($"CveUsuario NOT IN ({sUsuarios.Substring(0, sUsuarios.Length - 1)})", "Nombre") DdlUsuarios.DataBind() End If End Sub diff --git a/Bancos/DepositosCaja.aspx b/Bancos/DepositosCaja.aspx index 0b3a38715..3bebf5677 100644 --- a/Bancos/DepositosCaja.aspx +++ b/Bancos/DepositosCaja.aspx @@ -219,111 +219,147 @@ -
    + +
    -
    Importes VinculadosImportes Calculados
    Capturó: +
    + +
    %Desc. Pronto Pago:
    Contabilizada: - - - <%-- --%> - <%----%> -
    Se timbró:  @@ -1110,8 +1094,8 @@ P.U.  - Costo
    +
    Costo +
    Utilidad
    Desc @@ -1269,7 +1253,7 @@
    <%--0--%> @@ -1282,7 +1266,7 @@
    -
    +
    @@ -1429,7 +1413,7 @@ <%--10--%> - +
    @@ -1987,23 +1971,23 @@
    - + - + - - - - - - - + + + + + + +
    @@ -3369,7 +3353,21 @@
    - + + Fecha de entrega:  + +
    + + + + + + + + +
    + + Fecha de recepción:  @@ -3386,24 +3384,6 @@
    - - - Fecha de recepción:  - -
    - - - - - - - - - -
    - - -
    @@ -8174,11 +8154,6 @@ -
    -
    - -
    -