2010-10-27 4 views
2

J'ai ce bouton personnalisé sur Lead Editview qui, lorsque cliqué sur génère (via AJAX) un numéro de facture et un fichier PDF portant le même numéro. À l'étape suivante, la routine utilise SOAP pour effectuer un bouclage vers Sugar et crée une note (avec le fichier PDF en pièce jointe).SugarCRM: Créer une REMARQUE avec pièce jointe sans SOAP?

Ma question est: est-ce que je peux éviter cet appel SOAP et utiliser d'autres mécanismes internes/classes pour faire la même chose? Quelque chose dans le style de

$invoice = new Note(); 
$invoice->create(....); 
... 

Est-ce possible? Je n'ai trouvé aucune documentation nulle part ... toutes les routes semblent pointer vers SOAP.

Répondre

4

Si votre appel Ajax effectue une opération de mise à jour/sauvegarde db, vous pouvez utiliser un hook logique after_save.

EDIT: pour exemple: vous pouvez essayer ce code, un regard sur le code dans <sugar_root>/modules/Notes/Note.php

$note = new Note(); 
$note->modified_user_id = $current_user->id; 
$note->created_by = $current_user->id; 
$note->name = 'New'; 
$note->parent_type = "Accounts"; 
$note->parent_id = $bean->parent_id; 
$note->description = $bean->description; 
$note->save(); 

En ce qui va l'attachement, il est un peu difficile. Sugar s'attend à ce que la pièce jointe soit un objet upload_file. Jetez un oeil sur le code dans la fonction <sugar_root>/modules/Notes/controller.phpaction_save() et <sugar_root>/include/upload_file.php

HACK: ce n'est pas la bonne façon, mais cela fonctionne. Avec une légère modification du code ci-dessus et une utilisation judicieuse de la fonction move, vous pouvez faire fonctionner la pièce jointe. Sugar stocke les pièces jointes dans le dossier cache/upload avec l'ID de la note créée.

$note->filename = "Yourfilename.txt" //your file name goes here 
$note->file_mime_type = "text/plain" // your file's mime type goes here 
$new_note_id = $note->save(); 

move(your_file_location, cache/upload/$new_note_id) 
//don't add a extension to cache/upload/$new_note_id 

HTH

P.S: code non testé

+0

Bonjour Anand, je sais à propos after_save et je l'utilise dans plusieurs endroits. Cependant, dans ce cas, j'essaie de déterminer si une NOTE peut réellement être créée en instanciant un objet NOTE et en utilisant n'importe quelle méthode membre pour créer la note et lui attacher un fichier - au lieu de le faire via SOAP. –

+0

Bonjour, j'ai modifié ma réponse. J'espère que ça aide :) –

+0

Merci Anand. Manqué sur votre mise à jour. Je vais essayer de vous répondre dès que possible. Code semble prometteur :) –