Cambiar la moneda de todos los campos
Cuando se crea automáticamente una nueva base de datos, el programa establece todos los campos de moneda en la moneda utilizada por el sistema.
Grupo Script
Programa
Evento
Acción
Puede suceder que se necesite tener una moneda que no se corresponda con la estándar y para poder cambiarla tendría que cambiar cada campo de moneda presente.
Este ejemplo permite actuar directamente en la configuración de los campos.
PRECAUCIÓN. EN CASO DE ERRORES, ES POSIBLE GENERAR MAL FUNCIONAMIENTO Y BLOQUES DEL PROGRAMA. TENER CUIDADO Y PROBAR PRIMERO EN UNA BASE DE DATOS DE PRUEBA.
Actuaremos directamente en la tabla so_fields, que es la tabla que administra todos los campos en la base de datos.
{"ND":2,"CU1":"it-IT","CU2":"EUR","FCO":0,"def":""}
El que se muestra arriba es el diccionario que informa las características de un campo de moneda. En el interior se muestran. El primer valor CU1 muestra el código llamado culturinfo. A este enlace podèis encontrar la lista completa. El segundo código es el de la moneda y se puede encontrar la lista completa en este enlace.
Al cambiar estos valores, podemos cambiar la moneda del campo.
t = database.getsql("SELECT * FROM so_fields WHERE fieldtype=5")
nrows = t.countrows()
rows = t.getrows()
for i = 1, nrows do
parameters= rows[i].getvalue("param")
parameters = string.gsub(parameters,"it--IT","en-US")
parameters = string.gsub(parameters,"EUR","USD")
database.setsql("UPDATE so_fields SET tid=" .. tostring(utility.tid()) .. ",param='" .. utility.convap(parameters) .. "' WHERE gguid='" ..
rows[i].getvalue("gguid") .. "'")
database.addsyncbox("so_fields",rows[i].getvalue("gguid"))
output.print(parameters)
end
Como podemos ver en el ejemplo, primero recuperamos de la tabla so_fields todos los campos de tipo 5, es decir, los campos de moneda. Luego, utilizando los comandos lua, reemplazamos los valores actuales con los deseados y los guardamos en la base de datos.
De esta manera forzamos la actualización de todos los campos.
Dado el tipo de operación, cierre el programa y vuelva a abrirlo para permitir la carga de los nuevos valores.