Το "ποσό έκπτωσης τιμολογίου", "Excl τιμή μονάδας ΦΠΑ" και "Ποσό γραμμής excl ΦΠΑ" τιμές είναι εσφαλμένη σε μια παραγγελία πώλησης που έχει τιμή στο κλειστό διάστημα φόρου ενεργοποιημένη στην ινδική έκδοση του Microsoft Dynamics NAV 2009

Ισχύει για: Dynamics NAV 2009

Αυτό το άρθρο ισχύει για το Microsoft Dynamics NAV για οι ινδοί (τοπική ρύθμιση γλώσσας in).

Συμπτώματα


Ας υποθέσουμε ότι έχετε μια παραγγελία πώλησης που έχει τιμή στο κλειστό διάστημα φόρου ενεργοποιημένη στην ινδική έκδοση του Microsoft Dynamics NAV 2009. Αφού εκτελέσετε τη λειτουργία Υπολογισμός τιμών δομή , το Ποσό έκπτωσης τιμολογίου, excl τιμή μονάδας ΦΠΑ και τιμές excl ποσό γραμμής ΦΠΑ είναι λανθασμένες.
Αυτό το ζήτημα παρουσιάζεται στα ακόλουθα προϊόντα:
  • Η ινδική έκδοση του Microsoft Dynamics NAV 2009 R2
  • Η ινδική έκδοση του Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

Προτεινόμενη αντιμετώπιση


Πληροφορίες άμεσης επιδιόρθωσης

Μια υποστηριζόμενη άμεση επιδιόρθωση είναι τώρα διαθέσιμη από τη Microsoft. Ωστόσο, προορίζεται μόνο για τη διόρθωση του ζητήματος που περιγράφεται σε αυτό το άρθρο. Eφαρμόστε τη μόνο σε συστήματα που αντιμετωπίζουν το συγκεκριμένο ζήτημα. Αυτή η επείγουσα επιδιόρθωση ενδέχεται να υποβληθεί σε πρόσθετο έλεγχο. Επομένως, εάν αυτό το ζήτημα δεν σας επηρεάζει ιδιαίτερα, σας συνιστούμε να περιμένετε έως το επόμενο service pack του Microsoft Dynamics NAV ή την επόμενη έκδοση του Microsoft Dynamics NAV που περιέχει αυτήν την επείγουσα επιδιόρθωση.

Σημείωση Σε ειδικές περιπτώσεις, οι χρεώσεις που υφίστανται κανονικά για κλήσεις υποστήριξης ενδέχεται να να ακυρωθούν, εάν έναν επαγγελματία τεχνικής υποστήριξης για το Microsoft Dynamics και σχετικά προϊόντα προσδιορίζει ότι μια συγκεκριμένη ενημερωμένη έκδοση θα επιλύσει το ζήτημά σας. Οι συνηθισμένες χρεώσεις υποστήριξης θα ισχύει για πρόσθετες ερωτήσεις υποστήριξης και για θέματα που δεν αφορούν τη συγκεκριμένη ενημερωμένη έκδοση.


Πληροφορίες εγκατάστασης

Η Microsoft παρέχει παραδείγματα προγραμματισμού μόνο για επεξήγηση, χωρίς καμία εγγύηση, είτε σιωπηρή είτε ρητή. Αυτό περιλαμβάνει, ενδεικτικά, τις σιωπηρές εγγυήσεις εμπορευσιμότητας ή καταλληλότητας για συγκεκριμένο σκοπό. Αυτό το άρθρο προϋποθέτει ότι είστε εξοικειωμένοι με τη γλώσσα προγραμματισμού που παρουσιάζεται, καθώς και με τα εργαλεία που χρησιμοποιούνται για τη δημιουργία διαδικασιών και τον εντοπισμό σφαλμάτων σε αυτές. Οι μηχανικοί υποστήριξης της Microsoft μπορούν να σας εξηγήσουν τη λειτουργικότητα μιας συγκεκριμένης διαδικασίας, αλλά δεν θα τροποποιήσουν αυτά τα παραδείγματα για να παράσχουν πρόσθετες λειτουργίες, ούτε θα δημιουργήσουν διαδικασίες για να καλύψουν τις συγκεκριμένες απαιτήσεις σας.

Σημείωση Πριν να εγκαταστήσετε αυτήν την επείγουσα επιδιόρθωση, επιβεβαιώστε ότι όλοι οι χρήστες προγράμματος-πελάτη Microsoft Navision έχουν αποσυνδεθεί από το σύστημα. Σε αυτές περιλαμβάνονται οι χρήστες του προγράμματος-πελάτη Microsoft Navision εφαρμογής υπηρεσιών (NAS). Θα πρέπει να το πρόγραμμα-πελάτη μόνο χρήστη που είναι συνδεδεμένος κατά την εφαρμογή αυτής της επείγουσας επιδιόρθωσης.

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

Συνιστούμε ότι ο λογαριασμός χρήστη στο παράθυρο "Συνδέσεις Windows" ή στο παράθυρο συνδέσεις βάσης δεδομένων να αντιστοιχιστεί το "SUPER" αναγνωριστικό ρόλου. Εάν ο λογαριασμός χρήστη δεν μπορεί να αντιστοιχιστεί το Αναγνωριστικό ρόλου "SUPER", πρέπει να επαληθεύσετε ότι ο λογαριασμός χρήστη έχει τα ακόλουθα δικαιώματα:
  • Το δικαίωμα "Τροποποίηση" για το αντικείμενο που θα αλλάξετε.
  • Τα δικαιώματα εκτέλεσης για το αντικείμενο 5210 Αναγνωριστικό αντικειμένου συστήματος και για το αντικείμενο 9015 Αναγνωριστικό αντικειμένου συστήματος .


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

Αλλαγές κώδικα

Σημείωση Πάντα δοκιμή κώδικα διορθώνει σε ελεγχόμενο περιβάλλον πριν να εφαρμόσετε τις ενημερώσεις κώδικα στους υπολογιστές παραγωγής.
Για να επιλύσετε αυτό το ζήτημα, ακολουθήστε τα εξής βήματα:
  1. Αλλάξτε τον κωδικό του εναύσματος έκπτωση γραμμής % - με την επικύρωση στον πίνακα γραμμή πώλησης (37) ως εξής:
    Υπάρχοντα κώδικα
    ..."Line Discount %" := 100;

    // Delete the following line.
    IF NOT "Price Inclusive of Tax" THEN

    "Line Discount Amount" :=
    ROUND(ROUND(Quantity * "Unit Price",Currency."Amount Rounding Precision") * "Line Discount %" / 100,
    Currency."Amount Rounding Precision")

    // Delete the following lines.
    ELSE
    "Line Discount Amount" := ROUND(ROUND(Quantity * "Unit Price Incl. of Tax",Currency."Amount Rounding Precision") *
    "Line Discount %" / 100,Currency."Amount Rounding Precision");
    // End of the lines.
    ...
    Αντικατάσταση κώδικα
    ...
    "Line Discount %" := 100;

    "Line Discount Amount" :=
    ROUND(ROUND(Quantity * "Unit Price",Currency."Amount Rounding Precision") * "Line Discount %" / 100,
    Currency."Amount Rounding Precision");
    ...
  2. Αλλάξτε τον κωδικό του εναύσματος Ποσό έκπτωσης γραμμής - με την επικύρωση στον πίνακα γραμμή πώλησης (37) ως εξής:
    Υπάρχοντα κώδικα
    ...TESTFIELD(Quantity);

    // Delete the following line.
    IF NOT "Price Inclusive of Tax" THEN

    IF ROUND(Quantity * "Unit Price",Currency."Amount Rounding Precision") <> 0 THEN
    "Line Discount %" :=
    ROUND(
    "Line Discount Amount" / ROUND(Quantity * "Unit Price",Currency."Amount Rounding Precision") * 100,
    0.00001)
    ELSE
    "Line Discount %" := 0

    // Delete the following lines.
    ELSE
    IF ROUND(Quantity * "Unit Price Incl. of Tax",Currency."Amount Rounding Precision") <> 0 THEN
    "Line Discount %" :=
    ROUND(
    "Line Discount Amount" / ROUND(Quantity * "Unit Price Incl. of Tax",Currency."Amount Rounding Precision") * 100,
    0.00001)
    ELSE
    "Line Discount %" := 0;
    // End of the lines.

    "Inv. Discount Amount" := 0;
    ...
    Αντικατάσταση κώδικα
    ...TESTFIELD(Quantity);
    IF ROUND(Quantity * "Unit Price",Currency."Amount Rounding Precision") <> 0 THEN
    "Line Discount %" :=
    ROUND(
    "Line Discount Amount" / ROUND(Quantity * "Unit Price",Currency."Amount Rounding Precision") * 100,
    0.00001)
    ELSE
    "Line Discount %" := 0;
    "Inv. Discount Amount" := 0;
    ...
  3. Αλλάξτε τον κωδικό στη συνάρτησηφόροι GetSalesPriceExclusiveστον πίνακα γραμμή πώλησης (37) ως εξής:
    Υπάρχοντα κώδικα
    ...IF StrOrderDetails."Include Base" THEN
    BaseAmountVariable := BaseAmountVariable + Quantity;

    // Delete the following lines.
    IF StrOrderDetails."Include Line Discount" THEN
    BaseAmountFixed := BaseAmountFixed - "Line Discount Amount";
    IF StrOrderDetails."Include Invoice Discount" THEN BEGIN
    BaseAmountFixed := BaseAmountFixed + "Inv Discount Fixed";
    BaseAmountVariable := BaseAmountVariable - "Inv Discount Variable";
    END;
    // End of the lines.

    IF SalesHeader."Currency Factor" <> 0 THEN
    ...
    Αντικατάσταση κώδικα
    ...IF StrOrderDetails."Include Base" THEN
    BaseAmountVariable := BaseAmountVariable + Quantity;

    IF SalesHeader."Currency Factor" <> 0 THEN
    ...
  4. Αλλάξτε τον κωδικό στη συνάρτηση CalculateStructuresPIT στον πίνακα γραμμή πώλησης (37) ως εξής:
    Υπάρχοντα κώδικα
    ...SalesLine.MODIFY;

    // Delete the following lines.
    IF i < 3 THEN BEGIN
    FixedAmt := 0;
    VariableAmt := 0;
    AdjustedAmt := 0;
    DiffAdjustmentAmt := 0;
    FixedAmt := SalesLine."Unit Price Incl. of Tax" * SalesLine.Quantity;
    VariableAmt := SalesLine.Quantity;
    StrOrderLineDetails.RESET;
    StrOrderLineDetails.SETCURRENTKEY(Type,"Document Type","Document No.","Structure Code","Item No.","Line No.");
    StrOrderLineDetails.SETRANGE(Type,StrOrderLineDetails.Type::Sale);
    StrOrderLineDetails.SETRANGE("Document Type",SalesLine."Document Type");
    StrOrderLineDetails.SETRANGE("Document No.",SalesLine."Document No.");
    StrOrderLineDetails.SETRANGE("Structure Code",SalesLine."PIT Structure");
    StrOrderLineDetails.SETRANGE("Item No.",SalesLine."No.");
    StrOrderLineDetails.SETRANGE("Line No.",SalesLine."Line No.");
    StrOrderLineDetails.SETRANGE("Include PIT Calculation",TRUE);
    IF StrOrderLineDetails.FIND('-') THEN
    REPEAT
    FixedAmt -= StrOrderLineDetails.Amount;
    AdjustedAmt := AdjustedAmt + StrOrderLineDetails.Amount;
    UNTIL StrOrderLineDetails.NEXT = 0;

    SalesLine."Unit Price" := 0;
    IF VariableAmt <> 0 THEN BEGIN
    SalesLine."Unit Price" := ROUND((FixedAmt / VariableAmt),GetRoundingPrecisionUnitPrice);
    IF SalesLine."Unit Price" < 0 THEN
    SalesLine.FIELDERROR("Unit Price");
    IF (i = 2) AND (FixedAmt <> 0) AND (SalesLine.Quantity <> 0) THEN BEGIN
    AdjustedAmt := AdjustedAmt + (SalesLine."Unit Price" * SalesLine.Quantity);
    FixedAmt := SalesLine."Unit Price Incl. of Tax" * SalesLine.Quantity;
    DiffAdjustmentAmt := ((FixedAmt - AdjustedAmt)/SalesLine.Quantity) *
    (SalesLine."Unit Price" * SalesLine.Quantity) / (FixedAmt );
    SalesLine."Unit Price" := ROUND(SalesLine."Unit Price" - DiffAdjustmentAmt,GetRoundingPrecisionUnitPrice);
    IF SalesLine."Unit Price" < 0 THEN
    SalesLine.FIELDERROR("Unit Price");
    END;
    SalesLine.ValidateUnitPrice;
    SalesLine.ChkQtyUpdatioAfterDDPLA;
    SalesLine.MODIFY;
    IF SalesHeader."Calc. Inv. Discount (%)" THEN
    CalcInvDis.CalculateWithSalesHeader(SalesHeader,SalesLine);
    SalesLine.GET(SalesLine."Document Type",SalesLine."Document No.",SalesLine."Line No.");
    END;
    END;
    // End of the lines.
    ...
    Αντικατάσταση κώδικα
    ...SalesLine.MODIFY;
    ...
  5. Αλλάξτε τον κωδικό στη συνάρτηση UpdateSalesLinesPIT στον πίνακα γραμμή πώλησης (37) ως εξής:
    Υπάρχοντα κώδικα
    ..."Service Tax Amount" + "Service Tax eCess Amount" + "Service Tax SHE Cess Amount";
    MODIFY;
    ...
    Αντικατάσταση κώδικα
    ...
    "Service Tax Amount" + "Service Tax eCess Amount" + "Service Tax SHE Cess Amount";

    // Add the following lines.
    "Amount To Customer UPIT" :=
    "Line Amount" - "Inv. Discount Amount" + "Excise Amount" + "Tax Amount" + "Charges To Customer";
    // End of the lines.

    MODIFY;
    ...
  6. Αλλάξτε τον κωδικό στη συνάρτηση ValidateUnitPrice στον πίνακα γραμμή πώλησης (37) ως εξής:
    Υπάρχοντα κώδικα
    ..."Line Discount %" := 100;

    // Delete the following line.
    IF NOT "Price Inclusive of Tax" THEN

    "Line Discount Amount" := ROUND(ROUND(Quantity * "Unit Price",Currency."Amount Rounding Precision") * "Line Discount %" / 100,
    Currency."Amount Rounding Precision")

    // Delete the following lines.
    ELSE
    "Line Discount Amount" := ROUND(ROUND(Quantity * "Unit Price Incl. of Tax",Currency."Amount Rounding Precision") *
    "Line Discount %" / 100,Currency."Amount Rounding Precision");
    // End of the lines.

    "Inv. Discount Amount" := 0;
    ...
    Αντικατάσταση κώδικα
    ...
    "Line Discount %" := 100;
    "Line Discount Amount" := ROUND(ROUND(Quantity * "Unit Price",Currency."Amount Rounding Precision") * "Line Discount %" / 100,
    Currency."Amount Rounding Precision");
    "Inv. Discount Amount" := 0;
    ...
  7. Να αλλάξετε τον κωδικό στη συνάρτηση DivideAmount στο πωλήσεων - καταχώρηση μονάδα κώδικα (80) ως εξής:
    Υπάρχοντα κωδικό 1
    ...IF SalesLineQty <> Quantity THEN

    // Delete the following lines.
    IF "Price Inclusive of Tax" THEN
    "Line Discount Amount" :=
    ROUND((SalesLineQty * "Unit Price Incl. of Tax") * "Line Discount %" / 100,Currency."Amount Rounding Precision")
    ELSE
    // End of the lines.

    "Line Discount Amount" :=
    ROUND("Line Amount" * "Line Discount %" / 100,Currency."Amount Rounding Precision");
    "Line Amount" := "Line Amount" - "Line Discount Amount";
    ...
    Αντικατάσταση κώδικα 1
    ...IF SalesLineQty <> Quantity THEN
    "Line Discount Amount" :=
    ROUND("Line Amount" * "Line Discount %" / 100,Currency."Amount Rounding Precision");
    "Line Amount" := "Line Amount" - "Line Discount Amount";
    ...
    Υπάρχοντα κώδικα 2
    ..."Bal. TDS/TCS Including SHECESS",Currency."Amount Rounding Precision");

    // Delete the following lines.
    IF "Price Inclusive of Tax" THEN BEGIN
    "Amount To Customer UPIT" := SalesLineQty * "Unit Price";
    GLSetup.GET;
    StrOrdLineDetails2.RESET;
    StrOrdLineDetails2.SETRANGE(Type,StrOrdLineDetails2.Type::Sale);
    StrOrdLineDetails2.SETRANGE("Document Type","Document Type");
    StrOrdLineDetails2.SETRANGE("Document No.","Document No.");
    StrOrdLineDetails2.SETRANGE("Line No.","Line No.");
    StrOrdLineDetails2.SETRANGE("Include PIT Calculation",TRUE);
    IF StrOrdLineDetails2.FINDSET THEN
    REPEAT
    SalesLine2.GET("Document Type","Document No.","Line No.");
    IF StrOrdLineDetails2."Tax/Charge Type" = StrOrdLineDetails2."Tax/Charge Type"::Excise THEN
    "Amount To Customer UPIT" += "Excise Amount";
    IF StrOrdLineDetails2."Tax/Charge Type" = StrOrdLineDetails2."Tax/Charge Type"::"Sales Tax" THEN
    "Amount To Customer UPIT" += "Tax Amount";
    IF StrOrdLineDetails2."Tax/Charge Type" = StrOrdLineDetails2."Tax/Charge Type"::Charges THEN BEGIN
    IF QuantityType = QuantityType::General THEN
    "Amount To Customer UPIT" += ROUND(StrOrdLineDetails2.Amount * SalesLineQty / Quantity,
    Currency."Amount Rounding Precision");
    IF QuantityType = QuantityType::Invoicing THEN
    "Amount To Customer UPIT" += ROUND(StrOrdLineDetails2.Amount * SalesLine2."Qty. to Invoice" / SalesLine2.Quantity,
    Currency."Amount Rounding Precision");
    IF QuantityType = QuantityType::Shipping THEN
    "Amount To Customer UPIT" += ROUND(StrOrdLineDetails2.Amount * SalesLine2."Qty. to Ship" / SalesLine2.Quantity,
    Currency."Amount Rounding Precision");
    END;
    UNTIL StrOrdLineDetails2.NEXT = 0;
    "Total UPIT Amount" := ROUND("Total UPIT Amount" * SalesLineQty / Quantity,Currency."Amount Rounding Precision");
    END;
    // End of the lines.

    END;
    END;
    ...
    Αντικατάσταση κώδικα 2
    ..."Bal. TDS/TCS Including SHECESS",Currency."Amount Rounding Precision");

    // Add the following lines.
    IF "Price Inclusive of Tax" THEN
    "Amount To Customer UPIT" :=
    ROUND("Line Amount" - "Inv. Discount Amount" + "Excise Amount" + "Tax Amount" +
    "Charges To Customer", Currency."Amount Rounding Precision");
    // End of the lines.

    END;
    END;
    ...
  8. Να αλλάξετε τον κωδικό στη συνάρτηση RoundAmount στο πωλήσεων - καταχώρηση μονάδα κώδικα (80) ως εξής:
    Υπάρχοντα κώδικα
    ...TotalSalesLineLCY."Amount To Customer";
    "Charges To Customer" :=
    ...
    Αντικατάσταση κώδικα
    ...TotalSalesLineLCY."Amount To Customer";

    // Add the following lines.
    "Amount To Customer UPIT" :=
    ROUND(
    CurrExchRate.ExchangeAmtFCYToLCY(
    UseDate,SalesHeader."Currency Code",
    TotalSalesLine."Amount To Customer UPIT",SalesHeader."Currency Factor")) -
    TotalSalesLineLCY."Amount To Customer UPIT";
    "Total UPIT Amount" :=
    ROUND(
    CurrExchRate.ExchangeAmtFCYToLCY(
    UseDate,SalesHeader."Currency Code",
    TotalSalesLine."Total UPIT Amount",SalesHeader."Currency Factor")) -
    TotalSalesLineLCY."Total UPIT Amount";
    // End of the lines.

    "Charges To Customer" :=
    ...
  9. Να αλλάξετε τον κωδικό στη συνάρτηση ReverseAmount στο πωλήσεων - καταχώρηση μονάδα κώδικα (80) ως εξής:
    Υπάρχοντα κώδικα
    ..."Amount To Customer" := -"Amount To Customer";
    "Charges To Customer" := -"Charges To Customer";
    ...
    Αντικατάσταση κώδικα
    ..."Amount To Customer" := -"Amount To Customer";

    // Add the following lines.
    Amount To Customer UPIT" := -"Amount To Customer UPIT";
    Total UPIT Amount" := -"Total UPIT Amount";
    // End of the lines.

    "Charges To Customer" := -"Charges To Customer";
    ...
  10. Να αλλάξετε τον κωδικό στη συνάρτηση InvoiceUPITRounding στο πωλήσεων - καταχώρηση μονάδα κώδικα (80) ως εξής:
    Υπάρχοντα κωδικό 1
    ...EXIT;

    // Delete the following line.
    UPITRoundingAmount := TotalSalesLine."Total UPIT Amount" - ROUND(TotalSalesLine."Amount To Customer UPIT");

    IF UPITRoundingAmount <> 0 THEN BEGIN
    ...
    Αντικατάσταση κώδικα 1
    ...EXIT;

    // Add the following line.
    UPITRoundingAmount := TotalSalesLine."Amount To Customer UPIT" - ROUND(TotalSalesLine."Amount To Customer UPIT");

    IF UPITRoundingAmount <> 0 THEN BEGIN
    ...
    Υπάρχοντα κώδικα 2
    ..."UPIT Rounding Inserted" := TRUE;

    // Delete the following line.
    IF SalesHeader."Prices Including VAT" THEN

    VALIDATE("Unit Price",UPITRoundingAmount)
    ...
    Αντικατάσταση κώδικα 2
    ..."UPIT Rounding Inserted" := TRUE;

    // Add the following line.
    IF SalesHeader."Price Inclusive of Taxes" THEN

    VALIDATE("Unit Price",UPITRoundingAmount)
    ...

Προϋποθέσεις

Πρέπει να έχετε ένα από τα ακόλουθα προϊόντα, για να εφαρμόσετε αυτήν την επείγουσα επιδιόρθωση:
  • Η ινδική έκδοση του Microsoft Dynamics NAV 2009 R2
  • Η ινδική έκδοση του Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

Πληροφορίες κατάργησης

Δεν μπορείτε να καταργήσετε αυτήν την επείγουσα επιδιόρθωση.

Κατάσταση


Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα ζήτημα των προϊόντων της Microsoft που παρατίθενται στην ενότητα "Ισχύει για".
Σημείωση Αυτό είναι ένα άρθρο "ΤΑΧΕΙΑΣ ΔΗΜΟΣΙΕΥΣΗΣ" που έχει δημιουργηθεί απευθείας από την εταιρεία υποστήριξης της Microsoft. Οι πληροφορίες που περιέχονται στο παρόν έγγραφο παρέχονται ως έχουν, ως απάντηση σε ζητήματα που προέκυψαν. Ως αποτέλεσμα της ταχύτητας διαθεσιμότητάς του, το υλικό ενδέχεται να περιλαμβάνει τυπογραφικά λάθη και μπορεί να αναθεωρηθεί οποιαδήποτε στιγμή, χωρίς προειδοποίηση. Για άλλα θέματα, ανατρέξτε στην ενότητα " Όροι χρήσης ".