Έχω μία απορία που μάλλον κάποιος θα την ξέρει.
Όταν καταχωρώ ένα παραστατικό στον πίνακα MTRLINES καταγράφονται
οι γραμμές του παραστατικού.
Στο πεδίο MTRLINES καταγράφονται κάποια νούμερα τα οποία δεν είναι
συνεχόμενα.
Ψάχνω τα εξείς.
1) Ποιά είναι η ουσία και λογική του MTRLINES πεδίου και τι
καταγράφεται εκεί.
2) Το συμμαντικότερο είναι αν αυτό το νούμερο (MTRLINES πεδίο) , για
κάποια γραμμή
μπορεί να αλλάξει στην συνέχεια, με κάποια επανακαταχώρηση
παραστατικού,
η οποία αλλάζει κάποιο στοιχείο της γραμμής;
Ευχαριστώ πολύ.
Το MTRLINES δεν αλλάζει γιατί αν δεις το
TRANSACTION της καταχώρησης ενός παραστατικού ( απο το SQL Monitor της
εφαρμογής)
θα δείς εκεί πως γίνεται ενημέρωση
και του MTRTRN ( κινήσεις αποθήκης δηλαδή καρτέλλα είδους) οπου το
MTRTRN
( που κρατάει link με το παραστατικό [FINDOC] και την γραμμη
παραστατικού [MTRLINES] )
πρέπει να ενημερωθεί σωστά με το FINDOC και MTRTRN
Το πρόγραμμα κατά την καταχώρηση παραστατικού καταχωρεί πρώτα στον
FINDOC ( και πέρνει πίσω
κατευθείαν το FINDOC με το οποίο καταχωρήθηκε το παραστατικό
SELECT :ID = SCOPE_IDENTITY() )
και το MTRLINES το έχει έτοιμο ( το σχηματίζει on-memory προφανώς) για
τις παρακάτω καταχωρήσεις)
Δες και το query που κάνει το πρόγραμμα αν διαγράψεις γραμμή
παραστατικού και κάνεις
καταχώρηση
DELETE FROM MTRTRN WHERE FINDOC=21078 AND MTRTRN=2 AND LINENUM=1
Αν αλλάξει το MTRLINES θα χαθεί το link MTRLINES - MTRTRN
Το πρόγραμμα ως προς MTRLINES κάνει τα εξής.
Σε νέα καταχώρηση παραστατικού κάνει INSERT στον MTRLINES σε
διαγραφή γραμμής παραστατικού κάνει DELETE από τον MTRLINES και
σε περίπτωση αλλαγής κάποιου πεδίου της γραμμής ( π.χ. ειδος ,
ποσότητας, τιμής, αξίας, εκπτωσης) κάνει
UPDATE στον MTRLINES.
DELETE FROM MTRLINES WHERE FINDOC=21080 AND MTRLINES=2