diff --git a/Acumuladores/RepIndicadorDiario.aspx.vb b/Acumuladores/RepIndicadorDiario.aspx.vb index ca676daf2..2e229cfe7 100644 --- a/Acumuladores/RepIndicadorDiario.aspx.vb +++ b/Acumuladores/RepIndicadorDiario.aspx.vb @@ -105,7 +105,7 @@ Partial Class ACumuladores_RepIndicadorDiario TCEspecifico = -1 End If - If ObjAcum.GetRepIndicadorDiario(FechaI, FechaF, DdlSubProyecto.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then + If ObjAcum.GetRepIndicadorDiario(FechaI, FechaF, DdlSubProyecto.SelectedValue.ToEntero, usuarioactual.cveusuario, UsuarioActual.CveEmpresa) Then GvDatos.DataSource = ObjAcum.DtResultados DtDatos = ObjAcum.DtResultados Else @@ -153,8 +153,8 @@ Partial Class ACumuladores_RepIndicadorDiario If e.Row.RowType = DataControlRowType.DataRow Then - If e.Row.DBCampo("Partida").Contiene("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14") Then - e.Row.FCHyperLink("HplImporteAldia").NavigateUrl = String.Format("RepIndicadorDiarioDetalle.aspx?Partida={0}&FI={1}&FF={2}&CveSubProyecto={3}", e.Row.DBCampo("Partida"), txtFechaI.Text, txtFechaF.Text, DdlSubProyecto.SelectedValue) + If e.Row.DBCampo("Partida").Contiene("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16") Then + e.Row.FCHyperLink("HplImporteAldia").NavigateUrl = String.Format("RepIndicadorDiarioDetalle.aspx?Partida={0}&FI={1}&FF={2}&CveSubProyecto={3}", e.Row.DBCampo("Partida"), txtFechaF.Text, txtFechaF.Text, DdlSubProyecto.SelectedValue) End If If e.Row.DataKey("Ordernador2").ToEntero = 100 Or e.Row.DataKey("Seccion").ToEntero = 3 And (e.Row.DataKey("TipoCategoria").ToEntero = 6 Or e.Row.DataKey("TipoCategoria").ToEntero = 7) Then diff --git a/Acumuladores/RepIndicadorDiarioDetalle.aspx b/Acumuladores/RepIndicadorDiarioDetalle.aspx index 5a5a8955c..b60f975f7 100644 --- a/Acumuladores/RepIndicadorDiarioDetalle.aspx +++ b/Acumuladores/RepIndicadorDiarioDetalle.aspx @@ -96,6 +96,8 @@ + + @@ -104,6 +106,8 @@ + +
diff --git a/Acumuladores/RepIndicadorDiarioDetalle.aspx.vb b/Acumuladores/RepIndicadorDiarioDetalle.aspx.vb index f06c03605..7f6974f37 100644 --- a/Acumuladores/RepIndicadorDiarioDetalle.aspx.vb +++ b/Acumuladores/RepIndicadorDiarioDetalle.aspx.vb @@ -21,7 +21,6 @@ Partial Class Acumuladores_RepIndicadorDiarioDetalle #Region " CARGA DATOS INICIALES " - Private Sub CargaParametrosDetalle() CargarCentrosDeCosto(Nothing, DdlSubProyecto, Nothing, LblSubProyecto) @@ -52,7 +51,7 @@ Partial Class Acumuladores_RepIndicadorDiarioDetalle FechaI = txtFechaI.Text.ToDate FechaF = txtFechaF.Text.ToDate - If ObjAcum.GetRepIndicadorDiarioDetalle(FechaI, FechaF, DdlOpcion.SelectedValue.ToEntero, DdlSubProyecto.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then + If ObjAcum.GetRepIndicadorDiarioDetalle(FechaI, FechaF, DdlOpcion.SelectedValue.ToEntero, DdlSubProyecto.SelectedValue.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then GvDatos.DataSource = ObjAcum.DtResultados Else GvDatos.DataSource = Nothing diff --git a/App_Code/ClsAcumuladores.vb b/App_Code/ClsAcumuladores.vb index 6a8a46e45..158fb0c0a 100644 --- a/App_Code/ClsAcumuladores.vb +++ b/App_Code/ClsAcumuladores.vb @@ -1135,7 +1135,7 @@ Public Class ClsAcumuladores End Function - Public Function GetRepIndicadorDiario(FechaInicio As Date, FechaFin As Date, CveSubProyecto As Integer, CveEmpresa As Integer) As Boolean + Public Function GetRepIndicadorDiario(FechaInicio As Date, FechaFin As Date, CveSubProyecto As Integer, CveUsuario As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False @@ -1145,6 +1145,7 @@ Public Class ClsAcumuladores .Add("@FechaInicio", SqlDbType.Date).Value = FechaInicio .Add("@FechaFin", SqlDbType.Date).Value = FechaFin .Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto + .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa End With @@ -1162,7 +1163,7 @@ Public Class ClsAcumuladores Return Retorno End Function - Public Function GetRepIndicadorDiarioDetalle(FechaInicio As Date, FechaFin As Date, Opcion As Integer, CveSubProyecto As Integer, CveEmpresa As Integer) As Boolean + Public Function GetRepIndicadorDiarioDetalle(FechaInicio As Date, FechaFin As Date, Opcion As Integer, CveSubProyecto As Integer, CveUsuario As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False @@ -1173,6 +1174,7 @@ Public Class ClsAcumuladores .Add("@FechaFin", SqlDbType.Date).Value = FechaFin .Add("@Opcion", SqlDbType.Int).Value = Opcion .Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto + .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa End With diff --git a/App_Code/ClsCRM.vb b/App_Code/ClsCRM.vb index 5db431cb1..cdad985da 100644 --- a/App_Code/ClsCRM.vb +++ b/App_Code/ClsCRM.vb @@ -447,11 +447,11 @@ Public Class ClsCRM .Add("@Correo", SqlDbType.VarChar).Value = Correo .Add("@CveGiroClasificacion", SqlDbType.Int).Value = CveGiroClasificacion - .Add("@RETURN_VALUE", SqlDbType.Int).Direction = ParameterDirection.ReturnValue + .Add("@CveEmpresaCRM", SqlDbType.Int).Direction = ParameterDirection.ReturnValue End With Try SqlAdapter.Fill(Data) - CveEmpresaCRM = SqlAdapter.SelectCommand.Parameters("@RETURN_VALUE").Value.ToString().ToEntero() + CveEmpresaCRM = SqlAdapter.SelectCommand.Parameters("@CveEmpresaCRM").Value.ToString().ToEntero() Catch ex As Exception OnError("Ocurrió un error al agregar la Empresa CRM.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) End Try diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 0eb004041..062a5f89d 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -16,6 +16,9 @@ Imports Stimulsoft.Report Imports System.Xml Imports System.Web.Http.ValueProviders Imports ADServerControl +Imports System.Net.Http +Imports Newtonsoft.Json +Imports Newtonsoft.Json.Linq 'NOTA AD TEAM @@ -7687,8 +7690,14 @@ Public Class ClsPaginas Dim Archivo As New System.IO.FileInfo(RutaFormato) If Archivo.Exists Then - + 'If UsuarioActual.Empresa.Funcionalidad(350) = "1" Then + ' RutaFormato = RutaFormato.Replace(".rdlc", ".mrt") + ' retorno = StreamBytesStimulsoft("Facturas", RutaFormato, lrds, params, NombreArchivo:=NombreArchivo, Formato:="PDF") + 'Else + ' retorno = StreamPDF(RutaFormato, lrds, params, NombreArchivo, "PDF", MR:=Nothing) + 'End If retorno = StreamPDF(RutaFormato, lrds, params, NombreArchivo, "PDF", MR:=Nothing) + Dim ArchivoPDF As New System.IO.FileInfo(String.Format("{0}PDF\{1}\{2}.pdf", UsuarioActual.Empresa.Ruta, Vta.TipoDocto, Vta.SerieFolio)) If Guardar Then If Not ArchivoPDF.Exists Then @@ -7711,6 +7720,12 @@ Public Class ClsPaginas Else params.Add(New ReportParameter("Empresa", UsuarioActual.Empresa.Empresa)) params.Add(New ReportParameter("RFC", UsuarioActual.Empresa.RFC)) + 'If UsuarioActual.Empresa.Funcionalidad(350) = "1" Then + ' RutaFormato = RutaFormato.Replace(".rdlc", ".mrt") + ' retorno = StreamBytesStimulsoft("Facturas", RutaFormatoDefault, lrds, params, NombreArchivo:=NombreArchivo, Formato:="PDF") + 'Else + ' retorno = StreamPDF(RutaFormatoDefault, lrds, params, NombreArchivo, "PDF", MR:=Nothing) + 'End If retorno = StreamPDF(RutaFormatoDefault, lrds, params, NombreArchivo, "PDF", MR:=Nothing) End If Catch ex As Exception @@ -7719,6 +7734,82 @@ Public Class ClsPaginas Return retorno End Function + + Protected Function StreamBytesStimulsoft(Opcion As String, RutaReporte As String, DataSource As List(Of ReportDataSource), Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF") As Byte() + 'limpio ReportViwer + Dim sw As New System.Diagnostics.Stopwatch() + sw.Start() + Dim Bytes As Byte() = Nothing + + Dim CveUsuario As Integer = 0 + Dim CveEmpresa As Integer = 0 + Dim RutaEmpresa As String = "" + + If Context.Session("UsuarioSIG") IsNot Nothing Then + CveUsuario = UsuarioActual.CveUsuario + CveEmpresa = UsuarioActual.CveEmpresa + RutaEmpresa = UsuarioActual.Empresa.RutaArchivos + End If + + Dim bdir As String = If(RutaReporte.Contains("Empresas"), ModExtensiones.DirectorioBaseEmpresas, AppDomain.CurrentDomain.BaseDirectory) + + 'TOMAR LA RUTA BASE PARA EL DIRECTORIO DE LA EMPRESA + If Not String.IsNullOrEmpty(RutaEmpresa) AndAlso Not RutaReporte.Contains("Grales") AndAlso Not RutaReporte.Contains("Contabilidad/Reportes/") Then + bdir = RutaEmpresa.Replace($"{CveEmpresa}/", "") + End If + + RutaReporte.Replace("/", "\") + + If Not RutaReporte.ToUpper().StartsWith(bdir.ToUpper()) Then + RutaReporte = String.Format("{0}{1}", bdir, RutaReporte) + End If + + 'SITIO DE PRUEBA EN IIS + Dim Url = New Uri(String.Format("{0}{1}", "http://localhost:2202/", Opcion)) + + Try + Dim dataSourceArray As New JArray() + Dim paramsArray As New JArray() + + For Each rds As ReportDataSource In DataSource + dataSourceArray.Add(New JObject(New JProperty("Nombre", rds.Name), New JProperty("Valor", JArray.Parse(JsonConvert.SerializeObject(rds.Value))))) + Next + + For Each param As ReportParameter In Parametros + paramsArray.Add(New JObject(New JProperty("Nombre", param.Name), New JProperty("Valor", param.Values.Item(0)))) + Next + + Dim payload As New JObject( + New JProperty("formato", Formato), + New JProperty("ruta", RutaReporte), + New JProperty("parametros", paramsArray), + New JProperty("dataSource", dataSourceArray) + ) + + Dim data = New StringContent(payload.ToString(), Encoding.UTF8, "application/json") + + Using httpClient = New HttpClient() + Using request = New HttpRequestMessage(HttpMethod.Post, Url) + 'request.Headers.Add("ADSToken", Encripta(String.Format("CVEEMPRESA={0}&TICKS={1}&CVEUSUARIO=100", CveEmpresa, DateTime.UtcNow.Ticks))) + request.Content = New StringContent(payload.ToString(), Encoding.UTF8, "application/json") + Dim response = httpClient.SendAsync(request).Result + If response.StatusCode = Net.HttpStatusCode.OK Then + Bytes = response.Content.ReadAsByteArrayAsync().Result + End If + End Using + End Using + Catch ex As Exception + OnError("Ocurrió un error al descargar la factura", ex) + End Try + + sw.Stop() + + If sw.Elapsed.TotalSeconds > 5 Then + GuardaLog($"Reporte:{RutaReporte} | Tiempo Renderizado Milisegundos: {sw.ElapsedMilliseconds},Total Segundos: {sw.Elapsed.TotalSeconds} ") + End If + + Return Bytes + End Function Private Function ValorNodoXML(n As System.Xml.XmlNode, Campo As String, Optional Retorno As String = "") As String Dim o As System.Xml.XmlNode = n.Attributes.Cast(Of System.Xml.XmlAttribute)().SingleOrDefault(Function(a) String.Compare(a.Name, Campo, True) = 0) If o Is Nothing Then diff --git a/App_Code/ClsVentas.vb b/App_Code/ClsVentas.vb index 1e17d5ae3..eb05b55d1 100644 --- a/App_Code/ClsVentas.vb +++ b/App_Code/ClsVentas.vb @@ -3345,7 +3345,9 @@ Public Class ClsVentas 'SOLO SI ESTA CANCELADA ANTE SAT EN SIG SE INTENTARA CANCELAR DE NUEVO CONTRA EL SAT If CveEstatus = 5 Then - If ObjCancelacion.CFDICancelar(Usuario.Empresa, FolioFiscal, Total, RFCReceptor, Usuario.Empresa.RFC) Then + Dim Resp As RespuestaCancelacionSAT = ObjCancelacion.CFDICancelar(Usuario.Empresa, FolioFiscal, Total, RFCReceptor, Usuario.Empresa.RFC) + If Resp.Verificado Then + If Not ObjVentas.UpdateEstatusFactura(5, FolioFiscal, ObjCancelacion.CancelacionAcuse, Now, PCveVenta.ToEntero, -1, CvePAC:=Usuario.Empresa.CvePAC) Then CveVentasError.Add(PCveVenta.ToEntero) End If diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index 087d8e134..7bc5842be 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -394,9 +394,14 @@ Namespace Modelos SetSubProyecto() SetSubProyectoMatriz() SetCliente() + If ObjVentas.DtResultados.Rows(0)("IEPS").ToString.ToDecimal <= 0 Then + Me.VentaDesglosaIEPS = False + Else + Me.VentaDesglosaIEPS = True + End If SetTotales(ObjVentas.DtResultados, ObjVentas) + End If End If - End If If ObjVentas.GetVentaDetalle(CveVenta) Then Me.DtDetalle = ObjVentas.DtResultados.Copy() End If @@ -4636,8 +4641,8 @@ Namespace Modelos ''' Cancela la factura para poder realizar la refacturacion ''' ''' - Public Function CancelarPorRefacturacion(CveMotivoCancelacion As Integer, Motivo As String, Optional FolioSustitucion As String = "", Optional ValidarSAT As Boolean = False, Optional CveEstadoCancelacion As Integer = 0) As MCancelacionVentaMensaje - Return CancelarVenta(Me, Me.UsuarioActual, EsRefacturacion:=True, CveMotivoCancelacion:=CveMotivoCancelacion, MotivoCancelacion:=Motivo, FolioSustitucion:=FolioSustitucion, ValidarSAT:=ValidarSAT, CveEstadoCancelacion:=CveEstadoCancelacion) + Public Function CancelarPorRefacturacion(CveMotivoCancelacion As Integer, Motivo As String, Optional FolioSustitucion As String = "", Optional ValidarSAT As Boolean = False, Optional CveEstadoCancelacion As Integer = 0, Optional CveEstatusFacturaAsignado As Integer = -1) As MCancelacionVentaMensaje + Return CancelarVenta(Me, Me.UsuarioActual, EsRefacturacion:=True, CveMotivoCancelacion:=CveMotivoCancelacion, MotivoCancelacion:=Motivo, FolioSustitucion:=FolioSustitucion, ValidarSAT:=ValidarSAT, CveEstadoCancelacion:=CveEstadoCancelacion, CveEstatusFacturaAsignado:=CveEstatusFacturaAsignado) End Function ''' ''' Cancela la factura y realiza las operaciones correspondientes @@ -4904,7 +4909,8 @@ Namespace Modelos 'SI NO SE PUDO OBTENER DEL SERVICIO, UTILIZA EL METODO DE CANCELACION PARA OBTENER EL ACUSE If CancelacionAcuse = "" Then - If ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, TotalT, RFCReceptor, UsuarioActual.Empresa.RFC, CvePACCancelacion, CveSATMotivoCancelacion:=CveSATMotivoCancelacion, FolioSustitucion:=FolioSustitucion) Then + Dim Resp As RespuestaCancelacionSAT = ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, TotalT, RFCReceptor, UsuarioActual.Empresa.RFC, CvePACCancelacion, CveSATMotivoCancelacion:=CveSATMotivoCancelacion, FolioSustitucion:=FolioSustitucion) + If Resp.Verificado Then 'GENERAMOS EL ACUSE Y MANDAMOS MAIL DE CON EL ACUSE DE CANCELACIÓN If RequiereAceptacion Then CancelacionFecha = Now.Date @@ -4983,15 +4989,18 @@ Namespace Modelos If Not ObtenerAcuse Then If ContinuarCancelacion Then - If ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, TotalT, RFCReceptor, UsuarioActual.Empresa.RFC, CvePACCancelacion:=CvePACCancelacion, ValidaFactura:=ValidarSAT, CveSATMotivoCancelacion:=CveSATMotivoCancelacion, FolioSustitucion:=FolioSustitucion) Then + Dim Resp As RespuestaCancelacionSAT = ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, TotalT, RFCReceptor, UsuarioActual.Empresa.RFC, CvePACCancelacion:=CvePACCancelacion, ValidaFactura:=ValidarSAT, CveSATMotivoCancelacion:=CveSATMotivoCancelacion, FolioSustitucion:=FolioSustitucion) + If Resp.Verificado Then 'GENERAMOS EL ACUSE Y MANDAMOS MAIL DE CON EL ACUSE DE CANCELACIÓN - If RequiereAceptacion Then - CancelacionFecha = Now.Date - CveEstatus = 20 - Else - CancelacionFecha = ObjCancelacion.CancelacionFecha - CveEstatus = 5 - End If + 'If Resp.cve Then + ' CancelacionFecha = Now.Date + ' CveEstatus = 20 + 'Else + ' CancelacionFecha = ObjCancelacion.CancelacionFecha + ' CveEstatus = 5 + 'End If + CveEstatus = Resp.CveEstatus + CancelacionFecha = Resp.CancelacionFecha CancelacionAcuse = ObjCancelacion.CancelacionAcuse Else Retorno.Mensaje = "Los servicios de cancelación del SAT no se encuentran disponibles o presentan time out. Intente de nuevo en unos minutos.
Origen del error: WebService www.sat.gob.mx" @@ -5093,7 +5102,7 @@ Namespace Modelos If Not AplicaRefacturacionConPagos AndAlso ((((ObjFactura.Saldo > 0 AndAlso (CveEstatus > 0 AndAlso Not CveEstatus.Contiene(20, 23))) OrElse (ObjFactura.Total = 0 AndAlso UsuarioActual.CveEmpresa.Contiene(72) AndAlso ObjFactura.TipoDocto.Contiene("Ing"))) AndAlso CveEstatus.Contiene(4, 5)) OrElse (CvePlantillaPoliza = 7 AndAlso (CveEstatus > 0 AndAlso Not CveEstatus.Contiene(20, 23)))) Then 'CUANDO SE CANCELA, LA PÓLIZA DEBE DE SER DE DIARIO - CvePrePoliza = ObjConta.AddPrePolizas("Modelos/CancelarDocumento", CvePlantillaPoliza, ObjFactura.Total, ObjFactura.Total, ObjFactura.CveMoneda, Now, ObjFactura.Cliente.Nombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoPoliza:=3) + CvePrePoliza = ObjConta.AddPrePolizas("Modelos/CancelarDocumento", CvePlantillaPoliza, ObjFactura.Total, ObjFactura.Total, ObjFactura.CveMoneda, CancelacionFecha, ObjFactura.Cliente.Nombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoPoliza:=3) ObjFactura.CvePrePoliza = CvePrePoliza If ObjFactura.CvePrePoliza <= 0 Then @@ -6123,7 +6132,9 @@ Namespace Modelos ErrorCancelar = True End If - If ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, Total, RFCReceptor, UsuarioActual.Empresa.RFC) Then + Dim Resp As RespuestaCancelacionSAT = ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, Total, RFCReceptor, UsuarioActual.Empresa.RFC) + + If Resp.Verificado Then 'falta verificar traer el acuse y reenviarlo If UsuarioActual.Empresa.UsaAC Then Dim Pol As Modelos.RetornoPolizaConta = GenerarPolizaAC(Me, ObjAC, True) diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index d11401ed9..7b36fe3bc 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -111,7 +111,8 @@ Public Class Timbrado End If solicitud = Nothing Else - If CFDICancelar(UsuarioActual.Empresa, FolioFiscal, TotalT, RFCReceptor, UsuarioActual.Empresa.RFC, CvePACCancelacion, CveSATMotivoCancelacion:=CveSATMotivoCancelacion, FolioSustitucion:=FolioSustitucion) Then + Dim Resp As RespuestaCancelacionSAT = CFDICancelar(UsuarioActual.Empresa, FolioFiscal, TotalT, RFCReceptor, UsuarioActual.Empresa.RFC, CvePACCancelacion, CveSATMotivoCancelacion:=CveSATMotivoCancelacion, FolioSustitucion:=FolioSustitucion) + If Resp.Verificado Then 'GENERAMOS EL ACUSE Y MANDAMOS MAIL DE CON EL ACUSE DE CANCELACIÓN CancelacionFecha = Me.CancelacionFecha CancelacionAcuse = Me.CancelacionAcuse @@ -206,8 +207,8 @@ Public Class Timbrado Return Retorno End Function - Public Function CFDICancelar(Empresa As Empresa, FolioFiscal As String, Total As Decimal, RFCReceptor As String, RFCEmisor As String, Optional CvePACCancelacion As Integer = 2, Optional ValidaFactura As Boolean = True, Optional CveSATMotivoCancelacion As Integer = -1, Optional FolioSustitucion As String = "") As Boolean - Dim Retorno As Boolean = False + Public Function CFDICancelar(Empresa As Empresa, FolioFiscal As String, Total As Decimal, RFCReceptor As String, RFCEmisor As String, Optional CvePACCancelacion As Integer = 2, Optional ValidaFactura As Boolean = True, Optional CveSATMotivoCancelacion As Integer = -1, Optional FolioSustitucion As String = "") As RespuestaCancelacionSAT + Dim Retorno As New RespuestaCancelacionSAT Dim MsgCancelacion As New StringBuilder If CvePACCancelacion = 3 Then @@ -219,10 +220,14 @@ Public Class Timbrado Dim Vigencia = VerificarVigenciaSAT(FolioFiscal, RFCEmisor, RFCReceptor, Total.ToString(), True) If Vigencia IsNot Nothing Then If Vigencia.EsCancelable.ToUpper() = "NO CANCELABLE" Then - Return False + Retorno.Estado = "NO CANCELABLE" + Retorno.Verificado = False + Return Retorno End If Else - Return False + Retorno.Estado = "NO VALIDADO" + Retorno.Verificado = False + Return Retorno End If End If End If @@ -277,7 +282,10 @@ Public Class Timbrado Catch ex As Exception CancelacionFecha = xmlDoc.GetElementsByTagName("CancelaCFDResult")(0).Attributes("Fecha").Value.ToDate End Try - Retorno = True + + Retorno.Verificado = True + Retorno.CancelacionFecha = CancelacionFecha + Retorno.CancelacionAcuse = CancelacionAcuse End If 'End If @@ -324,15 +332,15 @@ Public Class Timbrado #Region "Valida" If Not File.Exists(ArchivoCertificado) Then Alert("El archivo de certificado no existe", TipoMensaje.MsgError) - Return False + Retorno.Verificado = False End If If Not File.Exists(ArchivoLLave) Then Alert("El archivo de llave privada no existe", TipoMensaje.MsgError) - Return False + Retorno.Verificado = False End If If Empresa.ContraseñaKey = "" Then Alert("La clave no puede ser vacía", TipoMensaje.MsgError) - Return False + Retorno.Verificado = False End If #End Region @@ -351,7 +359,7 @@ Public Class Timbrado llaveBase64 = Convert.ToBase64String(llaveByte) Catch ex As Exception Alert($"Error al leer la llave privada: {ex.Message}", TipoMensaje.MsgError) - Return False + Retorno.Verificado = False End Try @@ -360,8 +368,7 @@ Public Class Timbrado certBase64 = Convert.ToBase64String(certByte) Catch ex As Exception Alert($"Error al leer el certificado: {ex.Message}", TipoMensaje.MsgError) - Return False - + Retorno.Verificado = False End Try #End Region @@ -430,10 +437,14 @@ Public Class Timbrado CancelacionAcuse = xmlDoc.GetElementsByTagName("SignatureValue")(0).InnerText CancelacionFecha = xmlDoc.SelectSingleNode("Acuse").Attributes("Fecha").Value.ToDate - Retorno = True + Retorno.Verificado = True + Retorno.CancelacionFecha = CancelacionFecha + Retorno.CancelacionAcuse = CancelacionAcuse Else CancelacionAcuse = resp.MensajeDeError - Retorno = False + Retorno.Verificado = True + Retorno.CancelacionFecha = CancelacionFecha + Retorno.CancelacionAcuse = CancelacionAcuse End If solicitud = Nothing Case 4 @@ -456,10 +467,13 @@ Public Class Timbrado CancelacionAcuse = xmlDoc.GetElementsByTagName("SignatureValue")(0).InnerText CancelacionFecha = xmlDoc.SelectSingleNode("Acuse").Attributes("Fecha").Value.ToDate - Retorno = True + Retorno.Verificado = True + Retorno.CancelacionFecha = CancelacionFecha + Retorno.CancelacionAcuse = CancelacionAcuse Else CancelacionAcuse = resp.Descripcion - Retorno = False + Retorno.Verificado = True + Retorno.CancelacionAcuse = CancelacionAcuse End If solicitud = Nothing End Select @@ -468,7 +482,7 @@ Public Class Timbrado End If Catch ex As Exception CancelacionMensaje += $" | ex: {ex}" - Retorno = False + Retorno.Verificado = False End Try 'Libera memoria @@ -503,15 +517,15 @@ Public Class Timbrado #Region "Valida" If Not File.Exists(ArchivoCertificado) Then Alert("El archivo de certificado no existe", TipoMensaje.MsgError) - Return False + Retorno.Verificado = False End If If Not File.Exists(ArchivoLLave) Then Alert("El archivo de llave privada no existe", TipoMensaje.MsgError) - Return False + Retorno.Verificado = False End If If Empresa.ContraseñaKey = "" Then Alert("La clave no puede ser vacía", TipoMensaje.MsgError) - Return False + Retorno.Verificado = False End If #End Region @@ -561,16 +575,19 @@ Public Class Timbrado MsgCancelacion.AppendFormat("-3.4.3") CancelacionAcuse = xmlDoc.GetElementsByTagName("SignatureValue")(0).InnerText CancelacionFecha = xmlDoc.SelectSingleNode("Acuse").Attributes("Fecha").Value.ToDate + Retorno.CancelacionAcuse = CancelacionAcuse + Retorno.CancelacionFecha = CancelacionFecha + Else CancelacionFecha = Now End If + Retorno.Verificado = True - Retorno = True Else MsgCancelacion.AppendFormat("-3.5") CancelacionAcuse = resp.NumeroError CancelacionMensaje = resultadoCancelacion.Descripcion - Retorno = False + Retorno.Verificado = True End If Case 4 @@ -599,15 +616,15 @@ Public Class Timbrado #Region "Valida" If Not File.Exists(ArchivoCertificado) Then Alert("El archivo de certificado no existe", TipoMensaje.MsgError) - Return False + Retorno.Verificado = False End If If Not File.Exists(ArchivoLLave) Then Alert("El archivo de llave privada no existe", TipoMensaje.MsgError) - Return False + Retorno.Verificado = False End If If Empresa.ContraseñaKey = "" Then Alert("La clave no puede ser vacía", TipoMensaje.MsgError) - Return False + Retorno.Verificado = False End If #End Region @@ -627,7 +644,7 @@ Public Class Timbrado llaveBase64 = Convert.ToBase64String(llaveByte) Catch ex As Exception Alert($"Error al leer la llave privada: {ex.Message}", TipoMensaje.MsgError) - Return False + Retorno.Verificado = False End Try @@ -636,8 +653,7 @@ Public Class Timbrado certBase64 = Convert.ToBase64String(certByte) Catch ex As Exception Alert($"Error al leer el certificado: {ex.Message}", TipoMensaje.MsgError) - Return False - + Retorno.Verificado = False End Try #End Region objCan.CancelacionCfdi = True @@ -662,7 +678,9 @@ Public Class Timbrado CancelacionAcuse = xmlDoc.GetElementsByTagName("SignatureValue")(0).InnerText CancelacionFecha = xmlDoc.DocumentElement.Attributes("Fecha").Value.ToDate - Retorno = True + Retorno.Verificado = True + Retorno.CancelacionAcuse = CancelacionAcuse + Retorno.CancelacionFecha = CancelacionFecha MsgCancelacion.AppendFormat("4.5.2-") End If @@ -671,7 +689,6 @@ Public Class Timbrado Case 5 CancelacionAcuse = "" - Retorno = False MsgCancelacion.AppendFormat("5.1-") Dim TimbraProduccion As Boolean = True @@ -700,7 +717,7 @@ Public Class Timbrado llaveBase64 = Convert.ToBase64String(llaveByte) Catch ex As Exception Alert($"Error al leer la llave privada: {ex.Message}", TipoMensaje.MsgError) - Return False + Retorno.Verificado = False End Try Try @@ -708,7 +725,7 @@ Public Class Timbrado certBase64 = Convert.ToBase64String(certByte) Catch ex As Exception Alert($"Error al leer el certificado: {ex.Message}", TipoMensaje.MsgError) - Return False + Retorno.Verificado = False End Try Dim Contrato As String = "72330711-cac6-4106-8051-cbcda1aef495" @@ -734,8 +751,11 @@ Public Class Timbrado 'EN PROCESO, CANCELABLE SIN ACEPTACION,CANCEALDO PREVIAMENTE If cancelacion.codigo.Contiene("96", "201", "202") Then CancelacionFecha = Now - Retorno = True + CancelacionAcuse = result.acuseCancelBase64 + Retorno.Verificado = True + Retorno.CancelacionAcuse = CancelacionAcuse + Retorno.CancelacionFecha = CancelacionFecha End If CancelacionMensaje = cancelacion.mensaje Else @@ -749,8 +769,25 @@ Public Class Timbrado End If End Select + 'valida que si se halla cancelado + Dim VigenciaExtra = VerificarVigenciaSAT(FolioFiscal, RFCEmisor, RFCReceptor, Total.ToString(), True) + If Retorno.Verificado AndAlso VigenciaExtra IsNot Nothing Then + If VigenciaExtra.Estado.ToUpper = "VIGENTE" AndAlso Not VigenciaExtra.EstatusCancelacion.ToUpper.Contiene("EN PROCESO") Then + Retorno.Estado = "VIGENTE" + Retorno.CveEstatus = 23 + End If + If VigenciaExtra.Estado.ToUpper = "VIGENTE" AndAlso VigenciaExtra.EstatusCancelacion.ToUpper.Contiene("EN PROCESO") Then + Retorno.Estado = "EN PROCESO" + Retorno.CveEstatus = 20 + End If + If VigenciaExtra.Estado.ToUpper = "CANCELADO" Then + Retorno.Estado = "CANCELADO" + Retorno.CveEstatus = 5 + End If - If Not Retorno Then + End If + + If Not Retorno.Verificado Then GuardaLog($"****** Error al cancelar factura ****** Estatus: {CancelacionState} | Mensaje: {CancelacionMensaje} | Mensaje SAT: {MsgCancelacion.ToString} ") End If @@ -4010,9 +4047,12 @@ Public Class Timbrado Try Dim RutaCBB As String = $"{UsuarioActual.Empresa.Ruta}CBB\{ObjCFDITimbre.Comprobante.SerieFolio}.jpg" - 'temp - 'Dim b As Byte() = cfdi. .QrCode($"?re={UsuarioActual.Empresa.RFC}&rr={ObjCFDITimbre.Receptor.RFC}&tt={String.Format("{0,12:F6}", ObjCFDITimbre.Comprobante.Total).Trim()}&id={FolioFiscal}") - 'File.WriteAllBytes(RutaCBB, b) + Dim qrCode As New GoFac.QrCode() + 'String cadenaqrCode = qrCode.GenerarCadenaQrCode(txtXml.Text) + + Dim bCBB As Byte() = qrCode.GenerarQrCode($"{LigaVerificacionSAT}?re={UsuarioActual.Empresa.RFC}&rr={ObjCFDITimbre.Receptor.RFC}&tt={String.Format("{0,12:F6}", ObjCFDITimbre.Comprobante.Total).Trim()}&id={FolioFiscal}&fe=ELleDg==") + File.WriteAllBytes(RutaCBB, bCBB) + bCBB = Nothing Catch ex As Exception OnError("Ocurrió un error al generar el QR", ex) End Try diff --git a/App_Code/Timbres.vb b/App_Code/Timbres.vb index c5fe74c5b..654f5ae7f 100644 --- a/App_Code/Timbres.vb +++ b/App_Code/Timbres.vb @@ -85,12 +85,8 @@ Public Class Timbres Timbre.Comprobante.Descuentos = Obj.Descuento Timbre.Comprobante.Moneda = "XXX" Timbre.Comprobante.TipoCambio = "" ' CONDICIÓN SI LA MONEDA ES 'XXX' - - Timbre.Receptor.RFC = UsuarioActual.Empresa.RFC - Timbre.Receptor.Nombre = UsuarioActual.Empresa.Empresa Timbre.Receptor.UsoCFDI = "P01" - Dim totSubTotal As Decimal = Obj.SubTotal Dim totIVA As Decimal = Obj.IVA Dim totRetIVA As Decimal = Obj.RetIVA @@ -124,9 +120,11 @@ Public Class Timbres If ObjGrales.DtResultados.Rows.Count = 1 Then Dim DtMovimientos As DataTable = Nothing - Dim drT As DataRow = ObjGrales.DtResultados.Rows(0) + Timbre.Receptor.RFC = drT("DestinatarioRFC").ToString + Timbre.Receptor.Nombre = drT("DestinatarioNombre").ToString + CveMovimiento = drT("CveMovimientoAlmacen").ToString.ToEntero FechaSalida = drT("FechaEntrega").ToString.ToDateTime FechaLlegada = drT("FechaLlegada").ToString.ToDateTime diff --git a/App_Code/WsSIGWeb.vb b/App_Code/WsSIGWeb.vb index d8e3a40da..cee8000b4 100644 --- a/App_Code/WsSIGWeb.vb +++ b/App_Code/WsSIGWeb.vb @@ -67,8 +67,9 @@ Public Class WsSIGWeb 'SOLO SI ESTA CANCELADA ANTE SAT EN SIG SE INTENTARA CANCELAR DE NUEVO CONTRA EL SAT If CveEstatus = 5 Then - If ObjCancelacion.CFDICancelar(Usuario.Empresa, FolioFiscal, Total, RFCReceptor, Usuario.Empresa.RFC) Then - If ObjVentas.UpdateEstatusFactura(5, FolioFiscal, ObjCancelacion.CancelacionAcuse, Now, PCveVenta.ToEntero, -1, CvePAC:=Usuario.Empresa.CvePAC) Then + Dim Resp As RespuestaCancelacionSAT = ObjCancelacion.CFDICancelar(Usuario.Empresa, FolioFiscal, Total, RFCReceptor, Usuario.Empresa.RFC) + If Resp.Verificado Then + If ObjVentas.UpdateEstatusFactura(5, FolioFiscal, ObjCancelacion.CancelacionAcuse, Resp.CancelacionFecha, PCveVenta.ToEntero, -1, CvePAC:=Usuario.Empresa.CvePAC) Then Retorno = True Else MensajeError = $"Ocurrió un error al actualizar la cancelación la CveVenta {PCveVenta}" diff --git a/App_Code/modExtensiones.vb b/App_Code/modExtensiones.vb index bb6c90d07..0cad09345 100644 --- a/App_Code/modExtensiones.vb +++ b/App_Code/modExtensiones.vb @@ -147,6 +147,16 @@ Namespace Extensiones End If End Function + Public Class RespuestaCancelacionSAT + Public Property Verificado As Boolean = False + Public Property CveEstatus As Integer = 0 + Public Property Estado As String = "" + Public Property EstatusCancelacion As String = "" + Public Property CancelacionFecha As Date + Public Property CancelacionAcuse As String = "" + End Class + + #Region "Log" diff --git a/Bancos/IE.aspx.vb b/Bancos/IE.aspx.vb index f3eade517..7da7e124b 100644 --- a/Bancos/IE.aspx.vb +++ b/Bancos/IE.aspx.vb @@ -839,7 +839,7 @@ Partial Class Bancos_IE - DdlMotivoCancelacion.DataSource = GlobalDTMotivosCancelacionEmpresa(UsuarioActual.CveEmpresa) + DdlMotivoCancelacion.DataSource = GlobalDTMotivosCancelacionEmpresa(UsuarioActual.CveEmpresa).FiltraParametros("CveSATMotivoCancelacion IN (2,3)") DdlMotivoCancelacion.DataBind() DdlMotivoCancelacion.Items.Insert(0, New ListItem("Seleccione uno", "-1")) @@ -5489,10 +5489,14 @@ Partial Class Bancos_IE Dim DescripcionAus As String = TxtDescripcion.Text - If DdlTipoTransaccion.SelectedItem.Text <> "Seleccione Tipo Movimiento" Then DescripcionAus = String.Format("{0} {1}", DescripcionAus, $"Movimiento:{DdlTipoTransaccion.SelectedItem.Text}") + If DdlTipoTransaccion.SelectedItem.Text <> "Seleccione Tipo Movimiento" Then DescripcionAus = String.Format("{0} {1}", DescripcionAus, $"Movimiento: {DdlTipoTransaccion.SelectedItem.Text}") + + DescripcionAus = $"{DescripcionAus}, Fecha Documento: {TxtFechaDocumento.Text} , Observaciones: {TxtObservaciones.Text} . " + If DdlCuenta.SelectedItem.Text <> "Seleccione" Then DescripcionAus = String.Format("{0} {1}", DescripcionAus, $"Cuenta:{DdlCuenta.SelectedItem.Text}") If TxtFolio.Text <> "" Then DescripcionAus = String.Format("{0} {1}", DescripcionAus, $"Número:{TxtFolio.Text}") If TxtImporte.Text <> "" AndAlso TxtImporte.Text <> "0" Then DescripcionAus = String.Format("{0} {1}", DescripcionAus, $"Importe:{TxtImporte.Text}") + If DdlCliente.Visible Then DescripcionAus = String.Format("{0} {1}", DescripcionAus, $"Páguese A:{DdlCliente.SelectedText}") ElseIf DdlProveedores.Visible Then @@ -5898,7 +5902,7 @@ Partial Class Bancos_IE e.Row.FCLinkButton("LnkCancelarComplemetno").Visible = True e.Row.FCDropDownList("DdlMotivoCancelacion").Visible = True - e.Row.FCDropDownList("DdlMotivoCancelacion").DataSource = GlobalDTMotivosCancelacionEmpresa(UsuarioActual.CveEmpresa) + e.Row.FCDropDownList("DdlMotivoCancelacion").DataSource = GlobalDTMotivosCancelacionEmpresa(UsuarioActual.CveEmpresa).FiltraParametros("CveSATMotivoCancelacion IN (2,3)") e.Row.FCDropDownList("DdlMotivoCancelacion").DataBind() e.Row.FCDropDownList("DdlMotivoCancelacion").Items.Insert(0, New ListItem("Seleccione Uno", "-1")) diff --git a/Bin/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll b/Bin/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll new file mode 100644 index 000000000..4d638b3df Binary files /dev/null and b/Bin/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll differ diff --git a/CRM/CatEmpresasCRM.aspx.cs b/CRM/CatEmpresasCRM.aspx.cs index d7b7b4a1f..9001fb0c6 100644 --- a/CRM/CatEmpresasCRM.aspx.cs +++ b/CRM/CatEmpresasCRM.aspx.cs @@ -185,7 +185,7 @@ public partial class CRM_CatEmpresasCRM : ClsPaginas Archivo file = TxtExcel.getfiles().Archivos[0]; string Directorio = Server.MapPath("~") + file.path; - DataTable dt = ReadExcelFile(Directorio + file.filename, true); + DataTable dt = ModExtensiones.ReadExcelFile(Directorio + file.filename, true); DataRowCollection Rows = dt.Rows; ICRMService cRMService = new CRMService(System.Configuration.ConfigurationManager.ConnectionStrings["Conexion"].ConnectionString); RequestMedioCaptacion RequestMedioCaptacion = new RequestMedioCaptacion(UsuarioActual.CveEmpresa); @@ -291,51 +291,51 @@ public partial class CRM_CatEmpresasCRM : ClsPaginas } - private DataTable ReadExcelFile(string flatFilePath, bool firstRowHasHeaders) - { - SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet()); - ExcelFile excelFile = ExcelFile.Load(flatFilePath); + //private DataTable ReadExcelFile(string flatFilePath, bool firstRowHasHeaders) + //{ + // SpreadsheetInfo.SetLicense(ModExtensiones.SerialGemBoxSpreadsheet()); + // ExcelFile excelFile = ExcelFile.Load(flatFilePath); - int unnamed = 0; - int cols; - string[] columns; - int curRow = 0; - int curCol = 0; - DataTable dataTable = new DataTable(); - ExcelWorksheet worksheet = excelFile.Worksheets[0]; + // int unnamed = 0; + // int cols; + // string[] columns; + // int curRow = 0; + // int curCol = 0; + // DataTable dataTable = new DataTable(); + // ExcelWorksheet worksheet = excelFile.Worksheets[0]; - for (cols = 0; cols <= worksheet.Rows[0].AllocatedCells.Count - 1; cols++) - { - if (firstRowHasHeaders) - { - if (worksheet.Rows[0].Cells[cols].Value != null) - dataTable.Columns.Add(worksheet.Rows[0].Cells[cols].Value.ToString().Trim()); - else - dataTable.Columns.Add("Unnamed Column " + (System.Threading.Interlocked.Increment(ref unnamed))); + // for (cols = 0; cols <= worksheet.Rows[0].AllocatedCells.Count - 1; cols++) + // { + // if (firstRowHasHeaders) + // { + // if (worksheet.Rows[0].Cells[cols].Value != null) + // dataTable.Columns.Add(worksheet.Rows[0].Cells[cols].Value.ToString().Trim()); + // else + // dataTable.Columns.Add("Unnamed Column " + (System.Threading.Interlocked.Increment(ref unnamed))); - curRow = 1; - } - else - dataTable.Columns.Add("Column " + (cols + 1)); - } + // curRow = 1; + // } + // else + // dataTable.Columns.Add("Column " + (cols + 1)); + // } - while (curRow < worksheet.Rows.Count) - { - columns = new string[cols - 1 + 1]; + // while (curRow < worksheet.Rows.Count) + // { + // columns = new string[cols - 1 + 1]; - for (curCol = 0; curCol <= cols - 1; curCol++) - { - if (worksheet.Rows[curRow].Cells[curCol].Value == null) - columns[curCol] = ""; - else - columns[curCol] = worksheet.Rows[curRow].Cells[curCol].Value.ToString(); - } + // for (curCol = 0; curCol <= cols - 1; curCol++) + // { + // if (worksheet.Rows[curRow].Cells[curCol].Value == null) + // columns[curCol] = ""; + // else + // columns[curCol] = worksheet.Rows[curRow].Cells[curCol].Value.ToString(); + // } - dataTable.Rows.Add(columns); - curRow += 1; - } + // dataTable.Rows.Add(columns); + // curRow += 1; + // } - return dataTable; - } + // return dataTable; + //} } \ No newline at end of file diff --git a/Contabilidad/RegPrePolizaS.aspx.vb b/Contabilidad/RegPrePolizaS.aspx.vb index 7046abfe8..b0404e0a8 100644 --- a/Contabilidad/RegPrePolizaS.aspx.vb +++ b/Contabilidad/RegPrePolizaS.aspx.vb @@ -2468,8 +2468,16 @@ Partial Class ContabilidadC_RegPrePolizaS + + End If + If Row("Abono").ToString.ToDecimal > 0 And Row("Cargo").ToString.ToDecimal > 0 Then + Alert($"Se detecto un error en el registro {ContadorRegistros}, se tiene un valor en cargo({Row("Cargo").ToString.ToDecimal.ToString("###,###,###.00")}) y abono({Row("Abono").ToString.ToDecimal.ToString("###,###,###.00")})", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + If CveConceptoContable = 30 AndAlso Row("TipoTransferencia").ToString = "" Then Alert($" El registro {ContadorRegistros} es movimiento bancario y no se especifica el tipo de transferencia , importe: {ImporteDocumento.ToString("###,###,###.00")}", TipoMensaje.MsgAdvertencia) @@ -2539,6 +2547,8 @@ Partial Class ContabilidadC_RegPrePolizaS Next + + TxtTotalCargos.Text = DtMovimientos.SUMD("Cargo").ToString.FormatoNumero TxtTotalAbonos.Text = DtMovimientos.SUMD("Abono").ToString.FormatoNumero diff --git a/Empresas/119/Formatos/RepIVAAcreditable.rpt b/Empresas/119/Formatos/RepIVAAcreditable.rpt index cad593981..5caea88e1 100644 Binary files a/Empresas/119/Formatos/RepIVAAcreditable.rpt and b/Empresas/119/Formatos/RepIVAAcreditable.rpt differ diff --git a/Empresas/Grales/Formatos/RepIVAAcreditable.rpt b/Empresas/Grales/Formatos/RepIVAAcreditable.rpt index 5d6ac0536..5d1de1b2f 100644 Binary files a/Empresas/Grales/Formatos/RepIVAAcreditable.rpt and b/Empresas/Grales/Formatos/RepIVAAcreditable.rpt differ diff --git a/Empresas/Grales/Formatos/RepIVAAcreditable2.rpt b/Empresas/Grales/Formatos/RepIVAAcreditable2.rpt index 33b2abbc9..1101f58c1 100644 Binary files a/Empresas/Grales/Formatos/RepIVAAcreditable2.rpt and b/Empresas/Grales/Formatos/RepIVAAcreditable2.rpt differ diff --git a/Inventarios/RecepcionAlmacen.aspx.vb b/Inventarios/RecepcionAlmacen.aspx.vb index 5719ca0ec..fbdf9185a 100644 --- a/Inventarios/RecepcionAlmacen.aspx.vb +++ b/Inventarios/RecepcionAlmacen.aspx.vb @@ -841,10 +841,10 @@ Partial Class Inventarios_RecepcionAlmacen If e.Row.DBCampo("TipoDocto").ToString.Contiene({"Fac"}) And e.Row.DBCampo("EstatusAlmacen").ToString.ToEntero = 0 Then e.Row.FCLinkButton("BtnSurtir").CssClass = "btn btn-primary input-sm" - e.Row.FCLinkButton("BtnSurtir").Text = " Recibir" + e.Row.FCLinkButton("BtnSurtir").Text = " Recibir" Else e.Row.FCLinkButton("BtnSurtir").CssClass = "btn yellow-gold input-sm" - e.Row.FCLinkButton("BtnSurtir").Text = " Devolver " + e.Row.FCLinkButton("BtnSurtir").Text = " Devolver " End If If UsuarioActual.TienePermisoProceso(201) Then @@ -1773,6 +1773,8 @@ Partial Class Inventarios_RecepcionAlmacen Dim DtSeriesNuevas As New DataTable DtSeriesNuevas.Columns.Add("Serie", GetType(String)) + 'If CvePSS > 0 And CvePSSerie = 0 Then CvePSSerie = CvePSS + 'PARA VALIDAR SI LA SERIE ES IGUAL AL CODIGO O CODIGOBARRAS Dim dr As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerie).FiltroPrimero("", "PS") @@ -1812,48 +1814,52 @@ Partial Class Inventarios_RecepcionAlmacen Dim Index = 0 For Each Serie In SeriesArreglo - Dim Row = DtDatosDetalle.NewRow + If Serie <> "" Then - Index = Index + 1 - If Index > LbCantidad.Text.ToEntero Then - Exit For - End If - 'VALIDA QUE SIGA AGREGANDO - If Not DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerie)).Rows.Count < LbCantidad.Text.ToEntero Then - Exit For - End If + Dim Row = DtDatosDetalle.NewRow - 'VERIFICA EXISTENCIAS - If TipoMovimiento > 1 Then - Dim Existencia = ObjInventarios.GetExistenciasPS(CvePSSerie, CveUMSerie, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), Serie:=Serie) - If Existencia < 1 Then - MensajeSinExistencias.Append($"Serie: {Serie}.
") - Continue For + Index = Index + 1 + If Index > LbCantidad.Text.ToEntero Then + Exit For End If - If TipoMovimiento = 2 Then - If DtExistencias.SUM("Existencia", $"Serie = '{Serie}'") = 0 Then + 'VALIDA QUE SIGA AGREGANDO + If Not DtDatosDetalle.FiltraParametros(String.Format("ConsecId = {0}", CveConsecSerie)).Rows.Count < LbCantidad.Text.ToEntero Then + Exit For + End If + + 'VERIFICA EXISTENCIAS + If TipoMovimiento > 1 Then + Dim Existencia = ObjInventarios.GetExistenciasPS(CvePSSerie, CveUMSerie, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), Serie:=Serie) + If Existencia < 1 Then MensajeSinExistencias.Append($"Serie: {Serie}.
") Continue For End If + + If TipoMovimiento = 2 Then + If DtExistencias.SUM("Existencia", $"Serie = '{Serie}'") = 0 Then + MensajeSinExistencias.Append($"Serie: {Serie}.
") + Continue For + End If + End If End If + + 'Dim AplicaCaducidad = False + 'If GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerie).FiltraParametros("").Rows(0) IsNot Nothing Then + ' AplicaCaducidad = If(GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerie).FiltraParametros("").Rows(0)("AplicaCaducidad").ToString = "True", True, False) + 'End If + + Row("ConsecId") = CveConsecSerie + Row("Consec") = DtDatosDetalle.Rows.Count + 1 + Row("CvePS") = CvePSSerie + Row("CveUM") = CveUMSerie + Row("PU") = PUSerie + Row("Serie") = Serie + Row("FechaCaducidad") = MinFecha.ToShortDateString + + DtDatosDetalle.Rows.Add(Row) End If - - 'Dim AplicaCaducidad = False - 'If GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerie).FiltraParametros("").Rows(0) IsNot Nothing Then - ' AplicaCaducidad = If(GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSSerie).FiltraParametros("").Rows(0)("AplicaCaducidad").ToString = "True", True, False) - 'End If - - Row("ConsecId") = CveConsecSerie - Row("Consec") = DtDatosDetalle.Rows.Count + 1 - Row("CvePS") = CvePSSerie - Row("CveUM") = CveUMSerie - Row("PU") = PUSerie - Row("Serie") = Serie - Row("FechaCaducidad") = MinFecha.ToShortDateString - - DtDatosDetalle.Rows.Add(Row) Next ObjInventarios.Dispose() @@ -4841,14 +4847,6 @@ Partial Class Inventarios_RecepcionAlmacen Alert("El nombre de la cuarta columna debe ser 'Serie'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub End If - 'If Not dt.Columns(4).ColumnName = "Lote" Then - ' Alert("El nombre de la cuarta columna debe ser 'Lote'. Favor de corregirlo", TipoMensaje.MsgError) - ' Exit Sub - 'End If - 'If Not dt.Columns(5).ColumnName = "FechaCaducidad" Then - ' Alert("El nombre de la cuarta columna debe ser 'Fecha Caducidad'. Favor de corregirlo", TipoMensaje.MsgError) - ' Exit Sub - 'End If dt.TableName = "Datos" @@ -4871,12 +4869,15 @@ Partial Class Inventarios_RecepcionAlmacen Dim CveProducto As Integer = RowPS("CvePS").ToString().ToEntero() Dim CveUnidadMedida As Integer = RowPS("CveUM").ToString().ToEntero() + CvePSSerie = CveProducto + CveConsecSerie = DtInv.FiltroPrimeroValor("Consec", "CvePS=" & CvePSSerie).ToEntero Dim Cantidad As Double = RowExcel("Cantidad").ToString().ToDecimal() Dim Serie As String = RowExcel("Serie").ToString() Dim Lote As String = "" '= RowExcel("Lote").ToString() Dim FechaCaducidad As Date = MinFecha '= If(RowExcel("FechaCaducidad").ToString = "", MinFecha, RowExcel("FechaCaducidad").ToString.ToDate) Dim Observaciones As String = "" '= If(dt.Columns.Contains("Observaciones"), RowExcel("Observaciones").ToString, "").ToString + LbCantidad.Text = Cantidad.ToString Dim Valido As Boolean = True diff --git a/Inventarios/RecepcionUsados.aspx.vb b/Inventarios/RecepcionUsados.aspx.vb index 668f6b8b2..a0f2533fa 100644 --- a/Inventarios/RecepcionUsados.aspx.vb +++ b/Inventarios/RecepcionUsados.aspx.vb @@ -589,6 +589,7 @@ Partial Class Inventarios_RecepcionUsados dt.Columns.Add("TotalExtranjero", Type.GetType("System.Double")) dt.Columns.Add("CveTamaño", Type.GetType("System.Int32")) dt.Columns.Add("Tamaño", Type.GetType("System.String")) + dt.Columns.Add("CveVentaDetalle", Type.GetType("System.Int32")) CargaGVM(dt) DtMovimientos = dt.Clone @@ -1048,7 +1049,8 @@ Partial Class Inventarios_RecepcionUsados Protected Sub AddNew(CvePS As Integer, PS As String, CveUM As Integer, UM As String, Cantidad As Double, PU As Double, Serie As String, CodigoAF As String, Codigo As String, - CveAF As String, Observaciones As String, Lote As String, CveSeccionAlmacen As Integer, SeccionAlmacen As String, Tamaño As String, CveTamaño As Integer) + CveAF As String, Observaciones As String, Lote As String, CveSeccionAlmacen As Integer, SeccionAlmacen As String, Tamaño As String, CveTamaño As Integer, + Optional CveVentaDetalle As Integer = -1) 'If DdlAlmacen.SelectedValue.ToEntero <= 0 Then Alert("Seleccione un almacen", TipoMensaje.MsgAdvertencia) : RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") : DdlProducto2.SelectedText = "" : Exit Sub @@ -1116,6 +1118,7 @@ Partial Class Inventarios_RecepcionUsados registro.Item("CveTamaño") = CveTamaño registro.Item("Tamaño") = Tamaño + registro.Item("CveVentaDetalle") = CveVentaDetalle DtMovimientos.Rows.Add(registro) CargaGVM(DtMovimientos.FiltraParametros("Estatus <> 'E' ")) @@ -1281,7 +1284,7 @@ Partial Class Inventarios_RecepcionUsados ImporteConcepto = Dr("PU").ToString.ToDecimal End If - If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, ImporteConcepto, CveAF:=Dr("CveAF").ToString.ToEntero, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, Observaciones:=Dr("Observaciones").ToString, CveUsuarioModifico:=UsuarioActual.CveUsuario) Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimiento, Dr("Cantidad").ToString.ToDouble, Dr("CveUM").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, ImporteConcepto, CveAF:=Dr("CveAF").ToString.ToEntero, Serie:=Dr("Serie").ToString, Lote:=Dr("Lote").ToString, FechaCaducidad:=Dr("FechaCaducidad").ToString.ToDate, Observaciones:=Dr("Observaciones").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString().ToEntero(), CveUsuarioModifico:=UsuarioActual.CveUsuario) Then Mensaje = "Error al guardar los movimientos" ErrorMovInv = True Exit For @@ -2269,6 +2272,18 @@ Partial Class Inventarios_RecepcionUsados DtUsados = ObjVentas.DtResultados.Copy() End If + 'RELACIONA LA VENTA DETALLA DE LA REMISION + If DtUsados IsNot Nothing Then + DtUsados.Columns.Add(New DataColumn("CveVentaDetalle", GetType(Integer))) + For Each RowUsado As DataRow In DtUsados.Rows + Dim CveVentaDetalle As Integer = Me.ObjFactura.DtDetalle.FiltroPrimeroValor("CveVentaDetalle", $"EsCargo = 1 AND Cantidad = {RowUsado("Cantidad")} AND CvePS = {RowUsado("CvePS")}").ToEntero() + If CveVentaDetalle > 0 Then + RowUsado("CveVentaDetalle") = CveVentaDetalle + End If + Next + + End If + Dim RecepcionValida As Boolean = True If ObjVentas.GetVentasUsados(ObjFactura.CveVenta, ObjFactura.CveSubProyecto, ObjFactura.Fecha, UsuarioActual.CveEmpresa, ServicioDomicilio:=ObjFactura.ServicioDomicilio) Then @@ -2334,7 +2349,9 @@ Partial Class Inventarios_RecepcionUsados Dim Cantidad As Double = RowUsado("Cantidad").ToString().ToEntero() Dim PU As Double = RowUsado("PU").ToString().ToDouble() - AddNew(CvePS, PS, CveUM, UM, Cantidad, PU, "", "-1", "-1", "-1", "", "", DdlAlmacen.SelectedValue.ToEntero, DdlAlmacen.SelectedItem.Text, "", CveTamaño) + Dim CveVentaDetalle = RowUsado("CveVentaDetalle").ToString().ToEntero() + + AddNew(CvePS, PS, CveUM, UM, Cantidad, PU, "", "-1", "-1", "-1", "", "", DdlAlmacen.SelectedValue.ToEntero, DdlAlmacen.SelectedItem.Text, "", CveTamaño, CveVentaDetalle:=CveVentaDetalle) Next End If diff --git a/Inventarios/RepAlmacen.aspx b/Inventarios/RepAlmacen.aspx index f9839c246..b470d529a 100644 --- a/Inventarios/RepAlmacen.aspx +++ b/Inventarios/RepAlmacen.aspx @@ -163,7 +163,7 @@ - <%# Eval("Almacen") %> + <%# Eval("Almacen") %> diff --git a/Inventarios/RepEntradasSalidas.aspx.vb b/Inventarios/RepEntradasSalidas.aspx.vb index 33a3b9bc3..ac06dd2ab 100644 --- a/Inventarios/RepEntradasSalidas.aspx.vb +++ b/Inventarios/RepEntradasSalidas.aspx.vb @@ -54,6 +54,9 @@ Partial Class Inventarios_ReporteEntradasSalidas Return (UsuarioActual.CveEmpresa.Contiene(72, 80)) End Get End Property + + + #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load @@ -82,6 +85,10 @@ Partial Class Inventarios_ReporteEntradasSalidas TxtFechaI.Text = Request("FechaInicio") End If + If Not IsNothing(Request("Tipo")) Then + DdlMovs.SelectedValueExist(Request("Tipo").ToEntero) + End If + btConsultar_Click(Nothing, Nothing) End If CargaPermisos() diff --git a/Inventarios/TraspasoAlmacen.aspx.vb b/Inventarios/TraspasoAlmacen.aspx.vb index 93b8d5dc5..b79f29538 100644 --- a/Inventarios/TraspasoAlmacen.aspx.vb +++ b/Inventarios/TraspasoAlmacen.aspx.vb @@ -855,6 +855,16 @@ Partial Class Inventarios_TraspasoAlmacen If ChkTransitorio.Checked Then DivResponsable.Visible = True : DivTransitorio2.Visible = True Exit Sub End If + + ''validaciones de carta porte en productos + If ChkEmitirTimbrado.Checked AndAlso ChkEmitirCartaPorte.Checked Then + ' Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimero("") + 'If Not ValidaPSSAT(DrPS) Then + ' Exit Sub + 'End If + End If + + End If Dim DrAlmO, DrAlmD As DataRow @@ -1729,6 +1739,7 @@ Partial Class Inventarios_TraspasoAlmacen DivTransitorio2.Visible = True If UsuarioActual.CveEmpresa.Contiene(119, 140) Then ChkEmitirTimbrado.Checked = True + ChkEmitirCartaPorte.Checked = True End If Else RegistraScript(" $('#DivGastoIndirecto').hide(500);") @@ -1736,6 +1747,7 @@ Partial Class Inventarios_TraspasoAlmacen DivTransitorio2.Visible = True DivEmitirTransitorio.Visible = False ChkEmitirTimbrado.Checked = False + ChkEmitirCartaPorte.Checked = True End If UpEmitirTransitorio.Update() CargaAlmacenDestino() @@ -3145,7 +3157,7 @@ Partial Class Inventarios_TraspasoAlmacen Protected Sub ChkEmitirTimbrado_CheckedChanged(sender As Object, e As EventArgs) If ChkEmitirTimbrado.Checked Then - ChkEmitirCartaPorte.Checked = False + ChkEmitirCartaPorte.Checked = True ChkEmitirCartaPorte.Visible = True Else ChkEmitirCartaPorte.Visible = False diff --git a/Ventas/Clientes.aspx b/Ventas/Clientes.aspx index 1a6e0e97f..3f7fde58b 100644 --- a/Ventas/Clientes.aspx +++ b/Ventas/Clientes.aspx @@ -6158,7 +6158,7 @@ - +
@@ -6226,7 +6226,7 @@ <%--table table-striped table-advance table-hover Widthall ScrollAD tabla_correcto grides Widthall mysmallbtn--%> - + @@ -6310,8 +6310,8 @@ - - + + @@ -6327,7 +6327,7 @@
@@ -6365,7 +6365,7 @@ Aplicado - +
@@ -6458,7 +6458,7 @@
diff --git a/Ventas/Clientes.aspx.vb b/Ventas/Clientes.aspx.vb index 9daf8def2..a0207adfd 100644 --- a/Ventas/Clientes.aspx.vb +++ b/Ventas/Clientes.aspx.vb @@ -1449,15 +1449,26 @@ Partial Class Clientes ' CargaGridRetenciones() ' CargaDocs() CargaCombos() - CargaDocumentacionCliente() - 'CargaMetodosPago33() - 'CargaFormaPago33() - 'CargaComboCFDI() - 'CargarPagosNoBancarios() - - If UsuarioActual.TienePermisoProceso(279) Then + CargaDocumentacionCliente() + 'CargaMetodosPago33() + 'CargaFormaPago33() + 'CargaComboCFDI() + 'CargarPagosNoBancarios() + + + + If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then LnkPorcentajeMarcas.Visible = True - LnkPorcentajePrecios.Visible = True + LnkPorcentajePrecios.Visible = True + + If UsuarioActual.TienePermisoProceso(279) Then + TrPreciosPP.Visible = True + TrAgregarPMarca.Visible = True + + BtnGuardarPorcentajesMarca.Visible = True + BtnGuardarPorcentajes.Visible = True + End If + End If @@ -1474,9 +1485,9 @@ Partial Class Clientes If ObjClientes.Pais = "" Then ObjClientes.Pais = "México" - If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso CveCliente > 0 Then - LnkAgregarVendedorSucursal.Visible = True - End If + 'If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso CveCliente > 0 Then + ' LnkAgregarVendedorSucursal.Visible = True + 'End If 'Campos para Modificación LtlCliente.Text = ObjClientes.Nombre @@ -1517,7 +1528,20 @@ Partial Class Clientes LblFechaCaptura.Text = ObjClientes.FechaIng.ToShortDateString() LblUsuarioCapturo.Text = ObjClientes.Usuario TxtNombreCorto.Text = ObjClientes.NombreCorto - DdlVendedor.SelectedValueExist(ObjClientes.Vendedor.ToString()) + + Dim CveVendedor = ObjClientes.Vendedor.ToEntero() + 'SI YA TIENE UN VALOR ASIGNADO SELECCIONA EL GUARDADO + If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then + Dim Vendedor = GlobalDTVendedores(UsuarioActual.CveEmpresa, VendedorTipo:=1).FiltroPrimeroValor("Vendedor", String.Format("CveVendedor = {0}", CveVendedor)) + 'SI NO ENCUENTRA BUSCA EN LOS VENDEDORES DEL PV + If String.IsNullOrEmpty(Vendedor) Then + Vendedor = GlobalDTVendedores(UsuarioActual.CveEmpresa, VendedorTipo:=4).FiltroPrimeroValor("Vendedor", String.Format("CveVendedor = {0}", CveVendedor)) + End If + DdlVendedor.SelectedValueExistInsert(CveVendedor, Vendedor) + Else + DdlVendedor.SelectedValueExist(CveVendedor) + End If + 'TxtVendedor.Text = ObjClientes.Vendedor TxtPlazoCobranza.Text = ObjClientes.PlazoCobranza.ToString() TxtPlazoCobranzaRemision.Text = ObjClientes.PlazoCobranzaRemision.ToString() @@ -8948,8 +8972,28 @@ Partial Class Clientes CargaDTPorcentajePrecios(DTPorcentajePrecios.FiltraParametros("Estatus <> 'D' ")) + End Sub + Protected Sub GvM_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvM.RowDataBound + If e.Row.RowType = DataControlRowType.DataRow Then + + If UsuarioActual.TienePermisoProceso(279) Then + e.Row.FCLinkButton("imgE").Visible = True + e.Row.FCLinkButton("lnkRemove").Visible = True + End If + + End If + End Sub + + Protected Sub GvP_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvP.RowDataBound + If e.Row.RowType = DataControlRowType.DataRow Then + + If UsuarioActual.TienePermisoProceso(279) Then + e.Row.FCLinkButton("imgE").Visible = True + e.Row.FCLinkButton("lnkRemove").Visible = True + End If + + End If End Sub - Protected Sub GvM_RowEditing(sender As Object, e As GridViewEditEventArgs) Handles GvM.RowEditing GvM.EditIndex = e.NewEditIndex @@ -10422,6 +10466,7 @@ Partial Class Clientes Alert("Los cambios se guardaron satisfactoriamente.") End Using - End Sub + End Sub + End Class diff --git a/Ventas/PV.aspx.vb b/Ventas/PV.aspx.vb index 8d4cb3db8..ed0629450 100644 --- a/Ventas/PV.aspx.vb +++ b/Ventas/PV.aspx.vb @@ -1560,7 +1560,7 @@ Partial Class PV End If DdlSubProyectoDatos.SelectedValueExistInsert(DbRowVenta("CveSubProyecto").ToString, DbRowVenta("SubProyecto").ToString) CargarAlmacenes() - + CargaFoliosGarantia() CargaClienteSucursal(DbRowVenta("CveClienteSucursal").ToString.ToEntero) @@ -2042,13 +2042,12 @@ Partial Class PV End If - 'GUARDA USADOS - If Not OcurrioError AndAlso Not ObjVentas.EliminarUsados(CveVenta) Then - OcurrioError = True - End If + If Not OcurrioError AndAlso TmpDTRecepcionUsados IsNot Nothing AndAlso TmpDTRecepcionUsados.Rows.Count > 0 Then + If Not OcurrioError AndAlso Not ObjVentas.EliminarUsados(CveVenta) Then + OcurrioError = True + End If - If Not OcurrioError AndAlso TmpDTRecepcionUsados IsNot Nothing Then For Each drow As DataRow In TmpDTRecepcionUsados.Rows If Not ObjVentas.AddVentaUsado(CveVenta, drow("CvePS").ToString.ToEntero, drow("Cantidad").ToString.ToDecimal, drow("PU").ToString.ToDecimal, drow("CveBCIUsado").ToString.ToEntero, drow("CveModeloAuto").ToString.ToEntero) Then OcurrioError = True @@ -2057,12 +2056,12 @@ Partial Class PV Next End If - 'GUARDAR AJUSTES' - If Not OcurrioError AndAlso Not ObjAcum.EliminarGarantiasDetalle(CveVenta) Then - OcurrioError = True - End If - + 'GUARDAR AJUSTES If Not OcurrioError AndAlso TmpDTAjustes IsNot Nothing AndAlso TmpDTAjustes.Rows.Count > 0 Then + If Not OcurrioError AndAlso Not ObjAcum.EliminarGarantiasDetalle(CveVenta) Then + OcurrioError = True + End If + For Each Dr As DataRow In TmpDTAjustes.Rows If Not ObjAcum.AddGarantiasDetalle(Dr("CveVentaDetalle").ToString.ToEntero, Dr("CvePS").ToString.ToEntero, Dr("CveFolioGarantia").ToString.ToEntero, Dr("CveTipoUso").ToString.ToEntero, Dr("CodigoEnsamble").ToString, Dr("CodigoLinea").ToString, Dr("CodigoInspeccion").ToString, Dr("CveTipoDefecto").ToString.ToEntero, Dr("CodigoTD").ToString, Dr("TipoComprobante").ToString.ToEntero, @@ -2075,11 +2074,12 @@ Partial Class PV End If 'GUARDAR POLIZA VIRTUAL - If Not OcurrioError AndAlso Not ObjAcum.EliminarPolizaVirtual(CveVenta) Then - OcurrioError = True - End If + If Not OcurrioError AndAlso TmpDTPolizaVirtual IsNot Nothing AndAlso TmpDTPolizaVirtual.Rows.Count > 0 Then + + If Not OcurrioError AndAlso Not ObjAcum.EliminarPolizaVirtual(CveVenta) Then + OcurrioError = True + End If - If Not OcurrioError AndAlso TmpDTPolizaVirtual IsNot Nothing Then For Each drow As DataRow In TmpDTPolizaVirtual.Rows If ObjAcum.AddPolizaVirtual(CveVenta, drow("CveVentaDetalle").ToString().ToEntero(), drow("CvePS").ToString.ToEntero, drow("Cantidad").ToString.ToDecimal, drow("PU").ToString.ToDecimal, drow("Descuento").ToString.ToDecimal, drow("Total").ToString.ToDecimal, drow("TipoServicio").ToString.ToEntero, drow("TipoPoliza").ToString.ToEntero, drow("CveModeloAuto").ToString.ToEntero, drow("AnioVehiculo").ToString.ToEntero, CBool(drow("TieneUsado").ToString), @@ -2711,6 +2711,8 @@ Partial Class PV UpParametros.Update() End If + CargaFoliosGarantia() + If ObjCliente.GetSucursales(CveCliente) Then DdlSucursalCliente.DataSource = ObjCliente.DtResultados If ObjCliente.DtResultados.Rows.Count > 0 Then @@ -3000,7 +3002,7 @@ Partial Class PV 'SELECCIONA VENDEDOR DEL USUARIO CUANDO SEA VENTA NUEVA Y SIN CLIENTE If UsuarioActual.CveVendedor > 0 Then If CveVenta <= 0 AndAlso Not DdlVendedor.SelectedValue.ToEntero() > 0 Then DdlVendedor.SelectedValueExist(UsuarioActual.CveVendedor.ToString()) - If DdlVendedor.SelectedValue.ToEntero() > 0 AndAlso Not UsuarioActual.TienePermisoProceso(161) Then + If Not UsuarioActual.TienePermisoProceso(161) Then DdlVendedor.Enabled = False End If 'multiples vendedores visible @@ -4395,11 +4397,17 @@ Partial Class PV End Sub Private Sub DdlSubProyectoDatos_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlSubProyectoDatos.SelectedIndexChanged CambiaSucursalGeneral() + CargaFoliosGarantia() + UpAjuste.Update() + UpModalVenta.Update() + End Sub + + Private Sub CargaFoliosGarantia() If UsuarioActual.Empresa.Funcionalidad(531).ToString = "1" Then Dim ObjAcum As New ClsAcumuladores - If ObjAcum.FoliosGarantiaGet(-1, UsuarioActual.CveEmpresa, Estatus:=1, Area:=1) Then - DdlFolioGarantia.DataSource = ObjAcum.DtResultados.FiltraParametros($"CveSubProyecto={DdlSubProyectoDatos.SelectedValue}") + If ObjAcum.FoliosGarantiaGet(-1, UsuarioActual.CveEmpresa, Estatus:=1, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero(), Area:=1) Then + DdlFolioGarantia.DataSource = ObjAcum.DtResultados End If ObjAcum.Dispose() DdlFolioGarantia.DataBind() @@ -7045,6 +7053,7 @@ Partial Class PV DdlBCIAjuste.Items.Clear() If DTBCIUsados IsNot Nothing AndAlso CveTamanio > 0 Then + DdlBCIAjuste.SelectedValue = Nothing DdlBCIAjuste.DataSource = DTBCIUsados.FiltraParametros($"CveTamaño={CveTamanio}") DdlBCIAjuste.DataBind() DdlBCIAjuste.Items.Insert(0, New ListItem("Seleccione", "-1")) @@ -7295,7 +7304,7 @@ Partial Class PV Protected Sub ChkAjuste_CheckedChanged(sender As Object, e As EventArgs) If ChkAjuste.Checked Then - + CargaFoliosGarantia() 'For Each Gvr As GridViewRow In GvRecepcionUsados.Rows ' If Gvr.RowType = DataControlRowType.DataRow Then ' Gvr.FCTextBox("TxtCantidad").Text = "" diff --git a/Ventas/RepCancelacionesPorRespuesta.aspx.cs b/Ventas/RepCancelacionesPorRespuesta.aspx.cs index 8672f7241..4b60fe73a 100644 --- a/Ventas/RepCancelacionesPorRespuesta.aspx.cs +++ b/Ventas/RepCancelacionesPorRespuesta.aspx.cs @@ -406,7 +406,15 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas { factura.CveEstatusRefacturacion = CveEstatusRefacturacion; } - retorno = factura.CancelarPorRefacturacion(factura.CveMotivoCancelacion, factura.MotivoCancelacion, FolioSustitucion: FolioSustitucion); + + int CveEstatusFactura = -1; + //SI LA FACTURA YA ESTA CANCELADA, LA ASIGNA YA COMO CANCELADA + if (CveEstatus == 5) + { + CveEstatusFactura = CveEstatus; + } + + retorno = factura.CancelarPorRefacturacion(factura.CveMotivoCancelacion, factura.MotivoCancelacion, FolioSustitucion: FolioSustitucion, CveEstatusFacturaAsignado: CveEstatusFactura); } else { diff --git a/Ventas/Ventas.aspx b/Ventas/Ventas.aspx index d5e3c7e8b..3db0a9422 100644 --- a/Ventas/Ventas.aspx +++ b/Ventas/Ventas.aspx @@ -619,7 +619,7 @@ Factura: - + @@ -679,7 +679,7 @@ - + diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 368aaca72..0059f9a58 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -1930,6 +1930,31 @@ Partial Class Ventas ViewState("CveVendedorCliente") = value End Set End Property + Private Property CveVendedorClienteSucursal As Integer + Get + Return If(IsNothing(ViewState("CveVendedorClienteSucursal")), -1, ViewState("CveVendedorClienteSucursal")).ToString().ToEntero + End Get + Set(value As Integer) + ViewState("CveVendedorClienteSucursal") = value + End Set + End Property + + Private Property CveVendedorContrato As Integer + Get + Return If(IsNothing(ViewState("CveVendedorContrato")), -1, ViewState("CveVendedorContrato")).ToString().ToEntero + End Get + Set(value As Integer) + ViewState("CveVendedorContrato") = value + End Set + End Property + Private Property CveVendedorEmpresaCRM As Integer + Get + Return If(IsNothing(ViewState("CveVendedorEmpresaCRM")), -1, ViewState("CveVendedorEmpresaCRM")).ToString().ToEntero + End Get + Set(value As Integer) + ViewState("CveVendedorEmpresaCRM") = value + End Set + End Property Private Property DiasCredito As Integer Get Return ViewState("DiasCredito").ToString().ToEntero() @@ -2203,6 +2228,9 @@ Partial Class Ventas ViewState("CvePrecioListaCliente") = 0 Me.CveVendedorVenta = -1 Me.CveVendedorCliente = -1 + Me.CveVendedorClienteSucursal = -1 + Me.CveVendedorContrato = -1 + Me.CveVendedorEmpresaCRM = -1 Me.EsGarantia = False idCuentaContabilizacion = 1 CveEmpresaCRM = 0 @@ -2883,16 +2911,16 @@ Partial Class Ventas If CveVenta < 1 Then CargaFolios() 'SELECCIONA VENDEDOR DEL USUARIO CUANDO SEA VENTA NUEVA Y SIN CLIENTE - If UsuarioActual.CveVendedor > 0 Then - If CveVenta = -1 AndAlso Not DdlVendedor.SelectedValue.ToEntero() > 0 Then DdlVendedor.SelectedValueExist(UsuarioActual.CveVendedor.ToString()) - If DdlVendedor.SelectedValue.ToEntero() > 0 AndAlso Not UsuarioActual.TienePermisoProceso(161) Then - DdlVendedor.Enabled = False - End If - 'multiples vendedores visible - If UsuarioActual.TienePermisoProceso(153) Then - DdlVendedor.Enabled = True - End If - End If + 'If UsuarioActual.CveVendedor > 0 Then + ' If CveVenta = -1 AndAlso Not DdlVendedor.SelectedValue.ToEntero() > 0 Then DdlVendedor.SelectedValueExist(UsuarioActual.CveVendedor.ToString()) + ' If DdlVendedor.SelectedValue.ToEntero() > 0 AndAlso Not UsuarioActual.TienePermisoProceso(161) Then + ' DdlVendedor.Enabled = False + ' End If + ' 'multiples vendedores visible + ' If UsuarioActual.TienePermisoProceso(153) Then + ' DdlVendedor.Enabled = True + ' End If + 'End If If UsuarioActual.Empresa.Funcionalidad(301).ToEntero() > 0 Then TxtFecha.Enabled = False @@ -3632,6 +3660,8 @@ Partial Class Ventas NumeroContrato = DrContrato("NumeroContrato").ToString() DescripcionContrato = DrContrato("DescripcionContrato").ToString() NumeroLicitacion = DrContrato("NumeroLicitacion").ToString().Trim + + Me.CveVendedorContrato = DrContrato("CveVendedor").ToString().ToEntero() DdlVendedor.SelectedValueExist(DrContrato("CveVendedor")) If DrContrato("CveSucursalCliente").ToString().ToEntero() > 0 Then @@ -4702,14 +4732,14 @@ Partial Class Ventas Me.CveVendedorVenta = DbRowVenta("CveVendedor").ToString().ToEntero() 'SI YA TIENE UN VALOR ASIGNADO SELECCIONA EL GUARDADO - If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso Me.CveVenta > 0 AndAlso Me.CveVendedorVenta > 0 Then - Dim Vendedor = GlobalDTVendedores(UsuarioActual.CveEmpresa, VendedorTipo:=1).FiltroPrimeroValor("Vendedor", String.Format("CveVendedor = {0}", Me.CveVendedorVenta)) - 'SI NO ENCUENTRA BUSCA EN LOS VENDEDORES DEL PV - If String.IsNullOrEmpty(Vendedor) Then - Vendedor = GlobalDTVendedores(UsuarioActual.CveEmpresa, VendedorTipo:=4).FiltroPrimeroValor("Vendedor", String.Format("CveVendedor = {0}", Me.CveVendedorVenta)) - End If - DdlVendedor.SelectedValueExistInsert(Me.CveVendedorVenta, Vendedor) - End If + 'If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso Me.CveVenta > 0 AndAlso Me.CveVendedorVenta > 0 Then + ' Dim Vendedor = GlobalDTVendedores(UsuarioActual.CveEmpresa, VendedorTipo:=1).FiltroPrimeroValor("Vendedor", String.Format("CveVendedor = {0}", Me.CveVendedorVenta)) + ' 'SI NO ENCUENTRA BUSCA EN LOS VENDEDORES DEL PV + ' If String.IsNullOrEmpty(Vendedor) Then + ' Vendedor = GlobalDTVendedores(UsuarioActual.CveEmpresa, VendedorTipo:=4).FiltroPrimeroValor("Vendedor", String.Format("CveVendedor = {0}", Me.CveVendedorVenta)) + ' End If + ' DdlVendedor.SelectedValueExistInsert(Me.CveVendedorVenta, Vendedor) + 'End If If DdlFormaPago33.SelectedValue <> DbRowVenta("CveFormaPago33").ToString() And DbRowVenta("CveFormaPago33").ToString() <> "" Then 'sino está seleccionada la asginada la debe de cargar @@ -5546,6 +5576,13 @@ Partial Class Ventas 'TmpDT.Columns.Add("EntregaDirecta", GetType(Integer)) 'TmpDT.Columns.Add("CveMovimientoDetallePedido", GetType(Integer)) ''TmpDT.Columns.Add("CantidadFacturadaRem", GetType(Decimal)) + + ObjVentas.DtResultados.Columns.Add("TieneProntoPago", GetType(String)) + ObjVentas.DtResultados.Columns.Add("ImporteProntoPago", GetType(Decimal)) + + ObjVentas.DtResultados.Columns("TieneProntoPago").DefaultValue = "No" + ObjVentas.DtResultados.Columns("ImporteProntoPago").DefaultValue = 0 + GvPS.DataSource = ObjVentas.DtResultados GvPS.DataBind() End If @@ -5867,6 +5904,7 @@ Partial Class Ventas UpEmpresaCRM.Visible = True End If + Me.CveVendedorEmpresaCRM = ObjCRM.DtResultados.Rows(0)("CveVendedorAsignado").ToString().ToEntero() DdlVendedor.SelectedValueExist(ObjCRM.DtResultados.Rows(0)("CveVendedorAsignado").ToString()) DdlVendedor.Enabled = False @@ -6137,18 +6175,18 @@ Partial Class Ventas TxtFordGSDB.Text = ObjCliente.Ford_GSDB If ObjCliente.DtResultados(0)("CveVendedor").ToString().ToEntero() > 0 Then - DdlVendedor.SelectedValueExist(ObjCliente.DtResultados(0)("CveVendedor").ToString().ToEntero()) CveVendedorCliente = ObjCliente.DtResultados(0)("CveVendedor").ToString().ToEntero() End If 'SI EL CLIENTE NO TIENE VENDEDOR SELECCIONAMOS EL DEL USUARIO - If Not DdlVendedor.SelectedValue.ToEntero() > 0 Then - DdlVendedor.SelectedValueExist(UsuarioActual.CveVendedor.ToString()) - End If + 'If Not DdlVendedor.SelectedValue.ToEntero() > 0 Then + ' DdlVendedor.SelectedValueExist(UsuarioActual.CveVendedor.ToString()) + 'End If - If DdlVendedor.SelectedValue.ToEntero() > 0 AndAlso Not UsuarioActual.TienePermisoProceso(161) Then - DdlVendedor.Enabled = False - End If + 'If DdlVendedor.SelectedValue.ToEntero() > 0 AndAlso Not UsuarioActual.TienePermisoProceso(161) Then + ' DdlVendedor.Enabled = False + 'End If + CargaVendedores() UpFacturar.Update() @@ -6370,10 +6408,6 @@ Partial Class Ventas End If BloqueaCondiconesPago() DeshabilitarAplicarNotaDeCredito(LblRFC.Text) - - If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then - CargaVendedoresSubProyectos() - End If End Sub Private Sub CargaRelacionadasPendientes() @@ -6946,7 +6980,7 @@ Partial Class Ventas ViewState("CliPais") = ObjCliente.DtResultados.Rows(0)("Pais").ToString() ViewState("CliNoExt") = ObjCliente.DtResultados.Rows(0)("NoExt").ToString() ViewState("CliNoInt") = ObjCliente.DtResultados.Rows(0)("NoInt").ToString() - DdlVendedor.SelectedValueExist(ObjCliente.DtResultados.Rows(0)("CveVendedor").ToString()) + Me.CveVendedorClienteSucursal = ObjCliente.DtResultados.Rows(0)("CveVendedor").ToString().ToEntero() ViewState("CveClienteSucursal") = ObjCliente.DtResultados(0)("CveClienteSucursal").ToString() ViewState("CliCorreoCot") = ObjCliente.DtResultados.Rows(0)("CorreoCotizacion").ToString() @@ -7014,7 +7048,8 @@ Partial Class Ventas LblEstado.Text = ObjCliente.Estado LblCP.Text = ObjCliente.CP LblTelefono.Text = ObjCliente.Telefono - DdlVendedor.SelectedValueExist(ObjCliente.DtResultados.Rows(0)("CveVendedor").ToString()) + Me.CveVendedorClienteSucursal = -1 + Me.CveVendedorCliente = ObjCliente.DtResultados.Rows(0)("CveVendedor").ToString().ToEntero() ViewState("CliNoExt") = ObjCliente.NoExt ViewState("CliNoInt") = ObjCliente.NoInt PlazoCobranza = ObjCliente.PlazoCobranza @@ -7035,10 +7070,12 @@ Partial Class Ventas End If End If - 'SI LA SUCURSAL DEL CLIENTE NO TIENE VENDEDOR SELECCIONAMOS EL DEL USUARIO - If Not DdlVendedor.SelectedValue.ToEntero() > 0 Then - DdlVendedor.SelectedValueExist(UsuarioActual.CveVendedor.ToString()) - End If + ''SI LA SUCURSAL DEL CLIENTE NO TIENE VENDEDOR SELECCIONAMOS EL DEL USUARIO + 'If Not DdlVendedor.SelectedValue.ToEntero() > 0 Then + ' DdlVendedor.SelectedValueExist(UsuarioActual.CveVendedor.ToString()) + 'End If + + CargaVendedores() 'SI LA VENTA YA ESTA REGISTRADA NO DEBE HABILITAR ACCIONES If CveVenta <= 0 Then @@ -7187,7 +7224,7 @@ Partial Class Ventas If ObjClientes.GetVenta(pCveVenta, UsuarioActual.CveEmpresa) AndAlso ObjClientes.DtResultados.Rows.Count > 0 Then DTFacNC = ObjClientes.DtResultados Dim drvv As DataRow = DTFacNC.FiltroPrimero("") - DTFacNC.Columns.Add("Factura", GetType(String), " Folio + ' - ' + Fecha + ' $' + Total") + DTFacNC.Columns.Add("Factura", GetType(String), " Folio + ' - ' +' $' + Total + ' - ' + Fecha ") HdnFolioFiscalNC.Value = drvv("FolioFiscal").ToString() If DTFacNC IsNot Nothing AndAlso DTFacNC.Rows.Count > 0 Then @@ -13634,7 +13671,7 @@ Partial Class Ventas Case 30 'PAGO - BANCOS - If DtPagos IsNot Nothing AndAlso DtPagos.Rows.Count > 0 Then + If DtPagos IsNot Nothing AndAlso DtPagos.Rows.Count > 0 AndAlso ObjFactura.TipoDocto <> "Rem" Then For Each DrPago As DataRow In DtPagos.Rows CveIEPago = -1 @@ -17004,9 +17041,7 @@ Partial Class Ventas End If ObjSubProyectos.Dispose() - If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then - CargaVendedoresSubProyectos() - End If + CargaVendedores() UpDetalle.Update() End Sub @@ -17189,43 +17224,93 @@ Partial Class Ventas UpParametros.Update() End Sub Private Sub CargaVendedores() + Dim CveVendedorActual As Integer = 0 - Dim CveVendedorActual = DdlVendedor.SelectedValue.ToEntero() - - If Not CveVendedorActual > 0 AndAlso Me.CveVendedorCliente > 0 Then - DdlVendedor.SelectedValueExist(Me.CveVendedorCliente) - CveVendedorActual = Me.CveVendedorCliente - End If + Dim EsVentaNueva As Boolean = (Me.CveVenta <= 0 OrElse Me.EsCreaApartirDe OrElse NuevaFactura = 1) DdlVendedor.Items.Clear() + DdlVendedor.SelectedValue = Nothing + + DdlVendedorSucursal.Items.Clear() + DdlVendedorSucursal.SelectedValue = Nothing + If UsuarioActual.Empresa.Funcionalidad(302) = "1" AndAlso DdlSubProyectoDatos.SelectedValue.ToEntero() > 0 Then - DdlVendedor.DataSource = GlobalDTVendedores(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveSubProyecto = {0}", DdlSubProyectoDatos.SelectedValue)).FiltraParametros("VendedorTipo = 1") + DdlVendedor.DataSource = GlobalDTVendedores(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("(CveSubProyecto IS NULL OR CveSubProyecto = {0})", DdlSubProyectoDatos.SelectedValue)).FiltraParametros("VendedorTipo = 1") Else DdlVendedor.DataSource = GlobalDTVendedores(UsuarioActual.CveEmpresa).FiltraParametros("VendedorTipo = 1") End If - DdlVendedor.SelectedValue = "0" - DdlVendedor.Items.Insert(0, New ListItem("Sin Asignar", "0")) - - If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then - CargaVendedoresSubProyectos() - End If - DdlVendedorSucursal.DataSource = DdlVendedor.DataSource DdlVendedor.DataBind() DdlVendedorSucursal.DataBind() - DdlVendedor.SelectedValueExist(CveVendedorActual) + DdlVendedor.Items.Insert(0, New ListItem("Sin Asignar")) + DdlVendedorSucursal.Items.Insert(0, New ListItem("Sin Asignar")) - If Not DdlVendedor.SelectedValue.ToEntero() > 0 Then - DdlVendedor.SelectedValueExist(UsuarioActual.CveVendedor.ToString()) + DdlVendedor.SelectedValueExist("0") + DdlVendedorSucursal.SelectedValueExist("0") + + 'SI NO ES VENTA ACTUAL + If EsVentaNueva Then + 'PRIMERO TOMA EL VENDEDOR DEL USUARIO + If UsuarioActual.CveVendedor > 0 Then + CveVendedorActual = UsuarioActual.CveVendedor + End If + 'DAR PREFERENCIA AL VENDEDOR ASIGNADO AL CLIENTE + If Me.CveVendedorCliente > 0 Then + CveVendedorActual = Me.CveVendedorCliente + End If + 'DAR PREFERENCIA AL VENDEDOR ASIGNADO LA SUCURSAL CLIENTE + If Me.CveVendedorClienteSucursal > 0 Then + CveVendedorActual = Me.CveVendedorClienteSucursal + End If + 'SI TIENE CONTRATO TOMA EL DEL CONTRATO + If Me.CveVendedorContrato > 0 Then + CveVendedorActual = Me.CveVendedorContrato + End If + 'SI ES EMPRESA CRM TOMA DE AQUI + If Me.CveVendedorEmpresaCRM > 0 Then + CveVendedorActual = Me.CveVendedorEmpresaCRM + End If + Else + 'SI ES VENTA EXISTENTE TOMA EL DE LA VENTA + If Me.CveVendedorVenta > 0 Then + CveVendedorActual = Me.CveVendedorVenta + End If End If - If DdlVendedor.SelectedValue.ToEntero() > 0 AndAlso Not UsuarioActual.TienePermisoProceso(161) Then - DdlVendedor.Enabled = False + If CveVendedorActual > 0 Then + Dim VendedorActual As String = GlobalDTVendedores(UsuarioActual.CveEmpresa).FiltroPrimeroValor("Vendedor", $"CveVendedor = {CveVendedorActual}") + 'SI NO ENCUENTRA BUSCA EN LOS VENDEDORES DEL PV + If String.IsNullOrEmpty(VendedorActual) Then + VendedorActual = GlobalDTVendedores(UsuarioActual.CveEmpresa, VendedorTipo:=4).FiltroPrimeroValor("Vendedor", String.Format("CveVendedor = {0}", CveVendedorActual)) + End If + + If String.IsNullOrEmpty(VendedorActual) Then + DdlVendedor.SelectedValueExist(CveVendedorActual) + Else + DdlVendedor.SelectedValueExistInsert(CveVendedorActual, VendedorActual) + End If End If + If UsuarioActual.CveEmpresa = 140 Then + If Not UsuarioActual.TienePermisoProceso(161) Then + DdlVendedor.Enabled = False + End If + Else + If DdlVendedor.SelectedValue.ToEntero() > 0 AndAlso Not UsuarioActual.TienePermisoProceso(161) Then + DdlVendedor.Enabled = False + End If + End If + + + 'multiples vendedores visible + If UsuarioActual.TienePermisoProceso(153) Then + DdlVendedor.Enabled = True + End If + + UPPVentas.Update() 'TxtCorreoNotificaciones.Text = GlobalDTUsuarios(UsuarioActual.CveUsuario).FiltroPrimeroValor("Correo") End Sub #End Region @@ -33644,23 +33729,29 @@ Partial Class Ventas UpModalSolicitud.Update() End Sub - Private Sub CargaVendedoresSubProyectos() + 'Private Sub CargaVendedoresSubProyectos() - Dim DtVendedoresSucursales = GlobalDTClientesVendedoresSubProyectos(UsuarioActual.CveEmpresa, CveCliente:=Me.CveCliente, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero()) + ' DdlVendedor.Items.Clear() + ' DdlVendedor.SelectedValue = Nothing - If DtVendedoresSucursales IsNot Nothing AndAlso DtVendedoresSucursales.Rows.Count > 0 Then - DdlVendedor.Items.Clear() - DdlVendedor.SelectedValue = Nothing + ' Dim DtVendedoresSucursales = GlobalDTClientesVendedoresSubProyectos(UsuarioActual.CveEmpresa, CveCliente:=Me.CveCliente, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero()) - DdlVendedor.DataSource = DtVendedoresSucursales - DdlVendedor.DataBind() - DdlVendedor.Items.Insert(0, New ListItem("Sin Asignar", "0")) + ' If DtVendedoresSucursales IsNot Nothing AndAlso DtVendedoresSucursales.Rows.Count > 0 Then + ' DdlVendedor.DataSource = DtVendedoresSucursales + ' DtVendedoresSucursales.Dispose() + ' Else + ' If UsuarioActual.Empresa.Funcionalidad(302) = "1" AndAlso DdlSubProyectoDatos.SelectedValue.ToEntero() > 0 Then + ' DdlVendedor.DataSource = GlobalDTVendedores(UsuarioActual.CveEmpresa).FiltraParametros(String.Format("CveSubProyecto = {0}", DdlSubProyectoDatos.SelectedValue)).FiltraParametros("VendedorTipo = 1") + ' Else + ' DdlVendedor.DataSource = GlobalDTVendedores(UsuarioActual.CveEmpresa).FiltraParametros("VendedorTipo = 1") + ' End If + ' End If - DtVendedoresSucursales.Dispose() - End If + ' DdlVendedor.DataBind() + ' DdlVendedor.Items.Insert(0, New ListItem("Sin Asignar", "0")) - UpParametros.Update() - End Sub + ' UpParametros.Update() + 'End Sub Public Class MAnticipoRelacionado Public Property CveVenta As Integer