|
-
+
Pedido
@@ -2071,6 +2071,13 @@
catch (e) { alert(e); }
}
+ function CerrarModalVenta() {
+ try {
+ $('#DivVenta').modal('hide');
+ }
+ catch (e) { alert(e); }
+ }
+
//VALIDA QUE LA CANTIDAD DE T (TXT) NO SEA MAYOR A C
function ValidarCantidad(t, c) {
t.value = (ToDouble(t.value) > ToDouble(c) ? c : t.value)
diff --git a/PortalCliente/PortalCliente.aspx.vb b/PortalCliente/PortalCliente.aspx.vb
index aa2950fd4..77e1bea86 100644
--- a/PortalCliente/PortalCliente.aspx.vb
+++ b/PortalCliente/PortalCliente.aspx.vb
@@ -9,6 +9,7 @@ Imports System.IO.Compression
Imports System.Net
Imports Microsoft.Reporting.WebForms
Imports System.Net.Http
+Imports Newtonsoft.Json.Linq
Partial Class Ventas_PortalCliente
Inherits ClsPaginas
@@ -24,6 +25,15 @@ Partial Class Ventas_PortalCliente
Set(value As Integer)
ViewState("CveCliente") = value
End Set
+ End Property
+
+ Private Property CvePrecioLista As Integer
+ Get
+ Return IfNull(ViewState("CvePrecioLista"), "-1", ViewState("CvePrecioLista")).ToString().ToEntero()
+ End Get
+ Set(value As Integer)
+ ViewState("CvePrecioLista") = value
+ End Set
End Property
Private Property Destino As String
@@ -223,8 +233,13 @@ Partial Class Ventas_PortalCliente
CargarTipoBuzon()
CargarClienteSucursal()
End If
-
- CargaPedidos()
+ If UsuarioActual.CveEmpresa = 143 Then
+ TabPedidos.Visible = True
+ CargaPedidos(TipoDocto:="Rem")
+ Else
+ CargaPedidos()
+ End If
+
CargaCuentasDepositos()
'??ESTE TAB VA DESAPARECER - PARA QUE SOLO LA EMPRESA GESTIONE A LOS USUARIOS POR CLIENTE??
@@ -260,6 +275,7 @@ Partial Class Ventas_PortalCliente
If ObjClientes.DtResultados.Rows.Count > 0 Then
'Campos para Modificación
LtlCliente.Text = ObjClientes.Nombre
+ CvePrecioLista = ObjClientes.CvePrecioLista
Else
Alert("El Cliente Solicitado no existe, por favor revise su búsqueda.", TipoMensaje.MsgAdvertencia)
End If
@@ -1736,11 +1752,11 @@ Partial Class Ventas_PortalCliente
UpIxC.Update()
End Sub
- Private Sub CargaPedidos(Optional TopPedidos As Integer = 21)
+ Private Sub CargaPedidos(Optional TopPedidos As Integer = 21, Optional TipoDocto As String = "Pd2")
Dim FechaI = If(IsDate(txtFechaI.Text.Trim()), txtFechaI.Text.Trim.ToDate, MinFecha)
Dim FechaF = If(IsDate(txtFechaF.Text.Trim()), txtFechaF.Text.Trim.ToDate, MaxFecha)
Dim ObjClientes As New ClsClientes
- If ObjClientes.GetHistorialVentas(CveCliente, UsuarioActual.CveEmpresa, TopPedidos, CveClienteSucursal:=-1, TipoDocto:="Pd2", CveEstatusFactura:=DdlEstatus.SelectedValue.ToEntero(), FechaI:=FechaI, FechaF:=FechaF) Then
+ If ObjClientes.GetHistorialVentas(CveCliente, UsuarioActual.CveEmpresa, TopPedidos, CveClienteSucursal:=-1, TipoDocto:=TipoDocto, CveEstatusFactura:=DdlEstatus.SelectedValue.ToEntero(), FechaI:=FechaI, FechaF:=FechaF) Then
GvPedidos.DataSource = ObjClientes.DtResultados
If ObjClientes.DtResultados.Rows.Count < 21 Then
LnkVerMasPedidos.Visible = False
@@ -1753,15 +1769,24 @@ Partial Class Ventas_PortalCliente
End Sub
Protected Sub BtnConsultar_Click(sender As Object, e As EventArgs)
- CargaPedidos()
+ Dim TipoDocto As String = "Pd2"
+ If UsuarioActual.CveEmpresa = 143 Then
+ TipoDocto = "Rem"
+ End If
+ CargaPedidos(TipoDocto:=TipoDocto)
End Sub
Protected Sub BtnVerMasPedidos_Click(sender As Object, e As EventArgs)
+ Dim TipoDocto As String = "Pd2"
+ If UsuarioActual.CveEmpresa = 143 Then
+ TipoDocto = "Rem"
+ End If
+
If BtnVerMasVentas.Text = "Ver Más" Then
- CargaPedidos(-1)
+ CargaPedidos(-1, TipoDocto:=TipoDocto)
BtnVerMasVentas.Text = "Ver Menos"
Else
- CargaPedidos(21)
+ CargaPedidos(21, TipoDocto:=TipoDocto)
BtnVerMasVentas.Text = "Ver Más"
End If
End Sub
@@ -2532,7 +2557,7 @@ Partial Class Ventas_PortalCliente
#Region "CARGAS"
- Private Sub CargaFolios()
+ Private Sub CargaFolios(Optional TipoDocto As String = "Pd2")
If CveSubProyecto <= 0 Then
Alert("No se tienen asignadas sucursales", TipoMensaje.MsgError)
@@ -2540,8 +2565,8 @@ Partial Class Ventas_PortalCliente
End If
Dim ObjFolios As New ClsGralFolios()
- If ObjFolios.GetFolios("Pd2", UsuarioActual.CveEmpresa) Then
- Dim DT As DataTable = ObjFolios.DtResultados.FiltraParametros(String.Format("CveSubProyecto = {0} And Estado = 'Activo'", CveSubProyecto))
+ If ObjFolios.GetFolios(TipoDocto, UsuarioActual.CveEmpresa) Then
+ Dim DT As DataTable = ObjFolios.DtResultados.FiltraParametros(String.Format("CveSubProyecto = {0} And Estado = 'Activo'", CveSubProyecto))
If DT.Rows.Count > 0 Then
ViewState("CveFolio") = DT.Rows(0)("CveFolio").ToString.ToEntero
ViewState("FolioActual") = DT.Rows(0)("FActual").ToString
@@ -2593,8 +2618,13 @@ Partial Class Ventas_PortalCliente
TxtPrecio.Attributes.Add("onKeyUp ", "Recalcula();")
TxtCantidad.Attributes.Add("onKeyUp ", "Recalcula();")
- CargaFolios()
-
+ If UsuarioActual.CveEmpresa = 143 Then
+ CargaFolios("Rem")
+ Else
+ CargaFolios()
+ End If
+
+
Dim Dt = New DataSet
Dt.Tables.Add("Datos")
Dt.Tables("Datos").Columns.Add("")
@@ -2751,6 +2781,7 @@ Partial Class Ventas_PortalCliente
End Sub
Protected Sub DdlPS_selectedindexchange(sender As Object, e As EventArgs)
+ TxtPrecio.Text = ""
DdlPSIndexChange()
End Sub
@@ -2769,25 +2800,45 @@ Partial Class Ventas_PortalCliente
DdlUM.Items.Insert(0, New ListItem("Seleccione", "-1"))
DdlUM.SelectedValue = "-1"
DdlUM.DataBind()
- DdlUM.SelectedValueExist(drPS("CveUnidadMedida").ToString)
-
- TxtPrecio.Text = drPS("Precio").ToString.FormatoNumero(2).Replace(","c, "")
-
- If UsuarioActual.CveEmpresa = 80 Then
- 'busca el precio de la sucursal
- Dim ObjPS As New ClsProductosServicios
- If ObjPS.GetPSSucursales(DdlPS.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, CveSubProyecto) Then
- Dim dtt As DataTable = ObjPS.DtResultados
- Dim drPrecio As DataRow = dtt.FiltroPrimero("")
-
- If drPrecio IsNot Nothing Then
- TxtPrecio.Text = drPrecio("Importe").ToString.ToDouble.ToString("N4")
- End If
- dtt.Dispose()
- End If
-
- ObjPS.Dispose()
- End If
+ DdlUM.SelectedValueExist(drPS("CveUnidadMedida").ToString)
+
+ If UsuarioActual.CveEmpresa = 143 Then
+ If CvePrecioLista > 0 Then
+ Dim ObjPS As New ClsProductosServicios
+ If ObjPS.GetPSPreciosLista(UsuarioActual.CveEmpresa, CvePrecioLista, CvePS:=DdlPS.SelectedValue.ToEntero()) Then
+ If ObjPS.DtResultados.Rows.Count > 0 Then
+ TxtPrecio.Text = ObjPS.DtResultados.Rows(0)("PrecioLista").ToString().ToDecimal().FormatoNumero()
+ Else
+ TxtPrecio.Text = ""
+ End If
+ Else
+ TxtPrecio.Text = ""
+ End If
+ ObjPS.Dispose()
+ End If
+ Else
+ If UsuarioActual.CveEmpresa = 80 Then
+ 'busca el precio de la sucursal
+ Dim ObjPS As New ClsProductosServicios
+ If ObjPS.GetPSSucursales(DdlPS.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, CveSubProyecto) Then
+ Dim dtt As DataTable = ObjPS.DtResultados
+ Dim drPrecio As DataRow = dtt.FiltroPrimero("")
+
+ If drPrecio IsNot Nothing Then
+ TxtPrecio.Text = drPrecio("Importe").ToString.ToDouble.ToString("N4")
+ End If
+ dtt.Dispose()
+ End If
+
+ ObjPS.Dispose()
+ Else
+ TxtPrecio.Text = drPS("Precio").ToString.FormatoNumero(2).Replace(","c, "")
+ End If
+ End If
+
+ If TxtPrecio.Text.ToDecimal() <= 0 Then
+ Alert("No se encontro un precio para el producto seleccionado", TipoMensaje.MsgAdvertencia)
+ End If
If DdlClasificacion.SelectedIndex = 0 Then
If drPS("CveClasificacion").ToString IsNot Nothing Then
@@ -2804,6 +2855,7 @@ Partial Class Ventas_PortalCliente
Else
Alert("Es necesario seleccionar el cliente al cual se le va a facturar.", TipoMensaje.MsgAdvertencia, "AbrirVentana(""/Ventas/PopUpBuscarClientes.aspx?Opt=Fact"", 800, 547, ""N"", ""PopUpBuscar"")")
End If
+
RegistraScript("Recalcula();")
UpVenta.Update()
@@ -2819,6 +2871,21 @@ Partial Class Ventas_PortalCliente
#Region "AGREGAR/EDITAR/ELIMINAR"
Protected Sub LnkAddPedido_Click(sender As Object, e As EventArgs)
+ If TmpDT IsNot Nothing Then
+ TmpDT.Rows.Clear()
+ TxtObsFact.Text = ""
+
+ GvPS.DataSource = TmpDT
+ GvPS.DataBind()
+
+ CalculaTotalesVenta()
+ End If
+
+ If UsuarioActual.CveEmpresa = 143 Then
+ DdlMoneda.SelectedValueExist(1)
+ DdlMoneda.Enabled = False
+ End If
+
RegistraScript("$('#DivVenta').modal({backdrop: 'static',keyboard: false});")
End Sub
Protected Sub LnkAddPSVenta_Click(sender As Object, e As EventArgs)
@@ -2836,7 +2903,13 @@ Partial Class Ventas_PortalCliente
End If
DdlClasificacion.SelectedIndex = -1
DdlUM.Items.Clear()
- ChkAgregar.Checked = True
+ ChkAgregar.Checked = True
+
+ If UsuarioActual.CveEmpresa = 143 Then
+ TxtPrecio.Enabled = False
+ End If
+
+ UpVenta.Update()
UpAddPedido.Update()
RegistraScript("$('#DivAddVenta').modal({backdrop: 'static',keyboard: false});")
@@ -2850,7 +2923,7 @@ Partial Class Ventas_PortalCliente
CargaPS(DdlClasificacion.SelectedValue.ToEntero, DdlPS)
UpClasificacion.Update()
If Not UsuarioActual.Empresa.Funcionalidad(141).ToString = "1" Then
- DdlPS.SelectedValue = GvRow.DataKey("CvePS")
+ DdlPS.ddl.SelectedValueExist(GvRow.DataKey("CvePS"))
Else
DdlPS.SelectedValue = GvRow.DataKey("CvePS")
DdlPS.SelectedText = GvRow.DataKey("PS")
@@ -2905,7 +2978,21 @@ Partial Class Ventas_PortalCliente
UpAddPedido.Update()
End Sub
- Private Sub AgregarPS()
+ Private Sub AgregarPS()
+ If TxtPrecio.Text.ToDecimal() <= 0 Then
+ Alert("El precio del producto debe ser mayor a cero", TipoMensaje.MsgAdvertencia)
+ Exit Sub
+ End If
+
+ If UsuarioActual.CveEmpresa = 143 Then
+ For Each Row As DataRow In TmpDT.FiltraParametros("", DistinctColumns:={"CveClasificacion", "Clasificacion"}).Rows
+ If DdlClasificacion.SelectedValue.ToEntero <> Row("CveClasificacion").ToString().ToEntero() Then
+ Alert($"El pedido actual solo es para la clasificación '{Row("Clasificacion")}'. Debe seleccionar productos de la misma clasificación", TipoMensaje.MsgAdvertencia)
+ Exit Sub
+ End If
+ Next
+ End If
+
If Modalidad = "U" Then
Dim ErrorEdit As Boolean = True
@@ -3181,7 +3268,7 @@ Partial Class Ventas_PortalCliente
Timbre.Comprobante.FormadePago = Obj.FormaPagoSAT33
Timbre.Comprobante.CondicionesdePago = Obj.FormaPago33
Timbre.Comprobante.MetodoPago = Obj.ClaveMetodoPagoSAT
- Timbre.Comprobante.Subtotal = Obj.SubTotal
+ Timbre.Comprobante.SubTotal = Obj.SubTotal
Timbre.Comprobante.Descuentos = Obj.Descuento
Timbre.Comprobante.Moneda = Obj.MonedaSAT
Timbre.Comprobante.TipoCambio = If(Obj.CveMoneda = 1, "1", Obj.TipoCambio.ToString)
@@ -3284,11 +3371,139 @@ Partial Class Ventas_PortalCliente
i += 1
Next
Return Timbre
- End Function
-
-
- Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs)
-
+ End Function
+
+
+
+ Protected Sub BtnGuardar_Click(sender As Object, e As EventArgs)
+
+ If UsuarioActual.CveEmpresa = 143 Then
+ GuardarWS()
+ Else
+ Guardar()
+ End If
+
+ End Sub
+
+ Private Function SubProyectosClasificaciones() As Hashtable
+ Dim retorno As New Hashtable()
+
+ 'CVECLASIFICACION/CVESUBPROYECTO
+ retorno.Add(20331, 11713)
+ retorno.Add(20332, 11761)
+ retorno.Add(20333, 11714)
+
+ Return retorno
+ End Function
+
+ Private Sub GuardarWS()
+
+ Dim DtClasificaciones As DataTable = TmpDT.FiltraParametros("", DistinctColumns:={"CveClasificacion", "Clasificacion"})
+
+ If DtClasificaciones IsNot Nothing AndAlso DtClasificaciones.Rows.Count > 1 Then
+ Alert("El pedido debe tener productos de una misma clasificación", TipoMensaje.MsgAdvertencia)
+ Exit Sub
+ End If
+
+ Dim CveSubProyectoPedido As Integer = -1
+
+ Dim CveClasificacion As Integer = TmpDT.FiltroPrimeroValor("CveClasificacion").ToEntero()
+
+ Dim SubProyectos = SubProyectosClasificaciones()
+
+ 'VERIFICA SI LA CLASIFICACION PERTENECE AL SUBPROYECTO
+ If SubProyectos.ContainsKey(CveClasificacion) Then
+ CveSubProyectoPedido = SubProyectos(CveClasificacion).ToString().ToEntero()
+ Else
+ CveSubProyectoPedido = Me.CveSubProyecto
+ End If
+
+ Dim productos As New JArray()
+ For Each Row As DataRow In TmpDT.Rows
+ productos.Add(New JObject(
+ New JProperty("CvePS", Row("CvePS").ToString().ToEntero()),
+ New JProperty("Cantidad", Row("Cantidad").ToString().ToDecimal()),
+ New JProperty("Obs", Row("Obs").ToString()),
+ New JProperty("Precio", Row("PU").ToString().ToDecimal()),
+ New JProperty("Descuento", Row("Descuento").ToString().ToDecimal())
+ )
+ )
+ Next
+
+ Dim URLAPI As String = "https://sig.adssistemas.mx/asmx/WSApp.asmx?WSDL"
+
+ If Not EsProduccion Then
+ URLAPI = "http://localhost:85/asmx/WSApp.asmx?WSDL"
+ End If
+
+ Dim jsonResp = EnviarPedidoWS(URLAPI, CveCliente, CveSubProyectoPedido, UsuarioActual.CveUsuario, TxtObsFact.Text, productos.ToString())
+
+ If Not String.IsNullOrEmpty(jsonResp) Then
+ Dim resp As JObject = JObject.Parse(jsonResp)
+ Dim TieneError As Boolean = CBool(resp("TieneError"))
+ If Not TieneError Then
+ Alert($"La remisión '{resp("SerieFolio")}' se genero correctamente.", JSBtnAceptar:="CerrarModalVenta();", ShowCloseButton:=False)
+ CargaPedidos(TipoDocto:="Rem")
+ Else
+ Alert($"Ocurrió un error al generar el pedido.", TipoMensaje.MsgError)
+ End If
+ End If
+
+ End Sub
+
+ Private Function EnviarPedidoWS(ByVal url As String, CveCliente As Integer, CveSubProyecto As Integer, CveUsuario As Integer, Observaciones As String, Productos As String) As String
+ Dim retorno = ""
+
+ Try
+ Dim request As HttpWebRequest = CType(WebRequest.Create($"{url}"), HttpWebRequest)
+ request.ContentType = "text/xml;charset=""utf-8"""
+ request.Accept = "text/xml"
+ request.Method = "POST"
+ Dim XMLString As String = $"
+
+
+ {CveCliente}
+ {CveSubProyecto}
+ {CveUsuario}
+ {Observaciones}
+ {Productos}
+
+
+ "
+ Dim SOAPReqBody As XmlDocument = New XmlDocument()
+ SOAPReqBody.LoadXml(XMLString)
+
+ Using stream As Stream = request.GetRequestStream()
+ SOAPReqBody.Save(stream)
+ End Using
+
+ Dim response As String = ""
+
+ Using Serviceres As WebResponse = request.GetResponse()
+ Using rd As StreamReader = New StreamReader(Serviceres.GetResponseStream())
+ response = rd.ReadToEnd()
+ End Using
+ End Using
+
+ If Not String.IsNullOrEmpty(response) Then
+ Dim xmlRetorno = New XmlDocument()
+ xmlRetorno.LoadXml(response)
+ retorno = xmlRetorno.InnerText
+ Else
+ Alert($"Ocurrió un error al leer la respuesta.", TipoMensaje.MsgError)
+ retorno = ""
+ End If
+
+ Catch ex As Exception
+ retorno = ""
+ OnError("Ocurrió un error al guardar el pedido", ex)
+ End Try
+
+ Return retorno
+ End Function
+
+
+ Private Sub Guardar()
If TmpDT Is Nothing OrElse TmpDT.Rows.Count = 0 Then
Alert("Es necesario tener al menos un concepto registrado.", TipoMensaje.MsgAdvertencia)
Exit Sub
@@ -3423,9 +3638,9 @@ Partial Class Ventas_PortalCliente
End If
- End If
-
- End Sub
+ End If
+ End Sub
+
Private Sub EnviarCorreoPedido(ObjFactura As Modelos.Factura)
Dim Hilo As New System.Threading.Thread(Sub() MandaMails(UsuarioActual, ObjFactura.CveVenta, True, ObjFactura))
Hilo.Start()
|