Inviare una mail con la stampa di un ordine di acquisto e i suoi allegati

Per inviare una stampa generalmente si utilizza un workflow di tipo ARP:
al momento della stampa basta scegliere una destinazione di tipo “Messaggio” e il pdf prodotto verrà inviato secondo le regole del workflow.

In Sage X3 è possibile allegare dei file ai vari oggetti, come abbiamo già visto qui, attraverso il pulsante presente nel menù a destra:

Icona degli allegati nella gestione di un oggetto

Icona degli allegati nella gestione ad oggetto

Se vogliamo allegare alla mail anche questi file allora il workflow di tipo ARP non è più adatto, è necessario utilizzare un allegato con Tipo Evento “Oggetto”.

Ma così facendo si presenta il problema di creare la stampa (un file pdf) ed allegarla alla mail.

 

Vediamo una soluzione così composta:

  • creiamo un pulsante nella finestra degli ordini di acquisto (POH)
  • lo colleghiamo ad un workflow di tipo oggetto che scatenerà un’azione
  • l’azione andrà a creare la stampa pdf
  • il file pdf verrà allegato alla mail in aggiunta agli allegati già presenti nell’ordine.

 

Inserimento pulsante nella finestra degli ordini di acquisto

 

Aggiungiamo quindi un pulsante nella finestra OPOH con codice “z” e descrizione “Invio Mail”;
l’azione può restare vuota (in figura si vede “SPE” ma in realtà poi non scriveremo nessuna istruzione nel sorgente SPEPOH);
non dimenticare di inserire il codice attività:

Sage X3 v9 OPOH Window Button

Configurazione del pulsante “Invio mail”nella finestra OPOH

Validiamo quindi la finestra e anche le transazioni degli ordini di acquisto.

 

Duplicazione della stampa degli ordini di acquisto

La stampa che ci serve verrà lanciata da programma; per evitare che esca la finestra con i parametri di stampa  è necessario:

  1. che la stampa sia indicata come diretta nella gestione “Codice stampa” (GESARX)
  2. che la destinazione sia preimpostata: serve una destinazione di tipo file, da cercare o configurare in Destinazioni (GESAIM)

Per questo duplichiamo la stampa degli ordini di acquisto attualmente in uso e la modifichiamo:

  • la rinominiamo, per esempio con il nome “YPOHMAIL”
  • inseriamo il codice attività
  • impostiamo come destinazione di default una destinazione di tipo “File” e  la mettiamo obbligatoria

Sage X3 v9 Print output destination

  • se vogliamo che il nome del file allegato contenga il numero d’ordine indichiamo come programma specifico YPOHMAIL (se è presente un verticale, per esempio XBONCDE, bisognerà porre attenzione poi a richiamarlo adeguatamente)
  • il file .rpt di Crystal Report rimane lo stesso.

A questo punto la stampa è configurata.

Codice specifico della stampa

Premessa

In genere si vuole personalizzare il nome del file creato da una stampa, se non vi interessa per il momento modificare il nome del file potete saltare questa parte.

Il nome del file generato da una stampa viene inserito nella variabile globale GFILPATH.
Se l’evento scatenante il workflow è di tipo “Stampa” la variabile GFILPATH al momento dell’avvio del workflow stesso sarebbe già alimentata.
Ma nel nostro caso il workflow è di tipo “Oggetto” e la stampa dovremo lanciarla noi tramite un’azione; pertanto all’avvio del workflow la variabile GFILPATH è vuota.

Per recuperare il file pdf e modificarne il nome dobbiamo fare in modo di inserirci in un momento in cui la variabile GFILPATH sia già alimentata.
Il punto più semplice è dopo il lancio della stampa, ma in questo modo non abbiamo i dati di riferimento dell’ordine. Per avere a diposizione il POHNUM dobbiamo “entrare” nel flusso della stampa.

Procediamo

Creiamo il file sorgente YPOHMAIL che abbiamo già indicato come programma specifico della stampa YPOHMAIL.

Nel mio caso era già presente come specifico il verticale XBONCDE; analizzandolo ho visto che l’unica cosa da richiamare era il sottoprogramma IMPRIME:

Subprog IMPRIME(NBPAR,PARAMETRE)

Logicamente non riporteremo il codice di XBONCDE ma lo richiamiamo, in modo che in caso di modifiche allo stesso XBONCDE, in automatico si ripercuoteranno anche qui.

Per modificare il nome del file creato invece c’è l’azione “FICHIER” predisposta da Sage a questo scopo:
basta impostare qui la variabile globale GFILPATH per modificare direttamente il nome del file al momento della sua creazione.

 

Ecco il contenuto del sorgente YPOHMAIL :

#sostituisce il sorgente XBONCDE

$ACTION
Case ACTION
When "FICHIER" : Gosub FICHIER
When Default
Endcase
Return

Subprog IMPRIME(NBPAR,PARAMETRE)
Value Integer NBPAR
Variable Char PARAMETRE()()
Call IMPRIME(NBPAR,PARAMETRE) From XBONCDE
End

$FICHIER
#imposto il nome del file con numero ordine e data ordine di acquisto
FICHIER = "c:\temp\" + [F:POH]POHNUM + "_" + format$("D:YYYYMMDD",[F:POH]ORDDAT) + ".pdf"
GFILPATH = FICHIER
Return

 

Impostazione parametri stampa

Affinché vengano passati i parametri corretti alla stampa andiamo in “Destinazioni\Valori di default” (GESARV):

Configurazione dei valori di default della stampa

Configurazione dei valori di default della stampa

Cerchiamo la parametrizzazione della stampa degli ordini di acquisto associata ovviamente a GESPOH e la copiamo pari pari per la nuova stampa YPOHMAIL.
In questo modo il sistema sa quali valori inserire come parametri di stampa se la funzione corrente è GESPOH e la stampa in corso è YPOHMAIL.

 

Impostazione stampa diretta

Quando si lancia una stampa, se non è configurata come “diretta” esce la finestra di inserimento dei parametri che permette di modificare i dati eventualmente configurati in “valori di default” (GESARV), come appena visto. Per evitare questo passaggio interattivo è necessario utilizzare una chiamata che sfrutta un “codice interno” per il quale la stampa è configurata come diretta.

Andiamo quindi in “Codici di stampa” (funzione GESARX) e inseriamo la seguente riga:

 

Sage X3 (GESARX) Impostazione stampa diretta

Impostazione stampa diretta

  • Codice interno: YPOHMAIL (può anche essere diverso dal nome della stampa)
  • Tipo stampa = “Stampe”
  • Codice stampa: YPOHMAIL
  • Stampa diretta = “Si”

 

Implementiamo l’azione che crea il pdf

Ora creiamo l’azione che il workflow richiamerà per creare il pdf.

Entriamo nel “Dizionario azioni” (GESACT) e clicchiamo su Nuovo:

  • Nome azione: YCREAPDF
  • Inseriamo il codice attività
  • Modello: Fuori modello
  • programma YCREAPDF e sottoprogrammma YPOHPDF
  • mettiamo la spunta su “Accessibilità Workflow”
  • nessun parametro da impostare

 

Sage X3 v9 GESACT Action print pdf POH

Non ci resta che creare il file sorgente YCREAPDF con questo codice:

##################################################
Subprog YPOHPDF()

# utilizziamo questa chiamata che utilizza il codice interno, in modo da poter avere una stampa diretta
Call IMPRIME("YWRKMAIL","GESPOH") From ETAT

#NB in questo punto la variabile GFILPATH è alimentata, ma non abbiamo a disposizione i dati relativi all'ordine
#volendo possiamo impostare un nome fisso, prima però bisogna rinominare il file con lo stesso nome,
#poichè questo punto il file è già stato creato.
#Per esempio si può fare così:

#Local Integer YSTAT
#Local Char NUOVONOME(255) : NUOVONOME="C:\test.pdf"
#Call MOVE (GFILPATH, NUOVONOME, YSTAT) From ORDSYS
#GFILPATH=NUOVONOME
End
##################################################

Chicca: se vogliamo aggiungere qui un ulteriore allegato basta inserire il path completo in GFILPATH suddivisi da un punto e virgola;
per esempio per allegare 2 file:
<code>GFILPATH=GFILPATH+”;”+PATH2 </code>

Configuriamo il nuovo workflow

Ora abbiamo tutto pronto, finalmente possiamo creare il workflow attraverso la funzione “Regole Workflow” (GESAWA).

Indico velocemente qui di seguito i parametri da impostare nelle varie schede.

SCHEDA Generale

  • Categoria TC
  • Attivo: SI
  • Tipo evento : Oggetto (è questo che permette l’invio degli allegati collegati all’oggetto)
  • Codice evento: POH (codice dell’oggetto, in questo caso l’ordine di acquisto)
  • Operazioni: z (corrisponde al codice bottone inserito prima in finestra OPOH)
  • Condizioni: qui possiamo inserire delle condizioni necessarie affinchè il workflow si attivi
  • Flag “Attivazione mail” SI
  • Flag “Attivazione azione” SI
  • “Messa a punto” si può impostare a SI se serve fare dei test

 

Sage X3 v9 GESAWA Workflow mail attachment object POH event

SCHEDA destinatari

  • Condizione: vuota, Tipo: Terzo, destinatari: [F:POH]BPSNUM, Funzione: (vedi campo Funzione nel Tab Contatti della funzione Clienti – GESBPC -; è collegato al menù locale 233), Invio mail: SI, resto vuoto
  • Condizione: vuota, Tipo: Utente, destinatari: [F:POH]BUY, Funzione: vuota, Invio mail: copia, avanz: no, Nature vuoto, Opzione del: no
  • Per fare dei test iniziali possiamo inserire anche solo una riga di questo tipo:
    Condizione: vuota, Tipo: Utente, destinatari: GUSER (chi esegue il workflow), Funzione: vuota, Invio mail: SI, avanz: no, Nature vuoto, Opzione del: noSage X3 v9 GESAWA Destinatario mail esempio

Una condizione del tipo “1=0” non sarà mai verificata, è utile per esempio se vogliamo inibire una riga in fase di test.

Attenzione: gli utenti sage destinatari di mail DEVONO avere impostato l’indirizzo Worflow, altrimenti non si apre il box interattivo della mail

SCHEDA Messaggio

Qui è possibile definire titolo e messaggio della mail, utilizzando i campi dell’oggetto che sono disponibili, a titolo di esempio:

  • Oggetto: <code>’Ordine di Acquisto n. ‘+[F:POH]POHNUM</code>
  • testo:
    <pre> Gentile Fornitore,
    |’con la presente inviamo l”Ordine di Acquisto n. ‘||[F:POH]POHNUM||’ del ‘||[F:POH]ORDDAT||’ .’|
    Cordiali saluti</pre>
  • Invio: Server
  • SI messaggio modificabile (se vogliamo permettere all’utente di fare modifiche)
  • Mittente mail: per esempio test@miosito.com
  • Documento da allegare: GFILPATH
  • Allegato SI (gli allegati all’ordine di acquisto nel modo già citato all’inizio, verranno quindi allegati a questa mail)
  • Tutti i tipi SI
  • Tutte le categorie SI

Sage X3 v9 GESAWA Messaggio mail di esempio

SCHEDA Azione

Inseriamo qui una riga con:

  • Codice azione: YCREAPDF
  • Attivazione: Inizio workflow

L’azione verrà quindi scatenata prima del workflow stesso, creerà il pdf che, essendo inserito nella variabile GFILPATH, verrà allegato alla mail.

Concludendo…

Il tutto è un po’ laborioso ma efficace.  In questo modo ci ritroveremo tra gli allegati della mail i file allegati ai vari ordini di acquisto.

Volendo è possibile raffinare il comportamento filtrando i file da allegare in base al tipo di documento allegato, impostando opportunamente la sezione “Allegati” della scheda “Messaggio” del workflow.

Alla prossima!

 

Potrebbero interessarti anche...

3 risposte

  1. Madalynn ha detto:

    Keep this going please, great job!

  2. Cristiano ha detto:

    Ciao! mi sono imbattuto nella necessità di dover rinominare l’allegato prima dell’invio di una e-mail con workflow dalla stampa di tutti i documenti (ordini, bolle, fatture…). Per non dover modificare tutte le stampe e tutti gli script di stampa ho utilizzato l’entry point FILPAT dell’AIMP3 rinominando il file con la MOVE e modificando la GFILPATH con filpath(“tmp”,NUOVONOME,”pdf”) dove NUOVONOME è il numero del documento. La cosa problematica è stata solamente recuperare il numero documento (ad es. [F:SIH]NUM), perché purtroppo viene popolato solamente se prima seleziono il record nel browser e poi faccio stampa. Quindi per essere sicuro di averlo sempre disponibile ho prima agganciato il record della AREPORTM e poi utilizzato il campo CLEA1. Nel caso si volesse inserire nel nome qualche altro dato del documento sarà sufficiente leggere con chiave = CLEA1 la tabella inerente alla tipologia di documento.

    • Admin ha detto:

      Grazie del suggerimento!
      Se non ricordo male, io inserivo un codice specifico della stampa con all’incirca queste istruzioni:

      $ACTION
      Case ACTION
      When “FICHIER” : Gosub FICHIER
      When Default
      Endcase
      Return

      Subprog IMPRIME(NBPAR,PARAMETRE)
      Value Integer NBPAR
      Variable Char PARAMETRE()()
      Call IMPRIME(NBPAR,PARAMETRE) From SORGENTE_ORIGINALE_della_STAMPA
      End

      $FICHIER
      FICHIER = filpath(MIOPATH, [F:XXX]NUM + “_” + format$(“D:YYYYMMDD”,[F:XX]DAT) , “pdf”)
      GFILPATH = FICHIER
      Return

Lascia un commento

Scopri di più da SageDev

Abbonati ora per continuare a leggere e avere accesso all'archivio completo.

Continue reading