devcode-it / openstamanager

Il software gestionale open source per l'assistenza tecnica e la fatturazione
https://www.openstamanager.com
GNU General Public License v3.0
104 stars 69 forks source link

Gestione account email #9

Closed loviuz closed 6 years ago

loviuz commented 7 years ago

Modulo per la gestione degli account SMTP per inviare le email dai moduli. Modulo per l'invio mail standardizzato, integrabile per ogni modulo da cui scegliere:

Ogni modulo potrà avere più invii email.

Dasc3er commented 6 years ago

Al momento lo sviluppo nella branch 2.4 ha completato le seguenti sezioni:

Introduzione delle tabelle per la gestione delle informazioni relative;

Parallelamente sono state abbozzate le seguenti parti:

La gestione di queste funzioni è stata inserita nella classe Mail.

loviuz commented 6 years ago

Sarebbe il caso di creare un file nella cartella di ogni modulo, ad esempio variables.php, dove sono contenute le variabili utilizzabili nei template delle email? Strutturandole sotto forma di array, potrebbero essere estratte e posizionate in un help durante la creazione del template email.

Oltre alle variabili, andrebbe definita anche la query da cui estrarre i valori, perché nel caso volessi creare un template email indicando nel corpo "Ecco la sua fattura di 237,00 €", la query dovrebbe calcolare il totale delle righe, o dovrei poter estrarre altre informazioni dalla fattura con INNER JOIN vari. In questo modo, se la query e le variabili sono in una struttura, per l'invio mi appoggio alla stessa struttura per sostituire le variabili nel template.

Che ne pensate @Dasc3er, @lucasalva87, @fpsoftware, @Bacca1997?

Dasc3er commented 6 years ago

Alcuni chiarimenti sui permessi di accesso agli account email e ai template email:

Inoltre, che formato personalizzato utilizziamo per le variabili da sostituire ({ nome }, ...)?

Infine, come idea per l'invio email, progettiamo un dropdown che si basa sul template e che apre un modal dove selezionare:

@devcode-it/openstamanager Che ne dite?

loviuz commented 6 years ago

Alcuni chiarimenti sui permessi di accesso agli account email e ai template email:

  • Ogni utente ha l'accesso ad alcuni indirizzi email e ad alcuni template in modo indipendente tra loro?
  • Ogni utente ha l'accesso a indirizzi email e template collegati tra loro (del tipo per un template si può usare solo un indirizzo specifico, e viceversa)?
  • E' necessario prevedere la possibilità di concedere l'accesso a template e indirizzi email a singoli utente oppure anche a interi gruppo?

Semplificherei in questo modo:

Il fatto di non far scegliere l'account mittente dal tecnico è una misura di "controllo" che di solito fa l'azienda. Eventualmente, se il tecnico è un amministratore, si può fare in modo che possa scegliere l'account da utilizzare, anche se diventerebbe un po' inutile allora specificare l'account da usare nel template della mail. Per ora teniamo che le email partono con l'account smtp pre-selezionato nel template email. In questo modo, basta avere l'accesso in lettura ad un modulo per effettuare l'invio mail o generare stampe.

Infine, come idea per l'invio email, progettiamo un dropdown che si basa sul template e che apre un modal dove selezionare:

  • Indirizzo email da utilizzare

L'indirizzo email mittente viene preso dall'account smtp associato all'invio mail (vedi ragionamento sopra)

  • Eventuali allegati aggiuntivi (dalle stampe)

Ok, quindi se un modulo ha 4 stampe, poter scegliere di allegare di default più di una di queste nell'invio mail, e non per forza solo 1.

  • Testo dell'email basato sul template

Ok

Altri punti:

Dasc3er commented 6 years ago

Perfetto. In ogni caso, i permessi di accesso al template sono da specificare oppure sono semplicemente concessi con i permessi del modulo?

loviuz commented 6 years ago

Dopo aver commentato mi è venuta un'idea per semplificare: potremmo far sì che tutti i file allegabili siano un elenco con checkbox, e di default saranno selezionate le stampe che vengono specificate nel template email, così è più intuitivo il funzionamento. Faccio un esempio: immagine

loviuz commented 6 years ago

In ogni caso, i permessi di accesso al template sono da specificare oppure sono semplicemente concessi con i permessi del modulo?

Se il modulo ha almeno i permessi in lettura, darei l'accesso all'invio email.

Dasc3er commented 6 years ago

Con il commit ae4d6b1d987770ba48ecffd8099b098a86ab4e81 sono state introdotte la maggior parte delle funzionalità richieste, compresa la selezione degli allegati e la relativa inclusione nell'email. Manca da stabilire in modo definitivo il formato con cui effettuare la sostituzione delle variabili in variables.php del modulo.

loviuz commented 6 years ago

Potrebbe essere anche solamente una query da cui, con un ciclo for, si riesce ad estrarre il nome del campo ed anche il valore? Del tipo: $variables = $dbo->fetchArray("SELECT SUM(qta) AS tot_qta, subtotale FROM mm_modulo WHERE id=".prepare($id_record));

Con il foreach sul nome estraggo i nomi dei campi per comporre il template, aggiungendo alle estremità i caratteri { e }. Per la sostituzione in fase di creazione anteprima invio email, andrei a sostituire le variabili con il relativo valore. Può andare?

E' che se fosse così, il file variables.php sarebbe di una sola riga, per cui verrebbe quasi quasi voglia di inserire la query in un campo del database, nella tabella di quel template email.

Dasc3er commented 6 years ago

Per il momento consiglierei di strutturare il varables.php in modo da restituire un array associativo, sulla cui base costruire la sostituzione, in modo simile al file bulk.php.

In questo modo sarebbe più semplice espandere la funzionalità in futuro.

loviuz commented 6 years ago

Ok. Può essere che in alcuni casi sia solo una semplice query, generata con: $variables = $dbo->fetchArray("SELECT SUM(qta) AS tot_qta, subtotale FROM mm_modulo WHERE id=".prepare($id_record));

e l'array verrebbe creato con un foreach, perché le informazioni verrebbero estratte in molti casi anche solo con una query. Per casi più complessi, l'array associativo $variables potrebbe essere generato in modo diverso.

loviuz commented 6 years ago

Ho un paio di migliorie:

Qualcuno chiede anche di poter specificare nei referenti quali sono i destinatari di determinate email, ad esempio: le email delle attività vanno al referente tecnico, mentre le email delle fatture vanno al referente amministrativo. Forse bisognerebbe introdurre le mansioni nei referenti, ma credo sia uno sviluppo successivo da pensare per bene...

Dasc3er commented 6 years ago

@loviuz Inoltre, per la navigazione da mobile, non sarebbe direttamente meglio lasciare i pulsanti a inizio pagina?

loviuz commented 6 years ago

Forse sì, perché altrimenti porterebbero via spazio comunque

loviuz commented 6 years ago

Andrei a creare un template email standard per i seguenti moduli, così chi aggiorna alla 2.4 o la installa da zero, ha già gli invii email di base che molti richiedono:

Ovviamente dovranno almeno aggiornare la firma della mail.

La mail standard potrebbe essere impostata così:

OGGETTO: Invio rapportino numero {numero} del {data}

CORPO: Gentile Cliente,

inviamo in allegato il rapportino numero {numero} del {data}.

Distinti saluti

Ovviamente questo è l'esempio del rapportino. Per altri documenti andrebbero inseriti almeno il numero del documento e la data. Lasciandolo senza firma, è utilizzabile senza apportare modifiche, altrimenti l'utente andrà ad inserire la propria firma.

Dasc3er commented 6 years ago

@loviuz Ho introdotto i template richiesti, tranne quello relativo agli Ordini fornitore poichè quel modulo non ha stampe da allegare...

loviuz commented 6 years ago

Ottimo! In realtà, l'ordine fornitore dovrebbe essere l'unica stampa presente lato "acquisti", perché è un documento inviabile ad un fornitore per richiedere della merce. Basta copiare dalla stampa dell'ordine cliente e cambiare "cliente" con "fornitore" principalmente

Dasc3er commented 6 years ago

@loviuz Come testo dei template per i consuntivi cosa possiamo impostare di base?

loviuz commented 6 years ago

Ho migliorato un po' i testi standard.