Τα ταχέως δημοσιευμένα άρθρα παρέχουν πληροφορίες απευθείας από τον οργανισμό υποστήριξης της Microsoft. Οι πληροφορίες που περιέχονται στο παρόν δημιουργούνται ως απόκριση σε αναδυόμενα ή μοναδικά θέματα ή προορίζονται να συμπληρώσουν άλλες πληροφορίες της Γνωσιακής Βάσης.
Αυτό το άρθρο ισχύει για το Microsoft Dynamics NAV για τις τοπικές ρυθμίσεις γλώσσας ιταλικά (it).
Συμπτώματα
Ας υποθέσουμε ότι έχετε ένα τιμολόγιο που χρησιμοποιεί πολλαπλές τιμές και η μέθοδος πληρωμής του τιμολογίου χρησιμοποιεί έναν αριθμό λογαριασμού υπολοίπου στην ιταλική έκδοση του Microsoft Dynamics NAV. Όταν καταχωρείτε το τιμολόγιο χρησιμοποιώντας μια αυτόματη πληρωμή, το Microsoft Dynamics NAV δημιουργεί πολλές γραμμές για το τιμολόγιο και μία γραμμή για την πληρωμή. Ωστόσο, μόνο το πρώτο τιμολόγιο εφαρμόζεται και κλείνει. Τα υπόλοιπα τιμολόγια είναι ακόμη ανοιχτά.
Αυτό το ζήτημα παρουσιάζεται στα ακόλουθα προϊόντα:
- Η ιταλική έκδοση του Microsoft Dynamics NAV 2009 Service Pack 1
- Η ιταλική έκδοση του Microsoft Dynamics NAV 2009
- Η ιταλική έκδοση του Microsoft Dynamics NAV 5.0 Service Pack 1
Επίλυση
Πληροφορίες επείγουσας επιδιόρθωσης
Μια υποστηριζόμενη επείγουσα επιδιόρθωση είναι τώρα διαθέσιμη από τη Microsoft. Ωστόσο, αυτή η ενέργεια προορίζεται μόνο για τη διόρθωση του ζητήματος που περιγράφεται σε αυτό το άρθρο. Εφαρμόστε το μόνο σε συστήματα που αντιμετωπίζουν αυτό το συγκεκριμένο πρόβλημα. Αυτή η επείγουσα επιδιόρθωση ενδέχεται να υποβληθεί σε πρόσθετο έλεγχο. Επομένως, εάν αυτό το ζήτημα δεν σας επηρεάζει ιδιαίτερα, συνιστάται να περιμένετε έως το επόμενο service pack του Microsoft Dynamics NAV ή την επόμενη έκδοση του Microsoft Dynamics NAV που περιέχει αυτήν την επείγουσα επιδιόρθωση.
Σημείωση Σε ειδικές περιπτώσεις, οι χρεώσεις που προκύπτουν κανονικά για κλήσεις υποστήριξης ενδέχεται να ακυρωθούν, εάν ένας επαγγελματίας τεχνικής υποστήριξης για το Microsoft Dynamics και τα σχετικά προϊόντα προσδιορίσει ότι μια συγκεκριμένη ενημερωμένη έκδοση θα επιλύσει το ζήτημά σας. Για πρόσθετες ερωτήσεις υποστήριξης και για θέματα που δεν αφορούν τη συγκεκριμένη ενημερωμένη έκδοση, θα ισχύσουν οι συνηθισμένες χρεώσεις υποστήριξης.
Πληροφορίες εγκατάστασης
Η Microsoft παρέχει παραδείγματα προγραμματισμού μόνο για απεικόνιση, χωρίς καμία εγγύηση, ρητή ή σιωπηρή. Αυτό περιλαμβάνει, ενδεικτικά, τις σιωπηρές εγγυήσεις εμπορευσιμότητας ή καταλληλότητας για συγκεκριμένο σκοπό. Αυτό το άρθρο προϋποθέτει ότι είστε εξοικειωμένοι με τη γλώσσα προγραμματισμού που επιδεικνύεται και με τα εργαλεία που χρησιμοποιούνται για τη δημιουργία και τον εντοπισμό σφαλμάτων διαδικασιών. Οι μηχανικοί υποστήριξης της Microsoft μπορούν να σας βοηθήσουν να εξηγήσετε τη λειτουργικότητα μιας συγκεκριμένης διαδικασίας, αλλά δεν θα τροποποιήσουν αυτά τα παραδείγματα για να παρέχουν πρόσθετες λειτουργίες ούτε θα δημιουργήσουν διαδικασίες για να ικανοποιήσουν τις συγκεκριμένες απαιτήσεις σας.
Σημείωση Πριν να εγκαταστήσετε αυτήν την επείγουσα επιδιόρθωση, βεβαιωθείτε ότι όλοι οι χρήστες προγράμματος-πελάτη Microsoft Navision έχουν αποσυνδεθεί από το σύστημα. Αυτό περιλαμβάνει χρήστες προγράμματος-πελάτη Microsoft Navision Application Services (NAS). Θα πρέπει να είστε ο μόνος χρήστης-πελάτης που είναι συνδεδεμένος όταν υλοποιείτε αυτήν την επείγουσα επιδιόρθωση.
Για να υλοποιήσετε αυτήν την επείγουσα επιδιόρθωση, πρέπει να έχετε άδεια προγραμματιστή.
Συνιστούμε ο λογαριασμός χρήστη στο παράθυρο Συνδέσεις των Windows ή στο παράθυρο Συνδέσεις βάσης δεδομένων να έχει το αναγνωριστικό ρόλου "SUPER". Εάν δεν είναι δυνατή η εκχώρηση του αναγνωριστικού ρόλου "SUPER" στο λογαριασμό χρήστη, πρέπει να επαληθεύσετε ότι ο λογαριασμός χρήστη έχει τα ακόλουθα δικαιώματα:
- Το δικαίωμα τροποποίησης για το αντικείμενο που θα αλλάξετε.
- Το δικαίωμα εκτέλεσης για το αντικείμενο αναγνωριστικού αντικειμένου συστήματος 5210 και για το αντικείμενο αναγνωριστικού αντικειμένου συστήματος 9015.
Σημείωση Δεν χρειάζεται να έχετε δικαιώματα στους χώρους αποθήκευσης δεδομένων, εκτός εάν πρέπει να εκτελέσετε επιδιόρθωση δεδομένων.
Αλλαγές κώδικα
Σημείωση Ελέγχετε πάντα τις επιδιορθώσεις κώδικα σε ελεγχόμενο περιβάλλον, πριν να εφαρμόσετε τις ενημερώσεις κώδικα στους υπολογιστές παραγωγής σας.
Για να εφαρμόσετε αυτήν την επείγουσα επιδιόρθωση, ακολουθήστε τα εξής βήματα:
Αλλάξτε το κλειδί στον πίνακα Cust. Ledger Entry (21) ως εξής:
Υπάρχον- Ενεργοποιημένη:Ναι
- Κλειδί: Τύπος εγγράφου,Αριθμός εγγράφου,Εμφάνιση εγγράφου
- Πεδία ευρετηρίου αθροίσματος:
Αντικατάσταση ενός
- Ενεργοποιημένη:Ναι
- Κλειδί: Τύπος εγγράφου,Αριθμός εγγράφου,Εμφάνιση εγγράφου
- SumIndexFields: Υπόλοιπος δίσκος pmt. Πιθανός
Αλλάξτε το κλειδί στον πίνακα εγγραφής καθολικού προμηθευτή (25) ως εξής:
Υπάρχον- Ενεργοποιημένη:Ναι
- Κλειδί: Τύπος εγγράφου, Αριθμός εγγράφου, Εμφάνιση εγγράφου, Αριθμός προμηθευτή.
- Πεδία ευρετηρίου αθροίσματος:
Αντικατάσταση ενός
- Ενεργοποιημένη:Ναι
- Κλειδί: Τύπος εγγράφου, Αριθμός εγγράφου, Εμφάνιση εγγράφου, Αριθμός προμηθευτή.
- SumIndexFields: Υπόλοιπος δίσκος pmt. Πιθανός
Προσθέστε μια τοπική μεταβλητή στη συνάρτηση ApplyCustLedgEntry στο Gen. Jnl.-Post Line codeunit (12) και, στη συνέχεια, καθορίστε τη μεταβλητή ως εξής:
- Όνομα: PaymentTerms
- Τύπος δεδομένων: Εγγραφή
- Δευτερεύων τύπος: Όροι πληρωμής
Αλλάξτε τον κώδικα στη συνάρτηση ApplyCustLedgEntry στο Gen. Μονάδα κώδικα Jnl.-Post Line (12) ως εξής:
Υπάρχων κωδικός 1... END ELSE ApplnRoundingPrecision := GLSetup."Appln. Rounding Precision"; ApplyingDate := GenJnlLine."Posting Date"; IF GenJnlLine."Applies-to Doc. No." <> '' THEN BEGIN // Find the entry to be applied to ...Κωδικός αντικατάστασης 1
... END ELSE ApplnRoundingPrecision := GLSetup."Appln. Rounding Precision"; ApplyingDate := GenJnlLine."Posting Date"; // Add the following lines. Cust.GET(GenJnlLine."Account No."); IF Cust."Payment Terms Code" <> '' THEN BEGIN PaymentTerms.GET(Cust."Payment Terms Code"); PaymentTerms.CALCFIELDS("Payment Nos."); END; // End of the added lines. IF GenJnlLine."Applies-to Doc. No." <> '' THEN BEGIN // Find the entry to be applied to ...Υπάρχων κωδικός 2
... (OldCustLedgEntry.COUNT=1) THEN GenJnlLine."Applies-to Occurrence No." := 1; // Delete the following line. OldCustLedgEntry.SETRANGE("Document Occurrence",GenJnlLine."Applies-to Occurrence No."); OldCustLedgEntry.SETRANGE(Open,TRUE); // Delete the following lines. OldCustLedgEntry.FINDFIRST; OldCustLedgEntry.TESTFIELD("Bank Receipt Issued", FALSE); OldCustLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive); IF OldCustLedgEntry."Posting Date" > ApplyingDate THEN ApplyingDate := OldCustLedgEntry."Posting Date"; GenJnlApply.CheckAgainstApplnCurrency( NewCVLedgEntryBuf."Currency Code", OldCustLedgEntry."Currency Code", GenJnlLine."Account Type"::Customer, TRUE); TempOldCustLedgEntry := OldCustLedgEntry; TempOldCustLedgEntry.INSERT; // End of the deleted lines. END ELSE BEGIN // Find the first old entry (Invoice) which the new entry (Payment) should apply to ...Κωδικός αντικατάστασης 2
... (OldCustLedgEntry.COUNT=1) THEN GenJnlLine."Applies-to Occurrence No." := 1; OldCustLedgEntry.SETRANGE(Open,TRUE); // Add the following lines. IF OldCustLedgEntry.FINDSET THEN REPEAT OldCustLedgEntry.TESTFIELD("Bank Receipt Issued", FALSE); OldCustLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive); IF OldCustLedgEntry."Posting Date" > ApplyingDate THEN ApplyingDate := OldCustLedgEntry."Posting Date"; GenJnlApply.CheckAgainstApplnCurrency( NewCVLedgEntryBuf."Currency Code", OldCustLedgEntry."Currency Code", GenJnlLine."Account Type"::Customer, TRUE); TempOldCustLedgEntry := OldCustLedgEntry; TempOldCustLedgEntry.INSERT; UNTIL OldCustLedgEntry.NEXT = 0; IF NOT TempOldCustLedgEntry.FINDSET THEN EXIT; // End of the added lines. END ELSE BEGIN // Find the first old entry (Invoice) which the new entry (Payment) should apply to ...Υπάρχων κωδικός 3
... TempOldCustLedgEntry.DELETE; // Find the next old entry for application of the new entry // Delete the following line. IF GenJnlLine."Applies-to Doc. No." <> '' THEN Completed := TRUE ...Κωδικός αντικατάστασης 3
... TempOldCustLedgEntry.DELETE; // Find the next old entry for application of the new entry // Add the following line. IF (GenJnlLine."Applies-to Doc. No." <> '') AND (PaymentTerms."Payment Nos." <= 1) THEN Completed := TRUE ...Προσθέστε μια τοπική μεταβλητή στη συνάρτηση ApplyVendLedgEntry στο Gen. Jnl.-Post Line codeunit (12) και, στη συνέχεια, καθορίστε τη μεταβλητή ως εξής:
- Όνομα: PaymentTerms
- Τύπος δεδομένων: Εγγραφή
- Δευτερεύων τύπος: Όροι πληρωμής
Αλλάξτε τον κώδικα στη συνάρτηση ApplyVendLedgEntry στο Gen. Μονάδα κώδικα Jnl.-Post Line (12) ως εξής:
Υπάρχων κωδικός 1... ApplyingDate := GenJnlLine."Posting Date"; IF GenJnlLine."Applies-to Doc. No." <> '' THEN BEGIN // Find the entry to be applied to ...Κωδικός αντικατάστασης 1
... ApplyingDate := GenJnlLine."Posting Date"; // Add the following lines. Vend.GET(GenJnlLine."Account No."); IF Vend."Payment Terms Code" <> '' THEN BEGIN PaymentTerms.GET(Vend."Payment Terms Code"); PaymentTerms.CALCFIELDS("Payment Nos."); END; // End of the added lines. IF GenJnlLine."Applies-to Doc. No." <> '' THEN BEGIN // Find the entry to be applied to ...Υπάρχων κωδικός 2
... GenJnlLine."Applies-to Occurrence No." := 1; // Delete the following line. OldVendLedgEntry.SETRANGE("Document Occurrence",GenJnlLine."Applies-to Occurrence No."); OldVendLedgEntry.SETRANGE(Open,TRUE); OldVendLedgEntry.SETRANGE("On Hold",''); // Delete the following lines. OldVendLedgEntry.FINDFIRST; OldVendLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive); IF OldVendLedgEntry."Posting Date" > ApplyingDate THEN ApplyingDate := OldVendLedgEntry."Posting Date"; GenJnlApply.CheckAgainstApplnCurrency( NewCVLedgEntryBuf."Currency Code", OldVendLedgEntry."Currency Code", GenJnlLine."Account Type"::Vendor, TRUE); TempOldVendLedgEntry := OldVendLedgEntry; TempOldVendLedgEntry.INSERT; // End of the deleted lines. END ELSE BEGIN // Find the first old entry (Invoice) which the new entry (Payment) should apply to ...Κωδικός αντικατάστασης 2
... GenJnlLine."Applies-to Occurrence No." := 1; OldVendLedgEntry.SETRANGE(Open,TRUE); OldVendLedgEntry.SETRANGE("On Hold",''); // Add the following lines. IF OldVendLedgEntry.FINDSET THEN REPEAT OldVendLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive); IF OldVendLedgEntry."Posting Date" > ApplyingDate THEN ApplyingDate := OldVendLedgEntry."Posting Date"; GenJnlApply.CheckAgainstApplnCurrency( NewCVLedgEntryBuf."Currency Code", OldVendLedgEntry."Currency Code", GenJnlLine."Account Type"::Vendor, TRUE); TempOldVendLedgEntry := OldVendLedgEntry; TempOldVendLedgEntry.INSERT; UNTIL OldVendLedgEntry.NEXT = 0; IF NOT TempOldVendLedgEntry.FINDSET THEN EXIT; // End of the added lines. END ELSE BEGIN // Find the first old entry (Invoice) which the new entry (Payment) should apply to ...Υπάρχων κωδικός 3
... TempOldVendLedgEntry.DELETE; // Find the next old entry to apply to the new entry // Delete the following line. IF GenJnlLine."Applies-to Doc. No." <> '' THEN Completed := TRUE ...Κωδικός αντικατάστασης 3
... TempOldVendLedgEntry.DELETE; // Find the next old entry to apply to the new entry // Add the following line. IF (GenJnlLine."Applies-to Doc. No." <> '') AND (PaymentTerms."Payment Nos." <= 1) THEN Completed := TRUE ...Προσθέστε μια τοπική μεταβλητή στο έναυσμα OnRun στη μονάδα κώδικα Sales-Post (80) και, στη συνέχεια, καθορίστε τη μεταβλητή ως εξής:
- Όνομα: TotalRemainPmtDiscPossible
- Τύπος δεδομένων: Δεκαδικός
Αλλάξτε τον κωδικό στο έναυσμα OnRun στη μονάδα κώδικα Sales-Post (80) ως εξής:
Υπάρχων κωδικός 1... // Balancing account IF "Bal. Account No." <> '' THEN BEGIN Window.UPDATE(5,1); CustLedgEntry.FINDLAST; GenJnlLine.INIT; ...Κωδικός αντικατάστασης 1
... // Balancing account IF "Bal. Account No." <> '' THEN BEGIN Window.UPDATE(5,1); // Add the following lines. CustLedgEntry.RESET; CustLedgEntry.SETCURRENTKEY("Document Type","Document No."); CustLedgEntry.SETRANGE("Document Type","Document Type"); CustLedgEntry.SETRANGE("Document No.",GenJnlLineDocNo); CustLedgEntry.CALCSUMS("Remaining Pmt. Disc. Possible"); TotalRemainPmtDiscPossible := CustLedgEntry."Remaining Pmt. Disc. Possible"; // End of the added lines. CustLedgEntry.FINDLAST; GenJnlLine.INIT; ...Υπάρχων κωδικός 2
... GenJnlLine."Currency Code" := "Currency Code"; GenJnlLine.Amount := // Delete the following line. TotalSalesLine."Amount Including VAT" + CustLedgEntry."Remaining Pmt. Disc. Possible"; GenJnlLine."Source Currency Code" := "Currency Code"; GenJnlLine."Source Currency Amount" := GenJnlLine.Amount; ...Κωδικός αντικατάστασης 2
... GenJnlLine."Currency Code" := "Currency Code"; GenJnlLine.Amount := // Add the following line. TotalSalesLine."Amount Including VAT" + TotalRemainPmtDiscPossible; GenJnlLine."Source Currency Code" := "Currency Code"; GenJnlLine."Source Currency Amount" := GenJnlLine.Amount; ...Προσθέστε μια τοπική μεταβλητή στο έναυσμα OnRun στο Purch.-Post codeunti (90) και, στη συνέχεια, καθορίστε τη μεταβλητή ως εξής:
- Όνομα: TotalRemainPmtDiscPossible
- Τύπος δεδομένων: Δεκαδικός
Αλλάξτε τον κωδικό στο έναυσμα OnRun στο Purch.-Post codeunti (90) ως εξής:
Υπάρχων κωδικός 1... GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim); // Balancing account IF "Bal. Account No." <> '' THEN BEGIN IF GUIALLOWED THEN Window.UPDATE(5,1); VendLedgEntry.FINDLAST; GenJnlLine.INIT; GenJnlLine."Posting Date" := "Posting Date"; ...Κωδικός αντικατάστασης 1
... GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim); // Balancing account IF "Bal. Account No." <> '' THEN BEGIN IF GUIALLOWED THEN Window.UPDATE(5,1); // Add the following lines. VendLedgEntry.RESET; VendLedgEntry.SETCURRENTKEY("Document Type","Document No."); VendLedgEntry.SETRANGE("Document Type","Document Type"); VendLedgEntry.SETRANGE("Document No.",GenJnlLineDocNo); VendLedgEntry.CALCSUMS("Remaining Pmt. Disc. Possible"); TotalRemainPmtDiscPossible := VendLedgEntry."Remaining Pmt. Disc. Possible"; // End of the added lines. VendLedgEntry.FINDLAST; GenJnlLine.INIT; GenJnlLine."Posting Date" := "Posting Date"; ...Υπάρχων κωδικός 2
... GenJnlLine."Currency Code" := "Currency Code"; GenJnlLine.Amount := TotalPurchLine."Amount Including VAT" + // Delete the following line. VendLedgEntry."Remaining Pmt. Disc. Possible"; GenJnlLine.Correction := Correction; GenJnlLine."Source Currency Code" := "Currency Code"; ...Κωδικός αντικατάστασης 2
... GenJnlLine."Currency Code" := "Currency Code"; GenJnlLine.Amount := TotalPurchLine."Amount Including VAT" + // Add the following line. TotalRemainPmtDiscPossible; GenJnlLine.Correction := Correction; GenJnlLine."Source Currency Code" := "Currency Code"; ...
Προαπαιτούμενα
Πρέπει να έχετε ένα από τα ακόλουθα προϊόντα για να εφαρμόσετε αυτήν την επείγουσα επιδιόρθωση:
- Η ιταλική έκδοση του Microsoft Dynamics NAV 2009 Service Pack 1
- Η ιταλική έκδοση του Microsoft Dynamics NAV 2009
- Η ιταλική έκδοση του Microsoft Dynamics NAV 5.0 Service Pack 1
Πληροφορίες κατάργησης
Δεν μπορείτε να καταργήσετε αυτήν την επείγουσα επιδιόρθωση.
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα ζήτημα που αφορά τα προϊόντα της Microsoft που παρατίθενται στην ενότητα "Ισχύει για".
Η MICROSOFT Ή/ΚΑΙ ΟΙ ΠΡΟΜΗΘΕΥΤΈΣ ΤΗΣ ΔΕΝ ΠΑΡΈΧΟΥΝ ΔΗΛΏΣΕΙΣ Ή ΕΓΓΥΉΣΕΙΣ ΣΧΕΤΙΚΆ ΜΕ ΤΗΝ ΚΑΤΑΛΛΗΛΌΤΗΤΑ, ΤΗΝ ΑΞΙΟΠΙΣΤΊΑ Ή ΤΗΝ ΑΚΡΊΒΕΙΑ ΤΩΝ ΠΛΗΡΟΦΟΡΙΏΝ ΠΟΥ ΠΕΡΙΈΧΟΝΤΑΙ ΣΤΑ ΈΓΓΡΑΦΑ ΚΑΙ ΤΑ ΣΧΕΤΙΚΆ ΓΡΑΦΙΚΆ ΠΟΥ ΔΗΜΟΣΙΕΎΟΝΤΑΙ ΣΕ ΑΥΤΉΝ ΤΗΝ ΤΟΠΟΘΕΣΊΑ WEB (ΤΑ "ΥΛΙΚΆ") ΓΙΑ ΟΠΟΙΟΝΔΉΠΟΤΕ ΣΚΟΠΌ.
ΤΟ ΥΛΙΚΌ ΜΠΟΡΕΊ ΝΑ ΠΕΡΙΛΑΜΒΆΝΕΙ ΤΕΧΝΙΚΈΣ ΑΝΑΚΡΊΒΕΙΕΣ Ή ΤΥΠΟΓΡΑΦΙΚΆ ΛΆΘΗ ΚΑΙ ΜΠΟΡΕΊ ΝΑ ΑΝΑΘΕΩΡΗΘΕΊ ΑΝΆ ΠΆΣΑ ΣΤΙΓΜΉ ΧΩΡΊΣ ΠΡΟΕΙΔΟΠΟΊΗΣΗ. ΣΤΟ ΜΕΓΙΣΤΟ ΒΑΘΜΟ ΠΟΥ ΕΠΙΤΡΕΠΕΤΑΙ ΑΠΟ ΤΗΝ ΙΣΧΥΟΥΣΑ ΝΟΜΟΘΕΣΙΑ, Η MICROSOFT Ή/ΚΑΙ ΟΙ ΠΡΟΜΗΘΕΥΤΕΣ ΤΗΣ ΑΠΟΠΟΙΟΥΝΤΑΙ ΚΑΙ ΕΞΑΙΡΟΥΝ ΟΛΕΣ ΤΙΣ ΔΗΛΩΣΕΙΣ, ΕΓΓΥΗΣΕΙΣ ΚΑΙ ΠΡΟΫΠΟΘΕΣΕΙΣ, ΡΗΤΕΣ, ΣΙΩΠΗΡΕΣ Ή ΘΕΣΜΙΚΕΣ, ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΩΝ, ΕΝΔΕΙΚΤΙΚΑ, ΤΩΝ ΔΗΛΩΣΕΩΝ, ΤΩΝ ΕΓΓΥΗΣΕΩΝ Ή ΤΩΝ ΣΥΝΘΗΚΩΝ ΤΙΤΛΟΥ, ΜΗ ΠΑΡΑΒΙΑΣΗΣ, ΙΚΑΝΟΠΟΙΗΤΙΚΗΣ ΣΥΝΘΗΚΗΣ Ή ΠΟΙΟΤΗΤΑΣ, ΕΜΠΟΡΕΥΣΙΜΟΤΗΤΑΣ ΚΑΙ ΚΑΤΑΛΛΗΛΟΤΗΤΑΣ ΓΙΑ ΣΥΓΚΕΚΡΙΜΕΝΟ ΣΚΟΠΟ, ΟΣΟΝ ΑΦΟΡΑ ΤΑ ΥΛΙΚΆ.