Εκφράσεις για custom πεδία σε Φόρμες Εκτύπωσης
Σκοπός: Σκοπός αυτού του κειμένου είναι η επεξήγηση των βημάτων για να εμφανιστεί πληροφορία στην εκτύπωση που δεν υπάρχει σε Πρότυπη Έκφραση.
Εκφράσεις για custom πεδία
Μπορείτε να εισάγετε νέα πεδία στην φόρμα όπως για παράδειγμα ρέστα ή κάποια έκπτωση μέσω εκφράσεων. Επίσης μπορείτε να εισάγετε στοιχεία από άλλους πίνακες (π.χ. πελάτες, αποθήκη κ.ο.κ.).
Στη φόρμα που θα δημιουργήσετε, εισάγετε νέο πεδίο όπου στο textbox του tab Έκφραση θα γράψετε την έκφραση που θα έχει σαν αποτέλεσμα την εμφάνιση του πεδίου που επιθυμείτε. Για να λειτουργήσει σωστά η χρήση κώδικα θα πρέπει να έχει επιλεγεί η Έκφραση στο πεδίο Τύπος καθώς και στο drop down μενού να είναι επιλεγμένο το php.
Σημείωση: Για τη χρήση Πρότυπης Έκφρασης σε δική σας custom Έκφραση, θα χρειαστεί να την αναζητήσετε και να την επιλέξετε στο πεδίο Πρότυπη Έκφραση και έπειτα να επιλέξετε Καθαρισμός (σύμβολο γόμας στην αριστερή άκρη του πεδίου) ώστε να σας επιτραπεί να μεταβάλετε την Έκφραση.
Αναφορικά με την αντιγραφή μίας default φόρμας, καθώς και για την εισαγωγή νέου στοιχείου, μπορείτε να συμβουλευτείτε το κείμενο παραμετροποίησης φόρμας από εδώ, ελέγχοντας τα βήματα Αντιγραφή Φόρμας & Εισαγωγή νέου Στοιχείου.
Εύρεση ονομάτων πεδίων
1ος τρόπος:
Από την οθόνη που βρίσκεται το πεδίο που θέλετε να εμφανίσετε, επιλέγετε στο "κενό" δεξί κλικ -> Πληροφορίες Οθόνης και εντοπίζετε το πεδίο που επιθυμείτε.
2ος τρόπος:
Εκτελείτε την αναφορά [140000000000000 - Πίνακες Βάσης δεδομένων: πεδία και συσχετίσεις], φιλτράρετε με Πίνακα ή/και Module και εντοπίζετε το πεδίο που επιθυμείτε.
Α. Πράξεις μεταξύ πεδίων
Στα παραδείγματα που ακολουθούν μπορείτε να δείτε τρόπους με τους οποίους γίνονται πράξεις μεταξύ πεδίων.
Α1. Ρέστα.
Τα ρέστα υπολογίζονται με την έκφραση [Είσπραξη]-[Σύνολο].
Για να βρείτε το αρχικό πεδίο της είσπραξης θα χρειαστεί κατά την εισαγωγή νέου στοιχείου να αναζητήσετε στο πεδίο Πρότυπη Έκφραση με Ποσό Είσπραξης, ώστε να σας εμφανίσει και να επιλέξετε το πεδίο Παραστατικά Πελατών -> Ποσό Είσπραξης (και Ρέστα). Επιλέγοντας τη "γόμα" θα σας επιτρέψει να χρησιμοποιήσετε/τροποποιήσετε το κομμάτι κώδικα που φαίνεται στο textbox.
Ομοίως βρίσκετε το σύνολο, αναζητώντας με Σύνολο και επιλέγοντας το πεδίο Παραστατικά Πελατών -> Σύνολο. Το πεδίο αυτό είναι της μορφής $pdf->printsData->getNumber("a55a56a57a67_nr01_a55a56a57a67_nr01_p0109", 2), ωστόσο όταν τα πεδία πρόκειται να χρησιμοποιηθούν για πράξεις πρέπει αν έχουν την παρακάτω μορφή:
$pdf->printsData->getData("a55a56a57a67_nr01_a55a56a57a67_nr01_p0110");
Παρατηρείτε ότι αντί για getNumber πλέον είναι getData καθώς και δεν υπάρχει δεύτερη παράμετρος εντός της συνάρτησης.
Εκφραση:
$eispraksi = $pdf->printsData->getData("a55a56a57a67_nr01_a55a56a57a67_nr01_p0110");
$synolo = $pdf->printsData->getData("a55a56a57a67_nr01_a55a56a57a67_nr01_p0109");
$resta = $eispraksi - $synolo;
$resta_formated = peg002_format_number($resta, 2);
return array("text"=>$resta_formatted . $currency_symbol);
Σε αυτή την περίπτωση χρησιμοποιούνται 2 μεταβλητές ($eispraksi & $synolo), γίνεται πράξη μεταξύ αυτών, ορίζεται το $resta σε $resta_formated ώστε να φέρει 2 δεκαδικά (με χρήση της συνάρτησης peg002_format_number) και τέλος, εντός του return array προσθέτουμε το σύμβολο του ευρώ (με χρήση του . $currency_symbol).
Α2. Αρχική Αξία Παραστατικού μείον Έκπτωση στο σύνολο του Παραστατικού.
Για την εμφάνιση του συγκεκριμένου πεδίου θα χρειαστεί να αφαιρέσετε από την αρχική αξία του παραστατικού την έκπτωση που έχει γίνει στο σύνολο αυτού. Χρησιμεύει σε περιπτώσεις προτυπωμένων φορμών οι οποίες περιλαμβάνουν το συγκεκριμένο πεδίο, το οποίο όμως δεν υπάρχει αυτούσιο στην εφαρμογή.
$axia_pro= $pdf->printsData->getData("a55a56a57a67_nr01_a55a56a57a67_nr01_p0100", 2);
$ekptosi= $pdf->printsData->getData("a55a56a57a67_nr01_a55a56a57a67_nr01_p0102", 2);
$total= $axia_pro - $ekptosi;
$sum_formatted = peg002_format_number($total, 2);
return array("text"=>$sum_formatted . $currency_symbol);
Και σε αυτή την περίπτωση χρησιμοποιούνται 2 μεταβλητές, γίνεται πράξη μεταξύ αυτών, ορίζεται το $total ώστε να φέρει 2 δεκαδικά (με χρήση της συνάρτησης peg002_format_number) και τέλος, εντός του return array προσθέτουμε το σύμβολο του ευρώ (με χρήση του . $currency_symbol).
Α3. Μη υπολογισμός ποσοτήτων ειδών που Δεν συμμετέχουν σε Απογραφή
- Στο tab Κώδικας πριν την εκτέλεση της Εκτύπωσης θα χρειαστεί να οριστεί η γραμμή:
$p85_output['my_qty'] = 0;
- Στο tab Δεδομένα Εκτύπωσης, στο πεδίο της Ποσότητας Είδους, μπορείτε αφότου κάνετε καθαρισμό της Πρότυπης Έκφρασης να μεταβάλετε τον κώδικα της Έκφρασης ώστε αυτή να γίνει ως εξής:
$apog = pegasus_mysql_printfld('i00', 'p202', 'pno=:my_i00_pno', array('my_i00_pno'=>$pdf->printsData->getBodyData("v101")));$posot = $pdf->printsData->getBodyData("v103");if($apog==0){$my_qty=$my_qty + $posot;}$p85_output['my_qty'] = $my_qty;return array("text"=>$pdf->printsData->getBodyNumber("v103", $pdf->printsData->getBodyData("i24_dek"))); - Στο footer μπορείτε να δημιουργήσετε ένα πεδίο με [Τύπο] = Έκφραση και να ορίσετε στην Έκφραση τον παρακάτω κώδικα:
return array("text"=>peg002_format_number($p85_output['my_qty'], 2));
Επεξήγηση: στο α) γίνεται αρχικοποίηση της μεταβλητής my_qty.
Στο β) στη μεταβλητή apog ορίζεται το πεδίο Δεν Συμμετέχει σε Απογραφή, με τη βοήθεια της συνάρτησης pegasus_mysql_printfld. Στη μεταβλητή posot ορίζεται η ποσότητα του είδους και στο if ορίζεται ότι η μεταβλητή my_qty θα αυξάνεται κατά όσο είναι η ποσότητα, όταν στο είδος δεν είναι τσεκαρισμένο το Δεν Συμμετέχει σε Απογραφή.
Στο γ) ορίζεται η εντολή ώστε να εκτυπωθούν οι ποσότητες των ειδών που συμμετέχουν σε απογραφή (η μεταβλητή my_qty).
Β. Εκτύπωση πεδίου από πίνακα
Στα παραδείγματα που ακολουθούν, μπορείτε να δείτε τον τρόπο που εκτυπώνεται ένα πεδίο που δεν διατίθεται ως Πρότυπη Έκφραση.
Β1. Θέση-Ράφι (με χρήση printfld)
Επί της ουσίας, βρίσκετε αρχικά την πρότυπη έκφραση του κωδικού είδους, array("text"=>$pdf->printsData->getBodyData("v101")) και την προσαρμόζετε με τον τρόπο που φαίνεται παρακάτω:
$rafi = pegasus_mysql_printfld('i00', 'p00', 'pno=:my_i00_pno', array('my_i00_pno'=>$pdf->printsData->getBodyData("v101")));
return array("text"=>$rafi);
Σημειώνεται ότι i00 είναι ο πίνακας των ειδών και p00 το όνομα του πεδίου Θέση-Ράφι.
Β2. Διακριτικός Τίτλος (Πελάτη)
Βρίσκετε αρχικά την πρότυπη έκφραση του κωδικού του πελάτη, array("text"=>$pdf->printsData->getData("a55a56a57a67_p03_a00a01_nr01_nr01") και την προσαρμόζετε εντός της εντολής printfld με τον τρόπο που φαίνεται παρακάτω:
$diakr_titlos= pegasus_mysql_printfld('a01', 'p190', 'nr01=:my_a01_nr01', array('my_a01_nr01'=>$pdf->printsData->getData("a55a56a57a67_p03_a00a01_nr01_nr01")));
return array("text"=>$diakr_titlos);
Σημειώνεται ότι a01 είναι ο πίνακας των πελατών και p190 το όνομα του πεδίου Διακριτικός Τίτλος.
Β3. Περιγραφή Ομάδας Είδους
Όπως και στο 3, χρησιμοποιείτε και πάλι την πρότυπη έκφραση του κωδικού είδους, και την ορίζετε εντός της εντολής printfld της πρώτης μεταβλητής:
$my_omad = pegasus_mysql_printfld('i00', 'p9901', 'pno=:i00_pno', array('i00_pno'=>$pdf->printsData->getBodyData("v101")));
$my_descomad = pegasus_mysql_printfld('i21', 'p00', 'nr01=?', array($my_omad));
return array("text"=>$my_descomad);
Στη δεύτερη μεταβλητή, $my_descomad, χρησιμοποιείτε την printfld ώστε να αντλήσετε την περιγραφή της ομάδας.
Τέλος, με το return array εκτυπώνετε την Περιγραφή της Ομάδας του είδους.
Β4. ΑΦΜ Παραλήπτη
Βρίσκετε αρχικά την πρότυπη έκφραση του Παραλήπτη, "text"=>$pdf->printsData->getData("a55a56a57a67_nr01_a55a56a57a67_nr01_p502"), και την προσαρμόζετε με τον τρόπο που φαίνεται παρακάτω:
$my_afm= pegasus_mysql_printfld('d00', 'p20', 'nr01=:my_d00_nr01', array('my_d00_nr01'=>$pdf->printsData->getData("a55a56a57a67_nr01_a55a56a57a67_nr01_p502")));
return array("text"=>$my_afm);
Κατά τα προηγούμενα πραδείγματα, d00 είναι ο πίνακας των Συναλλασσομένων, p20 είναι το ΑΦΜ από το tab Λογιστικά - Επιπλέον πεδία του Συναλλασσόμενου.
Το παράδειγμα αυτό εξυπηρετεί περιπτώσεις τριγωνικής συναλλαγής, κατά την οποία έχει συμπληρωθεί Παραλήπτης στο tab Λοιπά Στοιχεία του παραστατικού και επιθυμείτε να εκτυπωθεί στη φόρμα κάποιο από τα στοιχεία του.
B5. Ειδικός Κωδικός Είδους αντί Κωδικού (σε Παραγγελία Προμηθευτή)
Η έκφραση παρακάτω εκτυπώνει σε Παραγγελία Προμηθευτή τον Ειδικό Κωδικό των Ειδών, εάν αυτός υπάρχει, αλλιώς εκτυπώνει κανονικά τον Κωδικό του είδους.
Βρίσκετε αρχικά την πρότυπη έκφραση για τον κωδικό του είδους, "text" = $pdf->printsData->getBodyData("nr01") και την προσαρμόζετε ως εξής:
$p85_output['old_body_v101'] = $pdf->printsData->getBodyData("nr01");
Έπειτα προσθέτετε το παρακάτω:
$eid = pegasus_mysql_printfld('i08', 'pe02', 'pe01=:my_i00_pno AND pe03=:my_p03', array('my_i00_pno'=>$pdf->printsData->getBodyData("v101"), 'my_p03'=>$pdf->printsData-.getData("a55a56a57a67_nr01_a55a56a57a67_nr01_p03")));
if (empty($eid)) {
return array("text"=>$pdf->printsData->getBodyData("v101"));
}
return array("text"=>$eid);
Έτσι, θα εμφανίζονται οι ειδικοί κωδικοί των Ειδών εάν υπάρχουν, διαφορετικά θα εκτυπώνεται ο Κωδικός του Είδους.
B6.Συνολικό πλήθος ειδών φορτωτικής (αφορά Pegasus Web App e-Transport)
Η παρακάτω έκφραση τυπώνει στα Δελτία Αποστολής Φορτωτικών το συνολικό πλήθος ειδών μιας φορτωτικής μέσα απο το tab[Σύνολα] και το πεδίο [Συνολική ποσότητα ειδών].
Βρίσκετε αρχικά την πρότυπη έκφραση για τον κωδικό φορτωτικής return array("text"=>$pdf->printsData->getBodyData("nr01")); και την προσαρμόζετε ως εξής:
$splith = pegasus_mysql_printfld('tran01', 'p111', 'nr01=:my_tran01_pno', array('my_tran01_pno'=>$pdf->printsData->getBodyData("nr01")));
return array("text"=>$splith);
