Όταν ακυρώνεις παραστατικό πώλησης που έχει είδη με παρτίδες, ή εκδίδεις δελτίο επιστροφής/πιστωτικό, η ποσότητα στην αποθήκη διορθώνεται αυτόματα. Η παρτίδα όμως μένει δεσμευμένη αν δεν την αποσυνδέσεις πρώτα. Γι’ αυτό πρώτα ελευθερώνεις τις παρτίδες και μετά ακυρώνεις ή επιστρέφεις.
Οι παρτίδες εμφανίζονται μόνο σε παραστατικό πώλησης με διακίνηση, και μόνο αν στις ρυθμίσεις αποθήκης είναι ενεργό το Ποσότητες ανά γραμμή (παρτίδες). Το παράθυρο λέγεται Διαχείριση αποθέματος (μενού Επιλογή αποθέματος (παρτίδες)).
- Άνοιξε το αρχικό παραστατικό πώλησης που θέλεις να ακυρώσεις (όχι το πιστωτικό/δελτίο επιστροφής).
- Αν είναι κλειδωμένο, ξεκλείδωσέ το. Η εντολή αποσύνδεσης εμφανίζεται μόνο σε ξεκλείδωτο παραστατικό (μενού Κλείδωμα επεξεργασίας/διαγραφής παραστατικών).
- Επίλεξε στις γραμμές το είδος που θες να εμφανιστούν οι παρτίδες. Στον πίνακα παρτίδων πάτησε δεξί κλικ και διάλεξε Αποσύνδεση από παρτίδες.

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

Αυτόματη αποσύνδεση από παρτίδες
Κατά την έκδοση δελτίου επιστροφής μπορείς να αποσυνδέεις αυτόματα τις παρτίδες του σχετικού παραστατικού. Προϋπόθεση: σε κάθε γραμμή να έχει οριστεί Θέση (lot). Το σχετικό παραστατικό πρέπει να είναι συμπληρωμένο, ώστε να βρεθούν οι αρχικές γραμμές.
Για τη λειτουργία αυτή κάνουμε επικόλληση τον παρακάτω κώδικα στο πεδίο Εκτέλεση SQL στο αντίστοιχο παραστατικό επιστροφής. Τρέχει στην καταχώρηση και ενημερώνει μέχρι 150 γραμμές του σχετικού παραστατικού.

|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
-- doc -- execute block as declare i int = 0; declare main_doc_prodid int; declare main_doc_lineid int; declare main_doc_position varchar(1000); declare doc_related varchar(1000); begin doc_related=(select "Sxetika" from "pvlhseis" pvlin where "Aa"=:aa); while (i < 150) do begin if ((select count(ppl."Aa") from "pvlhseis" ppl,"grammes" ggr,"eidhpar" eid where ggr."Aapar"=ppl."Aa" and eid."Aa"=ppl."Parastatiko" and (ppl."Sxetiko"=:aa or doc_abbreviation(eid."Parastatiko",coalesce( ppl."Seira",'')||'#'||ppl."Ariumospar")=:doc_related) )>:i) then begin main_doc_prodid=(select first 1 skip (:i) ggr."Eidos" from "pvlhseis" ppl,"grammes" ggr,"eidhpar" eid, "kinhseis" kin where kin."Grammh"=ggr."Aa" and ggr."Aapar"=ppl."Aa" and eid."Aa"=ppl."Parastatiko" and (ppl."Sxetiko"=:aa or doc_abbreviation(eid."Parastatiko",coalesce( ppl."Seira",'')||'#'||ppl."Ariumospar")=:doc_related) ); main_doc_lineid=(select first 1 skip (:i) ggr."Aa" from "pvlhseis" ppl,"grammes" ggr,"eidhpar" eid, "kinhseis" kin where kin."Grammh"=ggr."Aa" and ggr."Aapar"=ppl."Aa" and eid."Aa"=ppl."Parastatiko" and (ppl."Sxetiko"=:aa or doc_abbreviation(eid."Parastatiko",coalesce( ppl."Seira",'')||'#'||ppl."Ariumospar")=:doc_related) ); main_doc_position=(select first 1 skip (:i) kin."Uesh" from "pvlhseis" ppl,"grammes" ggr,"eidhpar" eid, "kinhseis" kin where kin."Grammh"=ggr."Aa" and ggr."Aapar"=ppl."Aa" and eid."Aa"=ppl."Parastatiko" and (ppl."Sxetiko"=:aa or doc_abbreviation(eid."Parastatiko",coalesce( ppl."Seira",'')||'#'||ppl."Ariumospar")=:doc_related) ); if (:main_doc_prodid in (select ggr."Eidos" from "grammes" ggr where ggr."Aapar"=:aa)) then begin update "stockperdocline" stdl set stdl."Quantity"= (select grg."Posothta" from "grammes" grg where grg."Aa"=stdl."RelID") - (select sum(ggr."Posothta") from "grammes" ggr,"kinhseis" kks where ggr."Aa"=kks."Grammh" and ggr."Aapar"=:aa and ggr."Eidos"=:main_doc_prodid and kks."Uesh"=:main_doc_position ) where stdl."RelID"=:main_doc_lineid; end end else suspend; i = i + 1; end end -- doc-eof -- |
