From 69d011f89ebf45e8913b3e5281356ee7e0df5716 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 20 Feb 2025 12:30:33 -0700 Subject: [PATCH 01/13] =?UTF-8?q?--=20correcci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Compras/Compras.aspx.vb | 78 ++++++++++------------------------------- 1 file changed, 19 insertions(+), 59 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 7746f79d5..50ea16e12 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -3077,38 +3077,23 @@ Partial Class Compras_Compras TmpDT.Columns.Add("CveContrato", GetType(Integer)) TmpDT.Columns.Add("DifPSSat", GetType(Integer)) - If Not TmpDT.Columns.Contains("CveContratoDetalle") Then - TmpDT.Columns.Add("CveContratoDetalle", GetType(Integer)) - End If - If Not TmpDT.Columns.Contains("CveCultivoCuadroDetalle") Then - TmpDT.Columns.Add("CveCultivoCuadroDetalle", GetType(Integer)) - End If + If Not TmpDT.Columns.Contains("CveContratoDetalle") Then TmpDT.Columns.Add("CveContratoDetalle", GetType(Integer)) + If Not TmpDT.Columns.Contains("CveCultivoCuadroDetalle") Then TmpDT.Columns.Add("CveCultivoCuadroDetalle", GetType(Integer)) + If Not TmpDT.Columns.Contains("CveSATPSActualizado") Then TmpDT.Columns.Add("CveSATPSActualizado", GetType(Integer)) + If Not TmpDT.Columns.Contains("ImporteSinImpuestos") Then TmpDT.Columns.Add("ImporteSinImpuestos", GetType(Decimal)) - If Not TmpDT.Columns.Contains("CveSATPSActualizado") Then - TmpDT.Columns.Add("CveSATPSActualizado", GetType(Integer)) - End If + If Not TmpDT.Columns.Contains("AplicaSerie") Then TmpDT.Columns.Add("AplicaSerie", GetType(Boolean)) + If Not TmpDT.Columns.Contains("AplicaLote") Then TmpDT.Columns.Add("AplicaLote", GetType(Boolean)) + If Not TmpDT.Columns.Contains("AplicaCaducidad") Then TmpDT.Columns.Add("AplicaCaducidad", GetType(Boolean)) - If Not TmpDT.Columns.Contains("ImporteSinImpuestos") Then - TmpDT.Columns.Add("ImporteSinImpuestos", GetType(Decimal)) - End If - If Not TmpDT.Columns.Contains("AplicaLote") Then - TmpDT.Columns.Add("AplicaLote", GetType(Boolean)) - End If - If Not TmpDT.Columns.Contains("AplicaCaducidad") Then - TmpDT.Columns.Add("AplicaCaducidad", GetType(Boolean)) - End If + If Not TmpDT.Columns.Contains("Serie") Then TmpDT.Columns.Add("Serie", GetType(String)) + If Not TmpDT.Columns.Contains("Lote") Then TmpDT.Columns.Add("Lote", GetType(String)) + If Not TmpDT.Columns.Contains("FechaCaducidad") Then TmpDT.Columns.Add("FechaCaducidad", GetType(Date)) - If Not TmpDT.Columns.Contains("Lote") Then - TmpDT.Columns.Add("Lote", GetType(String)) - End If - If Not TmpDT.Columns.Contains("FechaCaducidad") Then - TmpDT.Columns.Add("FechaCaducidad", GetType(Date)) - End If + GvPS.DataSource = TmpDT + GvPS.DataBind() - GvPS.DataSource = TmpDT - GvPS.DataBind() - - If UsuarioActual.Empresa.UsaAC Then + If UsuarioActual.Empresa.UsaAC Then CargaHidendsAC() End If @@ -4909,7 +4894,6 @@ Partial Class Compras_Compras TmpDT.AcceptChanges() If Correcto Then - Dim ObjCompras As New ClsCompras() Dim ObjConta As New ClsContabilidad(ObjCompras.IniciaTransacSQL()) Dim ObjIE As New ClsBancos(ObjCompras.IniciaTransacSQL) @@ -4923,7 +4907,6 @@ Partial Class Compras_Compras Dim ObjCGame As New ClsCGame(ObjCompras.IniciaTransacSQL()) Dim ObjProductosServicios As New ClsProductosServicios(ObjCompras.IniciaTransacSQL()) Dim ObjGrales As New ClsGenerales(ObjCompras.IniciaTransacSQL()) - Dim ObjContaAC As ClsContPAQi = Nothing Dim ErrorMovtosCxP As Boolean = False @@ -5057,7 +5040,6 @@ Partial Class Compras_Compras UsuarioActual.Sesion("Comp-NumeroReembolso") = "" End If - If Not ErrorReembolso Then 'PORCENTAJE IVA @@ -5797,7 +5779,6 @@ Partial Class Compras_Compras If CveMovimientoInventario <= 0 Then ErrorMovInv = True Else - Dim DtDetalle As New DataTable Dim DtEquivalencias As DataTable Dim CveProducto As Integer @@ -5879,8 +5860,6 @@ Partial Class Compras_Compras Exit For End If End If - - End If End If i = i + 1 @@ -5904,7 +5883,6 @@ Partial Class Compras_Compras End If End If End If - End If Next End If @@ -6031,7 +6009,6 @@ Partial Class Compras_Compras If Capital > 0 Or Interes > 0 Or Ambos > 0 Then If ObjIE.GetCreditosDetalle(CveCreditoTemp, -1) Then - Dim CveCompraCapital As Integer = -1 Dim CveCompraInteres As Integer = -1 @@ -6264,9 +6241,6 @@ Partial Class Compras_Compras End Select End If - - - importeMovimiento = importePagoProv If CveMonedaPago = 2 AndAlso DdlMoneda.SelectedValue.ToEntero = 1 Then importeMovimiento = importeMovimiento / TipoCambioCompra @@ -6284,7 +6258,6 @@ Partial Class Compras_Compras CveSubProyectoDT = TmpDT(0)("CveSubProyecto").ToString.ToEntero CveTipoGastoDT = TmpDT(0)("CveTipoGasto").ToString.ToEntero End If - Concepto = $"{NombreProveedor} {TxtSerie.Text} - {TxtFolio.Text}" Dim ImporteSubCre As Decimal = TxtSubTotal.Text.ToDecimal @@ -6294,7 +6267,6 @@ Partial Class Compras_Compras ErrorPrepoliza = True End If - 'If importeMovimiento <> 0 Then For Each gvRowCredito As GridViewRow In GvCreditos.Rows @@ -13905,7 +13877,7 @@ Partial Class Compras_Compras If ObjInventario.GetExistenciasProducto(Dr.DataKey("CvePS").ToEntero, Dr.DataKey("CveUM").ToEntero, UsuarioActual.CveEmpresa, CveAlmacen, FechaMovto:=tFechaExistencia.ToString("yyyy/MM/dd HH:mm")) Then Dim Existencia As Decimal = ObjInventario.DtResultados.FiltroPrimeroValor("ExistenciaFinal", String.Format("CveAlmacen = {0}", CveAlmacen)).ToDecimal - If Dr.FCTextBox("TxtCantidad").Text.ToDouble > Existencia Then + If Dr.FCTextBox("TxtCantidad").Text.ToDecimal > Existencia Then Alert($"No hay existencia suficiente del producto:
- {Dr.DataKey("CodigoPS")} en la fecha: {tFechaExistencia.ToString("yyyy/MM/dd HH:mm")}", TipoMensaje.MsgAdvertencia) ErrorMovInv = True Exit For @@ -13991,15 +13963,7 @@ Partial Class Compras_Compras UPDevolucion.Update() End Sub - 'Protected Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click - ' cargaddldevoluciones(CveProveedor, TextBox1.Text.ToDouble) - 'End Sub - 'Protected Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click - ' Dim ObjInventario As New ClsInventarios() - ' Dim cvecompra As Integer = 5221 - ' Dim subtotal As Double = TextBox1.Text.ToDouble - ' guardardevolucion(ObjInventario, cvecompra, subtotal, NowADS().ToDate) - 'End Sub + Protected Sub BtnVinculaDevolucion_Click(sender As Object, e As EventArgs) Try Dim subtotaldevolucion As Decimal = 0 @@ -14036,7 +14000,6 @@ Partial Class Compras_Compras OnError("Ocurrió un error al realizar la vinculación", ex) End Try - End Sub Private Sub VinculaDevolucion() @@ -14080,9 +14043,7 @@ Partial Class Compras_Compras Dim Clasificacion As String = gvr.DataKey("Clasificacion").ToString Dim PS As String = gvr.DataKey("CodigoPS").ToString Dim CveTipoPS As Integer = gvr.DataKey("CveTipoPS").ToString.ToEntero - Dim CveProyecto As String = "-1" - Dim Proyecto As String = "Seleccione" Dim Obs As String = "" Dim PU As Decimal = gvr.DataKey("PU").ToString.ToDecimal @@ -14106,21 +14067,20 @@ Partial Class Compras_Compras Next If UsuarioActual.Empresa.Funcionalidad(574) = "1" Then - Dim CvePS_RNC As Integer = UsuarioActual.Empresa.Funcionalidad(580).ToEntero - If CvePS_RNC = 0 Then + Dim CvePSRNC As Integer = UsuarioActual.Empresa.Funcionalidad(580).ToEntero + If CvePSRNC = 0 Then Alert("producto utilizado para diferencia no definido.") Exit Sub End If - Dim PSRow As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePS_RNC).FiltroPrimero("") + Dim PSRow As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePSRNC).FiltroPrimero("") Dim PS As String = PSRow("PSCodigo").ToString Dim tDif As Decimal = TxtSubTotal2.Text.ToDecimal - Total AddPS(1, PSRow("CveUnidadMedida").ToString.ToEntero, PSRow("UnidadMedida").ToString, - PSRow("CveClasificacion").ToString.ToEntero, PSRow("Clasificacion").ToString, CvePS_RNC, PS, 1, CveSubProyectoDev.ToString, SubProyecto, "", "-1", "", tDif, tDif, IVAPorcentajeCompra, 0, 0, 0, 0, 0) + PSRow("CveClasificacion").ToString.ToEntero, PSRow("Clasificacion").ToString, CvePSRNC, PS, 1, CveSubProyectoDev.ToString, SubProyecto, "", "-1", "", tDif, tDif, IVAPorcentajeCompra, 0, 0, 0, 0, 0) End If - AddPS2() BtnGuardar.Enabled = True From 5747a6ceac5ad4d2f361fb655d43858152641a2e Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 21 Feb 2025 11:01:42 -0700 Subject: [PATCH 02/13] =?UTF-8?q?--=20mejoras=20en=20visualizaci=C3=B3n=20?= =?UTF-8?q?de=20correo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TareasProgramadas/TareasReporteDiario.ashx | 47 ++++++++++------------ 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/TareasProgramadas/TareasReporteDiario.ashx b/TareasProgramadas/TareasReporteDiario.ashx index ab5d729b9..429c429fb 100644 --- a/TareasProgramadas/TareasReporteDiario.ashx +++ b/TareasProgramadas/TareasReporteDiario.ashx @@ -83,54 +83,53 @@ public class TareasReporteDairio : IHttpHandler private string ConvertDataTableToHtml(DataTable table) { StringBuilder html = new StringBuilder(); - - + string ColumnaTitulo = "Titulo"; html.Append(""); + if(table.Columns[0].ColumnName==ColumnaTitulo && table.Rows.Count > 0) html.AppendFormat(" ", table.Rows[0][ColumnaTitulo]); - - html.Append(""); + html.Append(""); foreach (DataColumn column in table.Columns) { - html.Append($""); + if (ColumnaTitulo != column.ColumnName) html.Append($""); } html.Append(""); - html.Append(""); foreach (DataRow row in table.Rows) { html.Append(""); foreach (DataColumn column in table.Columns) { - object value = row[column]; - string cellValue; - - - if (column.DataType == typeof(int) || column.DataType == typeof(decimal) || column.DataType == typeof(double) || column.DataType == typeof(float)) + if (ColumnaTitulo != column.ColumnName) { - if (value != DBNull.Value && decimal.TryParse(value.ToString(), out decimal numericValue)) + object value = row[column]; + string cellValue; + if (column.DataType == typeof(int) || column.DataType == typeof(decimal) || column.DataType == typeof(double) || column.DataType == typeof(float)) { - if (numericValue != 0) + if (value != DBNull.Value && decimal.TryParse(value.ToString(), out decimal numericValue)) { - cellValue = numericValue.ToString("N2"); + if (numericValue != 0) + { + cellValue = numericValue.ToString("N2"); + } + else + { + cellValue = "";//0.00 + } } else { cellValue = "";//0.00 } + html.Append($""); } else { - - cellValue = "";//0.00 + cellValue = value?.ToString() ?? string.Empty; + html.Append($""); } - html.Append($""); - } - else - { - cellValue = value?.ToString() ?? string.Empty; - html.Append($""); } + } html.Append(""); } @@ -180,15 +179,13 @@ public class TareasReporteDairio : IHttpHandler private void MandaCorreo(string Cuerpo, bool PrceosoOK) { - try { - List ListaArchivos = new List(); ClsSisMail Correo = new ClsSisMail(); //string Para = "julian@adssistemas.mx;rene.molina@adssistemas.mx;oscar.irigoyen@adssistemas.mx"; - string Para = "oscar.irigoyen@adssistemas.mx;rene.molina@adssistemas.mx"; + string Para = "rene.molina@adssistemas.mx"; // oscar.irigoyen@adssistemas.mx; string Asunto = PrceosoOK ? $"Reporte Diario":"Reporte Diario Error"; Asunto = $"{Asunto} {DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")}"; From 516a249e60cc3fb00a0f130575dddfe66b5cb738 Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 21 Feb 2025 11:02:48 -0700 Subject: [PATCH 03/13] =?UTF-8?q?--=20mejora=20en=20usar=20la=20variable?= =?UTF-8?q?=20de=20empresa,=20en=20lugar=20del=20numerop=20--=20quitar=20e?= =?UTF-8?q?n=20el=20env=C3=ADo=20a=20RM=20y=20JP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ashx/E141.ashx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Ashx/E141.ashx b/Ashx/E141.ashx index 946bc4519..35ec18745 100644 --- a/Ashx/E141.ashx +++ b/Ashx/E141.ashx @@ -62,9 +62,9 @@ Public Class E141 : Implements IHttpHandler, System.Web.SessionState.IRequiresSe #Region "V A L I D A - D A T O S" Private Function ValidaUsuarioSistema(CveUsuario As Integer, CveEmpresa As Integer) As Usuario Dim UsuarioActual As Usuario = Nothing - Dim NombreCadena As String = ClsPaginas.GlobalNombreCadenaConexion(141) + Dim NombreCadena As String = ClsPaginas.GlobalNombreCadenaConexion(CveEmpresa) Dim ObjUsuarios As New ClsSisUsuarioAutenticacion(NombreCadena:=NombreCadena) - UsuarioActual = ObjUsuarios.GetUsuarioDetalle(100) + UsuarioActual = ObjUsuarios.GetUsuarioDetalle(100, CveEmpresa) If UsuarioActual IsNot Nothing Then HttpContext.Current.Session("UsuarioSIG") = UsuarioActual 'CreaObjetoEmpresa(UsuarioActual) @@ -281,7 +281,7 @@ Public Class E141 : Implements IHttpHandler, System.Web.SessionState.IRequiresSe Dim ResultadoMail As Integer = 0 Dim CorreoDestino As String = "atencion@fidelityapps.mx" Dim MailCC As String = "citas@econollantas.com;sixrogs@hotmail.com;ffelix@econollantas.com" - Dim MailCCO As String = "jonathan.perez@adssistemas.mx;rene.molina@adsistemas.mx" + Dim MailCCO As String = "" '"jonathan.perez@adssistemas.mx;rene.molina@adsistemas.mx" If Not EsProduccion Then CorreoDestino = "jonathan.perez@adssistemas.mx" From fefb58a8e46a823f812ded6ad3d95e7fdbbfb799 Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 21 Feb 2025 11:03:03 -0700 Subject: [PATCH 04/13] =?UTF-8?q?--=20integraci=C3=B3n=20con=20kiosko?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ashx/E140.ashx | 389 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 378 insertions(+), 11 deletions(-) diff --git a/Ashx/E140.ashx b/Ashx/E140.ashx index 25a99bd7f..1ad9449bc 100644 --- a/Ashx/E140.ashx +++ b/Ashx/E140.ashx @@ -6,6 +6,7 @@ Imports System.Data Imports Newtonsoft.Json Imports Extensiones Imports System.IO +Imports Newtonsoft.Json.Linq Imports Microsoft.Reporting.WebForms Public Class E140 : Implements IHttpHandler, IRequiresSessionState @@ -14,18 +15,325 @@ Public Class E140 : Implements IHttpHandler, IRequiresSessionState Return False End Get End Property - Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest + Public Shared ReadOnly Property EsProduccion As Boolean + Get + If IsNothing(System.Configuration.ConfigurationManager.AppSettings("EsProduccion")) Then + Return False + Else + Return (System.Configuration.ConfigurationManager.AppSettings("EsProduccion").ToString() = "1") + End If + End Get + End Property + Private ReadOnly Property CveEmpresa As Integer = 140 + Private ReadOnly Property UsuarioWSE140 As String = "bdh_apiuser_" + Private ReadOnly Property PasswordWSE140 As String = "*863.fy03pon.8kmn_vbtu" + Public ReadOnly Property TokenAutorizacion As String + Get + Return "$2y$10$LGqtRWUloKQmAt.jcUldc.PmS5LJ6l.WU2w1G4PBOTLMVKZRNQFPS" + End Get + End Property + Private Function ValidaUsuarioSistema(CveUsuario As Integer, CveEmpresa As Integer) As Usuario + Dim UsuarioActual As Usuario = Nothing + Dim NombreCadena As String = ClsPaginas.GlobalNombreCadenaConexion(CveEmpresa) + Dim ObjUsuarios As New ClsSisUsuarioAutenticacion(NombreCadena:=NombreCadena) + UsuarioActual = ObjUsuarios.GetUsuarioDetalle(100, CveEmpresa) + If UsuarioActual IsNot Nothing Then + HttpContext.Current.Session("UsuarioSIG") = UsuarioActual + 'CreaObjetoEmpresa(UsuarioActual) + End If + ObjUsuarios.Dispose() + + Return UsuarioActual + End Function + + Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest + Dim retorno As String Try - Select Case context.Request("metodo") + Dim Metodo As String = If(context.Request("Metodo") = Nothing, "", context.Request("Metodo").ToString()) + Select Case Metodo Case "MetasVendedores" MetasVendedores(context) End Select + + If Metodo = "ConsultaRemisiones" Then + context.Response.ContentType = "application/json" + Dim Auth As AuthMessage = ValidarSolicitud(context) + + If Auth.IsSucces Then + retorno = ConsultaRemisiones(context, "") + Else + context.Response.StatusCode = Auth.StatusCode + retorno = JsonConvert.SerializeObject(Auth.ErrorMessage) + End If + context.Response.Write(retorno) + ElseIf Metodo = "RegistraPago" Then + context.Response.ContentType = "application/json" + Dim Auth As AuthMessage = ValidarSolicitud(context) + + If Auth.IsSucces Then + retorno = RegistraPagoRemision(context, "") + Else + context.Response.StatusCode = Auth.StatusCode + retorno = JsonConvert.SerializeObject(Auth.ErrorMessage) + End If + context.Response.Write(retorno) + End If Catch ex As Exception ex.GuardaLog(ex.Message) End Try End Sub + Private Function ValidarSolicitud(ByVal context As HttpContext) As AuthMessage + Dim unauthorized As Boolean = True + Dim respuesta As New AuthMessage + + Dim authHeader = context.Request.Headers("Authorization") + If authHeader IsNot Nothing Then + Dim basicAuth As String = authHeader.Replace("Basic ", "") + + Dim usernamePasswordArray = Encoding.UTF8.GetString(Convert.FromBase64String(basicAuth)).Split(":"c) + + Dim userName = usernamePasswordArray(0) + Dim password = usernamePasswordArray(1) + unauthorized = Not (userName = Me.UsuarioWSE140 AndAlso password = Me.PasswordWSE140) + + Else + respuesta.ErrorMessage = New AppsResponseError() With {.message = "el usuario y/o contraseña son requeridos"} + respuesta.IsSucces = False + respuesta.StatusCode = 200 + + Return respuesta + End If + + If unauthorized Then + respuesta.ErrorMessage = New AppsResponseError() With {.message = "el usuario y/o contraseña no son validos"} + respuesta.IsSucces = False + respuesta.StatusCode = 200 + + Return respuesta + Else + respuesta.ErrorMessage = Nothing + respuesta.IsSucces = True + respuesta.StatusCode = 200 + + Return respuesta + End If + + End Function + + Private Function ConsultaRemisiones(ByVal context As HttpContext, Codigo As String) As String + Dim Respuesta As New AppsResponse + Dim RespuestaError As New AppsResponseError + Dim TieneError As Boolean = False + Dim CveSubProyecto As String = "11790" + + Dim Usuario As Usuario = ValidaUsuarioSistema(100, CveEmpresa) + Dim data As New JArray + Dim dtt As New DataTable + Dim ObjVentas As New ClsVentas + If ObjVentas.GetRepRemisionesSinFacturar(Now.AddYears(-2).ToShortDateString, Now.ToShortDateString, Now.ToShortDateString, CveSubProyecto, -1, -1, "-1", CveEmpresa, CveUsuarioConsulta:=100, PrimerProducto:=True) Then + dtt = ObjVentas.DtResultados.FiltraParametros("CveVenta > 0") + End If + ObjVentas.Dispose() + + If dtt IsNot Nothing Then + Try + For Each Row As DataRow In dtt.Rows + Dim objVenta As New JObject( + New JProperty("cveventa", Row("CveVenta")), + New JProperty("folio", Row("Folio")), + New JProperty("cliente", Row("Cliente")), + New JProperty("fecha", Row("Fecha")), + New JProperty("total", Row("Total")), + New JProperty("moneda", Row("Abreviatura")), + New JProperty("primerproducto", Row("PrimerCodigoPS")) + ) + data.Add(objVenta) + Next + Catch ex As Exception + TieneError = True + RespuestaError.message = "Ocurrió un error al obtener las remisiones pendientes." + End Try + dtt.Dispose() + Else + TieneError = True + End If + + Respuesta.data = data + + If TieneError Then + context.Response.StatusCode = 200 + Return JsonConvert.SerializeObject(RespuestaError) + Else + context.Response.StatusCode = 200 + Return JsonConvert.SerializeObject(Respuesta) + End If + End Function + + Private Function RegistraPagoRemision(ByVal context As HttpContext, CveVenta As String) As String + Dim Respuesta As New AppsResponse + Dim RespuestaError As New AppsResponseError + Dim TieneError As Boolean = False + Dim CveSubProyecto As String = "11790" + Dim JsonRequest As JObject = Nothing + + If context.Request.InputStream IsNot Nothing Then + Using reader As New StreamReader(context.Request.InputStream) + Dim json = reader.ReadToEnd + If Not String.IsNullOrEmpty(json) Then + JsonRequest = JObject.Parse(json) + If JsonRequest Is Nothing Then + TieneError = True + End If + End If + End Using + End If + + Dim UsuarioActual As Usuario = ValidaUsuarioSistema(100, CveEmpresa) + Dim data As New JArray + Dim dtt As New DataTable + Dim MsgError As String = "" + Dim CveCuentaBancaria As Integer = 8075 + Dim ImportePago As Decimal = JsonRequest("importe_pago").ToString.ToDecimal + Dim FechaPago As Date = JsonRequest("fecha_pago").ToString.ToDate + Dim FolioPago As String = JsonRequest("referencia_pago").ToString + Dim CveTipoTransaccion As Integer = If(JsonRequest("referencia_pago").ToString = "tdc", 12, 11) + Dim CveMonedaPago As Integer = If(JsonRequest("moneda_pago").ToString = "USD", 2, 1) + Dim pCveVenta As Integer = JsonRequest("cveventa").ToString.ToEntero + Dim Referencia As String = "" + 'validaciones + + Dim ObjVenta As New ClsVentas() + Dim ObjClientes As New ClsClientes + If ObjVenta.GetVenta(pCveVenta, CveEmpresa) Then + If ObjVenta.DtResultados IsNot Nothing AndAlso ObjVenta.DtResultados.Rows.Count > 0 Then + Dim dr As DataRow = ObjVenta.DtResultados.Rows(0) + 'importe y forma de pago. + Dim VentaRemision As New ClsPaginas.Venta(UsuarioActual) + VentaRemision.CveVenta = dr("CveVenta").ToString.ToEntero + VentaRemision.Fecha = dr("Fecha").ToString.ToDate + VentaRemision.CveCliente = dr("CveCliente").ToString.ToEntero + VentaRemision.CveMoneda = dr("CveMoneda").ToString.ToEntero + VentaRemision.TipoDocto = dr("TipoDocto").ToString + VentaRemision.SerieFolio = dr("SerieFolio").ToString + VentaRemision.ClienteNombre = dr("ClienteNombre").ToString + VentaRemision.TC = dr("TipoCambio").ToString.ToDecimal + VentaRemision.Total = dr("Total").ToString.ToDecimal + VentaRemision.IVA = dr("IVA").ToString.ToDecimal + VentaRemision.IEPS = dr("IEPS").ToString.ToDecimal + VentaRemision.RetIVA = dr("RetIVA").ToString.ToDecimal + VentaRemision.RetISR = dr("RetISR").ToString.ToDecimal + VentaRemision.PorcentajeIVA = dr("PorcentajeIVA").ToString.ToDecimal + VentaRemision.CveSubProyecto = dr("CveSubProyecto").ToString.ToEntero + + Dim ObjFactura = Modelos.Factura.CrearVentaNueva(UsuarioActual, VentaRemision.CveSubProyecto, VentaRemision.CveCliente, VentaRemision.CveMoneda, "Ing") + ObjFactura.CveMoneda = VentaRemision.CveMoneda + ObjFactura.CveVendedor = dr("CveVendedor").ToString.ToEntero + ObjFactura.CveFormaPago = dr("CveFormaPago33").ToString.ToEntero + 'ObjFactura.ClaveFormaPagoSAT = "99" + ObjFactura.CveMetodoPago = dr("CveMetodoPago").ToString.ToEntero + 'ObjFactura.ClaveMetodoPagoSAT = "PPD" + Dim DtRemisionesPS As DataTable = Nothing + If ObjClientes.GetVentasRemisionesTotales(VentaRemision.CveCliente, VentaRemision.CveVenta.ToString(), 1, CveEmpresa) Then + DtRemisionesPS = ObjClientes.DtResultados.Copy() + End If + For Each drr As DataRow In DtRemisionesPS.Rows + ObjFactura.AgregarPS(drr("CvePS").ToString().ToEntero(), drr("Cantidad").ToString().ToDecimal(), drr("PU").ToString().ToDecimal(), drr("Descuento").ToString().ToDecimal, drr("Obs").ToString(), CveUM:=drr("CveUM").ToString().ToEntero(), + CveProyecto:=drr("CveProyecto").ToString().ToEntero(), CveSubProyecto:=drr("CveSubProyecto").ToString().ToEntero(), CveVentaDetallePadre:=drr("CveVentaDetalle").ToString().ToEntero(), CveVentaDetalleRemision:=drr("CveVentaDetalle").ToString().ToEntero(), + PorcentajeIVA:=drr("PorcentajeIVA").ToString().ToDecimal(), CvePromocionDetalle:=drr("CvePromocionDetalle").ToString.ToEntero) + Next + + ObjFactura.GenerarSalidaAlmacen = True + ObjFactura.DtInventario = ObjFactura.DtDetalle.FiltraParametros("CveTipoPS = 2").Copy() + 'ObjFactura.CveAlmacen = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $"CveTipoAlmacen = 1 AND CveSubProyecto = {VentaRemision.CveSubProyecto}", "Orden").ToString().ToEntero() + + ObjFactura.CalculaTotales() + + Dim ObjConta As New ClsContabilidad() + Dim ObjIE As New ClsBancos(ObjConta.IniciaTransacSQL()) + Dim ObjVentas As New ClsVentas(ObjConta.IniciaTransacSQL()) + Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Ashx/E140", 4, 0, 0, 1, FechaPago, "Venta Kiosco", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + + If CvePrePoliza > 0 Then + 'registro de venta y pago + + Dim Retorno As Modelos.Factura.MMensajeFactura = Nothing + Retorno = ObjFactura.EmitirFactura(False, Transac:=ObjVentas.IniciaTransacSQL(), Modulo:="Cobranza/GuardarVenta", MostrarURL:=True) + Retorno.Factura = ObjFactura + + If Retorno IsNot Nothing AndAlso Retorno.CveVenta > 0 Then + VentaRemision.CveVenta = ObjFactura.CveVenta + 'Respuesta.data = Retorno.SerieFolio + + If TieneError Then + Dim sb As New StringBuilder() + For Each msg As String In Retorno.Mensajes + sb.AppendFormat("{0}. ", msg) + Next + RespuestaError.message = sb.ToString() + End If + '11- tdd, 12-tdc + Dim CveIE As Integer = ObjIE.AddBancos_IE(CveCuentaBancaria, CveTipoTransaccion, FechaPago, "-1", "", ImportePago, VentaRemision.CveMoneda, + VentaRemision.TC, "", "", False, True, -1, CvePrePoliza, "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) + + If CveIE > 0 Then + 'Importe de pago + Dim Pago As New ClsPaginas.VentaPago + Pago.TipoPago = "XXX" + Pago.Fecha = FechaPago + Pago.CveIE = CveIE + Pago.CveMonedaPago = CveMonedaPago + Pago.ImportePago = ImportePago + Pago.ImportePagoVenta = ImportePago + Pago.Referencia = Referencia + + If MsgError = "" AndAlso ClsPaginas.AplicaPrePolizaPagoVenta(VentaRemision, Pago, CvePrePoliza, ObjConta) Then + MsgError = "No se pudo insertar la póliza" + End If + Else + MsgError = "No se pudo insertar el pago" + End If + Else + TieneError = True + End If + End If + If Not TieneError Then + Dim bytesPDF As Byte() = DescargarFactura(ObjFactura.SerieFolio, CveEmpresa, ObjFactura.CveVenta) 'ClsPaginas.PdfFactura(ObjFactura, AplicaPagare:="0", Guardar:=True, RegenerarQR:=True, EsTicket:=False) + + 'generar el pdf y mandarlo + Dim objretorno As New JObject( + New JProperty("CveVenta", ObjFactura.CveVenta), + New JProperty("SerieFolio", ObjFactura.SerieFolio), + New JProperty("pdf", Convert.ToBase64String(bytesPDF)) + ) + data.Add(objretorno) + Respuesta.data = data + ObjConta.RollBack() + 'ObjConta.Commit() + Else + ObjConta.RollBack() + End If + ObjConta.Dispose() + ObjIE.Dispose() + End If + End If + ObjVenta.Dispose() + ObjClientes.Dispose() + + Respuesta.data = data + + If TieneError Then + context.Response.StatusCode = 200 + Return JsonConvert.SerializeObject(RespuestaError) + Else + context.Response.StatusCode = 200 + Return JsonConvert.SerializeObject(Respuesta) + End If + End Function + + +#Region "M E T A S V E N D E D O R E S" Private Shared Sub MetasVendedores(ByVal context As HttpContext) @@ -128,7 +436,6 @@ Public Class E140 : Implements IHttpHandler, IRequiresSessionState For Each dRow As System.Data.DataRow In DTVendedores.Rows - Dim CorreoSupervisor As String = dRow("Correo").ToString() Dim Sucursal As String = dRow("Sucursal").ToString Dim Vendedor As String = dRow("Nombre").ToString() @@ -226,6 +533,30 @@ Public Class E140 : Implements IHttpHandler, IRequiresSessionState Next End Sub +#End Region + Private Function DescargarFactura(FilePDF As String, CveEmpresa As Integer, CveVenta As Integer) As Byte() + ' + Dim Url = New Uri(String.Format("{0}://{1}:{2}/Compras/PopUpVerFactura.aspx?P={3}", HttpContext.Current.Request.Url.Scheme, HttpContext.Current.Request.Url.Host, HttpContext.Current.Request.Url.Port, Encripta(String.Format("OP=VTA&CVEVENTA={0}&PAG=1&GUARDAR=1®ENERAR=1", CveVenta)))) + Dim File As Byte() = Nothing + Try + Using httpClient = New System.Net.Http.HttpClient() + httpClient.Timeout = New TimeSpan(0, 1, 0) + Using request = New System.Net.Http.HttpRequestMessage(System.Net.Http.HttpMethod.Get, Url) + request.Headers.Add("ADSToken", Encripta(String.Format("CVEEMPRESA={0}&TICKS={1}&CVEUSUARIO=100", CveEmpresa, DateTime.UtcNow.Ticks))) + Dim response = httpClient.SendAsync(request).Result + If response.StatusCode = Net.HttpStatusCode.OK Then + File = response.Content.ReadAsByteArrayAsync().Result + End If + End Using + End Using + Catch ex As Exception + File = Nothing + OnError("Ocurrió un error al descargar la factura", ex) + End Try + + Return File + End Function + Private Shared Sub MandaCorreo(Para As String, Cuerpo As String, bytes As Byte()) Try @@ -247,15 +578,51 @@ Public Class E140 : Implements IHttpHandler, IRequiresSessionState End Try End Sub + Private Shared Function IsValidJson(ByVal strInput As String) As Boolean + If String.IsNullOrWhiteSpace(strInput) Then + Return False + End If - Public Shared ReadOnly Property EsProduccion As Boolean - Get - If IsNothing(System.Configuration.ConfigurationManager.AppSettings("EsProduccion")) Then + strInput = strInput.Trim() + + If (strInput.StartsWith("{") AndAlso strInput.EndsWith("}")) OrElse (strInput.StartsWith("[") AndAlso strInput.EndsWith("]")) Then + + Try + Dim obj = JToken.Parse(strInput) + Return True + Catch jex As JsonReaderException + Console.WriteLine(jex.Message) Return False - Else - Return (System.Configuration.ConfigurationManager.AppSettings("EsProduccion").ToString() = "1") - End If - End Get - End Property + Catch ex As Exception + Console.WriteLine(ex.ToString()) + Return False + End Try + Else + Return False + End If + End Function + + Private Class AppsResponse + Sub New() + status = "success" + End Sub + Public Property status As String + Public Property data As Object + Public Property message As String + End Class + + Private Class AppsResponseError + Sub New() + status = "error" + End Sub + Public Property status As String + Public Property message As String + End Class + + Private Class AuthMessage + Public Property IsSucces As Boolean + Public Property ErrorMessage As AppsResponseError + Public Property StatusCode As Integer + End Class End Class \ No newline at end of file From 020d2bc3e87743feea4d8b8e7c6cb2bf1fe9afbb Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 21 Feb 2025 11:03:45 -0700 Subject: [PATCH 05/13] -- mejora visual --- Ventas/RepVentasUtilidadPadre.aspx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Ventas/RepVentasUtilidadPadre.aspx b/Ventas/RepVentasUtilidadPadre.aspx index 72e778979..f46aebd0c 100644 --- a/Ventas/RepVentasUtilidadPadre.aspx +++ b/Ventas/RepVentasUtilidadPadre.aspx @@ -282,7 +282,7 @@
{0}
{column.ColumnName}{column.ColumnName}
{cellValue}{cellValue}{cellValue}{cellValue}