diff --git a/Ashx/E119.ashx b/Ashx/E119.ashx index eb5c2c093..8a967d3cf 100644 --- a/Ashx/E119.ashx +++ b/Ashx/E119.ashx @@ -5,7 +5,6 @@ Option Explicit On Imports System.Data Imports System.IO -Imports System.Net.Http Imports Newtonsoft.Json Imports Newtonsoft.Json.Linq Imports Extensiones @@ -19,6 +18,7 @@ Public Class E119 : Implements IHttpHandler End Property Private ReadOnly Property CveEmpresa As Integer = 119 + Private ReadOnly Property CveUsuario As Integer = 100 Public ReadOnly Property EsProduccion As Boolean Get @@ -126,6 +126,18 @@ Public Class E119 : Implements IHttpHandler End If End If + If Metodo = "RegistraRemision" Then + context.Response.ContentType = "application/json" + Dim Auth As AuthMessage = ValidarSolicitud(context) + + If Auth.IsSucces Then + retorno = RegistraRemision(context) + Else + context.Response.StatusCode = Auth.StatusCode + retorno = JsonConvert.SerializeObject(Auth.ErrorMessage) + End If + End If + context.Response.Write(retorno) Catch ex As Exception @@ -141,14 +153,14 @@ Public Class E119 : Implements IHttpHandler Dim unauthorized As Boolean = True Dim respuesta As New AuthMessage - Dim authHeader = context.Request.Headers("Authorization") + Dim authHeader As String = 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 usernamePasswordArray As String() = Encoding.UTF8.GetString(Convert.FromBase64String(basicAuth)).Split(":"c) - Dim userName = usernamePasswordArray(0) - Dim password = usernamePasswordArray(1) + Dim userName As String = usernamePasswordArray(0) + Dim password As String = usernamePasswordArray(1) unauthorized = Not (userName = Me.UsuarioWSE119 AndAlso password = Me.PasswordWSE119) Else @@ -248,7 +260,7 @@ Public Class E119 : Implements IHttpHandler Using ObjInventario As New ClsInventarios If ObjInventario.GetJAM_APIs(1, CveClasificacion:=CveClasificacion.ToEntero()) AndAlso ObjInventario.DtResultados IsNot Nothing Then - Productos = JArray.Parse(ObjInventario.DtResultados.DataTableToJSONIPP()) + Productos = JArray.Parse(ObjInventario.DtResultados.FiltroPrimeroValor("JsonTexto")) Else RespuestaError.message = "no se pudo obtener los datos" TieneError = True @@ -315,6 +327,181 @@ Public Class E119 : Implements IHttpHandler End If End Function + Private Function RegistraRemision(ByVal context As HttpContext) As String + + Dim TieneError As Boolean = False + Dim JsonRequest As JObject = Nothing + Dim Respuesta As New ResponseMsg + Dim RespuestaError As New ResponseMsgError + + If context.Request.InputStream IsNot Nothing Then + Using reader As New StreamReader(context.Request.InputStream) + Dim json As String = 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 + + If TieneError Then + context.Response.StatusCode = 200 + Return JsonConvert.SerializeObject("xx") + End If + + If Not TieneError Then + Dim Usuario As Usuario = ValidaUsuarioSistema(100, CveEmpresa) + Dim ObjFactura As Modelos.Factura + Dim Resp As New Modelos.Factura.MMensajeFactura + If Usuario IsNot Nothing Then + + End If + + Dim ObjClientes As New ClsClientes() + Dim ObjInventario As New ClsInventarios(ObjClientes.IniciaTransacSQL()) + + Dim CveSubProyecto, CveCliente, CveMoneda, CvePS As Integer + Dim Cantidad, PU, Descuento As Decimal + Dim Obs As String = "" + CveSubProyecto = 12659 ' fijo Ecommerce + CveCliente = 0 + CveMoneda = 1 + Descuento = 0 + Dim RFC As String = If(JsonRequest("billing") Is Nothing, "", JsonRequest("billing")("first_name").ToString()) + Dim NombreCliente As String = If(JsonRequest("billing") Is Nothing, "", JsonRequest("billing")("first_name").ToString() & " " & JsonRequest("billing")("last_name").ToString()) + 'BUSCAR SI ESTÁ REGISTRADO EL CLIENTE + If ObjClientes.GetClientes(-1, "-1", "-1", "-1", RFC, "-1", "-1", -1, CveEmpresa, 1, TipoCliente:=-1, TopSelect:=1) Then + If ObjClientes.DtResultados.Rows.Count > 0 Then + 'Resp.TieneError = False + CveCliente = ObjClientes.CveCliente + 'Resp.Mensajes.Add("El RFC ya existe en el sistema") + End If + End If + + If CveCliente = 0 Then + ' 'DATOS DE BILLING + If JsonRequest("billing") IsNot Nothing Then + Dim CveEstado As Integer = -1 + Dim Direccion As String = If(JsonRequest("billing")("address_1") Is Nothing, "", JsonRequest("billing")("address_1").ToString()) + Dim NumExt As String = "" + Dim NumInt As String = "" + Dim Colonia As String = "" + Dim Ciudad As String = If(JsonRequest("billing")("city") Is Nothing, "", JsonRequest("billing")("city").ToString()) + Dim Localidad As String = If(JsonRequest("billing")("city") Is Nothing, "", JsonRequest("billing")("city").ToString()) + Dim CP As String = If(JsonRequest("billing")("postcode") Is Nothing, "", JsonRequest("billing")("postcode").ToString()) + Dim Telefono As String = If(JsonRequest("billing")("phone") Is Nothing, "", JsonRequest("billing")("phone").ToString()) + Dim Correo As String = If(JsonRequest("billing")("email") Is Nothing, "", JsonRequest("billing")("email").ToString()) + Dim Estado As String = If(JsonRequest("billing")("state") Is Nothing, "", JsonRequest("billing")("state").ToString()) + If Not String.IsNullOrEmpty(Estado) Then + CveEstado = ClsPaginas.GlobalDTGralEstados("MEX").FiltroPrimeroValor("CveEstado", $"NombreEstado = '{Estado.Trim}'").ToEntero() + If CveEstado <= 0 Then 'SI NO ENCUENTRA EL ESTADO INGRESA EL DE SONORA + CveEstado = 26 + End If + Else + CveEstado = 26 + End If + If ObjClientes.AgregarClienteNoFrecuente(NombreCliente, Direccion, NumExt, NumInt, Colonia, Localidad, Ciudad, CveEstado, RFC, CP, Telefono, Correo, CveSubProyecto, CveUsuario, CveEmpresa, "", -1, -1) Then + If ObjClientes.DtResultados.Rows.Count > 0 Then + CveCliente = ObjClientes.DtResultados(0)("CveCliente").ToString().ToEntero() + End If + End If + End If + + End If + + Try + + ObjFactura = Modelos.Factura.CrearVentaNueva(Usuario, CveSubProyecto, CveCliente, CveMoneda, "Rem") + Dim ListaPS As JArray = JArray.Parse(JsonRequest("line_items").ToString()) + Dim Consec As Integer = 1 + For Each JsonPS As JObject In ListaPS + Cantidad = JsonPS("quantity").ToString.ToDecimal() + PU = JsonPS("price").ToString.ToDecimal() + CvePS = ClsPaginas.GlobalDTPSSimplificado(CveEmpresa, Codigo:=JsonPS("sku").ToString()).FiltroPrimeroValor("CvePS").ToEntero() + + ObjFactura.AgregarPS(CvePS, Cantidad, PU, Descuento, Obs, CveSubProyecto:=CveSubProyecto) + + ''VALIDAR QUE SEA EL MISMO PRODUCTO + If CvePS <= 0 Then + TieneError = True + 'Retorno.Mensajes.Add(String.Format("No se encontró el producto: {0}", JsonPS("name").ToString())) + Exit For + End If + + ''VALIDA EXISTENCIA ANTES DE GENERAR LA FACTURA + 'If ObjFactura.TipoDocto = "Ing" AndAlso DrPS("CveTipoPS").ToString() = "2" Then + ' Dim Existencia As Decimal = ObjInventarios.GetExistenciasPS(DrPS("CvePS").ToString.ToEntero, DrPS("CveUnidadMedida").ToString.ToEntero, UsuarioActual.CveEmpresa, ObjFactura.CveAlmacen, CveSubProyecto:=ObjFactura.CveSubProyecto, FechaMovto:=DateTime.Today.AddDays(1).ToString("yyyy/MM/dd HH:mm"), ExcluyeAdelantado:=1, PendientePorSurtir:=1, RestringirAlmacenes:=1, ExcluyeApartados:=-1) + + ' If Cantidad > Existencia Then + ' Retorno.TieneError = True + ' Retorno.Mensajes.Add(String.Format("No hay existencia suficiente para este producto: {0}, cuenta con : {1}", DrPS("PSCodigo").ToString(), Existencia)) + ' Exit For + ' End If + 'End If + Consec += 1 + Next + + + ObjFactura.CalculaTotales() + + If ObjFactura IsNot Nothing Then + Resp = ObjFactura.EmitirFactura(False, Transac:=ObjClientes.IniciaTransacSQL()) + + If Resp.CveVenta > 0 Then + Respuesta.status = "success" + Respuesta.data = Resp.SerieFolio + Else + TieneError = True + End If + + If TieneError Then + Dim sb As New StringBuilder() + For Each msg As String In Resp.Mensajes + sb.AppendFormat("{0}. ", msg) + Next + RespuestaError.message = sb.ToString() + End If + Else + TieneError = True + Dim sb As New StringBuilder() + For Each msg As String In Resp.Mensajes + sb.AppendFormat("{0}. ", msg) + Next + RespuestaError.message = sb.ToString() + End If + + Catch ex As Exception + TieneError = True + End Try + + If TieneError Then + ObjClientes.RollBack() + ObjClientes.Dispose() + ObjInventario.Dispose() + Else + ObjClientes.Commit() + ObjClientes.Dispose() + ObjInventario.Dispose() + + End If + + If ObjFactura IsNot Nothing Then ObjFactura.Dispose() + 'End If + + End If + + 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 Class ResponseMsg Sub New() status = "success" @@ -383,7 +570,7 @@ Public Class E119 : Implements IHttpHandler If (strInput.StartsWith("{") AndAlso strInput.EndsWith("}")) OrElse (strInput.StartsWith("[") AndAlso strInput.EndsWith("]")) Then Try - Dim obj = JToken.Parse(strInput) + Dim obj As JToken = JToken.Parse(strInput) Return True Catch jex As JsonReaderException Console.WriteLine(jex.Message)