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 ScriptEvento
ProgramaAcció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.