Customizing Softone - The Black Book Ver.2012a

218
  • Upload

    -
  • Category

    Documents

  • view

    817
  • download

    176

description

Customizing Softone - The Black Book Ver.2012a

Transcript of Customizing Softone - The Black Book Ver.2012a

Page 1: Customizing Softone - The Black Book Ver.2012a
Page 2: Customizing Softone - The Black Book Ver.2012a

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ ....................................................................................................... 2

ΚΕΦΑΛΑΙΟ 1 Προβολές – Οθόνες Εργασίας .......................................................................... 7 A. Δομικά Στοιχεία Οθονών Εργασίας .............................................................................................. 8

A.1 Σελίδες (Tabs) .................................................................................................................................................8 A.2 Ζώνες - Περιοχές ............................................................................................................................................9 A.3 Πίνακες – Grids ............................................................................................................................................ 10 A.4 Hyperlinks .................................................................................................................................................... 11 A.5 Πεδία Ανεύρεσης ......................................................................................................................................... 11 A.6 SoftOne Spreadsheet .................................................................................................................................. 12

B. Σχεδίαση Προβολής ..................................................................................................................... 13 B.1 Εντολές Σχεδιασμού .................................................................................................................................... 14 B.2 Pop Up Forms .............................................................................................................................................. 16 B.3 Buttons – Hyperlink Commands .................................................................................................................. 20 B.4 Editors .......................................................................................................................................................... 24

ΚΕΦΑΛΑΙΟ 2 Ευρετήρια .......................................................................................................... 26 A. Βασικές Λειτουργίες ..................................................................................................................... 27 B. Βασικά Εργαλεία Σχεδίασης ........................................................................................................ 28

Β.1 Στήλες Ευρετηρίου ....................................................................................................................................... 28 B.2 Ρυθμίσεις Πεδίων ......................................................................................................................................... 29 B.3 Ρυθμίσεις Εμφάνισης ................................................................................................................................... 30 B.4 Καθορισμός Φίλτρων ................................................................................................................................... 31 B.5 Ομαδοποίηση Εγγραφών ............................................................................................................................ 31 B.6 Ταξινόμηση Εγγραφών ................................................................................................................................ 31

C. Προχωρημένα Εργαλεία Σχεδίασης ............................................................................................ 32 C.1 Ενότητες – Bands σε Ευρετήρια .................................................................................................................. 32 C.2 Ενότητες με Οριζόμενους Πίνακες ............................................................................................................... 34

ΚΕΦΑΛΑΙΟ 3 Φόρμες Εκτύπωσης ......................................................................................... 37 Α. Γενικά Στοιχεία Εκτύπωσης ........................................................................................................ 38

Α.1 Ρυθμίσεις Εκτυπωτή .................................................................................................................................... 38 Α.2 Κανάλια – Μέσα Εκτύπωσης ....................................................................................................................... 39 Α.3 Τύποι Φορμών Εκτύπωσης ......................................................................................................................... 39

B. Εσωτερικές Φόρμες ..................................................................................................................... 40 B.1 Ζώνες Πεδίων .............................................................................................................................................. 40 B.2 Γραμμή Εργαλείων ...................................................................................................................................... 41 B.3 Γενικές Λειτουργίες Φόρμας ........................................................................................................................ 42 B.4 Διαστάσεις Φόρμας ...................................................................................................................................... 43 B.5 Γραμματοσειρές (Fonts) ............................................................................................................................... 44 B.6 Επαναλαμβανόμενη Ζώνη ........................................................................................................................... 45 B.7 Εικόνα Ενότητας – Είδους ........................................................................................................................... 45

Page 3: Customizing Softone - The Black Book Ver.2012a

C. Φόρμες Word ................................................................................................................................ 46 C.1 Εισαγωγή Φόρμας ....................................................................................................................................... 46 C.2 Σχεδίαση Φόρμας ........................................................................................................................................ 46 C.3 Φίλτρα πεδίων ............................................................................................................................................. 47 C.4 Δεκαδικά πεδίων .......................................................................................................................................... 48 C.5 Report Footer............................................................................................................................................... 49 C.6 Εικόνα Είδους .............................................................................................................................................. 50 C.7 Αναδίπλωση memo πεδίων ......................................................................................................................... 51

D. Φόρμες Excel ................................................................................................................................ 52 D.1 Εισαγωγή Φόρμας ....................................................................................................................................... 52 D.2 Σχεδίαση Φόρμας ........................................................................................................................................ 52

E. Ετικέτες ......................................................................................................................................... 53 E.1 Εισαγωγή Ετικέτας ....................................................................................................................................... 53 E.2 Σχεδίαση Ετικέτας ........................................................................................................................................ 53 E.2 Εκτύπωση Ετικέτας ..................................................................................................................................... 53

F. Φόρμες Crystal Reports ............................................................................................................... 54 F.1 Γενικοί Κανόνες ............................................................................................................................................ 54 F.2 Σχεδίαση εκτύπωσης Crystal ....................................................................................................................... 54 F.3 Εισαγωγή Crystal στο SoftOne .................................................................................................................... 58

G. Αυτόματη Δρομολόγηση & Αρχειοθέτηση ................................................................................. 59 G.1 Αυτόματη Δρομολόγηση .............................................................................................................................. 59 G.2 Αυτόματη Αρχειοθέτηση .............................................................................................................................. 61

ΚΕΦΑΛΑΙΟ 4 Alerts ................................................................................................................. 62 A. Γεγονότα (Events) & Συνθήκες .................................................................................................... 63

Α.1 Events Πεδίων ............................................................................................................................................. 63 A.2 Events Πινάκων ........................................................................................................................................... 64 Α.3 Events Ενοτήτων ......................................................................................................................................... 65 Α.4 Συνθήκες Ευρετηρίου – Αναζήτησης ........................................................................................................... 66

B. Ενέργειες (Actions) ...................................................................................................................... 67 B.1 Αποστολή Μηνύματος ................................................................................................................................. 67 B.2 Εμφάνιση Μηνύματος (Warning Message) ................................................................................................. 67 B.3 Εμφάνιση Λάθους (Exception Message) ..................................................................................................... 67 B.4 Εκτέλεση ...................................................................................................................................................... 67

ΚΕΦΑΛΑΙΟ 5 Database Designer Basic ................................................................................ 68 Α. Resource Editor – Γενικές Λειτουργίες ....................................................................................... 69 B. Εισαγωγή Πεδίων σε Πίνακες ..................................................................................................... 71

B.1 Τύποι Δεδομένων Πεδίων ............................................................................................................................ 71 B.2 Πεδία Ανεύρεσης (Επιλογή από Πίνακα) ..................................................................................................... 72

C. Πίνακες στη Mνήμη ...................................................................................................................... 73 C.1 Σχεδίαση Πίνακα στη Μνήμη ....................................................................................................................... 73 C.2 Εμφάνιση Πίνακα στο Μενού ....................................................................................................................... 74

D. Detail Πίνακες ............................................................................................................................... 75 D.1 Σχεδίαση Detail Πίνακα ............................................................................................................................... 75 D.2 Εμφάνιση Πίνακα σε Προβολή .................................................................................................................... 76

E. String Lists – Λίστες Τιμών .......................................................................................................... 78

Page 4: Customizing Softone - The Black Book Ver.2012a

ΚΕΦΑΛΑΙΟ 6 Database Designer Advanced ......................................................................... 79 A. Database Views ............................................................................................................................ 80

A.1 Σχεδίαση Database View ............................................................................................................................. 80 A.2 Παραδείγματα Database Views ................................................................................................................... 80

Β. Objects .......................................................................................................................................... 83 Β.1 Δημιουργία Object με χρήση Πίνακα ........................................................................................................... 83 B.2 Δημιουργία Object με χρήση Database View .............................................................................................. 84 B.3 Εμφάνιση Object στο Μενού ........................................................................................................................ 84 B.4 Δημιουργία Φόρμας Εκτύπωσης βάσει νέου Object ................................................................................... 85 B.5 Παραδείγματα Object ................................................................................................................................... 86

C. Virtual Tables ................................................................................................................................ 90 C.1 Δημιουργία Virtual Table ............................................................................................................................. 90 C.2 Παράδειγμα Χρήσης Virtual Table ............................................................................................................... 90

D. Report Objects ............................................................................................................................. 92 D.1 Σχεδίαση Report Object ............................................................................................................................... 92 D.2 Παράδειγμα Εκτύπωσης με χρήση Report Object ...................................................................................... 93

ΚΕΦΑΛΑΙΟ 7 Extra Tools ....................................................................................................... 95 A. Auto Login από Windows Shortcut ............................................................................................ 96

A.1 Δημιουργία Windows Shortcut ..................................................................................................................... 96 A.2 Παραμετροποίηση Αρχείου Σύνδεσης XCO ................................................................................................ 97 A.3 Extra Commands Αρχείου Σύνδεσης ........................................................................................................... 97 A.4 Αυτόματο Άνοιγμα Ενότητας ........................................................................................................................ 97 A.5 Command Line Params ............................................................................................................................... 97

B. Maximum Εγγραφές ανά Ενότητα (Select Top) .......................................................................... 98 Β.1 Χρήση σε Ενότητες ...................................................................................................................................... 98 Β.2 Χρήση σε Συγκεκριμένο Ευρετήριο Ενότητας ............................................................................................. 99

C. Σχεδίαση Μενού – Menu Jobs ................................................................................................... 100 C.1 Δημιουργία Εργασίας................................................................................................................................. 100 C.2 Τύποι Εργασίας ......................................................................................................................................... 101 C.3 Παράμετροι Εργασιών Μενού – Menu Commands ................................................................................... 102 C.4 Παραδείγματα Εργασιών Μενού................................................................................................................ 103

ΚΕΦΑΛΑΙΟ 8 Χρονοπρογραμματισμός Εργασιών ............................................................. 104 A. Remote Server ............................................................................................................................ 105

A.1 Ενεργοποίηση ............................................................................................................................................ 106 A.2 Εντολές Remote Server ............................................................................................................................. 107 A.3 Αποστολή SMS – Email ............................................................................................................................. 108

B. Εκτέλεση Soft1 Εργασίας από Windows Scheduler ................................................................ 110 B.1 Δημιουργία Αρχείου Soft1 Scheduler ........................................................................................................ 110 B.2 Εισαγωγή Windows Scheduler Task ......................................................................................................... 111 B.3 Παραμετροποίηση Αρχείου Σύνδεσης XCO .............................................................................................. 114

C. Scheduler .................................................................................................................................... 115 C.1 Δημιουργία Εργασίας................................................................................................................................. 116 C.2 Εντολές Scheduler ..................................................................................................................................... 117

D. Μηνύματα – Υπενθυμίσεις ......................................................................................................... 118

Page 5: Customizing Softone - The Black Book Ver.2012a

ΚΕΦΑΛΑΙΟ 9 Scripts Οθονών - Javascript ......................................................................... 119 A. Object .......................................................................................................................................... 120

A.1 Methods ..................................................................................................................................................... 120 A.2 Functions ................................................................................................................................................... 124

B. Dataset ........................................................................................................................................ 128 Β.1 Methods ..................................................................................................................................................... 128 Β.2 Functions ................................................................................................................................................... 130

C. Events ......................................................................................................................................... 132 C.1 Field Events ............................................................................................................................................... 132 C.2 Dataset Events .......................................................................................................................................... 132 C.3 Object Events ............................................................................................................................................ 133 C.3 Sub Form Events ....................................................................................................................................... 133 C.4 Line Printing Events ................................................................................................................................... 134

D. Case Studies ............................................................................................................................... 135 Case Study 1 .................................................................................................................................................... 135 Case Study 2 .................................................................................................................................................... 137 Case Study 3 .................................................................................................................................................... 138 Case Study 4 .................................................................................................................................................... 139 Case Study 5 .................................................................................................................................................... 141 Case Study 6 .................................................................................................................................................... 143 Case Study 7 .................................................................................................................................................... 145

ΚΕΦΑΛΑΙΟ 10 Ροές Δεδομένων – Data Flow ...................................................................... 149 A. Βασικές Λειτουργίες ................................................................................................................... 150 Β. Στοιχεία Κανόνων ...................................................................................................................... 151

Β.1 Αρχική οντότητα ......................................................................................................................................... 151 Β.2 Τελική οντότητα .......................................................................................................................................... 152 Β.3 Ρυθμίσεις Εκτέλεσης .................................................................................................................................. 154

C. Σενάρια Ροών ............................................................................................................................. 155 D. Κλήση από Script Οθόνης ......................................................................................................... 156 E. Case Studies ............................................................................................................................... 157

Case Study 1 .................................................................................................................................................... 157 Case Study 2 .................................................................................................................................................... 158 Case Study 3 .................................................................................................................................................... 159 Case Study 4 .................................................................................................................................................... 161 Case Study 5 .................................................................................................................................................... 162 Case Study 6 .................................................................................................................................................... 163

Page 6: Customizing Softone - The Black Book Ver.2012a

ΚΕΦΑΛΑΙΟ 11 SoftOne Batch Script Language (SBSL) .................................................... 164 A. Βασικές Έννοιες ......................................................................................................................... 165 B. Σύνταξη SBSL κώδικα ................................................................................................................ 166

Β.1 Case Insensitive ........................................................................................................................................ 166 B.2 Semicolons ................................................................................................................................................ 166 B.3 Comments .................................................................................................................................................. 166 B.4 Variables .................................................................................................................................................... 166 B.5 Libraries References .................................................................................................................................. 166 B.6 Execute Functions ..................................................................................................................................... 166

C. Σχεδιασμός οθόνης διαλόγου (interface) ................................................................................. 167 C.1 Section TABLES ........................................................................................................................................ 167 C.2 Section CACHETABLES ........................................................................................................................... 169 C.3 Section PANELS ....................................................................................................................................... 170 C.4 Section STRINGS ...................................................................................................................................... 172 C.5 Section FIELDEXEC .................................................................................................................................. 173

D. Main Code ................................................................................................................................... 175 D.1 Converters & Functions ............................................................................................................................. 175 D.2 Connections ............................................................................................................................................... 176 D.3 Variables .................................................................................................................................................... 177 D.4 Κλήση Βιβλιοθηκών ................................................................................................................................... 177

E. Εκτέλεση / Κλήση SBSL Script .................................................................................................. 178 E.1 Εκτέλεση από Menu .................................................................................................................................. 178 E.2 Εκτέλεση από Browser .............................................................................................................................. 179 Ε.3 Εκτέλεση από Προβολή ............................................................................................................................. 181 E.4 Παράμετροι Εκτέλεσης .............................................................................................................................. 182

F. SBSL Internal Functions ............................................................................................................ 183 G. SoftOne Libraries ....................................................................................................................... 188

G.1 ModuleIntf .................................................................................................................................................. 188 G.2 PiLib ........................................................................................................................................................... 193 G.3 SysRequest ............................................................................................................................................... 196

Η. Case Studies ............................................................................................................................... 198 Case Study 1 .................................................................................................................................................... 198 Case Study 2 .................................................................................................................................................... 199 Case Study 3 .................................................................................................................................................... 201

ΠΑΡΑΡΤΗΜΑ Βοηθητικοί Πίνακες ....................................................................................... 202 A. Πίνακας Sodtype ........................................................................................................................ 203 B. Πίνακας Sosource ...................................................................................................................... 204 C. Παράμετροι Συστήματος (X.SYS) .............................................................................................. 205 D. Εργασίες Μενού – Εργαλεία Συστήματος (acCommands) ...................................................... 206 E. Editor Commands ....................................................................................................................... 208 F. Editors Εφαρμογής..................................................................................................................... 209 G. Πίνακας Origin (Προέλευση Συναλλαγών) ............................................................................... 211 H. Commands σχετικών εργασιών ανά Object ............................................................................ 212 I. Commands Βrowser εργασιών ανά Object................................................................................ 215 J. Περιορισμοί Βάσης Δεδομένων ................................................................................................. 218

Page 7: Customizing Softone - The Black Book Ver.2012a

7

ΚΕΦΑΛΑΙΟ 1 Προβολές – Οθόνες Εργασίας

A. Δομικά Στοιχεία Οθονών Εργασίας A.1 Σελίδες (Tabs) A.2 Ζώνες - Περιοχές A.3 Πλέγματα - Grids A.4 Hyperlinks A.5 Πεδία Ανεύρεσης Α.6 SoftOne Spreadsheet

B. Σχεδίαση Προβολής B.1 Εντολές Σχεδιασμού B.2 Pop Up Forms B.3 Buttons – Hyperlink Commands B.4 Editors

Page 8: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 1 – Προβολές – Οθόνες Εργασίας

8

A. Δομικά Στοιχεία Οθονών Εργασίας Οι προβολές είναι οι οθόνες(Views) που εμφανίζουν αναλυτικά τις εγγραφές των πινάκων. Σε μία προβολή μπορούμε να εμφανίσουμε στοιχεία με χρήση Πινάκων, Database Views ή Virtual Tables. Η εφαρμογή σας δίνει τη δυνατότητα να επεξεργαστείτε τις default προβολές κάθε ενότητας και να τις σχεδιάσετε έτσι ώστε να καλύπτουν τις δικές σας ανάγκες. Μπορείτε, πχ. να σχεδιάσετε μία οθόνη, να μετονομάσετε κάποια πεδία, να τα μετακινήσετε σε σημεία που σας εξυπηρετούν περισσότερο ή ακόμα και να δημιουργήσετε τα δικά σας Tabs, Grids και Buttons. Tα «στοιχεία περιβάλλοντος» που συναντώνται εντός των οθονών εργασίας, είτε οντοτήτων είτε παραστατικών (πχ. Πελατών, Aποθήκης, Tιµολόγησης κλπ) αναλύονται στις επόμενες ενότητες.

A.1 Σελίδες (Tabs)

Οι σελίδες (Tabs) είναι διαδοχικές επικαλυπτόµενες επιφάνειες εργασίας / πληροφοριών στις οποίες ο χειριστής έχει άµεση πρόσβαση µε ένα κλικ στον τίτλο τους. Αλλαγή του τίτλου των σελίδων γίνεται με σχεδιασμό της προβολής και στη συνέχεια με δεξί κλικ – Ιδιότητες στην επιλεγμένη σελίδα (Εικόνα Α1). Μετακίνηση των σελίδων από μία περιοχή σε μία άλλη γίνεται από το κουμπί Form και στη συνέχεια με drag n drop (Εικόνα Α2). Οι χειριστές μπορούν να μετακινηθούν µεταξύ των σελίδων, εκτός από το ποντίκι και με τη χρήση προγραμματισμένου πλήκτρου του από τις γενικές ρυθμίσεις της εφαρμογής («Eπόµενη Σελίδα» «Προηγούµενη Σελίδα»).

Εικόνα A1

Εικόνα A2

Page 9: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 1 – Προβολές – Οθόνες Εργασίας

9

A.2 Ζώνες - Περιοχές Κάθε σελίδα αποτελείται από περιοχές, οι οποίες είναι µέρος επιφάνειας εργασίας. Οι περιοχές επισημαίνονται συνήθως µε ένα τίτλο και περιέχουν πεδία των πινάκων κάθε Object. Στην Εικόνα Α3 βλέπετε την προβολή των Ειδών με πολλές περιοχές (Fast entry, Ταξινόμηση, Πρόσθετοι κωδικοί, κτλ.) στη σελίδα «Βασικά στοιχεία». Οι χειριστές μπορούν να μετακινούνται µεταξύ των ζωνών με χρήση προγραμματισμένων πλήκτρων του πληκτρολογίου («Eπόµενη Zώνη Πεδίων», «Προηγούμενη Zώνη Πεδίων»). Η εισαγωγή πεδίων σε μία περιοχή γίνεται με άνοιγμα του παραθύρου των πεδίων και στη συνέχεια με drag n drop. Οι ιδιότητες κάθε ζώνης (Ύψος Γραμμών, Αριθμός Στηλών, Horizontal / Vertical Tab Order, Καθορισμός Πεδίων) διαμορφώνονται με δεξί κλικ(Εικόνα Α4).

• Στο πεδίο Caption εισάγετε το λεκτικό που θα εμφανίζεται ως τίτλος στην περιοχή • Στο πεδίο Floating δηλώνετε ότι η περιοχή θα καταλαμβάνει όλο το διαθέσιμο χώρο της σελίδας. • Το πεδίο Vertical Order ορίζει το Tab order, δηλαδή την οριζόντια ή κατακόρυφη μετακίνηση στα πεδία με

χρήση του Tab από το πληκτρολόγιο • Στο πεδίο Ομάδα δηλώνετε έναν αριθμό, ο οποίος καθορίζει τη συγκεκριμένη περιοχή. Οποιαδήποτε άλλη

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

Εικόνα A3

Εικόνα A4

Page 10: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 1 – Προβολές – Οθόνες Εργασίας

10

A.3 Πίνακες – Grids Τα Grids εμφανίζουν εγγραφές πινάκων, οι οποίοι είναι detail στους αρχικούς πίνακες των objects(Εικόνα Α5).

Οι ιδιότητες των grids διαμορφώνονται με δεξί κλικ(Εικόνα Α6). • Στο πεδίο Caption εισάγετε το λεκτικό που θα εμφανίζεται ως τίτλος στο grid • Στο πεδίο AA Size εισάγετε το μέγιστο πλήθος ψηφίων που θα εμφανίζονται αριστερά από κάθε γραμμή

του πίνακα. Για παράδειγμα αν εισάγετε τον αριθμό 2 τότε το πλάτος της αρχική στήλης θα προσαρμοστεί ανάλογα για να μπορεί να εμφανιστεί μέχρι και την εγγραφή 99. Αυτό βέβαια δε σημαίνει ότι δεν μπορούν να καταχωρηθούν 100 ή περισσότερες γραμμές, απλά δε θα εμφανίζεται σωστά ο αριθμός εγγραφής τους, γιατί το πλάτος της πρώτης στήλης θα είναι μικρότερο(Εικόνα Α7).

• Στο πεδίο Floating δηλώνετε ότι το grid θα καταλαμβάνει όλο το διαθέσιμο χώρο της σελίδας. • Η εισαγωγή των πεδίων γίνεται με drag n drop από το παράθυρο των πεδίων.

Αναλυτική δημιουργία ενός Grid μπορείτε να βρείτε στο παράδειγμα στο Κεφάλαιο 5.

Εικόνα A5

Εικόνα A6 Εικόνα A7

Page 11: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 1 – Προβολές – Οθόνες Εργασίας

11

A.4 Hyperlinks Προδιαγραφή της εφαρµογής βάσει της οποίας ο τίτλος ενός πεδίου λειτουργεί ως hyperlink (υπερσύνδεσµος). To hyperlink µε την σειρά του παραπέµπει στην “καταλληλότερη κατά περίπτωση” οθόνη εργασίας. Πιο συγκεκριµένα τα hypelinks χρησιμοποιούνται σε:

• Πεδία που συµπληρώνονται µε πινακοποιηµένες πληροφορίες (από κάποιο πίνακα) και σχεδόν πάντα οδηγούν απευθείας στην διαχείριση του πίνακα αυτού (πχ. Γεωγραφικές Zώνες, Nοµίσµατα κλπ).

• Πεδία που περιέχουν διευθύνσεις e-mail ή διευθύνσεις internet λειτουργούν ως hyperlinks που καλούν e-mail εφαρµογές ή οδηγούν στην κατάλληλη διεύθυνση internet αντίστοιχα.

• Διαδικασίες που απαιτούν έµµεσες καταχωρήσεις όπως πχ. Eίσπραξη ή Aντιστοίχιση ή Διακανονισµοί επί Παραστατικού ή έµµεσες προβολές όπως, πχ. Καρτέλες ή Οικονομικά στοιχεία ή Παραστατικών ή οι κατανοµές ABC Costing και κατά κανόνα εξυπηρετούνται από hyperlinks.

Oι δυνατότητες των hyperlinks πολλαπλασιάζονται εάν χρησιµοποιήσει κανείς επάνω τους το χειρισµό «δεξί κλικ». H γενικευµένη χρήση των hyperlinks υποβαθµίζει τη σηµασία των µενού εργασιών διότι δεν είναι απαραίτητο στο χειριστή να “θυµάται” που βρίσκεται κάθε εργασία. Oυσιαστικά κάθε εργασία αποτελεί µενού εργασίας των συναφών της εργασιών και όλα µπορούν να εκτελεστούν µε αστραπιαίο τρόπο -άσχετα από το “που βρισκόµαστε τώρα” και “που βρίσκεται η εργασία στόχος”.

Εικόνα A8

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

Το εικονίδιο του κάτω βέλους υποδηλώνει ότι η αναζήτηση γίνεται από πίνακα στη μνήμη (απλό “List Box”).

Παραδείγματα χρήσης πεδίων ανεύρεσης υπάρχουν στο Κεφάλαιο 5.

Page 12: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 1 – Προβολές – Οθόνες Εργασίας

12

A.6 SoftOne Spreadsheet To SoftOne Spreadsheet είναι ένα υπολογιστικό φύλλο το οποίο εμφανίζεται με συνδυασμό των πλήκτρων Alt+S στα πεδία των προβολών της εφαρμογής. Το συγκεκριμένο εργαλείο σας δίνει τη δυνατότητα χρήσης απλών υπολογισμών μέσα σε περιβάλλον spreadsheet και την εισαγωγή του τελικού αποτελέσματος (επιλεγμένου κελιού) μέσα στο πεδίο από το οποίο κλήθηκε(Εικόνα Α9). Προεπιλεγμένα τα spreadsheet σε όλα τα πεδία εμφανίζονται κενά. Υπάρχει όμως η δυνατότητα δημιουργίας default spreadsheets τα οποία θα είναι αντιστοιχισμένα με συγκεκριμένα πεδία ενοτήτων της εφαρμογής. Το μόνο που χρειάζεται να κάνετε είναι να αποθηκεύσετε το spreadsheet αρχείο που επιθυμείτε στο φάκελο της εφαρμογής με κατάληξη htm και ως όνομα αρχείου να ορίσετε το όνομα του πεδίου(Object_Πεδίο.htm). Για παράδειγμα αν θέλετε να κάνετε αντιστοίχηση ενός αρχείου στο πεδίο Barcode του είδους πρέπει να αποθηκεύσετε το αρχείο μέσα στο φάκελο της εφαρμογής με όνομα ITEM_CODE1.htm Στην Εικόνα Α10 βλέπετε το spreadsheet που εμφανίζεται με Alt+S στο BARCODE των ειδών.

Εικόνα A9

Εικόνα A10

Page 13: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 1 – Προβολές – Οθόνες Εργασίας

13

B. Σχεδίαση Προβολής Για να σχεδιάσετε μία προβολή (οθόνη), επιλέγετε πρώτα μία ενότητα(πχ. Αποθήκη, Πελάτες, Παραστατικά κλπ) και στη συνέχεια αφού εκτελέσετε το ευρετήριο της, κάνετε κλικ στο βελάκι του πλήκτρου «Προβολή» και επιλέγετε Design(Εικόνα Β1). Στη συνέχεια γίνεται προβολή του παραθύρου σχεδιασμού οθονών πάνω στο οποίο εκτελείτε τις εργασίες σχεδιασμού. Περιοδικά ή μόλις ολοκληρώσετε τις εργασίες σχεδιασμού εκτελείτε «Αποθήκευση» ή «Αποθήκευση Ως» της σχεδιασθείσας οθόνης με κάποιο διακριτικό όνομα(Εικόνες B2 & B3). Μόλις προβληθεί το παράθυρο σχεδιασμού οθονών θα διαπιστώσετε ότι είναι απολύτως όμοιο με την οθόνη εργασίας επί της οποίας θέλετε να κάνετε τροποποιήσεις. Η μόνη διαφορά με την "καθημερινή" μορφή της οθόνης εργασίας είναι ότι στο άνω μέρος της υπό σχεδιασμό οθόνης υπάρχει μία γραμμή εργαλείων, η οποία περιλαμβάνει εργαλεία για το σχεδιασμό της οθόνης(Εικόνα B2).

Εικόνα B1

Εικόνα B2

Εικόνα B3

Page 14: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 1 – Προβολές – Οθόνες Εργασίας

14

B.1 Εντολές Σχεδιασμού Οι βασικές εντολές σχεδίασης της οθόνης εμφανίζονται με δεξί κλικ (Εικόνα Β4) στις περιοχές, σελίδες ή grids και αναλύονται στον πίνακα «Εντολές Σχεδιασμού Οθονών».

Στις επόμενες ενότητες υπάρχει ανάλυση για τη σχεδίαση οθονών με χρήση πιο προχωρημένων εργαλείων (Pop Up Form , s Buttons και Editors).

Εικόνα B4

ΕΝΤΟΛΕΣ ΣΧΕΔΙΑΣΜΟΥ ΟΘΟΝΩΝ

Εκτέλεση Εντολής Εφαρμογή σε

Επιλεγμένη Σελίδα Επιλεγμένη Περιοχή Επιλεγμένο Grid

Νέα σελίδα Δημιουργεί νέα σελίδα αριστερά της επιλεγμένης σελίδας

Δημιουργεί νέα σελίδα κάτω από την επιλεγμένη ζώνη

Δημιουργεί νέα σελίδα κάτω από το επιλεγμένο grid.

Νέα περιοχή (ζώνη) Δημιουργεί νέα περιοχή κάτω από την επιλεγμένη σελίδα.

Δημιουργεί νέα περιοχή κάτω από την επιλεγμένη περιοχή

Δεν εφαρμόζεται

Νέο grid (πίνακας) Δημιουργεί νέο grid κάτω από την επιλεγμένη σελίδα

Δημιουργεί νέο grid κάτω από την επιλεγμένη περιοχή

Δεν εφαρμόζεται

Νέο κείμενο Δημιουργεί νέο πεδίο κειμένου κάτω από την επιλεγμένη σελίδα

Δημιουργεί νέο πεδίο κειμένου κάτω από την επιλεγμένη περιοχή

Δημιουργεί νέο πεδίο κειμένου κάτω από το επιλεγμένο grid

Διαγραφή Διαγράφει την επιλεγμένη σελίδα

Διαγράφει την επιλεγμένη περιοχή

Διαγράφει το επιλεγμένο grid

Αλλαγή τίτλου Ανοίγει το παράθυρο μετονομασίας του τίτλο της επιλεγμένης σελίδας

Δεν εφαρμόζεται Δεν εφαρμόζεται

Ιδιότητες Δεν εφαρμόζεται Ανοίγει το παράθυρο Ιδιότητες Περιοχής

Ανοίγει το παράθυρο Ιδιότητες Grid

Page 15: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 1 – Προβολές – Οθόνες Εργασίας

15

Β.1.1 Παραμετροποίηση

Η χρήση του button Παραμετροποίηση ανοίγει το παράθυρο της Εικόνας Β5. Το Tab «Οριζόμενοι πίνακες» έχει αναλυτικά τους πίνακες και τα πεδία της ενότητας, τα οποία μπορείτε να τροποποιήσετε. Οι ιδιότητες κάθε πεδίου μπορούν να τροποποιηθούν. Στο “Caption” μπορείτε να ορίσετε το λεκτικό που θα εμφανίζεται μέσα στην προβολή, στο “Forced Value” αν το πεδίο θα έχει υποχρεωτική τιμή και στο “Default Value” την προεπιλεγμένη τιμή. Το “Display Size” διαμορφώνει το πλάτος πεδίων που έχουν εισαχθει μέσα σε grids.

Εικόνα B5

Β.1.2 Form Στο παράθυρο που εμφανίζεται με κλικ στο button “Form” υπάρχουν όλα τα στοιχεία που εμφανίζονται σε μία οθόνη καθώς και οι φόρμες που εμφανίζονται με κλικ σε συγκεκριμένα στοιχεία(πχ.buttons) της οθόνης. Η σπουδαιότερη δυνατότητα του συγκεκριμένου εργαλείου είναι η μετακίνηση σελίδων και περιοχών με drag and drop. Το ίδιο εργαλείο μπορεί να χρησιμοποιηθεί για τη δημιουργία περιοχών σε οριζόντια διάταξη, δηλαδή δύο, τριών ή τεσσάρων περιοχών που θα περιέχονται ως στήλες μέσα σε μία περιοχή. Με «Δεξί κλικ – Νέα» μέσα στο παράθυρο του “Form” θα ανοίξουν οι επιλογές της Εικόνας Β4, μέσα από τις οποίες μπορείτε να δημιουργήσετε μία νέα περιοχή με συγκεκριμένο αριθμό στηλών. Επιλέγοντας την περιοχή που δημιουργήσατε μπορείτε να εισάγετε τόσες περιοχές όσες είναι και οι στήλες της αρχικής. Με αυτόν τον τρόπο θα εμφανιστούν οι περιοχές σε οριζόντια διάταξη μέσα στην προβολή σας.

Page 16: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 1 – Προβολές – Οθόνες Εργασίας

16

B.2 Pop Up Forms Οι Pop Up Forms είναι φόρμες που μπορούν να εμφανιστούν μέσα σε προβολές με αλληλεπίδραση του χρήστη (πχ. με διπλό κλικ σε Grids ή με κλικ σε Button της προβολής). Παράδειγμα pop up form είναι η φόρμα που εμφανίζεται όταν κάνουμε διπλό κλικ στις γραμμές των ειδών μέσα σε παραστατικά.

B.2.1 Σχεδίαση Στο σχεδιασμό προβολής ενός object επιλέγετε το κουμπί Form και στη συνέχεια με δεξί κλικ εισάγετε μία νέα φόρμα. Στις ιδιότητες της φόρμας εισάγετε το όνομα, το οποίο θα χρησιμοποιηθεί στη συνέχεια για την κλήση της φόρμας. Τα Panels, τα πεδία, τα Tabs και τα Grids σχεδιάζονται με δεξί κλικ, όπως σε όλες τις προβολές, απλά δεν μπορεί να γίνει άμεση προεπισκόπησή τους.

B.2.2 Εμφάνιση Μέσα από τις γραμμές ενός Grid καλείτε την pop up form με διπλό κλικ(όπως ακριβώς λειτουργεί στις γραμμές των παραστατικών), εισάγοντας απλά το όνομα της pop up φόρμας που έχετε δημιουργήσει, στο πεδίο “Pop Up Form” στις Ιδιότητες του Grid. Στο παράδειγμα της εικόνας Β6 γίνεται κλήση της φόρμας MYPOP μέσα από το grid των γραμμών πωλήσεων.

Εικόνα B6

Page 17: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 1 – Προβολές – Οθόνες Εργασίας

17

B.2.3 Παραδείγματα

Παράδειγμα 1 Εισαγωγή / εμφάνιση custom φόρμας pop up με κλικ σε γραμμές παραστατικών πωλήσεων. Στο παρακάτω παράδειγμα θα δημιουργήσουμε μία φόρμα, η οποία θα εμφανίζεται με διπλό κλικ στις γραμμές των παραστατικών πωλήσεων.

• Σχεδίαση Φόρμας με κλικ στο κουμπί “Form” του σχεδιασμού προβολής των παραστατικών πωλήσεων • Δεξί κλικ στο παράθυρο που εμφανίζεται και επιλογή δημιουργίας νέας φόρμας. • Εισαγωγή του ονόματος (πχ. MyPopUp) στις Ιδιότητες της Φόρμας. (Εικόνα B7) • Δημιουργία των περιοχών (Panels) με δεξί κλικ και εισαγωγή των πεδίων που θα εμφανίζονται σε κάθε

Panel.(Εικόνα B8) • Με τον ίδιο τρόπο γίνεται και εισαγωγή grids ή memo(Πεδία Κειμένου) μέσα στη Φόρμα • Τέλος για την κλήση της φόρμα μέσα από το Grid των γραμμών των ειδών, γίνεται εισαγωγή του ονόματός

της στις ιδιότητες του Grid στο πεδίο PopUp form (Εικόνα B9). Μετά την αποθήκευση της προβολής, η φόρμα θα εμφανίζεται κάθε φορά που θα κάνουμε διπλό κλικ στις γραμμές των ειδών του παραστατικού(Εικόνα B10).

Εικόνα B7 Εικόνα B8

Page 18: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 1 – Προβολές – Οθόνες Εργασίας

18

Εικόνα B9

Εικόνα B10

Page 19: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 1 – Προβολές – Οθόνες Εργασίας

19

Παράδειγμα 2 Εισαγωγή custom φόρμας pop up η οποία θα εμφανίζεται με κλικ σε button προβολής. Στο παρακάτω παράδειγμα γίνεται δημιουργία φόρμας, η οποία θα εμφανίζεται όταν γίνει κλικ σε Button, που βρίσκεται στο Header των παραστατικών πωλήσεων.

• Σχεδίαση Φόρμας όπως στο προηγούμενο παράδειγμα • Δημιουργία Button, χρησιμοποιώντας ένα αριθμητικό πεδίο (πχ. Num01) των παραστατικών πωλήσεων,

εισάγοντας στον Editor την εντολή xcmd:20001. (βλ. Κεφάλαιο 1 - Ενότητα Buttons) • Στο Javascript της προβολής εισάγετε τον κώδικα όπως φαίνεται στην Εικόνα B5.

H μέθοδος OPENSUBFORM ανοίγει τη φόρμα με όνομα “MYPOPUP”. Σημείωση

: Μπορείτε να ανοίξετε απευθείας τη sub form μέσα από την παραμετροποίηση του πεδίου NUM01, εισάγοντας στον Editor του, την εντολή XCMD:MYPOPUP (Εικόνα B6).

Εικόνα B5

Εικόνα B6

Page 20: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 1 – Προβολές – Οθόνες Εργασίας

20

B.3 Buttons – Hyperlink Commands Στην εφαρμογή υπάρχει η δυνατότητα δημιουργίας commands που μπορούν να εμφανιστούν μέσα σε οθόνες (προβολές) ως Buttons ή Hyperlinks(Εικόνες Β7 & Β8) και ελέγχονται από κώδικα Javascript ή VBscript. Τα commands εισάγονται με χρήση της εντολής XCMD:cmd (όπου cmd είναι ένας αυθαίρετος αριθμός με τον οποίο δηλώνουμε το συγκεκριμένο command). Οι αριθμοί αυτοί πρέπει να είναι μεγαλύτεροι από 15000, για να μην γίνει conflict των custom commands με τα εσωτερικά commands της εφαρμογής. Ανάλυση όλων των commands της εφαρμογής υπάρχει στο Παράρτημα «Βοηθητικοί πίνακες» Ενότητα H, Ενότητα I. Η συνάρτηση που ελέγχει το event ON_Click των commands είναι η EXECCOMMAND(cmd).

Εικόνα B7 – Buttons

Εικόνα B8 – Hyperlinks

B.3.1 Λειτουργία Τα commands μπορούν να χρησιμοποιηθούν για να εκτελέσουν μία από τις παρακάτω εργασίες:

• Εμφάνιση pop up φόρμας, που έχει δημιουργηθεί στη συγκεκριμένη προβολή (βλ. παράδειγμα Β.2.4) • Εμφάνιση object της εφαρμογής, πχ. XCMD:SALDOC (εμφάνιση πωλήσεων) (βλ. παράδειγμα 1) • Εκτέλεση σχετικής εργασίας προβολής ή εργασίας ευρετηρίου των objects.

Οι εντολές αναλύονται στο Παράρτημα «Βοηθητικοί πίνακες» Ενότητα H, Ενότητα I. • Εκτέλεση custom κώδικα script (Javascript ή VBscript) της συγκεκριμένης προβολής (βλ. παράδειγμα 2) • Εκτέλεση custom κώδικα SBSL (Softone Script), που έχει δημιουργηθεί στα S1 Scripts

B.3.2 Σχεδίαση Η εισαγωγή command σε προβολή γίνεται με έναν από τους παρακάτω τρόπους:

• Πραγματικό πεδίο της βάσης, τύπου integer o Εισάγετε το πεδίο στην προβολή o Στην παραμετροποίηση της προβολής, εντοπίζετε το πεδίο και στον editor του εισάγετε την εντολή

XCMD:cmd (cmd αυθαίρετος αριθμός με τον οποίο δηλώνουμε το συγκεκριμένο command) o Εμφάνιση του command με μορφή button γίνεται με εισαγωγή στο πεδίο Decimals της τιμής 1

(Εικόνα B7). o Εμφάνιση του command με μορφή hyperlink γίνεται με κενό το πεδίο Decimals (Εικόνα B8).

• Πεδίο integer από virtual table της προβολής (προτείνεται) o Τα βήματα είναι ίδια με παραπάνω, απλά στην παραμετροποίηση της προβολής πρέπει να γίνει

πρώτα εισαγωγή του virtual Table • Εικονικό πεδίο δημιουργημένο στην προβολή με χρήση της συνάρτησης RUNB (προτείνεται)

o Σε περιοχή της προβολής κάνετε δεξί κλικ και επιλέγετε «ΙδιότητεςΠροσθήκη Πεδίου». Στο πλαίσιο που εμφανίζεται εισάγετε:

RUN_cmd=CaptionΠεδίου - για εμφάνιση Hyperlink RUNB_cmd=CaptionΠεδίου - για εμφάνιση Button

Στην Εικόνα B9 βλέπετε παράδειγμα χρήσης των παραπάνω εντολών

Page 21: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 1 – Προβολές – Οθόνες Εργασίας

21

Εικόνα B9 – RUN & RUNB

B.3.3 Παραδείγματα

Παράδειγμα 1 Εισαγωγή buttons σε προβολή πωλήσεων. Το 1ο button θα αποθηκεύει το παραστατικό και το 2ο θα εμφανίζει τα οικονομικά στοιχεία του πελάτη του παραστατικού.

• Δημιουργείτε τα πεδία στο πίνακα FINDOC ή δημιουργείτε νέο virtual table με πεδία αριθμητικά(μέσα από το database designer).

• Ανοίγετε την προβολή των πωλήσεων σε κατάσταση σχεδίασης και στη συνέχεια επιλέγετε Παραμετροποίηση (Εικόνα Β9)

• Εισάγετε το virtual table (αν χρειάζεται) και στον Editor των πεδίων εισάγετε αντίστοιχα τις εντολές XCMD:15102 , XCMD:15103 (αυθαίρετοι αριθμοί) (Εικόνα Β11)

• Για την εμφάνιση των commands με μορφή button εισάγετε στο πεδίο Decimals την τιμή 1 (Εικόνα B7). • Για την εμφάνιση των commands με μορφή hyperlink αφήνετε κενό το πεδίο Decimals (Εικόνα B8). • Στο tab Script της Παραμετροποίησης εισάγετε τον κώδικα που θα εκτελείται όταν γίνει κλικ στα

συγκεκριμένα commands. • H συνάρτηση function EXECCOMMAND(cmd) ελέγχει τα commands στα οποία έχει γίνει κλικ(βάσει του

cmd) και εκτελεί τον αντίστοιχο κώδικα. (Εικόνα B12) o Το command που έχει δηλωθεί με αριθμό 15102 εκτελεί την εντολή X.EXEC('button:SAVE');

η οποία αποθηκεύει τη συγκεκριμένη εγγραφή του object (αποθηκεύει το παραστατικό πωλήσεων). o Το command που έχει δηλωθεί με αριθμό 15103 εκτελεί την εντολή

X.EXEC('XCMD:CUSTOMER[AUTOLOCATE='+SALDOC.TRDR+',FORM=Οικονομικά στοιχεία πελατών]'); η οποία ανοίγει το object των πελατών για τον πελάτη του παραστατικού πωλήσεων (SALDOC.TRDR) στην προβολή «Οικονομικά στοιχεία πελατών».

Εικόνα B10

Page 22: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 1 – Προβολές – Οθόνες Εργασίας

22

Εικόνα B11

Εικόνα B12

Εικόνα B13 – Εμφάνιση Buttons σε προβολή

Page 23: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 1 – Προβολές – Οθόνες Εργασίας

23

Παράδειγμα 2 Δημιουργία button σε προβολή ειδών, το οποίο θα εμφανίζει προειδοποιητικό μήνυμα μετά το κλικ.

• Δημιουργείτε ένα πεδίο στον πίνακα MTRL με τύπο «Μικρός Ακέραιος» ή χρησιμοποιείτε ένα πεδίο από

virtual table. • Από την παραμετροποίηση της προβολής εισάγετε στον Editor του πεδίου, την εντολή

XCMD:20001(αυθαίρετος αριθμός) και στο πεδίο Decimals τον αριθμό 1(Εικόνα B14). • Εισάγετε το πεδίο σε μία περιοχή της προβολής. • Μέσα στο Script της προβολής εισάγετε τον παρακάτω κώδικα Javascript, ο οποίος εμφανίζει το

προειδοποιητικό μήνυμα όταν γίνει click στο συγκεκριμένο Button μέσα στην προβολή. function EXECCOMMAND(cmd) {

if (cmd==20001) {

X.WARNING(‘Button Clicked’); }

}

Εικόνα B14

Page 24: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 1 – Προβολές – Οθόνες Εργασίας

24

B.4 Editors Οι Editors είναι εντολές που εισάγονται στην παραμετροποίηση των προβολών των Objects, οι οποίες αλλάζουν τη συμπεριφορά και εμφάνιση των πεδίων. Ο πιο συνήθης Editor είναι ο $Υ ο οποίος εμφανίζει ένα πεδίο με τύπο «Μικρός Ακέραιος» ως Boolean (Ναι / Όχι) μέσα στην προβολή.

B.4.1 Editor Commands Στον παρακάτω πίνακα εμφανίζονται όλοι οι συνδυασμοί Editors και Τύπων Δεδομένων που μπορείτε να χρησιμοποιήσετε μέσα στην εφαρμογή, καθώς και οι αντίστοιχες λειτουργίες τους.

Editor Commands Εντολή Λειτουργία - Χρήση Τύπος Δεδομένων

$DT Ημερομηνία & Ώρα σε διαφορετικά πεδία Ημερομηνία

$TIME Μόνο Ώρα (Επιστρέφει την τρέχουσα Ημ/νία) Ημερομηνία

$PASSWORD Password (Εμφάνιση με αστεράκια) Αλφαριθμητικό

$Y Boolean Πεδίο (Εμφάνιση με checkbox) Μικρός Ακέραιος

$YN Boolean Πεδίο σε Grids (Εμφάνιση με combobox) Μικρός Ακέραιος

$WEBPAGE Web Page Πεδία – Link to Internet Browser Αλφαριθμητικό

$EMAIL Email Πεδία – Link to Email Program Αλφαριθμητικό

$PRINTERS Παράθυρο Εκτυπωτών των Windows Αλφαριθμητικό

$DATERANGE Ημερομηνία από έως Ημερομηνία

$TIMERANGE Ώρα από έως Ημερομηνία

$COLOR Παράθυρο Επιλογής Χρωμάτων Softone Αλφαριθμητικό

$ONECOLOR Παράθυρο Επιλογής Χρώματος Windows =256^2Red * 256^1Green * 256^0Blue

Αλφαριθμητικό

$FILENAME Παράθυρο Επιλογής Αρχείου – Επιστρέφει τη διαδρομή του Αλφαριθμητικό

$MASKEDIT Παράθυρο Δημιουργίας Μάσκας Κωδικού Αλφαριθμητικό

$RECURRENCE Παράθυρο Χρονοπρογραμματισμού(Scheduler) Softone Αλφαριθμητικό

$MEMOEDIT Σε γραμμές Grid με memo πεδία διορθώνει την αναδίπλωση Αλφαριθμητικό

$LIST:OBJECT Επιλογή από έτοιμες λίστες(προεπιλογές), που έχουν δημιουργηθεί από ευρετήρια (πίνακες SOLIST και SOLISTLNS)

Αλφαριθμητικό

$XRUN(D[Par1,Par2,Par3]) Par1=<visible>, Par2=<exefilename>, Par3=<file params>

Εκτέλεση εξωτερικού προγράμματος Παράδειγμα:

Αλφαριθμητικό

Σε αλφαριθμητικό πεδίο (πχ Κείμενο1 των extra πεδίων των πελατών) εισάγουμε την παρακάτω εντολή : $XRUN(D[0,C:\Xplorer.exe,"/"+CUSEXTRA.VARCHAR01]) Αν μέσα σε μία εγγραφή πληκτρολογήσουμε τη λέξη server, τότε θα ανοίξει η εφαρμογή softone ως server.

Page 25: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 1 – Προβολές – Οθόνες Εργασίας

25

B.4.2 Editor Attributes Στους Editors, οι οποίοι χρησιμοποιούνται για ανεύρεση από άλλους Πίνακες, Views ή Strings(πχ ITEM), έχουμε τη δυνατότητα εισαγωγής εντολών, οι οποίες έχουν διάφορες λειτουργίες, όπως πχ. φιλτράρισμα εγγραφών, επιστροφή διαφορετικού πεδίου κτλ. Στον παρακάτω πίνακα εμφανίζονται όλες οι εντολές που μπορείτε να χρησιμοποιήσετε καθώς και παραδείγματα σύνταξής τους.

Editor Attributes Εντολή Λειτουργία - Χρήση Παράδειγμα Σύνταξης

W Extra Where στον πίνακα ανεύρεσης

SALDOC(W[COMPANY=:X.SYS.COMPANY]) Ανεύρεση από τον πίνακα των παραστατικών πωλήσεων με φίλτρο την Login Εταιρεία

F Filter σε πίνακα στη μνήμη MTRMARK(F[CCCMYFIELD;SODTYPE=1;51]) Ανεύρεση από τον πίνακα των μοντέλων με φίλτρο το πεδίο CCCMYFIELD=1 και το SODTYPE=51

M,R Ορισμός πεδίου που θα επιστραφεί

CUSTOMER(W[CCCS1=1],M,R[CODE]) Ανεύρεση από τους πελάτες με συγκεκριμένο φίλτρο από CCC πεδίο και επιστροφή του κωδικού του πελάτη. (Το πεδίο εφαρμογής του συγκεκριμένου Editor πρέπει να είναι αλφαριθμητικό)

U Ενημέρωση πεδίων μετά από την επιλογή στον Selector

SERIES(U[FPRMS;BUSUNITS;=FPRMS;BUSUNITS@] Ανεύρεση από τον πίνακα των σειρών και ενημέρωση των πεδίων FPRMS και BUSUNITS με τις τιμές των αντίστοιχων πεδίων FPRMS και BUSUNITS της σειράς. Το σύμβολο @ στο τέλος υποδηλώνει ότι τα πεδία αριστερά του, θα ενημερώνονται πάντοτε είτε έχουν ήδη τιμή είτε όχι. Αν δεν εισάγουμε το σύμβολο @, τότε τα πεδία θα ενημερωθούν μόνο αν δεν έχουν ήδη τιμή.

H Link σε Object (Hyperlink στο caption του πεδίου)

CCCMYTABLE(H[CCCMYOBJECT]) Ανεύρεση από τον πίνακα CCCMYTABLE και Link στο Object CCCMYOBJECT.

C Ανεύρεση από πίνακα χωρίς το Where της Login Company SALDOC(W[CCCField in (1,2,3)],C)

W[] Ανεύρεση από String List με συγκεκριμένο φίλτρο

$CCCMYSTR (W[1,2,3]) Ανεύρεση από το string CCCMYSTR με φίλτρο τις τιμές 1,2,3

J

Χρήση σε Σχεδιαζόμενες Εκτυπώσεις – Σύνδεση με συγκεκριμένο πεδίο

SALDOC(J[A.FINDOC])

Page 26: Customizing Softone - The Black Book Ver.2012a

26

ΚΕΦΑΛΑΙΟ 2 Ευρετήρια

A. Βασικές Λειτουργίες

B. Βασικά Εργαλεία Σχεδίασης B.1 Στήλες Ευρετηρίου B.2 Ρυθμίσεις Πεδίων B.3 Ρυθμίσεις Εμφάνισης B.4 Καθορισμός Φίλτρων B.5 Ομαδοποίηση Εγγραφών B.6 Ταξινόμηση Εγγραφών

C. Προχωρημένα Εργαλεία Σχεδίασης C.1 Ενότητες – Bands σε Ευρετήρια C.2 Ενότητες με οριζόμενους πίνακες

Page 27: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 2 - Ευρετήρια

27

A. Βασικές Λειτουργίες Τα Ευρετήρια(Browsers) είναι πολύ ευέλικτα εργαλεία εμφάνισης εγγραφών από έναν ή περισσότερους πίνακες. Διαμορφώνονται εύκολα είτε κατά την εκτέλεσή τους (Runtime) είτε μέσω σχεδίασης, η οποία δίνει περισσότερες δυνατότητες ρύθμισης. Η σχεδίαση ενός ευρετηρίου γίνεται με χρήση του button Design που εμφανίζεται μετά την επιλογή στο βελάκι δίπλα στο πλήκτρο «Ευρετήριο»(Εικόνα Α1). Ο σχεδιασμός αφορά πάντοτε στο επιλεγμένο ευρετήριο και η απλή αποθήκευσή του θα αντικαταστήσει το ήδη υπάρχον ευρετήριο με τις τελευταίες αλλαγές.

Εικόνα Α1

Τα buttons «Αποθήκευση», «Αποθήκευση ως» και «Διαγραφή» εκτελούν τις ομώνυμες λειτουργίες για το υπό σχεδιασμό ευρετήριο. Η εντολή «Εφαρμογή» αναπροσαρμόζει "επί τόπου" το ευρετήριο βάσει των σχεδιασμών ως έχουν εκείνη τη στιγμή. Συγκεκριμένα ο σχεδιασμός εφαρμόζεται μεν αλλά δεν αποθηκεύεται. Δηλαδή, ο χειριστής μπορεί διαδοχικά να εκτελέσει «Εφαρμογή», να "βγει" από την εργασία, (χωρίς να αποθηκεύσει τις αλλαγές) και να κάνει άμεση χρήση των σχεδιασμών του στο Ευρετήριο. Βεβαίως ο σχεδιασμός αυτός δεν θα είναι διαθέσιμος στο μέλλον εκτός εάν δεν εκτελεστεί «Αποθήκευση» είτε με δεξί κλικ στις επικεφαλίδες του ευρετηρίου είτε με επανεκτέλεση της εργασίας Σχεδιασμός Ευρετηρίου. Στην Εικόνα Α2 εμφανίζεται η οθόνη σχεδιασμού ευρετηρίου του object των παραστατικών λιανικής. Στο αριστερό μέρος της οθόνης υπάρχουν τα διαθέσιμα πεδία του πίνακα των παραστατικών λιανικής, ενώ στο δεξί μέρος(Tab Στήλες) τα πεδία που θα εμφανίζονται όταν εκτελέσουμε το συγκεκριμένο ευρετήριο.

Εικόνα Α2

Page 28: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 2 - Ευρετήρια

28

B. Βασικά Εργαλεία Σχεδίασης Β.1 Στήλες Ευρετηρίου Στο tab Στήλες(Εικόνα Β1) επιλέγετε με διπλό κλικ ή με drag-and-drop τις στήλες που θα εμφανίζονται όταν εκτελείτε ένα ευρετήριο. Με τα πλήκτρα δεξιά από το πλαίσιο επιλεγμένων στηλών μπορείτε να μεταβάλλετε τη σειρά εμφάνισης των στηλών ή να αφαιρέσετε κάποια. Μπορείτε επίσης να μεταφέρετε μία στήλη στο δεξί πλαίσιο και να μην την επιλέξετε, έτσι ώστε να τρέχει κανονικά στον SQL, αλλά να μην εμφανίζεται ως στήλη στα αποτελέσματα του ευρετηρίου. Παράδειγμα χρήσης στήλης που δεν εμφανίζεται μπορείτε να βρείτε στην ενότητα δημιουργίας Object με χρήση View (βλ. Παράδειγμα Β5.2). Μετά την εκτέλεση ενός ευρετηρίου τα αποτελέσματα θα εμφανιστούν όπως στην Εικόνα Β2.

Εικόνα Β1

Εικόνα Β2

Page 29: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 2 - Ευρετήρια

29

B.2 Ρυθμίσεις Πεδίων Αφού ολοκληρώσετε την επιλογή των στηλών, προχωρήστε στην ρύθμιση των παραμέτρων για κάθε πεδίο στηλών που βρίσκονται στο κάτω μέρος του πλαισίου επιλογής όπως φαίνεται στην εικόνα Β3.

Εικόνα Β3

Συγκεκριμένα:

• Πληκτρολογήστε τον τίτλο της στήλης όπως θέλετε να εμφανίζεται • Εισάγετε το πλάτος της στήλης σε χαρακτήρες • Επιλέξτε τη στοίχιση των τιμών του πεδίου. Η ρύθμιση Αυτόματα στοιχίζει αυτόματα τις τιμές της στήλης

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

η περιγραφή ή και τα δύο. • Επιλέγοντας την παράμετρο Editable, μπορείτε να μεταβάλλετε την τιμή της στήλης απευθείας στο

ευρετήριο σε κατάσταση προβολής αποτελεσμάτων. • Μόνο για αριθμητικά πεδία, μπορείτε επιπλέον να καθορίσετε :

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

ημερομηνίας, τότε η ζώνη ομαδοποίησης μπορεί να είναι σε τρίμηνα). Στην Εικόνα Β4 βλέπετε ένα ευρετήριο πωλήσεων με ομαδοποίηση στην επωνυμία των πελατών και οριζόντια ανάλυση της συνολικής αξίας σε μήνες.

Εικόνα Β4

Page 30: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 2 - Ευρετήρια

30

B.3 Ρυθμίσεις Εμφάνισης Οι ρυθμίσεις που εμφανίζονται στην Εικόνα Β5 αφορούν στο σύνολο των στηλών του ευρετηρίου και συγκεκριμένα:

Εικόνα Β5

• Αύξουσα αρίθμηση : Η επιλογή της εμφανίζει αυτόματη αύξουσα αρίθμηση για τις εγγραφές που

προβάλλονται. Επιπλέον, μπορεί να ρυθμιστεί το πλάτος της σε χαρακτήρες (προεπιλεγμένη τιμή:2) • Αυτόματη προεπιλογή: Η επιλογή της οδηγεί σε αυτόματη προεπιλογή όλων των εγγραφών που

προβάλλονται για μαζική επεξεργασία, διαγραφή κλπ • Auto fit columns size: Προσαρμόζει αυτόματα το μέγεθος των στηλών του ευρετηρίου με βάση τα

περιεχόμενα (τις τιμές του πεδίου – στήλη). • Quick View: Τα ευρετήρια με επιλεγμένη την παράμετρο, θα είναι διαθέσιμα στην αντίστοιχη επιλογή με

δεξί κλικ σε κάθε εγγραφή. Για παράδειγμα, έστω ότι σχεδιάζετε ένα Quick View ευρετήριο ειδών που περιλαμβάνει τον κωδικό, την περιγραφή και την τιμή χονδρικής του είδους. Με δεξί κλικ σε κάθε γραμμή ή εγγραφή είδους από οποιαδήποτε ενότητα, θα μπορείτε να το επιλέξετε ώστε να προβάλλετε άμεσα τα παραπάνω στοιχεία για το συγκεκριμένο είδος σε παράθυρο.

• Force Pivot: Κατά την εκτέλεση του ευρετηρίου εμφανίζεται αυτόματα το Pivot Analysis. • Στατικές στήλες: Καθορίζει τον αριθμό των στηλών που θα είναι ακίνητες στο ευρετήριο. Η μέτρηση

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

• Εμφάνιση μηδενικών: Καθορίζει εάν οι αριθμητικές στήλες με μηδενική αξία θα εμφανίζονται με μηδέν ή κενές.

• Αρχείο συνόλων: Εάν θέλετε να δημιουργηθεί αρχείο με τα σύνολα των αριθμητικών πεδίων που εμφανίζονται στο ευρετήριο, πληκτρολογείτε το όνομα του εδώ. Η διαδρομή που αποθηκεύεται το αρχείο είναι: <Drive letter>:\Documents and Settings\ <Windows user >\Application Data\SoftOne\Temp

• Fast entry: Επιτρέπει την καταχώρηση εγγραφών σε κύρια αρχεία απευθείας από το ευρετήριο. Τα ευρετήρια που σχεδιάζονται για γρήγορη καταχώρηση εγγραφών θα πρέπει να περιλαμβάνουν ως στήλες όλα τα υποχρεωτικά πεδία.

Page 31: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 2 - Ευρετήρια

31

B.4 Καθορισμός Φίλτρων Με τον ίδιο ακριβώς τρόπο, όπως και με τις στήλες, επιλέγετε τα πεδία που θέλετε να χρησιμοποιούνται ως φίλτρα κατά την αναζήτηση εγγραφών στο συγκεκριμένο ευρετήριο(Εικόνα Β6). Επιπλέον ανά πεδίο – φίλτρο μπορείτε να καθορίσετε:

• Τον τίτλο του πεδίου

• Την προεπιλεγμένη τιμή που θα είναι προτεινόμενη

• Εάν θα είναι κλειδωμένο ή όχι , δηλαδή εάν η τιμή του θα μπορεί μεταβληθεί ή όχι

• Εάν η συμπλήρωσή του θα είναι υποχρεωτική ή όχι

B.5 Ομαδοποίηση Εγγραφών Μέσα στο Tab “Ομαδοποίηση» εισάγετε τα πεδία βάσει των οποίων θα γίνει η ομαδοποίηση των εγγραφών κατά την εκτέλεση του ευρετηρίου(Εικόνα Β7). Επιπλέον, μπορείτε να ρυθμίσετε κατάλληλα τις παρακάτω παραμέτρους:

• Τα διαστήματα βάσει των οποίων θα γίνει η ομαδοποίηση. Ανάλογα με το είδος του πεδίου θα υπάρχουν οι αντίστοιχες επιλογές.

• Επιλέξτε Αυτόματη εκτέλεση, εάν θέλετε τα αποτελέσματα να εμφανίζονται ομαδοποιημένα αμέσως μετά την εκτέλεση του ευρετηρίου.

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

• Επιλέξτε Αυτόματο φιλτράρισμα, εάν θέλετε να εξαιρούνται αυτόματα οι εγγραφές που δεν έχουν τιμή στο επιλεγμένο πεδίο ομαδοποίησης.

• Επιλέξτε Σελιδοποίηση, όταν θέλετε να κάνετε εξαγωγή του ευρετηρίου σε Excel, για να εμφανίσετε κάθε ομάδα των αποτελεσμάτων σε διαφορετικό φύλλο του Excel.

Σημείωση

: Κατά την εκτέλεση του ευρετηρίου με ομαδοποίηση, οι στήλες της ομαδοποίησης λειτουργούν και ως στήλες ταξινόμησης των εγγραφών.

Εικόνα Β6 Εικόνα Β7

B.6 Ταξινόμηση Εγγραφών Στο tab «Ταξινόμηση» καθορίζονται τα πεδία βάσει των οποίων θα γίνεται η ταξινόμηση των αποτελεσμάτων καθώς επίσης και η μέθοδος ταξινόμησης, αύξουσα ή φθίνουσα.

Page 32: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 2 - Ευρετήρια

32

C. Προχωρημένα Εργαλεία Σχεδίασης C.1 Ενότητες – Bands σε Ευρετήρια Τα ευρετήρια χωρίζονται σε ενότητες(Bands). Στο tab «Ορισμός Εκτύπωσης» μπορείτε να ορίσετε τους πίνακες που θα εμφανίζονται μέσα σε ένα ευρετήριο. Στην Εικόνα C1 βλέπετε το σχεδιασμό του ευρετηρίου των παραστατικών πωλήσεων με detail πίνακα τις Γραμμές ειδών. Η εισαγωγή 2ου band (detail πίνακα) σε μία ενότητα γίνεται με χρήση του button «Προσθήκη ενότητας»(Εικόνα C2). Μετά την προσθήκη της νέας ενότητας πρέπει να επιλέξετε τον πίνακα που θα εμφανίζεται, κάνοντας κλικ στο button δεξιά από το πεδίο «Πίνακας». Στην Εικόνα C3 βλέπετε το παράθυρο των διαθέσιμων πινάκων (βάσει του header). Με διπλό κλικ εισάγετε τον πίνακα της επιλογής σας. Για να εμφανίσετε στις στήλες πεδία από τη συγκεκριμένη ενότητα πρέπει να μεταβείτε στο tab «Ενότητες» και αφού επιλέξετε την ενότητα από την drop down list, να εισάγετε τα πεδία στις στήλες με το γνωστό τρόπο. (Εικόνα C4) Στην Εικόνα C5 μπορείτε να δείτε το αποτέλεσμα μετά την εκτέλεση του συγκεκριμένου ευρετηρίου.

Εικόνα C1 Εικόνα C2

Εικόνα C3

Page 33: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 2 - Ευρετήρια

33

Εικόνα C4

Εικόνα C5

Page 34: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 2 - Ευρετήρια

34

C.2 Ενότητες με Οριζόμενους Πίνακες Στα ευρετήρια υπάρχει η δυνατότητα σχεδιασμού 2ου band (detail) με χρήση οριζόμενου πίνακα. Μπορείτε δηλαδή να δημιουργήσετε ένα query από το οποίο θα αντλούνται δεδομένα και να το συνδέσετε με τον αρχικό πίνακα. Για την δημιουργία του πίνακα ακολουθείτε τα παρακάτω βήματα:

• Κλικ στο button * «Οριζόμενοι SQL πίνακες» (Εικόνα C5). • Στο παράθυρο που εμφανίζεται δημιουργείτε ένα νέο πίνακα, δηλώνετε το όνομα και τον τίτλο του και

εισάγετε το query στο πλαίσιο SQL (Εικόνα C6). • Η σύνδεση με τον αρχικό πίνακα της εφαρμογής γίνεται με χρήση της εντολής :Object.ID, όπου Object είναι

η οντότητα του αρχικού πίνακα (πχ.SALDOC) και ID το κλειδί της εγγραφής (πχ.FINDOC). • Δημιουργείτε τα πεδία που θα εμφανίζονται στο ευρετήριο με κλικ στο button «Δημιουργία πεδίων από

SQL», που βρίσκεται στο tab «Πεδία» (Εικόνα C7). • Στα πεδία που χρειάζεται μπορείτε να εισάγετε τους αντίστοιχους editors με κλικ στο button «Λεπτομέρειες» • Η εισαγωγή του πίνακα στις ενότητες γίνεται όπως στην προηγούμενη ενότητα (C.1).

Εικόνα C5

Εικόνα C6

Εικόνα C7

Page 35: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 2 - Ευρετήρια

35

• Δημιουργείτε το νέο πίνακα και εισάγετε το sql query όπως στην Εικόνα C8.

Παράδειγμα Δημιουργία ευρετηρίου στους πελάτες που θα εμφανίζει σε 2ο band αναλυτικά τα οικονομικά στοιχεία των πελατών ανά έτος και μήνα.

• Στη συνέχεια δημιουργείτε τα πεδία μέσα από το Tab «Πεδία» εισάγετε τα λεκτικά και τους editors FISCPRD και PERIOD στα αντίστοιχα πεδία, για να μην εμφανίζονται ως αριθμητικά πεδία (Εικόνα C9).

• Εισάγετε μία νέα ενότητα και επιλέγετε τον πίνακα που δημιουργήσατε μέσα από τους οριζόμενους πίνακες. • Στο Tab «Ενότητες» του ευρετηρίου επιλέγετε τη 2η ενότητα, εισάγετε τα πεδία μέσα στις στήλες και

αποθηκεύετε το ευρετήριο με όνομα της επιλογής σας. • Εκτελείτε το ευρετήριο και εμφανίζονται τα αποτελέσματα όπως στην Εικόνα C10.

Εικόνα C8 Εικόνα C9

Page 36: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 2 - Ευρετήρια

36

Εικόνα C10

Page 37: Customizing Softone - The Black Book Ver.2012a

37

ΚΕΦΑΛΑΙΟ 3 Φόρμες Εκτύπωσης

A. Γενικά Στοιχεία Εκτύπωσης A.1 Ρυθμίσεις Εκτυπωτή A.2 Κανάλια – Μέσα Εκτύπωσης A.3 Τύποι Φορμών Εκτύπωσης

Β. Εσωτερικές Φόρμες B.1 Ζώνες Πεδίων, B.2 Γραμμή Εργαλείων B.3 Γενικές Λειτουργίες Φόρμας, B.4 Διαστάσεις Φόρμας Β.5 Γραμματοσειρές (Fonts), Β.6 Επαναλαμβανόμενη Ζώνη Β.7 Εικόνα Ενότητας - Είδους

C. Φόρμες Word C.1 Εισαγωγή Φόρμας, C.2 Σχεδίαση Φόρμας C.3 Φίλτρα πεδίων, C.4 Δεκαδικά πεδίων, C.5 Report Footer C.6 Εικόνα είδους, C.7 Αναδίπλωση memo πεδίων

D. Φόρμες Excel D.1 Εισαγωγή Φόρμας, D.2 Σχεδίαση Φόρμας

E. Ετικέτες E.1 Εισαγωγή Ετικέτας, E.2 Σχεδίαση Ετικέτας E.3 Εκτύπωση Ετικέτας

F. Φόρμες Crystal Reports F.1 Γενικοί Κανόνες, F.2 Σχεδίαση εκτύπωσης Crystal

G. Αυτόματη Δρομολόγηση & Αρχειοθέτηση G.1 Αυτόματη Δρομολόγηση, G.2 Αυτόματη Αρχειοθέτηση

Page 38: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 3 – Φόρμες Εκτύπωσης

38

Α. Γενικά Στοιχεία Εκτύπωσης Οι Φόρμες Εκτύπωσης είναι ένα εργαλείο για σχεδιασμό εκτυπώσεων, το οποίο χρησιμοποιείται για αναλυτική εκτύπωση εγγραφών ενοτήτων(παραστατικά πωλήσεων, αγορών, πελάτες, είδη κτλ.) μέσω ενός ή περισσότερων πινάκων. Ο σχεδιασμός των φορμών εκτύπωσης είναι κοινός για όλους τους τύπους εγγράφων.

Α.1 Ρυθμίσεις Εκτυπωτή Ο τύπος του εκτυπωτή (Image ή Draft) ορίζεται στη σελίδα «Εκτυπωτές» των ρυθμίσεων του συστήματος (Εικόνα Α1). Επιλέγοντας τον εκτυπωτή (με διπλό κλικ) μπορείτε να αλλάξετε τον τύπο εκτύπωσης από Image σε Draft. Εφόσον οριστεί τύπος εκτύπωσης «Draft» ενεργοποιείται η επιλογή «Λεπτομέρειες». Στο παράθυρο που εμφανίζεται με κλικ στο button «Λεπτομέρειες» ορίζονται οι ρυθμίσεις του Dot Matrix εκτυπωτή, με επιλογή από το button Defaul values για στενό ή φαρδύ εκτυπωτή(Εικόνα Α2). Οι συγκεκριμένες ρυθμίσεις εφαρμόζονται ανά υπολογιστή και αποθηκεύονται στο αρχείο Xplorer.cfg στο φάκελο «Softone» του «User Profile Directory», που βρίσκεται στο button «Ταυτότητα». Η αποθήκευση των ρυθμίσεων στο αρχείο Xplorer.cfg σας δίνει τη δυνατότητα εφαρμογής των ρυθμίσεων σε πολλούς υπολογιστές με απλή αντιγραφή του αρχείου στα σωστά directories.

Εικόνα Α1

Εικόνα Α2

Page 39: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 3 – Φόρμες Εκτύπωσης

39

Α.2 Κανάλια – Μέσα Εκτύπωσης Μια κατάσταση εγγραφών είτε έχει προκύψει από εργασία τύπου ευρετηρίου είτε από εργασία τύπου εκτύπωσης μπορεί εκτός της οθόνης και του εκτυπωτή να αποσταλεί στα εξής μέσα:

• Excel: Ενεργοποιεί την εφαρμογή Microsoft Excel και μεταφέρει σ' αυτήν τα δεδομένα της κατάστασης. Προϋπόθεση για τη λειτουργία του μηχανισμού αυτού είναι να έχει εγκατασταθεί η εφαρμογή Excel στο client σύστημα.

• Word: Ενεργοποιεί την εφαρμογή Microsoft Word και μεταφέρει σ' αυτήν τα δεδομένα της κατάστασης. Προϋπόθεση για τη λειτουργία του μηχανισμού αυτού είναι να έχει εγκατασταθεί η εφαρμογή Word στο client σύστημα.

• E-mail: Προβάλει μια οθόνη ρυθμίσεων στην οποία καθορίζεται το format στο οποίο θα διακινηθούν τα δεδομένα της κατάστασης καθώς και το εάν θα αποτελούν συνοδευτικό του e-mail (attachment) ή μέρος του "σώματος" του. Προϋπόθεση για την λειτουργία του μηχανισμού είναι να έχει εγκατασταθεί e-mail εφαρμογή στο client σύστημα.

• Spreadsheet File: Εξάγει τα δεδομένα σε μορφή xls. Δεν προϋποθέτει απαραίτητα την εγκατάσταση του Microsoft Excel, αλλά οποιασδήποτε εφαρμογής υπολογιστικών φύλλων.

• Document File: Εξάγει τα δεδομένα σε μορφή doc. Δεν προϋποθέτει απαραίτητα την εγκατάσταση του Microsoft Excel, αλλά οποιασδήποτε εφαρμογής επεξεργασίας κειμένου.

• Ascii file Windows: Προβάλει παράθυρο αποθήκευσης αρχείου σε μορφή κειμένου (text) Η αποθήκευση της κατάστασης γίνεται σε character set Windows 1253.

• Ascii file DOS: Προβάλει παράθυρο αποθήκευσης αρχείου σε μορφή κειμένου (text) Η αποθήκευση της κατάστασης γίνεται σε character set 437.

• Html format: Προβάλει παράθυρο αποθήκευσης αρχείου σε μορφή html. Η αποθήκευση της κατάστασης γίνεται σε αυτό το format.

• SoftOne MetaFile: Προβάλει παράθυρο αποθήκευσης αρχείου σε ειδικό format της SoftOne (xpr). Tα αρχεία που παράγονται φέρουν το διακριτικό εικονίδιο της SoftOne και εκτελούνται με την εφαρμογή Soft1 (απ' ευθείας από τον Windows Explorer και με <διπλό κλικ>). Εάν κατά τη στιγμή της εκτέλεσής τους η εφαρμογή είναι σε λειτουργία, τότε η σχετική εκτύπωση προβάλλεται στην οθόνη της εφαρμογής. Εάν η εφαρμογή Soft1 δεν είναι ανοικτή τη στιγμή που εκτελείται το <διπλό κλικ> στο .xpr αρχείο, τότε (η εφαρμογή εκτελείται αυτόματα), υποβάλει τον χειριστή σε διαδικασία εισόδου (login) και αμέσως μετά προβάλλει την εκτύπωση. Στην περίπτωση αυτή η εφαρμογή Soft1 έχει εκτελεστεί σε "viewer mode" και δεν περιέχει καμμία άλλη εργασία.

Α.3 Τύποι Φορμών Εκτύπωσης Οι φόρμες ορίζονται από τους εξής τύπους, οι οποίοι υποδηλώνουν και το μέσο σχεδίασης :

• Εσωτερική: Εκτύπωση σε Dot Matrix(Draft) ή Laser, Inkjet εκτυπωτές(Image). • Εξωτερική (Word): Εκτύπωση με χρήσης της εφαρμογής MS Word • Εξωτερική (Excel): Εκτύπωση με χρήσης της εφαρμογής MS Excel • Φορολογικός εκτυπωτής: Εκτύπωση αποδείξεων λιανικής με χρήση φορολογικού εκτυπωτή POS • Ετικέτα: Εκτύπωση ετικετών • Crystal Report: Εκτύπωση με χρήση της εφαρμογής Crystal Report.

Page 40: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 3 – Φόρμες Εκτύπωσης

40

B. Εσωτερικές Φόρμες Οι φόρμες εκτύπωσης χωρίζονται σε δύο κατηγορίες:

• Draft: Εκτυπώσεις που τυπώνονται σε dot matrix εκτυπωτές. Σε αυτήν την περίπτωση πρέπει υποχρεωτικά ο εκτυπωτής να έχει δηλωθεί ως draft και να έχει συμπληρωθεί ο πίνακας «Printer commands» βλ. Α.1

• Image: Εκτυπώσεις που τυπώνονται σε laser, inkjet εκτυπωτές. Το περιβάλλον σχεδίασης είναι ίδιο και για τους δύο τύπους φορμών. Αυτό που διαφέρει είναι οι ρυθμίσεις και τα printer commands που μπορείτε να ορίσετε κατά περίπτωση.

B.1 Ζώνες Πεδίων Οι εσωτερικές φόρμες διαιρούνται σε τρία τμήματα – ζώνες (Εικόνα B1.1):

• Αρχή σελίδας – Header (ανοιχτό μπλε): Περιλαμβάνει τα στοιχεία του header μίας εκτύπωσης (πχ. πελάτη, ημερομηνία και σειρά ενός παραστατικού)

• Επαναλαμβανόμενο τμήμα (κίτρινο): Περιλαμβάνει το επαναλαμβανόμενο μέρος μίας εκτύπωσης (πχ. γραμμές ειδών ενός παραστατικού).

• Τέλος σελίδας – Footer (ανοιχτό πράσινο): Περιλαμβάνει τα στοιχεία του footer μίας εκτύπωσης (πχ. σύνολα τιμών – ποσοτήτων, παρατηρήσεις ενός παραστατικού).

Εικόνα B1.1

Page 41: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 3 – Φόρμες Εκτύπωσης

41

B.2 Γραμμή Εργαλείων

Η γραμμή Εργαλείων, που εμφανίζεται στη σχεδίαση εσωτερικών φορμών έχει τις εξής λειτουργίες :

• Πεδία: Εμφάνιση των πεδίων προς επιλογή και εισαγωγή στη φόρμα. Η εισαγωγή τους γίνεται είτε με διπλό κλικ είτε με drag and drop(Εικόνα B1).

• Ενότητες: Εμφάνιση των ενοτήτων(ζωνών) της φόρμας (Εικόνα B2) • Ιδιότητες: Προβολή των ιδιοτήτων του επιλεγμένου σημείου στη φόρμα (η επιλογή υπάρχει και με δεξί κλικ

πάνω στη φόρμα). Στην Εικόνα B3 βλέπετε τις ιδιότητες του πεδίου «Τύπος» των παρ/κών πωλήσεων. • Printer command: Εισαγωγή – Παραμετροποίηση Printer commands στις φόρμες. (Εικόνα B4) • Ιδιότητες σελίδας: Προβολή των ιδιοτήτων της σελίδας. Οι ιδιότητες "Κενές γραμμές πάνω" - "Κενοί

χαρακτήρες αριστερά" και «Ωφέλιμες γραμμές σελίδας» αφορούν στις ετικέτες(Εικόνα B5).

Εικόνα B1 Εικόνα B2

Εικόνα B3 Εικόνα B4

Εικόνα B5

Page 42: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 3 – Φόρμες Εκτύπωσης

42

B.3 Γενικές Λειτουργίες Φόρμας Με δεξί κλικ σε οποιοδήποτε σημείο της φόρμας προβάλλεται ο κατάλογος των διαθέσιμων επιλογών(Εικόνα Β6):

• Zoom In / Out: Zoom στη φόρμα • Γραμμές: Εμφάνιση / Απόκρυψη γραμμών σελίδας. • Διαγραφή: Διαγραφή του επιλεγμένου πεδίου, ζώνης, εικόνας κτλ. • Ιδιότητες: Εμφανίζονται οι ιδιότητες του επιλεγμένου πεδίου, ζώνης, εικόνας κτλ.

Μπορεί να χρησιμοποιηθεί εναλλακτικά του button «Ιδιότητες» που υπάρχει στη γραμμή εργαλείων. • Καθαρισμός γραμμής: Διαγραφή όλων των πεδίων και κειμένων της επιλεγμένης γραμμής. • Εισαγωγή γραμμής: Εισαγωγή γραμμής στο επιλεγμένο σημείο. • Διαγραφή γραμμής: Διαγραφή της επιλεγμένης γραμμής. • Προσθήκη εικόνας background: Εισαγωγή εικόνας ως background (εικόνα τύπου jpg ή bmp). • Ιδιότητες εικόνας background: Διαμόρφωση ιδιοτήτων εικόνας • Εξαγωγή εικόνας background σε αρχείο: Αποθήκευση εικόνας στον υπολογιστή • Εικόνα Ενότητας: Εισαγωγή εικόνας στο επιλεγμένο σημείο • Ψηφιακή Υπογραφή τύπου Β: Εισαγωγή ψηφιακής υπογραφής στο επιλεγμένο σημείο.

Λειτουργεί μόνο στο footer και μόνο σε εσωτερικές φόρμες. • Οριζόμενα στοιχεία από και σε μεταφορά: Εισαγωγή αρίθμησης σελίδων. Λειτουργεί μόνο στο footer. • Οριζ. Πίνακες: Εισαγωγή οριζόμενου πίνακα στο σχήμα της φόρμας • Save to file…: Αποθήκευση φόρμας σε αρχείο με κατάληξη ptf, το οποίο μπορεί να επεξεργαστεί μέσα από

Notepad των Windows • Load from file…: Εισαγωγή φόρμας από αρχείο ptf

Εικόνα B6

Page 43: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 3 – Φόρμες Εκτύπωσης

43

B.4 Διαστάσεις Φόρμας Οι διαστάσεις της φόρμας καθορίζονται με δεξί κλικ «Ιδιότητες» σε οποιοδήποτε σημείο μεταξύ της ζώνης του επαναλαμβανόμενου μέρους και του τέλους της φόρμας (λευκό χρώμα) (Εικόνα Β7). Σε περίπτωση όπου χρησιμοποιείται έντυπο χωρίς διακριτή σελιδοποίηση (πχ ρολό χαρτιού ταμειακής), ρυθμίστε την παράμετρο «Δυναμικό μήκος σελίδας» σε «Ναι», έτσι ώστε η ζώνη τέλους(footer) να τυπώνεται μόνο μια φορά. Δηλαδή το footer θα τυπώνεται μόνο στο τέλος της εκτύπωσης, μετά την εκτύπωση όλων των γραμμών του επαναλαμβανόμενου μέρους. Μόλις ολοκληρωθεί η ρύθμιση των διαστάσεων της σελίδας, θα προσαρμοστεί αντίστοιχα ο χάρακας που πλαισιώνει την οθόνη σχεδιασμού της φόρμας(Εικόνα Β8).

• Εκτυπώσεις Laser: Ύψος γραμμών: 85, Πλάτος χαρακτήρων: 137 Βασικές Ρυθμίσεις Διαστάσεων

• Εκτυπώσεις Draft: Ύψος γραμμών: 66, Πλάτος χαρακτήρων: 137 Σημείωση

: Οι πραγματικές διαστάσεις της εκτύπωσης σε εκατοστά εξαρτώνται επιπρόσθετα και από τις ρυθμίσεις του font γεωμετρίας για τις image εκτυπώσεις, ενώ για τις draft εκτυπώσεις εξαρτώνται και από τα printer commands που θα χρησιμοποιηθούν.

Εικόνα B7

Εικόνα B8

Page 44: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 3 – Φόρμες Εκτύπωσης

44

B.5 Γραμματοσειρές (Fonts)

Draft εκτυπώσεις Το μέγεθος των γραμματοσειρών σε draft εκτυπώσεις ορίζεται από τα printer commands. Μία φόρμα εκτύπωσης μπορεί να έχει ένα η περισσότερα printer commands, τα οποία να εφαρμόζουν διαφορετικό μέγεθος γραμματοσειράς ανά γραμμή ή ενότητα. Για την εισαγωγή ενός printer command κάνετε κλικ στο αντίστοιχο button της γραμμής εργαλείων και γίνεται αυτόματα η εισαγωγή του στο επιλεγμένο σημείο (κόκκινο τετράγωνο). Από τη σχετική λίστα που εμφανίζεται επιλέγετε την κατάλληλη ρύθμιση (Εικόνα Β9). Οι ιδιότητες ενός printer command εφαρμόζονται μέχρι τη χρήση ενός νέου. Για παράδειγμα, αν υπάρχει ένα printer command με 12CPI , τότε όλα τα στοιχεία της φόρμας που έπονται θα έχουν το αντίστοιχο μέγεθος. Το μέγεθος εφαρμόζεται σε συνδυασμό με τις ειδικές ρυθμίσεις που έχουν οριστεί στο draft εκτυπωτή. Το πλάτος της γραμμής που έχετε ορίσει στις ειδικές ρυθμίσεις καθορίζει και το μέγιστο αριθμό χαρακτήρων ανά γραμμή. Έστω ότι έχετε ορίσει μέγεθος 12CPI και το μέγιστο πλάτος βάσει ρυθμίσεων είναι 96 χαρακτήρες. Αν τα δεδομένα σας υπερβαίνουν το συγκεκριμένο πλάτος θα εφαρμοστεί αναδίπλωση γραμμής, ακόμα και αν το συνολικό πλάτος της φόρμας εκτύπωσης είναι μεγαλύτερο.

Εικόνα B9 Image εκτυπώσεις Το μέγεθος των γραμματοσειρών σε image εκτυπώσεις ορίζεται αρχικά από το button «Ιδ.σελίδας» της γραμμής εργαλείων. Συγκεκριμένα, από τις ιδιότητες σελίδας καθορίζονται οι γραμματοσειρές (fonts) που θα χρησιμοποιούνται στη σχεδιαζόμενη φόρμα(Εικόνα Β5). Η παράμετρος «Βασικό Font σελίδας» καθορίζει το προεπιλεγμένο font κάθε πεδίου ή κείμενου που εισάγετε. Ειδικές ρυθμίσεις όσον αφορά τον τρόπο εκτύπωσης (είδος γραμματοσειράς και μέγεθος χαρακτήρων) για τις επιμέρους ζώνες της φόρμας ή ακόμη και για συγκεκριμένα πεδία μπορούν να τεθούν στις «Ιδιότητες» τους. Στην παράμετρο «Font γεωμετρίας» επιλέγεται ο τύπος και το μέγεθος της γραμματοσειράς που θα προσδιορίζει το μέγεθος κάθε γραμμής στη φόρμα. Λάβετε υπόψη ότι το πραγματικό μέγεθος της εκτύπωσης μεγαλώνει αναλογικά με το μέγεθος του επιλεγμένου font γεωμετρίας. Ουσιαστικά, το font γεωμετρίας είναι η βασική παράμετρος που καθορίζει το χώρο που θα διατίθεται για την εκτύπωση κάθε χαρακτήρα στη σελίδα. Είναι προφανές ότι σε καμία περίπτωση δε πρέπει το βασικό font σελίδας να έχει μεγαλύτερο μέγεθος από το font γεωμετρίας διότι θα υπάρχει επικάλυψη των χαρακτήρων στην εκτύπωση. Σημείωση: Εάν οι παραπάνω παράμετροι δε συμπληρωθούν, η εφαρμογή εφαρμόζει τις default ρυθμίσεις (Lucida Console 8pt).

Page 45: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 3 – Φόρμες Εκτύπωσης

45

B.6 Επαναλαμβανόμενη Ζώνη Πριν τοποθετήσετε πεδία στο επαναλαμβανόμενο μέρος της φόρμας, θα πρέπει να καθορίσετε τον πίνακα από τον οποίο θα αντλούνται. Επιλέξτε κάποιο σημείο στο επαναλαμβανόμενο μέρος (κίτρινη γραμμή) και με κλικ στο button «Ιδιότητες» θα εμφανιστεί το παράθυρο της Εικόνας Β10. Στο επαναλαμβανόμενο μέρος τυπώνονται μόνο τα στοιχεία που έχουν εισαχθεί στην κίτρινη γραμμή. Συμπληρώστε τις ρυθμίσεις ως εξής:

• Στην παράμετρο «Γραμμές», εισάγετε τον αριθμό των γραμμών που θα χρησιμοποιείται για την εκτύπωση μίας γραμμής παραστατικού.

• Στην παράμετρο «Πίνακας» επιλέγετε τον πίνακα από τον οποίο θα αντλούνται τα δεδομένα • Η παράμετρος «Φίλτρο» σας επιτρέπει να φιλτράρετε τα δεδομένα που θα εκτυπωθούν εισάγωντας την

κατάλληλη εντολή. Για παράδειγμα αν θέλετε να εμφανίσετε μόνο τις γραμμές που η ποσότητα είναι μεγαλύτερη από 10, τότε πρέπει να γράψετε: MTRLINES.QTY1>10

• Στην παράμετρο «Ταξινόμηση» εισάγετε τα πεδία βάσει των οποίων θα γίνει ταξινόμηση στην εκτύπωση. Προσοχή στη χρήση του πλήρου ονόματος του πεδίου. Στην Εικόνα Β11 βλέπετε ένα παράδειγμα ταξινόμησης των γραμμών παραστατικών βάσει του κωδικού των ειδών.

• Στην παράμετρο «Πεδία pack» εισάγετε τα πεδία βάσει των οποίων θα γίνει ομαδοποίηση. Αν θέλετε να χρησιμοποιήσετε περισσότερα από ένα πεδία τα χωρίζετε με ελληνικό ερωτηματικό.

Εικόνα B10 Εικόνα B11

B.7 Εικόνα Ενότητας – Είδους Για την εισαγωγή εικόνας σε μία ενότητα της φόρμας, επιλέγετε «Εικόνα Ενότητας» και με διπλό κλικ στο πλαίσιο που εμφανίζεται ρυθμίζετε τα στοιχεία της εικόνας(Εικόνα Β11). Στο πλαίσιο τιμή εισάγετε τη διαδρομή του αρχείου εικόνας που βρίσκεται στον υπολογιστή σας. Μπορείτε επίσης να εισάγετε την εικόνα του είδους, με χρήση της εντολής $MTRLINES.MTRL;0 Εισαγωγή εικόνας που βρίσκεται στα σχετικά έγγραφα του είδους γίνεται με την εντολή $MTRLINES.MTRL;

Εικόνα B11

Page 46: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 3 – Φόρμες Εκτύπωσης

46

C. Φόρμες Word C.1 Εισαγωγή Φόρμας Οι φόρμες Word σχεδιάζονται μέσα από το περιβάλλον της εφαρμογής Microsoft Word, η οποία πρέπει απαραίτητα να είναι εγκατεστημένη για την εκτέλεσή τους. Για τη δημιουργία νέας φόρμας χρησιμοποιείτε την επιλογή «Εξωτερική Word» στον τύπο φόρμας.(Εικόνα C1.1) Στη συνέχεια, δημιουργείτε ένα νέο έγγραφο Word με δεξί κλικ ή με κλικ στο button «Νέο έγγραφο».(Εικόνα C1.2)

Εικόνα C1.1 Εικόνα C1.2

C.2 Σχεδίαση Φόρμας Η φόρμα Word όπως και η εσωτερική χωρίζεται σε header, επαναλαμβανόμενο μέρος και footer. Τα στοιχεία που θα εμφανίζονται στο header της φόρμας εισάγονται στην κεφαλίδα του εγγράφου του Word. Τα πεδία του επαναλαμβανόμενου μέρους εισάγονται μέσα σε πίνακα του Word που έχει ως πρώτη στήλη το σύμβολο {@ και ως τελευταία το σύμβολο @}(Εικόνα C2.1). Για να ορίσετε τον πίνακα του SoftOne από τον οποίο θα αντλούνται τα δεδομένα της επαναλαμβανόμενης ζώνης επιλέγετε το σύμβολο {@ της πρώτης στήλης και δημιουργείτε υπερσύνδεση (hypelink) εισάγοντας στο πλαίσιο διεύθυνση την εντολή «Table:όνομα πίνακα». Στην Εικόνα C2.2 βλέπετε παράδειγμα επαναλαμβανόμενου μέρους βάσει των γραμμών παραστατικών (MTRLINES). Στο σύμβολο @} που βρίσκεται στην τελευταία στήλη του πίνακα δεν πρέπει να εισάγετε υπερσύνδεση.

Εικόνα C2.1

Εικόνα C2.2

Η εισαγωγή πεδίων μέσα στη φόρμα γίνεται με διπλό κλικ στο παράθυρο των πεδίων της φόρμας. Τα στοιχεία που θα εμφανίζονται στο τέλος της φόρμας εκτύπωσης πρέπει να εισαχθούν μέσα σε πλαίσιο κειμένου (textbox) στο τέλος της σελίδας του Word, όχι στο υποσέλιδο και στη συνέχεια να ομαδοποιηθούν.

Page 47: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 3 – Φόρμες Εκτύπωσης

47

C.3 Φίλτρα πεδίων Στο επαναλαμβανόμενο μέρος μίας φόρμας Word μπορείτε να φιλτράρετε τα δεδομένα που θα εμφανίζονται. Τα φίλτρα εισάγονται στο hyperlink του συμβόλου {@ μετά τη δήλωση του πίνακα του επαναλαμβανόμενου μέρους. Η γενική σύνταξη εισαγωγής φίλτρων είναι: TABLE:<όνομα πίνακα>,<φίλτρο 1> AND <φίλτρο 2> OR <φίλτρο 3>, Παρακάτω υπάρχουν αναλυτικά τα βήματα εισαγωγής φίλτρων:

• Δεξί κλικ στο σύμβολο {@ - επιλογή Edit Hyperlink. • Στο πλαίσιο Address εισάγετε τα φίλτρα εισάγοντας υποχρεωτικά κόμμα στην αρχή και στο τέλος τους

π.χ. Φίλτρο σε γραμμές παραστατικών πωλήσεων με βάση την κατηγορία με κωδικό 807: TABLE:MTRLINES,MTRCATEGORY=807, (Εικόνα C3.1).

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

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

• Για την εισαγωγή περισσότερων φίλτρων μπορείτε να χρησιμοποιήσετε τους λογικούς τελεστές AND και OR. Στο παράδειγμα της εικόνας C3.2 θα εμφανιστούν μόνο οι γραμμές που έχουν κωδικό κατηγορίας 807 και SODTYPE 52(δηλαδή γραμμές υπηρεσιών).

Εικόνα C3.1

Εικόνα C3.2

Page 48: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 3 – Φόρμες Εκτύπωσης

48

C.4 Δεκαδικά πεδίων Σε πεδία που έχουν τύπο πραγματικό αριθμό μπορείτε να ορίσετε το πλήθος των δεκαδικών ψηφίων που θα εμφανίζονται. Η γενική σύνταξη εισαγωγής δεκαδικών είναι: FIELD:<πίνακας.πεδίο> ; n (όπου n πλήθος δεδαδικών) Στην παρακάτω λίστα υπάρχουν τα βήματα για εμφάνιση δύο δεκαδικών ψηφίων στο πεδίο Τιμή (MTRLINES.PRICE) των γραμμών παραστατικού πωλήσεων.

• Δεξί κλικ στο πεδίο - επιλογή Edit Hyperlink. (Εικόνα C4.1) • Στο πλαίσιο Address, στο τέλος του πεδίου εισάγετε ελληνικό ερωτηματικό (;) και στη συνέχεια το πλήθος

των δεκαδικών. (Εικόνα C4.2)

Εικόνα C4.1

Εικόνα C4.2

Page 49: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 3 – Φόρμες Εκτύπωσης

49

C.5 Report Footer Για την εισαγωγή στοιχείων που θα εμφανίζονται μόνο στην τελευταία σελίδα της εκτύπωσης (Report Footer) ακολουθείτε τα παρακάτω βήματα:

• Εισαγωγή πλαισίων κειμένου (text box) στο κάτω μέρος της σελίδας (όχι στο υποσέλιδο ) με τα κείμενα που θέλετε να εμφανίζονται.

• Εισαγωγή ενός πλαισίου κειμένου εξωτερικά των παραπάνω πλαισίων κειμένου. (Εικόνα C5.1) • Ομαδοποίηση όλων των πλαισίων κειμένου. • Επιλογή του ομαδοποιημένου πλαισίου και εισαγωγή υπερσυνδέσμου (hyperlink) πληκτρολογώντας την

εντολή «XTR:LP_FOOTER» στο πεδίο Διεύθυνση (Address). (Εικόνα C5.2)

Εικόνα C5.1

Εικόνα C5.2

Page 50: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 3 – Φόρμες Εκτύπωσης

50

C.6 Εικόνα Είδους Για την εισαγωγή της εικόνας του είδους στις γραμμές φόρμας παραστατικών σε Word πρέπει να ακολουθήσετε τα παρακάτω βήματα:

• Εισαγωγή σχήματος ορθογώνιο (Insert – Shape – Rectangle)(Εικόνα C6.1). • Εισαγωγή υπερσύνδεσης (hyperlink) στο σχήμα που θα έχει ως διεύθυνση (Address) την εντολή

IMAGE:$MTRLINES.MTRL;0 (Εικόνα C6.2) Σημείωση:

.Ιδιαίτερη προσοχή πρέπει να δοθεί στην εισαγωγή του σχήματος στο σωστό σημείο μέσα στον πίνακα. Μπορείτε εύκολα να δείτε το σημείο που έχετε εισάγει το σχήμα, εμφανίζοντας τα σημεία παραγράφων(Εικόνα C6.3).

Εικόνα C6.1

Εικόνα C6.2

Εικόνα C6.3

Page 51: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 3 – Φόρμες Εκτύπωσης

51

C.7 Αναδίπλωση memo πεδίων Κατά την εκτύπωση φόρμας word με πεδίο memo (πχ παρατηρήσεις πελάτη), στο οποίο έχετε εισάγει κείμενο με πολλές γραμμές (enters line breaks), το word εμφανίζει λανθασμένα το κείμενο, δηλαδή εμφανίζει τα σύμβολα των χαρακτήρων enter( ). Επίσης, πραγματοποιεί το line break αν το πεδίο έχει εισαχθεί απευθείας στο κείμενο, ενώ δεν το πραγματοποιεί αν το πεδίο έχει εισαχθεί μέσα σε κελί πίνακα(Εικόνα C7.1) Τη συγκεκριμένη συμπεριφορά μπορείτε να τη διορθώσετε δημιουργώντας τοπικό πεδίο το οποίο θα αντικαθιστά τους χαρακτήρες line break char(13)&char(10) με τον χαρακτήρα char(11). Δηλαδή η κλήση του πεδίου να γίνει με χρήση της εντολής REPLACE πχ. REPLACE(REPLACE(A.REMARKS,char(13),''),char(10),char(11)) (Εικόνα C7.2) Το αποτέλεσμα χρήσης του τοπικού πεδίου στη φόρμα το βλέπετε στην εικόνα C7.3.

Εικόνα C7.1

Εικόνα C7.2

Εικόνα C7.3

Page 52: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Extra Tools

52

D. Φόρμες Excel D.1 Εισαγωγή Φόρμας Οι φόρμες Excel σχεδιάζονται μέσα από το περιβάλλον της εφαρμογής Microsoft Excel, η οποία πρέπει απαραίτηττα να είναι εγκατεστημένη για την εκτέλεσή τους. Για τη δημιουργία νέας φόρμας χρησιμοποιείτε την επιλογή «Εξωτερική Excel» στον τύπο φόρμας.(Εικόνα D1) Στη συνέχεια, δημιουργείτε ένα νέο έγγραφο Excel με δεξί κλικ ή με κλικ στο button «Νέο έγγραφο».(Εικόνα D2)

Εικόνα D1 Εικόνα D2

D.2 Σχεδίαση Φόρμας Η φόρμα Excel έχει επαναλαμβανόμενο μέρος όπως και οι υπόλοιποι τύποι φορμών, αλλά δεν υποστηρίζει σελιδοποίηση. Η εισαγωγή πεδίων μέσα στη φόρμα γίνεται με διπλό κλικ όπως και στη φόρμα Word. Τα πεδία του επαναλαμβανόμενου μέρους εισάγονται μέσα σε κελιά του Excel που έχουν ως πρώτη στήλη το σύμβολο {> και ως τελευταία το σύμβολο <}. Ο ορισμός του πίνακα από τον οποίο θα αντλούνται τα δεδομένα της επαναλαμβανόμενης ζώνης γίνεται με επιλογή του συμβόλου {> της πρώτης στήλης και δημιουργία υπερσύνδεσης (hypelink) εισάγοντας στο πλαίσιο διεύθυνση την εντολή «Table:όνομα πίνακα». Στην Εικόνα D3 βλέπετε παράδειγμα επαναλαμβανόμενου μέρους βάσει των γραμμών παραστατικών(MTRLINES). Στο σύμβολο <} που βρίσκεται στο κελί της τελευταίας στήλης δεν πρέπει να εισάγετε υπερσύνδεση.

Εικόνα D3

Page 53: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Extra Tools

53

E. Ετικέτες E.1 Εισαγωγή Ετικέτας Οι ετικέτες είναι εσωτερικές φόρμες εκτύπωσης και σχεδιάζονται μέσα από το περιβάλλον του SoftOne. Για τη δημιουργία νέας ετικέτας χρησιμοποιείτε την επιλογή «Ετικέτα» στον τύπο φόρμας.(Εικόνα Ε1)

Εικόνα E1

E.2 Σχεδίαση Ετικέτας Από τις ιδιότητες της ετικέτας ορίζετε τις διαστάσεις της καθώς και τον πίνακα από τον οποίο θα αντλεί δεδομένα. Επίσης μπορείτε να ορίσετε και την επανάληψη εκτύπωσης όμοιων ετικετών βάσει κάποιας συνθήκης. Για παράδειγμα μπορείτε να εκτυπώσετε ετικέτες από γραμμές παραστατικών και για κάθε γραμμή του παραστατικού να επαναλαμβάνεται η εκτύπωση του είδους βάσει της ποσότητας της γραμμής (Εικόνα Ε2). Στη φόρμα εισάγετε τα πεδία με επιλογή από το button «Πεδία» όπως στις εσωτερικές φόρμες εκτύπωσης. Για την εισαγωγή πεδίου που θα εμφανίζεται με τη μορφή γραμμωτού κώδικα, εισαγετε κανονικά το πεδίο και στη συνέχεια επιλέγετε τα αντίστοιχα fonts(δεξί κλικ στο πεδίο – Ιδιότητες – Fonts).

Εικόνα E2 Εικόνα Ε3

E.2 Εκτύπωση Ετικέτας Η εκτύπωση ετικετών που έχουν σχεδιαστεί για object του SoftOne(πχ. Αγορές) γίνεται με επιλογή των εγγραφών ή της εγγραφής από το ευρετήριο και με δεξί κλικ «Εκτύπωση ετικετών» – «Επιλογή εκτυπωτή» εμφανίζεται το παράθυρο της εικόνας Ε1. Επιλέγετε πάντοτε την επιλογή «Αυτόματα από φόρμα» αν θέλετε στην εκτύπωση να λαμβάνεται υπόψιν η «Συνθήκη εκτύπωσης – επανάληψης» που έχετε δηλώσει στις ιδιότητες της ετικέτας.

Εικόνα E1

Page 54: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Extra Tools

54

F. Φόρμες Crystal Reports F.1 Γενικοί Κανόνες Οι φόρμες σε Crystal Reports σχεδιάζονται αποκλειστικά μέσα από το περιβάλλον της εφαρμογής Crystal Reports. Η εκτύπωση φόρμας που έχει σχεδιαστεί με crystal γίνεται μόνο σε φυσικό εκτυπωτή ή σε pdf file. Για την εκτέλεση φόρμας Crystal από υπολογιστή που δεν έχει εγκατεστημένο το Crystal πρέπει υποχρεωτικά να έχει γίνει εγκατάσταση της εφαρμογής Crystal Reports Runtime, η οποία βρίσκεται στην κοινή περιοχή του SoftOne. Για τη δημιουργία νέας φόρμας χρησιμοποιείτε την επιλογή «Crystal Report» στον τύπο φόρμας.(Εικόνα F1) Στη συνέχεια, δημιουργείτε ένα νέο έγγραφο Crystal με δεξί κλικ ή με κλικ στο button «Νέο έγγραφο».(Εικόνα F2)

Εικόνα F1 Εικόνα F2 Για τη δημιουργία μίας φόρμας εκτύπωσης σε Crystal πρέπει να γνωρίζετε τα παρακάτω:

• Τους πίνακες της βάσης που περιέχουν τα δεδομένα που θέλετε να εμφανίσετε • Τα πεδία που θα χρησιμοποιηθούν από τους παραπάνω πίνακες • Τον τρόπο σύνδεσης των πινάκων (primary keys) • Αν η εγκατάσταση του SoftOne είναι on premise ή Azure. Για τη δημιουργία εκτύπωσης crystal σε

περιβάλλον Windows Azure είναι υποχρεωτική η χρήση command. • Τα πεδία κλειδία της εγγραφής με τα οποία θα γίνει η σύνδεση του SoftOne με την εκτύπωση Crystal

Το συγκεκριμένα πεδία θα αντιστοιχισθούν μέσα από τα τοπικά πεδία της φόρμας εκτύπωσης. Η σχεδίαση φόρμας μέσα από την εφαρμογή Crystal Reports γίνεται με δύο τρόπους είτε με χρήση πινάκων είτε με commands, δηλαδή με απευθείας χρήση queries για τον ορισμό των δεδομένων που θα χρησιμοποιηθούν στην εκτύπωση(πίνακες και πεδία).

F.2 Σχεδίαση εκτύπωσης Crystal Δημιουργείτε ένα νέο report μέσα από το μενού File – New – Standard report και στη συνέχεια στο παράθυρο που θα εμφανιστεί επιλέγετε OLE DB(ADO) και στο νέο παράθυρο επιλέγετε «Microsoft OLE DB Provider for SQL Server», αν η βάση είναι σε SQL Server (Εικόνα F1). Στο νέο παράθυρο(Εικόνα F2) εισάγετε τα credentials του Server και το όνομα της βάσης από την οποία θα αντλήσετε δεδομένα για την εκτύπωση.

Εικόνα F1 Εικόνα F2

Page 55: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Extra Tools

55

F.2.1 Εκτύπωση με χρήση πινάκων Αν επιλέξετε να δημιουργήσετε εκτύπωση με χρήση πινάκων τότε στο Tab Data επιλέγετε το όνομα της βάσης που έχετε κάνει σύνδεση και στη συνέχεια εισάγετε τους πίνακες που θα χρησιμοποιήσετε στο δεξί panel του παραθύρου (Εικόνα F3). Επόμενο βήμα είναι η σύνδεση των πινάκων βάσει των primary keys(Εικόνα F4). Στο παρακάτω παράδειγμα χρησιμοποιούνται πίνακες για τη δημιουργία εκτύπωσης crystal, η οποία θα χρησιμοποιηθεί σε φόρμα εκτύπωσης παραστατικών.

Εικόνα F3 Εικόνα F4 Στην κεντρική οθόνη σχεδίασης της εκτύπωσης (Design) σχεδιάζετε την εκτύπωση επιλέγοντας τα πεδία που θέλετε να εμφανίζονται(Εικόνα F5).

Εικόνα F5

Page 56: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Extra Tools

56

Για τη σύνδεση της εκτύπωσης με μία εγγραφή του SoftOne(πχ. με το πεδίο FINDOC) πρέπει να ορίσετε Parameter field, το οποίο θα παίρνει τιμές από το πεδίο κλειδί της εγγραφής του SoftOne. Στο παράδειγμα μας χρησιμοποιούμε παράμετρο με όνομα iFINDOC η οποία θα συνδεθεί με το πεδίο FINDOC του παραστατικού προς εκτύπωση(Εικόνα F6). Κατά τη δημιουργία Parameter field πρέπει πάντοτε να δίνετε προσοχή στον τύπο του πεδίου. Στη συγκεκριμένη περίπτωση το πεδίο σύνδεσης είναι το FINDOC που είναι αριθμός οπότε επιλέγετε Number.

Εικόνα F6

Επόμενο βήμα είναι η δημιουργία φίλτρου των εγγραφών της εκτύπωσης βάσει του πεδίου Parameter field. Από το μενού επιλέγετε Report – Selection Formulas – Record και στο παράθυρο που εμφανίζεται «συνδέετε» το παραμετρικό φίλτρο iFindoc με το πραγματικό πεδίο της βάσης FINDOC.FINDOC όπως στην Εικόνα F7. Για την εισαγωγή της εκτύπωσης μέσα στο SoftOne ως φόρμα εκτύπωσης ακολουθείτε τα βήματα της ενότητας F3.

Εικόνα F7

Page 57: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Extra Tools

57

F.2.2 Εκτύπωση με χρήση command Στην περίπτωση που θέλετε να δημιουργήσετε εκτύπωση με χρήση command(υποχρεωτικό σε εγκαταστάσεις σε AZure) τότε επιλέγετε «Add command» και στο παράθυρο που εμφανίζεται πληκτρολογείτε το query. Επίσης στο ίδιο παράθυρο μπορείτε να εισάγετε και το πεδίο παραμέτρου(Command Parameter), το οποίο θα συνδέει την εκτύπωση crystal με την εγγραφή του SoftOne. Στο παράδειγμα της εικόνας F8 το query μπορεί να χρησιμοποιηθεί σε φόρμες εκτύπωσης παραστατικών, αφού η παράμετρος (iFINDOC) θα συνδεθεί μέσα από τα τοπικά πεδία της φόρμας εκτύπωσης με την τιμή του FINDOC. Σχεδιάζετε την εκτύπωση όπως στο προηγούμενο παράδειγμα με τη μόνη διαφορά ότι δε χρειάζεται να κάνετε αντιστοίχιση του Parameter Field του command με τα records, αφού το ίδιο το query θα φιλτράρει τα records κατά την εκτέλεση της εκτύπωσης(Εικόνα F9). Για την εισαγωγή της εκτύπωσης μέσα στο SoftOne ως φόρμα εκτύπωσης ακολουθείτε τα βήματα της παρακάτω ενότητας.

Εικόνα F8

Εικόνα F9

Page 58: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Extra Tools

58

F.3 Εισαγωγή Crystal στο SoftOne Η ολοκλήρωση των παραπάνω διαδικασιών γίνεται με την εισαγωγή της εκτύπωσης Crystal σε φόρμα εκτύπωσης του SoftOne. Δημιουργείτε μία νέα φόρμα εκτύπωσης, επιλέγετε ως τύπο φόρμας «Crystal Reports» και στη συνέχεια με δεξί κλικ επιλέγετε «Εισαγωγή εγγράφου από αρχείο». Επιλέγετε το αρχείο rpt που έχετε δημιουργήσει και εμφανίζεται το παράθυρο της εικόνας F10, στο οποίο αν επιλέξετε «Ναι» θα γίνει αυτόματη εισαγωγή των Parameter fields στο section «Οριζόμενα πεδία» των τοπικών πεδίων της φόρμας εκτύπωσης(Εικόνα F11).

Εικόνα F10 Εικόνα F11

Στο συγκεκριμένο παράδειγμα έχει γίνει εισαγωγή της crystal εκτύπωσης σε παραστατικά πωλήσεων, οπότε στo section «οριζόμενα πεδία» των τοπικών πεδίων που έχει δημιουργηθεί η παράμετρος iFINDOC πρέπει να γίνει η αντιστοίχισή της με το πεδίο SALDOC.FINDOC των παραστατικών πωλήσεων, όπως στην εικόνα F12.

Εικόνα F12

Αν έχετε αντιστοιχίσει τα Parameter fields του Crystal με τα πεδία του SoftOne μέσα από τα οριζόμενα πεδία και κάνετε αλλαγές στην εκτύπωση crystal, τότε όταν ξαναεισάγετε το crystal μέσα στη φόρμα εκτύπωσης πρέπει να επιλέξετε να μην γίνει αυτόματος καθορισμός ερωτήσεων από το SoftOne, αφού σε αντίθετη περίπτωση θα σβηστούν οι αντιστοιχίσεις που έχετε κάνει και θα πρέπει να ξαναγίνουν εκ νέου.

Page 59: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Extra Tools

59

G. Αυτόματη Δρομολόγηση & Αρχειοθέτηση Η εφαρμογή σας δίνει τη δυνατότητα αυτόματης αυτόματης αποστολής παραστατικών ή άλλων εγγραφών με email σε μορφή pdf κατά την έκδοσή τους. Επίσης υπάρχει η δυνατότητα αυτόματης αποθήκευσής τους σε συγκεκριμένη διαδρομή του υπολογιστή σας.

Σημείωση

G.1 Αυτόματη Δρομολόγηση

: Αν έχετε φορολογικό μηχανισμό τύπου Β τότε στα αρχεία του email περιλαμβάνονται και τα δύο αρχεία txt που παράγονται σε συνεργασία με τον ΕΑΦΔΣΣ.

Η αυτόματη δρομολόγηση(αποστολή email) γίνεται με ενεργοποίηση της αντίστοιχης επιλογής μέσα στον Tab «Παράμετροι». Με χρήση της συγκεκριμένης επιλογής το παραστατικό θα αποσταλεί απευθείας στη μορφή που έχετε επιλέξει, όταν θα γίνει χρήση της συγκεκριμένης φόρμας. (Εικόνα G1)

Εικόνα G1

Η ενότητα email συμπληρώνεται ως εξής:

• Formula To: Παραλήπτης Email. Στο συγκεκριμένο πλαίσιο εισάγετε σε μονά εισαγωγικά το email του παραλήπτη ή το πεδίο email από τον αντίστοιχο πίνακα της φόρμας.

• Formula CC: Κοινοποίηση. Συμπληρώνεται όμοια με το “Formula To” • Formula BCC: Κρυφή Κοινοποίηση. Συμπληρώνεται όμοια με το “Formula To” • Formula Subject: Θέμα email. Εισάγετε σε μονά εισαγωγικά το κείμενο του θέματος. • Formula Body: Κείμενο email. Εισάγετε σε μονά εισαγωγικά το κυρίως κείμενο του email. Mπορείτε

εναλλακτικά να χρησιμοποιήσετε html κώδικα, τον οποίο πρέπει να εισάγετε σε τοπικό πεδίο (Εικόνα G2). Σημείωση: Σε όλα τα παραπάνω πλαίσια μπορείτε να εισάγετε πεδία της φόρμας.

Page 60: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Extra Tools

60

Ένα απλό παράδειγμα συνδυασμού κειμένων και πεδίων μπορείτε να δείτε στην Εικόνα G3. Μετά την εκτύπωση της συγκεκριμένης φόρμας παραστατικού πωλήσεων θα γίνει αποστολή στο email του πελάτη του παραστατικού (SALDOC.TRDR_CUSTOMER_EMAIL) με θέμα το συνδυασμό του κειμένου 'Τιμολόγιο ' και του κωδικού του παραστατικού (SALDOC.FINCODE). Στο κυρίως κείμενο θα εμφανιστεί το κείμενο του πεδίου XBODY, το οποίο έχει δηλωθεί μέσα στα τοπικά πεδία των παραστατικών πωλήσεων της φόρμας εκτύπωσης.

Εικόνα G2

Εικόνα G3

Page 61: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Extra Tools

61

G.2 Αυτόματη Αρχειοθέτηση Η αυτόματη αρχειοθέτηση(αποθήκευση αρχείου) γίνεται με ενεργοποίηση της αντίστοιχης επιλογής μέσα στον Tab «Παράμετροι». Η χρήση της συγκεκριμένης επιλογής μπορεί να λειτουργήσει μεμονωμένα ή σε συνδυασμό με την αυτόματη δρομολόγηση. Στην ενότητα «Αρχεία» πρέπει υποχρεωτικά να συμπληρώσετε τα πλαίσια Formula for path και Formula for file name.

• Formula for path: Διαδρομή αρχείου. Μέσα σε μονά quotes ορίζετε τη διαδρομή που θα αποθηκευτεί το αρχείο. Η διαδρομή μπορεί να είναι παραμετρική, δηλαδή να περιλαμβάνει πεδία της φόρμας(Εικόνα G4).

• Formula for file name: Όνομα αρχείου. Μέσα σε μονά quotes ορίζετε το όνομα του αρχείου. Πρέπει υποχρεωτικά να δηλώσετε την κατάληξη του αρχείου.

Εικόνα G4

Page 62: Customizing Softone - The Black Book Ver.2012a

62

ΚΕΦΑΛΑΙΟ 4 Alerts

A. Γεγονότα (Events) & Συνθήκες A.1 Events Πεδίων A.2 Events Πινάκων A.3 Events Ενοτήτων A.4 Συνθήκες Ευρετηρίου – Αναζήτησης

B. Ενέργειες (Actions) B.1 Αποστολή Μηνύματος B.2 Εμφάνιση Μηνύματος B.3 Εμφάνιση Λάθους B.4 Εκτέλεση

Page 63: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 4 - Alerts

63

A. Γεγονότα (Events) & Συνθήκες Τα Alerts είναι ένα ευέλικτο εργαλείο ανοιχτού σχεδιασµού που αναπτύχθηκε µε σκοπό να καλύψει ιδιαίτερες απαιτήσεις διαµόρφωσης ή επέκτασης της λειτουργικότητας όλων των ενοτήτων διαχείρισης δεδοµένων . Με ιδιαίτερα φιλικό interface, δίνει τη δυνατότητα στο χειριστή να επέμβει σε οποιοδήποτε γεγονός πριν ή αφότου αυτό συµβεί ώστε να προκαλέσει τις ενέργειες που επιθυµεί. Για να κατανοηθεί ο τρόπος λειτουργίας των γεγονότων (Events) αλλά και των ενεργειών (Actions), θα πρέπει πρώτα να γίνουν κατανοητά τα δοµικά συστατικά στοιχεία που συνθέτουν µία ενότητα του προγράµµατος, π.χ. των πελατών. Συγκεκριµένα έχουµε την δυνατότητα να ορίσουµε συνθήκες για γεγονότα σε επίπεδο ενότητας, σε επίπεδο πίνακα της ενότητας αλλά και σε επίπεδο πεδίου πίνακα.

Α.1 Events Πεδίων Βασικό συστατικό στοιχείο κάθε ενότητας της εφαρμογής είναι τα πεδία. Το διαθέσιμο γεγονός(Event) των πεδίων είναι η αλλαγή της τιµής τους(On Change). Στο παράδειγμα της Εικόνας Α1 έχει δημιουργηθεί alert που ενημερώνει την τιμή χονδρικής ( ITEM.PRICEW) του είδους με το γινόμενο της τιμής λιανικής(ITEM.PRICER) επί 0,7. Η πράξη εκτελείται με χρήση της εσωτερικής συνάρτησης SETVALUE. Η εντολή εφαρμόζεται όταν γίνει αλλαγή στο πεδίο λιανική. Στο πλαίσιο συνθήκη μπορείτε να εισάγετε τη συνθήκη εκτέλεσης της εντολής, δηλαδή μπορείτε να ορίσετε πότε θα εκτελείται. Στο παρακάτω παράδειγμα θα μπορούσατε να εισάγετε την εντολή ITEM.PRICER<10 δηλαδή την εκτέλεση της εντολής μόνο όταν το πεδίο της λιανικής έχει τιμή μεγαλύτερη από 10. Σημείωση

: Περισσότερα από ένα ορίσματα μέσα στο πλαίσιο της Συνθήκης διαχωρισμένα με AND ή OR, πρέπει πάντοτε να είναι τοποθετημένα μέσα σε παρενθέσεις.

Εικόνα A1

Page 64: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 4 - Alerts

64

A.2 Events Πινάκων Τα πεδία περιλαµβάνονται σε πίνακες που αποτελούν το συστατικό στοιχείο κάθε ενότητας. Τα συγκεκριμένα events λειτουργούν σε πίνακες που εμφανίζονται μέσα σε Grids στις προβολές και είναι τα εξής:

• Η Εισαγωγή (On Insert) • Η Καταχώρηση (Before Post, After Post) • Η Διαγραφή (Before Delete, After Delete)

Το Alert της Εικόνας Α2 λειτουργεί στο κύκλωμα των πελατών ως εξής: Κατά την εισαγωγή (On Insert) νέου υποκαταστήματος (CUSBRANCH) εκτελείται η συνάρτηση SETVALUE('CUSBRANCH.SALESMAN',CUSTOMER.SALESMAN) η οποία ορίζει ως default πωλητή στα υποκαταστήματα τον πωλητή του πελάτη.

Εικόνα A2

Page 65: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 4 - Alerts

65

Α.3 Events Ενοτήτων Στο τελευταίο επίπεδο βρίσκεται η ενότητα που περιλαµβάνει τους πίνακες µε τα πεδία τους και έχει ως σκοπό την συνολική διαχείριση των δεδοµένων µε την Βάση Δεδοµένων. Τα διαθέσιμα events είναι:

• Η Εισαγωγή Δεδοµένων στη Βάση (Before DB insert, After DB Insert) • Η Μεταβολή Δεδοµένων της Βάσης (Before DB update, After DB Update) • Η Καταχώρηση Δεδοµένων στη Βάση (Before DB post, After DB Post) • Η Διαγραφή Δεδοµένων της Βάσης (Before DB Delete, After DB Delete) • Η Εµφάνιση Εγγραφής, η οποία ενεργοποιείται όταν ζητηθεί προβολή μίας εγγραφής (On Locate) • Η Εισαγωγή Εγγραφής, η οποία ενεργοποιείται όταν ζητηθεί εισαγωγή νέας εγγραφής (On Insert)

Το Alert του παρακάτω παραδείγματος(Εικόνα Α3) αποτρέπει την καταχώρηση παραστατικού πωλήσεων αν το νόμισμα της συναλλαγής είναι διαφορετικό από το νόμισμα του πελάτη, εμφανίζοντας αντίστοιχο μήνυμα (Εικόνα Α4). Επρόσθετη συνθήκη εκτέλεσης είναι και η συμπεριφορά του παραστατικού, δηλαδή γίνεται επιπλέον έλεγχος στη συμπεριφορά του τύπου του παραστατικού (SALDOC.TFPRMS<>201).

Εικόνα A3

Εικόνα A4

Page 66: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 4 - Alerts

66

Α.4 Συνθήκες Ευρετηρίου – Αναζήτησης Οι συνθήκες ευρετηρίου – αναζήτησης λειτουργούν ως φίλτρα στα ευρετήρια της ανοιγμένης ενότητας. Για τη δημιουργία συνθήκης ευρετηρίου ορίζετε τη συνθήκη εκτέλεσης και την ένδειξη που θα εμφανίζεται στον τίτλο του ευρετηρίου. Στον πίνακα γεγονότων της συνθήκης ορίζετε ως γεγονός ενέργειας «Εκτέλεση», ως τύπο «SQL φίλτρου» και στο Text εισάγετε το SQL φίλτρο, που θα προσαρτάται στα ευρετήρια όταν ικανοποιείται η συνθήκη. Στο παράδειγμα της Εικόνας Α5 ο χρήστης της εφαρμογής με κωδικό 504 σε όλα τα ευρετήρια των συναντήσεων θα µπορεί να εµφανίζει µόνο τις εγγραφές που χειριστής είναι ο ίδιος. Επιπλέον, στον τίτλο των ευρετηρίων των συναντήσεων θα προστεθεί η ένδειξη «Κλειδωμένο για 504»(Εικόνα Α6).

Εικόνα A5

Εικόνα A6

Page 67: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 4 - Alerts

67

B. Ενέργειες (Actions) Τα Alerts δίνουν την δυνατότητα να οριστούν συνθήκες, σε κάθε ένα από τα δομικά συστατικά στοιχεία της εφαρμογής, που όταν επαληθευτούν θα εκτελεστούν µια σειρά από γεγονότα. Οι διαθέσιµες ενέργειες που μπορούν να εκτελεστούν κάθε φορά που επαληθεύεται κάποια συνθήκη είναι οι ακόλουθες:

B.1 Αποστολή Μηνύματος Αποστέλλει στον αποδέκτη το µήνυµα που περιγράφεται µε την µορφή τύπου (formula) στο πεδίο Text. Όταν ο τύπος είναι Οθόνη πελάτη, ο αποδέκτης είναι ένας από τους χρήστες του προγράµµατος. Το µήνυµα θα αποθηκευτεί και µόλις η συγκεκριµένος χρήστης είναι διαθέσιµος(κάνει log in στην εφαρμογή) θα του εµφανιστεί στην οθόνη. Στην περίπτωση E-mail χρήστη αλλά και Κινητό χρήστη ο αποδέκτης περιγράφεται µε τύπο (formula). Απαραίτητη προϋπόθεση για αποστολή σε E-mail και κινητό, είναι να υπάρχει ο SoftOne Remote Server, ο οποίος θα εξυπηρετήσει αυτά τα µηνύµατα. Σηµειώστε ότι στην περίπτωση αυτή δεν εµφανίζεται καµία σχετική ένδειξη στην οθόνη του χειριστή της εφαρµογής που έχει εκτελέσει το γεγονός (event) και κατά συνέπεια έχει ενεργοποιήσει την ενέργεια.

B.2 Εμφάνιση Μηνύματος (Warning Message) Εµφανίζει το µήνυµα, το οποίο περιγράφεται µε την µορφή τύπου (formula) (σταθερό κείµενο ή παραµετρικά οριζόµενο) στο πεδίο Text στον χρήστη του προγράµµατος. Δεν επηρεάζει την ροή του προγράµµατος.

B.3 Εμφάνιση Λάθους (Exception Message) Εµφανίζει το µήνυµα, το οποίο περιγράφεται µε την µορφή τύπου (formula) (σταθερό κείµενο ή παραµετρικά οριζόµενο) στο πεδίο Text στον χρήστη του προγράµµατος. Σταµατάει την ροή του προγράµµατος.

B.4 Εκτέλεση Εκτός από την εμφάνιση ή αποστολή μηνυμάτων, τα Alerts δίνουν τη δυνατότητα εκτέλεσης διάφορων εντολών. Oι διαθέσιμες εντολές εκτέλεσης, που αποτελούν και το πιο δυνατό σημείο των Alerts, είναι οι εξής:

• SQL Εντολή Εκτελεί την SQL εντολή που περιγράφεται µε την µορφή τύπου (formula) στο πεδίο Text.

• VB Script Εκτελεί το VB script που περιγράφεται µε την µε την µορφή τύπου (formula) στο πεδίο Text.

• Java Script Εκτελεί το Java script που περιγράφεται µε την µε την µορφή τύπου (formula) στο πεδίο Text.

• Συνάρτηση Εκτελεί τη συνάρτηση, από τις εσωτερικές συναρτήσεις του προγράµµατος, που περιγράφεται µε την µορφή τύπου (formula) στο πεδίο Text.

• Εργασία Εκτελεί το SQL που περιγράφεται µε την µε την µορφή τύπου (formula) στο πεδίο Text. Μπορεί να χρησιµοποιηθεί µόνο για τις συνθήκες σε επίπεδο ενότητας και µόνο για τα γεγονότα που σχετίζονται µε την βάση δεδοµένων. Στις «πριν το γεγονός (before)» ενέργειες εµφανίζεται ερώτηση επιβεβαίωσης του γεγονότος. Στις «µετά το γεγονός (after) ενέργειες» εµφανίζεται µήνυµα ολοκλήρωσης του γεγονότος. Στην περίπτωση αυτή, δεν χρειάζεται να οριστεί τίποτα περισσότερο από τη συνθήκη καθώς όλα τα υπόλοιπα υπολογίζονται αυτόµατα και ανά περίπτωση.

Page 68: Customizing Softone - The Black Book Ver.2012a

68

ΚΕΦΑΛΑΙΟ 5 Database Designer Basic

A. Resource Editor – Γενικές Λειτουργίες

B. Εισαγωγή Πεδίων σε Πίνακες B.1 Τύποι Δεδομένων Πεδίων B.2 Πεδία Ανεύρεσης (Επιλογή από Πίνακα)

C. Πίνακες στη Μνήμη C.1 Σχεδίαση Πίνακα στη Μνήμη C.2 Εμφάνιση Πίνακα στο Μενού

D. Detail Πίνακες D.1 Σχεδίαση Detail Πίνακα C.2 Εμφάνιση Πίνακα σε Προβολή

E. String Lists – Λίστες Τιμών

Page 69: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 5 – Database Designer Basic

69

Α. Resource Editor – Γενικές Λειτουργίες Η εφαρμογή σας δίνει τη δυνατότητα να διαμορφώσετε τη δομή της βάσης, εισάγοντας νέα πεδία σε πίνακες, δημιουργώντας νέους πίνακες, database views, virtual tables, objects και string lists. Η διαχείριση της βάσης γίνεται μέσω του εργαλείου “Resource Editor”, που βρίσκεται στο μενού επιλογών επιλέγοντας Report Tools και στη συνέχεια «Tools – S1 Designer». Το συγκεκριμένο εργαλείο σας επιτρέπει τη δημιουργία νέων πεδίων, πινάκων, objects, database views, strings κτλ, τα οποία αναλύονται στις επόμενες ενότητες. Κάθε εγγραφή του Resource Editor είναι και ένα διαφορετικό Design με συγκεκριμένο όνομα, περιγραφή και version, που ορίζονται από το χρήστη. Στην Εικόνα Α1 βλέπετε ένα παράδειγμα από διαφορετικά designs, κάθε ένα από τα οποία έχει τα δικά του πεδία, πίνακες κτλ. Επιπρόσθετα, υπάρχει η επιλογή δημιουργίας ενός design με χρήση άλλων ήδη δημιουργημένων, η οποία επιτρέπει τη συγχώνευση όλων των Designs σε ένα και θα μπορούσε να χρησιμοποιηθεί ως γενική λύση προς εκμετάλευση (Εικόνα Α2). Κάθε φορά που γίνονται αλλαγές στον Resource Editor, οι οποίες αφορούν στο σχήμα της βάσης (προσθήκη πεδίων, πινάκων, views) πρέπει να γίνει συγχρονισμός της βάσης. Ο συγχρονισμός εφαρμόζεται μόνο όταν γίνει χειροκίνητη αλλαγή της version του εκάστοτε design (Εικόνα Α3). Μετά την καταχώρηση της εγγραφής του Resource Editor, σε επόμενο login στην εφαρμογή θα σας ζητηθεί να κάνετε συγχρονισμό, εμφανίζοντας σε παράθυρο τις διαφορετικές versions των designs. (Εικόνα Α4) Το αρχείο συγχρονισμού αποθηκεύεται στο φάκελο «Log» του «Program Profile Directory», που βρίσκεται στο button «Ταυτότητα», με όνομα αντίστοιχο του αρχείου σύνδεσης στην εφαρμογή (αρχείο XCO) και της ώρας εκτέλεσης του συγχρονισμού (πχ «S1_Training_ 20110426-132848.log»). Στο αρχείο αυτό θα βρείτε πιθανά λάθη που εμπόδισαν τη δημιουργία πινάκων, database views ή και constraints της βάσης. Σημείωση

: Μία ακόμη χρησιμότητα των designs είναι η δυνατότητα εξαγωγής τους μεμονωμένα από το Custom Administration ως cst αρχεία. Η ταυτόχρονη ομαδοποίηση και εξαγωγή των designs και των λοιπών cst αρχείων (ευρετήρια, προβολές, κτλ) μπορούν να δημιουργήσουν μία συνολική λύση Solution, η οποία εμπλουτίζεται από επιπλέον επιλογές, όπως είναι η εισαγωγή στοιχείων του κατασκευαστή, ο περιορισμός χρήσης βάσει ημερομηνίας (Demo), η χρήση μόνο για συγκεκριμένο Serial Number καθώς και το κλείδωμα αυτής με password. Όλα τα παραπάνω υποδεικνύουν πως κάθε Solution που δημιουργείτε έχει το δικό σας copyright (Εικόνα Α5).

Εικόνα A1 – Resource Editor

Εικόνα A2 – Design με Used Projects

Page 70: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 5 – Database Designer Basic

70

Εικόνα A3 – Στοιχεία νέου Design

Εικόνα A4 – Συγχρονισμός Βάσης

Εικόνα A5 – Σήμανση custom λύσης

Page 71: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 5 – Database Designer Basic

71

B. Εισαγωγή Πεδίων σε Πίνακες Κάθε δημιουργημένο design επιτρέπει την εισαγωγή νέων πεδίων σε πίνακες της βάσης. Η προσθήκη πεδίων γίνεται με την επιλογή του επιθυμητού πίνακα (πχ PRSN), τη μετάβαση στο τελευταίο πεδίο του και τη χρήση του κάτω βέλους από το πληκτρολόγιο. Τα ονόματα των πεδίων πρέπει πάντοτε να ξεκινούν με το πρόθεμα CCC. Η Εικόνα Β1 δείχνει την εισαγωγή πεδίων με διαφορετικό τύπο δεδομένων. Πεδία με τύπο δεδομένων «πραγματικός αριθμός» μπορούν να ακολουθούν τα δεκαδικά αντίστοιχων πεδίων της εφαρμογής που έχουν δηλωθεί στις παραμέτρους της εταιρείας (Εικόνα Β2).

Εικόνα B1 Εικόνα B2

B.1 Τύποι Δεδομένων Πεδίων Στον παρακάτω πίνακα περιγράφονται όλες οι λειτουργίες των πεδίων καθώς και ο τρόπος χρήσης και εισαγωγής τους μέσα στην εφαρμογή. Συνδυασμός διαφορετικών τύπων δεδομένων και ανευρέσεων(Editors) δίνουν διαφορετικές λειτουργίες. Ανάλυση όλων των Editors υπάρχει στην ενότητα Editors του Κεφαλαίου 1 «Προβολές».

Λειτουργία - Χρήση Τύπος Δεδομένων Ανεύρεση(Editor)

Πεδία Κειμένου – Παρατηρήσεων Αλφαριθμητικό

Αριθμοί Ακέραιος – Μικρός Ακέραιος

Τιμές - Αξίες – Ποσότητες (Εικόνα A1) Πραγματικός Αριθμός

Ημερομηνία Ημερομηνία

Ημερομηνία & Ώρα Ημερομηνία $DT

Μόνο Ώρα Ημερομηνία $TIME

Boolean σε Περιοχές Προβολών (Εικόνα A2) Μικρός Ακέραιος $Y

Ανεύρεση / Σύνδεση με πίνακα της εφαρμογής Ακέραιος – Μικρός Ακέραιος Όνομα πίνακα

Page 72: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 5 – Database Designer Basic

72

B.2 Πεδία Ανεύρεσης (Επιλογή από Πίνακα) Τα πεδία ανεύρεσης αντλούν δεδομένα από άλλους πίνακες της εφαρμογής, δηλαδή χρησιμοποιούνται ως links σε πίνακες και αποθηκεύουν τα δεδομένα από πεδίο του πίνακα που θα γίνει η σύνδεση. Για τη δημιουργία πεδίου Ανεύρεσης επιλέγετε ως τύπο δεδομένων «Ακέραιος», «Μικρός Ακέραιος» ή «Αλφαριθμητικό» ανάλογα με το κλειδί του πίνακα από τον οποίο θα αντλήσετε δεδομένα ή τον τύπο δεδομένων που θέλετε να αποθηκεύσετε στο πεδίο σας. Στη συνέχεια, εισάγετε το όνομα του πίνακα στην καρτέλα Ανεύρεση(Editor). Στην Εικόνα Β3 βλέπετε ένα παράδειγμα σύνδεσης του πεδίου CCCFAMLSTAT με τον πίνακα FAMLSTAT για αναζήτηση δεδομένων από τον συγκεκριμένο πίνακα. Μπορείτε να εφαρμόσετε και άλλες εντολές κατά την επιλογή πίνακα, όπως πχ. να φιλτράρετε τις εγγραφές ή να επιστρέψετε διαφορετικό πεδίο από το πεδίο κλειδί του πίνακα. Όλες οι εντολές που εφαρμόζονται στην ανεύρεση πίνακα με χρήση Editor υπάρχουν αναλυτικά στο «Κεφάλαιο 1 – Προβολές», στην ενότητα Editors Attributes. Πεδία που αντλούν δεδομένα από πίνακα στη μνήμη εμφανίζονται σε προβολές όπως στην Εικόνα B4, ενώ πεδία που αντλούν δεδομένα από κανονικούς πίνακες, εμφανίζονται όπως στην Εικόνα B5.

Εικόνα B3

Εικόνα B4

Εικόνα B5

Page 73: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 5 – Database Designer Basic

73

C. Πίνακες στη Mνήμη Η εισαγωγή νέων πινάκων στη βάση γίνεται μέσα από τα δημιουργημένα designs με δεξί κλικ στο μενού και χρήση της επιλογής «Κατασκευή – Πίνακα». Τα ονόματα των πινάκων πρέπει πάντοτε να ξεκινούν με το πρόθεμα CCC, ενώ τα πεδία των πινάκων που δημιουργούνται μέσα σε έναν custom πίνακα μπορούν να έχουν οποιοδήποτε όνομα. Καλό είναι κατά τη δημιουργία ενός νέου πίνακα να γίνεται χρήση του ίδιου ονόματος πίνακα και πεδίου κλειδιού, για να τηρείται η ίδια λογική με τους εσωτερικούς πίνακες της εφαρμογής.

C.1 Σχεδίαση Πίνακα στη Μνήμη Χρήση των πινάκων σε μνήμη γίνεται στις περιπτώσεις που θέλετε να χρησιμοποιήσετε τους πίνακες για άντληση δεδομένων από πεδία ανεύρεσης (selectors). Η συγκεκριμένη επιλογή φορτώνει στη μνήμη τα δεδομένα του πίνακα κατά την εκκίνηση της εφαρμογής και πρέπει να χρησιμοποιείται σε πίνακες που έχουν μικρό αριθμό εγγραφών. Τα βήματα δημιουργίας πίνακα στη μνήμη περιγράφονται παρακάτω:

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

• Εισαγωγή των πεδίων, επιλέγοντας «Υποχρεωτικό» σε αυτά που είναι πεδία κλειδιά • Υποχρεωτική εισαγωγή του πλάτους εμφάνισης των πεδίων για τη σωστή εμφάνισή τους κατά την κλήση

του πίνακα από το μενού. • Υποχρεωτική εισαγωγή των πεδίων κλειδιών στο Tab «Περιορισμοί Β.Δ.» με τη μορφή XP_keycolumn.

Αν υπάρχουν περισσότερα του ενός κλειδιά τότε εισάγετε XP_keycolumn1_ keycolumn2_keycolumnn. • Χρήση της επιλογής Προεπιλεγμένη Τιμή για εμφάνιση προεπιλεγμένων τιμών σε συγκεκριμένα πεδία • Στην καρτέλα «Πεδία επιλογέα» εισάγετε τις Στήλες – Πεδία που θα εμφανίζονται, αν χρησιμοποιηθεί ο

συγκεκριμένος πίνακας ως Editor σε κάποιο πεδίο (Εικόνες C1 & C2). Προσοχή

: Αν δεν συμπληρωθούν τα «Πεδία επιλογέα» ή τα πλάτη εμφάνισης των πεδίων και γίνει χρήση του πίνακα ως selector κάποιου πεδίου, τότε στο συγκεκριμένο πεδίο δε θα εμφανίζονται δεδομένα προς επιλογή.

Εικόνα C1

Εικόνα C2

Page 74: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 5 – Database Designer Basic

74

C.2 Εμφάνιση Πίνακα στο Μενού • Δεξί κλικ στο μενού – Νέα Εργασία (Εικόνα C2) • Τύπος Εργασίας : Επεξεργασία Πίνακα • Εντολή / Αρχείο : $ και το όνομα του πίνακα • Τίτλος εργασίας : Το λεκτικό που θέλουμε να εμφανίζεται στο μενού • Μετά την ολοκλήρωση της παραπάνω διαδικασίας αποθηκεύετε το μενού ως μενού χρήστη ή εισάγετε τη

συγκεκριμένη εργασία σε classic menu.

Εικόνα C2

Page 75: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 5 – Database Designer Basic

75

D. Detail Πίνακες Μέσα στις προβολές μπορείτε να δημιουργήσετε πίνακες που θα εμφανίζονται σε grids και θα είναι detail στα αρχικά πίνακα του Object. Στις παρακάτω ενότητες αναλύεται η δημιουργία του πίνακα «Παροχές Εταιρίας», ο οποίος θα χρησιμοποιηθεί ως detail πίνακας μέσα στο Object των Προσώπων.

D.1 Σχεδίαση Detail Πίνακα Πρώτο βήμα μετά την εισαγωγή των πεδίων του πίνακα είναι ο καθορισμός των πεδίων κλειδιών. Στη συγκεκριμένη περίπτωση κλειδί είναι εκτός από το ID του πίνακα και το πεδίο PRSN(Πρόσωπο), αφού το συγκεκριμένο πεδίο θα χρησιμοποιηθεί για την αποθήκευση του αντίστοιχου πεδίου που βρίσκεται στο header των προσώπων. Οπότε το πεδίο PRSN είναι υποχρεωτικό και πρέπει να τσεκάρουμε τη συγκεκριμένη επιλογή. (Εικόνα D1) Στο συγκεκριμένο παράδειγμα χρησιμοποιείται και ένα πεδίο που συνδέεται με τον πίνακα στη μνήμη CCCCOMPSPL (Παροχή), οπότε είτε στην καρτέλα Ανεύρεση είτε στον Editor της προβολής γράφουμε το αντίστοιχο όνομα του πίνακα. (Εικόνα C3)

Εικόνα D1

Page 76: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 5 – Database Designer Basic

76

D.2 Εμφάνιση Πίνακα σε Προβολή Για την εμφάνιση ενός detail πίνακα σε μία προβολή ενός object ακολουθείτε τα παρακάτω βήματα

• Επιλογή του object(πχ Πρόσωπα), στο οποίο θέλετε να εισάγετε τον πίνακα. • Κλικ στο σχεδιασμό της προβολής από το αντίστοιχο κουμπί και επιλογή του button

Παραμετροποίηση(Εικόνα D2)

Εικόνα D2

• Στην καρτέλα «Οριζόμενοι Πίνακες» επιλογή από το βελάκι του button «Νέος πίνακας» του πίνακα που θέλετε να εισάγετε στην προβολή (στο συγκεκριμένο παράδειγμα «Πρόσωπα – Παροχές Εταιρίας»).

• Ο πίνακας εμφανίζεται στο αριστερό Panel του παραθύρου και μετά την επιλογή του εμφανίζονται οι ιδιότητες του (Εικόνα D3). Στο πεδίο «Locate statement» γίνεται εισαγωγή του ονόματος του πεδίου ή των πεδίων που θα χρησιμοποιηθούν για το locate(στο παράδειγμά μας είναι το PRSN – Στοιχεία προσώπων)

Εικόνα D3

• Στα πεδία που χρειάζεται εισάγετε υποχρεωτικές τιμές. Στην Εικόνα D4 γίνεται χρήση της forced

value(υποχρεωτική τιμή) με εισαγωγή της login εταιρείας, χρησιμοποιώντας την παράμετρο :X.SYS.COMPANY. Όλες οι παράμετροι της εφαρμογής υπάρχουν στο παράρτημα «Παράμετροι Συστήματος».

Εικόνα D4

Page 77: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 5 – Database Designer Basic

77

• Στο πεδίο PRSN του detail πίνακα εισάγετε την τιμή του ID της εγγραφής που έχει γίνει locate. Για την εισαγωγή της συγκεκριμένης τιμής χρησιμοποιείτε το όνομα του πίνακα και στη συνέχεια το όνομα του πεδίου κλειδιού του πίνακα header διαχωριζόμενο με τελεία. Στο παράδειγμά μας το πεδίο κλειδί του header έχει το ίδιο όνομα με το πεδίο PRSN του detail. (Εικόνα D5)

Εικόνα D5

• Τελευταίο βήμα είναι η εμφάνιση του πίνακα σε grid της προβολής. Δημιουργείτε με δεξί κλικ μέσα στην

προβολή ένα νέο grid και εισάγετε με drag and drop τα πεδία που θέλετε να εμφανίζονται (Εικόνα D6)

Εικόνα D6

Page 78: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 5 – Database Designer Basic

78

E. String Lists – Λίστες Τιμών Τα String Lists είναι σταθερές τιμές(πχ Ναι / Όχι / Άκυρο), οι οποίες μπορούν να χρησιμοποιηθούν ως editors σε πεδία οποιουδήποτε πίνακα της εφαρμογής. Παράδειγμα πεδίου που χρησιμοποιεί string list είναι το πεδίο Τύπος μέσα στο Αρχείο Ειδών, το οποίο εμφανίζει τις σταθερές τιμές «Κανονικό, Δώρο, Εγγυοδοσία,...». Στο παρακάτω παράδειγμα γίνεται δημιουργία μίας String List, η οποία θα εμφανίζει τις ημέρες της εβδομάδας και εισαγωγή της ως Editor στο πεδίο NUM01 του Object των Κλήσεων.

• Κατασκευή String List με δεξί κλικ στον Database Designer. • Εισαγωγή του ονόματος CCCWEEKDAYS στη String List(Εικόνα E1). • Στη στήλη Key εισάγετε τις τιμές που θα καταχωρούνται στο πεδίο, ενώ στη Value τις τιμές που θα

εμφανίζονται (Εικόνα E1). • Στην παραμετροποίηση της προβολής των κλήσεων επιλέγετε το πεδίο NUM01 και εισάγετε στον Editor την

εντολή $CCCWEEKDAYS (Εικόνα E2). • Εισαγωγή του πεδίου στην προβολή και αποθήκευση. • Το πεδίο εμφανίζεται στην προβολή των Κλήσεων όπως στην Εικόνα E3.

Εικόνα E1

Εικόνα E2 Εικόνα E3

Page 79: Customizing Softone - The Black Book Ver.2012a

79

ΚΕΦΑΛΑΙΟ 6 Database Designer Advanced

A. Database Views A.1 Σχεδίαση Database View A.2 Παραδείγματα Database Views

B. Objects B.1 Δημιουργία Object με χρήση Πίνακα B.2 Δημιουργία Object με χρήση Database View B.3 Εμφάνιση Object στο Μενού B.4 Δημιουργία Φόρμας Εκτύπωσης βάσει νέου Object B.5 Παραδείγματα Object

C. Virtual Tables C.1 Δημιουργία Virtual Table C.2 Παράδειγμα χρήσης Virtual Table

D. Report Objects D.1 Σχεδίαση Report Object D.2 Παράδειγμα Εκτύπωσης με χρήση Report Object

Page 80: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 6 – Database Designer Advanced

80

A. Database Views Τα Database Views μπορούν να χρησιμοποιηθούν από την εφαρμογή στις παρακάτω περιπτώσεις:

• Ως Editors σε πεδία ανεύρεσης με εμφάνιση δεδομένων από διάφορους πίνακες (είτε της εφαρμογής, είτε από άλλη βάση)

• Σε Grids προβολών για εμφάνιση εγγραφών από διάφορους πίνακες. • Σε Objects για εμφάνιση δεδομένων σε ευρετήρια και προβολές (χωρίς καταχώρηση).

A.1 Σχεδίαση Database View • Κατασκευή Database View με δεξί κλικ στον Database Designer • Στο Tab SQL εισάγουμε το query και στη συνέχεια πατάμε το κουμπί “Create Fields”, για να δημιουργηθούν

τα πεδία. • Στο πεδίο «Κύριο Κλειδί» εισάγουμε το πεδίο που θέλουμε να επιστρέφει το Database View ή τα πεδία με

τα οποία θα κάνει Locate το Object. • Διαμορφώνουμε τα πεδία εισάγοντας τους τίτλους, τους editors κτλ. • Τέλος, στο Tab «Πεδία Επιλογέα» εισάγουμε τα πεδία που θέλουμε να εμφανίζονται αν χρησιμοποιηθεί το

συγκεκριμένο view ως πίνακας αναζήτησης. • Μετά την ολοκλήρωση δημιουργίας του Database View απαιτείται συγχρονισμός βάσης.

A.2 Παραδείγματα Database Views

A.2.1 Χρήση ως Editor σε πεδία ανεύρεσης Έστω ότι θέλουμε να ορίσουμε editor στους πελάτες στην προβολή των παραστατικών πωλήσεων, ο οποίος θα εμφανίζει τον κωδικό και την επωνυμία των πελατών καθώς και κάποια οικονομικά στοιχεία από τον πίνακα TRDFINADATA.

• Δημιουργούμε το Database View με όνομα CCCViewCustomer και κύριο κλειδί TRDR. • Εισάγουμε το query :

SELECT A1.TRDR, A1.CODE, A1.NAME, A1.COMPANY, $NVL(A2.LBAL,0) AS LBAL, $NVL(A2.LTURNOVR,0) AS LTURNOVR, A1.ISPROSP, A1.ISACTIVE FROM TRDR A1,TRDFINDATA A2 WHERE A1.TRDR=A2.TRDR AND A1.COMPANY=A2.COMPANY AND A1.SODTYPE=13 και πατάμε “Create Fields” (Εικόνα A1)

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

εισάγουμε στον Editor το όνομα του Database View CCCViewCustomer. (Εικόνα A3) • Το πεδίο θα εμφανίζεται στην προβολή όπως στην Εικόνα A4.

Εικόνα A1 Εικόνα A2

Page 81: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 6 – Database Designer Advanced

81

Εικόνα A3 Εικόνα A4

A.2.2 Χρήση σε Grids Εμφάνιση Ενεργειών σε Συναλλασσόμενους. Στο συγκεκριμένο παράδειγμα εμφανίζουμε ένα grid με τις ενέργειες μέσα στο object των πελατών.

• Δημιουργούμε το View με όνομα CCCTRDRSOACTION και κύριο κλειδί TRDR. • Εισάγουμε το query :

SELECT A.SOACTION, B.TRDR FROM SOACTION A LEFT OUTER JOIN TRDR B ON A.TRDR=B.TRDR και πατάμε “Create Fields” (Εικόνα A5)

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

κουμπί «Νέος πίνακας» και ρυθμίζουμε τα πεδία όπως στην Εικόνα A6. • Για να μπορούμε να επιλέξουμε από τα πεδία του πίνακα των ενεργειών, εισάγουμε SOACTION στον editor

του πεδίου(Εικόνα A7). • Δημιουργούμε μία νέα σελίδα και ένα νέο grid και εισάγουμε τα πεδία των ενεργειών. • Το Grid εμφανίζεται στην προβολή όπως στην Εικόνα A8.

Εικόνα A5

Εικόνα A6

Page 82: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 6 – Database Designer Advanced

82

Εικόνα A7

Εικόνα A8

A.2.3 Χρήση σε Objects Για να χρησιμοποιήσουμε database views σε objects, δημιουργούμε κανονικά το Database View, όπως στα προηγούμενα παραδείγματα και στη συνέχεια ακολουθούμε τις οδηγίες της επόμενης ενότητας(Objects), για τη δημιουργία νέου object. Δείτε το αντίστοιχο παράδειγμα στα Objects.

Page 83: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 6 – Database Designer Advanced

83

Β. Objects Τα Objects «συμπεριφέρονται» ακριβώς όπως τα έτοιμα κυκλώματα της εφαρμογής (Πελάτες-Είδη-Παραστατικά κτλ). Έχουν δηλαδή τα δικά τους Ευρετήρια, Προβολές και Alerts καθώς και τις δικές τους Φόρμες Εκτύπωσης. Για τη δημιουργία ενός Object χρησιμοποιούμε είτε CCC Πίνακες είτε CCC Views.

Β.1 Δημιουργία Object με χρήση Πίνακα • Κατασκευή Object με δεξί κλικ στον Database Designer (Εικόνα Β1.1) • Στο Object ID δίνουμε έναν αριθμό, τον οποίο θα χρησιμοποιήσουμε όταν θα θέλουμε να κάνουμε αναφορά

στο συγκεκριμένο object (πχ για τη δημιουργία φορμών εκτύπωσης (Εικόνα Β1.2). • Στο πλαίσιο Ref.Obj.ID. δηλώνεται το SOSOURCE ή το SODTYPE ενός object της εφαρμογής, μέσα στο

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

• Εισάγουμε έναν πίνακα στο object με drag and drop στο Panel Object Properties • Δημιουργούμε τη Default Προβολή με δεξί κλικ στο Form και επιλογή του Add Panel. • Επιλέγοντας το Panel που δημιουργήσαμε, μπορούμε να εισάγουμε πεδία από τον πίνακα μας με drag and

drop, φροντίζοντας πρώτα να κάνουμε κλικ στο πάνω αριστερά κουμπί του Toolbar (Lock Tree). • Αντίστοιχα δημιουργούμε Default Ευρετήριο, με δεξί κλικ στο Report και επιλογή Add Band. • Για να λειτουργήσει σωστά το ευρετήριο πρέπει να σύρουμε τον πίνακα μας στο πεδίο Primary Band Table

του νέου Band που δημιουργήσαμε και στη συνέχεια να εισάγουμε τα πεδία στο Tab Band Fields.

Εικόνα Β1.1

Εικόνα Β1.2

Page 84: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 6 – Database Designer Advanced

84

Στον παρακάτω πίνακα εμφανίζονται οι διάφορες εντολές που μπορούμε να εισάγουμε στο πλαίσιο Parameters, οι οποίες λειτουργούν και στην Παραμετροποίηση των προβολών των objects.

Object Parameters Commands Εντολή Λειτουργία

EDITOPTIONS = NOINSERT Απαγόρευση καταχώρησης νέας εγγραφής

EDITOPTIONS = NODELETE Απαγόρευση διαγραφής εγγραφής

EDITOPTIONS = NOINSERT,NODELETE Απαγόρευση καταχώρησης & διαγραφής

EDITOPTIONS = READONLY Απαγόρευση μεταβολών σε πεδία του object

EDITOPTIONS = NOBROWSER Απόκρυψη του menu button “Ευρετήριο”

EDITOPTIONS = ONEROW Το object εμφανίζει μόνο μία εγγραφή

BROWSERONLY = 1 Εμφάνιση object μόνο ως ευρετήριο(πχ Στατ.Πωλήσεων)

AUTOLOCATE = xxx Αυτόματο locate στην εγγραφή με id=xxx

READONLY Απενεργοποιεί το edit στα controls του object

B.2 Δημιουργία Object με χρήση Database View • Κατασκευάζουμε το Object ακριβώς όπως στην Ενότητα B1 • Στο Object Properties επιλέγουμε να κάνουμε drag and drop κάποιο από τα Database Views που έχουμε

ήδη δημιουργήσει και συγχρονίσει. • Για τη δημιουργία Default Ευρετηρίου και ολοκλήρωση της κατασκευής του object ακολουθούμε τις οδηγίες

της Ενότητας B1. Σημείωση

B.3 Εμφάνιση Object στο Μενού

: Αν θέλουμε να δημιουργήσουμε Object, όπως η «Στατιστική Πωλήσεων», δηλαδή να εμφανίζεται το αντίστοιχο object όταν θα κάνουμε διπλό κλικ στις εγγραφές του ευρετηρίου, τότε πρέπει κατά τη δημιουργία του Database View να δηλώσουμε το αντίστοιχο πεδίο στο πλαίσιο «Επεξεργασία με:» εισάγοντας πρώτα τον ειδικό χαρακτήρα #. Επίσης, πρέπει να εισάγουμε την εντολή BrowserOnly=1 στο πλαίσιο Parameters.

• Αποθηκεύουμε τις αλλαγές στον Database Designer. • Χωρίς τη χρήση συγχρονισμού καλούμε το Object με δημιουργία νέας εργασίας από το μενού. • Στη νέα εργασία επιλέγουμε Επεξεργασία Αρχείου στον «Τύπο Εργασίας» και στο πεδίο «Εντολή/Αρχείο»

πληκτρολογούμε το όνομα του Object. (Εικόνα Β3.1)

Εικόνα Β3.1

Page 85: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 6 – Database Designer Advanced

85

B.4 Δημιουργία Φόρμας Εκτύπωσης βάσει νέου Object • Δημιουργούμε μία νέα εργασία στο μενού • Στον «Τύπο Εργασίας» επιλέγουμε: Επεξεργασία Αρχείου • Στο πεδίο «Εντολή / Αρχείο» εισάγουμε την εντολή : TEMPLATES.ObjectID , όπου ObjectID είναι ο αριθμός

που έχουμε δώσει στο Object (Εικόνα Β4.1) • Με διπλό κλικ στην Εργασία που δημιουργήθηκε και κλικ στο button «Νέα», ανοίγει το παράθυρο

δημιουργίας φόρμας εκτύπωσης για το συγκεκριμένο object (Εικόνα Β4.2)

Εικόνα Β4.1

Εικόνα Β4.2

Page 86: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 6 – Database Designer Advanced

86

B.5 Παραδείγματα Object

B.5.1 Δημιουργία Object με χρήση CCC Πίνακα Δημιουργία Object βάσει του οριζόμενου πίνακα Οχημάτων CCCVehicles.

• Κατασκευάζουμε το Object με δεξί κλικ στον Database Designer και στη συνέχεια σέρνουμε τον πίνακα CCCVEHICLES στο αριστερό panel(Object Properties).

• Στο Object Name γράφουμε CCCOBJVEHICLES, στο Object ID 20001 και στο Caption το λεκτικό Οχήματα(Εικόνα B1).

• Με δεξί κλικ δημιουργούμε Band στο Report και εισάγουμε τα δεδομένα της εικόνας B2, προσέχοντας να σύρουμε τον πίνακα CCCVEHICLES στο πλαίσιο «Primary Band Table».

• Στο Form εισάγουμε με δεξί κλικ ένα νέο Panel και στη συνέχεια εισάγουμε τα πεδία, όπως στην Εικόνα B3. (Για το πεδίο των παρατηρήσεων εισάγουμε ένα νέο Memo)

• Τέλος, δημιουργούμε μία νέα εργασία, για να εμφανίσουμε το object στο μενού(Εικόνα B4)

Εικόνα B1

Page 87: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 6 – Database Designer Advanced

87

Εικόνα B2

Εικόνα B3

Εικόνα B4

Page 88: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 6 – Database Designer Advanced

88

B.5.2 Δημιουργία Object με χρήση Database View Δημιουργία Object βάσει του View CCCViewCustomer, που δημιουργήσαμε στην ενότητα A2.

• Κατασκευάζουμε το Object με όνομα CCCOBJCUSTFINDATA, εισάγουμε το View CCCViewCustomer και στο πλαίσιο Parameters εισάγουμε την εντολή BROWSERONLY=1 (Εικόνα B5).

• Ακολουθούμε τα βήματα του προηγούμενου παραδείγματος για την ολοκλήρωση του object. • Αν θέλουμε να κάνουμε Locate με ένα συγκεκριμένο object της εφαρμογής (πχ. το object των Πελατών),

τότε πρέπει να εισάγουμε στο Database View την εντολή #SODTYPE;TRDR μέσα στο πλαίσιο «Επεξεργασία με»(Εικόνα B6).

• Εισάγουμε το πεδίο SODTYPE στο query του Tab SQL και στη συνέχεια το πληκτρολογούμε στον πίνακα των πεδίων (Εικόνα B7).

• Χρησιμοποιώντας την παραπάνω εντολή, ο χρήστης θα έχει τη δυνατότητα να κάνει διπλό κλικ σε μία εγγραφή του ευρετηρίου και να ανοίγει η καρτέλα του αντίστοιχου πελάτη. Αν δεν είχαμε ορίσει στο query να εμφανίζει μόνο τους πελάτες (… AND A1.SODTYPE=13) τότε θα εμφάνιζε κάθε φορά το αντίστοιχο object του πίνακα TRDR, ανάλογα με το SODTYPE της γραμμής που θα κάναμε διπλό κλικ.

Σημείωση

: Για τη λειτουργία των παραπάνω πρέπει να γίνει εισαγωγή του πεδίου SODTYPE στις στήλες του ευρετηρίου(χωρίς να είναι υποχρεωτικά τσεκαρισμένο). Εναλλακτικά μπορούμε να επιλέξουμε «Περιλαμβάνεται πάντα σε SELECT» στις Ιδιότητες του πεδίου μέσα από το Database View στον Database Designer.

Εικόνα B5

Εικόνα B6

Page 89: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 6 – Database Designer Advanced

89

Εικόνα B7

Page 90: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Database Designer Advanced

90

C. Virtual Tables Τα Virtual Tables είναι πίνακες στη μνήμη με συγκεκριμένη δομή οι οποίοι γεμίζουν μέσω κώδικα και μπορούν να εμφανίζονται σε Grids, σε Report Objects και σε Dialog Objects. Η διαφορά τους με τα Database Views είναι ότι τα Virtual Tables είναι Editable και χρησιμεύουν για να γίνεται ενημέρωση των εγγραφών των πινάκων, ενώ με τα Database Views γίνεται μόνο εμφάνιση των δεδομένων των πινάκων.

C.1 Δημιουργία Virtual Table • Κατασκευή Virtual Table με δεξί κλικ στον Database Designer. • Εισαγωγή των πεδίων του πίνακα, όπως ακριβώς στο σχεδιασμό κανονικών CCC πινάκων. (Μπορούμε

δηλαδή να χρησιμοποιήσουμε και Editors κτλ.) • Εισαγωγή του Virtual Table σε Grid μέσα από το σχεδιασμό προβολής ενός object. • Χρήση κώδικα Javascript για την εισαγωγή εγγραφών στον Virtual Table και εμφάνισή τους στο Grid.

C.2 Παράδειγμα Χρήσης Virtual Table Δημιουργία Virtual Table σε παραστατικά πωλήσεων, το οποίο θα εμφανίζει τις γραμμές από Set Ειδών και θα δίνει δυνατότητα στο χρήστη ενημέρωσης, διαγραφής ή προσθήκης νέων.

• Κατασκευή Virtual Table με δεξί κλικ στον Database Designer • Εισαγωγή των πεδίων, όπως στην Εικόνα C1 • Το πεδίο MTRL θα έχει Editor τα είδη(ΙΤΕΜ), για να εμφανίζει τις στήλες των ειδών. • Τα πεδία QTY και PRICE θα εμφανίζουν τις τιμές από τις γραμμές των set των ειδών και θα υπάρχει η

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

συνέχεια τις στήλες του Virtual Table, το οποίο θα εμφανίζεται όπως στην Εικόνα C2. • Μέσα στο Javascript εισάγουμε τον κώδικα της Εικόνα C3, ο οποίος γεμίζει το virtual table με τις γραμμές

του set του είδους και στην συνέχεια με την εντολή X.SETPROPERTY('MERGECHANGELOG', 'True'); απενεργοποιεί την Καταχώρηση.

Σημείωση

: Για να γίνεται ενημέρωση του πίνακα των set με τις αλλαγές που θα κάνει ο χρήστης στις γραμμές του Virtual Table, εισάγουμε τον κώδικα της Εικόνας C4, ο οποίος κάνει Locate στο Object των Set, διαγράφει και επανακαταχωρεί όλες τις γραμμές του Set βάσει των γραμμών του Virtual Table των παραστατικών πωλήσεων.

Εικόνα C1

Page 91: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Database Designer Advanced

91

Εικόνα C2

Εικόνα C3

Εικόνα C4

Page 92: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Database Designer Advanced

92

D. Report Objects Τα Report Objects χρησιμοποιούνται για τη δημιουργία δυναμικών εκτυπώσεων. Η διαφορά τους με τις σχεδιαζόμενες εκτυπώσεις είναι ότι μπορούν να δημιουργούνται δυναμικά οι στήλες, τα πλάτη τους, τα captions κτλ. κατά την εκτέλεση της εκτύπωσης(Runtime) και ανάλογα με τα φίλτρα αυτής.

D.1 Σχεδίαση Report Object Για τη δημιουργία μίας εκτύπωσης με χρήση Report Object πρέπει πρώτα να σχεδιάσουμε 2 Virtual Tables, το πρώτο με τα φίλτρα της εκτύπωσης και το δεύτερο με τις στήλες της. Οι στήλες του δεύτερου πίνακα γεμίζουν με Softone Script, το οποίο πρέπει να δημιουργήσουμε. Τέλος πρέπει να δημιουργήσουμε ένα νέο Report Object στον Database Designer, το οποίο θα έχει τα 2 Virtual Tables, το πρώτο δηλωμένο ως Dialog(Εικόνα D1) και το δεύτερο ως Function, εισάγοντας την εντολή ReportFunction στο πεδίο Function Name(Εικόνα D2). Στη σχεδίαση του Report Object το Forms αναλαμβάνει να εμφανίσει τα φίλτρα της εκτύπωσης, ενώ το Report τις στήλες της.

Εικόνα D1

Εικόνα D2

Η function SetBandXProperty που χρησιμοποιείται στην CallPublished για να αλλάξει τα attributes του grid της εκτύπωσης έχει τις εξής παραμέτρους :

function SetBandXProperty(Params1,Params2,Params3,Params4) Params1: Band Params2: Band Caption Params3: Property Type (1=Caption, 2=Width.Decimals, 4=Visible, 7=HasSums, 8=DebCred, 9=Transfer) Params4: Property Value

Page 93: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Database Designer Advanced

93

D.2 Παράδειγμα Εκτύπωσης με χρήση Report Object Δημιουργία Εκτύπωσης, η οποία θα εμφανίζει δεδομένα από διαφορετικά queries ανάλογα με την επιλογή του φίλτρου. Δηλαδή, με χρήση του φίλτρο Sodtype(Ενότητα) και επιλογή είτε Πελατών είτε Αποθήκης, θα εμφανίζονται τα αντίστοιχα δεδομένα, αλλάζοντας ταυτόχρονα τα captions και τον αριθμό των στηλών.

• Σχεδιασμός του Virtual Table με όνομα CCCVTFILTERS, το οποίο θα έχει τα φίλτρα της Εκτύπωσης. Στη συγκεκριμένη εκτύπωση ο πίνακας θα έχει μόνο ένα φίλτρο, την Ενότητα(SODTYPE) με εμφάνιση μόνο των πελατών και της αποθήκης, οπότε θα εισάγουμε στον Editor την εντολή $SODTYPE(W[13,51]) (Εικόνα D3).

• Σχεδιασμός του Virtual Table με όνομα CCCVTDISPLAY, το οποίο θα έχει τις στήλες που θα εμφανίζονται στην εκτύπωση (Εικόνα D4).

• Σχεδιασμός του Report Object με εισαγωγή του κώδικα: CODE=SoScriptCodeClt SCRIPTSOURCE=SOIMPORT SOIMPORT=SOIMPORT,CODE,SOIMPORT SCRIPTNAME=CCCMTRLTRDR στο πλαίσιο Parameters. Στο συγκεκριμένο κώδικα το CCCMTRLTRDR είναι το script που θα εκτελεστεί για να δημιουργηθεί η εκτύπωση(Εικόνα D5)

• Εισαγωγή του script που θα εκτελείται (Εικόνα D6), το οποίο στο συγκεκριμένο παράδειγμα εκτελεί διαφορετικά SQL queries, τα οποία εμφανίζουν στήλες ανάλογα με το φίλτρο «Ενότητα».

Εικόνα D3

Εικόνα D4

Page 94: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Database Designer Advanced

94

Εικόνα D5

Εικόνα D6

Page 95: Customizing Softone - The Black Book Ver.2012a

95

ΚΕΦΑΛΑΙΟ 7 Extra Tools

A. Auto Login από Windows Shortcut A.1 Δημιουργία Windows Shortcut A.2 Παραμετροποίηση Αρχείου Σύνδεσης XCO A.3 Extra Commands Αρχείου Σύνδεσης A.4 Αυτόματο Άνοιγμα Ενότητας A.5 Command Line Params

B. Maximum Εγγραφές ανά Ενότητα (Select Top) B.1 Χρήση σε Ενότητες B.2 Χρήση σε Συγκεκριμένο Ευρετήριο Ενότητας

C. Σχεδίαση Μενού – Menu Jobs C.1 Δημιουργία Εργασίας C.2 Τύποι Εργασίας C.3 Παράμετροι Εργασιών Μενού C.4 Παραδείγματα Εργασιών Μενού

Page 96: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Extra Tools

96

A. Auto Login από Windows Shortcut Η εφαρμογή σας δίνει τη δυνατότητα αυτόματης εισαγωγής σε συγκεκριμένη βάση με συγκεκριμένο χρήστη, εταιρεία και υποκατάστημα, χρησιμοποιώντας μόνο ένα shortcut των Windows.

A.1 Δημιουργία Windows Shortcut Δημιουργούμε ένα Windows Shortcut για το Xplorer.Exe. Στις ιδιότητες του shortcut, στο Τarget(Προορισμός) συμπληρώνουμε τη διαδρομή του αρχείου XCO(που περιλαμβάνει τα στοιχεία της σύνδεσης με τη βάση). Μπορούμε να αντιγράψουμε το XCO στον ίδιο φάκελο με το Softone και στη συνέχεια να αναφερθούμε σε αυτό γράφοντας την παρακάτω εντολή (Εικόνα Α1). C:\Soft1\Xplorer.exe /xco:"C:\Soft1\MyCompany.XCO"

Εικόνα A1

Page 97: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Extra Tools

97

A.2 Παραμετροποίηση Αρχείου Σύνδεσης XCO Στο αρχείο XCO πρέπει να προστεθούν οι παρακάτω εντολές για την αυτόματη εισαγωγή σε συγκεκριμένη βάση με συγκεκριμένο χρήστη, εταιρία και υποκατάστημα. [LOGIN] USERNAME=Admin PASSWORD=test COMPANY=2 BRANCH=3

A.3 Extra Commands Αρχείου Σύνδεσης Στο αρχείο XCO μπορούν να προστεθούν και άλλα commands, τα οποία επηρεάζουν ανάλογα την εμφάνιση της εφαρμογής.

HIDEBAR = 1 Αποκρύπτει τη γραμμή εργαλείων (Πίσω – Εμπρός - Ιστορικό - Επιλογή menu …) HIDEMENU =1 Αποκρύπτει το μενού του χρήστη. Χρησιμοποιείται σε συνδυασμό με συγκεκριμένο object που θέλουμε να βλέπει ο χρήστης (πχ EXEC=RETAILDOC) HIDEXPLORER =1 Ελαχιστοποιεί την εφαρμογή στο tray των Windows. Συνήθως χρησιμοποιείται με object που θέλουμε να εμφανίσουμε κατά το Login, αποκρύπτοντας την υπόλοιπη εφαρμογή (πχ EXEC=SALDOC)

A.4 Αυτόματο Άνοιγμα Ενότητας Αν θέλουμε κατά την είσοδο στην εφαρμογή να ανοίξουμε απευθείας κάποια ενότητα(πχ Πωλήσεις, Πελάτες, Είδη) τότε χρησιμοποιούμε το εντολή EXEC=Όνομα Ενότητας. Το παρακάτω παράδειγμα χρήσης του EXEC ανοίγει το κύκλωμα της λιανικής σε νέα εγγραφή, σε Fullscreen, χωρίς τις Σχετικές Εργασίες EXEC=RETAILDOC[FORM=RETAIL, AUTOEXEC=2, MAXIMIZE=1, RELJOBS=0, NOTOOLBAR=0]

A.5 Command Line Params Στον παρακάτω πίνακα εμφανίζονται όλες οι εντολές που μπορούν να χρησιμοποιηθούν κατά την κλήση ενός object, μέσω της εντολής EXEC.

Command Line Params Εντολή Λειτουργία

FORM = FormName Άνοιγμα Προβολής με όνομα FormName

LIST = ListName Άνοιγμα Ευρετηρίου με όνομα ListName

CUSTOM = 0 Κλείδωμα Toolbar συγκεκριμένου object

RELJOBS = 0 Απόκρυψη Σχετικών Εργασιών συγκεκριμένου object

AUTOEXEC = 1 Άνοιγμα Ευρετηρίου με χρήση των προεπιλεγμένων φίλτρων

AUTOEXEC = 2 Άνοιγμα object σε νέα εγγραφή

NOTOOLBAR = 1 Απόκρυψη Toolbar συγκεκριμένου object

STYLE:MODELESS Άνοιγμα Object σε νέο Tab (όχι Modal)

FORCEFILTERS = filedname1:fieldvalue1; filedname2:fieldvalue2;

Άνοιγμα Ευρετηρίου με συγκεκριμένα φίλτρα Παράδειγμα : CUSTOMER[LIST=MyList,AUTOEXEC=1, FORCEFILTERS=CODE=000-00*? DISTRICT=Αθηνα]

FORCEVALUES = filedname1:fieldvalue1; filedname2:fieldvalue2;

Άνοιγμα προβολής σε νέα εγγραφή με συγκεκριμένες τιμές Παράδειγμα : CUSTOMER[AUTOEXEC=2,FORCEVALUES=TRDCATEGORY=3000?TRDBUSINESS=1]

Page 98: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Extra Tools

98

B. Maximum Εγγραφές ανά Ενότητα (Select Top) Το εργαλείο “Select Top” χρησιμοποιείται για να εμφανίσει συγκεκριμένο αριθμό εγγραφών ανά ενότητα επιλογής. Μπορεί, δηλαδή ο χρήστης να εκτελέσει ένα ευρετήριο ή να ανοίξει ένα πεδίο ανεύρεσης και να εμφανιστεί συγκεκριμένος αριθμός εγγραφών του πίνακα(πχ 200 εγγραφές) και όχι όλο το εύρος του. Τα παραπάνω υλοποιούνται στον SQL με τη χρήση της εντολής SELECT TOP, δηλαδή πριν από την κλήση κάθε πίνακα προστίθεται η εντολή TOP. Για να εφαρμοστεί η παραπάνω εντολή στα queries της εφαρμογής, αρκεί να ορίσουμε στο παράθυρο του εργαλείου “Select Top” τους πίνακες, στους οποίους θα εκτελείται.

Β.1 Χρήση σε Ενότητες Για να χρησιμοποιήσετε το εργαλείο “Select Top” πρέπει να το καλέσετε από το μενού, εισάγοντας μία νέα εργασία, με τύπο εργασίας «Εργαλεία Συστήματος» και Εντολή «ACMD:ACSELECTTOP» (Εικόνα B1). Κατά την εκτέλεση της εργασίας που δημιουργήσατε, θα εμφανιστεί ένα κενό παράθυρο, μέσα στο οποίο μπορείτε να ορίσετε τις ενότητες στις οποίες θα εφαρμόζεται το “Select Top”, καθώς και το πλήθος των εγγραφών που θα εμφανίζονται (Εικόνα B2). Αφού ολοκληρώσετε την παραπάνω διαδικασία, ελέγξτε τη λειτουργία της ανοίγοντας μία από τις ενότητες και εκτελώντας το ευρετήριο της. Θα δείτε ότι εμφανίζονται τόσες εγγραφές όσες έχετε ορίσει στο παράθυρο “Select Top”. Μπορείτε επίσης να ελέγξετε τη ορθή λειτουργία και από το εργαλείο του Sql Monitor.

Εικόνα Β1

Εικόνα Β2

Page 99: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Extra Tools

99

Β.2 Χρήση σε Συγκεκριμένο Ευρετήριο Ενότητας Tο εργαλείο “Select Top” επηρεάζει όλα τα σημεία που εμφανίζεται μία ενότητα(Ευρετήρια, Εκτυπώσεις, Selectors). Yπάρχουν όμως σημεία(Ευρετήρια ή Εκτυπώσεις), που κάποιες φορές θέλουμε να εμφανίζονται όλες οι εγγραφές της Ενότητας. Για την πραγματοποίηση των παραπάνω, πρέπει να εισάγουμε στο Ευρετήριο ή στην Εκτύπωση ένα τοπικό πεδίο, το οποίο θα εμφανίζεται ως φίλτρο και θα δίνει τη δυνατότητα στο χρήστη να επιλέξει αν θα εμφανιστούν ή όχι όλες οι εγγραφές. Το τοπικό πεδίο πρέπει να έχει ως όνομα κλήσης την εντολή SELECTTOP, στη Λειτουργία να έχει «Ερώτηση» και στο Είδος πεδίου «Αριθμός»(Εικόνα B3). Στη συνέχεια πρέπει να γίνει εισαγωγή του στα φίλτρα και κατά το άνοιγμα του ευρετηρίου θα εμφανίζεται όπως στην Εικόνα B4. Για την Εμφάνιση όλων των εγγραφών μίας ενότητας, αφήνουμε κενό το φίλτρο των Max Εγγραφών. Στις Εικόνες Β3 & Β4 απεικονίζεται παράδειγμα σχεδίασης και εμφάνισης του συγκεκριμένου τοπικού πεδίου στα παραστατικά πωλήσεων, ενώ στην Εικόνα B5 εμφανίζεται το sql query, το οποίο εκτελείται όταν στα φίλτρα εισάγουμε τον αριθμό 200(Eμφάνιση των 200 πρώτων εγγραφών της ενότητας των παραστατικών πωλήσεων). Σημείωση

: Η σχεδίαση ευρετηρίων ή εκτυπώσεων με την κλήση “SELECTTOP” μπορεί να χρησιμοποιηθεί χωρίς απαραίτητα τη χρήση του εργαλείου “Select Top”, που αναλύθηκε στην Ενότητα Β.1.

Εικόνα Β3

Εικόνα Β4

Εικόνα Β5

Page 100: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Extra Tools

100

C. Σχεδίαση Μενού – Menu Jobs Η εφαρμογή σας δίνει τη δυνατότητα να διαμορφώσετε το μενού δημιουργώντας εργασίες, οι οποίες ανοίγουν Ενότητες(Παραστατικά Πωλήσεων, Πελάτες, Είδη) σε συγκεκριμένα ευρετήρια, προβολές, photo κτλ. Οι συγκεκριμένες εργασίες σας διευκολύνουν στη δημιουργία μενού ομάδων ή χρηστών. Κάθε ομάδα ή χρήστης μπορεί να οριστεί έτσι ώστε να ανοίγει ενότητες σε συγκεκριμένα ευρετήρια και προβολές. Υπάρχει επίσης η δυνατότητα δημιουργίας εργασίας με κλείδωμα της Γραμμής Εργαλείων(αποκρύπτει τα βελάκια επιλογής ευρετηρίων, προβολών και photos).

C.1 Δημιουργία Εργασίας Ο πιο εύκολος τρόπος δημιουργίας εργασίας με συγκεκριμένο ευρετήριο και προβολή είναι να ανοίξετε πρώτα την ενότητα στο ευρετήριο και την προβολή που θέλετε και στη συνέχεια με drag n drop από το Tab της ενότητας, να τη σύρετε στο αριστερό panel του μενού. Εναλλακτικά, για να δημιουργήσετε μία εργασία :

• Κάντε δεξί κλικ στο μενού και επιλέξτε «Νέα Εργασία»(Εικόνα C1). • Στον Τύπο Εργασίας επιλέξτε «Επεξεργασία Αρχείου» για objects της εφαρμογής. • Στο Αρχείο πληκτρολογήστε το όνομα του object(πχ ITEM) • Αν θέλετε να καλέσετε πίνακα στη μνήμη τότε επιλέξτε ως τύπο εργασίας την «Επεξεργασία Πίνακα» και

στο πλαίσιο Αρχείο εισάγετε το σύμβολο $ και στη συνέχεια το όνομα του πίνακα (πχ $DISTRICT). Σημείωση

: Αν θέλετε, κατά την είσοδο στην εφαρμογή, να ανοίγει αυτόματα η συγκεκριμένη εργασία τότε επιλέξτε από την καρτέλα Ιδιότητες την αντίστοιχη λειτουργία. (Εικόνα C2)

Εικόνα C1

Εικόνα C2

Page 101: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Extra Tools

101

C.2 Τύποι Εργασίας Στις Ιδιότητες Εργασίας, ο Τύπος Εργασίας έχει τις εξής επιλογές(Εικόνα C3):

• Επεξεργασία Αρχείου: Χρησιμοποιείται για Κλήση Object της Εφαρμογής, πχ SALDOC • Επεξεργασία Πίνακα: Χρησιμοποιείται για Κλήση Πίνακα στη Μνήμη, πχ $DISTRICT

(Οι πίνακες στη μνήμη δεν έχουν ευρετήρια, προβολές και photo) • Εκτύπωση: Χρησιμοποιείται για Κλήση Εκτύπωσης της Εφαρμογής

πχ REPORTGEN [LIST=MYREPORT] : ανοίγει τη Σχεδιαζόμενη Εκτύπωση με όνομα MYREPORT • Batch Job: Χρησιμοποιείται για Κλήση Softone Script

πχ FORMIMPORT,SCRIPTNAME:MYSCRIPT : ανοίγει το import script με όνομα myscript • Web Σελίδα: Χρησιμοποιείται για άνοιγμα Ιστοσελίδας • Λοιπά Αρχεία: Χρησιμοποιείται για άνοιγμα οποιουδήποτε αρχείου του υπολογιστή • Κατάλογος Αρχείων: Χρησιμοποιείται για άνοιγμα φακέλου του υπολογιστή • Εργαλεία Συστήματος: Χρησιμοποιείται για κλήση Softone Εργαλείων

πχ ACMD:ACSELECTTOP : ανοίγει το εργαλείο SELECTTOP • Qlik View: Χρησιμοποιείται για άνοιγμα αρχείου Qlik View • Dll Form: Χρησιμοποιείται για Κλήση συγκεκριμένη φόρμας dll αρχείου

πχ .Mydll.dll;MyMainForm (Ανοίγει τη φόρμα MyMainForm από το αρχείο Mydll.dll του φακέλου της εφαρμογής)

Εικόνα C3

Page 102: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Extra Tools

102

C.3 Παράμετροι Εργασιών Μενού – Menu Commands Ο παρακάτω πίνακας απεικονίζει τα commands που μπορούν να χρησιμοποιηθούν για να εμφανίσουν συγκεκριμένες Προβολές, Ευρετήρια και Ιδιότητες των Objects της εφαρμογής, με κλήση από το μενού:

Menu Commands Εντολή Λειτουργία

FORM = FormName Άνοιγμα Προβολής με όνομα FormName

LIST = ListName Άνοιγμα Ευρετηρίου με όνομα ListName

CUSTOM = 0 Κλείδωμα Toolbar συγκεκριμένου object

RELJOBS = 0 Απόκρυψη Σχετικών Εργασιών συγκεκριμένου object

AUTOEXEC = 1 Άνοιγμα Ευρετηρίου με χρήση των προεπιλεγμένων φίλτρων

AUTOEXEC = 2 Άνοιγμα object σε νέα εγγραφή

NOTOOLBAR = 1 Απόκρυψη Toolbar συγκεκριμένου object

STYLE : MODELESS Άνοιγμα Object σε νέο Tab (όχι Modal)

PHOTO = MyPhoto Άνοιγμα Object σε νέα εγγραφή με συγκεκριμένο prototype

BROWSERONLY = 1 Άνοιγμα Object με χρήση μόνο του Ευρετηρίου

FORCEFILTERS = filedname1:fieldvalue1; filedname2:fieldvalue2;

Άνοιγμα Ευρετηρίου με συγκεκριμένα φίλτρα Παράδειγμα : CUSTOMER[LIST=MyList,AUTOEXEC=1,FORCEFILTERS=CODE=000-00*?DISTRICT=Αθηνα]

FORCEVALUES = filedname1:fieldvalue1; filedname2:fieldvalue2;

Άνοιγμα προβολής σε νέα εγγραφή με συγκεκριμένες τιμές Παράδειγμα : CUSTOMER[AUTOEXEC=2,FORCEVALUES=TRDCATEGORY=3000?TRDBUSINESS=1]

Page 103: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 7 – Extra Tools

103

C.4 Παραδείγματα Εργασιών Μενού Παραδείγματα χρήσης extra commands σε εκτέλεση εργασιών του μενού μπορείτε να δείτε παρακάτω.

Άνοιγμα Συγκεκριμένου Ευρετηρίου Άνοιγμα συγκεκριμένης προβολής

Κλείδωμα ToolBar Χρήση Photo

Άνοιγμα συγκεκριμένης προβολής σε νέα εγγραφή με κλείδωμα Toolbar

Εμφάνιση της λίστας συγκεκριμένου ευρετηρίου με κλείδωμα Toolbar

Εμφάνιση λίστας ευρετηρίου με απόκρυψη της

Toolbar Άνοιγμα σε νέα εγγραφή χωρίς τις «Σχετικές

Εργασίες»

Άνοιγμα object με λειτουργία μόνο του ευρετηρίου (Κλείδωμα υπόλοιπων buttons)

Page 104: Customizing Softone - The Black Book Ver.2012a

104

ΚΕΦΑΛΑΙΟ 8 Χρονοπρογραμματισμός Εργασιών

A. Remote Server A.1 Γενικές Λειτουργίες A.2 Εντολές Remote Server A.3 Αποστολή SMS – Email

B. Εκτέλεση Εργασίας Soft1 από Windows Scheduler B.1 Δημιουργία Αρχείου Soft1 Scheduler B.2 Εισαγωγή Windows Scheduler Task B.3 Παραμετροποίηση Αρχείου Σύνδεσης XCO

C. Scheduler C.1 Δημιουργία Εργασίας C.2 Εντολές Scheduler

D. Μηνύματα – Υπενθυμίσεις

Page 105: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 8 – Χρονοπρογραμματισμός Εργασιών

105

A. Remote Server Ο Remote Server είναι ένας εξυπηρετητής εντολών που αφορούν εργασίες του προγράμματος (Batch, Reports , κτλ). Οι εντολές αυτές μπορούν να προέρχονται από διάφορες συσκευές, οι οποίες είναι:

• Κινητά τηλέφωνα • Ε-mails • TCP/IP port (future) • Εσωτερικό σύστημα μηνυμάτων (future) • Πίνακες του προγράμματος

Με τη χρήση εντολών είναι δυνατόν: • Να εκτελεστεί μια εκτύπωση και να εξαχθεί το αποτέλεσμα σε οποιαδήποτε υποστηριζόμενο format ή να

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

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

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

Σημείωση

: Η χρήση του Remote Server καταλαμβάνει θέση εργασίας στο Softone δηλαδή μια άδεια χρήσης θα χρησιμοποιείται αποκλειστικά για την εκτέλεση των παραπάνω εργασιών.

Εικόνα A1

Page 106: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 8 – Χρονοπρογραμματισμός Εργασιών

106

A.1 Ενεργοποίηση Για την ενεργοποίηση του Remote Server επιλέγετε από το menu Εργαλεία Remote Server Εκτέλεση Από το button “Add device” επιλέγετε Database για να ενεργοποιήσετε τη χρήση του Remote Server στην τρέχουσα Βάση. Στην επιλογή Database ενεργοποιήστε την παράμετρο Αυτόματη ενεργοποίηση και κατόπιν πιέστε Ενεργοποίηση (Εικόνα A2). Αφού συμπληρώσετε όλες τις απαιτούμενες ρυθμίσεις επιλέξτε Save config για να αποθηκευτούν(Εικόνα A3). Αν θέλετε να χρησιμοποιήσετε τον Remote Server για χρήση με κινητό τηλέφωνο ή email, τότε από το button “Add Device” πρέπει να ενεργοποιήσετε τις αντίστοιχες λειτουργίες.

Εικόνα A2

Εικόνα A3

Page 107: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 8 – Χρονοπρογραμματισμός Εργασιών

107

A.2 Εντολές Remote Server Όλες οι εντολές που μπορούν να χρησιμοποιηθούν κατά την εκτέλεση καθορισμένων εντολών μέσα από το μενού του Remote Server, εμφανίζονται στον παρακάτω πίνακα.

Remote Server Commands Εντολή Παράμετροι Λειτουργία

TYPE REPORT, BATCH, DIALOG, DESIGN, ANSWER, REPORTLIST, BATCHLIST, PRINTERLIST, COMPANYLIST, BRANCHLIST

Τύπος Εργασίας

OBJECT Επιλογής Ενότητας(πχ. CUSTOMER)

JOBNAME Όνομα σχεδιαζόμενου Ευρετηρίου ή Εκτύπωσης

PHOTO Εκτέλεση photo του Object

AUTOEXECUTE 0,1 Αυτόματη Εκτέλεση Εργασίας

OUTPUT 928, 437, EXCEL, WORD, METAFILE, PDF File, PrinterName

Αποστολή Αποτελεσμάτων Εργασίας σε συγκεκριμένο Αρχείο ή εκτυπωτή

FILENAME Όνομα Αρχείου Αποθήκευσης Αποτελεσμάτων

SENDTO MAIL, GSM Αποστολή Αποτελεσμάτων σε Email ή Κινητό Τηλέφωνο

MAILADDR Διεύθυνση Email

GSMNUM Νούμερο Κινητού Τηλεφώνου

Page 108: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 8 – Χρονοπρογραμματισμός Εργασιών

108

A.3 Αποστολή SMS – Email Βασική προϋπόθεση για την αποστολή μηνυμάτων με χρήση κινητού τηλεφώνου μέσα από την εφαρμογή, είναι η αναγνώριση του κινητού μέσα από τα Windows(drivers) καθώς και η ενεργοποίησή του μέσα από το Remote Server. Στον Remote Server, δηλώνετε την Com port που είναι συνδεδεμένο το κινητό μέσα στο πλαίσιο “Gsm Port”. Στο πλαίσιο Number πληκτρολογείτε τον Αριθμό του συνδεδεμένου τηλεφώνου απ’ όπου θα στέλνονται τα SMS. Τέλος, ενεργοποιείτε την παράμετρο Αυτόματη ενεργοποίηση, και πιέζετε Ενεργοποίηση (Εικόνα Α4). Στο παρακάτω παράδειγμα θα χρησιμοποιήσουμε την ενότητα των πελατών, για να στείλουμε μήνυμα σε έναν πελάτη. Επιλέξτε έναν ή περισσότερους πελάτες από το ευρετήριο πελατών και στη συνέχεια με δεξί κλικ ενεργοποιήστε την επιλογή «Αποστολή SMS»(Εικόνα Α5). Στο παράθυρο που εμφανίζεται επιλέξτε το button «Πεδία» και σύρατε το πεδίο Τηλ.1 από τους πελάτες στο πεδίο Παραλήπτης ή γράψτε απευθείας τον αριθμό εάν θέλετε να στείλετε μήνυμα σε ένα συγκεκριμένο αριθμό τηλεφώνου. Στο πλαίσιο του μηνύματος πληκτρολογείτε το μήνυμα που θα αποσταλεί. Μπορείτε, όμως να χρησιμοποιήσετε και να σύρετε μέσα κάποιο από τα διαθέσιμα πεδία. Τέλος, για την αποστολή του μηνύματος επιλέξτε «Αποστολή». Υπάρχει η δυνατότητα εμφάνισης των μηνυμάτων και των εργασιών που βρίσκονται υπό εκτέλεση ή έχουν εκτελεστεί ήδη μέσα από το μενού «Remote Server Προγραμματισμένες εντολές»(Εικόνα Α7). Έχετε, επίσης την επιλογή να θέσετε και χρονικό προσδιορισμό σε κάποιο μήνυμα ή εργασία(Εικόνα Α8). Ο Remote Server εκτελεί και τις εργασίες που έχετε δημιουργήσει μέσα σε Alerts και έχουν ως τύπο την αποστολή σε email ή κινητό χρήστη. Η διαδικασία είναι πολύ απλή, αφού απαιτείται μόνο η ενεργοποίηση των αντίστοιχων συσκευών μέσα από τον Remote Server, καθώς και η δημιουργία Alert με τύπο email ή κινητό.

Εικόνα A4

Εικόνα A5

Page 109: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 8 – Χρονοπρογραμματισμός Εργασιών

109

Εικόνα A6

Εικόνα A7

Εικόνα A8

Page 110: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 8 – Χρονοπρογραμματισμός Εργασιών

110

B. Εκτέλεση Soft1 Εργασίας από Windows Scheduler Οι εργασίες που δημιουργούνται μέσα στον Scheduler του Softone μπορούν να εκτελεστούν απευθείας και από τον Windows Scheduler. Το μόνο που χρειάζεται είναι η δημιουργία ενός αρχείου Notepad, το οποίο θα περιλαμβάνει Soft1τις εντολές του Softone Scheduler, μίας εργασίας στον Windows Scheduler και παραμετροποίηση του αρχείου XCO, έτσι ώστε να εκτελείται με AutoLogin. Κάθε ενέργεια που εκτελείται με τον παραπάνω μηχανισμό, καθώς και τα λάθη, αλλά και η επιτυχής έκβαση, καταγράφεται σε αρχείο log με όνομα XECUTOR.LOG το οποίο δημιουργείται στο φάκελο C:\Documents and Settings\All Users\Application Data\SoftOne\Log Βασική προϋπόθεση για να λειτουργήσει το Windows Scheduler είναι να μην είναι ενεργοποιημένη επιλογή Scheduler από τις Ρυθμίσεις του Softone (Εικόνα B1).

Εικόνα B1

B.1 Δημιουργία Αρχείου Soft1 Scheduler Δημιουργείτε ένα αρχείο Notepad και αντιγράφετε τις εντολές του Softone Scheduler καθώς και το όνομα του αρχείου XCO(Εικόνα B2). Αποθηκευετε το αρχείο με οποιοδήποτε όνομα (πχ Entoles.txt) μέσα στο φάκελο της εφαρμογής.

• JOBNAME Το όνομα της εργασίας (μπορεί να είναι οποιοδήποτε όνομα) • TYPE=BATCH Τύπος Εργασίας. • OBJECT Tο path του import script • XCOFILENAME Tο όνομα του xco (του αρχείου σύνδεσης με τη βάση)

Εικόνα B2

Page 111: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 8 – Χρονοπρογραμματισμός Εργασιών

111

B.2 Εισαγωγή Windows Scheduler Task Για την εισαγωγή προγραμματισμένης εργασίας στα Windows ακολουθείτε τα παρακάτω βήματα:

B.2.1 Windows XP • Ανοίγετε τον Windows Scheduler: Control panel Scheduled task • Εισάγετε μία νέα Εργασία (Task) στο Windows Scheduler (Add Scheduled Task) (Εικόνα B3) • Από το Browse βρίσκετε το φάκελο της εφαρμογής και στη συνέχεια το αρχείο Xplorer.exe (Εικόνα B4) • Επιλέγετε όνομα για την εργασία καθώς και τα διαστήματα εκτέλεσης (Εικόνα B5). • Στο παράθυρο που ακολουθεί πληκτρολογείτε τα στοιχεία του χρήστη του υπολογιστή(Εικόνα B6). • Στο τελευταίο παράθυρο επιλέγετε το check έτσι ώστε να ανοίξουν οι advanced ρυθμίσεις(Εικόνα B7) • Πατώντας το finish εμφανίζεται το παράθυρο της Εικόνας B8. Στο πλαίσιο Run εισάγετε μετά τη διαδρομή

του αρχείου Xplorer.exe, την εντολή /EXECUTE:C:\TEST\ENTOLES.TXT

Εικόνα B3

Εικόνα B4

Εικόνα B5 Εικόνα B6

Page 112: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 8 – Χρονοπρογραμματισμός Εργασιών

112

Εικόνα B7 Εικόνα B8

B.2.2 Windows 7 • Ανοίγετε τον Windows Scheduler: Control panel Administrative Tools Task Scheduler(Εικόνα Β9) • Δημιουργείτε μία νέα εργασία είτε με δεξί κλικ είτε από το pane Actions Create Basic Task.. (Εικόνα Β10) • Επιλέγετε όνομα και περιγραφή για την εργασία(Εικόνα B11). • Στο παράθυρο που ακολουθεί επιλέγετε τα διαστήματα εκτέλεσης (Εικόνα B12). • Στο επόμενο παράθυρο επιλέγετε εκτέλεση εφαρμογής (Εικόνα Β13) • Από το Browse βρίσκετε το φάκελο της εφαρμογής και στη συνέχεια το αρχείο Xplorer.exe (Εικόνα B14) • Στο ίδιο παράθυρο εισάγετε την εντολή /EXECUTE:C:\TEST\ENTOLES.TXT για να εκτελεστεί το

συγκεκριμένο αρχείο κατά το άνοιγμα της εφαρμογής (Εικόνα B13) • Το τελευταίο παράθυρο εμφανίζει περιληπτικά τις ενέργειες που θα εκτελεστούν στο Task.

Εικόνα B9 Εικόνα B10

Page 113: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 8 – Χρονοπρογραμματισμός Εργασιών

113

Εικόνα B11

Εικόνα B12 Εικόνα B13

Εικόνα B14 Εικόνα B15

Page 114: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 8 – Χρονοπρογραμματισμός Εργασιών

114

B.3 Παραμετροποίηση Αρχείου Σύνδεσης XCO Το αρχείο σύνδεσης XCO πρέπει υποχρεωτικά να βρίσκεται μέσα στο φάκελο της εφαρμογής. Στο συγκεκριμένο αρχείο πρέπει να εισάγετε τις παρακάτω εντολές(Εικόνα B16), οι οποίες χρειάζονται για να γίνεται αυτόματο Login σε συγκεκριμένη βάση με συγκεκριμένο χρήστη, εταιρία και υποκατάστημα κατά την εκτέλεση του από τον Windows Scheduler (Ενότητα A.2 - Auto Login από Windows Shortcut). Η επεξεργασία του αρχείου XCO γίνεται με χρήση του Notepad των Windows.

Εικόνα B16

Page 115: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 8 – Χρονοπρογραμματισμός Εργασιών

115

C. Scheduler Το εργαλείο Scheduler βοηθάει στον προγραμματισμό εργασιών(Ευρετήρια, Εκτυπώσεις κτλ.), οι οποίες θα εκτελούνται σε συγκεκριμένη ώρα και μέρα, από συγκεκριμένο χρήστη και μπορούν να επαναλαμβάνονται σε συγκεκριμένο χρονικό διάστημα. Για την εκτέλεση του Scheduler επιλέγετε, από το διακριτικό σήμα της Softone, το μενού Εργαλεία και στη συνέχεια το ομώνυμο εργαλείο(Εικόνα C1). Κατά την εκτέλεση του Scheduler, εμφανίζεται το ευρετήριο με όλες τις προγραμματισμένες εργασίες(Εικόνα C2).

Εικόνα C1

Εικόνα C2

Page 116: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 8 – Χρονοπρογραμματισμός Εργασιών

116

C.1 Δημιουργία Εργασίας Η δημιουργία νέας εργασίας εμφανίζει το παράθυρο της Εικόνας C3, το οποίο έχει όλες τις διαθέσιμες επιλογές :

• Ημερομηνία Εισαγωγής•

: Συμπληρώνεται αυτόματα με την τρέχουσα ημερομηνία. Χρήστης Εισαγωγής

• : Συμπληρώνεται αυτόματα με τον Login User.

Χρήστης Εκτέλεσης•

: Δηλώνεται ο χρήστης που θα εκτελεί την εργασία. Χρονικός προσδιορισμός

• : Επιλογή χρόνου εκτέλεσης και επανάληψης της εργασίας (Εικόνα C4).

Επανεκκίνηση(Λεπτά)•

: Χρόνος επανεκτέλεσης εργασίας. Αυτόματη Εκτέλεση

• : «Ναι» Εμφάνιση και εκτέλεση εργασίας, «Όχι» Εμφάνιση Εργασίας.

Ημερ. Τελ. Εκτέλεσης•

: Εμφάνιση της τελευταίας ημερομηνίας εκτέλεσης της εργασίας. Επόμενη Εκτέλεση

• : Εμφάνιση της ημερομηνία επόμενης εκτέλεσης της εργασίας.

Εκτελεσμένο

: «Ναι» Αν έχει ήδη εκτελεστεί η εργασία, «Όχι» Αν η εργασία δεν έχει εκτελεστεί ή αν η εργασία έχει προγραμματιστεί να εκτελείται ανά τακτά χρονικά διαστήματα. Επιλογή Εκτύπωσης

• : Εμφανίζει τα ευρετήρια, τις σχεδιαζόμενες και ελεύθερες εκτυπώσεις(Εικόνα C5).

Επιλογή ΕργασίαςΣτην Εικόνα Α3 βλέπετε ένα παράδειγμα δημιουργία εργασίας με επιλογής της εκτύπωσης «Καρτέλα με Ανάλυση Ειδών» από τις Εκτυπώσεις των Πελατών.

: Εμφανίζει όλες τις διαθέσιμες εργασίες της εφαρμογής(Εικόνα C6).

Σημείωση: Κατά την επιλογή νέας εργασίας το SoftOne προτείνει αυτόματα κάποιες ιδιότητες του object. Αν δεν θέλετε να τις χρησιμοποιήσετε πρέπει υποχρεωτικά να τις σβήσετε(πχ. αν δεν έχετε συγκεκριμένο prototype(photo), δεν πρέπει να αφήσετε την ιδιότητα PHOTO={κενό} αλλά να σβήσετε εντελώς τη συγκεκριμένη γραμμή).

Εικόνα C3

Εικόνα C4

Page 117: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 8 – Χρονοπρογραμματισμός Εργασιών

117

Εικόνα C5 Εικόνα C6

C.2 Εντολές Scheduler Υπάρχει η δυνατότητα χρήσης extra εντολών κατά τη δημιουργία εργασίας στον Scheduler. Όλες οι εντολές που μπορούν να χρησιμοποιηθούν εμφανίζονται στον παρακάτω πίνακα, ο οποίος είναι όμοιος με τον πίνακα εντολών του Remote Server.

Scheduler Commands Εντολή Παράμετροι Λειτουργία

TYPE

REPORT, BATCH, DIALOG, DESIGN, ANSWER, REPORTLIST, BATCHLIST, PRINTERLIST, COMPANYLIST, BRANCHLIST

Τύπος Εργασίας

OBJECT Επιλογής Ενότητας(πχ. CUSTOMER)

JOBNAME Όνομα σχεδιαζόμενου Ευρετηρίου ή Εκτύπωσης

PHOTO Εκτέλεση photo του Object

AUTOEXECUTE 0,1 Αυτόματη Εκτέλεση Εργασίας

OUTPUT 928, 437, EXCEL, WORD, METAFILE, PDF File, PrinterName

Αποστολή Αποτελεσμάτων Εργασίας σε συγκεκριμένο Αρχείο ή εκτυπωτή

FILENAME Όνομα Αρχείου Αποθήκευσης Αποτελεσμάτων

SENDTO MAIL, GSM Αποστολή Αποτελεσμάτων σε Email ή Κινητό Τηλέφωνο

MAILADDR Διεύθυνση Email

GSMNUM Νούμερο Κινητού Τηλεφώνου

Page 118: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 8 – Χρονοπρογραμματισμός Εργασιών

118

D. Μηνύματα – Υπενθυμίσεις To συγκεκριμένο εργαλείο χρησιμοποιείται για τη δημιουργία μηνυμάτων, τα οποία λειτουργούν ως υπενθυμίσεις μεταξύ των χρηστών της εφαρμογής. Το περιβάλλον εργασίας είναι παρόμοιο με του Scheduler. Η δημιουργία νέου μηνύματος γίνεται μέσω του μενού «Περιοδικές Εργασίες – Μηνύματα - Υπενθυμίσεις». Στην Εικόνα D1 βλέπετε ένα παράδειγμα δημιουργίας ενός νέου μηνύματος, το οποίο θα εμφανίζεται σε συγκεκριμένες ημερομηνίες (βάσει πλαισίου χρονοπρογραμματισμού), στο χρήστη test1. Από το button δίπλα στο πλαίσιο χρονοπρογραμματισμός μπορείτε να ορίσετε το χρόνο επανάληψης του συγκεκριμένου μηνύματος (Εικόνα D2).

Εικόνα D1

Εικόνα D2

Page 119: Customizing Softone - The Black Book Ver.2012a

119

ΚΕΦΑΛΑΙΟ 9 Scripts Οθονών - Javascript

A. Object A.1 Methods A.2 Functions

B. Dataset B.1 Methods B.2 Functions

C. Events C.1 Field Events C.2 Dataset Events C.3 Object Events C.4 Sub Form Events C.5 Line Printing Events

D. Case Studies Case Study 1 Case Study 2 Case Study 3 Case Study 4 Case Study 5 Case Study 6

Page 120: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

120

A. Object Στη συγκεκριμένη ενότητα θα βρείτε μεθόδους και συναρτήσεις που αφορούν στο σύνολο των Objects

A.1 Methods

BATCHEXECUTE Εκτελεί το Batch Object Βλ. Case Study 4

BEEP Ηχητικό μήνυμα υπολογιστή

CANCELEDITS Ακυρώνει όλες τις αλλαγές που έχουν γίνει στα δεδομένα ενός Object (Ακύρωση Εγγραφής). Πρέπει να εκτελείται στο before DBPost.

CLOSEFORM

Παράδειγμα Απαγόρευση – ακύρωση αλλαγών για συγκεκριμένο χρήστη κατά την αποθήκευση εγγραφής. function ON_POST() { if(X.USER == 901) X.CANCELEDITS; X.WARNING('ALL CHANGES WERE CANCELLED!!! '); }

Κλείνει το Object.

CLOSEAPPLICATION

Παράδειγμα X.CLOSEFORM();

Κλείνει την εφαργμογή.

DBDELETE

Παράδειγμα X.CLOSEAPPLICATION();

Διαγράφει από τη βάση τα δεδομένα ενός Object, εφαρμόζοντας όλες τις μεθόδους του SoftOne

Βλ. Παράδειγμα

Case Study 2

DBLOCATE(KeyData: variant) Locate σε συγκεκριμένο Object με κλειδί “KeyData”.

Βλ. Παράδειγμα

Case Study 2

DBINSERT Μεταβάλλει την κατάσταση του Object σε insert mode για να δεχτεί δεδομένα.

Βλ. Παράδειγμα

Case Study 4

DBPOST Καταχωρεί στη βάση τα δεδομένα του Object, εφαρμόζοντας όλες τις μεθόδους του SoftOne.

Page 121: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

121

EXCEPTION (Message: string) Εμφανίζει μήνυμα απαγόρευσης

FIELDCOLOR (FieldName: string, UserColor: integer)

Example X.EXCEPTION('Δεν επιτρέπονται οι αλλαγές. Η εργασία ακυρώθηκε!!!');

Θέτει το χρώμα “UserColor” στο πεδίο FieldName

FOCUSFIELD (FieldName: string)

Παράδειγμα function ON_CUSTOMER_COUNTRY() {

if(CUSTOMER.COUNTRY == 999) X.FIELDCOLOR('CUSTOMER.COUNTRY',15000); else X.FIELDCOLOR('CUSTOMER.COUNTRY',255);

}

Θέτει το Focus στο πεδίο FieldName

Στα παραστατικά πωλήσεων αλλαγή του focus ανάλογα με την επιλεγμένη σειρά function ON_ITELINES_NEW() { if( (SALDOC.SERIES == 7003) || (SALDOC.SERIES == 7023) ) X.FOCUSFIELD('ITELINES.SRCHCODE'); else X.FOCUSFIELD('ITELINES.X_CODE'); }

Παράδειγμα

FREE Απελευθερώνει τη μνήμη από το object.

1) Βλ. Παραδείγματα

Case Study 1 2) Βλ. Case Study 2 3) Βλ. Case Study 4

INVALIDATEFIELD () Επανασχεδιάζει(repaint) το συγκεκριμένο πεδίο στην οθόνη. Χρησιμοποιείται συνήθως μαζί με την εντολή REFRESH(ανανέωση εγγραφών) για να εμφανιστούν σωστά τα δεδομένα ενός πεδίου αναζήτησης από πίνακα, στο οποίο έχει αλλάξει η τιμή.

INCLUDE (filename)

Παράδειγμα Ενημέρωση συγκεκριμένης εγγραφής του πίνακα MTRMANFCTR μέσα από προβολή του αρχείου ειδών και ανανέωση των τιμών στο αντίστοιχο πεδίο των ειδών. function ON_ITEM_NAME() {

X.RUNSQL('UPDATE MTRMANFCTR SET ISACTIVE=0 where COMPANY=1 AND MTRMANFCTR=1', null); X.MTRMANFCTR.REFRESH; X.INVALIDATEFIELD('ITEM.MTRMANFCTR');

}

Κάνει include τη βιβλιοθήκη (script) που είναι στο αρχείο με όνομα filename .

OPENSUBFORM (SubFormName: string) Ανοίγει τη Sub form με όνομα SubFormName Παράδειγμα Άνοιγμα της sub form Vat Analysis με κλικ σε συγκεκριμένο button στα παραστατικά πωλήσεων function EXECCOMMAND(cmd) {

if (cmd == 100001) {

X.OPENSUBFORM('SFVAT'); }

}

Page 122: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

122

QUICKVIEW (ObjectName: string, List: string, Keydata: string) Ανοίγει το Quickview για το ευρετήριο με όνομα List του οbject με όνομα ObjectName και κλειδί εγγραφής Keydata Επίσης υπάρχει δυνατότητα εμφάνισης σε quickview της εικόνας των ειδών.

PRINTFORM (FormCode: integer, PrinterName: string, FileName: string)

Παραδείγματα 1) Εμφάνιση του Quick View με όνομα BROWSER1 (που υπάρχει ως ευρετήριο στους πελάτες) με κλικ σε συγκεκριμένο button στα παραστατικά πωλήσεων function EXECCOMMAND(cmd) {

if (cmd == 100001) X.QUICKVIEW('CUSTOMER','BROWSER1','SALDOC.TRDR'); } 2) Εκτέλεση Quick View που εμφανίζει την εικόνα των ειδών της επιλεγμένης γραμμής με κλικ σε συγκεκριμένο button στα παραστατικά πωλήσεων function EXECCOMMAND(cmd) {

if (cmd == 100002) X.QUICKVIEW('ITEM','','ITELINES.MTRL');

}

Εκτυπώνει τη φόρμα εκτύπωσης με κωδικό “FormCode” στον εκτυπωτή “PrinterName”. Αν το μέσο εκτύπωσης είναι αρχείο, τότε δηλώνουμε και το “FileName”. FormCode: Κωδικός Φόρμας Εκτύπωσης PrinterName: Όνομα Printer ή Τύπος Αρχείου. Tιμές: a) ASCII, b) 928, c) 437, d) WORD, e) EXCEL, f) PDF FILE FileName: Διαδρομή Αρχείου, όταν το “PrinterName” είναι ASCII, Word, Excel, κτλ.

Βλ. Παράδειγμα

Case Study 1

REFRESH () Ανανεώνει τα δεδομένα ενός memory table.

RUNSQL (ASQL: string, AParams: Variant)

Παράδειγμα Ενημέρωση συγκεκριμένης εγγραφής του πίνακα MTRMANFCTR μέσα από προβολή του αρχείου ειδών και ανανέωση των τιμών στο αντίστοιχο πεδίο των ειδών. function ON_ITEM_NAME() {

X.RUNSQL('UPDATE MTRMANFCTR SET ISACTIVE=0 where COMPANY=1 AND MTRMANFCTR=1', null); X.MTRMANFCTR.REFRESH; X.INVALIDATEFIELD('ITEM.MTRMANFCTR');

}

Εκτελεί το ASQL query. ASQL : SQL Query AParams : Παράμετροι ASQL (:1,:2, κτλ)

SETDECIMALS (FieldName: string, Decimals: integer)

Παράδειγμα Ενημέρωση πεδίου custom πίνακα με συγκεκριμένη τιμή X.RUNSQL('UPDATE CCCMYTABLE SET CCCMYFIELD=1 WHERE COMPANY='+X.SYS.COMPANY)

Θέτει τον αριθμό των δεκαδικών ψηφίων στο πεδίο “FieldName”

SETDOCPRINT (PrintNum, Mode, TemplD: integer, PrinterName, Caption: string) Εκτυπώνει συγκεκριμένο αριθμό αντιγράφων για τη φόρμα TempID. Πρέπει να χρησιμοποιείεται μέσα στο Event ON_DOCPRINT PrintNum: Αριθμός αντιγράφων Mode: Μέθοδος (1=Αυτόματα, 2=Με ερώτηση) TemplD: Κωδικός Φόρμας Printer Name: Όνομα Εκτυπωτή Caption: Τίτλος παραθύρου

Page 123: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

123

SETFIELDVALUE (FieldName: string, Value: Variant) Θέτει την τιμή Value στο πεδίο FieldName

SETPROPERTY ('MERCHANGELOG', 'True or False') Συγχωνεύει τις αλλαγές σε πραγματικά στοιχεία για το σύνολο των δεδομένων. Υπάρχουσες τιμές που έχουν αλλαγές θα αντικατασταθούν.

SETPROPERTY ('FIELD', FieldName', 'CAPTION', 'NewCaption')

Παράδειγμα X.SETPROPERTY('MERGECHANGELOG', 'True');

Αλλάζει τον τίτλο του πεδίου FieldName

SETPROPERTY ('FIELD / PANEL / PAGE', Name', 'VISIBLE', 'True or False')

Παράδειγμα X.SETPROPERTY('FIELD','SALDOC.TRDR','CAPTION','Cust');.

Αλλάζει το property visible πεδίου, περιοχής ή σελίδας

1) X.SETPROPERTY('FIELD','SALDOC.TRDR','VISIBLE','FALSE'); Παραδείγματα

2) X.SETPROPERTY('PANEL','PANEL14','VISIBLE','TRUE'); 3) X.SETPROPERTY('PAGE','MYPAGE','VISIBLE','TRUE');

SETFIELDEDITOR (FieldName: string, Editor: String) Αλλάζει τον Editor ενός πεδίου που αναφέρεται σε πίνακα στη μνήμη

TOFILE (FileName, AMessage: string)

Παράδειγμα Αλλαγή του editor του πεδίου MTRDOC.WHOUSE σε παραστατικά πωλήσεων βάσει επιλεγμένης σειράς function ON_SALDOC_SERIES() { if( (SALDOC.SERIES == 7001) || (SALDOC.SERIES == 7002) ) X.SETFIELDEDITOR('MTRDOC.WHOUSE','WHOUSE(F[WHOUSE=1001])'); else X.SETFIELDEDITOR('MTRDOC.WHOUSE','WHOUSE'); }

Αποθηκεύει το κείμενο “AMessage” στο αρχείο “FileName”. Αν το αρχείο υπάρχει τότε αντικαθίσταται.

WARNING (Message: string) Εμφανίζει ένα ενημερωτικό μήνυμα στην οθόνη του χρήστη. Παράδειγμα X.WARNING('Hello')

Page 124: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

124

A.2 Functions

ASK (ACaption, AMessage: string): integer Εμφανίζει ένα μήνυμα διαλόγου (Yes, No, Cancel) . Επιστρέφει το index του button που πατήθηκε. (6=Yes, 7=No, 2=Cancel) ACaption: Τίτλος του παραθύρου, AMessage: Μήνυμα που εμφανίζεται μέσα στο παράθυρο Παράδειγμα

CASE (IfCase, ThenCase, ElseCase: variant): Variant;

Εμφάνιση ερώτησης για αποθήκευση εγγραφής. function ON_POST() {

var ans; ans = X.ASK('Επιβεβαίωση αποθήκευσης', 'Συνέχεια ? '); // 6=Yes, 7=No, 2=Cancel if ((ans == 7) || (ans == 2)) {

X.EXCEPTION('Η αποθήκευση ακυρώθηκε από το χρήστη'); } else {

X.WARNING('Πατήθηκε Yes'); }

}

Επιστρέφει την έκφραση “ThenCase” όταν η έκφραση “IfCase” είναι αληθές. Σε αντίθετη περίπτωση επιστρέφει την έκφραση “ElseCase”

CHECKMODULE(ModuleNum): Boolean; Ελέγχει αν υπάρχει το Module στην εγκατάσταση

CONNECTIONSTATUS: string; Επιστρέφει τον κωδικό της σύνδεσης. Οι κωδικοί αναλύονται ως εξής : 0 = csStandalone 1 = csClient 2 = csServer 3 = csSleepClient 4 = csOffLine 5 = csSaaS 6 = csESupport

CREATEOBJ (ObjectName: string,ViewName:string): OBJECT (IDispatch) Δημιουργεί το Object “ObjectName” και επιστρέφει το IDispatch interface. Για να δημιουργήσετε το object σε συγκεκριμένη προβολή πρέπει να τη δηλώσετε με την ακόλουθη σύνταξη: CreateObj('ObjectName;View1')

1) Δημιουργία object πωλήσεων στην προβολή «MySales»: SalObj = X.CreateObj('SALDOC;MySales');

Παραδείγματα

2) Βλ. Case Study 1 3) Βλ. Case Study 2 4) Βλ. Case Study 4

DOUBLE (StrNum: string): real Μετατρέπει το StrNum σε πραγματικό αριθμό και επιστρέφει το αποτέλεσμα.

DIR(Name: string): string Επιστρέφει το directory βάσει του Name. Τα διαφορετικά Names αναλύονται παρακάτω: Soft1Data : Επιστρέφει το SoftOne Profile Directory (%AllUsersProfile%\SoftOne) UserData : Επιστρέφει το User Profile Directory (%UserData%\SoftOne) EXE : Επιστρέφει το directory του SoftOne HTML : Επιστρέφει το root directory του Soft1 Web Server SDK : Επιστρέφει το directory των SDK files του SoftOne

Page 125: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

125

FROMFILE(FileName:string): string Διαβάζει και επιστρέφει τα δεδομένα του αρχείου FileName.

USERVALIDATE(UserName:string, Password:string): Boolean Δέχεται τις τιμές UserName και Password και επιστρέφει TRUE αν βρει χρήστη με αντίστοιχα στοιχεία στη βάση.

PASSWORDVALIDATE(StringtoValidate:string, Password:string): Boolean Συγκρίνει το “StringtoValidate”, το οποίο δεν είναι encrypted με το Password που έχει στη βάση ο χρήστης και είναι encypted και επιστρέφει TRUE ή FALSE. Δηλαδή μπορεί να συγκρίνει ένα κείμενο που πληκτρολογεί σε ένα textbox ένας χρήστης με το πεδίο SOPASSWORD του πίνακα USERS που βρίσκεται στη βάση δεδομένων και είναι encrypted.

EVAL (Formula: string): Variant Υπολογίζει τη “Formula” και επιστρέφει το αποτέλεσμα. Χρησιμοποιείται κυρίως για την εκτέλεση των εσωτερικών συναρτήσεων Softone.

1) DateforSQLQuery = X.EVAL('SQLDATE(SALDOC.TRNDATE)') Παραδείγματα

2) EasterDate = X.EVAL('DateToStr(GetPasxaDate('+X.SYS.FISCPRD+'))'); 3) Βλ. Case Study 3

EXEC (Command: string, Params: variant): variant; Εκτελεί το “Command” με συγκεκριμένες παραμέτρους.

1) Όταν το “Command” είναι ακέραιος τότε: a. Εκτελεί εσωτερική εντολή της εφαρμογής. (Οι εντολές είναι ανά module και δίνονται προφορικά) b. Εκτελεί οποιαδήποτε εντολή (πχ. button), που βρίσκεται μέσα στη function EXECCOMMAND(Javascript, VBscript, dll)

2) Όταν το “Command” ξεκινάει με την εντολή “button:” εκτελεί το αντίστοιχο button της toolbar Toolbar Buttons : Browse, View, New, Copy, Save, Cancel, Delete, Prior, Next, Print. Παράδειγμα:

3) Όταν το “Command” ξεκινάει με την εντολή “script:” εκτελείται η script function που ακολουθεί .

Αποθήκευση εγγραφής X.EXEC('button:Save')

Παράδειγμα:4) Όταν το “Command” ξεκινάει με την εντολή “xcmd:” εκτελείται η softone explorer command function που ακολουθεί.

X.EXEC('script:Myfunction')

Παράδειγμα1: Άνοιγμα πελάτη X.EXEC('XCMD:CUSTOMER')

Παράδειγμα2: Άνοιγμα νέου παραστατικού με ανάθεση τιμής πελάτη X.EXEC('XCMD:SALDOC,N["SET FINDOC.TRDR='+CUSTOMER.TRDR+'"]')

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

5) Όταν το “Command” ξεκινάει με την εντολή “code:” εκτελείται η αντίστοιχη application function που ακολουθεί (Τα ονόματα των εντολών είναι ανά module και δίνονται προφορικά).

Εκτέλεση του import script με όνομα myscript. X.EXEC ('XCMD: FormImport, ScriptName: myscript’)

Βλ. Παράδειγμα

Case Study 6

FINDTABLE (TableName: string): variant Επιστρέφει το DataSet (IDispatch interface) του πίνακα “TableName”.

Βλ. Παράδειγμα

Case Study 4

FILTERSUM (FieldName, Filter: string): real Επιστρέφει το άθροισμα των τιμών του πεδίου FieldName από DataSet με εγγραφές που πληρούν το φίλτρο Filter Παράδειγμα function ON_LOCATE() { msg = X.FILTERSUM('ITELINES.QTY1','MTRUNIT=1'); X.WARNING(msg); }

Page 126: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

126

FORM: string Επιστρέφει το όνομα της τρέχουσας προβολής

FORMATFLOAT (Value: float, format: string): string Επιστρέφει την τιμή float Value σε format μορφή αλφαριθμητικού

FORMATDATE (format: string, Date: TDateTime): string Επιστρέφει την ημερομηνία Date σε format μορφή αλφαριθμητικού

GETYEARPERIOD (ADate: TDateTime): Variant

Παράδειγμα Στα παραστατικά πωλήσεων επιστροφή της ημερομηνίας TRNDATE σε sqldate μορφή. str = X.FORMATDATE ('yyyymmdd',SALDOC.TRNDATE)

Επιστρέφει τη χρήση και την περίοδο της ημερομηνίας “Adate”

GETLASTERROR: string Επιστρέφει το τελευταίο μήνυμα λάθους

Βλ. Παράδειγμα

Case Study 1

GETSQLDATASET (ASQL: string, AParams: Variant): TDataSet Επιστρέφει το the DataSet που έχει δημιουργηθεί από το string ASQL. ASQL: SQL Query AParams: ASQL Παράμετροι

1) Επιστροφή του υπολοίπου ενός είδους X.GETSQLDATASET('SELECT ISNULL(QTY1,0) AS YPOL FROM MTRDATA WHERE MTRL='+ITEM.MTRL'+ AND FISCPRD='+X.FISCPRD, '');

Παραδείγματα

2) Βλ. Case Study 3

ID (TableName: string, code: string): integer Επιστρέφει το πεδίο κλειδί του πίνακα “TableName” με κωδικό “code”.

INPUTBOX (Prompt: string, DefaultValue: string): string

Παράδειγμα Εμφάνιση μηνύματος στην οθόνη με το ID του πελάτη με κωδικό ‘001’ X.WARNING(X.ID('CUSTOMER', '001'));

Εμφανίζει μήνυμα διαλόγου που επιτρέπει στο χρήστη να εισάγει κείμενο.

INPUTQUERY (ACaption: string, APrompt: string, Value:Variant, vPassword:integer) : Variant Εμφανίζει μήνυμα διαλόγου που επιτρέπει στο χρήστη να εισάγει κείμενο ή να ακυρώσει την εισαγωγή κειμένου. Επιστρέφει το κείμενο που εισήχθηκε από το χρήστη, όταν ο χρήστη επιλέξει OK. Επιστρέφει κενό όταν πατηθεί Cancel ή Esc. ACaption : Τίτλος του παραθύρου, APrompt : Εσωτερικό κείμενο παραθύρου (τίτλος πεδίου εισαγωγής), Value : Προεπιλεγμένη τιμή πεδίου εισαγωγής, vPassword : Εμφανίζει το κείμενο εισαγωγής με αστεράκια (1=Asterisk Text, 0=Normal Text)

1) Βλ. Παραδείγματα

Case Study 1 2) Βλ. Case Study 4

ISVALIDCONTRACT: boolean Ελέγχει εάν η εγκατάσταση έχει ενεργό συμβόλαιο

LIST: string Επιστρέφει το όνομα του τρέχοντος ευρετηρίου

Page 127: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

127

LOCALE: integer Επιστρέφει το Current Locale ID σε κωδικό γλώσσας (LCID)

LOCALESTRING (value: string): string

Παράδειγμα X.WARNING(X.LOCALE); Για ελληνικά επιστρέφει 1032

Επιστρέφει την απόδοση στη Login γλώσσα της μεταβλητής “value”. Προϋποθέτει την ύπαρξη ειδικών αρχείων γλωσσων.

LOGINDATE: TDateTime Επιστρέφει την τρέχουσα ημερομηνία

NEWID: integer

Παράδειγμα X.WARNING('LoginDate is ' + X.LOGINDATE);

Επιστρέφει το ID της εγγραφής που καταχωρήθηκε. Χρησιμοποιείται στο after post event.

PLAY (SoundFileName: string): Boolean

Παράδειγμα Επιστροφή του ID της εγγραφής παραστατικού πωλήσεων (είτε νέου είτε ήδη καταχωρημένου) function ON_AFTERPOST() { if (SALDOC.FINDOC < 0) FINDOCID = X.NEWID; else FINDOCID = SALDOC.FINDOC; }

Εκτελεί το αρχείο ήχου “SoundFileName” και επιστρέφει True.

SPELL (Num: Real): string Επιστρέφει το spelling του αριθμού Num

SQL (ASQL: string, AParams: Variant): string Επιστρέφει τις τιμές που δημιουργούνται από το string ASQL διαχωρισμένες με ερωτηματικά (;) ASQL: SQL Query AParams: ASQL Parameters

SUM (FieldName: string): real Επιστρέφει το άθροισμα της τιμής value του πεδίου FieldName που βρίσκεται σε DataSet

TIME: string Επιστρέφει την τρέχουσα ώρα σε μορφή hh:mm

USER: integer

Παράδειγμα X.WARNING('Η τρέχουσα ώρα είναι : ' + X.TIME);

Επιστρέφει τον κωδικό του Login Χρήστη Παράδειγμα X.WARNING('Ο κωδικός του Login Χρήστη είναι : ' + X.SYS.USER);

Page 128: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

128

B. Dataset Στη συγκεκριμένη ενότητα θα βρείτε μεθόδους και συναρτήσεις που αφορούν στα Dataset

Β.1 Methods

APPEND Αλλάζει την κατάσταση του DataSet σε Insert Mode.

DELETE Διαγράφει την συγκεκριμένη εγγραφή του DataSet

DISABLECONTROLS Απενεργοποιεί τα Window controls συγκεκριμένου DataSet

ENABLECONTROLS

Παράδειγμα Απενεργοποίηση των Window Controls του Dataset ITELINES ITELINES.DISABLECONTROLS();

Ενεργοποιεί τα Window controls συγκεκριμένου DataSet

EDIT

Παράδειγμα Ενεργοποίηση των Window Controls του Dataset ITELINES ITELINES.ENABLECONTROLS();

Αλλάζει την κατάσταση του DataSet σε Edit Mode

FIRST Μεταβαίνει στην πρώτη εγγραφή του DataSet

Βλ. Παράδειγμα

Case Study 2

INSERT Αλλάζει την κατάσταση του DataSet σε Insert Mode. Εισάγει την εγγραφή στη συγκεκριμένη θέση.

LAST Μεταβαίνει στην τελευταία εγγραφή του DataSet

MERGECHANGELOG Merges and saves all changes.

NEXT

Παράδειγμα X.SETPROPERTY('MERGECHANGELOG', 'True');

Μεταβαίνει στην επόμενη εγγραφή του DataSet

Βλ. Παράδειγμα

Case Study 2

Page 129: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

129

POST Καταχωρεί την εγγραφή στο DataSet

Βλ. Παράδειγμα

Case Study 6

PRIOR Μεταβαίνει στην προηγούμενη εγγραφή του DataSet

REFRESH () Ανανεώνει τα δεδομένα ενός memory table.

SETREADONLY (FieldName: string, Value: True/False)

Παράδειγμα Ενημέρωση συγκεκριμένης εγγραφής του πίνακα MTRMANFCTR μέσα από προβολή του αρχείου ειδών και ανανέωση των τιμών στο αντίστοιχο πεδίο των ειδών. function ON_ITEM_NAME() {

X.RUNSQL('UPDATE MTRMANFCTR SET ISACTIVE=0 where COMPANY=1 AND MTRMANFCTR=1', null); X.MTRMANFCTR.REFRESH; X.INVALIDATEFIELD('ITEM.MTRMANFCTR');

}

Θέτει το πεδίο “FieldName” σε Read Only. Αν χρησιμοποιηθεί σε πεδίο στήλης grid, τότε θα κάνει read only όλη τη στήλη.

SETDATALINKS ()

Παράδειγμα Αλλαγή της κατάστασης του πεδίου CUSTOMER.TRDCATEGORY σε ReadOnly CUSTOMER.SETREADONLY('TRDCATEGORY', 'TRUE');

Ενεργοποίηση / απενεργοποίηση των queries που τρέχουν για τα Hyperlinks πινάκων κατά το «γέμισμα» εγγραφών σε dataset(πχ virtual table). Κατά την εισαγωγή εγγραφών σε datasets αντί να τρέχουν queries για κάθε πεδίο που αναφέρεται σε πίνακα, τρέχει ένα μόνο query στο τέλος. Οι τιμές που δέχεται είναι 0=απενεργοποίηση, 1=ενεργοποίηση Σύνταξη : X.EXEC('CODE:ModuleIntf.SetDataSetLinks', X.MODULE, modulename, 0);

Βλ. Παράδειγμα

Case Study 6

Page 130: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

130

Β.2 Functions

ACTIVE: boolean Επιστρέφει TRUE σε περίπτωση που το DataSet είναι ανοιχτό

EOF: boolean Επιστρέφει TRUE όταν το Dataset βρίσκεται στην τελευταία εγγραφή

Βλ. Παράδειγμα

Case Study 2

FIELDBYNAME (FieldName: string): variant Επιστρέφει την τιμή του πεδίου “FieldName”

FIELDCOUNT: integer Επιστρέφει το πλήθος των πεδίων του Dataset

FIELDNAME (index: integer): string Επιστρέφει το όνομα του index πεδίου

FIELDS (index: integer): variant Επιστρέφει την τιμή του index πεδίου

FILTER: string Επιστρέφει και θέτει το φίλτρο στο Dataset.

Βλ. Παράδειγμα

Case Study 5

FILTERED: boolean Επιστρέφει και θέτει την κατάσταση Filtered του DataSet.

Βλ. Παράδειγμα

Case Study 5

ISNULL (FieldName: string): boolean Επιστρέφει True όταν το πεδίο “FieldName” είναι null Παράδειγμα Έλεγχος πεδίων του πελάτη κατά το Locate με εμφάνιση μηνυμάτων function ON_LOCATE() { testfield( 'ZIP'); testfield( 'CITY'); } function testfield( fldn ) { if ( CUSTOMER.ISNULL( fldn ) ) X.WARNING( fldn+' IS NULL!' ); else X.WARNING( fldn+' IS NOT NULL!' ); }

Page 131: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

131

GETGRAPH (LabelFieldName: string, ValueFieldName: string): string Επιστρέφει το Chart Image Filename που δημιουργήθηκε από το Dataset “LabelFieldName” με τιμές “ValueFieldName”.

GETHTML (FieldNames: string): string Επιστρέφει τις τιμές των πεδίων “FieldNames” σε HTML format

GETXML (writemetadata: Boolean): string Επιστρέφει το Dataset σε XML format

LOCATE (FieldNames: string, FieldValues: variant): boolean Επιστρέφει TRUE και μεταβαίνει στην εγγραφή που τα πεδία “FieldNames” έχουν τιμές “FieldValues”.

LOOKUP (KeyFields: string, KeyValues: Variant, ResultFields: string): Variant; Επιστρέφει τις τιμές των πεδίων “ResultFields” που τα τα πεδία “FieldNames” έχουν τιμές “FieldValues”.

RECNO: integer Επιστρέφει το αριθμό της τρέχουσας εγγραφής του Dataset.

RECORDCOUNT: integer Επιστρέφει το συνολικό πλήθος των εγγραφών του Dataset

Βλ. Παράδειγμα

Case Study 2

STATE: integer Επιστρέφει το State του Dataset. Οι τιμές που επιστρέφει αναλύονται στον παρακάτω πίνακα:

Dataset States Value State Description

0 Inactive DataSet closed. Its data is unavailable.

1 Browse Dataset open. The default state when a dataset is opened. Records can be viewed but not changed or inserted.

2 Edit Dataset open. Enables the current row to be edited

3 Insert Dataset open. Enables a new row to be inserted or appended. A call to Post inserts a new row

4 SetKey Dataset open. Enables GotoKey operations.

5 CalcFields Dataset open. Mode when the OnCalcFields event is executed. Prevents any changes to fields other than calculated fields.

6 Filter Dataset open. Indicates that a filter operation is under way. A restricted set of data can be viewed, and no data can be changed.

7 NewValue DataSet open. Indicates that the NewValue property of fields is being fetched for an event handler that responds to errors in applying cached updates.

8 OldValue DataSet open. Indicates that the OldValue property of fields is being fetched for an event handler that responds to errors in applying cached updates.

9 CurValue DataSet open. Indicates that the CurValue property of fields is being fetched for an event handler that responds to errors in applying cached updates.

10 BlockRead DataSet open. Data-aware controls are not updated and events are not triggered when the current record changes.

11 InternalCalc DataSet open. An OnCalcFields event is underway for calculated values that are stored with the record. (client datasets only)

12 Opening DataSet is in the process of opening but has not finished. This state occurs when the dataset is opened for asynchronous fetching.

Page 132: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

132

C. Events Στη συγκεκριμένη ενότητα θα βρείτε όλα τα Events που ενεργοποιούνται από πεδία, datasets ή objects.

C.1 Field Events Τα events που αναλύονται παρακάτω αφορούν σε πεδία πινάκων του object.

Dataset Events Event Description (Occurs)

ON_<TableName>_<FieldName>_VALIDATE Ενεργοποιείται ακριβώς πριν την αλλαγή δεδομένων ενός πεδίου – πριν καταγραφούν στο record buffer (Before Change)

ON_<TableName>_<FieldName> Ενεργοποιείται μετά την αλλαγή των δεδομένων ενός πεδίου (After Change)

C.2 Dataset Events

Παραδείγματα 1) Εμφάνιση προειδοποιητικού μηνύματος πριν την αλλαγή του πεδίου SERIES παραστατικού πωλήσεων function ON_SALDOC_SERIES_VALIDATE() //Before Change of field Series {

X.WARNING('BEFORE CHANGE'); } 2) Εμφάνιση προειδοποιητικού μηνύματος μετά την αλλαγή του πεδίου SERIES παραστατικού πωλήσεων function ON_SALDOC_SERIES() //On Change of field Series {

X.WARNING('AFTER CHANGE'); }

Τα events που αναλύονται παρακάτω ενεργοποιούντα από datasets.

Dataset Events Event Description (Occurs)

ON_<TableName>_POST Καλείται πριν το post των αλλαγών μίας εγγραφής πίνακα. Χρησιμοποιείται για έλεγχο ή ενημέρωση των δεδομένων της εγγραφής πριν γίνει post.

ON_<TableName>_AFTERPOST Καλείται μετά το post των αλλαγών ενός πίνακα.

ON_<TableName>_NEW Καλείται όταν εισάγεται νέα εγγραφή. Χρησιμοποιείται κυρίως για ανάθεση default τιμών.

ON_<TableName>_BEFOREDELETE Καλείται πριν τη διαγραφή μίας εγγραφής πίνακα.

ON_<TableName>_AFTERDELETE Καλείται μετά τη διαγραφή μίας εγγραφής πίνακα.

1) Σε παραστατικό πωλήσεων εμφάνιση μηνύματος που αποτρέπει τον χρήστη από την εισαγωγή εκπτώσεων στις γραμμές μεγαλύτερες από 50%.

Παραδείγματα

function ON_ITELINES_POST() { if(ITELINES.DISC1PRC > 0.5) X.EXCEPTION('Έκπτωση μεγαλύτερη από 50%.'); } 2) Βλ. Παράδειγμα

Page 133: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

133

C.3 Object Events Στον παρακάτω πίνακα αναλύονται όλα τα events που ενεργοποιούνται σε ένα object.

Object Events Event Description (Occurs)

ON_CREATE Create Object

ON_DESTROY Destroy Object

ON_CANCEL Before Cancel

ON_LOCATE After Locate

ON_POST Before Post

ON_AFTERPOST After Post

ON_DELETE Before Delete

ON_AFTERDELETE After Delete

ON_INSERT After Insert

ON_DOCPRINT Before print document form

ON_OPENREPORT Before execute report

EXECCOMMAND(cmd) Command execute(κλικ σε button)

ON_RESTOREEVENTS Conversion of object(Μετασχηματισμός)

ON_EDIT Record edit / change (Edit σε οποιοδήποτε πεδίο ενός object)

EXECCOMMAND(cmd) cmd = -1 Before copy from buffer

EXECCOMMAND(cmd) cmd = -2 After copy from buffer

C.3 Sub Form Events Τα events που αναλύονται παρακάτω ενεργοποιούνται σε pop up φόρμες.

Sub Form Events Event Description (Occurs)

ON_<Sub form name>_SHOW Ενεργοποιείται κατά την εμφάνιση pop up φόρμας.

ON_<Sub form name>_ACCEPT Ενεργοποιείται όταν γίνει κλικ στο button OK pop up φόρμας

ON_<Sub form name>_CANCEL Ενεργοποιείται όταν γίνει κλικ στο button Cancel pop up φόρμας

Page 134: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

134

C.4 Line Printing Events Τα events που αναλύονται παρακάτω ενεργοποιούνται σε Bands των Report Objects.

Line Printing Events Event Description (Occurs)

ON_BANDSTART(BandName) Start Band Print.

ON_BANDEND(BandName) End Band Print

ON_BANDLINE(BandName) Line Band Print

ON_BANDTRANSFER(BandName) Print Transfer Values

Παράδειγμα function ON_OPENREPORT() {

X.SETPARAM('STARTPAGEFIELD', USR.FPAGEL); return true;

} function ON_BANDTRANSFER(BandName) {

X.SETTRANSFERVALUE(BandName,'MYACNTRN.X1', 1); X.SETTRANSFERVALUE(BandName,'MYACNTRN.P1', 2); return true;

} function ON_BANDEND(BandName) {

if ( BandName=='MYACNTRN' ) {

X.SETPRINTPARAM(BandName, "CAPTIONFIELDNAME", "THECAPTION"); ds=X.GETENDBANDDATASET('MYACNTRN'); ds.APPEND; for (i=0; i<ds.FIELDCOUNT; i++) ds.FIELDS(i)= i; ds.THECAPTION = "MyCaption"; ds.POST;

} return true;

} function ON_BANDLINE(BandName) {

if ( BandName=='MYACNTRN' ) {

MYACNTRN.EDIT; if ( MYACNTRN.FINCODE == 'Sum' ) { MYACNTRN.FINCODE = 'NewName'; }

} return true;

}

Page 135: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

135

D. Case Studies Case Study 1 Εκτύπωση συγκεκριμένης φόρμας για επιλεγμένο είδος σε γραμμές παραστατικών πωλήσεων. Η εκτύπωση γίνεται με χρήση button στην οθόνη των πωλήσεων και εμφάνιση μηνύματος ερώτησης για τον αριθμό των αντιγράφων που θα εκτυπωθούν. function EXECCOMMAND(cmd) //Controls Commands {

if(cmd == 100001) //Ελέγχει το ID τουbutton που πατήθηκε {

iCopies = X.INPUTQUERY('Εκτύπωση Είδους','Αριθμός Αντιγράφων : ',ITELINES.QTY1,0); //Η παραπάνω γραμμή εμφανίζει ένα dialog box, που επιτρέπει στο χρήστη να ορίσει τον αριθμό των αντιγράφων που θα εκτυπωθούν. Προεπιλεγμένη τιμή είναι η ποσότητα της γραμμής του είδους. if(iCopies!='') //Not Cancel { var ObjItem; i = 1; ObjItem = X.Createobj('ITEM'); //Δημιουργία του Object των Ειδών try { ObjItem.DBLocate(ITELINES.MTRL); //Locate ITEM με το ID της γραμμής while(i <= iCopies) { ObjItem.PRINTFORM(100,'HP LaserJet 4100 Series PCL',''); i++; } } catch(e) { X.WARNING(ObjItem.GETLASTERROR); } finally { ObjItem.FREE; ObjItem = null; } }

} }

Εικόνα D1.1 – Φόρμα Εκτύπωσης Είδους

Page 136: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

136

Εικόνα D1.2 – Εισαγωγή button στην προβολή

Εικόνα D1.3 – Παράθυρο επιλογής αντιγράφων μετά από κλικ στο button “Print Labels”

Page 137: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

137

Case Study 2 Διαγραφή όλων των μετασχηματισμένων παραστατικών ενός παραστατικού πωλήσεων που προβάλλεται στην οθόνη, με κλικ σε button της προβολής. function EXECCOMMAND(cmd) //Controls Commands {

if(cmd == 100002) //Έλεγχος του ID του button που πατήθηκε { DelConvertedDocs(); } }

function DelConvertedDocs() //--- Βρίσει και διαγράφει τα μετασχηματισμένα παραστατικά. { //Query για εύρεση των μετασχηματισμένων παραστατικών βάσει του τρέχοντος

strqry='SELECT DISTINCT FINDOC AS FINDOC FROM MTRLINES WHERE SOSOURCE=1351 ‘ + ‘AND COMPANY='+X.SYS.COMPANY+' AND FINDOCS=' + SALDOC.FINDOC; ds=X.GETSQLDATASET(strqry,null); ds.FIRST; while(!ds.EOF()) //Loop για τα παραστατικά που βρέθηκαν και διαγραφή τους { ObjConv = X.CreateObj('SALDOC'); //Δημοιυργία Object Πωλήσεων try { ObjConv.DBLocate(ds.FINDOC); //Locate στην εγγραφή ObjConv.DBDelete; //Διαγραφή εγγραφής } finally { ObjConv.FREE; ObjConv =null; } ds.NEXT; } }

Page 138: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

138

Case Study 3 Άνοιγμα του compressed πεδίου SOVAL των τύπων (FPRMS) και εμφάνιση μηνύματος με την τιμή του (εσωτερικού) πεδίου λογιστικής (ACNMSK). function GetACNMSK() { dsFPRMS = X.GETSQLDATASET('SELECT SOVAL FROM FPRMS WHERE SOSOURCE=1351 ' +' AND COMPANY='+X.SYS.COMPANY+' AND FPRMS='+SALDOC.FPRMS,''); strSOVAL = dsFPRMS.SOVAL; sVal = X.EVAL('GETQUERYVALUE('+String.fromCharCode(39)+strSOVAL+String.fromCharCode(39)+',0,25)'); //Επιστρέφει την τιμή της 1ης γραμμής και 26ης στήλης του πεδίου SOVAL (Παράμετρος 0,25) X.WARNING('Ο λογαριασμός είναι : ' + sVal); }

Εικόνα D3.1 – Προβολή Τύπων (FPRMS), Πεδίο Λογαριασμός

Εικόνα D3.2 – SQL Query για εμφάνιση του πεδίου SOVAL Field(Θέση του πεδίου ACNMSK)

Page 139: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

139

Case Study 4 Εκτέλεση της εργασίας «Αλλαγή τιμών πώλησης» με χρήση button μέσα στην προβολή των ειδών. Η εργασία εκτελείται για το συγκεκριμένο είδος, με χρήση της επιλογής «Υφιστάμενων τιμών και δοτού ποσοστού» και το ποσοστό αλλαγής δίνεται από το χρήστη μέσα από παράθυρο διαλόγου. function ChangePrices() { ObjIteCost = X.CreateObj('IteCalcMarkUp'); try { ObjIteCost.DBInsert; TblIteCost = ObjIteCost.FindTable('MTRDIALOG'); TblIteCost.Edit; TblIteCost.FROMCODE = ITEM.CODE; TblIteCost.TOCODE = ITEM.CODE; iSODOUBLE1 = X.INPUTQUERY('Αλλαγή Τιμών', 'Ποσοστό',0,0); if(iSODOUBLE1!='') //Not Cancel { TblIteCost.SODTYPE = 1; //Υπολογισμός βάσει «Υφιστάμενων τιμών και δοτού ποσοστού»

TblIteCost.SODOUBLE1 = iSODOUBLE1; ObjIteCost.BatchExecute; X.EXEC('button:Save'); //Αποθήκευση της εγγραφής του είδους

X.WARNING('Η εργασία ολοκληρώθηκε! '); } } finally { ObjIteCost.FREE; ObjIteCost = null; } }

Εικόνα D4.1 – Εισαγωγή Button (με χρήση Virtual Table) Εικόνα D4.2 – Javascript προβολής ειδών

Page 140: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

140

Εικόνα D4.3 – Προβολή Ειδών, χρήση Button – Εμφάνιση παράθυρου διαλόγου

Εικόνα D4.4 – Αποτελέσματα (Η τιμή έχει αυξηθεί κατά 20%)

Page 141: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

141

Case Study 5 Φίλτρο ειδών σε γραμμές παραστατικών βάσει της περιγραφή του είδους, με χρήση τοπικού πεδίου(V1) ή πεδίου από virtual πίνακα. Το πεδίο πρέπει να τοποθετηθεί στην προβολή των πωλήσεων κάτω από τις γραμμές των ειδών. function ON_SALDOC_V1() { vFilterString='{ITELINES.MTRL_ITEM_NAME}='+String.fromCharCode(39)+SALDOC.V1+String.fromCharCode(39) if(SALDOC.V1=='') { ITELINES.FILTERED = 0; //Απενεργοποίηση όλων των φίλτρων στον ITELINES } else { ITELINES.FILTER = '(' + vFilterString + ')'; //Τιμή φίλτρου ITELINES.FILTERED = 1; //Εκτέλεση φίλτρου } } function ON_POST() { ITELINES.FILTERED = 0; //Απενεργοποίηση όλων των φίλτρων στον ITELINES } function ON_CANCEL() { ITELINES.FILTERED = 0; //Απενεργοποίηση όλων των φίλτρων στον ITELINES }

Εικόνα D5.1 – Οθόνη παραστατικών με πεδίο φίλτρου γραμμών

Page 142: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 9 – Προγραμματισμός Οθονών – Javascript

142

Εικόνα D5.2 – Εμφάνιση γραμμών μετά από χρήση του φίλτρου

Εικόνα D5.3 – Το τοπικό πεδίο πρέπει να εισαχθεί στο FINDOC

Page 143: Customizing Softone - The Black Book Ver.2012a

143

Case Study 6 Σε παραστατικά πωλήσεων, δημιουργία πίνακα με τις τελευταίες αγορές ανά γραμμή είδους, ο οποίος θα εμφανίζεται με διπλό κλικ στις γραμμές των ειδών. Στο pop up window που θα εμφανίζεται θα υπάρχει δυνατότητα υπολογισμού της τελικής τιμής βάσει της τιμής αγοράς και ενός ποσοστού προσαύξησης (πχ.40%) καθώς και εισαγωγής της στη συγκεκριμένη γραμμή του παραστατικού με χρήση button. • Δημιουργείτε ένα virtual table στον database designer με όνομα CCCITEMPURDOC και πεδία όπως φαίνονται στην εικόνα

D6.1. • Στα παραστατικά πωλήσεων εισάγετε μία νέα περιοχή με button και grid με πεδία από το virtual table (Εικόνα D6.2). • Στο script της προβολής εισάγετε τον παρακάτω κώδικα ο οποίος βρίσκει τις τελευταίες αγορές για το είδος της γραμμής και

τις εμφανίζει σε pop up window μέσα σε grid. • Με διπλό κλικ σε κάθε γραμμή του παραστατικού εμφανίζεται το παράθυρο της εικόνας D6.3 var vIncrement; //Ποσοστό προσαύξησης function ON_MYPOPUPFORM_SHOW() { vIncrement = 40; GetItemPurdoc(); //Φέρνει τις αγορές για το συγκεκριμένο Είδος CCCVTITEMPUR.FIRST; } function InsPRCtoMTRLINES(vTable) //Insert Price to Mtrlines {

ITELINES.PRICE = vTable.PRICE; } function GetItemPurdoc() //Τελευταίες 20 Αγορές για το συγκεκριμένο είδος { strqry='SELECT TOP 20 A2.TRDR, A1.MTRLINES, A1.FINDOC,' +' (A1.LINEVAL/case A1.QTY1 when 0 then 1 else A1.QTY1 end) AS LINEVAL, A1.QTY1' +' FROM MTRLINES A1 INNER JOIN FINDOC A2 ON A1.FINDOC=A2.FINDOC AND A1.COMPANY=A2.COMPANY' +' WHERE ' +' A2.SOSOURCE=1251 ' +' AND A2.TFPRMS IN(102,103) ' +' AND A1.COMPANY='+X.SYS.COMPANY +' AND A1.MTRL='+ITELINES.MTRL +' ORDER BY A2.TRNDATE DESC'; ds=X.GETSQLDATASET(strqry,''); CCCVTITEMPUR.FIRST; while (!CCCVTITEMPUR.EOF()) { CCCVTITEMPUR.DELETE; } if (ds.RECORDCOUNT>0) { try { dsLink = X.EXEC('CODE:ModuleIntf.GetDataSet', X.MODULE, 'CCCVTITEMPUR'); X.EXEC('CODE:ModuleIntf.SetDataSetLinks', X.MODULE, dsLink, 0); //Disables Links - Sends at the end 1 query for all while (!ds.EOF()) { CCCVTITEMPUR.APPEND; CCCVTITEMPUR.TRDR = ds.TRDR; CCCVTITEMPUR.FINDOC = ds.FINDOC; CCCVTITEMPUR.MTRLINES = ds.MTRLINES; CCCVTITEMPUR.PRICESTART = ds.LINEVAL; CCCVTITEMPUR.INCREMENT = vIncrement; CCCVTITEMPUR.QTY = ds.QTY1; CCCVTITEMPUR.POST; ds.NEXT; } } finally { X.EXEC('CODE:ModuleIntf.SetDataSetLinks', X.MODULE, dsLink, 1); //Disables Links - Sends at the end 1 query for all } } } function ON_CCCVTITEMPUR_INCREMENT() //Κατά την αλλαγή της προσαύξησης(Αγορές) - Ενημέρωση Τελ.Τιμής {

CCCVTITEMPUR.PRICE = CCCVTITEMPUR.PRICESTART + (CCCVTITEMPUR.PRICESTART * CCCVTITEMPUR.Increment /100); }

Page 144: Customizing Softone - The Black Book Ver.2012a

144

Εικόνα D6.1 – Πεδία Virtual Table

Εικόνα D6.2 – Προβολή Πωλήσεων με Virtual Table

Εικόνα D6.3 – Pop up Window με διπλό κλικ στις γραμμές των ειδών

Page 145: Customizing Softone - The Black Book Ver.2012a

145

Case Study 7 Αυτόματος υπολογισμός κόστους μεταφορικών σε παραστατικά πωλήσεων με δεδομένα από το Google maps. Δυνατότητα δημιουργίας εγγραφής στις γραμμές των επιβαρύνσεων με βάσει το τελικό κόστος που υπολογίζεται από τη χιλιομετρική απόσταση και το κόστος ανά χιλιόμετρο. Ο υπολογισμός της χιλιομετρικής απόστασης γίνεται βάσει της διεύθυνσης και του ΤΚ του ΑΧ που έχει καταχωρηθεί στο παραστατικό πωλήσεων καθώς και της διεύθυνσης και του ΤΚ παράδοσης. Ο υπολογισμός του κόστους γίνεται βάσει της χιλιομετρικής απόστασης και ενός πεδίου «Κόστος/Χλμ», το οποίο έχει παραμετρική τιμή βάσει των χιλιομέτρων.

• Στην προβολή των παραστατικών πωλήσεων θα δημιουργήσουμε μία οθόνη όπως στην Εικόνα D7.1 με τα εξής: Σχεδίαση

o Button «Calc Trans Cost» , το οποίο θα υπολογίζει τα χιλιόμετρα από το Google Maps. Το συγκεκριμένο πεδίο είναι virtual και δημιουργείται με χρήση της εντολής RUNB_700001=Calc Trans Cost

o Πεδία «Distance(Km)», «Duration(min)» τα οποία θα ενημερώνονται από το Google Maps. Τα πεδία που χρησιμοποιούνται στο συγκεκριμένο παράδειγμα είναι τα SALDOC.NUM01 και SALDOC.NUM02

o Πεδία «Cost/Km» , «Total Cost» τα οποία θα υπολογίζονται βάσει του Distance. Τα πεδία που χρησιμοποιούνται στο συγκεκριμένο παράδειγμα είναι τα SALDOC.NUM03 και SALDOC.NUM04

o Button «Add to Expenses», το οποίο θα ενημερώνει τις γραμμές εξόδων με την τιμή του Total Cost. Το συγκεκριμένο πεδίο είναι virtual και δημιουργείται με χρήση της εντολής RUNB_700002=Add to Expenses

• Στο σχεδιασμό της προβολής των παραστατικών πωλήσεων δημιουργείτε μία νέα περιοχή κάτω από την Αιτιολογία και από το πεδίο Form ορίζετε να έτσι ώστε να έχει δύο υποπεριοχές με τα παραπάνω πεδία. (Εικόνα D7.2)

• Στο script της παραμετροποίησης εισάγετε τον κώδικα (Javascript) της Εικόνας D7.3

• Με κλικ στο button «Calc Trans Cost» γίνεται υπολογισμός της χιλιομετρικής απόστασης βάσει των παρακάτω: Λειτουργία

o Αφετηρία: Διεύθυνση και ΤΚ που έχει δηλωθεί μέσα στον ΑΧ που είναι καταχωρημένο στο παραστατικό. Επίσης υπολογίζεται και η χώρα από το Υποκατάστημα που έχει καταχωρηθεί στο παραστατικό. Δηλαδή, πρέπει υποχρεωτικά να έχει καταχωρηθεί σωστή διεύθυνση και ΤΚ μέσα στους ΑΧ.

o Προορισμός: Διεύθυνση(MTRDOC.SHIPPINGADDS) και TK(MTRDOC.SHPZIP) των στοιχείων παράδοσης. • Μετά τον υπολογισμό ενημερώνονται τα πεδία Distance(km) και Duration(min) με τις τιμές από το Google Maps καθώς και το

πεδίο Cost/km με τιμή 0,10 αν τα υπολογισθέντα χιλιόμετρα είναι μικρότερα από 50 ή με τιμή 0,20 σε οποιαδήποτε άλλη περίπτωση. Τέλος ενημερώνεται το πεδίο Total Cost με το γινόμενο των πεδίων Distance και Cost/km.

• Με κλικ στο button «Add to Expenses» γίνεται δημιουργία νέας εγγραφής στον πίνακα των επιβαρύνσεων για το έξοδο 101 (Μεταφορικά πωλήσεων) με αξία την τιμή του πεδίου Total Cost.

Εικόνα D7.1 – Οθόνη προβολής πωλήσεων

Page 146: Customizing Softone - The Black Book Ver.2012a

146

Εικόνα D7.2 – Σχεδιασμός περιοχών προβολής πωλήσεων

Page 147: Customizing Softone - The Black Book Ver.2012a

147

function distancematrix(from, to) //συνάρτηση για υπολογισμό απόστασης μέσω google maps { this.from = from || ""; this.to = to || ""; this.onSuccess = function(){}; this.onNoReply = function(){}; this.onError = function(){}; this.request = null; var me = this, url; this.execute = function() { from = encodeURIComponent(from); to = encodeURIComponent(to); url = 'http://maps.googleapis.com/maps/api/distancematrix/json?sensor=false&origins=' + from + '&destinations=' + to; this.request = new ActiveXObject("MSXML2.XMLHTTP"); this.request.open('GET', url, true); this.request.onreadystatechange= function() { if (me.request.readyState==4) { if (me.request.status==200) me.onSuccess(me.request.responseText); else me.onNoReply(); } } try { this.request.send(); } catch(e) { this.onError(e); } } } function GetDirections() { var distance=0; var duration=0; str = ' SELECT ADDRESS, ZIP, (SELECT NAME FROM COUNTRY ' +' WHERE COUNTRY=(SELECT COUNTRY FROM BRANCH ' +' WHERE COMPANY='+SALDOC.COMPANY +' AND BRANCH='+SALDOC.BRANCH+') ) AS COUNTRY' +' FROM WHOUSE WHERE COMPANY='+SALDOC.COMPANY+' AND WHOUSE='+MTRDOC.WHOUSE; ds = X.GETSQLDATASET(str,null); var from = ds.ADDRESS + ',' + ds.ZIP + ',' + ds.COUNTRY, to = MTRDOC.SHIPPINGADDR + ',' + MTRDOC.SHPZIP + ',' + ds.COUNTRY; dm = new distancematrix(from,to); dm.onSuccess =

function(reply) { eval('var data = ' + reply); if (data.status === 'OK') distance = roundNumber((data.rows[0].elements[0].distance.value / 1000),2); duration = roundNumber((data.rows[0].elements[0].duration.value / 60),2); SALDOC.NUM01 = distance; SALDOC.NUM02 = duration; }; dm.execute(); } function roundNumber(num, dec) { var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec); return result; }

Page 148: Customizing Softone - The Black Book Ver.2012a

148

function EXECCOMMAND(cmd) { if (cmd=='700001') { GetDirections(); } if (cmd=='700002') { X.FOCUSFIELD('SALDOC.NUM01'); AddtoExpenses(); } } function AddtoExpenses() { if(SALDOC.NUM04 != '') { EXPANAL.APPEND; EXPANAL.EXPN = 101; EXPANAL.EXPVAL = SALDOC.NUM04; EXPANAL.POST; } } function ON_SALDOC_NUM01() { CalculateTransCost(); } function CalculateTransCost() { if(SALDOC.NUM01 <= 50) { SALDOC.NUM03 = 0.10; } else { SALDOC.NUM03 = 0.20; } SALDOC.NUM04 = SALDOC.NUM03 * SALDOC.NUM01; }

Εικόνα D7.3 – Javascript προβολής πωλήσεων

Εικόνα D7.4 – Οθόνη Επιβαρύνσεων

Page 149: Customizing Softone - The Black Book Ver.2012a

149

ΚΕΦΑΛΑΙΟ 10 Ροές Δεδομένων – Data Flow

A. Βασικές Λειτουργίες

B. Στοιχεία Κανόνων B.1 Αρχική οντότητα B.2 Τελική οντότητα Β.3 Ρυθμίσεις εκτέλεσης

C. Σενάρια Ροών

D. Κλήση από Script Οθόνης

E. Case Studies Case Study 1 Case Study 2 Case Study 3 Case Study 4 Case Study 5

Page 150: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 10 – Ροές Δεδομένων – Data Flow

150

A. Βασικές Λειτουργίες Οι ροές δεδομένων είναι ένας γενικός μηχανισμός μεταφοράς και μετασχηματισμού δεδομένων μεταξύ ενοτήτων του SoftOne. Το συγκεκριμένο εργαλείο επιτρέπει το σχεδιασμό εργασιών μεταφοράς χωρίς τη χρήση SoftOne script, οι οποίες μπορούν να εκτελεστούν από τα ευρετήρια των ενοτήτων. Τα αποτελέσματα των εργασιών που εκτελούνται μέσα από σενάρια ροών αποθηκεύονται μέσα στον πίνακα της βάσης TRNFTRC. Στην εικόνα Α1 βλέπετε ένα παράδειγμα δημιουργίας κανόνα ροής δεδομένων, το οποίο έχει σχεδιαστεί για να δημιουργήσει πελάτες από εγγραφές draft entries. Στην αρχική οντότητα έχει οριστεί το όνομα του αρχικού object SODRAFT (1) και στην τελική ενότητα το όνομα του τελικού object CUSTOMER (2), όπως επίσης και ο πίνακας πελάτες στον οποίο θα γίνει εισαγωγή δεδομένων (3). Έχει οριστεί επίσης η σύνδεση Draft entry για τη μεταφορά δεδομένων (4) καθώς και ο πίνακας με τις αναθέσεις τιμών των πεδίων. Η εμφάνιση της εργασίας στον browser των draft entries γίνεται μέσω του σεναρίου ροής(Εικόνα Α2). Στην Εικόνα Α3 βλέπετε το μενού που θα εμφανιστεί όταν γίνει δεξί κλικ στον browser των draft entries.

Εικόνα A1

Εικόνα Α2 Εικόνα Α3

Page 151: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 10 – Ροές Δεδομένων – Data Flow

151

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

Β.1 Αρχική οντότητα Η αρχική οντότητα έχει τα στοιχεία του αρχικού object, το οποίο έχει τα δεδομένα προς μεταφορά, πχ SALDOC (παραστατικά πώλησης). Στο πλαίσιο «Όνομα» πληκτρολογείτε ή επιλέγετε το όνομα της οντότητας. Μπορείτε να επιλέξετε συγκεκριμένη προβολή του object, η οποία θα χρησιμοποιηθεί αν ορίσετε να γίνει μεταβολή τιμών στο αρχικό object μετά την εκτέλεση της εργασίας(Tab Μεταβολές). Στο Tab «Πίνακες δεδομένων» εμφανίζονται οι πίνακες της συγκεκριμένης οντότητας, από τους οποίους θα επιλέξουμε στη συνέχεια τα δεδομένα προς μεταφορά(Εικόνα Β1). Ομαδοποίηση ή φιλτράρισμα των εγγραφών των πινάκων γίνεται με κλικ στα αντίστοιχα κουμπιά(Εικόνα Β3). Στο Tab «Μεταβολές» ορίζετε τα πεδία του αρχικού object που θα μεταβληθούν βάσει συγκεκριμένων εκφράσεων (Εικόνα Β2). Αν επιλέξετε τη «Χρήση Object» τότε η ενημέρωση των τιμών θα γίνει εκτελώντας όλες τις εντολές του object βάσει της επιλεγμένης προβολής. Χωρίς τη χρήση object η ενημέρωση γίνεται απευθείας με query στη βάση.

Εικόνα Β1

Εικόνα Β2

Εικόνα Β3

Page 152: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 10 – Ροές Δεδομένων – Data Flow

152

Β.2 Τελική οντότητα Η τελική οντότητα περιλαμβάνει τα στοιχεία του τελικού object, το οποίο έχει τα δεδομένα προς μεταφορά, πχ PRDDOC(παραστατικά παραγωγής). Στο πλαίσιο «Όνομα» πληκτρολογείτε ή επιλέγετε το όνομα της οντότητας. Συμπληρώνετε το πλαίσιο «Προβολή» όταν κατά την εκτέλεση της εργασίας θέλετε να εκτελεστούν οι παραμετροποιήσεις και οι εντολές που έχετε ορίσει μέσα στην επιλεγμένη προβολή. Στο πλαίσιο «Πίνακες» δηλώνετε τους πίνακες που θα χρησιμοποιηθούν για την ανάθεση τιμών. Για κάθε πίνακα που επιλέγετε ανοίγει και το αντίστοιχο Tab (Εικόνα Β4). Για κάθε πίνακα(Tab) της τελικής οντότητας πρέπει να επιλεχθεί και ο πίνακας άντλησης δεδομένων μέσα στο πεδίο «Δεδομένα από». Στον πίνακα «Αναθέσεις τιμών πεδίων» ορίζονται οι τιμές των πεδίων της τελικής οντότητας. Στη στήλη «Πεδίο» επιλέγετε τα πεδία στα οποία θα γίνει ανάθεση τιμής κατά την εκτέλεση της εργασίας. Στη στήλη «Έκφραση» εισάγετε τιμές είτε χειροκίνητα είτε επιλέγοντας πεδία από την αρχική οντότητα. Μπορείτε επίσης να εισάγετε οποιαδήποτε εσωτερική συνάρτηση της εφαρμογής (πχ. IF, RUNSQL κτλ) (Εικόνα Β5). Η στήλη «Συνάθροιση» επιτρέπει τον ορισμό πράξεων στα πεδία σε περίπτωση που υπάρχει ομαδοποίηση στον πίνακα «Δεδομένα από». Για παράδειγμα αν θέλετε κατά την εκτέλεση της εργασίας να εφαρμοστεί συμπύκνωση γραμμών του είδους, τότε είναι απαραίτητο να ομαδοποιήσετε τις γραμμές και η τελική ποσότητα θα είναι το άθροισμα των ποσοτήτων για κάθε ομαδοποιημένο είδος (Εικόνα Β6).

Εικόνα Β4

Εικόνα Β5

Page 153: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 10 – Ροές Δεδομένων – Data Flow

153

Εικόνα Β6

Page 154: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 10 – Ροές Δεδομένων – Data Flow

154

Β.3 Ρυθμίσεις Εκτέλεσης Στο Tab «Εκτέλεση» ορίζετε αν κατά την εκτέλεση της εργασίας θα εμφανιστεί η οθόνη της τελικής οντότητας, τις παραμέτρους του διαλόγου καθώς και τα στοιχεία των συνδέσεων εκτέλεσης. Επιλέγετε το checkbox «Εμφάνιση οθόνης» όταν θέλετε να εμφανιστεί η οθόνη της τελικής οντότητας πριν την καταχώρηση της, αντίστοιχα επιλέγετε το checkbox «Εμφάνιση διαλόγου» στην περίπτωση που θέλετε να εμφανιστεί διάλογος πριν την εκτέλεση της εργασίας. Οι παράμετροι του διαλόγου ορίζονται στον πίνακα «Παράμετροι διαλόγου»(Εικόνα Β7). Οι εγγραφές του πίνακα δηλώνουν τα πεδία που θα εμφανίζονται. Στις στήλες μπορείτε να ορίσετε τον τρόπο εμφάνισης τους. Τα πεδία αυτά μπορούν να χρησιμοποιηθούν είτε στην αρχική οντότητα(πχ στα Φίλτρα) είτε ως αναθέσεις τιμών στην τελική οντότητα(Εικόνα Β8). Το checkbox «Εξαίρεση τρέχουσας» ορίζει αν από την εργασία θα εξαιρεθεί η τρέχουσα εταιρία. Στον πίνακα «Στοιχεία» μπορείτε να δηλώσετε τις εταιρίες που θα εκτελεστεί η εργασία, όπως επίσης και το υποκατάστημα και τον χρήστη. Αν δεν δηλωθεί χρήστης τότε οι καταχωρήσεις των εγγραφών θα γίνουν με τον login χρήστη.

Εικόνα Β7

Εικόνα Β8

Page 155: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 10 – Ροές Δεδομένων – Data Flow

155

C. Σενάρια Ροών Στα σενάρια ροών ορίζονται οι εργασίες που θα εμφανιστούν στο δεξί κλικ των ευρετηρίων για τις οντότητες που θα δηλωθούν. Στην Εικόνα C1 βλέπετε παράδειγμα σεναρίων ροών που έχουν δημιουργηθεί να εκτελούνται από το ευρετήριο των παραστατικών πωλήσεων (Οντότητα SALDOC). Στην περιγραφή δηλώνετε το λεκτικό που θα εμφανίζεται στο μενού και στην οντότητα την ενότητα που θα εφαρμοστεί η συγκεκριμένη ρύθμιση(Εικόνα C2). Στον πίνακα δηλώνονται οι κανόνες ροής ή τα scripts που θα εκτελεστούν κατά την επιλογή του συγκεκριμένου σεναρίου από το pop up μενού του ευρετηρίου. Ένα σενάριο ροής μπορεί να εκτελέσει έναν ή περισσότερους κανόνες ροής και scripts(Εικόνα C3). Σημείωση

: Η περιγραφή των κανόνων είναι το κλειδί στον πίνακα σύνδεσης με τις ροές, οπότε αν αλλάξετε την περιγραφή ενός κανόνα που έχετε συνδέσει με σενάριο, πρέπει εκ νέου να κάνετε τη σύνδεση με το σενάριο ροής.

Εικόνα C1

Εικόνα C2

Εικόνα C3

Page 156: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 10 – Ροές Δεδομένων – Data Flow

156

D. Κλήση από Script Οθόνης Οι ροές δεδομένων μπορούν να κληθούν μέσα από τα scripts των οθονών, μέσω της συνάρτησης X.EVAL. Μπορείτε να καλέσετε είτε τους κανόνες ροής είτε τα σενάρια με χρήση των παρακάτων εντολών:

• SOTRANSFORM.RULEBYID (CSTINFO: integer, IDs: STRING) CSTINFO: Το ID του κανόνα IDs: Τα IDs των εγγραφών που θα εφαρμοστεί ο κανόνας διαχωρισμένα με κόμματα (,) ή αγγλικά ερωτηματικά (?)

• SOTRANSFORM.RULEBYNAME (CSTNAME:STRING, IDs: STRING)

CSTNAME: H περιγραφή του κανόνα IDs: Τα IDs των εγγραφών που θα εφαρμοστεί ο κανόνας διαχωρισμένα με κόμματα (,) ή αγγλικά ερωτηματικά (?)

• SOTRANSFORM.MODELBYID (CSTINFO: integer, IDs: STRING)

CSTINFO: Το ID του σεναρίου IDs: Τα IDs των εγγραφών που θα εφαρμοστεί το σενάριο διαχωρισμένα με κόμματα (,) ή αγγλικά ερωτηματικά (?)

• SOTRANSFORM.MODELBYNAME (CSTNAME:STRING, IDs: STRING)

CSTINFO: Η περιγραφή του σεναρίου IDs: Τα IDs των εγγραφών που θα εφαρμοστεί το σενάριο διαχωρισμένα με κόμματα (,) ή αγγλικά ερωτηματικά (?)

Παράδειγμα Εκτέλεση του κανόνα ροής με κωδικό 3118, που έχει ήδη δημιουργηθεί και μετατρέπει draft entry σε πελάτη, μέσα από το script της οθόνης των draft entries. Η κλήση του κανόνα γίνεται μετά από κλικ στο button 10001(Εικόνα D1) και εμφανίζεται το παράθυρο διαλόγου που έχει οριστεί μέσα στον κανόνα(Εικόνα D2). function EXECCOMMAND(cmd) { if(cmd == 10001) Transfertocustomer(); } function Transfertocustomer() {

var A; if(SODRAFT.SODRAFT>0) A = X.EVAL('SOTRANSFORM.RULEBYID(3118,'+SODRAFT.SODRAFT+')'); }

Εικόνα D1 Εικόνα D2

Page 157: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 10 – Ροές Δεδομένων – Data Flow

157

E. Case Studies Case Study 1 Εργασία μεταφοράς πωλήσεων σε αγορές με δυνατότητα επιλογής σειράς και προμηθευτή στα φίλτρα του διαλόγου. Δημιουργείτε ένα νέο κανόνα και επιλέγετε ως αρχική οντότητα το object SALDOC. Στο δεξί μέρος της οθόνης εμφανίζονται οι πίνακες από τους οποίους μπορείτε να αντλήσετε δεδομένα (Εικόνα Ε.1.1). Η δημιουργία του παράθυρου διαλόγου γίνεται μέσα από το Tab Εκτέλεση. Για κάθε πεδίο εισάγετε όνομα (που χρησιμοποιείται ως αναγνωριστικό στις παραμέτρους), τύπο δεδομένων (Data type), πλάτος εμφάνισης(Display size), Editor και οποιαδήποτε άλλη ιδιότητα χρειάζεται(Εικόνα Ε.1.2). Τα δεδομένα θα μεταφέρονται σε παραστατικά αγορών οπότε το object της τελικής οντότητας πρέπει να είναι το PURDOC. Επιλέγετε τους πίνακες που θέλετε να ενημερώνονται (πχ. Συναλλαγές και Γραμμές ειδών) και στη συνέχεια για κάθε πίνακα (Tab) επιλέγετε τον πίνακα από τον οποίο θα γίνεται η αντιστοίχιση των πεδίων. Στα πεδία των τελικών πινάκων μπορείτε να κάνετε ανάθεση τιμών με δοτές τιμές ή τιμές από τους αρχικούς πίνακες και τις παραμέτρους(Εικόνα Ε.1.3). Τελευταίο βήμα είναι η δημιουργία σεναρίου με χρήση του συγκεκριμένου κανόνα, έτσι ώστε να εμφανιστεί η εργασία στο δεξί κλικ του ευρετηρίου των παραστατικών πωλήσεων.

Εικόνα E1.1

Εικόνα E1.2

Εικόνα E1.3

Page 158: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 10 – Ροές Δεδομένων – Data Flow

158

Case Study 2 Εργασία μεταφοράς πωλήσεων από τη login εταιρία σε συγκεκριμένη εταιρία και υποκατάστημα με ομαδοποίηση πελατών. Η αρχική οντότητα δημιουργείται όπως στο προηγούμενο παράδειγμα με χρήση του SALDOC. Για την ομαδοποίηση με τους πελάτες επιλέγετε τον πίνακα «Συναλλαγές Πωλήσεων» και μέσα στην ομαδοποίηση εισάγετε το πεδίο «Πελάτης» των παραστατικών πωλήσεων (Εικόνα Ε2.1). Η ανάθεση τιμών των πεδίων για τα πεδία «Πελάτης»(Εικόνα Ε2.2) των πωλήσεων και «Είδος» των γραμμών ειδών(Εικόνα Ε2.3) πρέπει να γίνει με βάση τον κωδικό τους. Γι’ αυτό το λόγο χρησιμοποιείται η εσωτερική συνάρτηση ID. Θα μπορούσατε βέβαια να κάνετε χρήση sql εντολής με τη συνάρτηση RUNSQL. Βασική προϋπόθεση βέβαια για να λειτουργήσουν σωστά τα παραπάνω είναι ότι και στις δύο εταιρίες υπάρχουν οι ίδιοι κωδικοί πελατών και ειδών. Στο Tab Εκτέλεση, στην ενότητα «Σε συνδέσεις» επιλέγετε να γίνει εξαίρεση της τρέχουσας εταιρίας και τα δεδομένα να μεταφέρονται στην εταιρία 1001, στο υποκατάστημα 1000 (Εικόνα Ε2.4). Μετά από την εκτέλεση της εργασίας με δεξί κλικ στο ευρετήριο των παραστατικών πωλήσεων εμφανίζονται αποτελέσματα που δείχνουν αν έχει γίνει σωστά η μεταφορά(Εικόνα Ε2.5).

Εικόνα E2.1 Εικόνα E2.2

Εικόνα E2.3

Εικόνα E2.4

Εικόνα E2.5

Page 159: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 10 – Ροές Δεδομένων – Data Flow

159

Case Study 3 Εργασία που θα εκτελείται μέσα από ευρετήριο ειδών αποθήκης και θα δημιουργεί παραστατικά αγοράς με ομαδοποίηση βάσει συνήθη προμηθευτή των ειδών. Για τα είδη που δεν υπάρχει συνήθης προμηθευτής θα εισάγεται ο προμηθευτής των φίλτρων του διαλόγου. Οι γραμμές των ειδών θα έχουν ποσότητα 1 αν δεν έχει συμπληρωθεί ποσότητα αγορών στα είδη. Στην αρχική οντότητα γίνεται επιλογή του object ITEM. Η ομαδοποίηση ως προς το συνήθη προμηθευτή γίνεται με χρήση του πεδίου MTRL.MTRSUP στην ομαδοποίηση του πίνακα των ειδών (Εικόνα Ε3.1). Στα φίλτρα του διαλόγου πρέπει να εμφανίζεται η σειρά των αγορών και ο προμηθευτής για είδη που δεν έχουν συνήθη προμηθευτή (Εικόνα Ε3.2). Στην τελική οντότητα εισάγετε το object PURDOC (παραστατικά αγορών) και ως πίνακες επιλέγετε τις «Συναλλαγές» και τις «Γραμμές ειδών». Ο πίνακας των αγορών θα ενημερώνεται από τον πίνακα των ειδών, γιατί το πεδίο του προμηθευτή πρέπει να ενημερώνεται από το αντίστοιχο πεδίο των ειδών (συνήθης προμηθευτής). Οι αναθέσεις τιμών των πεδίων γίνονται όπως στην Εικόνα Ε3.3, με χρήση της συνάρτησης if για το πεδίο προμηθευτής.

Εικόνα E3.1

Εικόνα E3.2

Εικόνα E3.3

Page 160: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 10 – Ροές Δεδομένων – Data Flow

160

Οι γραμμές των ειδών δεν μπορούν να ενημερώνονται από τον πίνακα των ειδών της αρχικής οντότητας, γιατί ο συγκεκριμένος πίνακας έχει ομαδοποιηθεί ως προς συνήθη προμηθευτή, οπότε έχει τόσες γραμμές όσοι είναι οι διαφορετικοί προμηθευτές που υπάρχουν στις εγγραφές που θα επιλεχθούν στο ευρετήριο των ειδών. Αποτέλεσμα των παραπάνω είναι ότι πρέπει να δημιουργηθεί ένας νέος πίνακας από τα είδη στην αρχική οντότητα, ο οποίος θα κάνει εκ νέου ομαδοποίηση ανά είδος(Εικόνα Ε3.4) και να γίνει εισαγωγή του ως πίνακα άντλησης δεδομένων για τις γραμμές ειδών (Εικόνα Ε3.5). Στο παράδειγμα της εικόνας Ε3.6 έχει γίνει επιλογή 9 ειδών, που έχουν 3 διαφορετικούς προμηθευτές. Μετά την εκτέλεση της εργασίας θα δημιουργηθούν 4 νέα παραστατικά (3 βάσει των προμηθευτών των ειδών και 1 βάσει του προμηθευτή του διαλόγου) (Εικόνα Ε3.7).

Εικόνα E3.4

Εικόνα E3.5

Εικόνα E3.6

Εικόνα E3.7

Page 161: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 10 – Ροές Δεδομένων – Data Flow

161

Case Study 4 Εργασία που θα δημιουργεί παραστατικά αγοράς από παραστατικά παραγωγής. Τα είδη θα εισάγονται βάσει των γραμμών των Α’ υλών. Η ποσότητα θα εισάγεται με υπολογισμό της ποσότητας των γραμμών και της φύρας. Στην αρχική οντότητα γίνεται επιλογή του object PRDDOC(παραστατικά παραγωγής) και στην τελική το object PURDOC. Τα φίλτρα του διαλόγου θα έχουν τη σειρά αγορών και τον προμηθευτή (Εικόνα Ε4.1) Η ανάθεση τιμών της τελικής οντότητας θα γίνει για τους πίνακες «Συναλλαγές» και «Γραμμές ειδών». Στον πίνακα των συναλλαγών εισάγετε τα πεδία που θέλετε να ενημερώνονται βάσει του αρχικού πίνακα των παραστατικών παραγωγής(Εικόνα Ε4.2). Αντίστοιχα στον πίνακα των γραμμών ειδών εισάγετε πεδία από τον αρχικό πίνακα των γραμμών Α βοηθητικών υλών (Εικόνα Ε4.2). Μετά την εκτέλεση της εργασίας από το ευρετήριο των παραστατικών παραγωγής τα αποτελέσματα θα εμφανιστούν όπως στην Εικόνα Ε4.4.

Εικόνα E4.1

Εικόνα E4.2

Εικόνα E4.3

Εικόνα E4.4

Page 162: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 10 – Ροές Δεδομένων – Data Flow

162

Case Study 5 Εργασία που δημιουργεί Tasks από ευκαιρίες πώλησης με συγκεκριμένη προβολή που έχει προεπιλεγμένες τιμές για πεδία των Tasks. Στην αρχική οντότητα επιλέγετε το object PRJC(ευκαιρίες πώλησης) και στην τελική το object SOTASK. Επιλέγετε την προβολή που έχει default values σε συγκεκριμένα πεδία, η οποία θα λειτουργήσει κατά την εκτέλεση του σεναρίου ροών και θα συμπληρώσει αυτόματα τα αντίστοιχα πεδία. Οι αναθέσεις τιμών των πεδίων του πίνακα των Tasks(Εργασιών) γίνεται όπως στην Εικόνα Ε5.1. Μετά την εκτέλεση του σεναρίου ροών μέσα από το ευρετήριο των ευκαιριών πώλησης(Εικόνα Ε5.2) θα δημιουργηθούν οι εγγραφές στα Tasks (Εικόνα Ε5.3).

Εικόνα E5.1

Εικόνα E5.2

Εικόνα E5.3

Page 163: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 10 – Ροές Δεδομένων – Data Flow

163

Case Study 6 Εργασία μετασχηματισμού παραγγελίας πώλησης σε παραστατικό συγκεκριμένης σειράς με backorder. Ενημέρωση του «Προήλθε από» και «Μετασχηματίστηκε σε». Στην αρχική και τελική οντότητα επιλέγετε το object SALDOC, αφού ο μετασχηματισμός θα γίνει από παραστατικό πώλησης σε παραστατικό πώλησης. Στην τελική οντότητα στους πίνακες επιλέγετε τους πίνακες που θέλετε να ενημερώσετε(στο παράδειγμα έχει γίνει επιλογή των «1. Συναλλαγών» και «7. Γραμμών ειδών». Στο Tab «Συναλλαγές (Πωλήσεων)» που εμφανίζεται επιλέγετε ότι τα δεδομένα θα προέρχονται από τον πίνακα «Συναλλαγές(Πωλήσεων) – Συναλλαγές υλικών» και στη συνέχεια κάνετε ανάθεση τιμών όπως στα προηγούμενα παραδείγματα. Για να διατηρηθεί η πληροφορία του backorder(δηλαδή να ενημερωθεί το πεδίο «Εκτελεσμένα» του αρχικού παραστατικού) πρέπει να εισάγετε το πεδίο CONVMODE(Τροπος μετασχηματισμού) και να του αναθέσετε την τιμή 1 (Εικόνα Ε6.1). Επίσης για να υπάρχει η πληροφορία «Προήλθε από» ή «Μετασχηματίστηκε σε» πρέπει στο Tab «Γραμμές ειδών» να γίνει εισαγωγή των πεδίων FINDOCS και MTRLINESS, τα οποία αντιστοιχίζονται με τα πεδία FINDOC και MTRLINES (Εικόνα 6.2).

Εικόνα E6.1

Εικόνα E6.2

Page 164: Customizing Softone - The Black Book Ver.2012a

164

ΚΕΦΑΛΑΙΟ 11 SoftOne Batch Script Language (SBSL)

A. Βασικές Έννοιες

B. Σύνταξη SBSL κώδικα

C. Σχεδιασμός οθόνη διαλόγου

D. Main Code

E. Εκτέλεση / Κλήση SBSL Script

F. SBSL Internal Functions

G. SoftOne Libaries

H. Case Studies Case Study 1 Case Study 2 Case Study 3

Page 165: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

165

A. Βασικές Έννοιες H S1 Batch Script Language (SBSL) είναι μία γλώσσα προγραμματισμού που αναπτύχθηκε από τα εργαστήρια της SoftOne αρχικά για να εξυπηρετήσει διαδικασίες data import από άλλες εφαρμογές. Η γλώσσα αυτή γρήγορα αποδείχθηκε ιδιαίτερα ισχυρή και εύχρηστη με αποτέλεσμα να χρησιμοποιηθεί εκτενώς για τις batch εργασίες της ίδιας της εφαρμογής. Ταυτόχρονα όμως αποτελεί ένα εξαιρετικά ισχυρό εργαλείο για τρίτους developers προκειμένου να κατασκευάζουν batch εργασίες για οποιαδήποτε χρήση – όχι απαραίτητα για διαδικασίες import. Ενα από τα πολλά πλεονεκτήματα της SBSL (σε σχέση πχ με την σύνταξη εκτεταμένων SQL εντολών) είναι το γεγονός ότι συνεργάζεται με τους κανόνες και τις λογικές της εφαρμογής – κάτι που η ευθεία SQL εντολή παρακάμπτει. Αυτό είναι πολύ σημαντικό σε μιά business oriented εφαρμογή της οποίας οι λογικοί κανόνες και οι έλεγχοι (πέραν όσων αφορούν στην RDBMS) πρέπει να γίνονται σεβαστοί. Το αποτέλεσμα της SBSL είναι κατά κανόνα μιά batch εργασία όμοια με αυτές που χρησιμοποιεί η ίδια η SoftOne. H γλώσσα επιτρέπει να δομηθεί τόσο το αντικείμενο της batch εργασίας όσο και οι παράμετροι διαλόγου και (άρα) εκτέλεσής της. Ο κώδικας της SBSL μπορεί να ενσωματωθεί μέσα στην αντίστοιχη ενότητα του SoftOne (S1 scripts) ή σε φυσικό αρχείο με κατάληξη imp (τύπου text). Οι εργασίες που μπορούν να υλοποίηθούν με τη χρήση της SBSL είναι οι παρακάτω:

• Εισαγωγή / μεταβολή δεδομένων σε οποιοδήποτε object του SoftOne • Εξαγωγή δεδομένων σε αρχείο ASCII • Μεταφορά δεδομένων σε εξωτερικούς πίνακες SQL, Oracle, Access • Δημιουργία αρχείου XXF από οποιοδήποτε object του SoftOne • Εκτέλεση εργασιών σε objects (πχ. ενημέρωση τιμών κόστους)

Η εκτέλεση των εργασιών γίνεται: • Με δεξί κλικ σε επιλεγμένες εγγραφές ενός ευρετηρίου • Με συντόμευση στο μενού • Μέσα από script οθόνης

Στην παρακάτω εικόνα βλέπετε ένα παράδειγμα οθόνης διαλόγου batch εργασίας.

Εικόνα A1

Page 166: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

166

B. Σύνταξη SBSL κώδικα Β.1 Case Insensitive Η εισαγωγή των εντολών(πχ. var, function) γίνεται είτε με μικρά είτε με κεφαλαία γράμματα. Τα ονόματα των μεταβλητών και των συναρτήσεων είναι case insensitive.

B.2 Semicolons Κάθε εντολή της SBSL πρέπει να τελειώνει με semicolon (;).

B.3 Comments Εισαγωγή σχολίων σε μία γραμμή γίνεται με χρήση των χαρακτήρων //. Παράδειγμα:

B.4 Variables

// my comments

Η δήλωση των μεταβλητών γίνεται με χρήση της εντολής var, η οποία είναι πάντοτε τύπου variant. Παράδειγμα:

B.5 Libraries References

var x, y, temp;

Η αναφορά σε εσωτερικές βιβλιοθήκες της softone ή σε custom scripts γίνεται με χρήση της include.

B.6 Execute Functions

Παραδείγματα: include 'PILib'; include 'ModuleIntf'; include 'SysRequest'; include 'myscript';

Εκτέλεση των εντολών ή functions γίνεται με ανάθεση τους σε μεταβλητή.

1) Εκτέλεση εσωτερικής SoftOne function Παραδείγματα:

x = RAISEEXCEPTION(‘Stopped!!!’);

2) Εκτέλεση custom function function PrintOnScreen(fMess) //Δημιουργία function με όνομα PrintOnScreen { x=SendResponse(ReplaceStr(fMess,'...',''), 'ImpTable.vMess'); } //…Χρήση της function PrintOnScreen… x = PrintOnScreen('Ολοκλήρωση εκτέλεσης εργασίας');

Page 167: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

167

C. Σχεδιασμός οθόνης διαλόγου (interface) Στο πρώτο τμήμα του script εισάγετε τις εντολές για το σχεδιασμό της οθόνης διαλόγου της εργασίας. Η λογική της σχεδίασης είναι ακριβώς ίδια με το σχεδιασμό προβολών χρησιμοποιώντας μόνο κώδικα(χωρίς την εμφάνιση των αντικειμένων στην οθόνη). Η εισαγωγή των πεδίων, πινάκων, panels και grids που θα εμφανίζονται στην αρχική οθόνη γίνεται μέσα στο block Form, το οποίο μπορεί να περιλαμβάνει τα παρακάτω sections. Form { [TABLES] … [CACHETABLES] … [PANELS] … [STRINGS] … }

C.1 Section TABLES Στo συγκεκριμένο section εισάγετε το πλήθος των πινάκων που θα χρησιμοποιήσετε μέσα στο παράθυρο διαλόγου. Η εισαγωγή ενός πίνακα γίνεται δηλώνοντας το όνομα του (με το οποίο θα αναφέρεστε στη συνέχεια μέσα στο script) καθώς και το caption του, χρησιμοποιώντας την παρακάτω σύνταξη.

TableName = ;;;;TableCaption;3;0

C.1.1 Table Fields

Παράδειγμα (Ex C.1) [TABLES] HeaderTable1 = ;;;;MyHeader;3;0 GridTable1 = ;;;;MyGrid;3;0 CacheTable1 = ;;;;MyCache;3;0

Η δήλωση των πεδίων των πινάκων γίνεται δημιουργώντας sections για κάθε TableName που έχετε εισάγει στο section Tables. Τα πεδία εισάγονται με χρήση της παρακάτω σύνταξης.

FieldName = DataType; DisplaySize; Require; Visible; ReadOnly; Caption; Editor; TblEditor; Forced; Default

DataType : Τύπος του πεδίου 1=String, 2=Smallint, 3=Integer, 4=Word, 6=Float, 11=DateTime, 16=Memo DisplaySize : Πλάτος του πεδίου Require : 0=μη υποχρεωτικό, 1=υποχρεωτικό Visible : 0=δεν εμφανίζεται, 1=εμφανίζεται ReadOnly : 0=επιτρέπει τη μεταβολή δεδομένων στο πεδίο, 1=δεν επιτρέπει τη μεταβολή δεδομένων Caption : Ετικέτα του πεδίου Editor : Editor του πεδίου (Δείτε ενότητα Editors) Forced : Υποχρεωτική τιμή του πεδίου Default : Προεπιλεγμένη τιμή του πεδίου

1) Πεδίο Ναι/Όχι με Caption «Επιβεβαίωση εργαίας» και προεπιλεγμένη τιμή Ναι. Παραδείγματα

[HeaderTable1] vImpOk=2;15;1;1;0;Επιβεβαίωση εργασίας;$Y;;;1

2) Πεδίο σειράς το οποίο θα εμφανίζει μόνο τις σειρές πωλήσεων, με προεπιλεγμένη την 7021.

vSalSeries=3;30;1;1;0;Σειρά πωλήσεων;SERIES(F[SOSOURCE=1351]);;;7021 3) Πεδίο ημερομηνίας το οποίο εμφανίζει προεπιλεγμένα την login date.

vDate=11;25;1;1;0;Από ημερ/νία εισαγωγής;;;;:X.SYS.LOGINDATE 4) Πεδίο κειμένου το οποίο θα χρησιμοποιηθεί σε memo για εμφάνιση των μηνυμάτων της εργασίας.

vImpMess=16;64000;0;1;1;Μηνύματα εργασίας...;;;; 5) Πεδίο επιλογής δεδομένων από τις εμπορικές κατηγορίες του είδους.

vItemCategory=2;25;1;1;0;Εμπορική κατηγορία;ITECATEGORY;;;

Page 168: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

168

6) Πεδίο κειμένου επιλογής δεδομένων από τα είδη και επιστροφή του κωδικού τους. vItemCode=1;25;0;1;0;Από κωδικό είδους;ITEM(M,R[CODE]);;;

7) Πεδίο επιλογής αρχείου από τον υπολογιστή. Επιστρέφει τη διαδρομή του.

vFile=1;256;1;1;0;Pick File;$Filename;;; 8) Πεδίο εμφάνισης button, το οποίο εκτελεί μία εργασία. Το συγκεκριμένο εμφανίζει τις ισοτιμίες νομισμάτων

vButton=2;15;0;1;0;Button;XCMD:DAYRATES;;; 9) Πεδίο επιλογής δεδομένων από τον πίνακα των ΑΧ για δεδομένα που εισάγονται σε άλλα φίλτρα του διαλόγου.

vWhouse=1;15;0;1;0;Α.Χ.;WHOUSE(W[EXISTS(SELECT 1 FROM BRANCH B WHERE B.COMPANY= A.COMPANY AND B.BRANCH=:ImpTable.vBranch AND CHARINDEX(:ImpTable.vFilter+CAST(A.WHOUSE AS VARCHAR)+:ImpTable.vFilter,:ImpTable.vFilter+B.WHOUSES+:ImpTable.vFilter)>0)],Z,M,R[WHOUSE]);

10) Πεδίο επιλογής δεδομένων από τον πίνακα των ΜΜ και ενημέρωση αντίστοιχου πεδίου στα φίλτρα.

vMtrunit1Init=1;40;0;1;1;Μ.Μ. αρχικού κωδικού;MTRUNIT(U[vMtrunit1=MTRUNIT@]);; vMtrunit1=1;40;0;1;1;Μ.Μ.1 Νέου κωδικού;MTRUNIT;;

C.1.2 Browser Selected Records Σε scripts που εκτελούνται με δεξί κλικ σε ευρετήρια, η άντληση των επιλεγμένων εγγραφών του ευρετηρίου γίνεται χρησιμοποιώντας την εντολή SELRECS μέσα σε πίνακα του section [TABLES]. vWhere=16;80000;0;1;0;Επιλογή εγγραφών από Browser;;;&SELRECS;&SELRECS Στη συνέχεια στα sql queries που θα χρησιμοποιήσετε για να αντλήσετε δεδομένα βάσει των επιλεγμένων εγγραφών πρέπει να χρησιμοποιήσετε την εντολή $REMOVEQUOTES(:$ImpTable.vWhere) η οποία επιστρέφει σε sql query τα ids των εγγραφών είτε οι εγγραφές είναι από header πίνακα είτε οι εγγραφές είναι από object με ανάλυση γραμμών. Επιστρέφει δηλαδή τα πεδία κλειδιά των επιλεγμένων εγγραφών. Παράδειγμα (Ex C.2) Xρήση επιλεγμένων εγγραφών από ευρετήριο παραστατικών σε sql query Form { [TABLES] ImpTable=;;;;;3;0 [ImpTable] vWhere=16;80000;0;1;0;Επιλογή παραστατικών από Browser;;;&SELRECS;&SELRECS } Connect Xplorer SoftoneCon { connect(); sDoc = SELECT FINDOC.FINDOC,.... FROM FINDOC WHERE ( $REMOVEQUOTES(:$ImpTable.vWhere) ) }

Page 169: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

169

C.2 Section CACHETABLES Στο συγκεκριμένο section εισάγετε πίνακες, οι οποίοι φορτώνονται κατά την αρχικοποίηση του script και αντλούν δεδομένα βάσει συγκεκριμένων queries του SQL Μπορούν να χρησιμοποιηθούν είτε από οποιοδήποτε σημείο του κώδικα είτε ως editors σε πεδία επιλογής των φίλτρων διαλόγου.

Παράδειγμα (Ex C.3) Χρήση cachetable ως editor σε πεδίο των φίλτρων διαλόγου με συγκεκριμένο where. Ανάλογα με την επιλογή του sodtype (από το χρήστη) εμφανίζονται διαφορετικά δεδομένα στο 2ο πεδίο. Form { [TABLES] ImpTable=;;;;;3;0 TblPAYMENT=;;;;TblPAYMENT;3;0 [ImpTable] vSodtype=2;25;1;1;0;Τύπος SODTYPE;$SODTYPE(W[12,13]);; vPayment=2;25;1;1;0;Πληρωμή;PAYMENT(W[SODTYPE=:ImpTable.vSodtype AND COMPANY=:X.SYS.COMPANY]) ;;; [TblPAYMENT] PAYMENT=2;5;0;1;0;;;;; NAME=1;30;0;1;0;;;;; COMPANY=2;5;0;0;0;;;;; SODTYPE=2;5;0;0;0;;;;; [CACHETABLES] TblPAYMENT=SELECT PAYMENT,NAME,COMPANY,SODTYPE AS SODTYPE FROM PAYMENT [PANELS] PANEL11=0;;0;50 [PANEL11] ImpTable.vSodtype ImpTable.vPayment }

Εικόνα C1

Page 170: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

170

C.3 Section PANELS Στο section panels εισάγετε τα panels που θα εμφανίζονται μέσα στο script, τα οποία δηλώνονται με την παρακάτω σύνταξη:

PanelName = PanelType; Caption; Level; Info

PanelType : Τύπος panel: 0=Area, 1=Page, 2=Grid, 4=Memo Caption : Ετικέτα του panel Level : Επίπεδο panel (για panels σε pages ή split panels μέσα σε άλλα panels) Info : Ιδιότητες panel: Πλάτη στηλών, G=Ομάδα, N=Bottom Line, H=Ύψος (πχ. 50, 50, 0, 0, G10, N, H20) Σημείωση : Όταν χρησιμοποιείτε Panel με τύπο Page (Σελίδα), τότε πρέπει στο Info να δηλώσετε το χαρακτήρα ‘F’ (πχ. PANEL11 = 1;'Page1-Areas';0;F ) Παράδειγμα (Ex C.4) Δημιουργία παράθυρου διαλόγου με 3 pages. Η 1η σελίδα θα έχει 2 περιοχές και ένα πλαίσιο κειμένου, η 2η σελίδα θα έχει μία περιοχή με 2 οριζόντιες split περιοχές (50-50) και η 3η σελίδα θα έχει ένα grid. Form { [TABLES] ImpTable=;;;;Master;3;0 [ImpTable] vImpOk =2;15;1;1;0;Επιβεβαίωση εργασίας;$Y;;0; vSeries =3;30;1;1;0;Σειρά πωλήσεων;SERIES(F[SOSOURCE=1351]);;;7021 vJOB = 2;15;1;1;0;Εργασία;JOB;;;&JOB vDate =11;25;1;1;0;Ημερομηνία;;;;:X.SYS.LOGINDATE vFile = 1;4000;1;1;0;Αρχείο;$Filename;;;C:\MyFiles vIteCat =2;25;1;1;0;Εμπορική κατηγορία;ITECATEGORY;;; vMess = 16;64000;0;1;0;Μηνύματα;;;; [PANELS] PANEL11 = 1;'Page1-Areas';0;F PANEL112 = 0;'Area1';1;50,50,0,0,N,H10 PANEL113 = 0;'Area2';1; 40,0,0,0,H20 PANEL114 = 4;'Memo';1;H70 PANEL12 = 1;'Page2-AreaSplit';0;F PANEL121 = 0;'AreaSplit';1;50,50,0,0 PANEL1211 = 0;'AreaSplit 1';2;100,0,0,0,H100 PANEL1212 = 0;'AreaSplit 2';2;100,0,0,0,H100 PANEL13 = 1;'Page3-Grid';0;F PANEL131 = 2;'Grid';1; [PANEL112] ImpTable.vImpOk ImpTable.vFile [PANEL113] ImpTable.vSeries [PANEL114] ImpTable.vMess [PANEL1211] ImpTable.vIteCat [PANEL1212] ImpTable.vDate [STRINGS] JOB=JOB [JOB] 1=Εισαγωγή ειδών 2=Εισαγωγή παραστατικών }

Page 171: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

171

Κατά την εκτέλεση του παραπάνω κώδικα θα εμφανιστεί το παράθυρο διαλόγου όπως στις Εικόνες C2, C3 και C4.

Εικόνα C2

Εικόνα C3

Εικόνα C4

Page 172: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

172

C.4 Section STRINGS Στο section strings δηλώνετε τα string lists που θα χρησιμοποιήσετε και θα εμφανίζονται με πεδίο επιλογής Για κάθε string list εισάγετε τις τιμές από τις οποίες μπορεί να επιλέξει ο χρήστης. Οι τιμές των string lists δηλώνονται όπως στον Database Designer. H δήλωση ενός string list φαίνεται παρακάτω.

StringName = StringName

Παράδειγμα (Ex C.5) Δημιουργία παράθυρου διαλόγου με 3 string lists. Στο συγκεκριμένο παράδειγμα χρησιμοποιούμε ένα string list ([SQLOrder]) μέσα στον κυρίως κώδικα για ταξινόμηση ενός sql query βάσει της επιλογής του χρήστη. Form { [TABLES] ImpTable = ;;;;Master;3;0 [ImpTable] vMyString1 = 2;15;1;1;0;StringList1;MyString1;;;&MyString1 vJob = 2;15;1;1;0;StringList2;Job;;;&Job vSQLOrder = 1;15;1;1;0;StringList3;SQLOrder;;;&SQLOrder [STRINGS] MyString1 = MyString1 Job = Job SQLOrder = SQLOrder [MyString1] 1=Προβολή Νέων Κωδικών 2=Ενημέρωση Πίνακα 3=Δημιουργία Νέων Κωδικών 4=Δημιουργία Παραστατικού Σύνθεσης [Job] 1=Εξαγωγή παραστατικών (1η φορά) 2=Επανάληψη εξαγωγής παραστατικών [SQLOrder] T.MTRMANFCTR = Κατασκευαστή ML.LINENUM = Αρχική παραγγελία [PANELS] PANEL1 = 0;'Area1';0;30,30,30,0,N,H100 [PANEL1] ImpTable.vMyString1 ImpTable.vJob ImpTable.vSQLOrder } Connect Xplorer SoftoneCon { connect(); sIteLines = SELECT ML.MTRL,ISNULL(ML.QTY1,0), ML.PRICE, FROM MTRLINES ML, MTRL MT WHERE ML.FINDOC = :$sDoc.FINDOC AND ML.MTRL = MT.MTRL ORDER BY $REMOVEQUOTES(:$ImpTable.vOrder); }

Εικόνα C5

Page 173: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

173

C.5 Section FIELDEXEC Στο section [FIELDEXEC] εισάγετε τα πεδία εκείνα που θα ενεργοποιούν την εκτέλεση του κυρίως κώδικα του script με κάθε αλλαγή της τιμής τους από το χρήστη. Δηλαδή αν έχετε ένα πεδίο string list μέσα στο συγκεκριμένο section, τότε αν ο χρήστης επιλέξει μία τιμή θα ενεργοποιηθεί το κουμπί της Εκτέλεσης. Με τα ανάλογα if μέσα στον κώδικα μπορείτε να ελέγξετε τη συμπεριφορά της εκτέλεσης βάσει της επιλεγμένης τιμής και να ενεργοποιήσετε κάποιες διαδικασίες, όπως πχ. το γέμισμα ενός grid των φίλτρων διαλόγου ή απόκρυψη panels. Παράδειγμα (Ex C.6) Δημιουργία παράθυρου διαλόγου το οποίο εμφανίζει/εξαφανίζει panels και αλλάζει τo caption ενός πεδίου βάσει επιλογών του χρήστη. Προσοχή: Για την εκτέλεση του script χρησιμοποιείτε την εντολή ClientImport. Form { [TABLES] ImpTable=;;;;Master;3;0 [ImpTable] vImpOk = 2;15 ;0;1;0;Επιβεβαίωση εργασίας;$Y;;0; vJob = 2;10 ;0;1;0;Εργασία;JOB;;; vSeries = 1;1024;0;1;0;Σειρές αγορών;#SERIES(W[SOSOURCE=1251 AND (TFPRMS=102 OR TFPRMS=103 OR TFPRMS=151 OR TFPRMS=152)]);;; vItemCode=1;25;0;1;0;Από κωδικό είδους;ITEM(M,R[CODE]);;; vFile=1;256;0;1;0;Pick File;$Filename;;; [FIELDEXEC] ImpTable.vJob [PANELS] PANEL1=0;Εργασία;0;100,G10 PANEL2=0;Σειρά;0;100,G10 PANEL3=0;Είδος;0;100,G10 PANEL4=0;Επιλογή αρχείου;0;100,G10 PANEL5=0;Επιβεβαίωση εργασίας;0;100,G10 [PANEL1] ImpTable.vJob [PANEL2] ImpTable.vSeries [PANEL3] ImpTable.vItemCode [PANEL4] ImpTable.vFile [PANEL5] ImpTable.vImpOk [STRINGS] JOB=JOB [JOB] 1=Εισαγωγή Δεδομένων 2=Εξαγωγή Δεδομένων } include 'ModuleIntf'; Connect Xplorer Export { connect(); } { Var x, vImpTable, vJob, vImpOk; vImpTable=GetDataSet(xModule,'ImpTable'); vJob =GetFieldValue(vImpTable,'vJob');

Page 174: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

174

vImpOk =GetFieldValue(vImpTable,'vImpOk'); if (vJob=1) //Εμφάνιση - απόκρυψη Panel { x=SetProperty(xModule, 'PANEL', 'USR_PANEL2', 'VISIBLE', 'TRUE'); x=SetProperty(xModule, 'PANEL', 'USR_PANEL3', 'VISIBLE', 'FALSE'); x=SetProperty(xModule, 'PANEL', 'USR_PANEL4', 'VISIBLE', 'TRUE'); x=SetProperty(xModule, 'FIELD', 'ImpTable.vFile', 'CAPTION', 'Αρχείο εισαγωγής'); } else if (vJob=2) { x=SetProperty(xModule, 'PANEL', 'USR_PANEL3', 'VISIBLE', 'TRUE'); x=SetProperty(xModule, 'PANEL', 'USR_PANEL2', 'VISIBLE', 'FALSE'); x=SetProperty(xModule, 'PANEL', 'USR_PANEL4', 'VISIBLE', 'TRUE'); x=SetProperty(xModule, 'FIELD', 'ImpTable.vFile', 'CAPTION', 'Αρχείο εξαγωγής'); } if (vImpOk=1) //Εκτέλεση εργασίας { if (vJob=1) { x=RAISEEXCEPTION('JOB=1'); } else { x=RAISEEXCEPTION('JOB=2'); } } }

Εικόνα C6

Εικόνα C7

Page 175: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

175

D. Main Code D.1 Converters & Functions Σε οποιοδήποτε σημείο του κώδικα μπορείτε να εισάγετε τη συνάρτηση Converter η οποία έχει συγκεκριμένη σύνταξη και όταν κληθεί επιστρέφει την τιμή του πεδίου που ορίζετε. Η σύνταξη της Converter είναι η παρακάτω:

Converter funcname (TableName:String, ‘Variables:String’, FieldName:String)

1) Converter που επιστρέφει το όνομα της εταιρίας βάσει του κωδικού Παραδείγματα:

Converter GetCompanyName (COMPANY, 'COMPANY', NAME); GetCompanyName(1);

2) Converter που επιστρέφει το id του είδους βάσει εταιρίας και κωδικού Converter ConvItem (MTRL, 'COMPANY;SODTYPE=51;CODE', MTRL); MTRL = ConvItem(:X.SYS.COMPANY,'100-01');

3) Converter που επιστρέφει το id του πελάτη βάσει εταιρίας και κωδικού Converter ConvCustomer (TRDR, 'COMPANY;SODTYPE=13;CODE', TRDR); TRDR = ConvCustomer(:X.SYS.COMPANY,sSalDoc.CUSTOMERCODE);

Με τον ίδιο ακριβώς τρόπο μπορείτε να ορίσετε τις δικές σας συναρτήσεις οι οποίες θα κληθούν από κάποιο σημείο του script και θα επιστρέψουν μία τιμή.

1) Συνάρτηση που εμφανίζει προειδοποιητικό μήνυμα Παραδείγματα:

function ShowMessage(fMess) { x = CallPublished('SysRequest.ExecuteXScript', VarArray(XModule, 1, 'function RUN() { X.WARNING('+#39+VarToStr(fMess)+#39+');}', 'RUN', 4)); } … x = ShowMessage('Παρακαλώ επιλέξτε εργασία...');

2) Συνάρτηση που τυπώνει κείμενο σε memo πεδίο (vMess) function PrintOnScreen(fMess) { x = SendResponse(ReplaceStr(fMess,'...',''), 'ImpTable.vMess'); } … x = PrintOnScreen('Ολοκληρώθηκε!'+#13+#10);

3) Συνάρτηση που εισάγει κείμενο με οριζόμενο μήκος σε μεταβλητή τύπου string για χρήση σε εξαγωγή ascii delimited αρχείου function AddStrLine(mystr, icount) { if (mystr = null) { mystr = ''; } mystr = Copy(mystr,1, icount); return (mystr + Space(icount - Len(mystr))); } … vTextWrite = CallPublished('PILib.CreateText', :ImpTable.vPath3); vLine = ''; vLine = vLine + AddStrLine('',1); vLine = vLine + AddStrLine('ΦΠΑ', 3); vLine = vLine + AddStrLine('23,00', 5); vLine = vLine + AddStrLine('ΦΠΑ', 3); vLine = vLine + AddStrLine(FormatFloat('0.000',HEADER.VAT3), 5); vLine = vLine + AddStrLine(VarToStr(HEADER.VATVAL3), 14); x = CallPublished('PILib.WriteLine', VarArray(vTextWrite, vLine, 2));

Page 176: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

176

4) Συνάρτηση που επιστρέφει την ημερομηνία σε sql μορφή function getSQLDate(v1,conName) { var sql,x, newd; newd = FormatSqlText(conName, ':1',v1); sql = 'Select convert(VARCHAR(8), '+newd+' , 112)'; x = GetQueryResults(conName, sql, ''); return x; } … newvMesDate = VarToStr(getSQLDate(:ImpTable.vMesDate,'S1Con'));

D.2 Connections Τα connections είναι οι συνδέσεις που θα κάνει το SoftOne για την άντληση των δεδομένων. Για κάθε connection ορίζετε και ένα συγκεκριμένο όνομα (πχ. ConS1), το οποίο χρησιμοποιείτε μέσα στο script.

• SoftOne Σύνδεση με τη login βάση του SoftOne (Χρειάζεται πάντοτε να υπάρχει ακόμα και σε άλλη σύνδεση)

Connection Types

• SQL SERVER Σύνδεση σε βάση του SQL

Σύνταξη Connect Xplorer ConS1{ connect(); dsfin = Select * from findoc where…. ; }

• ORACLE Σύνδεση σε βάση της ORACLE

Σύνταξη Connect DBDriver DocData { // Driver, DBase, ServerDB, User, Password, DataBaseName connect ('XADODrv.bpl', 'MSSQL', 'SERVER\MYSRV', 'sa', '123456', 'DBNAME'); }

• ODBC Σύνδεση μέσω ODBC (Excel, Access, κτλ.) βάσει του connection string

Σύνταξη Connect DBDriver SRSData { // Driver, DBase, ServerDB, User, Password, DataBaseName connect( 'XADODrv.bpl', 'oracle', 'SERVER', 'srvn1', ' srvn1', ' srvn1' ); ds1 = select * from MYTABLE where WHOUSE=1; }

Σύνταξη Connect DBDriver XlsData { connect( 'XADODrv.bpl', 'CUSTOM', 'Provider=MSDASQL.1;Persist Security Info=False;Data

Source=XlsMtrl' ); XlsMtrl = select * from [mtrl$]; }

Page 177: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

177

D.3 Variables Οι μεταβλητές του script μπορούν να δηλωθούν σε οποιοδήποτε σημείο πριν από την κλήση τους. Η δήλωση γίνεται με χρήση της Var και δεν δηλώνεται ο τύπος τους, αφού αναγνωρίζεται αυτόματα κατά τη χρήση τους. Δηλαδή οι μεταβλητές είναι τύπου var και όταν χρησιμοποιηθούν αλλάζει αυτόματα και ο τύπος τους. Var vTot, vLabelText, vRow, vRowCancel, UserResp, x;

D.4 Κλήση Βιβλιοθηκών Στον κυρίως κώδικα του script μπορείτε να καλέσετε εντολές που υπάρχουν είτε σε εσωτερικές βιβλιοθήκες του SoftOne είτε σε βιβλιοθήκες που έχετε δημιουργήσει εσείς και υπάρχουν σε διαφορετικό script. Για την κλήση των βιβλιοθηκών χρησιμοποιείτε την εντολή include. Οι βιβλιοθήκες του SoftOne αναλύονται σε επόμενη ενότητα. Παραδείγματα: include 'PILib'; include 'ModuleIntf'; include 'SysRequest'; Για τη χρήση εντολών από δική σας βιβλιοθήκη δημιουργείτε ένα script(πχ. MyLib) με τις εντολές και στη συνέχεια για να χρησιμοποιήσετε κάποια μέσα από τον κυρίως κώδικα απλά καλείτε τη βιβλιοθήκη όπως παραπάνω. Παράδειγμα: include 'MyLib';

Page 178: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

178

E. Εκτέλεση / Κλήση SBSL Script Τα scripts που δημιουργείτε με χρήση της SBSL μπορούν να εκτελεστούν με τους δύο παρακάτω τρόπους:

• FORMIMPORT : Εκτέλεση του script στο server και μεταφορά των αποτελεσμάτων στον client • CLIENTIMPORT : Εκτέλεση του script από τον client

Ο πρώτος τρόπος(εκτέλεση στο server) είναι σαφώς πιο γρήγορος από τον δεύτερο σε client / server περιβάλλον. Η κλήση με clientimport γίνεται στις περιπτώσεις που το script πρέπει να έχει πρόσβαση σε τοπικούς πόρους (οθόνη, πληκτρολόγιο, δίσκοι, file system). Αν για παράδειγμα ο χρήστης πρέπει να αλληλεπιδράσει της τελικής οθόνης που εμφανίζεται μετά την εκτέλεση του script(πχ. μετασχηματισμός παραστατικού με εμφάνιση της οθόνης του παραστατικού πριν την καταχώρηση) τότε πρέπει να γίνει χρήση της clientimport. Ένας τρίτος τρόπος εκτέλεσης ενός script είναι με χρήση της εντολής CLIENTIMPORT2, ο οποίος δε διαφέρει στον τρόπο μεταφοράς των δεδομένων στον client, απλά αλλάζει την εμφάνιση του αρχικού παραθύρου διαλόγου (δεν εμφανίζει την πρώτη γραμμή).

E.1 Εκτέλεση από Menu Η εκτέλεση ενός SBSL script από το μενού γίνεται με δημιουργία εργασίας τύπου BatchJob και χρήση των παρακάτω εντολών για FORMIMPORT και CLIENTIMPORT αντίστοιχα (Εικόνα Ε1).

FORMIMPORT,SCRIPTNAME:NameOfScript

CLIENTIMPORT,SCRIPTNAME:NameOfScript

Αν το script είναι αποθηκευμένο σε δίσκο του υπολογιστή τότε στη θέση της NameOfScript πληκτρολογείτε όλη τη διαδρομή του αρχείου(Εικόνα Ε2).

Εικόνα Ε1

Εικόνα Ε2

Page 179: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

179

E.2 Εκτέλεση από Browser Η εκτέλεση ενός SBSL script μέσα από το δεξί κλικ σε browser ενός συγκεκριμένου object γίνεται με δύο τρόπους, είτε με χρήση του αρχείου OBJINFOS.CFG είτε μέσα από σενάριο ροών.

Ε.2.1 Κλήση από αρχείο OBJINFOS.CFG Η χρήση του πρώτου τρόπου επιβάλλει τη δημιουργία του αρχείου OBJINFOS.CFG μέσα στο φάκελο της εφαρμογής κάθε client. Τα scripts που καλλούνται με το συγκεκριμένο τρόπο εμφανίζονται στο τέλος του pop up μενού στο δεξί κλικ των εγγραφών ενός ευρετηρίου(Εικόνα Ε4). Μέσα στο αρχείο OBJINFOS.CFG(Εικόνα Ε3) ορίζετε τα objects από τα οποια θα εκτελούνται τα scripts καθώς και τους τίτλους των εργασιών που θα εμφανίζονται στο δεξί κλικ, με χρήση των παρακάτω εντολών.

[OBJECTNAME_BRMENU]

1;Τίτλος εργασίας = FORMIMPORT,SCRIPTNAME:nameofscript

1;Τίτλος εργασίας = CLIENTIMPORT,SCRIPTNAME:nameofscript

Εικόνα Ε3

Εικόνα Ε4

Page 180: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

180

Ε.2.2 Κλήση από Σενάριο Ροών Η κλήση ενός SBSL script μέσα από σενάριο ροών(Εικόνα E5) έχει το πλεονέκτημα του ορισμού δικαιωμάτων χρήσης του κανόνα(άρα και του script) όπως ακριβώς ορίζονται τα δικαιώματα στα υπόλοιπα κυκλώματα της εφαρμογής. Η μοναδική διαφορά στη χρήση script σε σενάριο ροών από τη χρήση του αρχείου OBJINFOS.CFG είναι στην εμφάνιση είναι ότι οι συγκεκριμένες εντολές εμφανίζονται μέσα σε υποκατάλογο του μενού του δεξί κλικ, ο οποίος έχει τίτλο Σενάρια ροών(Εικόνα Ε6).

• Δημιουργείτε ένα νέο σενάριο ροών μέσα από το μενού «Σενάρια ροών» του Report Tools.

Παράδειγμα (Ex E.1) Κλήση του script “test1” από κανόνα ροών και εμφάνιση του στα παραστατικά πωλήσεων με τίτλο «Μεταφορά αρχείων ..».

• Στο πλαίσιο «Περιγραφή» δηλώνετε τον τίτλο που θα εμφανίζεται στο δεξί κλικ • Στην «Οντότητα» δηλώνετε το object που θα εμφανίζεται το σενάριο • Στο grid εισάγετε μία νέα γραμμή με τύπο “Import script” και περιγραφή την εντολή εκτέλεσης του script

“test1” FORMIMPORT,SCRIPTNAME:test1 (Εικόνα Ε5) • Κάνετε επανεκκίνηση της εφαρμογής και με δεξί κλικ σε επιλεγμένες εγγραφές των παραστατικών

πωλήσεων εμφανίζεται το σενάριο όπως στην εικόνα Ε6.

Εικόνα Ε5

Εικόνα Ε6

Page 181: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

181

Ε.3 Εκτέλεση από Προβολή Η κλήση ενός SBSL script μέσα από script οθόνης γίνεται με χρήση της συνάρτησης EXEC.

X.EXEC ('XCMD: FormImport, ScriptName: NameOfScript’)

• Εισαγωγή button στην προβολή των ειδών (100001).

Παράδειγμα (Ex E.2) Κλήση του script “UpdateItem” με χρήση button στην προβολή των ειδών για συγκεκριμένο είδος που έχει γίνει locate.

• Δημιουργία του script της προβολής όπως στην εικόνα Ε7. • Δημιουργία του SBSL script όπως στην εικόνα Ε8. Η άντληση του id του συγκεκριμένου είδους γίνεται μέσα

από το πεδίο vItemId αρκει να ορίσετε ως default value την τιμή :ITEM.MTRL. Βέβαια το συγκεκριμένο πεδίο δε χρειάζεται να το εμφανίζετε στα φίλτρα του διαλόγου της εργασίας.

Εικόνα Ε7

Εικόνα Ε8

Page 182: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

182

E.4 Παράμετροι Εκτέλεσης H SBSL σας δίνει τη δυνατότητα ορισμού παραμέτρων μέσα στον κώδικα οι οποίες μπορούν να ενεργοποιηθούν κατά την κλήση του script. Η εισαγωγή παραμέτρου γίνεται με χρήση του συμβόλου & πριν από τον ορισμό μίας μεταβλήτης(πχ &JOB). Η κλήση του script με συγκεκριμένη παράμετρο γίνεται προσθέτοντας στο τέλος το όνομα της παραμέτρου και την τιμή της(πχ FORMIMPORT,SCRIPTNAME:myscript,JOB:1).

Εκτέλεση του script του παραδείγματος Παράδειγμα (Ex E.3)

Ex C.3 για SODTYPE που θα δίνεται κατά την κλήση του. Το όνομα του script έιναι «cache1». Η μοναδική αλλαγή που πρέπει να γίνει στο script του παραδείγματος Ex C.3 είναι κατά τη δήλωση της vSodtype. Πρέπει να δηλωθεί μία τιμή (πχ &mySodtype) ως default value, η οποία θα είναι η παράμετρος που πρέπει να ορισθεί κατά την κλήση του script. Form { [TABLES] ImpTable=;;;;;3;0 TblPAYMENT=;;;;TblPAYMENT;3;0 [ImpTable] vSodtype=2;25;1;1;0;Τύπος SODTYPE;$SODTYPE(W[12,13]);;&mySodtype vPayment=2;25;1;1;0;Πληρωμή;PAYMENT(W[SODTYPE=:ImpTable.vSodtype AND COMPANY=:X.SYS.COMPANY]) ;;; [TblPAYMENT] PAYMENT=2;5;0;1;0;;;;; NAME=1;30;0;1;0;;;;; COMPANY=2;5;0;0;0;;;;; SODTYPE=2;5;0;0;0;;;;; [CACHETABLES] TblPAYMENT=SELECT PAYMENT,NAME,COMPANY,SODTYPE AS SODTYPE FROM PAYMENT [PANELS] PANEL11=0;;0;50 [PANEL11] ImpTable.vSodtype ImpTable.vPayment } Η κλήση του script μέσα από script οθόνης για Sodtype=13 γίνεται με χρήση της παρακάτω εντολής: X.EXEC ('XCMD: FormImport, ScriptName:cache1,mySodtype:13’) Αντίστοιχα η κλήση του script μέσα από μενού για διαφορετικό SODTYPE(πχ. 12) γίνεται με χρήση της: FormImport, ScriptName:cache1,mySodtype:12

Page 183: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

183

F. SBSL Internal Functions Στη συγκεκριμένη ενότητα θα βρείτε όλες τις εσωτερικές συναρτήσεις που μπορείτε να καλέσετε μέσα από SBSL script.

Abs(Number: numeric): numeric; Επιστρέφει την απόλυτη τιμή του Number.

AddMessage(); Ενημερώνει την οθόνη που εμφανίζεται όταν γίνει κλικ στο link Αποτελέσματα μετά την εκτέλεση μίας εργασίας.

CallPublished(FunctionName:string, Params:VarArray);

Παράδειγμα Προσθήκη κειμένου σε αποτελέσματα με δυνατότητα hyperlink σε συγκεκριμένη εγγραφή παραστατικού Object='SALDOC'; vMess='Μετασχηματίστηκε το παραστατικό <' + sDoc.FINCODE + '$' + vObject + ';' + VarToStr(sDoc.FINDOC) + '> στο παραστατικό <' + vFincode + '$' + vObject + ';' + VarToStr(resultnum) + '> επιτυχώς!' + #10; x=AddMessage(vMess);

Καλεί την FuntionName της εφαρμογής. Δηλαδή μπορείτε να καλέσετε οποιαδήποτε συνάρτηση από τις Libraries της επόμενης ενότητας.

Βλ.

Παράδειγμα 1. Επανακαταχώρηση παραστατικών πωλήσεων (βάσει συγκεκριμένου query) με αλλαγή της τιμής του πεδίου PAYMENT.

Case Study 1 2. Εισαγωγή Excel αρχείου από επιλεγμένο αρχείο παραμέτρων (vExcelFile) σε sql πίνακα με όνομα CCCIMPORTEXCEL(Κλήση της συνάρτησης Evaluate από τη Library SysRequest). x = CallPublished('SysRequest.Evaluate', VarArray(ImportModule('Imp'), 'ExcelImport('+#39+:ImpTable.vExcelFile+#39+','+#39+'CCCIMPORTEXCEL'+#39+',1,2)', 2));

CharToOem (var:char); Μετατρέπει character σε OEM.

Commit(Connectionstring:string);

Παράδειγμα x = CallPublished('PILib.WriteLine', VarArray(vFileWrite, CharToOEM(vLine), 2));

Κανει commit το connentionstring. Λειτουργεί μόνο με κλήση FORMIMPORT

Copy(Source:string, Start:integer, Count:integer);

Παράδειγμα x = Commit('SoftOne');

Επιστρέφει το κείμενο Source από τον χαρακτήρα Start και για πλήθος Count χαρακτήρων.

DateOfDateTime(DateTime:TDateTime); Επιστρέφει την ημερομηνία για συγκεκριμένη TDATETIME.

DayOfDate(DateTime:TDateTime): integer;

Παράδειγμα TRNDATE = DateOfDateTime(sSalDoc.TRNDATE);

Επιστρέφει την ημέρα της δοθείσας ημερομηνίας.

DayOfWeek(): integer;

Παράδειγμα fTmp = :X.SYS.SYSDATE; if (DayOfDate(fTmp) < 10) fSystemDate = fSystemDate + '0'; fSystemDate = fSystemDate + VarToStr(DayOfDate(fTmp)) + '_';

Επιστρέφει την τρέχουσα ημέρα της εβδομάδας σε μορφή index. (1=Κυριακή, 2=Δευτέρα,…, 7=Σάββατο)

DaysinMonth(DateTime:TDateTime): integer; Επιστρέφει το πλήθος των ημερών του μήνα της δοθείσης ημερομηνίας.

Page 184: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

184

Delay(Time:Integer); Καθυστερεί την εκτέλεση βάσει του χρόνου που υπολογίζεται σε msec.

deQuotedStr (text:string);

Παράδειγμα Καθυστέρηση εκτέλεσης για 2 sec x = Delay(2*1000);

Επιστρέφει το text χωρίς εισαγωγικά.

EncodeTime(Hours:integer, Minutes:integer, sec:integer, ms:integer): TDateTime; Επιστρέφει TDateTime για συγκεκριμένα Hours, minutes, seconds, milliseconds.

ExecPrg(File:string, Params:string); Εκτελεί το αρχείο filename με παραμέτρους params

ExecSQL(Connection:string, Query:string, Params:VarArray);

Παράδειγμα vExecPrg = '/c'; x = ExecPrg('c:\windows\system32\cmd.exe', vExecPrg);

Εκτελεί απευθείας την εντολή Query στη βάση βάσει της σύνδεσης Connection.

FormatSQLText(Connection:string, StringToBeFormatted:string, Params:VarArray);

Παράδειγμα x = ExecSql('SoftOne', 'Update TEMP Set Updated = 1 Where CUSCODE=' + QuotedStr(sCustomer.CUSTOMERCODE) , Null);

Επιστρέφει σε SQL μορφή το string της δεύτερης παραμέτρου.

GetIndexVar (Array:VarArray, index:integer);

Παράδειγμα Επιστρέφει σε SQL μορφή την ημερομηνία vDateL FormatSqlText('SoftOne', ':1 ', :ImpTable.vDateL)

Επιστρέφει την τιμή του στοιχείου index του Array. (zerobased Array)

GetTimeHour(DateTime:TDateTime): integer;

Παράδειγμα if (VarArrayDimCount(fVar) > 0) fVar = GetIndexVar(fVar,0);

Επιστρέφει την ώρα σε ακέραιο για συγκεκριμένη DateTime.

GetTimeMin(DateTime:TDateTime): integer;

Παράδειγμα fTmp = :X.SYS.SYSDATE; if (GetTimeHour(fTmp) < 10) fSystemDate = fSystemDate + '0';

Επιστρέφει τα λεπτά σε ακέραιο για συγκεκριμένη DateTime.

GetTimeSec(DateTime:TDateTime): integer;

Παράδειγμα fTmp = :X.SYS.SYSDATE; if (GetTimeMin(fTmp) < 10) fSystemDate = fSystemDate + '0'; fSystemDate = fSystemDate + VarToStr(GetTimeMin(Time)) + '_';

Επιστρέφει τα seconds σε ακέραιο για συγκεκριμένη DateTime.

GetTimems(DateTime:TDateTime): integer;

Παράδειγμα fTmp = :X.SYS.SYSDATE; if (GetTimeSec(fTmp) < 10) fSystemDate = fSystemDate + '0'; fSystemDate = fSystemDate + VarToStr(GetTimeSec(Time));

Επιστρέφει τα ms σε ακέραιο για συγκεκριμένη DateTime.

Page 185: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

185

GetQueryDataset(Datasetname:string, ConnectionString:string, Query:string, Params:VarArray); Εισάγει τα δεδομένα από το querystring στο grid του interface ή σε κάποιο dataset του script. Πρέπει υποχρεωτικά τα πεδία από το query να είναι με το ίδιο order που υπάρχουν και στο grid/dataset. Λειτουργεί μόνο με κλήση CLIENTIMPORT

GetQueryResults(Connection:string, Query:string, Params:VarArray);

Παράδειγμα x=GetQueryDataSet('TblSID', 'Export', 'SELECT FR, FV FROM SID', null);

Επιστρέφει την τιμή για το Query. Επιστρέφει ένα record που μπορεί να έχει μία τιμή ή ένα Array.

GetWhere(XModule, ParamWhere:string, Param3(0=and,1=where));

Παράδειγμα fVat = GetQueryResults('SoftOne', 'SELECT TOP 1 VAT FROM VAT WHERE ISACTIVE=1', null);

Δημιουργεί σε sql μορφή το sqlwhere των φίλτρων που θέτει ο χρήστης στο ParamWhere χρησιμοποιώντας and ή where ανάλογα με το Param3. To sqlwhere δημιουργείται σωστά είτε συμπληρωθούν είτε όχι σε runtime τα πεδία που χρησιμοποιούνται ως φίλτρα.

GrConvert(text:string): string;

Παράδειγμα vFilters = GetWhere(XModule, 'F.TRNDATE=:ImpTable.vDateL;:ImpTable.vDateH' +#13+#10+ 'F.SERIES=#:ImpTable.vSeries', 0);

Επιστρέφει το text converted σε ελληνικούς χαρακτήρες.

ImportModule(Module:string);

Παράδειγμα FINCODE = GrConvert(Trim(sSalDoc.FINCODE));

Επιστρέφει τον pointer του Module στο οποίο γίνεται import.

Len(text:string): integer;

Παράδειγμα Εισαγωγή Excel αρχείου από επιλεγμένο αρχείο παραμέτρων (vExcelFile) σε sql πίνακα με όνομα CCCIMPORTEXCEL x=CallPublished('SysRequest.Evaluate', VarArray(ImportModule('Imp'), 'ExcelImport('+#39+:ImpTable.vExcelFile+#39+','+#39+'CCCIMPORTEXCEL'+#39+',1,2)', 2));

Επιστρέφει σε ακέραιο το μήκος του text.

ModuleCommand (Module, S1code, Params:String); Καλεί το SoftOne command με κωδικό S1code και παραμέτρους Params.

MonthOfDate(DateTime:TDateTime): integer;

Παράδειγμα x=CallPublished('ProgLibIntf.ModuleCommand',VarArray(vModule,1032,VartoStr(resultnum),3));

Επιστρέφει το μήνα της δοθείσας ημερομηνίας.

Now():TDateTime; Επιστρέφει την τρέχουσα ημερομηνία και ώρα.

OemToChar (var:oem); Μετατρέπει oem σε char.

QuotedStr (text:string); Επιστρέφει το text με μονά εισαγωγικά.

Pos(Source:string, text:string): integer;

Παράδειγμα x = GetQueryResults('SoftOne','SELECT COUNT(*) FROM TRDR WHERE COMPANY='+VarToStr(:X.SYS.COMPANY)+' AND SODTYPE=13 AND CODE='+QuotedStr(VarToStr(fAdd)+VarToStr(fCounter)), null);

Επιστρέφει τη θέση του text στο κείμενο source.

Page 186: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

186

RaiseException(Message:string); Εμφανίζει το μήνυμα Message στην οθόνη και διακόπτει τη ροή του κώδικα.

RefreshMemoryTable(MemoryTable:string);

Παράδειγμα Εμφάνιση μηνύματος απαγόρευσης σε περίπτωση που δεν έχει γίνει επιλογή του flag vImpOK if (:ImpTable.vImpOk=0) x = RaiseException('Δεν έχετε επιλέξει επιβεβαίωση εκτέλεσης!!!');

Κάνει refresh στο memory Table και επιστρέφει τον pointer.

ReplaceStr (text:string, String1:string, String2:string);

Παράδειγμα Ds = RefreshMemoryTable('SERIES');

Αντικαθιστά στο text το κείμενο String1 με το κείμενο String2.

RollBack(Connectionstring:string);

Παράδειγμα vWhere = ReplaceStr(vWhere, 'AND AND', 'AND');

Κανει rollback το connentionstring. Λειτουργεί μόνο με κλήση FORMIMPORT

SafeCallPublished(FunctionName:string, Params:VarArray);

Παράδειγμα x = RollBack('SoftOne');

Καλεί την FuntionName της εφαρμογής. Αν εμφανιστεί error δεν θα εμφανίσει το exception στην οθόνη. Επίσης ενημερώνει την εσωτερική μεταβλητή του συστήματος ImportError. Δηλαδή μπορείτε να καλέσετε οποιαδήποτε συνάρτηση από τις Libraries της επόμενης ενότητας.

SafeExecSQL(Connection:string, Query:string, Params:VarArray);

Παράδειγμα Εισαγωγή Excel αρχείου από επιλεγμένο αρχείο παραμέτρων (vExcelFile) σε sql πίνακα με όνομα CCCIMPORTEXCEL x = SafeCallPublished('SysRequest.Evaluate', VarArray(ImportModule('Imp'), 'ExcelImport('+#39+:ImpTable.vExcelFile+#39+','+#39+'CCCIMPORTEXCEL'+#39+',1,2)', 2));

Εκτελεί το Query. Δεν εμφανίζει το exception σε περίπτωση λάθους και συνεχίζει τη ροή του κώδικα.

SendResponse(Values, Fields:string);

Παράδειγμα Διαγραφή των δεδομένων του πίνακα SID από τη βάση (είτε έχει δημιουργηθεί είτε όχι). x = SafeExecSQL('Export', 'TRUNCATE TABLE SID', Null);

Ενημέρωση πεδίων του Interface του script.

Space (num:integer);

Παράδειγμα Ενημέρωση των πεδίων του Interface: Τρέχουσα(CurRec), Άκυρες(CanRec), Συνολικές(TotRec), Μηνύματα(LabelText) x = SendResponse( vRow, vRowCancel, vTot, vLabelText, 'RESULTS.CURREC;RESULTS.CANREC;RESULTS.TOTREC;RESULTS.LABELTEXT');

Εισάγει num κενά.

StartTrans(Connectionstring:string);

Παράδειγμα vLine= VarToStr(Exp.TRNDATE) + Space(1);

Ανοίγει Transaction για το connectionstring. Λειτουργεί μόνο με κλήση FORMIMPORT

StrToDate(text:string):TDateTime;

Παράδειγμα x = StartTrans('SoftOne');

Μετατρέπει string σε Date format.

StrToFloat (var:string); Μετατρέπει float σε string.

Page 187: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

187

StrToInt (var:string); Μετατρέπει string σε integer.

TableExists(Connection:string,TableName:string); Ελέγχει αν υπάρχει ο πίνακας TableName και επιστρέφει True ή False

Trim(text:string): string;

Παράδειγμα Έλεγχος αν υπάρχει ο πίνακας SID και δημιουργία του σε περίπτωση που δεν υπάρχει if (TableExists('Export', 'SID') = 'False') x = ExecSQL('Export', 'CREATE TABLE SID (FR INT, FV INT)', Null);

Αφαιρεί τα κενά και επιστρέφει το text.

Time():TDateTime; Επιστρέφει την τρέχουσα ώρα.

VarArray(Var1, Var2, …, Varn, n); Δηλώνει ένα array από variants, όπου το τελευταίο στοιχείο είναι το πλήθος των variants.

VarArrayDimCount (Array:VarArray); Επιστρέφει το πλήθος των διαστάσεων του Array.

VarArrayHighBound(Array:VarArray, Dim:integer);

Παράδειγμα if (VarArrayDimCount(fVar)>0) fVar=GetIndexVar(fVar,0);

Επιστρέφει το πλήθος των στοιχείων του Array για τη διάσταση Dim.

VarToStr(Param:Variant);

Παράδειγμα vCaptions = VarArray(VarArray('Κωδικός', 'Περιγραφή', 'Κατηγορία',3), VarArray('Code', 'Name', 'Category' , 3), 2); vCaptions = GetIndexVar(vCaptions,1); //Επιστρέφει το 1ο VarArray vSQLCaptions = VarArray('cCODE', 'cNAME', 'cMTRCATEGORY', 3) while (i <= VarArrayHighBound(vCaptions,1)) //Έλεγχει το i σε σχέση με το πλήθος των στοιχείων του vCaptions(3 στοιχεία) { vLang=vLang+', '+QuotedStr(GetIndexVar(vCaptions,i))+' AS '+GetIndexVar(vSQLCaptions,i); i=i+1; }

Μετατρέπει την Param σε string.

XModule();

Παράδειγμα vRow = 100; vMess=vMess + 'Βρέθηκαν ' + VarToStr(vRow) + ' αρχεία...'

Επιστρέφει τον pointer του module.

XSupport(); Επιστρέφει τον pointer στο Connection.

YearOfDate(DateTime:TDateTime): integer; Επιστρέφει το έτος της δοθείσας ημερομηνίας. Παράδειγμα fTmp = :X.SYS.SYSDATE; fSystemDate = VarToStr(YearOfDate(fTmp));

Page 188: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

188

G. SoftOne Libraries Στη συγκεκριμένη ενότητα θα βρείτε ανάλυση των Libraries του SoftOne με όλες τις μεθόδους και συναρτήσεις που μπορείτε να καλέσετε μέσα από SBSL script. Η κλήση των εντολών γίνεται είτε χρησιμοποιώντας τη συνάρτηση Callpublished είτε απευθείας αφού πρώτα δηλώσετε τη συγκεκριμένη βιβλιοθήκη με την εντολή include.

G.1 ModuleIntf

G.1.1 Object Methods – Functions

CreateSupport(XCOName, UserName, Password, Company, Branch, LoginDate); Δημιουργεί ένα νέο Connection στο Soft1. Οι παράμετροι αφορούν στις Login πληροφορίες. Αν δε δηλωθούν οι 3 πρώτες μεταβλητές τότε θεωρείται ως σύνδεση η Login συνδεση.

DestroySupport(SupportHandle);

Παράδειγμα fCompany=:X.SYS.COMPANY; fDefaultBranch=CallPublished('ProgLibIntf.GetDefaultBranch', VarArray(:X.SYS.USER, fCompany, 2)); CreateSupport ('', '', '', fCompany, fDefaultBranch, :X.SYS.LOGINDATE);

Ελευθερώνει το Connection που δημιουργήθηκε στο στο Soft1. Ακολουθεί την CreateSupport.

CreateSupportModule(SupportHandle, ModuleName);

Παράδειγμα x=DestroySupport(fSupport);

Δημιουργεί νέο Module για συγκεκριμένο Connection που έχει δημιουργηθεί με την CreateSupport.

GetTextValue(TextName);

Παράδειγμα Module=CreateSupportModule(vSupport,'FiFoFinpayTerms');

Διαβάζει τα Resources από τα pre της Εφαρμογής

OpenSubForm(ModuleHandle, SubFormName, OpenMode);

Παράδειγμα vData=GetTextValue('CheckImportData');

Ανοίγει ή κλείνει τη sub form με όνομα SubFormName. Η φόρμα ανοίγει πάντοτε modal. Η OpenMode δέχεται τις εξής τιμές: 1: καλεί το event before show form, -1: Κλείνει τη φόρμα με OK, -2: Κλείνει τη φόρμα με Cancel.

CreateModule(ModuleName); Δημιουργεί νέο Module στο τρέχον Connection

DestroyModule(ModuleHandle);

Παράδειγμα fModule=CreateModule('CUSTOMER,WARNINGS:OFF');

Καταστρέφει το Module που δημιουργήσαμε με την CreateModule ή την CreateSupportModule

InsertModule(ModuleHandle);

Παράδειγμα x=DestroyModule(fModule);

Θέτει το Module σε κατάσταση Insert Παράδειγμα x=InsertModule(fModule);

Page 189: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

189

LocateModule(ModuleHandle, RecordID); Βρίσκει την εγγραφή με βάση το RecordID και κάνει Locate.

DeleteModule(ModuleHandle);

Παράδειγμα fFinDoc = 11999; x=LocateModule(fModule, fFinDoc);

Διαγράφει την εγγραφή για το Module που έχει κάνει ήδη Locate

PostModule(ModuleHandle);

Παράδειγμα x = DeleteModule(fModule);

Καταχωρεί την εγγραφή του Module

GetParentModule(ModuleHandle);

Παράδειγμα x = PostModule(fModule)

Επιστρέφει το ParentModule του τρέχοντος Module

GetChildModule(ModuleHandle, Name); Επιστρέφει το ChildModule του τρέχοντος Module

GetDataSet(ModuleHandle, Name); Επιστρέφει το Dataset του Module

GetParamValue(ModuleHandle, PrmName);

Παράδειγμα fCustomer=GetDataSet(fModule,'CUSTOMER');

Επιστρέφει την τιμή του PrmName

SetParamValue(ModuleHandle, PrmName, PrmValue);

Παράδειγμα vFile = GetParamValue(XModule,'FILE');

Θέτει νέα τιμή στη παράμετρο του Module Παράδειγμα fDataSet=GetDataSet(vModule,'SERIES'); x=SetFieldValue(fDataSet,'CSERIES', fCSeries);

Page 190: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

190

G.1.2 DataSet – Field Functions

CreateDataSet(ModuleHandle, Name); Δημιουργεί το Dataset με όνομα Name

DataSetLocate(DataSetHandle, FieldNames, FieldValues); Επιστρέφει True αν βρεθεί εγγραφή στο DataSet

DataSetEdit(DataSetHandle);

Παράδειγμα vFISCPRD = RefreshMemoryTable('FISCPRD'); x = DataSetLocate(vFISCPRD, 'FISCPRD', GetFieldValue(vQUESTIONS,'FISCPRD'));

Θέτει το DataSet σε κατάσταση Edit

DataSetInsert(DataSetHandle);

Παράδειγμα fCustomer=GetDataSet(fModule,'CUSTOMER'); x=DataSetEdit(fCustomer);

Κάνει Insert στο DataSet

DataSetAppend(DataSetHandle);

Παράδειγμα fIteLines = GetDataSet(fModule,'ITELINES'); x = DataSetInsert(fIteLines);

Κάνει Append στο DataSet

DataSetEof(DataSetHandle);

Παράδειγμα fModule=CreateModule('SALDOC,WARNINGS:OFF'); x = InsertModule(fModule); fSalDoc = GetDataSet(fModule,'SALDOC'); fIteLines = GetDataSet(fModule,'ITELINES'); x = DataSetAppend(fIteLines);

Ελέγχει το DataSet για End-Of-File

DataSetPrior(DataSetHandle);

Παράδειγμα Ds=GetSQLDataSet(0, 'SELECT FINDOC FROM FINDOC WHERE…..', null) while (DataSetEof(Ds)=0) { … x = DataSetNext(Ds); }

Μετακινεί το δεικτη του DataSet στην προηγούμενη εγγραφή

DataSetFirst(DataSetHandle);

Παράδειγμα vMyTable = GetDataSet(XModule,'CCCMYTABLE'); x=DataSetPrior(vMyTable);

Μετακινεί το δεικτη του DataSet στην πρώτη εγγραφή

DataSetLast(DataSetHandle);

Παράδειγμα x=DataSetFirst(vMyTable);

Μετακινεί το δεικτη του DataSet στην τελευταία εγγραφή Παράδειγμα x=DataSetLast(vMyTable);

Page 191: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

191

DataSetNext(DataSetHandle); Μετακινεί το δεικτη του DataSet στην επόμενη εγγραφή

DataSetPost(DataSetHandle);

Παράδειγμα x=DataSetNext(vMyTable);

Καταχωρεί την τρέχουσα εγγραφή του DataSet

DataSetDelete(DataSetHandle);

Παράδειγμα x=DataSetPost(vMyTable);

Διαγράφει την τρέχουσα εγγραφή του DataSet

DataSetState(DataSetHandle);

Παράδειγμα x=DataSetDelete(vMyTable);

Επιστρέφει το state του dataset (βλ. πίνακα).

DataSetSetFilter(DataSetHandle, Filterstring); Εφαρμογή του φίλτρου Filterstring σε Dataset

SetDataSetLinks(ModuleHandle, DataSetHandle, Value); Ενεργοποίηση / απενεργοποίηση των queries που τρέχουν για τα Hyperlinks πινάκων κατά το «γέμισμα» εγγραφών σε dataset. Λειτουργεί όπως η αντίστοιχη συνάρτηση στο Javascript.

GetFieldType(DataSetHandle, FieldName);

Παράδειγμα fModule=CreateModule('INST,WARNINGS:OFF'); x = InsertModule(fModule); fDsInst = GetDataSet(fModule,'INST'); x = SetDataSetLinks(fModule, fDsInst, 0);

Επιστρέφει τον τύπο του πεδίο σε ακέραιο αριθμό (1=String, 2=Smallint, 3=Integer, 4=Word, 6=Float, 11=DateTime, 16=Memo)

GetFieldValue(DataSetHandle, FieldName);

Παράδειγμα fField = DataSetFieldName(fDs, fFieldsCounter); fFieldType = GetFieldType(fDs, fField);

Επιστρέφει την τιμή του πεδίου της τρέχουσας εγγραφής του DataSet

SetFieldValue(DataSetHandle, FieldName, FieldValue); Αναθέτει τιμή στο πεδίο της τρέχουσας εγγραφής του DataSet

SetValueFromFile(DataSetHandle, FieldName, FileName); Καταχωριση σε Blob πεδίο του DataSet.

DataSetRecordCount(DataSetHandle); Επιστρέφει τον πλήθος των εγγραφών του DataSet

DataSetOpen(DataSetHandle); Θέτει το DataSet σε Open mode

DataSetClose(DataSetHandle); Κάνει close το DataSet

DataSetRecNo(DataSetHandle); Επιστρέφει τη θέση της εγγραφής στο DataSet

Page 192: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

192

DataSetSetRecNo(DataSetHandle,RecNo); Μετάβαση στη θέση της εγγραφής στο DataSet

DataSetDisableControls(DataSetHandle); Απενεργοποιεί τα Windows Controls όταν προκαλείται αλλαγή στο DataSet

DataSetEnableControls(DataSetHandle); Ενεργοποιεί τα Windows Controls μετά την αλλαγή στο DataSet

DataSetFieldCount(DataSetHandle); Επιστρέφει το πλήθος των πεδίων ενός Dataset

DataSetFieldName(DataSetHandle, FieldIndex); Επιστρέφει το όνομα πεδίου ενός Dataset βάσει του index

GetSQLDataSet(SupportHandle, SQLStatement, Params); Επιστρέφει το dataset του SQLStatement.

GetBand(ModuleHandle, BandName);

Παράδειγμα Ds=GetSQLDataSet(0, 'SELECT DISTINCT CODE, NAME FROM CCCMYTABLE ORDER BY CODE, NAME', null);

Επιστρέφει τη Band του Module

SetBandXProperty(BandHandle, FieldName, PropIndex, PropValue); Ρυθμίζει τις ιδιότητες της στήλης της Band

GetBandXProperty(BandHandle, FieldName, PropIndex); Επιστρέφει την τιμή της ιδιότητας της στήλης της Band

AddBandField(BandHandle, FieldName); Προσθέτει νέα στήλη στη Band

DeleteBandField(BandHandle, FieldName); Διαγράφει τη στήλη της Band

GetField(DataSetHandle, FieldName); Επιστρέφει το πεδίο του DataSet

AddFieldToDataSet(DataSetHandle, FieldName, Type, Size, Label); Προσθήκη πεδίου σε dataset

ResolveEditors(ModuleHandle, TableName); Ακολουθεί το SetFieldEditor και ενεργοποεί τους νέους Editor στον πίνακα

SetFieldEditor(ModuleHandle, FieldName, Editor, ClearOld); Αλλάζει τον Editor του πεδίου

SetProperty(ModuleHandle, ControlType, ControlName, Property, Value); Θέτει στο Module το Module με παραμέτρους 1,2,3(πχ. ‘PANEL’,’PANELNAME’,’VISIBLE’,’TRUE’)

DebugString(text:string) published 'ModuleIntf.DebugString'; Καταχωρείται στο EventLog το μήνυμα text.

Page 193: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

193

G.2 PiLib

G.2.1 General File Functions

AsciiImport(Params1,Params2); Param1 = Παράμετροι, Param2 = Γραμμογράφηση αρχείου Διαβάζει ένα ascii file με συγκεκριμένη γραμμογράφηση και το εισάγει σε πίνακα στη βάση

CreateDir(Directory:string); Δημιουργεί τον κατάλογο Directory.

DeleteFile(FileName:string);

Παράδειγμα x = CallPublished('PILib.CreateDir', Directory);

Διαγράφει το αρχείο FileName.

DirectoryExists(Directory:string);

Παράδειγμα vFileDel = DeleteFile(FileName);

Ελέγχει εάν υπάρχει ο κατάλογος Directory και επιστρέφει True ή False.

FileExists(FileName:string);

Παράδειγμα x = CallPublished('PILib.DirectoryExists', Directory);

Ελέγχει αν υπάρχει το αρχείο.

ForceDirectories(Path:string);

Παράδειγμα if (FileExists(FileName)='True') { …. }

Εξασφαλίζει ότι όλοι οι κατάλογοι του συγκεκριμένου Path υπάρχουν. Σε περίπτωση που δεν υπάρχουν θα δημιουργηθούν.

RemoveDir(Directory:string);

Παράδειγμα x = CallPublished('PILib.ForceDirectories', Path);

Διαγραφεί τον κατάλογο Directory εάν είναι άδειος. Παράδειγμα x = CallPublished('PILib.RemoveDir', Directory);

Page 194: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

194

G.2.2 Text File Functions

CreateText(FileName:string); Δημιουργεί το αρχείο FileName.

OpenText(FileName:string);

Παράδειγμα vFileName='.\folder1 '+'Myname.log'; vFile=CreateText(vFileName);

Ανοίγει το αρχείο FileName για Read ή Write.

ReadLine(FileName:string);

Παράδειγμα vFile=OpenText(:ImpTable.vFile);

Διαβάσει την τρέχουσα γραμμή του αρχείου FileName.

WriteLine(FileName:string, Text:string);

Παράδειγμα while (Eof(vFile)=0) { vLine=ReadLine(vFile); }

Γράφει γραμμή με κείμενο Text στο αρχείο FileName.

EOF(FileName:string);

Παράδειγμα x=WriteLine(vFile, ' Έναρξη εργασίας');

Ελέγχει το αρχείο FileName για End Of File.

CloseText(FileName:string);

Παράδειγμα while (Eof(vFile)=0) { vLine=ReadLine(vFile); }

Κλείνει το αρχείο FileName, το οποίο έχει ανοίξει με OpenText.

WriteTextToFile(FileName:string, Text:string);

Παράδειγμα x=CloseText(vFile);

Γράφει το κείμενο Text στο αρχείο FileName, αντικαθιστώντας οποιοδήποτε άλλο κείμενο του αρχείου.

ReadTextFromFile(FileName:string);

Παράδειγμα x = WriteTextToFile(vPath+'PL-'+VarToStr(sDoc.FINDOC)+'.TXT', vText);

Ανοίγει το αρχείο FileName και διαβάζει το περιεχόμενό του.

ReadFile(FileName:string);

Παράδειγμα x = ReadTextFromFile(vFile);

Ανοίγει το αρχείο FileName και το διαβάζει σε Stream.

AnsiToUTF8(Text:string);

Παράδειγμα x = ReadFile(vFile);

Μετατρέπει το κείμενο Text από ANSI σε UTF8. Παράδειγμα x = AnsiToUtf8(vLine);

Page 195: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

195

UTF8ToAnsi (Text:string); Μετατρέπει το κείμενο Text από UTF8 σε ANSI.

GetSupportQueryResults(Support:Handle, Query:string, Params:VarArray);

Παράδειγμα x = Utf8ToAnsi(vLine);

Επιστρέφει την τιμή για το Query του Handle που έχει δηλωθεί. Επιστρέφει ένα record που μπορεί να έχει μία τιμή ή ένα Array.

GetSupportQueryData(Support:Handle, Query:string, Params:VarArray); Επιστρέφει το αποτέλεσμα του Query του Handle που έχει δηλωθεί σε compressed μορφή. Τα πεδία χωρίζονται με ‘|’ και οι εγγραφές με ‘|~’

FindFirst(FileName:string, Attr:integer); Αναζητά το αρχείο με συγκεκριμένο όνομα και attributes. File Attributes: faReadOnly = 1, faHidden = 2, faSysFile = 4, faVolumeID = 8, faDirectory = 16, faArchive = 32, faAnyFile = 63

FindNext(FileHandle:FindFirstResult);

Παράδειγμα vFind = FindFirst ('C:\*.*', 63);

Αναζητά το επόμενο αρχείο με το συγκεκριμένο όνομα και attributes.

FindClose (FileHandle:FindFirstResult);

Παράδειγμα vFind = FindNext(vFind);

Αποδεσμεύει τη μνήμη μετά τη χρήση του FindFirst, FindNext.

TStringsCreate();

Παράδειγμα x = FindClose(vFind);

Δημιουργεί μία λίστα δεδομένων της μορφής Name=Value (πχ. CODE=Test1). Συμπεριφέρεται όπως τα string lists της εφαρμογής.

TStringsClear(TStringsHandle); Καθαρίζει τη λίστα δεδομένων.

TStringsGetValue(TStringsHandle, Name:string); Επιστρέφει την τιμή του record της λίστας δεδομένων βάσει της παραμέτρου Name.

TStringsSetValue(TStringsHandle, Name:string, Value:Variant); Θέτει την τιμή Value στο record που με παράμετρο Name της λίστας δεδομένων.

TStringsGetItem(TStringsHandle, Index:integer); Επιστρέφει την τιμή του record της λίστας δεδομένων βάσει του record Index.

TStringsSetItem(TStringsHandle, Index:integer, Value:Variant); Θέτει την τιμή Value στη λίστα δεδομένων βάσει του record Index.

TStringsAdd(TStringsHandle, DataStr:string); Δομή DataStr

TStringsCount(TStringsHandle);

: Value = Name Προσθέτει τα δεδομένα DateStr στο αμέσως επόμενο record της λίστας δεδομένων.

Επιστρέφει το πλήθος των records της λίστας δεδομένων.

GetXStrings(Name); Επιστρέφει τα δεδομένα της λίστας δεδομένων Name.

Page 196: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

196

G.3 SysRequest

RequestEdit(Command:string); Εκτέλεση του command. Λειτουργεί μόνο σε client.

Evaluate(Module, Formula:string); Εκτέλεση των διαθέσιμων συναρτήσεων της εφαρμογής.

ShowInTheMap(Params1, Params2, Params3); Params1: Γεωγραφικό Πλάτος, Params2: Γεωγραφικό Μήκος, Params3: Web Form που ανοίγει. Επιστρέφει σε web form τη θέση που προσδιορίσαμε με τις συντεταγμένες.

ShowHtmlMessageForm(TStringsHandle); Ανοίγει Web form με το κείμενο που ορίσαμε στη λίστα δεδομένων. Αντίστοιχο της οθόνης αποτελεσμάτων του script.

ShowWebPage(URL:string);

Παράδειγμα fText = 'mytext'; fStrings = TStringsCreate; x = TStringsSetText(fStrings, fText); x = ShowHtmlMessageForm( fStrings);

Ανοίγει την HTML σελίδα.

PrintForm(Module, Form, Printer, FileName);

Παράδειγμα x = ShowWebPage('www.softone.gr')

Εκτυπωνει τη φόρμα Form σε εκτυπωτή Printer για το Module. Αν η εκτύπωση είναι σε αρχείο τότε δηλώνεται το FileName.

GetTableFieldNames(TableName);

Παράδειγμα vModule=CallPublished('ModuleIntf.CreateModule','SALDOC,WARNINGS:OFF'); vPrinter=CallPublished('ModuleIntf.GetFieldValue',VarArray(vImptable,'vPrinter',2)); x = PrintForm((vModule,1000,vPrinter,'');

Επιστρέφει τα ονόματα των πεδίων του πίνακα TableName.

ExecuteXScript(Module, Language, File, Function); Language: 1 = Javascript, VBScript Εκτελεί τη Function του script με όνομα File.

DestroyObject(ObjecHandle);

Παράδειγμα 1. Εκτέλεση function που εμφανίζει μήνυμα στην οθόνη. Η function πληκτρολογείται μέσα στο File. x=ExecuteXScript(XModule, 1, 'function RUN() { X.WARNING('+#39+'Δεν έχετε επιλέξει αρχείο!'+#39+');}', 'RUN'); 2. Εκτέλεση της function Convert που βρίσκεται μέσα στο script με όνομα myfunctions vScript=GetQueryResults('SoftOne', 'SELECT SOIMPORT FROM SOIMPORT WHERE CODE='+QuotedStr('myfunctions'),Null); x= ExecuteXScript(vModule, 1, vScript, 'Convert');

Ελευθερώνει τη μνήμη από το συγκεκριμένο object. Παράδειγμα x = DestroyObject( fStrings);

Page 197: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

197

GetTableMoreInfo(TableName); Επιστρέφει text με τις πληροφορίες του πίνακα.

GetTableFieldInfos(TableName); Επιστρέφει text με πληροφορίες για κάθε πεδίο του πίνακα.

GetXplorerDataDir(Params); Επιστρέφει το directory που είναι εγκατεστημένο το softone.

GetXplorerLogDir(Params); Επιστρέφει το directory των log files.

GetXplorerTempDir(Params); Επιστρέφει το directory των temp files.

GetXplorerOffLineDir(Params); Επιστρέφει το directory των offline files.

Page 198: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

198

Η. Case Studies Case Study 1 Επανακαταχώρηση παραστατικών πωλήσεων (βάσει συγκεκριμένου Sql statement) με ταυτόχρονη αλλαγή της τιμής του πεδίου PAYMENT. Η συγκεκριμένη εργασία δεν εμφανίζει κάτι στον interface. form { } connect Xplorer xData { connect(); findoc=select findoc, sosource, fincode, trndate, sumamnt from findoc where company=:$X.SYS.COMPANY and fiscprd=:$X.SYS.FISCPRD and sosource = 1351 and fprms in (7061,7062,7063,7064,7066,7067,7071,7072,7073,7076,7082,7127,7128) --and trndate = '20020110' order by 1 desc; } var x, Module, DsFinDoc, Dslines, vFieldVal, vFieldVal1, Count; { Module = CallPublished('ModuleIntf.CreateModule','SALDOC,WARNINGS:OFF,NOMESSAGES:1'); DsFinDoc = CallPublished('ModuleIntf.GetDataSet',VarArray(Module,'FINDOC',2)); Count = 0; fetch FinDoc { Count = Count + 1; } x = SendResponse(Count, 'RESULTS.TOTREC'); Count = 0; fetch findoc { x = CallPublished('ModuleIntf.LocateModule',VarArray(Module,findoc.findoc,2)); Count = Count + 1; x = SendResponse(Count, 'RESULTS.CURREC'); x = CallPublished('ModuleIntf.DataSetEdit',DsFinDoc); x = CallPublished('ModuleIntf.SetFieldValue',VarArray(DsFinDoc, 'PAYMENT', 1000, 3)); x = CallPublished('ModuleIntf.PostModule', Module ); } x=SendResponse(Count, 'RESULTS.CURREC'); }

Page 199: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

199

Case Study 2 Εισαγωγή πελατών από αρχείο Excel σε temp πίνακα της βάσης και καταχώρησή τους στην ενότητα των πελατών. Το αρχείο Excel πρέπει να έχει στήλες με συγκεκριμένες περιγραφές (Line, Επωνυμία, ΑΦΜ, Πόλη, Διεύθυνση, Κωδ.Υποκ.) Form { [TABLES] ImpTable=;;;;Master;3;0 [ImpTable] vMess=16;64000;0;1;1;Μηνύματα μεταφοράς...;;;; vExcelFile=1;4000;1;1;0;Excel file;$Filename;;'C:\test1.xlsx'; vDBTable=1;64;1;0;0;TableName;;;;CCCEXCEL_CUST vDrop=2;15;1;0;0;Drop and Create Table;$Y;;1; vInsRec=2;15;1;0;0;Insert Records;$Y;;1; [PANELS] PANEL10=0;;0;50,G10,N PANEL13=4;Μηνύματα μεταφοράς...;0;100,G10,N,L3 [PANEL10] ImpTable.vExcelFile ImpTable.vDBTable ImpTable.vDrop ImpTable.vInsRec [PANEL13] ImpTable.vMess } Import ImpCUSTOMER(sCus,sCusBranch) into 'CUSTOMER,WARNINGS:OFF,NOMESSAGES:1' { CUSTOMER sCus { CODE = '*'; NAME = sCus.cNAME; AFM = sCus.cAFM; CITY = sCus.cCITY; ADDRESS = sCus.cADDRESS; } CUSBRANCH sCusBranch { CODE = sCusBranch.bCODE+'.01'; NAME = sCusBranch.bNAME; ISCENTER = sCusBranch.bISCENTER; ADDRESS = sCusBranch.bADDRESS; CITY = sCusBranch.bCITY; } } Connect Xplorer SoftOne { connect(); sCus = SELECT [Line] AS Line ,[Επωνυμία] AS cNAME ,[ΑΦΜ] AS cAFM ,[Πόλη] AS cCITY ,[Διεύθυνση] AS cADDRESS FROM $REMOVEQUOTES(:$ImpTable.vDBTable); sCusBranch = SELECT [Κωδ.Υποκ] AS bCODE

,[Επωνυμία] AS bNAME ,1 AS bISCENTER ,[Διεύθυνση] AS bADDRESS ,[Πόλη] AS bCITY

FROM $REMOVEQUOTES(:$ImpTable.vDBTable) WHERE [Line] = :$sCus.Line ; }

Page 200: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

200

var Jstr, objExcel, vscript, x, vTot, vRow, vRowCancel, vMess, Ds, vError, str1, vModule, ifin, vTask, vSalesman, newCusCode, vMessErrors, vMessTask, vCurRec; { vError=0; vMess=''; if (vError=0) { vMess = '============== Ε Ν Α Ρ Ξ Η Ε Ρ Γ Α Σ Ι Α Σ =============='+#13+#10+#13+#10; x=SendResponse( vTot, vRow, vRowCancel, 'Έναρξη εργασίας...', vMess, 'RESULTS.TOTREC;RESULTS.CURREC;RESULTS.CANREC;RESULTS.LABELTEXT;ImpTable.vMess'); //>>>======= Μεταφορά Excel σε SQL Table - Αρχικοποίηση Πίνακα ======= if(:ImpTable.vDrop=1) { x = SafeExecSQL('SoftOne','DROP TABLE ' + :ImpTable.vDBTable, Null ); x = CallPublished('SysRequest.Evaluate', VarArray(ImportModule('ImpCUSTOMER'), 'ExcelImport('+#39+:ImpTable.vExcelFile+#39+','+#39+:ImpTable.vDBTable+#39+',1,2)', 2)); } //<<<======= Μεταφορά Excel σε SQL Table - Αρχικοποίηση Πίνακα ======= //>>>============ Εισαγωγή CUSTOMER (Πελατών) ================ vCurRec = 0; vTot = 0; vRowCancel = 0; fetch sCus vTot = vTot + 1; x = SendResponse( vTot, 0, 0, 'RESULTS.TOTREC;RESULTS.CURREC;RESULTS.CANREC' ); vMess = vMess + 'A. ΕΙΣΑΓΩΓΗ ΠΕΛΑΤΩΝ... '+#13+#10; x = SendResponse( vMess, 'Εισαγωγή Πελατών...','ImpTable.vMess;RESULTS.LABELTEXT' ); fetch sCus { if(:ImpTable.vInsRec = 1) { ImpCUSTOMER(sCus,sCusBranch); vCurRec = vCurRec + 1; if (ImportError = 0) { newCusCode = GETQUERYRESULTS('SoftOne','SELECT CODE FROM TRDR WHERE TRDR='+VarToStr(resultnum),NULL); vMess = vMess + ' ' + VartoStr(vCurRec) + '. Επωνυμία: '+VartoStr(sCus.cName) +' ...OK - Νέος Κωδικός: '+VartoStr(newCusCode)+#13+#10; x=SafeExecSQL('SoftOne','UPDATE ' + :ImpTable.vDBTable + ' SET [Κωδ.Πελ.]='+VartoStr(newCusCode)+' ,[Κωδ.Υπ.]='+QUOTEDSTR('01')+' WHERE LINE='+VartoStr(vCurRec), Null ); } else { vRowCancel = vRowCancel+1; vMess = vMess + ' ' + VartoStr(vCurRec) + '. Επωνυμία: ' +VartoStr(sCus.cName)+ ' ...ERROR - '+ ErrorMessage+#13+#10; x=SafeExecSQL('SoftOne','UPDATE ' + :ImpTable.vDBTable + ' SET [Κωδ.Πελ.]='+QUOTEDSTR('error')+',[Κωδ.Υπ.]='+QUOTEDSTR('error')+' WHERE LINE='+VartoStr(vCurRec), Null ); } vSalesman = sCus.cSalesman; x = SendResponse(vTot, vCurRec, vRowCancel, vMess, 'RESULTS.TOTREC;RESULTS.CURREC;RESULTS.CANREC;ImpTable.vMess' ); } } vMess = vMess + '- ΟΛΟΚΛΗΡΩΣΗ ΕΙΣΑΓΩΓΗΣ ΠΕΛΑΤΩΝ'+#13+#10+#13+#10; x = SendResponse(vTot, vCurRec, vRowCancel, vMess, 'RESULTS.TOTREC;RESULTS.CURREC;RESULTS.CANREC;ImpTable.vMess' ); //<<<============ Εισαγωγή CUSTOMER (Πελατών) ================ vMess = vMess +#13+#10+ '============== Τ Ε Λ Ο Σ Ε Ρ Γ Α Σ Ι Α Σ ================'+#13+#10; x=SendResponse(vCurRec, vRowCancel, vMess, 'Τέλος εργασίας...', 'RESULTS.CURREC;RESULTS.CANREC;ImpTable.vMess;RESULTS.LABELTEXT'); } }

Page 201: Customizing Softone - The Black Book Ver.2012a

Κεφάλαιο 11 – SoftOne Scripts

201

Case Study 3 Εργασία αυτόματης εισαγωγής εισπράξεων για συγκεκριμένα παραστατικά (βάσει sql query) Form { [TABLES] ImpTable=;;;;Master;3;0 [ImpTable] vMess=16;64000;0;1;1;Μηνύματα μεταφοράς...;;;; [PANELS] PANEL13=4;Μηνύματα μεταφοράς...;0;100,G10,N,L3 [PANEL13] ImpTable.vMess } Import ImpCFNCUSDOC(sDoc) into 'CFNCUSDOC,WARNINGS:OFF,NOMESSAGES:1' { FinDoc sDoc { SERIES = 3800; TRNDATE = sDoc.TRNDATE; TRDR = sDoc.TRDR; FINDOCS = sDoc.FINDOC; COMMENTS = 'Εισαγωγή από Import Script'; } CashLines sDoc { SOPAYTYPE = 1; LINEVAL = sDoc.sumamnt; } } connect Xplorer xData { connect(); sDoc = select findoc, trdr, sosource, fincode, trndate, sumamnt from findoc where company=:$X.SYS.COMPANY and fiscprd=:$X.SYS.FISCPRD and sosource = 1351 and fprms in (7061,7062,7063,7064,7066,7067,7071,7072,7073,7076,7082,7127,7128) and trndate = '20030110' order by 1 desc; } var x, Module, DsFinDoc, Dslines, vFieldVal, vFieldVal1, Count, vMess, vRow, vRowCancel, vTot; { vTot = 0; fetch sDoc vTot = vTot + 1; vMess = 'Έναρξη Εργασίας.....'+#13+#10; x = SendResponse( vTot, 0, 0, 'Εισαγωγή παραστατικών εισπράξεων ...', vMess, 'RESULTS.TOTREC;RESULTS.CURREC;RESULTS.CANREC;RESULTS.LABELTEXT;ImpTable.vMess' ); fetch sDoc { ImpCFNCUSDOC(sDoc); if (ImportError = 0) vRow = vRow + 1; else vRowCancel = vRowCancel + 1; x=SendResponse(vRow, vRowCancel, 'RESULTS.CURREC;RESULTS.CANREC'); } vMess=vMess+'Τέλος Μεταφοράς...'+#13+#10; x=SendResponse(vRow, vRowCancel, vMess, 'Τέλος εισαγωγής παραστατικών εισπράξεων ...', 'RESULTS.CURREC;RESULTS.CANREC;ImpTable.vMess;RESULTS.LABELTEXT'); }

Page 202: Customizing Softone - The Black Book Ver.2012a

202

ΠΑΡΑΡΤΗΜΑ Βοηθητικοί Πίνακες

A. Πίνακας Sosource

B. Πίνακας Sodtype

C. Παράμετροι Συστήματος (X.SYS)

D. Εργασίες Μενού – Εργαλεία Συστήματος (acCommands)

Ε. Editor Commands

F. Editors Εφαρμογής

G. Πίνακας Origin (Προέλευση Συναλλαγών)

H. Commands σχετικών εργασιών ανά Object

I. Commands Browser εργασιών ανά Object

J. Περιορισμοί Βάσης Δεδομένων

Page 203: Customizing Softone - The Black Book Ver.2012a

Παράρτημα – Βοηθητικοί Πίνακες

203

A. Πίνακας Sodtype O παρακάτω πίνακας έχει όλες τις τιμές της οντότητας sodtype.

Πίνακας SODTYPE Κωδικός Ενότητα 10 Internal use only 11 Εταιρία 12 Προμηθευτές 13 Πελάτες 14 Χρηματικοί λογαριασμοί 15 Χρεώστες 16 Πιστωτές 20 Εσωτερικά πρόσωπα 21 Εξωτερικά πρόσωπα 22 Draft Entry 25 Μέσα 30 Πωλητές 31 Εισπράκτορες 32 Αγοραστές 33 Τεχνικοί 40 Έργα 41 Εγκαταστάσεις 42 Ειδικές συμβάσεις 43 Γεωγραφικά σημεία 44 Εγγυήσεις 51 Αποθήκη 52 Υπηρεσίες 53 Χρεοπιστώσεις 54 Πάγια 61 Λογαριασμοί εσόδων/εξόδων 70 Set ειδών 71 Προδιαγραφές 72 Set χρεοπιστώσεων 73 Set υπηρεσιών 81 Αξιόγραφα 82 Κοστολόγηση 83 Δωροεπιταγές 84 Κάρτες Bonus 89 Γενική λογιστική 90 Αναλυτική λογιστική 91 ABCosting 95 Μισθοδοσία 96 Ενέργειες 97 Τηλεφωνικά κέντρα

Page 204: Customizing Softone - The Black Book Ver.2012a

Παράρτημα – Βοηθητικοί Πίνακες

204

B. Πίνακας Sosource O παρακάτω πίνακας έχει όλες τις τιμές της οντότητας sosource.

Πίνακας SOSOURCE Κωδικός Ενότητα Κωδικός Ενότητα

1010 έως 1019 Επιχειρησιακά παραστατικά 1352 Φάκελος υπηρεσιών 1054 Παραστατικά αποσβέσων 1353 Ειδικές πελατών 1089 Άρθρα Γ.Λ. 1361 Παραστατικά εσόδων 1090 Άρθρα Α.Λ. 1381 Ταμειακές πελατών 1096 Εναλλακτικές συσκευασίες 1382 Κοστολόγηση εξαγωγών 1097 Ταμειακές μηχανές 1412 Εμβάσματα προμηθευτών 1098 Δελτία οικονομικής κατάστασης (Βουλγαρία) 1413 Εμβάσματα πελατών 1099 ΚΕ.Π.Υ.Ο. 1414 Εμβάσματα χρηματικών λογαριασμών 1100 Πληροφοριακά έντυπα λογιστών 1415 Εμβάσματα χρεωστών 1120 Δελτία εργασίας 1416 Εμβάσματα πιστωτών 11351 Λιανική 1453 Ειδικές χρηματικών λογαριασμών 1140 Λογιστικά σημειώματα οικοδομών 1481 Ταμειακές χρηματικών λογαριασμών 1151 Παραστατικά αποθήκης 1553 Ειδικές χρεωστών 1154 Παραστατικά παγίων 1581 Ταμειακές χρεωστών 1171 Εντολές παραγωγής 1653 Ειδικές πιστωτών 1181 Παραστατικά αξιογράφων 1681 Ταμειακές πιστωτών 1212 Συμψηφισμός προμηθευτών 1717 Συμψηφισμοί συναλλασσομένων 1251 Αγορές 2021 Ενέργειες 1253 Ειδικές προμηθευτών 2052 Κλήσεις υπηρεσιών 1261 Παραστατικά εξόδων 2095 Αποτελέσματα μισθοδοσίας 1281 Ταμειακές προμηθευτών 5151 Σύνθεση αποθήκης 1282 Κοστολόγηση εισαγωγών 7151 Παραστατικά παραγωγής 1312 Συμψηφισμός πελάτη με προμηθευτές 8100 Αξιόγραφα 1313 Συμψηφισμός πελατών 9500 Α.Π.Δ. 1351 Πωλήσεις

Page 205: Customizing Softone - The Black Book Ver.2012a

Παράρτημα – Βοηθητικοί Πίνακες

205

C. Παράμετροι Συστήματος (X.SYS) Οι τιμές του παρακάτω πίνακα εφαρμόζονται σε ευρετήρια, εκτυπώσεις, Java & VB script σε custom προβολές, import script και alerts. Για τη κλήση τους χρησιμοποιείτε την εντολή :X.SYS.CName, όπου CName είναι το όνομα κάθε εντολής(πχ. για την εμφάνιση του κωδικού της login εταιρίας η εντολή είναι X.SYS.COMPANY).

Παράμετροι Συστήματος (:X.SYS.CName) Εντολή (CName) Περιγραφή Τύπος

ACNSCHEMA Μοντέλο Λογιστικού Σχεδίου Small Int BRANCH Υποκατάστημα Small Int CMPCURR Κωδικός νομίσματος εταιρίας VarChar(5) COMPANY Εταιρία Small Int COUNTRY Χώρα Small Int DBTYPE Τύπος βάσης (1=ORACLE,3=MSSQL,5=MYSQL) Small Int FISCPRD Χρήση (Έτος) Small Int FISCPRDPAY Χρήση μισθοδοσίας Small Int FOLDER Χαρτοφυλάκιο Small Int FPDATE Πρώτη ημερομηνία περιόδου Date FPERIOD Πρώτη περίοδος χρήσης Small Int FYDATE Πρώτη ημερομηνία χρήσης Date GROUPS Ομάδα χρήστη Small Int ISADMIN Είναι Administrator Small Int LANGEXT Login Γλώσσα VarChar(5) LOCKFISCPRD Κλειδωμένη χρήση Small Int LOGINDATE Ημερομηνία εισαγωγής Date LPDATE Τελευταία ημερομηνία περιόδου Date LPERIOD Τελευταία περίοδος χρήσης Small Int LYDATE Τελευταία ημερομηνία χρήσης Date NFISCPRD Επόμενη χρήση Small Int PAYCPDATE Ημ/νία υπολογ.περιόδου μισθοδοσίας Date PAYFPDATE Πρώτη ημ/νία περιόδου μισθοδοσίας Date PAYLPDATE Τελ.ημ/νία περιόδου μισθοδοσίας Date PAYPERIOD Περίοδος μισθοδοσίας Small Int PAYPRDTYPE Τύπος περιόδου μισθοδοσίας Small Int PERIOD Περίοδος (Μήνας) Small Int PFISCPRD Προηγούμενη χρήση Small Int PFYDATE Πρώτη ημερ.προηγούμενης χρήσης Date PLYDATE Τελ.ημ/νία προηγούμενης χρήσης Date SOCASH Ταμείο Small Int SOCASHUSER Ταμείο από χρήστη Small Int SOCURRENCY Νόμισμα Small Int SYSDATE Ημερομηνία συστήματος Date USER Χρήστης Login Small Int USERBRANCHES Υποκαταστήματα χρήστη VarChar(30) USERNAME Όνομα χρήστη VarChar(1024) WHOUSES Αποθηκευτικός χώρος VarChar(4000) WRKSTN Σταθμός εργασίας Small Int

Page 206: Customizing Softone - The Black Book Ver.2012a

Παράρτημα – Βοηθητικοί Πίνακες

206

D. Εργασίες Μενού – Εργαλεία Συστήματος (acCommands) Στον παρακάτω πίνακα θα βρείτε όλες τις εντολές που υπάρχουν στα μενού του SoftOne και μπορούν να εκτελεστούν με δημιουργία νέας εργασίας. Η δημιουργία της εργασίας γίνεται με χρήση του τύπου «Εργαλεία Συστήματος» και ως «Εντολή / Αρχείο» χρησιμοποιείται η εντολή «ACMD:xxx», :όπου xxx το όνομα της Εργασίας.

Πίνακας acCommands Εντολή Περιγραφή Εργασίας

acAbout Ταυτότητα εφαρμογής acBackup Δημιουργία εφεδρικού αντιγράφου acBuildHtmlDoc Δημιουργία λογιστικού εντύπου acBuildOfflineFile Παραγωγή αρχείου συγχρονισμού τοπικών acCalcErrors Σφάλματα υπολογισμών τοπκών πεδίων acChangePWD Αλλαγή password acChat Κλήση υποστήριξης acCheckCS Έλεγχος Client/Server σύνδεσης acCheckDB Παράθυρο συγχρονισμού βάσης δεδομένων acCheckForUpdates Έλεγχος νέας έκδοσης acComputerSoft1Address View computer soft1 address acConnections Διαχείριση συνδέσεων acCreateDB Δημιουργία πινάκων βάσης acCutCompanyData Εξαγωγή δεδομένων εταιρείας acDesktop Αρχική σελίδα softone acEditAccess Καθορισμός δικαιωμάτων acEditFavorites Συνήθεις εργασίες – Επεξεργασία acEditUserMenu Σχεδιασμός menu χρήστη acExpBarClose Κλείσιμο μπάρας μενού acExport Εξαγωγή πινάκων βάσης acFavorites Συνήθεις εργασίες – Εμφάνιση acFullTextSearch Full Text Search acHelpContents Help Contents and index acHistory Ιστορικό εργασιών acImpFromClipBoard Εισαγωγή XXF από Clipboard acImpFromFile Εισαγωγή XXF από αρχείο acImport Εισαγωγή πινάκων βάσης acKnowBase Program knowledge base acLicUse Ενεργοποίηση σύμβασης προϊόντος acMainMenu2 Μενού επιλογών acMemory Σημειωματάριο acmMind Game Master mind acModifMenu Μενού ομάδας / χειριστή acMP3Player MP3 Player acMySoft1 Στοιχεία εγκατάστασης acNewLicense Nέα άδεια

Page 207: Customizing Softone - The Black Book Ver.2012a

Παράρτημα – Βοηθητικοί Πίνακες

207

Πίνακας acCommands Εντολή Περιγραφή Εργασίας

acNewSynchOffline Συγχρονισμός τοπικής εγκατάστασης (από εκδ. 3.12.508 και έπειτα) acProgramNews Program news acRelogin Αλλαγή στοιχείων σύνδεσης acReminder Παράθυρο υπενθυμίσεων acRemoteCommands Προγραμματισμένες εντολές Remote Server acRemoteConfig Σχεδιασμός Remote εντολών acRemoteServer Εκτέλεση Remote Server acReportGen Σχεδιασμός εκτυπώσεων acRestore Επαναφορά από εφεδρικό αντίγραφο acSaaSServerLogin Παράθυρο Saas Login acScheduler Scheduler acSDKFiles Custom SDK Code Files acSELECTTOP Select Top Εγγραφές ανά Object acSendCustomerMessage Αποστολή μηνύματος σε πελάτη acSendMsg Ενδοεπικοινωνία acSettings Ρυθμίσεις acSetupOffline Παράμετροι Off-Line εγκατάστασης acSetupPrinters Ρυθμίσεις εκτυπωτών acSQLMonitor SQL monitor acSrvAccess Καθορισμός Πρόσβασης στον Server acStandard Μενού (παλαιό) acStartupSQL SQL Queries που τρέχουν κατά το Login στην εφαρμογή acStatusBar Εμφάνιση Status Bar εφαρμογής acSupAnswers Απαντήσεις στην E.Yποστ.πελατών acSupQuery Ερωτήσεις στην E.Yποστ.πελατών acSyncDB Συγχρονισμός βάσης δεδομένων acSynchOffLine Συγχρονισμός τοπικής εγκατάστασης acSynchOnline Ενημέρωση κεντρικού acTetris Game Tetris acToggleMnu Εξαφάνιση μπάρας μενού acUpgradeLicense Αναθεώρηση άδειας acUserMenu Προσωπικό μενού acWebPage Ιστοσελίδα SoftOne acZReportSignB Z Report μηχανισμού ψηφιακής υπογραφής τύπου Β

Page 208: Customizing Softone - The Black Book Ver.2012a

Παράρτημα – Βοηθητικοί Πίνακες

208

E. Editor Commands Στον παρακάτω πίνακα εμφανίζονται όλοι οι συνδυασμοί Editors και Τύπων Δεδομένων που μπορείτε να χρησιμοποιήσετε μέσα στην εφαρμογή, καθώς και οι αντίστοιχες λειτουργίες τους.

Editor Commands Εντολή Λειτουργία - Χρήση Τύπος Δεδομένων

$DT Ημερομηνία & Ώρα σε διαφορετικά πεδία Ημερομηνία

$TIME Μόνο Ώρα (Επιστρέφει την τρέχουσα Ημ/νία) Ημερομηνία

$PASSWORD Password (Εμφάνιση με αστεράκια) Αλφαριθμητικό

$Y Boolean Πεδίο (Εμφάνιση με checkbox) Μικρός Ακέραιος

$YN Boolean Πεδίο σε Grids (Εμφάνιση με combobox) Μικρός Ακέραιος

$WEBPAGE Web Page Πεδία – Link to Internet Browser Αλφαριθμητικό

$EMAIL Email Πεδία – Link to Email Program Αλφαριθμητικό

$PRINTERS Παράθυρο Εκτυπωτών των Windows Αλφαριθμητικό

$DATERANGE Ημερομηνία από έως Ημερομηνία

$TIMERANGE Ώρα από έως Ημερομηνία

$COLOR Παράθυρο Επιλογής Χρωμάτων Softone Αλφαριθμητικό

$ONECOLOR Παράθυρο Επιλογής Χρώματος Windows =256^2*Red + 256^1Green + 256^0*Blue

Αλφαριθμητικό

$FILENAME Παράθυρο Επιλογής Αρχείου – Επιστρέφει τη διαδρομή του Αλφαριθμητικό

$MASKEDIT Παράθυρο Δημιουργίας Μάσκας Κωδικού Αλφαριθμητικό

$RECURRENCE Παράθυρο Χρονοπρογραμματισμού(Scheduler) Softone Αλφαριθμητικό

$MEMOEDIT Σε γραμμές Grid με memo πεδία διορθώνει την αναδίπλωση Αλφαριθμητικό

$LIST:OBJECT Επιλογή από έτοιμες λίστες(προεπιλογές), που έχουν δημιουργηθεί από ευρετήρια (πίνακες SOLIST και SOLISTLNS)

Αλφαριθμητικό

$XRUN(D[Par1,Par2,Par3]) Par1=<visible>, Par2=<exefilename>, Par3=<file params>

Εκτέλεση εξωτερικού προγράμματος Παράδειγμα:

Αλφαριθμητικό

Σε αλφαριθμητικό πεδίο (πχ Κείμενο1 των extra πεδίων των πελατών) εισάγουμε την παρακάτω εντολή : $XRUN(D[0,C:\Xplorer.exe,"/"+CUSEXTRA.VARCHAR01]) Αν μέσα σε μία εγγραφή πληκτρολογήσουμε τη λέξη server, τότε θα ανοίξει η εφαρμογή softone ως server.

Page 209: Customizing Softone - The Black Book Ver.2012a

Παράρτημα – Βοηθητικοί Πίνακες

209

F. Editors Εφαρμογής O παρακάτω πίνακας έχει την ανάλυση των editors της εφαρμογής.

Editors Εφαρμογής Συντόμευση Editor

@ACN ACNT(F[ACNSCHEMA;SODTYPE=:X.SYS.ACNSCHEMA;:CSEL.SODTYPE])

@ACNAL ACNTAL(F[ACNSCHEMA;SODTYPE=:X.SYS.ACNSCHEMA;90])

@ACNALM ACNTAL(M,R[CODE],F[ACNSCHEMA;SODTYPE=:X.SYS.ACNSCHEMA;90],H[ACNTAL])

@ACNCTGR ACNCATEGORY(F[ACNSCHEMA;SODTYPE=:X.SYS.ACNSCHEMA;:CSEL.SODTYPE])

@ACNGL ACNTGL(F[ACNSCHEMA;SODTYPE=:X.SYS.ACNSCHEMA;89])

@ACNGLM ACNTGL(M,R[CODE],F[ACNSCHEMA;SODTYPE=:X.SYS.ACNSCHEMA;89],H[ACNTGL])

@ACNGRP ACNGROUP(F[ACNSCHEMA;SODTYPE=:X.SYS.ACNSCHEMA;:CSEL.SODTYPE])

@ACNM ACNT(M,R[CODE],F[ACNSCHEMA=:X.SYS.ACNSCHEMA],H[ACNTGL])

@ACNMDL ACNMODEL(F[ACNSCHEMA=:X.SYS.ACNSCHEMA])

@ACNMDLAL ACNMODELAL(F[ACNSCHEMA;SODTYPE=:X.SYS.ACNSCHEMA;90])

@ACNMDLGL ACNMODELGL(F[ACNSCHEMA;SODTYPE=:X.SYS.ACNSCHEMA;89])

@ACNSLG ACNISOLOG(F[ACNSCHEMA;SODTYPE=:X.SYS.ACNSCHEMA;:CSEL.SODTYPE])

@ACNT ACNT(F[ACNSCHEMA=:X.SYS.ACNSCHEMA])

@ALLCLSFLDR FINDOC(M,R[FINCODE],W[SOSOURCE IN (1282, 1382) AND EXISTS (SELECT 1 FROM CSTFLDR CS WHERE CS.CSTFLDR=A.FINDOC AND CS.CFOCLOSEOK<>1)])

@ARS AREAS(F[SODTYPE=:CSEL.SODTYPE])

@CKAD KAD(W[EXISTS (SELECT 1 FROM COMPANYKAD WHERE COMPANY=:X.SYS.COMPANY AND A.KAD=COMPANYKAD.KAD UNION SELECT 1 FROM COMPANY WHERE COMPANY=:X.SYS.COMPANY AND A.KAD=COMPANY.KAD)])

@CLSFLDR FINDOC(M,R[FINCODE],W[SOSOURCE=&SOSOURCE AND EXISTS (SELECT 1 FROM CSTFLDR CS WHERE CS.CSTFLDR=A.FINDOC AND CS.CFOCLOSEOK<>1)])

@COL PRSNIN(W[ EXISTS (SELECT 1 FROM PRSEXT WHERE A.PRSN=PRSEXT.PRSN AND PRSEXT.COMPANY=:X.SYS.COMPANY AND PRSEXT.SODTYPE=31 AND PRSEXT.ISACTIVE=1)])

@COLM PRSNIN(M,R[CODE],W[ EXISTS (SELECT 1 FROM PRSEXT WHERE A.PRSN=PRSEXT.PRSN AND PRSEXT.SODTYPE=31 AND PRSEXT.COMPANY=:X.SYS.COMPANY AND PRSEXT.ISACTIVE=1)])

@COMM COMMENTS(M,R[NAME],F[SOSOURCE=:CSEL.SOSOURCE])

@CRCNTRL CRCONTROL(F[SODTYPE=:CSEL.SODTYPE])

@DSCPLC VCRDRULE(F[SODTYPE;SOTYPE=:CSEL.SODTYPE;2])

@IRSM IRSDATA(M,R[NAME])

@JOB JOBTYPE(F[SODTYPE=:CSEL.SODTYPE])

@MATEXP EXPN(F[USEBYITEM=1])

@MATOMD MTRGROUP(F[SODTYPE=:CSEL.SODTYPE])

@PAYT PAYMENT(F[SODTYPE=:CSEL.SODTYPE])

@PERIODACN PERIOD(W[COMPANY = :X.SYS.COMPANY AND FISCPRD = :X.SYS.FISCPRD])

@PERIODMTR PERIOD(W[COMPANY = :X.SYS.COMPANY AND FISCPRD = :X.SYS.FISCPRD AND PERIOD<1000])

@PERIODPAY PAYPRD(W[COMPANY = :X.SYS.COMPANY AND FISCPRDPAY = :X.SYS.FISCPRDPAY])

@PERIODTRD PERIOD(W[COMPANY = :X.SYS.COMPANY AND FISCPRD = :X.SYS.FISCPRD AND PERIOD>0 AND PERIOD<1000])

Page 210: Customizing Softone - The Black Book Ver.2012a

Παράρτημα – Βοηθητικοί Πίνακες

210

Editors Εφαρμογής Συντόμευση Editor

@PUR PRSNIN(W[ EXISTS (SELECT 1 FROM PRSEXT WHERE A.PRSN=PRSEXT.PRSN AND PRSEXT.SODTYPE=32 AND PRSEXT.COMPANY=:X.SYS.COMPANY AND PRSEXT.ISACTIVE=1)])

@PURM PRSNIN(M,R[CODE],W[ EXISTS (SELECT 1 FROM PRSEXT WHERE A.PRSN=PRSEXT.PRSN AND PRSEXT.SODTYPE=32 AND PRSEXT.COMPANY=:X.SYS.COMPANY AND PRSEXT.ISACTIVE=1)])

@RPCPLC PRCPOLICY(F[SODTYPE;SOTYPE=:CSEL.SODTYPE;1])

@SAL PRSNIN(W[ EXISTS (SELECT 1 FROM PRSEXT WHERE A.PRSN=PRSEXT.PRSN AND PRSEXT.SODTYPE=30 AND PRSEXT.ISACTIVE=1)])

@SALM PRSNIN(M,R[CODE],W[ EXISTS (SELECT 1 FROM PRSEXT WHERE A.PRSN=PRSEXT.PRSN AND PRSEXT.SODTYPE=30 AND PRSEXT.ISACTIVE=1)])

@SXACNTM SXACNT(M,R[CODE],H[SXACNT])

@SXACNTSM SXACNT(W[A.MTRTYPE IN (1,3)],M,R[CODE],H[SXACNT])

@SXACNTXM SXACNT(W[A.MTRTYPE IN (2,4)],M,R[CODE],H[SXACNT])

@TEC PRSNIN(W[ EXISTS (SELECT 1 FROM PRSEXT WHERE A.PRSN=PRSEXT.PRSN AND PRSEXT.SODTYPE=33 AND PRSEXT.COMPANY=:X.SYS.COMPANY AND PRSEXT.ISACTIVE=1)])

@TEMPLATESABC TEMPLATESABC(F[SOSOURCE;GLTEMPLATESMD=:SOSOURCE;2])

@TEMPLATESGL TEMPLATESGL(F[SOSOURCE;GLTEMPLATESMD=:SOSOURCE;1])

@TEMPLATESSX TEMPLATESSX(F[SOSOURCE;GLTEMPLATESMD=:SOSOURCE;3])

@TFPRMS TFPRMS(F[SOSOURCE=:CSEL.SOSOURCE])

@TRDBRN TRDBRANCH(F[TRDR=:CSEL.TRDR])

@TRDBSN TRDBUSINESS(F[SODTYPE=:CSEL.SODTYPE])

@TRDCTGR TRDCATEGORY(F[SODTYPE=:CSEL.SODTYPE])

@TRDRS TRDR(W[SODTYPE IN (12,13,15,16)])

@UAT1 UATBL01(F[ACNSCHEMA;SODTYPE=:CSEL.ACNSCHEMA;:CSEL.SODTYPE])

@UAT2 UATBL02(F[ACNSCHEMA;SODTYPE=:CSEL.ACNSCHEMA;:CSEL.SODTYPE])

@UAT3 UATBL03(F[ACNSCHEMA;SODTYPE=:CSEL.ACNSCHEMA;:CSEL.SODTYPE])

@UAT4 UATBL04(F[ACNSCHEMA;SODTYPE=:CSEL.ACNSCHEMA;:CSEL.SODTYPE])

@UAT5 UATBL05(F[ACNSCHEMA;SODTYPE=:CSEL.ACNSCHEMA;:CSEL.SODTYPE])

@UCT1 UCTBL01(F[SODTYPE=:CSEL.SODTYPE])

@UCT2 UCTBL02(F[SODTYPE=:CSEL.SODTYPE])

@UCT3 UCTBL03(F[SODTYPE=:CSEL.SODTYPE])

@UCT4 UCTBL04(F[SODTYPE=:CSEL.SODTYPE])

@UCT5 UCTBL05(F[SODTYPE=:CSEL.SODTYPE])

@UT1 UTBL01(F[SODTYPE=:CSEL.SODTYPE])

@UT2 UTBL02(F[SODTYPE=:CSEL.SODTYPE])

@UT3 UTBL03(F[SODTYPE=:CSEL.SODTYPE])

@UT4 UTBL04(F[SODTYPE=:CSEL.SODTYPE])

@UT5 UTBL05(F[SODTYPE=:CSEL.SODTYPE])

@ZIPM VZIPADDRESS(M,R[CODE])

Page 211: Customizing Softone - The Black Book Ver.2012a

Παράρτημα – Βοηθητικοί Πίνακες

211

G. Πίνακας Origin (Προέλευση Συναλλαγών) O παρακάτω πίνακας έχει όλες τις τιμές του πεδίου ORIGIN του πίνακα FINDOC.

Πίνακας ORIGIN Κωδικός Προέλευση Συναλλαγής 1 Κανονική 2 Κοστολόγηση εισαγωγών 3 Κοστολόγηση εξαγωγών 4 Εσωλογιστική κοστολόγηση 5 Αυτόματη εξόφληση 6 Αντιλογισμός 7 Φυσική απογραφή 8 Από δελτίο παραλαβής (Service) 9 Από φάκελλο (Service) 10 Έναρξη παγίων 11 Από κλήση (Service) 12 Ενημερ.παρ/κά φυσικής σπογραφής 14 Παρ.παραγωγής από παραγγελία - εντολές παραγωγής 15 Παρ.σύνθεσης από πώληση-αγορά-αποθήκη 16 Εσόδων-Εξόδων 17 Πιστωτικά λόγου τζίρου 18 Εντολές παραγωγής από παραγγελία 19 Παρ.παραγωγής ημιετοίμων 20 Παρ.παραγωγής από δελτία εργασίας 21 Από Import 22 Παρ.παραγωγής από υπεργολαβία 23 Από ταμειακή μηχανή 24 Συναλλαγματικές διαφορές αποτίμησης 25 Συναλλαγματικές διαφορές βάσει αντιστοιχίσεων 26 Έσοδα προηγούμενων χρήσεων 27 Εσωτερική διακίνηση από παραγωγή 28 Αντιλογισμός εσωλογιστικής κοστολόγησης 29 Παραστατικό εξόφλησης δόσεων καρτών 30 Παραστατικό προβλέψεων-αντιλογισμού προβλέψεων 31 Αναπροσαρμογές παγίων 32 Ενδιαφέρον ευκαιρίας 33 Παραστατικό σύμβασης 34 Δελτία παραγωγής από εντολές 35 Δωροεπιταγές από bonus points 36 Εξαγωγή παραστατικού (Ήφαιστος) 37 Αντιλογιστικό του κόστους πωληθέντων (Κύπρος)

Page 212: Customizing Softone - The Black Book Ver.2012a

Παράρτημα – Βοηθητικοί Πίνακες

212

H. Commands σχετικών εργασιών ανά Object Οι παρακάτω πίνακες έχουν όλες τις εντολές (SoftOne commands) για όλες τις σχετικές εργασίες που εμφανίζονται στα μενού των objects. Κάθε πίνακας έχει ανάλυση των εντολών για τις ενότητες που έχει εφαρμογή το object.

Σχετικές εργασίες συναλλαγών (FINDOC) Σχετική εργασία Ενότητα εφαρμογής Softone command

Διακανονισμός Πωλήσεις-Αγορές-Εισπράξεις-Εμβάσματα XCMD:SFPAYTERMS

Αντιστοίχιση Πωλήσεις-Αγορές-Εισπράξεις-Εμβάσματα XCMD:1031

Εξόφληση Πωλήσεις XCMD:CFNCUSDOC,EKSOFL:1,S Εξόφληση Αγορές XCMD:CFNSUPDOC,EKSOFL:1,S

Φάκελος κοστολόγησης Πωλήσεις-Αγορές-Εισπράξεις-Εμβάσματα XCMD:CSTFINLNS,S;FINDOC.FINDOC

Επαναυπολογισμός Πωλήσεις-Αγορές-Εισπράξεις-Εμβάσματα-Λιανική XCMD:10006

Προήλθε από Πωλήσεις-Αγορές-Παρ.Αποθ.-Εισπράξεις-Εμβάσματα-Παραγωγή-Φάκελοι υπηρεσιών

XCMD:SFFINFROM

Μετασχηματίστηκε σε Πωλήσεις-Αγορές-Παρ.Αποθ.-Εισπράξεις-Εμβάσματα-Φάκελοι υπηρεσιών

XCMD:SFFINTO

Πρόταση παρτίδων Πωλήσεις-Αγορές-Παρ.Αποθ.-Εισπράξεις-Εμβάσματα XCMD:10112

Συμφωνία συνόλου Πωλήσεις-Αγορές-Εισπράξεις-Εμβάσματα-Λιανική-Φάκελοι υπηρεσιών

XCMD:SFFINPRCRULE

Επιλογή σύμβασης Πωλήσεις-Αγορές-Εισπράξεις-Εμβάσματα XCMD:SFCNTR

Επιλογή συμφωνίας Πωλήσεις-Αγορές-Εισπράξεις-Εμβάσματα-Λιανική XCMD:SFPRCPOLICY

Αντιστοίχιση με έσοδα/έξοδα

Πωλήσεις-Αγορές-Παρ.Αποθ.-Εισπράξεις-Εμβάσματα-Λιανική XCMD:10113

Ανάλυση Activity Based Costing

Πωλήσεις-Αγορές-Παρ.Αποθ.-Εισπράξεις-Εμβάσματα-Λιανική

XCMD:ABCTRNLINES,S[ABCTABLE=FINDOC];FINDOC.FINDOC

Άρθρο Πωλήσεις-Αγορές-Παρ.Αποθ.-Εισπράξεις-Εμβάσματα-Λιανική-Παραγωγή

XCMD:10110

Σχετικά έγγραφα

Πωλήσεις-Αγορές-Παρ.Αποθ.-Εισπράξεις-Εμβάσματα-Λιανική-Παραγωγή-Κλήσεις υπηρεσιών-Φάκελοι υπηρεσιών

XCMD:XTRDOCDATA,S

Ενημέρωση τιμών πώλησης Αγορές XCMD:10107

Προκαταβολή / Παραγγελία Λιανική XCMD:SFADVANCE

Δόσεις καρτών Λιανική XCMD:908 Κόστος παραγωγής (Υπεργολαβία) Ειδικές Συναλλαγές XCMD:CSTPRDLNS,S;FINDOC.FINDOC

Εξόφληση Ειδικές Συναλλαγές XCMD:&EKSOFL Εξόφληση Παραστατικά εσόδων / εξόδων XCMD:&CMDOBJ Σχετικά παραστατικά Κλήσεις υπηρεσιών (APPMNT) XCMD:SFFINTO

Page 213: Customizing Softone - The Black Book Ver.2012a

Παράρτημα – Βοηθητικοί Πίνακες

213

Σχετικές εργασίες συναλλασσομένων (TRDR) Σχετική εργασία Ενότητα εφαρμογής Softone command

Υπόλοιπα ανά εταιρία Πελάτες - Προμηθευτές - Χρεώστες - Πιστωτές XCMD:SFCMPREM

Μητρώο μη φυσικών προσώπων Πελάτες XCMD:GsisCmpAfmData

Σχετικές εργασίες υλικών (MTRL) Σχετική εργασία Ενότητα εφαρμογής Softone command

Υπόλοιπα ανά εταιρία Είδη XCMD:SFCMPREM

Σχετικές εργασίες λογιστικής (ACNT) Σχετική εργασία Ενότητα εφαρμογής Softone command

Υπόδειγμα άρθρου Άρθρα λογιστικής XCMD:10009 Σχετικά έγγραφα Άρθρα λογιστικής XCMD:XTRDOCDATA,S

Σχετικές εργασίες υπηρεσιών (SRVC) Σχετική εργασία Ενότητα εφαρμογής Softone command

Σχετικό παραστατικό Ειδικές συμβάσεις (CNTR) XCMD:1001

Σχετικές εργασίες προϋπολογισμών (BUDGETS) Σχετική εργασία Ενότητα εφαρμογής Softone command

Ενημέρωση αρχικών δεδομένων

Προϋπολογισμοί αγορών - Στοιχεία προϋπολογισμού XCMD:InitBudgetData,s,BUDGET.BUDGET

Ενημέρωση πραγματικών δεδομ.

Προϋπολογισμοί αγορών - Στοιχεία προϋπολογισμού XCMD:CalcBadgetData;BUDGET.BUDGET

Διαγραφή δεδομένων Προϋπολογισμοί αγορών - Στοιχεία προϋπολογισμού XCMD:DELETEBUDGETDATA;BUDGET.BUDGET

Αντιγραφή δεδομένων Προϋπολογισμοί αγορών XCMD:COPYBUDGETDATA;BUDGET.BUDGET

Page 214: Customizing Softone - The Black Book Ver.2012a

Παράρτημα – Βοηθητικοί Πίνακες

214

Σχετικές εργασίες CRM Σχετική εργασία Ενότητα εφαρμογής Softone command

Συνέχεια ενέργειας Ενέργειες - Τηλ.Κλήσεις - Συναντήσεις - Εργασίες - Email XCMD:FOLLOWUPDLG

Ιστορικό ενέργειας Ενέργειες - Τηλ.Κλήσεις - Συναντήσεις - Εργασίες - Email XCMD:ACTHISTDLG

Επανάληψη ενέργειας Ενέργειες - Τηλ.Κλήσεις - Συναντήσεις - Εργασίες - Email XCMD:ACTREPEATDLG

Ευκαιρία πώλησης Ενέργειες - Τηλ.Κλήσεις - Συναντήσεις - Εργασίες - Email XCMD:1002

Προηγούμενο βήμα Ενέργειες - Τηλ.Κλήσεις - Συναντήσεις - Εργασίες - Email XCMD:SFPREVSTEP

Σχετικά έγγραφα Ενέργειες - Τηλ.Κλήσεις - Συναντήσεις - Εργασίες - Email - Draft

XCMD:XTRDOCDATA,S

Συνημμένα Email XCMD:1001 Αποστολή Email XCMD:1000 Απάντηση Email XCMD:1003 Απάντηση σε όλους Email XCMD:1004 Προώθηση Email XCMD:1005 Υποδείγματα Email XCMD:1006 Μετατροπή σε Draft entry Draft entries XCMD:1001 Μητρώο μη φυσικών προσώπων Draft entries XCMD:GsisCmpAfmData

Σχετικές εργασίες αρχείου εγγράφων (XDOCS) Σχετική εργασία Ενότητα εφαρμογής Softone command

Open file Αρχείο εγγράφων XCMD:10003 Save to file Αρχείο εγγράφων XCMD:10004 Save file to DB Αρχείο εγγράφων XCMD:10011 Delete file from DB Αρχείο εγγράφων XCMD:10012 Upload file to Azure Αρχείο εγγράφων XCMD:11011 Delete file from Azure Αρχείο εγγράφων XCMD:11012 Download from URL Αρχείο εγγράφων XCMD:11013

Page 215: Customizing Softone - The Black Book Ver.2012a

Παράρτημα – Βοηθητικοί Πίνακες

215

I. Commands Βrowser εργασιών ανά Object Οι παρακάτω πίνακες έχουν όλες τις εντολές (SoftOne commands) για όλες τις εργασίες που εμφανίζονται στους browsers των objects. Κάθε πίνακας έχει ανάλυση των εντολών για τις ενότητες που έχει εφαρμογή το object.

Εργασίες σε Browsers συναλλαγών (FINDOC) Σχετική εργασία Ενότητα εφαρμογής Softone command

Μετασχηματισμός Πωλήσεις XCMD:CONVERTDLG,SOSOURCE:1351 Μετασχηματισμός Παραστ.Αποθήκης XCMD:CONVERTDLG,SOSOURCE:1151 Μετασχηματισμός Αγορές XCMD:CONVERTDLG,SOSOURCE:1251 Μετασχηματισμός παραστατικού Παραστατικά παγίων XCMD:ASSDOC,N,CNV:1

Μετασχηματισμός γραμμών Πωλήσεις, Αγορές XCMD: CONVERTDLG,SOSOURCE:1351,LN:1

Άρση εκκρεμότητας Πωλήσεις, Λιανική, Αγορές, Παραστ.Αποθ. XCMD:REMOVERESTMODE

Επαναφορά εκκρεμ. Πωλήσεις, Λιανική, Αγορές, Παραστ.Αποθ. XCMD:UNDOREMOVEREST

Άρση εκκρεμ.γραμμών Πωλήσεις, Λιανική, Αγορές, Παραστ.Αποθ. XCMD:REMOVERESTMODE,LN:1

Επαναφορά εκκρεμ. γραμμών

Πωλήσεις, Λιανική, Αγορές, Παραστ.Αποθ. XCMD:UNDOREMOVEREST,LN:1

Επεξεργασία παραστατικών Πωλήσεις XCMD:PROCESSDLG,SOSOURCE:1351

Επεξεργασία παραστατικών Παραστ.Αποθήκης XCMD:PROCESSDLG,SOSOURCE:1151

Επεξεργασία παραστατικών Αγορές XCMD:PROCESSDLG,SOSOURCE:1251

Αντιγραφή παραστατικού Πωλήσεις XCMD:SALDOC,N,CNV:3

Αντιγραφή παραστατικού Λιανική XCMD:RETAILDOC,N,CNV:3

Αντιγραφή παραστατικού Αγορές XCMD:PURDOC,N,CNV:3

Αντιγραφή παραστατικού Παραστ.Αποθήκης XCMD:ITEDOC,N,CNV:3

Αντιγραφή παραστατικού Παραστατικά παγίων XCMD:ASSDOC,N,CNV:3

Αναίρεση κινήσεων

Πωλήσεις, Λιανική, Αγορές,Παρ.Αποθ-Παγίων Σύνθεση, Εμβασμ. Εισπράξεις, Ειδ.συναλλ.

XCMD:1001

Ακύρωση με αντιλογισμό Πωλήσεις XCMD:SALDOC,N,CNV:100

Ακύρωση με αντιλογισμό Αγορές XCMD:PURDOC,N,CNV:100

Ακύρωση με αντιλογισμό Παραστ.Αποθήκης XCMD:ITEDOC,N,CNV:100 Ακύρωση με αντιλογισμό Εισπράξεις, Ειδικές συναλλαγές XCMD:1003 Επανέκδοση με αντιλογισμό Πωλήσεις, Λιανική XCMD:10016

Page 216: Customizing Softone - The Black Book Ver.2012a

Παράρτημα – Βοηθητικοί Πίνακες

216

Εργασίες σε Browsers συναλλαγών (FINDOC) Σχετική εργασία Ενότητα εφαρμογής Softone command

Πρόβλεψη ποσού προεξόφλησης Παραστ.Factoring XCMD:Docspmcash

Εκταμίευση ποσού προεξόφλησης Παραστ.Factoring XCMD:Docsmcash

Εκταμίευση υπολοίπου Παραστ.Factoring XCMD:Docsrcash

Δαπάνη προεξόφλησης Παραστ.Factoring XCMD:DocsPayExpences

Δαπάνη διαχείρισης Παραστ.Factoring XCMD:DocsExpences

Δημιουργία πιστωτικών Αποτελέσμ. πιστωτικών XCMD:CreditDoc

Εργασίες σε Browsers συναλλασσομένων (TRDR-PRJC-PRSN) Σχετική εργασία Ενότητα εφαρμογής Softone command

Καταχώρηση ενεργειών Πελάτες, Προμηθευτές, Χρεώστες, Πιστωτές, Έργα, Επαφές

XCMD:CRTACTIONDLG

Αποστολή email Πελάτες, Προμηθευτές, Χρεώστες, Πιστωτές, Επαφές XCMD:SENDEMAILDLG

Καταχώριση εγγράφου Πελάτες, Προμηθευτές, Επαφές Χρεώστες, Πιστωτές, Έργα

XCMD:CreateXDoc

Export σε Outlook Επαφές XCMD:EXPOUTCONTACTS

Export σε Google Επαφές XCMD:EXPGCONTACTS

Εργασίες σε Browsers υλικών (MTRL) Σχετική εργασία Ενότητα εφαρμογής Softone command

Μαζική αλλαγή τιμών Είδη XCMD:IteCalcMarkUp

Διακινήσεις μεταξύ Α.Χ. Είδη XCMD:IteWhouseRest

Εξυπηρέτηση παραγγελιών Είδη XCMD:IteOrdersServ

Καταχώριση εγγράφου Είδη, Πάγια, Υπηρεσίες XCMD:CreateXDoc

Μεταφ. στο αρχείο «Είδη Web» Είδη XCMD:IteToWeb

Μεταφ. Στο αρχ. «Είδη Touch» Είδη XCMD:IteToRetail

Εργασίες σε Browsers λογιστικής (ACNT) Σχετική εργασία Ενότητα εφαρμογής Softone command

Ακύρωση άρθρου Γενική Λογιστική XCMD:1001

Ακύρωση άρθρου Γενική Λογιστική XCMD:ACCGLHEADER,N,CNV:100

Ακύρωση με αντιλογισμό Αναλυτική Λογιστική XCMD:1001

Ακύρωση με αντιλογισμό Αναλυτική Λογιστική XCMD:ACCALHEADER,N,CNV:100

Page 217: Customizing Softone - The Black Book Ver.2012a

Παράρτημα – Βοηθητικοί Πίνακες

217

Εργασίες σε Browsers αξιογράφων (CHEQUE) Σχετική εργασία Ενότητα εφαρμογής Softone command

Ταμειακή συναλλαγή Αξιόγραφα XCMD:ChqCfnDoc

Καταχώριση εγγράφου Αξιόγραφα XCMD:CreateXDoc

Εργασίες σε Browsers υπηρεσιών (SRVC) Σχετική εργασία Ενότητα εφαρμογής Softone command

Σχετικά παραστατικά Κλήσεις υπηρεσιών XCMD:100001

Ακύρωση κλήσης Κλήσεις υπηρεσιών XCMD:100002

Αναίρεση κινήσεων Φάκελοι υπηρεσιών XCMD:1001

Άρση εκκρεμότητας Φάκελοι υπηρεσιών XCMD:1002

Παραστατικά ανταλλακτικών Φάκελοι υπηρεσιών XCMD:SALDOC,N,FROMSRVCARD:1

Παραστατικά υπηρεσιών Φάκελοι υπηρεσιών XCMD:SALDOC,N,FROMSRVCARD:2

Παρ/κό υπηρεσιών-ανταλακτ. Φάκελοι υπηρεσιών XCMD:SALDOC,N,FROMSRVCARD:0

Αποστολή σε πελάτη Φάκελοι υπηρεσιών XCMD:SALDOC,N,SENDSRVCARD:1

Καταχώριση εγγράφου Εγκαταστάσεις, Εγγυήσεις XCMD:CreateXDoc

Εργασίες σε Browsers αρχείων εργασιών (XDOC) Σχετική εργασία Ενότητα εφαρμογής Softone command

Άνοιγμα αρχείου Αρχείο εγγράφων XCMD:10003

Εξαγωγή εγγράφου Αρχείο εγγράφων XCMD:10004

Αποστολή με e-mail Αρχείο εγγράφων XCMD:SendDocWithMail

Εργασίες σε Browsers CRM Σχετική εργασία Ενότητα εφαρμογής Softone command

Συνέχεια ενέργειας Ενέργειες - Τηλ.Κλήσεις - Συναντήσεις - Εργασίες - Email – Στατιστικά ενεργειών

XCMD:FOLLOWUPDLG,BROWSER:1

Ιστορικό ενέργειας Ενέργειες - Τηλ.Κλήσεις - Συναντήσεις - Εργασίες - Email – Στατιστικά ενεργειών

XCMD:ACTHISTDLG,BROWSER:1

Επανάληψη ενέργειας Ενέργειες - Τηλ.Κλήσεις - Συναντήσεις - Εργασίες - Email – Στατιστικά ενεργειών

XCMD:ACTREPEATDLG,BROWSER:1

Καταχώρηση ενέργειας Στατιστικά ενεργειών – Draft XCMD:1100

Αποστολή email Draft Entries XCMD:SENDEMAILDLG

Export σε Google Draft Entries XCMD:EXPGCONTACTS

Page 218: Customizing Softone - The Black Book Ver.2012a

Παράρτημα – Βοηθητικοί Πίνακες

218

J. Περιορισμοί Βάσης Δεδομένων Oι παρακάτω πίνακες έχουν όλες τις δυνατές εντολές που μπορούν να χρησιμοποιηθούν στα Tabs «Περιορισμοί Β.Δ / Λογικοί» κατά τη δημιουργία πινάκων από τον Database Designer.

Περιορισμοί Β.Δ. / Λογικοί Command Περιγραφή / Λειτουργία Σύνταξη / Παράδειγμα Εντολής

XP

Δημιουργία του primary key του πίνακα βάσει των πεδίων που βρίσκονται στο πρώτο Tab «Βασικά στοιχεία πίνακα» μέσα στο πεδίο «Κύριο κλειδί».

XP_KEYNAME (όπου KEYNAME το όνομα του κλειδιού)

XU

Δημιουργία unique, non-clustered index key. Χρησιμοποιείται όταν χρειάζεται να υπάρχουν μοναδικές τιμές σε συγκεκριμένα πεδία ενός πίνακα.

XU_KEYNAME = FIELDNAME1, FIELDNAME2,… Παράδειγμα: Μοναδικοί κωδικοί υπ/των πελατών ανά πελάτη XU_TRDBRANCH_CODE=TRDR,CODE

XI

Δημιουργία non-unique, non-clustered index key. Χρησιμοποίεται για τη δημιουργία index key για συγκεκριμένα πεδία ενός πίνακα.

XI_KEYNAME = FIELDNAME1, FIELDNAME2,…

XF Δημιουργία foreign key σε πίνακα.

XF_TABLE_FOREIGNKEY = REFERENCETABLE Παράδειγμα: Πίνακας TRDR(Συναλλασσόμενοι) Command: XF_TRDR_SALESMAN = PRSN ConstraintName: XF_TRDR_SALESMAN Foreign Key: SALESMAN Reference Table: PRSN

XC Περιορισμός τιμών πεδίου (Field Validation). Χρησιμοποιείται για τον περιορισμό των τιμών ενός πεδίου.

XC_KEYNAME = (FIELDNAME>=value) Παράδειγμα: Περιορισμός τιμών πεδίου FIELD1 με τιμές από 100 έως 500. XC_KEYNAME =(FIELD1>100) AND (FIELD1<500)

XD

Λειτουργία Cascade Delete. Χρησιμοποιείται σε detail πίνακα και φροντίζει να διαγράφει αυτόματα τις εγγραφές του όταν σβηστούν οι αντίστοιχες εγγραφές του header πίνακα.

XD_DETAILTABLE_HEADERTABLE Παράδειγμα: Αυτόματη διαγραφή υποκαταστημάτων πελάτη κατά τη διαγραφή του. XD_TRDBRANCH_TRDR

XT

Λογικός περιορισμός: Ορισμός links με πίνακες. Εμφάνιση linked πινάκων σε objects μέσα από το σχεδιασμό ευρετηρίων.

XT_TABLEFIELD_OBJECT Παράδειγμα: EXTRA πεδία ειδών (Link πεδίου) XT_MTRL_ITEEXTRA

XR Λογικός περιορισμός: Δημιουργία foreign key σε object

XR_TABLE_FIELDNAME = OBJECT Παράδειγμα: Σχετ. είδος σε είδη XR_MTRL_RELITEM = ITEM

XR Λογικός περιορισμός: Λειτουργία Cascade Delete σε object

XR_DETAILTABLE_HEADERTABLE Παράδειγμα: Γραμμές υλικών XR_MTRLINES_FINDOC