Οι αναφορές φτιάχνονται εύκολα με τη χρήση της γλώσσας Firebird SQL και κάποιες εντολές της EMDI που ενσωματώνονται στα σχόλια.

Μεταβλητές που μπορείς να συμπεριλάβεις στον SQL κώδικα:

Οι παρακάτω παράμετροι χρησιμοποιούνται μέσα στην WHERE που χρησιμοποιείται για τον περιορισμό των εγγραφών που επιστρέφονται:

:apo Ημερομηνία από
:ews Ημερομηνία εως
Περιγραφή αναφοράς 1η παράμετρος από εκτέλεση accounts
Κωδικός αναφοράς 2η παράμετρος από εκτέλεση accounts
:param1 3η παράμετρος από εκτέλεση accounts. Ανάμεσα σε μονά εισαγωγικά αν είναι κείμενο
:param2 4η παράμετρος από εκτέλεση accounts. Ανάμεσα σε μονά εισαγωγικά αν είναι κείμενο
:search Αναζήτηση για φόρμες που είναι τσεκαρισμένη η αναζήτηση. Ανάμεσα σε μονά εισαγωγικά αν είναι κείμενο
:orderby Προστίθεται αντί για την εντολή order by για ταξινόμηση
:loydoc Αριθμός παραστατικού πόντων
:loypro Κωδικός είδους πόντων
:loypay Κωδικός είδους εξαργύρωσης
:orderdoc Πρώτη συντομογραφία από το πεδίο check_copy_balance (Πωλήσεις → Ρυθμίσεις → «συσχετισμένο αντίγραφο»)
:orderdid Λίστα Aa τύπων παραστατικών (eidhpar) από το πεδίο check_copy_balance — για IN (:orderdid)
:relatedabbreviation CASE με %ΔΠΑΡ%, %ΔΑΠΟ% κ.λπ. ανά τύπο από το πεδίο check_copy_balance· αντικαθίσταται στο Sxetika LIKE (αναφορές εκκρεμών ποσοτήτων)
:dm Δεκαδικά αξίας μονάδων
:ds Δεκαδικά αξίας συνόλων
:df Δεκαδικά αξίας ποσοστών
:dp Δεκαδικά αξίας ποσοτήτων
–nodecimals– Απεριόριστα δεκαδικά
–combo– Αναπτυσσόμενη λίστα

Συσχετισμένο αντίγραφο

Στις Ρυθμίσεις, Αγορές/Πωλήσεις στο πεδίο «συσχετισμένο αντίγραφο», καταχωρείς τις συντομογραφίες των τύπων παραστατικών που παρακολουθείς, χωρισμένες με κόμμα (π.χ. ΔΠΑΡ,ΔΑΠΟ). Αν ο SQL κώδικας της αναφοράς περιέχει μία από τις μεταβλητές :orderdoc, :orderdid ή :relatedabbreviation, η EMDI τις αντικαθιστά αυτόματα βάσει:

:orderdoc η πρώτη συντομογραφία της λίστας. Σε παλαιότερες αναφορές (π.χ. «02.Παραγγελίες») χρησιμοποιείται στο LIKE του Sxetika με μορφή '%:orderdoc%'
:orderdid οι κωδικοί Aa (eidhpar) όλων των τύπων της λίστας· βάλε IN (:orderdid) στο WHERE
:relatedabbreviation έκφραση CASE ανά τύπο (π.χ. %ΔΠΑΡ% ή %ΔΑΠΟ%)· απαραίτητη όταν έχεις πάνω από έναν τύπο, ώστε κάθε παραστατικό να ψάχνει μόνο τη δική του συντομογραφία στο Sxetika

Παράδειγμα στο LIKE του Sxetika (πολλαπλοί τύποι):

Για αναφορές εκκρεμών ποσοτήτων (π.χ. «02.Εκκρεμή είδη προς έκδοση») χρησιμοποίησε και τις τρεις μεταβλητές. Εμφανίζονται μόνο γραμμές με υπόλοιπο > 0 από παραγγελίες ή δελτία αποστολής χωρίς τιμές· δελτία αποστολής με εμφάνιση τιμών δεν συμπεριλαμβάνονται.

Για παράδειγμα με το :search μπορούμε να βάλουμε μια συνθήκη στο where ώστε να κάνει πολλαπλή αναζήτηση στην περιγραφή προϊόντος:

 

Πεδία στον SQL κώδικα

Τα παρακάτω aliases χρησιμοποιούνται μέσα στην εντολή SELECT που χρησιμοποιείται για την επιστροφή δεδομένων στον καλούντα:

doc Ο αριθμός γραμμής πώλησης “Aa” (δημιουργία κουμπιού που ανοίγει το αντίστοιχο παραστατικό στις πωλήσεις)
cus Ο αριθμός γραμμής πελάτη “Aa” (δημιουργία κουμπιού που ανοίγει τον αντίστοιχο πελάτη στο πελατολόγιο)
pro Ο αριθμός γραμμής προϊόντος “Aa” (δημιουργία κουμπιού που ανοίγει το αντίστοιχο είδος στην αποθήκη)
prd Ο αριθμός γραμμής προϊόντος “Aa” (δημιουργία κουμπιού που ανοίγει τα παραστατικά του αντίστοιχου είδους στην αποθήκη)
ksq Το αποτέλεσμά της χρησιμοποιείται στο script ενημέρωσης (δημιουργία κουμπιού που ανοίγει editor για επεξεργασία δεδομένων)
eml Το e-mail για αποστολή|Όνομα|Αξία|Σύνδεσμος e-invoice|Αριθμός voucher (δημιουργία κουμπιού που στέλνει e-mail)
sms Το κινητό για αποστολή|Όνομα|Αξία|Σύνδεσμος e-invoice|Αριθμός voucher (δημιουργία κουμπιού που στέλνει sms)
img Εμφάνιση φωτογραφίας
NEXT VALUE FOR “gen_counter” Ο αριθμός γραμμής

 

Script ενημέρωσης

:ksq Τιμή που εκτελείται στο κώδικα με εισαγωγικά
:ksp Τιμή που εκτελείται στο κώδικα χωρίς εισαγωγικά

 

Υπάρχει δυνατότητα εκτέλεσης μέχρι 2  script χωρισμένα με ερωτηματικό “;”.

Στο παράδειγμα 1, μπορούμε να επεξεργαστούμε και να αποθηκεύσουμε τα πεδία του επιλεγμένου πελάτη. Σημαντικό είναι ότι πρέπει πάντα να συμπεριλαμβάνεται ένα πεδίο κλειδί που θα ονομάζεται “Aa” (εδώ συμπεριλαμβάνεται λόγω του *).

Παράδειγμα 1:

Στο παράδειγμα 2, αποτελείται από 2 scripts. Πρώτα δημιουργείται μια νέα γραμμή, αν δεν υπάρχει ήδη, στο πίνακα “kinhseis” και μετά επιλέγουμε να φανούν από τον ίδιο πίνακα 2 πεδία, “Order stage” και “Notes”. Χρησιμοποιούμε και σε αυτή τη περίπτωση το πεδίο κλειδί ως “Aa” (“kinhseis”.”Grammh”).

Παράδειγμα 2:

Στο παράδειγμα 3, επεξεργαζόμαστε και αποθηκεύουμε το “custom1” πεδίο του επιλεγμένου παραστατικού. Εδώ το πεδίο κλειδί είναι το “pvlhseis”.”Aa” και “Status” ο τίτλος που έχουμε βάλει για το πεδίο στο παράθυρο επεξεργασίας.

Παράδειγμα 3:

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

Άνοιγμα εξωτερικής εφαρμογής

Το “πεδίο επεξεργασίας” το χρησιμοποιούμε για να ορίσουμε μια λίστα επιλογών σε πεδίο που επιθυμούμε.

Στο “επιλογές πεδίου” γράφουμε χωρισμένες με κόμμα τις επιλογές που θέλουμε να έχει η λίστα. Δεν είναι υποχρεωτικό.

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

Χρησιμοποιώντας το πεδίο του “συνδέσμου” μπορούμε να καλούμε μια εξωτερική εφαρμογή.

Όταν ο σύνδεσμος καλεί διεύθυνση διαδικτύου χρησιμοποιούμε τις μεταβλητές:

#VL1 πεδίο επεξεργασίας
#VL2 πεδίο ανάγνωσης

 

Για παράδειγμα:

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

Για παράδειγμα:

 

Εντολές της EMDI

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

Περιλαμβάνει όλες τις ρυθμίσεις που κάνουμε για μια αναφορά.

Για παράδειγμα, αν θέλεις να δημιουργήσεις γράφημα, τότε συμπληρώνεις όπου xx το πεδίο για τον άξονα x, yy το πεδίο για τον άξονα y και xxlabel το πεδίο για τον τίτλο του άξονα x.

Για αρίθμηση γραμμών χρησιμοποιούμε τη παρακάτω μεταβλητή μετά το select:

 

Χρώματα

Για να δώσουμε χρώμα έχουμε δυνατότητα να ορίσουμε μια μεταβλητή που παίρνει κάποιες τιμές (μέχρι 9) χωρισμένες με κόμμα π.χ.:

1,22,2,45,3,90,3,111,9

Το χρώμα που παίρνει η γραμμή αντίστοιχα είναι:

κίτρινο,κόκκινο,πράσινο,κίτρινο,κόκκινο,πράσινο,κίτρινο,κόκκινο,πράσινο

 

Αναπτυσσόμενη λίστα

Υπάρχει η δυνατότητα να ενεργοποιήσουμε μία λίστα με επιλογές. Η κάθε επιλογή εισάγει ένα κώδικα στη μεταβλητή –combo–, που τον διαβάζει από αντίστοιχο αρχείο με κατάληξη psql.

Στο παρακάτω παράδειγμα δημιουργούμε 2 επιλογές, DELIVERY και RESERVED

Όταν ο χρήστης επιλέγει DELIVERY τότε το περιεχόμενο του αρχείου sql1.psql εισάγεται στη θέση της μεταβλητής –combo–.

Παράδειγμα αρχείου psql

ή οποιοσδήποτε κώδικας sql που θέλουμε να συνδυαστεί με το κύριο κώδικά μας.

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

 

Δικαιώματα

Μπορούμε να ορίσουμε ποιοί χρήστες, βάσει δικαιωμάτων μπορούν να εκτελέσουν μια αναφορά. Στο πεδίο “Δικαιώματα” γράφουμε τον τίτλος δικαιωμάτων που ανήκουν οι χρήστες που θα έχουν πρόσβαση στην αναφορά.
Για πολλούς τίτλους χωρίζουμε με κόμμα.
Κενό πεδίο για κανένα περιορισμό.

 

Πρόσθετες λειτουργίες στην SQL (functions)

Λήψη πεδίου από κείμενο διαχωρισμένο:

Αποτέλεσμα: test2

Μετατροπή κειμένου σε αριθμό με δεκαδικά

Αποτέλεσμα: 152,33

Αποτέλεσμα: 152,33

Μετατροπή κειμένου σε αριθμό χωρίς δεκαδικά

Αποτέλεσμα: <null>

Αποτέλεσμα: 152

 

* Σημείωση: Για εκτέλεση πολλαπλών queries βάζουμε στην αρχή του κώδικα: