Crear clientes a partir de informes de intervención
En este ejemplo, veremos cómo crear clientes a partir de informes de intervención. Por lo general, esto se hace porque los técnicos insertan un nuevo cliente en el informe sin crearlo a través de una subtabla.
Grupo Script
Programa
Evento
Acción
Otro caso es que los informes se importan desde un archivo de Excel creado por otro programa y, por lo tanto, no se crean clientes. Por supuesto, se supone que en cada línea del informe hay datos principales para poder identificar al cliente si ya existe o si debe crearse.
table = database.getsql("SELECT * FROM reports WHERE eli=0")
rows = table.getrows()
for i = 1,table.countrows() do
--extrapolate the customer
namecustomer = rows[i].getvalue("namecustomer")
gguid_namecustomer = rows[i].getvalue("gguid_namecustomer")
--if gguid is empty the customer not exist
if gguid_namecustomer = = "" then
--check if customer is already exist
tablecustomer = database.getsql("SELECT * FROM customers WHERE eli=0 and name='" .. utility.convap(namecustomer) .. "'")
if tablecustomer.countrows() == 0 then
--if 0 then customer not exist
--create a head customer
gguid_namecustomer = utility.gguid()
values = "INSERT INTO customers(gguid,tid,eli,arc,ut,uta,exp,gguidp,ind,tap,dsp,dsc,dsq1,dsq2,utc,tidc) VALUES ("
values = values .. "'" .. gguid_namecustomer .. "'," .. tostring(utility.tid()) .. ",0,0,'','','',''," .. tostring(database.getind("customers")) .. ",'','','',0,0,'',0)"
database.setsql(values)
--update data customers
values = " UPDATE customers SET name='" .. utility.convap(namecustomer) .. ",address='" .. utility.convap(rows[i].getvalue("address")) .. " WHERE gguid='" .. gguid_namecustomer .. "'")
database.setsql(values)
database.addsyncbox("customers",gguid_namecustomer)
else
--customer already exist, update the gguid for create relation
rows2 = tablecustomer.getrows()
gguid_namecustomer = rows2[1].getvalue("gguid")
end
--update for syncbox windows
database.setsql("UPDATE report SET tid=" .. tostring(utility.tid()).. ",gguid_namecustomer='" .. gguid_namecustomer .. "'")
--add a syncbox for mobile
database.addsyncbox("reports",gguid_namecustomer)
end
end
program.refreshsection("reports")
Primero creamos el ciclo de lectura en los informes y examinamos solo aquellos que no tienen un gguid de cliente válido conectado.
Como quizás otro informe ya haya creado este cliente antes proceder a hacer una búsqueda en este sobre el nombre.
Si incluso el nombre no aportó nada, creo al cliente recuperando los datos disponibles en el informe.
Una vez hecho esto, actualizo el informe para tener la relación con el cliente a través de su gguid.
Todo esto funciona si, en cualquier caso, el cliente en el informe se gestiona con un campo de tipo subtabla.