[Sage X3 v7] Envoi d'une facture de vente par mail

SUGGESTED

Bonjour la communauté X3,

Je travaille actuellement sur un moyen de fluidifier le processus d'émission de facture de vente. Pour cela, j'aimerai que la facture ainsi que les pièces jointes associées à celle-ci, soient envoyées par mail après avoir cliquer sur le bouton de validation.

Pour le moment, j'ai mis en place le workflow permettant l'envoi du mail: 

Le mail est correctement envoyé avec la PJ associée à la facture, cependant la facture elle même ne figure pas dans le mail envoyé.

Comment puis-je avoir un unique mail contenant la facture et ses PJ ? Dois-je passer par du spécifique ?

Merci pour votre aide :)

Olivier

  • 0
    SUGGESTED

    Bonjour Olivier,

    Malheureusement vous n'allez pas pouvoir vous passer d'un bout de code afin de générer votre état Crystal avant de l'attacher à votre workflow.

    Si vous générez l'état et l'ajoutez aux pièces jointes de la facture votre workflow n'aura pas besoin d'être modifié.

    Cordialement,

    Laurent

  • 0 in reply to L.V. Expertise X3

    Bonjour Laurent,

    Merci pour votre réponse. Il faudrait donc que je créé une action permettant de générer la facture de vente, et que j'associerai à mon workflow d'envoi en "début workflow".

    Connaissez-vous la fonction permettant d'ajouter une PJ ?

    Bien à vous,

    Olivier

  • 0 in reply to OPV

    Dans la table AOBJTXT il faut ajouter une ligne pour votre objet "SIH", IDENT1="numéro de facture" et IDENT3="numéro suivant de pièce pour cette facture" et bien sûr les champs NAM et TYPDOC.

    Cordialement,

    Laurent

  • 0 in reply to L.V. Expertise X3

    Je viens de faire des tests, y'a de l'évolution mais quelques points bloquants.

    Voici le traitement que j'ai mis en place suite au clique sur le bouton validation de la facture de vente:

    $ACTION
    Case ACTION
     When "EXEC"       : Gosub EXEC
     When Default
    Endcase
    Return
    
    $EXEC
        Global Char GYFILE(250)
        Local Char TBPAR_BP(15)(1..50),TBVAL_BP(30)(1..50)
        Local Char GROUPE_CLIENT
        Local Char CLIENT
        Local Char ANNEE
        Local Char MOIS
        Local Char NUMFAC
    
        Raz TBPAR_BP, TBVAL_BP
    
        If clalev([F:SIH]) = 0 Then Local File SINVOICE [F:SIH] : Endif
        #ouverture de la table des PJ
        If clalev([F:AOX]) = 0 Then Local File AOBJTXT [F:AOX] : Endif
    
        GROUPE_CLIENT = left$([F:SIH]BPR,3)
        CLIENT = [F:SIH]BPR
        ANNEE = num$(year([F:SIH]ACCDAT))
        MOIS = num$(month([F:SIH]ACCDAT))
        NUMFAC = [F:SIH]NUM
    
        #Paramètres
        TBPAR_BP(1) = "sitedeb" : TBVAL_BP(1) = "site"
        TBPAR_BP(2) = "sitefin" : TBVAL_BP(2) = "site"
        TBPAR_BP(3) = "facturedeb"       : TBVAL_BP(3) = [F:SIH]NUM
        TBPAR_BP(4) = "facturefin" : TBVAL_BP(4) = [F:SIH]NUM
        TBPAR_BP(5) = "typedeb" : TBVAL_BP(5) = [F:SIH]GTE
        TBPAR_BP(6) = "typefin" : TBVAL_BP(6) = [F:SIH]GTE
        TBPAR_BP(7) = "clientdeb" : TBVAL_BP(7) = [F:SIH]BPR
        TBPAR_BP(8) = "clientfin" : TBVAL_BP(8) = [F:SIH]BPR
        TBPAR_BP(9) = "datedeb" : TBVAL_BP(9) = [F:SIH]ACCDAT
        TBPAR_BP(10) = "datefin" : TBVAL_BP(10) = [F:SIH]ACCDAT
        TBPAR_BP(11) = "codimp" : TBVAL_BP(11) = "1"
        TBPAR_BP(12) = "impselections" : TBVAL_BP(12) = "1"
        TBPAR_BP(13) = "duplicata" : TBVAL_BP(13) = "1"
    
     
        Infbox "Impression de la facture"
        #[L]CHEMIN = 'D:\SAGE\SAGEX3V7\X3V7VM\Dossiers\DEV\ATT\Factures_Vente\'+[L]GROUPE_CLIENT+'\'+[L]CLIENT+'\'+[L]ANNEE+'\'+[L]MOIS+'\'
        #Call SYSTEME (adxmac (0),’ae_mkdir’-‘”‘+CHEMIN+'”‘,””, STAT) From ORDSYS
       
        [V]GYFILE = 'D:\SAGE\SAGEX3V7\X3V7VM\Dossiers\DEV\ATT\Factures_Vente\'+[L]ANNEE+'-'+[L]MOIS+'-'+[L]GROUPE_CLIENT+'_'+[L]CLIENT+'_'+[L]NUMFAC+'.pdf'
    
        Call ETAT("SBONFAC","ACROBAT","",0,"",TBPAR_BP,TBVAL_BP) From AIMP3
    
        #Ajout de la PJ à la facture
        Filter [F:AOX] Where IDENT1 = [F:SIH]NUM
        Read [F:AOX]
          Infbox "Ecriture de la pj"
          [F:AOX]ABREV = "SIH"
          [F:AOX]IDENT1 = [F:SIH]NUM
          [F:AOX]IDENT2 = ""
          [F:AOX]IDENT3 = "005"
          [F:AOX]CAT = 1
          [F:AOX]NAM = [V]GYFILE
          [F:AOX]TYPDOC = "PDF"
        Write [F:AOX]
    
    	#30 secondes de génération avant démarrage workflow
      Sleep 30
    
    Return
    

    Les problèmes :

    1) Suite à l'utilisation de la table AOBJTXT, il ne m'est pas possible de consulter la PJ depuis la facture de vente. Pourtant celle-ci se trouve bien dans le répertoire pointé par GYFILE. Voici le message d'erreur:

    2) Comme il ne trouve pas ma PJ, forcément celle-ci ressort en erreur dans le mail envoyé via workflow. "Erreur de format : pas un PDF ou corrompu"

    3) Via mon script, j'essaye également de créer une arborescence sur mon serveur via Call SYSTEME (adxmac (0),’ae_mkdir’-‘”‘+CHEMIN+'”‘,””, STAT) From ORDSYS . Cependant, j'ai systématiquement une erreure sur "ae_mkdir"

    Si vous avez des idées pour m'aider, je suis preneur.

    Excellente soirée,

    Cordialement,

    Olivier

  • 0 in reply to OPV

    Bonjour Olivier,

    Vous n'êtes pas si loin et voici quelques points rapides :

    Il ne faut pas stocker l'URL absolue mais relative (Volume X3) qui ressemble à ceci : [ATT]/Factures/mafacture.pdf

    Au lieu d'attendre 30 secondes et d'être soit trop court, soit trop long, il vaut mieux faire une boucle et tester l'existence du fichier toutes les 2 secondes par exemple avec un temps maximum.

    Pour la création de répertoires, veillez à créer chaque sous répertoire l'un après l'autre et non pas la chaine complète jusqu'au pdf.

    Attention, vous vérifiez l'existence de la classe [F:SIH] sans pour autant relire votre facture au cas où.

    Je peux également vous conseiller de remplacer votre Filter / Read par un For ainsi que de créer une transaction à chaque fois que vous réalisez une opération sur une table.

    Cordialement,

    Laurent

  • 0 in reply to L.V. Expertise X3

    Bonjour,

    Je me permets de poser une question sur ce fil car j'ai exactement la même problématique, à savoir le besoin d'envoyer des factures par mail lors de leur validation.

    Dans la règle workflow, j'ai tenté de créer une action (début de wf), avec un script spécifique et j'ai intégré le code posté par (en modifiant les chemins bien sûr).

    Lors de la validation des factures je reçois bien le mail, je vois bien le lancement de l'action dans la trace, mais rien n'est généré, ni fichier côté serveur, ni peuplement de la base, pas même un message d'erreur.

    J'ai l'impression que l'action n'est pas exécutée... Est-ce que je fais fausse route dans le mode opératoire ?

    Merci par avance pour votre aide !

  • Bonjour   

    Avez vous par hasard une piste à apporter à   et qui pourra certainement aider la communauté en cas de besoin à l'avenir? 

    Yannick