Μέσω των συσκευών οι αναφορές (reports) της εφαρμογής μπορούν να αποθηκευτούν σε διάφορες μορφές (PDF, HTML, εκτυπωτή, e-mail, excel, PDF as Image, CSV κλπ), η συμπεριφορά των οποίων ορίζεται
- από το χρήστη μέσω της οθόνης διαχείρισης συσκευών
Menu βοηθητικά προγράμματα =>Γενικά => Report
Μέσω της οθόνης δημιουργούμε συσκευές δίνοντας κωδικό & περιγραφή ορίζοντας τον τύπο της συσκευής (πχ PDF, HTML κλπ), αν θα εμφανίζεται οθόνη με τις παραμέτρους κατά την χρήση της συσκευής και τέλος ορίζουμε ειδικές παραμέτρους που αφορούν την συσκευή και είναι ανάλογα με τον τύπο διαφορετικές. - από ειδικευμένο τεχνικό του προγράμματος μέσω του scripting του report.
Για την κάλυψη της ανάγκης ορισμού των ιδιοτήτων προστέθηκε method XmlNode στο object property Report. Μέσω αυτού προσδιορίζουμε τις τιμές των ιδιοτήτων στα “φίλτρα”.
Επίσης ορίστηκε κλάση TXmlNode με τις παρακάτω methods
“Φίλτρο” είναι η διαδικασία που ορίζει τον τρόπο εξαγωγής των σελίδων της αναφοράς και σύνθεσης της σελίδας του επιθυμητής νέας μορφής (πχ PDF, Html κλπ). Το email (MailExport) είναι επίσης “φίλτρο” που δεν περιγράφει όμως την μορφή εξαγωγής των σελίδων αλλά τη διαδικασία αποστολής. Σε αυτή την περίπτωση για το σκοπό του προσδιορισμού της μεθόδου εξαγωγής των σελίδων περιλαμβάνει ένα επιπλέον “φίλτρο” (embedded filter). “Εmbedded filter” μπορεί να είναι μόνο PDF (PdfExport) ως επισυναπτόμενο αρχείο ή HTML (HTMLExport) ώς ενσωματωμένο κείμενο.
- Function XmlNode(const Name: string): TXmlNode Ψάχνει για XmlNode με όνομα Name αν το βρει το επιστρέφει αν όχι δημιουργεί ένα και το επιστρέφει.
- Function NodeByName(const Name: string): TXmlNode Ψάχνει για XmlNode με όνομα Name αν το βρει το επιστρέφει αν όχι επιστρέφει
- Function NodeNew(const AName: string): TXmlNode; Προσθέτει ένα XmlNode με όνομα Name και το επιστρέφει.
- Function Read(const AName: string; const ADefault: string =””) Διαβάζει το Value ενός aName και το επιστρέφει.
- Procedure Write(const AName, AValue: string; const ADefault: string=”) Γράφει ένα aName και aValue αν υπάρχει ήδη το aName τότε το μεταβάλει.
- property AttributeByName[aName: string] (get aValue: string / set aValue: string) Γράφει ή διαβάζει ένα aValue σε ένα attribute με όνομα aName από ένα TXmlNode.Τα attributes μπορεί να είναι πολλά ανά TXmlNode.
Παράδειγμα κώδικα σε report script (έχει γραφεί στο ADCLayout.script)
with report.XmlNode('PdfExport') do begin Write('Compressed', 'true'); Write('FileName', 'c:\customs\dka'); end; with report.XmlNode('HTMLExport') do begin Write('FileName', 'c:\customs\HtmlDir'); Write('UseGif', 'false'); Write('ExportPictures', 'false'); end;
Για τον ορισμό των ιδιοτήτων που αφορούν την αρχειοθέτηση μηνυμάτων υπάρχει η ιδιότητα BaseReportDevice η οποία έχει τις παρακάτω ιδιότητες:
- ArchMsgBoName, ArchMsgBoKey: Δηλώνουμε το όνομα του Business object και το κλειδί του αντίστοιχα πού αφορά το αρχειοθετημένο μήνυμα (υποχρεωτική ιδιότητα).
- ArchMsgMasterClassName, ArchMsgMasterKey: Δηλώνουμε το όνομα του Business object και το κλειδί του αντίστοιχα πού αφορά τον συναλλασσόμενο στο αρχειοθετημένο μήνυμα (προαιρετική ιδιότητα).
Παράδειγμα αποστoλής email με “embedded filter” (PDFExport) και BaseReportDevice.
var msg: string; begin //if <@ForEmail> then Report.ReportOptions.Name:='doc:'+; msg:='Επισυνάπτεται η συναλλαγή ' + format('"%s <αριθμός:%s> της %s αξίας %s€"',[ , , dateToStr( ), formatfloat('#,###.00', )]) + #13#10 + #13#10 + 'Με εκτίμηση,' + #13#10 + 'για την My SoftwareHouse Α.Ε.'+#13#10 +#13#10+ 'Ειρήνη Σκάντζου' +#13#10; with report.xmlnode('MailExport') do begin write('address', ); write('subject', 'Για το λογιστήριο της "' + +'"'); write('lines', msg); end; end.
Η χρήση των συσκευών γίνεται από:
- από την οθόνη εκτύπωσης αναφορών.
Ο χρήστης μπορεί να επιλέξει μια συσκευή και να στείλει απ’ ευθείας την αναφορά σε αυτή - από τα Σετ Παραμέτρων Report.
Αν έχει προεπιλεγεί συσκευή από τον κατασκευαστή του Σετ Παραμέτρων τότε η αναφορά στέλνεται απ’ ευθείας την σε αυτή. - από τις σειρές ανά παραστατικό.
Αν έχει επιλεγεί συσκευή τότε το παραστατικό αντί να εκτυπωθεί στέλνεται απ’ ευθείας στη συσκευή.
Στην επανεκτύπωση παραστατικού βγαίνει οθόνη και ρωτάει τη συσκευή (προτείνοντας την επιλεγμένη στο παραστατικό ή αν είναι επανεκτύπωση από το browser τότε δεν προτείνει συσκευή) αν επιλεχθεί τότε το κάθε
παραστατικό στέλνεται απ’ ευθείας στη συσκευή.
Σε κάθε μία από τις παραπάνω περιπτώσεις το πρόγραμμα διαβάζει τι παραμέτρους από την εκάστοτε συσκευή και επιπλέον κοιτάζει αν από το report υπάρχουν παράμετροι που αφορούν τον τύπο της συσκευής, αν ναι τότε καλύπτουν αυτές του χρήστη.
Οι τύποι συσκευών του report λαμβάνονται υπ’ όψη (καλύπτουν αυτές του χρήστη) στην περίπτωση που ο χρήστης επιλέξει export ενός report (μέσω του report preview ή από την οθόνη εκτύπωσης αναφορών.
Ιδιότητες (properties) για την χρήση τους σε script θα βρείτε εδώ.
Αποστολή e-mail
Μια αναφορά μπορεί να σταλεί σε ένα e-mail η να «σπάσει» σε πολλά e-mail με διαφορετικό περιεχόμενο το κάθε ένα ανάλογα δηλαδή τον ποιον αφορά τι.
- Μια αναφορά σε ένα e-mail Δεν χρειάζεται παραμετροποίηση.
- Μια αναφορά να «σπάσει» σε πολλά e-mail. Για να μπορέσει το πρόγραμμα να αποστείλει πολλά e-mail χρειάζεται ο κατάλληλος σχεδιασμός του. Για την κάλυψη της ανάγκης προστέθηκε method AddToEmail στο object property Report
Procedure AddToEmail(Address, Subject, Text: string) Η procedure τοποθετείται στο beforePrint ή afterPrint του page header και κάθε σελίδα πρέπει να ανήκει σε ένα μόνο παραλήπτη ώστε να διασφαλιστεί ότι δεν θα παραλάβει κάποιος περιεχόμενο που είναι και κάποιου άλλου
Address είναι η διεύθυνση του παραλήπτη, Subject είναι το θέμα και Text είναι το κείμενο που θέλουμε να έχει το e-mail.
Η αποστολή του e-mail μπορεί να γίνει:- Μέσω του προκαθορισμένου e-mail client Δεν χρειάζεται κάποια ρύθμιση του προγράμματος. Χρησιμοποιείται αν δεν έχει συμπληρωθεί το Email Host (στα στοιχεία του χρήστη).
- Μέσω Smtp server. Το πρόγραμμα έχει ενσωματωμένο smpt client και μέσω αυτού γίνεται η αποστολή.
Χρειάζεται να οριστούν οι παράμετροι από την οθόνη “χρήστες”, καρτέλα >”Στοιχεία e-mail”
Email συμπληρώνουμε το δικό μας e-mail
Για το πως ρυθμίζεται το email στην εφαρμογή, μπορείτε να βρείτε εδώ