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

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




ΣΕΝΑΡΙΟ ΠΑΡΑΔΕΙΓΜΑΤΟΣ

Έστω ότι στην βάση δεδομένων της εφαρμογής τρίτου, υπάρχουν τα παραστατικά εξόδων με ΜΑΡΚ 400000000001301 και με MARK 400000000001001, τα οποία θέλουμε να χαρακτηρίσουμε.

Αρχικά βάζουμε τα ΜΑΡΚ σε μία λίστα στη μνήμη, και τα ταξινομούμε με αύξουσα σειρά ως εξής:

markList[400000000001001, 400000000001301]



1. ΑΝΤΛΗΣΗ ΠΑΡΑΣΤΑΤΙΚΩΝ

Πρώτα θα πρέπει να βρούμε τα παραπάνω παραστατικά στα myDATA. Θα πραγματοποιήσουμε μία αναζήτηση με αρχείο διεπαφής, ως εξής:


entityVAT:555777003

type:1

mark:400000000001001

pages:5

encode:UTF

searchItems:;;;;;400000000001301;

export:3

hideUID:1

lineData:true


Η αναζήτηση που εκτελούμε, ξεκινάει με τον πρώτο ΜΑΡΚ της λίστας (mark:400000000001001), με μέγιστο ΜΑΡΚ τον τελευταίο της λίστας.

Για τον μέγιστο ΜΑΡΚ, χρησιμοποιήσαμε το πεδίο searchItems (searchItems:;;;;;400000000001301;). Τέλος, στο αρχείο διεπαφής ορίσαμε το πεδίο lineData:true, για να μας επιστραφούν τα δεδομένα των γραμμών. Στέλνουμε το αρχείο διεπαφής για ανάγνωση, και έστω ότι παίρνουμε τα παρακάτω αποτελέσματα. Στο αρχείο αναζήτησης χρησιμοποιούμε την μέθοδο export:3, για να μας επιστραφούν μόνο τα δεδομένα των γραμμών.


ΤΟ ΕΠΙΣΤΡΑΦΟΜΕΝΟ ΑΡΧΕΙΟ

#400000000001001:1

line:1-netValue:175-vatAmount:42


#400000000001101:1

line:1-netValue:110-vatAmount:26,4


#400000000001201:1

line:1-netValue:55-vatAmount:13,2


#400000000001301:2

line:1-netValue:100-vatAmount:24

line:2-netValue:100-vatAmount:24



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

TIP: Το πρώτο παραστατικό θα είναι πάντα αυτό με τον μικρότερο ΜΑΡΚ της λίστας που φτιάξαμε, εάν και εφόσον υπάρχει. Ομοίως και για το τελευταίο παραστατικό.


Το επιστρεφόμενο αρχείο διαβάζεται ως εξής:

#<ΜΑΡΚ Παραστατικού>:<πλήθος γραμμών>

<δεδομένα γραμμών>



2. ΕΥΡΕΣΗ ΔΕΔΟΜΕΝΩΝ ΠΑΡΑΣΤΑΤΙΚΩΝ ΚΑΙ ΑΝΤΙΣΤΟΙΧΙΣΗ

  1. Κάνουμε ένα loop για κάθε ΜΑΡΚ της λίστας που φτιάξαμε προηγουμένως και για κάθε #<ΜΑΡΚ>.
  2. Μόλις γίνει η ταύτιση, κρατάμε στην μνήμη τις γραμμές γραμμές του παραστατικού.
  3. Για κάθε ένδειξη line, δημιουργούμε τους χαρακτηρισμούς και τους αποθηκεύουμε σε αρχείο.


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

Συγκεκριμένα, έχουμε φτιάξαμε μία λίστα με τα εξής:

ΜΑΡΚ

ΓΡΑΜΜΕΣ

400000000001001

line:1-netValue:175-vatAmount:42

400000000001301

line:1-netValue:100-vatAmount:24

line:2-netValue:100-vatAmount:24

Το ένα παραστατικό έχει μία (1) γραμμή για χαρακτηρισμό, και το δεύτερο παραστατικό έχει δύο (2) γραμμές για χαρακτηρισμό.



3. ΔΗΜΙΟΥΡΓΙΑ ΑΡΧΕΙΩΝ ΔΙΕΠΑΦΗΣ

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

ΜΑΡΚ 400000000001001.txt

method:32

issuerVatNumber:555777003

invoiceMark:400000000001001

clData:1;E3_102_001;category2_1;175.00;VAT_361;


ΜΑΡΚ 400000000001301.txt

method:32

issuerVatNumber:555777003

invoiceMark:400000000001001

clData:1;E3_102_001;category2_1;100.00;VAT_361;2;E3_202_001;category2_2;100.00;VAT_361;


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

Τα αποτελέσματα χαρακτηρισμού, αποθηκεύονται στον φάκελο υπογραφών, στον υποφάκελο Classifications.