Υπολογιζόμενες μεταβλητές - Business - Solution ERP / Ορίζοντες Windows

Οι Υπολογιζόμενες μεταβλητές είναι μια γενική δυνατότητα της εφαρμογής που μπορεί να χρησιμοποιηθεί για να επεκτείνει τις δυνατότητες πληροφόρησης του χρήστη με αριθμητικά (συνήθως) μεγέθη που προκύπτουν από εξειδικευμένους αλγορίθμους επεξεργασίας των υφιστάμενων πληροφοριών της βάσης δεδομένων.

Οι αλγόριθμοι υπολογισμού μπορούν να γραφτούν :

  • είτε σε αρχεία εξειδίκευσης (customization scripts) ακολουθώντας τους κανόνες της Enable Script γλώσσας, και η οποία ήδη χρησιμοποιείται για την εξειδίκευση των εκτυπώσεων Crystal (αρχεία .scr)
  • είτε με Visual Basic 6 δημιουργώντας ActiveX dll (Προσοχή: ισχύει για την έκδοση Business ERP 9.5.0 ή Ορίζοντες Windows 5.5.0 ή μεταγενέστερες)

Υπολογισμός και εμφάνιση

Οι μεταβλητές μπορεί να ορίζονται :

  • σε επίπεδο εγκατάστασης αξιοποιώντας όλα τα δεδομένα της εφαρμογής
  • ή σε επίπεδο συγκεκριμένης οντότητας όπου είναι άμεσα διαθέσιμα τα δεδομένα συγκεκριμένης εγγραφής της οντότητας

Στην πρώτη περίπτωση οι Υπολογιζόμενες μεταβλητές εμφανίζονται από το μενού Διαχείριση\ Πληροφόρηση\ Υπολογιζόμενες μεταβλητές ή από το πλήκτρο της γραμμής εργαλείων «Ωμέγα-MIS»

Στη δεύτερη περίπτωση οι μεταβλητές εμφανίζονται από το μενού Επεξεργασία\ Υπολογιζόμενες μεταβλητές που είναι ενεργό όταν είναι ανοιχτή η φόρμα διαχείρισης μιας οντότητας.

Η κλήση της σχετικής ενέργειας εμφανίζει και στις δυο περιπτώσεις διάλογο με λίστα των μεταβλητών που έχουν ήδη οριστεί και τις τιμές τους.

Οι τιμές των μεταβλητών υπολογίζονται δυναμικά τη στιγμή της εμφάνισης του διαλόγου.

Αποθήκευση στη λίστα εργασιών

Με το πλήκτρο «Προσθήκη στα Εργαλεία» η κλήση του διαλόγου προστίθεται ως ενέργεια στη λίστα εργασιών ώστε να είναι άμεσα διαθέσιμη στο χρήστη.

Σημείωση: Αν η Προσθήκη στα Εργαλεία χρησιμοποιηθεί από τη φόρμα εγγραφής, όταν εκτελεστεί η ενέργεια από τη λίστα εργασιών δεν θα υπολογίσει τους δείκτες οι οποίοι βασίζονται σε τιμές της εγγραφής από την οποία προστέθηκε.

Ορισμός μεταβλητών

Για τον ορισμό των μεταβλητών απαιτείται η δημιουργία δυο αρχείων.

  • Το αρχείο δήλωσης των μεταβλητών (.idx)
  • Τα αρχεία υλοποίησης των αλγορίθμων υπολογισμού (.scr αν ο αλγόριθμος υλοποιείται με Enable script, ή .dll αν χρησιμοποιείται Visual Basic)

Αρχείο δήλωσης των μεταβλητών

Το αρχείο δήλωσης των μεταβλητών είναι σε μορφότυπο XML και έχει κατάληξη idx.

Ονοματολογία αρχείου δήλωσης οντότητας

Αν πρόκειται να δηλωθούν μεταβλητές που σχετίζονται με συγκεκριμένη οντότητα τότε το όνομα του αρχείου δήλωσης των μεταβλητών είναι το όνομα της οντότητας.

Π.χ. Aν επιθυμούμε ένα σύνολο μεταβλητών που προκύπτουν από επεξεργασία πεδίων της οντότητας «Πελάτης», το αρχείο δήλωσης θα ονομαστεί SKClient.idx

Ονοματολογία αρχείου δήλωσης εγκατάστασης

Αν πρόκειται να δηλωθούν μεταβλητές που δε σχετίζονται με συγκεκριμένη οντότητα αλλά με πολλές και προκύπτουν ενδεχομένως από συνδυασμό πολλαπλών δεδομένων, τότε το όνομα του αρχείου είναι πλήρως κι ελεύθερα οριζόμενο ανά εγκατάσταση.

Π.χ. ERPIndexes.idx

Θέση

Το κάθε αρχείο δήλωσης οντότητας πρέπει να αποθηκεύεται στην περιοχή της εφαρμογής: Reports\Indexes

Το κάθε αρχείο δήλωσης εγκατάστασης μπορεί να αποθηκεύεται οπουδήποτε, συνιστάται όμως για λόγους οργάνωσης να αποθηκεύεται σε νέο κατάλογο εντός της περιοχής Reports\Indexes.

Περιεχόμενο

Το αρχείο δήλωσης περιλαμβάνει τα βασικά χαρακτηριστικά των μεταβλητών προς υπολογισμό.

Παράδειγμα περιεχομένου τέτοιου αρχείου είναι το ακόλουθο:

Αναλυτικά τα πεδία του xml έχουν ως εξής:

Calculator: Προσδιορίζει τα στοιχεία που απαιτούνται για την εκτέλεση του αλγορίθμου υπολογισμού από την εφαρμογή.

Αν χρησιμοποιείται Enable Script η τιμή του πεδίου είναι της μορφής

Αρχείο script,S

όπου το Αρχείο script είναι το όνομα του αρχείου υπολογισμού (.scr) συμπεριλαμβανομένης και της θέσης του στο δίσκο. Η θέση μπορεί να ορίζεται σχετικά με την περιοχή της εφαρμογής, όπως στο εμφανιζόμενο παράδειγμα, είτε προσδιορισμένη πλήρως (π.χ. \\Server\ScriptFolder\filename.scr).

Αν χρησιμοποιείται Visual Basic η τιμή του πεδίου είναι της μορφής

Κλάση,A

όπου Κλάση είναι η κλάση που έχει χρησιμοποιηθεί στη Visual Basic για την παραγωγή του αρχείου dll.

Αν π.χ. το Visual Basic project είναι το ERPIndexes και η κλάση SKClientIdx, η τιμή του Calculator θα είναι

ERPIndexes.SKClientIdx,A

Title: Ο τίτλος του διαλόγου των υπολογισμένων μεταβλητών

Formula\ID: Το όνομα της μεθόδου υπολογισμού της μεταβλητής όπως θα οριστεί στο σχετικό αρχείο υπολογισμού. Το όνομα πρέπει να είναι με Αγγλικούς χαρακτήρες και χωρίς κενά.

Formula\Title: Η περιγραφή της μεταβλητής όπως θα εμφανιστεί στο διάλογο των υπολογισμένων μεταβλητών

Formula\Behv: Η τιμή δε χρησιμοποιείται και είναι για μελλοντική χρήση.

Αρχεία υλοποίησης αλγορίθμων υπολογισμού

Για κάθε μια από τις μεταβλητές που ορίζονται στα αρχεία δήλωσης πρέπει να υπάρχει ένας αλγόριθμος υπολογισμού.

Οι αλγόριθμοι μπορεί να αποθηκεύονται σε αρχεία .scr ή dll

  • είτε ανά αρχείο δήλωσης μεταβλητών .idx
  • είτε σε ένα μόνο αρχείο (scr ή dll) στο οποίο όλα τα αρχεία δηλώσεων θα αναφέρονται (στοιχείο Calculator)

Στα αρχεία υλοποίησης πρέπει να γραφτούν οι αλγόριθμοι ως μέθοδοι με το όνομα που δηλώνεται στο στοιχείο Formula\ID του αρχείου δήλωσης.

Η μορφή των μεθόδων αυτών είναι η ακόλουθη:

Function MethodName(ByVal pSession As Object, _

ByVal pObject As Object, _

CLVal As Variant, _

textColor As Long, _

textStyle As Long) As Variant

όπου:

MethodName: το όνομα της μεθόδου που δηλώνεται στο στοιχείο Formula\ID

pSession: το Session της εφαρμογής

pObject: το τρέχον object της οντότητας, αν ο υπολογισμός γίνεται για μεταβλητή οντότητας. Αν ο υπολογισμός αναφέρεται σε μεταβλητή εγκατάστασης, η συγκεκριμένη παράμετρος δεν ορίζεται και δεν πρέπει να χρησιμοποιείται.

CLVal: η παράμετρος δε χρησιμοποιείται και είναι για μελλοντική χρήση.

textColor: Προσδιορίζει το χρώμα της τιμής της μεταβλητής με το οποίο θα εμφανιστεί στη λίστα των μεταβλητών. Η τιμή της παραμέτρου μπορεί να οριστεί.

Οι δυνατές τιμές της παραμέτρου είναι

  • 0 - το προκαθορισμένο χρώμα κειμένου (προκαθορισμένη τιμή)
  • Οι τιμές των πρότυπων χρωμάτων RGB

Ενδεικτικές τιμές είναι:

Χρώμα

Τιμή

Κόκκινο

16711680

Βαθύ πράσινο

32768

Μπλε

255

textStyle: Προσδιορίζει τον τύπο γραφής της τιμής της παραμέτρου στη λίστα των μεταβλητών. ΟΙ δυνατές τιμές είναι :

0 - για κανονική γραφή (προκαθορισμένη τιμή)

2 - για έντονη γραφή

4 - για πλάγια γραφή

8 - για υπογράμμιση

Οι παραπάνω τιμές μπορούν να λειτουργούν και συνδυαστικά.

Π.χ. για ταυτόχρονα έντονη και πλάγια γραφή η τιμή που πρέπει να τεθεί στην παράμετρο είναι 2 + 4 = 6

Το αποτέλεσμα της μεθόδου πρέπει να είναι τύπου κείμενο.

 

Στην περίπτωση των αριθμών, για έλεγχο του πλήθους των εμφανιζόμενων δεκαδικών μπορεί να χρησιμοποιηθεί η COM μέθοδος του pSession object

double RoundValue(value, digits)

όπου:

value: η αξία προς στρογγυλοποίηση

digits: το επιθυμητό πλήθος δεκαδικών

 

Συνοπτική δήλωση μεθόδου

Ειδικά για τα αρχεία .scr, αν δεν είναι επιθυμητή η αξιοποίηση των χρωμάτων και στυλ γραφής, είναι εφικτή η δήλωση της μεθόδου σε πιο συνοπτική μορφή.

Για τους αλγορίθμους εγκατάστασης αρκεί η δήλωση:

Function MethodName(ByVal pSession As Object) As Variant

ενώ για τους αλγορίθμους οντότητας αρκεί η δήλωση:

Function MethodName(ByVal pSession As Object, ByVal pObject As Object) As Variant

Σημαντικές επισημάνσεις

  1. Οι παράμετροι textColor και textStyle ισχύουν από την έκδοση Business ERP 9.5.0 και Ορίζοντες Windows 5.5.0
  2. Σε παλιότερες εκδόσεις η μορφή της μεθόδου ήταν :

Function MethodName(ByVal pSession As Object, _

ByVal pObject As Object, _

CLVal As Variant, _

Unused1 As Integer, _

Unused2 As Integer) As Variant

όπου ο τύπος των δυο τελευταίων παραμέτρων ήταν Integer. Αυτή η μορφή υποστηρίζεται ακόμα μόνο για τους υπολογισμούς σε αρχεία script. Αν είναι επιθυμητή η αξιοποίηση των αρχείων dll ή/και των νέων δυνατοτήτων χρώματος και στυλ γραφής, πρέπει να χρησιμοποιηθεί η νέα μορφή της μεθόδου.

Παραδείγματα αλγορίθμων

Υπολογιζόμενη μεταβλητή οντότητας

Function Get_NewPlafon(ByVal pSession As Object, _

ByVal pObject As Object, _

CLVal As Variant, _

textColor As Long, _

textStyle As Long) As Variant

 If (pObject Is Nothing) Then

Get_NewPlafon = "Δεν ορίστηκε πελάτης"

Exit Function

 End If

 Get_NewPlafon = CStr(pSession.RoundValue(pObject.Val_s("Value1") + pObject.Val_s("Value2"), 2))

End Function

 

Υπολογιζόμενη μεταβλητή εγκατάστασης

Private Const TXT_STYLE_BOLD = 2

Private Const TXT_COLOR_DEEPGREEN = 32768

 

Function Get_Apothema100(ByVal pSession As Object, _

ByVal pObject As Object, _

CLVal As Variant, _

textColor As Long, _

textStyle As Long) As Variant

dim SQLStmt as string

SQLStmt = "select sum(s.qntrest) qrest from stlccuml s inner join material m on m.aa=s.materialaa

where m.code=?"

dim pParams

set pParams = Array("100")

dim clQuery as ICLAQuerySet

set clQuery = pSession.CreateQuerySet(SQLStmt, pParams)

 

if clQuery is nothing or clQuery.IsEOF then

Get_Apothema = ""

end if

 

dim sumQnt as double

sumQnt = clQuery.Val(0)

 

textStyle = TXT_STYLE_BOLD

textColor = TXT_COLOR_DEEPGREEN

Get_Apothema100 = CStr(pSession.RoundValue(sumQnt, 2))

End Function