Web Forms Τν module Web Forms ηνπ Atlantis δίλεη ηελ δπλαηόηεηα ζρεδηαζκνύ εθαξκνγώλ πνπ κπνξνύλ λα ιεηηνπξγήζνπλ κέζσ ελόο web browser. Η επηθνηλσλία κε ην Atlantis γίλεηαη κέζσ ηνπ RWS (Roads Web Service). Τν Web Forms βξίζθεηαη ζην κελνύ Οξγάλσζε ιεηηνπξγίαο -> Βνεζεηηθέο εξγαζίεο -> Web Forms. Ο θάζε ζρεδηαζκόο, έρεη ζηνηρεία πνπ είλαη νκαδνπνηεκέλα σο εμήο : 1) Γεληθά ζηνηρεία 2) Σηνηρεία browser 3) Σηνηρεία header 4) Σηνηρεία grid 5) Σηνηρεία footer
Αναλσηική περιγραθή ζτεδιαζμού μίας νέας εθαρμογής Γενικά ζηοιτεία Σηα γεληθά ζηνηρεία ηεο εθαξκνγήο ζπκπιεξώλνληαη ηα δεδνκέλα πνπ εκθαλίδνληαη ζηελ παξαπάλσ νζόλε. Εθηόο από ηα απηνλόεηα ζηνηρεία (θσδηθόο, πεξηγξαθή, δηθαηώκαηα ρξήζεο), ππάξρεη θαη ην πεδίν Classname. Σ απηό ζπκπιεξώλεηαη ε θιάζε ηεο ζρεδηαδόκελεο εθαξκνγήο. Παηώληαο ην εκθαλίδεηαη dictionary κε ην ζύλνιν ησλ θιάζεσλ ηνπ πξνγξάκκαηνο θαη κία ζύληνκε πεξηγξαθή γηα ηελ θάζε κία, όπσο εκθαλίδεηαη ζηελ παξαθάησ εηθόλα.
Ελαιιαθηηθά, ην classname εκθαλίδεηαη θαη κέζα από ηελ ίδηα ηελ εθαξκνγή, κε ηα πιήθηξα Alt + Ctrl + Shift Z. Σηελ παξαθάησ εηθόλα εκθαλίδεηαη ε θιάζε ηνπ πξνγξάκκαηνο θαηαρώξεζεο ζπλαιιαγώλ πσιήζεσλ πνπ αλαθηήζεθε κε απηόλ ηνλ ηξόπν. Σε πεξίπησζε πνπ επηζπκνύκε λα γξάςνπκε ζε δηθνύο καο (user defined) πίλαθεο θαη πεδία, νξίδνπκε ην όλνκα ηεο θιάζεο σο TGeneralClient θαη ζηε ζπλέρεηα ηελ πεξηγξάθνπκε ζην θάησ κέξνο ηεο νζόλεο παηώληαο δεμί click. Αθνινπζεί παξάδεηγκα νξηζκνύ κηαο θιάζεο. [DATAMODULE] MAINTABLE=CUSTOMER KEYFIELDS=ID [CUSTOMER] KEYFIELDS=ID [CUSTADDRESS] KEYFIELDS=PERID MASTERFIELDS=ID MASTERTBNAME=CUSTOMER [CUSTBANKACCOUNT] KEYFIELDS=PERID MASTERFIELDS=ID MASTERTBNAME=CUSTOMER [CUSTRESPPERSON] KEYFIELDS=PERID MASTERFIELDS=ID MASTERTBNAME=CUSTOMER
Browser Σηελ νζόλε απηή ζπκπιεξώλνληαη όια ηα απαξαίηεηα ζηνηρεία γηα ηελ εκθάληζε ηνπ browser ηεο εθαξκνγήο. Σην πάλσ κέξνο ζπκπιεξώλεηαη ην επηζπκεηό query. Ελαιιαθηηθό, παηώληαο δεμί click πάλσ ζηνλ αληίζηνηρν ρώξν κπνξεί λα ζπκπιεξσζεί απηόκαηα ην default query ηεο αληίζηνηρεο θιάζεο, όπσο εκθαλίδεηαη ζηελ παξαθάησ εηθόλα. Σηε ζπλέρεηα, ρξεζηκνπνηώληαο ην νξίδνληαη ηα πεδία πνπ ζα εκθαληζηνύλ ζην browser. Γηα θάζε πεδίν, κέζσ εηδηθήο θόξκαο πνπ εκθαλίδεηαη ζηε παξαθάησ εηθόλα, νξίδνληαη νη ιεπηνκέξεηεο εκθάληζεο. Καηά ηε ζύληαμε ηνπ query κπνξνύλ λα ρξεζηκνπνηεζνύλ νη παξαθάησ παξάκεηξνη ηνπ πξνγξάκκαηνο : @ComID (Εηαηξία), @FyeID (Φξήζε), @LoginDate (Ηκ/λαη εηζόδνπ), @FipID (Πεξίνδνο εηζόδνπ), @CurrentDate (Τξέρνπζα εκ/ληα), @UserID (Φξήζηεο), @BranchID (Υπνθαηάζηεκα). Σην ηέινο ηνπ browser query ζα πξέπεη νπσζδήπνηε λα ππάξρεη $w γηα λα ιεηηνπξγνύλ ζσζηά ηα θίιηξα ηνπ browser.
Header Grid - Footer Σηηο ελόηεηεο πνπ αθνινπζνύλ (header, grid, footer) νξίδνληαη ηα πεδία ηνπ data module πνπ ζα εκθαληζηνύλ ζηηο αληίζηνηρεο πεξηνρέο ηεο εθαξκνγήο. Ο ηξόπνο νξηζκνύ πεδίσλ είλαη θνηλόο γηα όιεο ηηο ελόηεηεο. Αθνινπζεί αλαιπηηθή πεξηγξαθή. Γενικά Οη πιεξνθνξίεο πνπ νξίδνληαη ζην πξώην κέξνο όισλ ησλ πεδίσλ είλαη θνηλέο. Σ απηό νξίδεηαη ε πεξηγξαθή κε ηελ νπνία ην ζπγθεθξηκέλν πεδίν ζα εκθαληζηεί ζηελ νζόλε, ν πίλαθαο θαη πεδίν ηνπ data module ζην νπνίν αληηζηνηρεί. Καηά ηνλ νξηζκό ησλ αληηθεηκέλσλ ηνπ grid, εκθαλίδεηαη κία πξόζζεηε ηδηόηεηα πνπ αθνξά ηελ επαλαιεπηηθή θαηαρώξεζε όπσο θαίλεηαη ζηελ παξαθάησ εηθόλα. Ελεξγνπνηώληαο ηελ ηδηόηεηα απηή επηηπγράλεηαη ε δηαηήξεζε ηεο ηηκήο ηνπ πεδίνπ θαηά ηε δηάξθεηα επαλαιακβαλόκελσλ θαηαρσξήζεσλ. Π.ρ. θαηαρώξεζε ζπλαιιαγώλ κε ρξώκα κέγεζνο επηηπγράλεηαη κε νξηζκό ησλ ζηνηρείσλ ρξώκαηνο θαη κεγέζνπο ζηελ αλαιπηηθή γξακκή. Κάλνληαο ρξήζε ηεο ηδηόηεηαο δηαηήξεζεο ηηκώλ κπνξεί λα δηεπθνιύλεη ζεκαληηθά κία ηέηνηα παξαγγειηνιεςία.
Edit Οριζμός απλού πεδίοσ καηατώρηζης δεδομένων Οξίδεηαη ην αλ ην πεδίν ζα εκθαλίδεηαη θαη αλ ζα επηηξέπεηαη ε κεηαβνιή ηνπ.
Lookup Οριζμός πεδίων ηύποσ lookup Σ απηό ηνλ ηύπν πεδίσλ νξίδνληαη ν πίλαθαο θαη ην πεδίν ζύλδεζεο, ηα πεδία πνπ ζα εκθαληζηνύλ ζηε ιίζηα (drop down) θαη ην πεδίν πνπ ηειηθά ζα εκθαληζηεί αθνύ γίλεη ε επηινγή από ην drop list.
Selector Οριζμός πεδίων ποσ θα οδηγήζοσν ζε επιλογή ζηοιτείων μέζω ενός selector Σε πεξίπησζε πνπ ππάξρεη ήδε έηνηκνο selector ηνπ Atlantis (π.ρ. customer, supplier θιπ) γίλεηαη επηινγή απηνύ θαη ην κόλν πνπ κέλεη λα νξηζηεί είλαη αλ ζα επηηξέπεηαη εηζαγσγή δεδνκέλσλ πξηλ από ην άλνηγκα ηνπ selector (Edit controls - checkbox), θαη ην αλ ηελ πξώηε θνξά πνπ ζα εκθαληζηεί ν selector ζα είλαη ήδε εκπινπηηζκέλνο κε δεδνκέλα (Auto select - checkbox). Ελαιιαθηηθά, ζε πεξίπησζε πνπ ν selector δελ είλαη κεηαμύ ησλ εηνίκσλ selectors ηνπ Atlantis, ζα πξέπεη ζπκπιεξώλνληαο ηηο θαηάιιειεο ηηκέο ζηα αληίζηνηρα πεδία, λα δεκηνπξγεζεί λένο selector. Πξώηα ελεξγνπνηείηαη ν custom selector κε ην αληίζηνηρν check box θαη νξίδεηαη αλ ζα είλαη ππεξεηαηξηθόο. Σηε ζπλέρεηα νξίδεηαη ν πίλαθαο θαη ην πεδίν κε ην νπνίν απηόο ζα ζπλδεζεί κε ηνλ αληίζηνηρν πίλαθα θαη πεδίν ηνπ data module. Καηόπηλ νξίδνληαη ηα δύν πεδία πνπ ζα εκθαληζηνύλ ζηελ εθαξκνγή, αθνύ ν ρξήζηεο νινθιεξώζεη ηελ επηινγή ηνπ από ηνλ selector. Σηα πεδία ιίζηαο νξίδνληαη όια ηα πεδία πνπ ζα εκθαληζηνύλ ζηνλ selector θαη ηαπηόρξνλα ζα απνηεινύλ θαη θίιηξα επηινγήο δεδνκέλσλ. Σηνλ ηίηιν νξίδεηαη ν ηίηινο ηνπ selector θαη ζηελ πξόζζεηε ζπλζήθε κπαίλεη ε επέθηαζε ηνπ query γηα λα επηηεπρζεί πεξηνξηζκόο ησλ δεδνκέλσλ. Καηά ηε ζύληαμε ηνπ query κπνξνύλ λα ρξεζηκνπνηεζνύλ νη παξαθάησ παξάκεηξνη ηνπ πξνγξάκκαηνο : @ComID (Εηαηξία), @FyeID (Φξήζε), @LoginDate (Ηκ/λαη εηζόδνπ), @FipID (Πεξίνδνο εηζόδνπ), @CurrentDate (Τξέρνπζα εκ/ληα), @UserID (Φξήζηεο), @BranchID (Υπνθαηάζηεκα) Οη ηδηόηεηεο Edit controls θαη Auto select ρξεζηκνπνηνύληαη γηα λα δώζνπλ δπλαηόηεηα πιεθηξνιόγεζεο θίιηξσλ θαη απηόκαηε αλαδήηεζε κε βάζε ην θίιηξν πνπ πιεθηξνινγήζεθε αληίζηνηρα.
Ειδικό ζηήζιμο Selector για ανάγνωζη barcode Η αλαδήηεζε εηδώλ κε ρξήζε barcode κπνξεί λα ζηεζεί κε ρξήζε Custom selector. Αθνινπζεί παξάδεηγκα : Η δηαθνξά ηνπ selector απηνύ από έλαλ θαλνληθό selector είλαη : - Σηα πεδία εκθάληζεο δειώλεηαη κόλν έλα πεδίν. - Ελεξγνπνηείηαη ε ηδηόηεηα Κσδ. αλαδήηεζεο. Απηό ζεκαίλεη όηη θαηά ηελ εκθάληζε ηεο γξακκήο γηα δηόξζσζε, ζην πεδίν απηό δελ ζα εκθαλίδνληαη δεδνκέλα. Τα παξαπάλσ δύν ραξαθηεξηζηηθά ζηεζίκαηνο ηνπ selector γηα αλάγλσζε barcode δελ είλαη δεζκεπηηθά κόλν γηα ην barcode αιιά κπνξνύλ λα ρξεζηκνπνηεζνύλ γεληθόηεξα. Πιεθηξνινγώληαο έλα barcode, κπνξεί λα ελεξγνπνηεζεί ν selector. Σ απηή ηελ πεξίπησζε, αλ ην barcode είλαη ζπλδπαζκέλν κόλν κε έλα είδνο απηό εκθαλίδεηαη απηόκαηα ζηελ νζόλε. Αλ είλαη ζπλδπαζκέλν κε πεξηζζόηεξα ηνπ ελόο είδε, απηά εκθαλίδνληαη ζε ιίζηα θαη ν ρξήζηεο κπνξεί λα επηιέμεη. Ελαιιαθηηθά, κεηά από ηελ πιεθηξνιόγεζε ηνπ barcode κπνξεί λα παηεζεί ην Enter. Σ απηή ηελ πεξίπησζε ην πξόγξακκα ζα πάξεη πνζόηεηα θαη ηηκή κνλάδνο ζύκθσλα κε ην ζηήζηκν ηνπ ERP. Αλ ην barcode επηζηξέθεη πεξηζζόηεξα από έλα είδε, ζα επηιερζεί ην πξώην από απηά.
ComboBox Οριζμός πεδίων ποσ θα οδηγήζοσν ζε επιλογή ζηοιτείων μέζω ενός combo box Απηόο ν ηύπνο πεδίσλ ρξεζηκνπνηείηαη ζηηο πεξηπηώζεηο όπνπ ηα δεδνκέλα πνπ ζα θαηαιήμνπλ ζηνπο πίλαθεο ηεο εθαξκνγήο είλαη κε αλαγλσξίζηκα από ηνλ ρξήζηε ηνπ πξνγξάκκαηνο. Π.ρ. κία εξώηεζε ηύπνπ Ναη / Όρη κπνξεί λα επηζηξέθεη ζηε βάζε ηηο ηηκέο 1/0 αληηζηνίρσο. Ο ρξήζηεο όκσο ζα πξέπεη λα απαληά ζηελ εξώηεζε κε έλα Ναη ή κε έλα Όρη. Σηα πεδία απηνύ ηνπ ηύπνπ, πέξαλ ησλ θνηλώλ δεδνκέλσλ πνπ αθνξνύλ ην data module, ηα κόλα ζηνηρεία πνπ απαηηνύληαη είλαη νη Επιλογές πνπ ζα εκθαληζηνύλ ππό κνξθή drop list (Π.ρ. ην Ναη θαη ην Όρη) θαη νη αληίζηνηρεο Τιμές πεδίοσ πνπ ζα θαηαγξαθνύλ ζηε βάζε δεδνκέλσλ (ζηε ζπγθεθξηκέλε πεξίπησζε ην 1 θαη ην 0 αληίζηνηρα).
DBComboBox Οριζμός πεδίων ποσ θα οδηγήζοσν ζε επιλογή ζηοιτείων μέζω ενός combo box ποσ ανηλεί ηα δεδομένα ηοσ από κάποιο πίνακα ηης βάζης δεδομένων Τα πεδία ηύπνπ DBComboBox εκθαλίδνπλ ηηο εγγξαθέο ελόο πίλαθα ππό κνξθή drop list θαη επηηξέπνπλ ηελ επηινγή κίαο από απηέο. Ο νξηζκόο ελόο ηέηνηνπ πεδίνπ γίλεηαη νξίδνληαο ηνλ Πίνακα, ην Πεδίο ζύνδεζης ηνπ πίλαθα κε ην αληίζηνηρν πεδίν ηνπ Data Module θαη ην Πεδίο λίζηας πνπ νξίδεη ην πεδίν ηνπ πίλαθα πνπ ζα εκθαληζηεί ζην drop list. Οινθιεξώλνληαο ηνλ ζρεδηαζκό, ηεο επηζπκεηήο εθαξκνγήο ην κόλν πνπ κέλεη είλαη ε ελεξγνπνίεζε ηνπ Web Service (Οξγάλσζε ιεηηνπξγίαο -> Βνεζεηηθέο εξγαζίεο -> Web Service). Τώξα ελεξγνπνηώληαο έλαλ web browser ζηε θαηάιιειε ζειίδα (π.ρ. http://localhost/webforms) εκθαλίδεηαη ε ζειίδα login ησλ web forms.
Πιεθηξνινγώληαο ηα ζηνηρεία εηζόδνπ εκθαλίδεηαη ηα κελνύ κε ηηο δηαζέζηκεο θόξκεο. Επηιέγνληαο κία δηαζέζηκε θόξκα, ην πξώην πνπ εκθαλίδεηαη είλαη ηα θίιηξα ηνπ αληίζηνηρνπ browser.
Από ην ζεκείν απηό κπνξεί λα γίλεη αλαδήηεζε θαη εκθάληζε δεδνκέλσλ ή θαηαρώξεζε λέαο ζπλαιιαγήο. Καηά ηελ θαηαρώξεζε λέσλ ζπλαιιαγώλ, κε ην θνπκπί Recalc εθηειείηαη πιήξσο ε δηαδηθαζία θαηαρώξεζεο ζπλαιιαγώλ, επηζηξέθνληαο όια ηα ππνινγηδόκελα πεδία, ρσξίο όκσο λα γίλεη ε πξαγκαηηθή θαηαρώξεζε ησλ δεδνκέλσλ ζηνπο πίλαθεο ηεο βάζεο.
Επηιέγνληαο κία εγγξαθή από ηνλ Browser εκθαλίδνληαη αλαιπηηθά όια ηα πεδία πνπ έρνπλ ζπκπεξηιεθζεί θαηά ηελ ζρεδίαζε ζε όια ηα ηκήκαηα ηεο θόξκαο (Header, Grid, Footer) Κατά τθν καταχώρθςθ νζων εγγραφών ςυμπλθρώνονται όλα τα πεδία του header δια πλθκτρολόγθςθσ ι επιλογισ δεδομζνων από selectors και drop lists, ανάλογα με το ςτιςιμο. Η ειςαγωγι / διόρκωςθ και διαγραφι αναλυτικών γραμμών γίνεται με τθ βοικεια των button +, -, και Edit.
Κάνοντασ click πάνω ςτο + εμφανίηεται θ οκόνθ καταχώρθςθσ νζασ αναλυτικισ γραμμισ ςφμφωνα με το ςτιςιμο. Με τθν ολοκλιρωςθ τθσ καταχώρθςθσ και πατώντασ αποδοχι, εμφανίηεται θ γενικι οκόνθ καταχώρθςθσ με τθν αναλυτικι γραμμι ςυμπλθρωμζνθ ςτο τμιμα του grid.