martes, 22 de septiembre de 2015

Convertir Fecha Oracle a formato JSON de 13 caracteres

El uso de los formatos JSON para enviar datos entre sistemas y su utilización en implementaciones de JScript nos ha obligado a acostumbrarnos a usar las fechas en formato de 13 caracteres (p.e. 1442966675000). Sin embargo me fue muy difícil encontrar la manera de generarlo desde el mismo oracle.

Navegando encontré que se puede reproducir este formato desde una consulta sql en oracle de la siguiente manera:

select (sysdate - to_date('1970-01-01', 'yyyy-mm-dd'))/( 1 / 24 / 60 / 60 / 1000) from dual;

Así también se puede obtener la fecha a partir de este formato de 13 caracteres:

select date '1970-01-01' + ( 1 / 24 / 60 / 60 / 1000) * 1442966675000 from dual;


Espero que les sirva, me basé en este post



miércoles, 1 de julio de 2015

Iconos Unicode para correo

Hace unos días me llegó un correo de publicidad que incluía en su asunto unos iconos muy llamativos que captaron mi atención y me puse a investigar sobre el asunto.

Leí por ahí que los expertos en marketing directo indican que los correos con estos iconos en el asunto tienen el 50% más probabilidad de abrirse que los correos que no tienen iconitos.

Inicié la búsqueda de un listado oficial de estos iconos pero encontré mucha información que faltaba actualizar, hasta que dí con esta lista en PDF de Unicode.org

http://www.unicode.org/charts/PDF/U1F300.pdf

Quise hacer una prueba y lamentablemente al copiar y pegar desde el pdf algunos de estos iconos en el asunto de un correo nuevo de gmail algunos eran reconocidos y otros no. Por lo que opté por publicar la lista en este artículo pero me dí con la sorpresa que al publicar el artículo no se reconocen los íconos, pero en modo edición de mi artículo sí los veo casi todos. En modo edición de mi artículo copié y pegué nuevamente en el asunto de mi correo y funcionó, pude usarlos y obtuve este hermoso resultado que se ve en la imagen principal de este artículo.

Los clientes de correo grandes como Yahoo, Gmail, Apple mail, ya agregan colores a estos iconos con lo que se hace más vistoso nuestro correo en una bandeja de entrada.

Espero que haberlos ayudado en algo, saludos

PD: Igualmente adjunto la lista de iconos que aunque no se reconocen me servirá para mi uso personal :)





🌀 🌁 🌂 🌃 🌄 🌅 🌆 🌇 🌈 🌉 🌊 🌋 🌌 🌍 🌎 🌏 🌐 🌑 🌒 🌓 🌔 🌕 🌖 🌗 🌘 🌙 🌚 🌛 🌜 🌝 🌞 🌟 🌠 🌡 🌢 🌣 🌤 🌥 🌦 🌧 🌨 🌩 🌪 🌫 🌬 🌭 🌮 🌯 🌰 🌱 🌲 🌳 🌴 🌵 🌶 🌷 🌸 🌹 🌺 🌻 🌼 🌽 🌾 🌿 🍀 🍁 🍂 🍃 🍄 🍅 🍆 🍇 🍈 🍉 🍊 🍋 🍌 🍍 🍎 🍏 🍐 🍑 🍒 🍓 🍔 🍕 🍖 🍗 🍘 🍙 🍚 🍛 🍜 🍝 🍞 🍟 🍠 🍡 🍢 🍣 🍤 🍥 🍦 🍧 🍨 🍩 🍪 🍫 🍬 🍭 🍮 🍯 🍰 🍱 🍲 🍳 🍴 🍵 🍶 🍷 🍸 🍹 🍺 🍻 🍼 🍽 🍾 🍿 🎀 🎁 🎂 🎃 🎄 🎅 🎆 🎇 🎈 🎉 🎊 🎋 🎌 🎍 🎎 🎏 🎐 🎑 🎒 🎓 🎔 🎕 🎖 🎗 🎘 🎙 🎚 🎛 🎜 🎝 🎞 🎟 🎠 🎡 🎢 🎣 🎤 🎥 🎦 🎧 🎨 🎩 🎪 🎫 🎬 🎭 🎮 🎯 🎰 🎱 🎲 🎳 🎴 🎵 🎶 🎷 🎸 🎹 🎺 🎻 🎼 🎽 🎾 🎿 🏀 🏁 🏂 🏃 🏄 🏅 🏆 🏇 🏈 🏉 🏊 🏋 🏌 🏍 🏎 🏏 🏐 🏑 🏒 🏓 🏔 🏕 🏖 🏗 🏘 🏙 🏚 🏛 🏜 🏝 🏞 🏟 🏠 🏡 🏢 🏣 🏤 🏥 🏦 🏧 🏨 🏩 🏪 🏫 🏬 🏭 🏮 🏯 🏰 🏱 🏲 🏳 🏴 🏵 🏶 🏷 🏸 🏹 🏺 1 2 3 4 5


🐀 🐁 🐂 🐃 🐄 🐅 🐆 🐇 🐈 🐉 🐊 🐋 🐌 🐍 🐎 🐏 🐐 🐑 🐒 🐓 🐔 🐕 🐖 🐗 🐘 🐙 🐚 🐛 🐜 🐝 🐞 🐟 🐠 🐡 🐢 🐣 🐤 🐥 🐦 🐧 🐨 🐩 🐪 🐫 🐬 🐭 🐮 🐯 🐰 🐱 🐲 🐳 🐴 🐵 🐶 🐷 🐸 🐹 🐺 🐻 🐼 🐽 🐾 🐿 👀 👁 👂 👃 👄 👅 👆 👇 👈 👉 👊 👋 👌 👍 👎 👏 👐 👑 👒 👓 👔 👕 👖 👗 👘 👙 👚 👛 👜 👝 👞 👟 👠 👡 👢 👣 👤 👥 👦 👧 👨 👩 👪 👫 👬 👭 👮 👯 👰 👱 👲 👳 👴 👵 👶 👷 👸 👹 👺 👻 👼 👽 👾 👿 💀 💁 💂 💃 💄 💅 💆 💇 💈 💉 💊 💋 💌 💍 💎 💏 💐 💑 💒 💓 💔 💕 💖 💗 💘 💙 💚 💛 💜 💝 💞 💟 💠 💡 💢 💣 💤 💥 💦 💧 💨 💩 💪 💫 💬 💭 💮 💯 💰 💱 💲 💳 💴 💵 💶 💷 💸 💹 💺 💻 💼 💽 💾 💿 📀 📁 📂 📃 📄 📅 📆 📇 📈 📉 📊 📋 📌 📍 📎 📏 📐 📑 📒 📓 📔 📕 📖 📗 📘 📙 📚 📛 📜 📝 📞 📟 📠 📡 📢 📣 📤 📥 📦 📧 📨 📩 📪 📫 📬 📭 📮 📯 📰 📱 📲 📳 📴 📵 📶 📷 📸 📹 📺 📻 📼 📽 📾 �


🔀 🔁 🔂 🔃 🔄 🔅 🔆 🔇 🔈 🔉 🔊 🔋 🔌 🔍 🔎 🔏 🔐 🔑 🔒 🔓 🔔 🔕 🔖 🔗 🔘 🔙 🔚 🔛 🔜 🔝 🔞 🔟 🔠 🔡 🔢 🔣 🔤 🔥 🔦 🔧 🔨 🔩 🔪 🔫 🔬 🔭 🔮 🔯 🔰 🔱 🔲 🔳 🔴 🔵 🔶 🔷 🔸 🔹 🔺 🔻 🔼 🔽 🔾 🔿 🕀 🕁 🕂 🕃 🕄 🕅 🕆 🕇 🕈 🕉 🕊 🕋 🕌 🕍 🕎 🕏 🕐 🕑 🕒 🕓 🕔 🕕 🕖 🕗 🕘 🕙 🕚 🕛 🕜 🕝 🕞 🕟 🕠 🕡 🕢 🕣 🕤 🕥 🕦 🕧 🕨 🕩 🕪 🕫 🕬 🕭 🕮 🕯 🕰 🕱 🕲 🕳 🕴 🕵 🕶 🕷 🕸 🕹 🕻 🕼 🕽 ℡ 🕿 🖀 🖁 🖂 🖃 🖄 🖅 🖆 🖇 🖈 🖉 🖊 🖋 🖌 🖍 🖎 🖏 🖐 🖑 🖒 🖓 🖔 🖕 🖖 🖗 🖘 🖙 🖚 🖛 🖜 🖝 🖞 🖟 🖠 🖡 🖢 🖣 🖥 🖦 🖧 🖨 🖩 🖪 🖫 🖬 🖭 🖮 🖯 🖰 🖱 🖲 🖳 🖴 🖵 🖶 🖷 🖸 🖹 🖺 🖻 🖼 🖽 🖾 🖿 🗀 🗁 🗂 🗃 🗄 🗅 🗆 🗇 🗈 🗉 🗊 🗋 🗌 🗍 🗎 🗏 🗐 🗑 🗒 🗓 🗔 🗕 🗖 🗗 🗘 🗙 🗚 🗛 🗜 🗝 🗞 🗟 🗠 🗡 🗢 🗣 🗤 🗥 🗦 🗧 🗨 🗩 🗪 🗫 🗬 🗭 🗮 🗯 🗰 🗱 🗲 🗳 🗴 🗵 🗶 🗷 🗸 🗹 🗺 🗻 🗼 🗽 🗾 �


jueves, 3 de abril de 2014

Modos de "Debugear" Power Builder

Walt Whitman nos explica claramente las maneras de debugear powerbuilder, las cuales son:


  • Depuración Just In Time
  • Depuración de Símbolo Preprocesador
  • Depuración con botones de "Debug"


A continuación el artículo:

http://www.joomla-gnu.com/programacion/powerbuilder-sysbase/177-debuggeando-en-powerbuilder.html?showall=&limitstart=


miércoles, 26 de marzo de 2014

PowerBuilder y Configuración Regional de Windows



Estoy madrugando esta noche para corregir un grave problema de inventario erróneamente incrementado. Luego de revisar los ingresos al almacén descubro que el problema radica en la mala lectura de los tipos de cambio y los decimales en la aplicación.

Cuando la aplicación se usa en dos países con diferente configuración regional (separador de miles y de decimales), el uso de la propiedad "Edit Mask" de los campos de un datawindow no contempla la configuración regional de la PC del usuario.

La lectura correcta de los decimales se consigue mediante la propiedad "Format", que reconoce la configuración de los separadores de miles y decimales y adapta la visualización para el usuario.

Usando EditMask:

En Perú:                 123,456.000
En Colombia:  123.456.000,000

Usando Format:

En Perú:               123,456.000
En Colombia:       123.456,000

Tomar en cuenta.

lunes, 16 de diciembre de 2013

Generar dígito de verificación de NIT de Colombia en PowerBuilder



Recientemente me he involucrado en un proyecto de implementación del ERP El Gestor a un cliente en Medellín, quien nos solicitó implementar el dígito de verificación que la DIAN obliga para el NIT de los proveedores.

Luego de algo de investigación, encontramos un post con el algoritmo en Visual Basic para excel, lo tradujimos a PowerScript y funcionó perfecto.

A continuación el código:


///******************************************************** 
//* FUNCION : fn_co_nitdv
//* FUNCION : Devuelve el Digito de Verificacion de un Nit (COLOMBIA) 
//* PARAMETROS : _nit: Numero de Nit a Calcular en string
//* RETORNO : Digito de Verificación en string
//* AUTOR : Johan Gálvez (johangalvez@lylsistemas.com) 
//********************************************************/ 
long WSuma, lnRetorno, Arreglo_PA[15], WDig_Ver, I
string WDato

_Nit = TRIM(_Nit) 
if _Nit="" or isnull(_Nit) then
 MESSAGEBOX("Error de NIT","El valor de NIT no puede ser nulo.") 
 RETURN 0
end if 

Arreglo_PA[1] = 71 
Arreglo_PA[2] = 67 
Arreglo_PA[3] = 59 
Arreglo_PA[4] = 53 
Arreglo_PA[5] = 47 
Arreglo_PA[6] = 43 
Arreglo_PA[7] = 41 
Arreglo_PA[8] = 37 
Arreglo_PA[9] = 29 
Arreglo_PA[10] = 23 
Arreglo_PA[11] = 19 
Arreglo_PA[12] = 17 
Arreglo_PA[13] = 13 
Arreglo_PA[14] = 7 
Arreglo_PA[15] = 3 
lnRetorno = 0 
WDato=RIGHT(SPACE(15)+TRIM(_Nit),15) 
WSuma=0 
WDig_Ver=0 

FOR I = 1 TO 15 
 WSuma=WSuma+(long(mid(WDato,I,1))*Arreglo_PA[I])
NEXT 

WSuma=MOD(WSuma,11) 

IF WSuma=0 OR WSuma=1 then 
 lnRetorno = WSuma 
ELSE 
 lnRetorno = 11 - WSuma 
END IF 

RETURN lnRetorno