Creare i clienti dai rapporti di intervento

In questo esempio vedremo come creare dei clienti partendo da dei rapporti di intervento. Di solito questa operazione viene fatta perché i tecnici inseriscono un nuovo cliente all’interno del rapportino senza crearlo attraverso una sottotabella.

Gruppo ScriptEvento
ProgrammaAzione

Un altro caso è che i rapportini siano importati da un file di Excel creato da un altro programma e quindi i clienti non vengono creati. Naturalmente si suppone che su ogni riga del rapportino ci siano i dati principali per poter identificare il cliente se esiste già o se deve essere creato.

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")

Come prima cosa creiamo il ciclo di lettura sui report e prendiamo in esame solamente quelli che non hanno un gguid cliente valido collegato.

Visto che magari un altro rapportino ha già creato questo cliente prima procediamo a fare una ricerca in questo sul nome.

Se anche il nome non ha portato niente allora creo il cliente recuperando i dati disponibili sul rapportino.

Fatto questo aggiorno il rapportino per avere la relazione con il cliente attraverso il suo gguid.

Tutto questo funziona se comunque il cliente sul rapportino è gestito con un campo di tipo sottotabella.