Páginas

viernes, 23 de octubre de 2015

Test sobre Valoracion Aduanera en los Estados Unidos

Para mis amigos profesionales del comercio exterior, una vez mas pónganse a prueba!

Cuales de los siguientes Incotermos son utilizados por la aduana de los Estados Unidos como base imponible para el cálculo de los impuestos a la importación?
  • FAS
  • FOB
  • CIP
  • CIF
  • CPT
  • FCA
  • CFR

jueves, 22 de octubre de 2015

VBA Excel: Como abrir, pasar y extraer datos de una pagina web usando Macros.

Hace poco mas de un año escribí un post sobre como abrir una pagina web desde excel, pero viéndolo bien, estába un poco complicado. Así que decidí hacer una nueva publicación un poco mas didáctica y fácil de reproducir por cualquiera que desee intentarlo.

Esta macro entra al sitio web de Airbnb y extrae los precios que se despliegan en la primera página de resultados. Las técnicas que se utilizan en este ejemplo pueden servir para que cada uno las aplique a algun otro tipo de investigación para su trabajo o estudio.

Comenzamos con un archivo en el cual ingreso una ciudad, fecha de check in, fecha de salida y número de huéspedes. Las celdas de fecha tienen formato de texto para que coincida con el formato que exige la página.


 Antes de escribir el código, debemos incluir las librerías que nos permiten acceder a los controles de internet que vamos a utilizar, eso lo hacemos en el editor de visual basic, en tools/references. Allí seleccionamos las opciones que vemos a continuación (Microsoft Internet Controls y Microsoft HTML Object Library):



Ahora sí comenzamos a escribir la macro:


Sub navegar()

'las declaraciones son opcionales, pero ayudan a visualizar las opciones mientras se digita
Dim ie As InternetExplorer
Dim pagina As HTMLDocument
Dim buscar As HTMLButtonElement
Dim precios As Object
Dim precio As Object

'crea el explorador de internet
Set ie = New InternetExplorer

'hacemos visible el explorador
ie.Visible = True

'navega a la página de aribnb
ie.navigate "https://www.airbnb.com/"

'espera a que la página cargue
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE

'la página cargada la asignamos a la variable "pagina"
Set pagina = ie.document

Interrumpo el código para explicar algo: Para ir llenando los campos que pide la página, con hacer click en el boton derecho e "inspeccionar elemento" podemos identificar los nombres de cada campo:



El campo de la ciudad, que se llama "location":

El campo para la fecha de check in, se llama "checkin":

El campo de check out es "checkout":

La lista de huéspedes, tiene un id ("guests") y a su vez varias opciones dentro de si:

Y el botón de enviar, que tiene el id "submit_location":

Ahora que ya sabemos como ubicarlos, procedemos a pasarles valores los cuales tomamos del libro de excel:


'asignamos el valor de una ciudad
pagina.getElementById("location").Value = Range("B1").Value

'esperamos un segundo para que puedas visualizar los cambios que estas realizando
Application.Wait (Now + TimeValue("0:00:02"))

'pasamos a "checkin" la fecha de ingreso
pagina.getElementById("checkin").Value = Range("B2").Value

Application.Wait (Now + TimeValue("0:00:02"))

'pasamos la fecha de check out
pagina.getElementById("checkout").Value = Range("B3").Value

Application.Wait (Now + TimeValue("0:00:02"))

'pasamos el "value" que nos interesa a la lista "guests"
pagina.getElementById("guests").Value = Range("B4").Value

Application.Wait (Now + TimeValue("0:00:02"))

'seleccionamos el botón de buscar y hacemos click
pagina.getElementById("submit_location").Click

'asignamos a una variable el estado de la página
stat = pagina.readyState

'Espera a que la página cargue
Do While stat = "loading"
    Application.Wait (Now + TimeValue("0:00:01"))
    stat = pagina.readyState
Loop


En la página siguiente vemos los precios de todas las habitaciones, lo que nos interesa es el valor del elemento que contiene la suma en dólares.

Como queremos todos los precios, hay que buscar la manera de recogerlos todos. Vemos que el elemento no tiene un "id",  pero todos tienen en común un nombre de "class". Con el método getElementsByClassName, buscamos ese nombre de clase y así obtendremos una colección de todos los campos:



'creamos la lista de precios

Set precios = pagina.getElementsByClassName("h3 text-contrast price-amount")

'comenzaremos a llenar el excel en la fila 7
fila = 7

'hacemos un loop por cada elemento de la lista de precios y lo agregamos al excel:
For Each precio In precios
    Range("A" & fila).Value = precio.innerText
    fila = fila + 1
Next


End Sub

Y listo, este es el resultado final:

Para aprender un poco mas sobre como extraer información de paginas web, prueba con este otro caso: Buscar definiciones de palabras en la pagina de la RAE



Cada pagina web es diferente, si la macro no funciona como esperabas, enviame un mail y si no es muy complicado el asunto quizás pueda darte una ayuda extra.

lunes, 5 de octubre de 2015

Test super sencillo sobre el uso de los INCOTERMS



Los que estudiaron Comercio Exterior, o los que trabajamos en ello, llevamos tanto tiempo tratando con los Incoterms, que ya ni les hacemos mucho caso... Tendemos a asumir muchas cosas sobre ellos y damos respuestas casi automáticas y condescendientes cuando alguien de otra área nos molesta con preguntas 'tan básicas'.

El único problema que le veo a esta actitud es que ya ni pensamos realmente en lo que cada uno significa. Para nostros está TAN sobreentendido que 'FOB es sobre la borda del buque' y que 'CIF incluye flete y seguro' que pensamos que ya sabemos todo sobre los Incoterms (o al menos lo mas importante) pero lo mas probable es que NO sea así...

Las 5 preguntas que vienen a continuación se las hice a algunos amigos que trabajan en Comercio Exterior y la mayoria no pudo responderlas correctamente. Si las contestas todas sin mucho inconveniente, pues te felicito por ser parte de una minoría con buen entendimiento del correcto manejo de los Incoterms:

1. Describe dos Incoterms de tu preferencia.
2. ¿Cual es el Incoterm mas fácil para el importador y cual es el más difícil para el importador?
3. Los incoterms DAP, DAT y DDP no incluyen seguro, ¿por que?
4. ¿Por qué un país en desarrollo preferiría que sus importaciones sean CFR o CPT y no CIF o CIP?
5. Una empresa de comercio internacional exige siempre que el exportador le entregue la carga en terminos FCA fabrica del exportador. ¿Cual sería el principal motivo?