Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

La plataforma está compuesta por un conjunto de funciones (métodos), los cuales se presentan en un documento técnico en detalle.

Enumeraciones

 

Child pages (Children Display)
alltrue
page3. Enumeraciones

Clases

Child pages (Children Display)
alltrue
page2. Clases

Métodos

Child pages (Children Display)
alltrue
page3. Métodos

Modo de Operación

La forma de operar con este webservice simula la forma de operar con el ERP.

1. Se debe crear una referencia al servicio web:

Code Block
languagevb
linenumberstrue
Dim ws As New ServiceClient()

2. Iniciar una sesión: De la misma forma en que se inicia sesión en el sistema, se debe enviar el código del cliente, del usuario y la contraseña al servidor.  El método Login acepta estos parámetros y retorna un objeto de tipo Sesion, el que debe ser usado para invocar todos los métodos.

Code Block
languagevb
linenumberstrue
Dim sesion As Sesion
sesion = ws.Login( "CODIGO_CLIENTE", "CODIGO_USUARIO", "PASSWORD", "IP_ORIGEN")

3. Seleccionar una empresa: Al iniciar una sesión en el sistema, es importante seleccionar una empresa, ya que el 90% de los datos ingresados están asociados directamente con una empresa.

    1. Para ver las empresas que tiene el cliente se debe invocar el método GetEmpresas:
Code Block
languagevb
linenumberstrue
Dim empresas As Empresa()
empresas = ws.GetEmpresas(sesion)

b. Para asignarle una empresa a una sesión, se debe asignar el código de la empresa al atributo.

Code Block
languagevb
linenumberstrue
sesion.IDEmpresa = empresas(0).IDEmpresa
sesion.IDEmpresa = "CODIGO_EMPRESA"

4. Operar con el sistema: Una vez iniciada la sesión y seleccionada la empresa se pueden ejecutar los otros métodos.  El sistema será capaz de determinar el nivel de acceso que el usuario tenga a cada método y arrojará excepciones indicando mensajes ante cualquier situación que salga del curso normal de ejecución del método.

Code Block
languagevb
linenumberstrue
Dim sesion As Sesion
    Dim ws As New ServiceClient

    Dim cot97754 As Cotizacion
    Dim cot97755 As Cotizacion
    Dim cot97756 As Cotizacion
    Dim cot97757 As Cotizacion
    Dim cot97758 As Cotizacion
    Dim cotizaciones() As Cotizacion
    Dim nuevaCotizacion As Cotizacion

    Dim nuevoDetalles As List(Of CotizacionDetalle)
    Dim nuevoRecargosDescuentos As List(Of CotizacionRecargoDescuento)
    Dim nuevoImpuestos As List(Of DetalleImpuesto)
    Dim nuevoTasas As List(Of CotizacionTasa)

    Try
        sesion = ws.Login("ASPDEFONTANA", "ASPDEFONTANA", "2", "")
        sesion.IDEmpresa = "ASPDEFONTANA"

        cot97754 = ws.GetCotizacion(sesion, 97754)
        cot97755 = ws.GetCotizacion(sesion, 97755)
        cot97756 = ws.GetCotizacion(sesion, 97756)
        cot97757 = ws.GetCotizacion(sesion, 97757)
        cot97758 = ws.GetCotizacion(sesion, 97758)

        ' MODIFICACIÓN
        cot97754.MotivoRechazo = "CAMBIA EL MOTIVO DEL RECHAZO " & Date.UtcNow()
        cot97754.Observacion = "CAMBIA LA OBSERVACION " & Date.UtcNow()
        ws.ModificaCotizacion(sesion, cot97754)

        cot97756.Estado = EstadoCotizacion.PENDIENTE

        ' ELIMINACIÓN
        ws.EliminaCotizacion(sesion, cot97756)

        ' CAMBIO DE ESTADO
        ws.CambiaEstadoCotizacion(sesion, cot97756, EstadoCotizacion.RECHAZADA)


        ' GRABACIÓN.  Copio los datos de una cotización existente pero la grabo como una nueva.
        nuevaCotizacion = New Cotizacion()
        nuevaCotizacion.Afecto = cot97756.Afecto
        nuevaCotizacion.Total = cot97756.Total
        nuevaCotizacion.Estado = cot97756.Estado
        nuevaCotizacion.Exento = cot97756.Exento
        nuevaCotizacion.Fecha = cot97756.Fecha
        nuevaCotizacion.FechaCierre = cot97756.FechaCierre
        nuevaCotizacion.FechaExpiracion = cot97756.FechaExpiracion
        nuevaCotizacion.IDCondicionPago = cot97756.IDCondicionPago
        nuevaCotizacion.IDContactoFicha = cot97756.IDContactoFicha
        nuevaCotizacion.IDEmpresa = cot97756.IDEmpresa
        nuevaCotizacion.IDFichaCliente = cot97756.IDFichaCliente
        nuevaCotizacion.IDListaPrecio = cot97756.IDListaPrecio
        nuevaCotizacion.IDMoneda = cot97756.IDMoneda
        nuevaCotizacion.TasaCambio = cot97756.TasaCambio
        nuevaCotizacion.IDTipoDocumento = cot97756.IDTipoDocumento
        nuevaCotizacion.IDVendedor = cot97756.IDVendedor
        nuevaCotizacion.MotivoRechazo = cot97756.MotivoRechazo
        nuevaCotizacion.Subtotal = cot97756.Subtotal
        nuevaCotizacion.Numero = 0 ' Asigno 0 para que el sistema asigne el último disponible.
        nuevaCotizacion.Observacion = cot97756.Observacion
        nuevaCotizacion.RecargoDescuento = cot97756.RecargoDescuento

 ' Creo un nuevo arreglo con la cantidad de elementos a contener.       
 nuevoDetalles = New List(Of CotizacionDetalle)(cot97756.Detalles.Length)

        For Each detalle As CotizacionDetalle In cot97756.Detalles
            Dim nuevoDetalle As New CotizacionDetalle With {
                .Cantidad = detalle.Cantidad,
                .Comentario = detalle.Comentario,
                .FechaEntrega = detalle.FechaEntrega,
                .IDProducto = detalle.IDProducto,
                .LineaDetalle = detalle.LineaDetalle,
                .PrecioUnitario = detalle.PrecioUnitario,
                .RecargoDescuento = detalle.RecargoDescuento,
                .SubTotal = detalle.SubTotal,
                .Tipo = detalle.Tipo,
                .TipoRecargoDescuento = detalle.TipoRecargoDescuento
            }

            nuevoDetalles.Add(nuevoDetalle)
        Next
        nuevaCotizacion.Detalles = nuevoDetalles.ToArray()

         ' Creo un nuevo arreglo con la cantidad de elementos a contener.
        nuevoImpuestos = New List(Of DetalleImpuesto)(cot97756.Impuestos.Length)

        For Each impuesto As DetalleImpuesto In cot97756.Impuestos
            Dim nuevoImpuesto As New DetalleImpuesto With {
                .IDImpuesto = impuesto.IDImpuesto,
                .MontoImpuesto = impuesto.MontoImpuesto,
                .PorcentajeImpuesto = impuesto.PorcentajeImpuesto
            }
            nuevoImpuestos.Add(nuevoImpuesto)
        Next
        nuevaCotizacion.Impuestos = nuevoImpuestos.ToArray()

         ' Creo un nuevo arreglo con la cantidad de elementos a contener.
        nuevoRecargosDescuentos = New List(Of CotizacionRecargoDescuento)(cot97756.RecargosDescuentos.Length)

        For Each rd As CotizacionRecargoDescuento In cot97756.RecargosDescuentos
            Dim nuevoRD As New CotizacionRecargoDescuento With {
                .Linea = rd.Linea,
                .Monto = rd.Monto,
                .Nombre = rd.Nombre,
                .Porcentaje = rd.Porcentaje,
                .TipoRecargoDescuento = rd.TipoRecargoDescuento
            }
            nuevoRecargosDescuentos.Add(nuevoRD)
        Next
        nuevaCotizacion.RecargosDescuentos = nuevoRecargosDescuentos.ToArray()

         ' Creo un nuevo arreglo con la cantidad de elementos a contener.
        nuevoTasas = New List(Of CotizacionTasa)(cot97756.Tasas.Length)

        For Each t As CotizacionTasa In cot97756.Tasas
            Dim nuevoT As New CotizacionTasa With {
                .IDMoneda = t.IDMoneda,
                .Tasa = t.Tasa
            }
            nuevoTasas.Add(nuevoT)
        Next
        nuevaCotizacion.Tasas = nuevoTasas.ToArray()

        ws.GrabaCotizacion(sesion, nuevaCotizacion)

        ' CAMBIOS DE ESTADO
        ws.CambiaEstadoCotizacion(sesion, cot97757, EstadoCotizacion.RECHAZADA)
        ws.CambiaEstadoCotizacion(sesion, cot97758, EstadoCotizacion.PENDIENTE)

        ' CONSULTAS VARIAS
        Console.WriteLine("CONSULTA ESTADO RECHAZADO.")
        cotizaciones = ws.GetCotizaciones(sesion, EstadoCotizacion.RECHAZADA, Nothing, Nothing, Nothing, Nothing, Nothing)
        If cotizaciones.Length = 0 Then
            Console.WriteLine("No se han encontrado cotizaciones.")
        Else
            For Each cotizacion In cotizaciones
                Console.WriteLine("cotizacion #{0} para el cliente {1} por un monto de ${2}.", cotizacion.Numero, cotizacion.IDFichaCliente, cotizacion.Total)
            Next
        End If

        Console.WriteLine("CONSULTA FECHA COTIZACION.")
        cotizaciones = ws.GetCotizaciones(sesion, Nothing, Nothing, Nothing, "2009-10-07", Nothing, Nothing)
        If cotizaciones.Length = 0 Then
            Console.WriteLine("No se han encontrado cotizaciones.")
        Else
            For Each cotizacion In cotizaciones
                Console.WriteLine("cotizacion #{0} para el cliente {1} por un monto de ${2}.", cotizacion.Numero, cotizacion.IDFichaCliente, cotizacion.Total)
            Next
        End If


        Console.WriteLine("CONSULTA NUMERO COTIZACION.")
        cotizaciones = ws.GetCotizaciones(sesion, Nothing, 94084, Nothing, Nothing, Nothing, Nothing)
        If cotizaciones.Length = 0 Then
            Console.WriteLine("No se han encontrado cotizaciones.")
        Else
            For Each cotizacion In cotizaciones
                Console.WriteLine("cotizacion #{0} para el cliente {1} por un monto de ${2}.", cotizacion.Numero, cotizacion.IDFichaCliente, cotizacion.Total)
            Next
        End If

        ws.Logout(sesion)

    Catch ex As Exception

        Console.WriteLine("Ha ocurrido el siguiente error:")
        Console.WriteLine(ex.Message)

    Finally

        If ws.State = CommunicationState.Opened Then ws.Close()

        ws = Nothing
        sesion = Nothing

    End Try

    5. Finalizar la sesión:

...

languagevb
linenumberstrue

...

Componentes

...


Child pages (Children Display)
alltrue