Χρήση συνάρτησης mcase για υπολογισμό επιστροφής για αποδείξεις tax free

50 views
Skip to first unread message

Achileas Boulogiorgos

unread,
Sep 11, 2025, 3:23:37 AM (13 days ago) Sep 11
to Softone Developers Network
Καλημέρα σας

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

Ποσό Από | Ποσό Έως | Ποσό επιστροφής
0                 |    49,99       |     0
50               |    69,99       |     6,50
70               |     89,99      |     8,50
90               |     119,99    |     11,50
.....
 6000          |     9999,99  |    15,70%

Θέλω σε παραστατικό πώλησης, που αφορά πώληση tax free να τυπώνω σε φόρμα εκτύπωσης το ποσό της επιστροφής που προκύπτει από τον παραπάνω πίνακα και αφορά το σύνολο του παραστατικού. Δηλαδή το SALDOC.SUMAMNT 

Να ορίσω τοπικά πεδία τόσα όσες οι γραμμές και οι συνθήκες. Δηλαδή
TF1, Υπολογισμός γραμμής, Αριθμητικό, If (SALDOC.SUMAMNT >= 50 AND SALDOC.SUMAMNT < 70), 6.50)
TF2, Υπολογισμός γραμμής, Αριθμητικό,if(SALDOC.SUMAMNT >=70 AND SALDOC.SUMAMNT < 90), 8.50)

Και ένα τελικό που θα βάλω τη συνάρτηση mcase για να βγάλω το αποτέλεσμα που θέλω;
Π.χ. TFA, Υπολογισμός γραμμής, Αριθμητικό mcase(SALDOC.SUMAMNT, TF1, 6.50, SALDOC.SUMAMNT, TF2, 8.50)

Το δοκίμασα αλλά βγάζει 0. Τι κάνω λάθος;

                               ); 

Νίκος Μάλιακκας

unread,
Sep 11, 2025, 5:56:33 AM (13 days ago) Sep 11
to Softone Developers Network
Mcase (paramtocheck, eqcheck1, val1, eqcheck2, val2, ,,, eqcheckN, valN, valueIfNoneMatch)

όπως το γράφεις θα είναι πάντα μηδέν.

Πρόταση, φτιάξε μια function στον sql server που να του δίνεις το sumamnt και να σου επιστρέφει το ποσό επιστροφής διαβάζοντας από τον πίνακα. Μετά κάλεσέ την με sql εντολή και θα έχεις το αποτέλεσμα όμορφα.
Έτσι το μόνο που θα συντηρείς θα είναι ο πίνακας με τις τιμές.

Achileas Boulogiorgos

unread,
Sep 11, 2025, 6:14:13 AM (13 days ago) Sep 11
to Softone Developers Network
Ευχαριστώ. 

H εγκατάσταση είναι cloud. Function σε cloud Azure δεν είμαι σίγουρος ότι μπορείς να κάνεις, δεν το έχω δοκιμάσει. Και τον πίνακα πού θα τον εισάγω για να τον διαβάζει; Σε Excel μου τον έστειλαν και οι τιμές είναι fix. 

Νίκος Μάλιακκας

unread,
Sep 11, 2025, 8:54:57 AM (13 days ago) Sep 11
to Softone Developers Network
Οι εγκαταστάσεις σε Azure τρέχουν σχεδόν ότι τρέχει και στην κανονική εγκατάσταση με ms-sql server. 

Οι CREATE FUNCTION / ALTER FUNCTION περνάνε και από τον Database explorer, οπότε δεν χρειάζεσαι κάτι εκτός από το softone για να τις βάλεις.
Αν ο πίνακας είναι μέχρι 50 γραμμές και δεν θέλεις να τον βάλεις χωρια για να τον αναζητάς από την FUNCTION, πέρνα τον έλεγχο με τις τιμές μέσα στην function και μετά μπορείς να συντηρείς μόνο αυτό.
Θα είναι θέμα αν σου πουν μετά ότι πρέπει να αλλάξεις τιμές μιας και δεν έχεις εύκολη πρόσβαση στον sql server.

Achileas Boulogiorgos

unread,
Sep 12, 2025, 6:16:12 AM (12 days ago) Sep 12
to Softone Developers Network
Ευχαριστώ πολύ

Ο πίνακας είναι 82 γραμμές και έχει τρεις στήλες. Πρώτη και δεύτερη είναι το ποσό από έως και τρίτη το ποσό που θέλουμε να εμφανίσουμε στη φόρμα εκτύπωσης. Το δημιουργώ μέσα από το Designer αλλά μετά πώς κάνω εισαγωγή από το Excel;

Achileas Boulogiorgos

unread,
Sep 15, 2025, 2:46:16 AM (9 days ago) Sep 15
to Softone Developers Network
Εκανα εισαγωγή του πίνακα σε τοπική βάση σε ένα τοπικό πεδίο που δημιούργησα από τον S1 Designer. Σαν CCCTaxFreeRef με τέσσερις στήλες. FromAmount,  ToAmount, RefundAmount, CCCTaxfreeRef. Πρώτη και δεύτερη στήλη είναι τα όρια των τιμών, η τρίτη (RefundAmount) είναι το ποσό της επιστροφής που αντιστοιχεί και η τελευταία είναι το ID του πίνακα. Δημιουγησα ένα τοπικό πεδίο που με βάση τα όρια θα πρέπει να φέρει το RefundAmount και τρέχω SQL:
RUNSQL('Select RefundAmmount from CCCTAXFREEREF where SALDOC.SUMAMNT Between FromAmount AND ToAmount') αλλά πάλι παίρνω πάντα 0. Υποθέτω πρεπει να κάνω και κάποιο join με τον πίνακα SALDOC; Πώς ακριβώς;


Reply all
Reply to author
Forward
0 new messages