Etiquetas

viernes, 3 de enero de 2014

Actualizar Tipo de Cambio desde webservice de Banxico

Basándome en los ejemplos de SDK en el apartado de UI (por ejemplo el de catching events) , despues del SetApplication() agregue la siguiente función, para que al iniciar el add-on se actualizara el tipo de cambio


    Public Sub ActualizarTC()
        Try


            Dim dbTC As Double
            Dim lErrCode As Integer
            Dim lRetCode, sErrMsg As String
            Dim httpBanxico As HttpWebRequest = CType(WebRequest.Create("http://www.banxico.org.mx/DgieWSWeb/DgieWS?WSDL"), HttpWebRequest)
            WebRequest.DefaultWebProxy = httpBanxico.Proxy
            Dim TipoCambio As New Banxico.DgieWSPortClient
            Dim strTipoCambio As String
            strTipoCambio = TipoCambio.tiposDeCambioBanxico
            Dim doc As XElement = XElement.Parse(strTipoCambio)
            Dim queryTC As IEnumerable(Of XElement) = From d In doc.. Where d.@IDSERIE = "SF60653"
            Select d
            For Each d As XElement In queryTC
                dbTC = d..@OBS_VALUE
            Next


            oSBObob = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoBridge)
            oSBObob.SetCurrencyRate("USD", Today, dbTC, False)


            oCompany.GetLastError(lErrCode, sErrMsg)
            If lErrCode <> 0 Then
                SBO_Application.SetStatusBarMessage(sErrMsg, SAPbouiCOM.BoMessageTime.bmt_Short, True)
            End If


            SBO_Application.SetStatusBarMessage("Tipo de cambio actualizado: " & dbTC.ToString, SAPbouiCOM.BoMessageTime.bmt_Long, False)
           


        Catch ex As Exception
            SBO_Application.SetStatusBarMessage(ex.Message, SAPbouiCOM.BoMessageTime.bmt_Long, False)


        End Try


End Sub

Requisitos:
  • Crear el add-on con .Net Framework 4.5 y por consecuencia tener instalado 4.5 en los equipos que lo ejecutarían
  • Agregar las referencias:

  1. System.XML
  2. System.XML.linq
  3. System.ServiceModel

  • Agregar en VS la referencia de servicio de la siguiente dirección: http://www.banxico.org.mx/DgieWSWeb/DgieWS?WSDL
  • Ya al instalar, hay que colocar dentro de la carpeta de instalación: el archivo   [NOMBREDELADD_ON].exe.config,
  • Importar :
Imports System.Net
Imports System.IO
Imports TipodeCambio.Banxico

Espero les sea de utilidad
Cualquier duda a sus ordenes

viernes, 26 de abril de 2013

Dejar los campos definidos por Usuario de Manera Dinamica

Cuando estamos trabajando en desarrollar un escenario donde el origen en un objeto de SAP
Y se va a insertar en un objeto de SAP

Por ejemplo copiar de Entrega a Factura

Y estos objetos tiene campos definidos por el usuario, podemos utilziar estas funciones para dejarlo de manera dinamica.

Por ejemplo por si agregan un campo nuevo en el futuro este tambien este considerado

miércoles, 24 de abril de 2013

Comprar / Vender Articulos Inventariables SIN afectar existencias

En ocaciones surge el requerimiento de ya sea en la factura de porveedores o en la factura de clientes,  detallar los codigos de articulos, y estos son inventariables,  pero no requerimos que haya una afectación de inventarios.
Puede darse por varios motivos

  • El material  se envia directo del proveedor al cliente.
  • Aporvechar para ajustar diferencias de inventario.
  • Ya se dio salida a  la mercancia con otro movimiento.
  • Notas de credito que requieran expresar el detalle pero sin devolver mercancia (ya hay otras soluciones en versiones recientes)
  • etc.


Para esto en SAP Business One podemos crear un almacen de "Envio Directo"

Para crearlo hay que ir a Gestion --> Definiciones --> Inventarios --> Almacenes

En la pestaña de general quitar el check de el campo Tabla neta  y colocar el check de "envio directo"

Es importante configurar la cuenta "Cuenta de Compensación de Gastos" ya que ha esta cuenta se ira el registro de los costos en caso de utilizarlo en una factura de Proveedor


Al vender no afectara ni cuentas de existencias, cuentas de costos , ni cantidades en inventario



martes, 23 de abril de 2013

Repetir un registro N numero de veces en base a un campo

En ocaciones tenemos la necesidad de repetir el resultado de una consulta dependiendo de un valor en especifico de la consulta

Por ejemplo , tenemos una consulta que nos trae el registro de los articulos vendidos en una orden de venta