Εμφανίζεται το μήνυμα λάθους "Δεν είναι δυνατή η ολοκλήρωση της συναλλαγής, επειδή θα προκαλέσει ασυνέπειες στον πίνακα καταχώρησης Γ/Λ" όταν καταχωρείτε ένα τιμολόγιο αγοράς στην έκδοση Βόρειας Αμερικής του Microsoft Dynamics NAV 2009

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

Αυτό το άρθρο ισχύει για τη Microsoft για τις ακόλουθες χώρες και τοπικές ρυθμίσεις γλώσσας.

  • Αγγλικά (Καναδά) (el)
  • Αγγλικά (Ηνωμένες Πολιτείες) (el)
  • Ισπανικά (Μεξικού) (es-mx)
  • Γαλλικά (Καναδά) (fr-ca)

Συμπτώματα

Ας υποθέσουμε ότι ορίζετε CAD ως τιμή νομισματικής μονάδας πρόσθετης αναφοράς στο παράθυρο διαλόγου εγκατάστασης γενικής καθολικής στην έκδοση της Βόρειας Αμερικής του Microsoft Dynamics NAV 2009. Όταν καταχωρείτε ένα τιμολόγιο αγοράς που περιέχει φόρο, λαμβάνετε το ακόλουθο μήνυμα σφάλματος:

Σημείωση

Η συναλλαγή δεν είναι δυνατό να ολοκληρωθεί επειδή θα προκαλέσει ασυνέπειες στον πίνακα εγγραφής Γ/Λ. Ελέγξτε πού και πώς χρησιμοποιείται η συνάρτηση CONSISTENT στη συναλλαγή για να βρείτε την αιτία του σφάλματος.

Αυτό το ζήτημα παρουσιάζεται στα ακόλουθα προϊόντα:

  • Η βορειοαμερικανική έκδοση του Microsoft Dynamics NAV 2009 R2
  • Η βορειοαμερικανική έκδοση του Microsoft Dynamics NAV 2009 Service Pack 1

      

Επίλυση

Πληροφορίες επείγουσας επιδιόρθωσης

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

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

            
          

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

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

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

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

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

  • Το δικαίωμα τροποποίησης για το αντικείμενο που θα αλλάξετε.
  • Το δικαίωμα εκτέλεσης για το αντικείμενο αναγνωριστικού αντικειμένου συστήματος 5210 και για το αντικείμενο αναγνωριστικού αντικειμένου συστήματος 9015.

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

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

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

Για να επιλύσετε αυτό το ζήτημα, ακολουθήστε τα εξής βήματα:

  1. Αλλάξτε τον κωδικό στα πεδία στον πίνακα Γραμμή ποσού φόρου πωλήσεων (10011) ως εξής:
    Υπάρχων κώδικας

    ...
    ESM=Es Informe jurisdicci¢n;
                                                                    FRC=Est une juridiction fiscale;
                                                                    ENC=Is Report-to Jurisdiction];
                                                         Editable=No }
        }
        KEYS
        {
          {    ;Tax Area Code for Key,Tax Jurisdiction Code,Tax %,Tax Group Code,Expense/Capitalize,Tax Type,Use Tax;
    ...
    

    Κωδικός αντικατάστασης

    ...
    
    ESM=Es Informe jurisdicci¢n;
                                                                    FRC=Est une juridiction fiscale;
                                                                    ENC=Is Report-to Jurisdiction];
                                                         Editable=No }
    
    // Add the following line.
    { 10044;  ;Tax Base Amount FCY ;Decimal        }
    // End of the added line.
    
        }
        KEYS
        {
          {    ;Tax Area Code for Key,Tax Jurisdiction Code,Tax %,Tax Group Code,Expense/Capitalize,Tax Type,Use Tax;
    ...
    
  2. Αλλάξτε τον κωδικό στη συνάρτηση PostSalesTaxToGL στη μονάδα κώδικα Sales-Post (80) ως εξής:
    Υπάρχων κώδικας

    ...
    END;
                  GenJnlLine."Tax Jurisdiction Code" := TempSalesTaxAmtLine."Tax Jurisdiction Code";
                  IF TempSalesTaxAmtLine."Tax Amount" <> 0 THEN BEGIN
                    RemSalesTaxSrcAmt := RemSalesTaxSrcAmt +
    
    // Delete the following lines.
                      CurrExchRate.ExchangeAmtLCYToFCY(
                        UseDate,SalesHeader."Currency Code",TempSalesTaxAmtLine."Tax Amount",SalesHeader."Currency Factor");
    // End of the deleted lines.
    
                    GenJnlLine."Source Curr. VAT Amount" :=
                      SalesTaxCalculate.ArithmeticRound(RemSalesTaxSrcAmt,Currency."Amount Rounding Precision");
                    RemSalesTaxSrcAmt := RemSalesTaxSrcAmt - GenJnlLine."Source Curr. VAT Amount";
                    RemSalesTaxAmt := RemSalesTaxAmt + TempSalesTaxAmtLine."Tax Amount";
    ...
    

    Κωδικός αντικατάστασης

    ...
    END;
                  GenJnlLine."Tax Jurisdiction Code" := TempSalesTaxAmtLine."Tax Jurisdiction Code";
                  IF TempSalesTaxAmtLine."Tax Amount" <> 0 THEN BEGIN
                    RemSalesTaxSrcAmt := RemSalesTaxSrcAmt +
    
    // Add the following lines.
                      TempSalesTaxAmtLine."Tax Base Amount FCY" * TempSalesTaxAmtLine."Tax %" / 100;
    // End of the added lines.
    
                    GenJnlLine."Source Curr. VAT Amount" :=
                      SalesTaxCalculate.ArithmeticRound(RemSalesTaxSrcAmt,Currency."Amount Rounding Precision");
                    RemSalesTaxSrcAmt := RemSalesTaxSrcAmt - GenJnlLine."Source Curr. VAT Amount";
                    RemSalesTaxAmt := RemSalesTaxAmt + TempSalesTaxAmtLine."Tax Amount";
    ...
    
  3. Αλλάξτε τον κωδικό στη συνάρτηση PostSalesTaxToGL στη μονάδα κώδικα Purch.-Post (90) ως εξής:
    Υπάρχων κώδικας

    ...
    END;
                  GenJnlLine."Tax Jurisdiction Code" := TempSalesTaxAmtLine."Tax Jurisdiction Code";
                  IF TempSalesTaxAmtLine."Tax Amount" <> 0 THEN BEGIN
                    RemSalesTaxSrcAmt := RemSalesTaxSrcAmt +
    
    // Delete the following lines.
                      CurrExchRate.ExchangeAmtLCYToFCY(
                        Usedate,PurchHeader."Currency Code",TempSalesTaxAmtLine."Tax Amount",PurchHeader."Currency Factor");
    // End of the deleted lines.
    
                    GenJnlLine."Source Curr. VAT Amount" :=
                      SalesTaxCalculate.ArithmeticRound(RemSalesTaxSrcAmt,Currency."Amount Rounding Precision");
                    RemSalesTaxSrcAmt := RemSalesTaxSrcAmt - GenJnlLine."Source Curr. VAT Amount";
                    RemSalesTaxAmt := RemSalesTaxAmt + TempSalesTaxAmtLine."Tax Amount";
    ...
    

    Κωδικός αντικατάστασης

    ...
    END;
                  GenJnlLine."Tax Jurisdiction Code" := TempSalesTaxAmtLine."Tax Jurisdiction Code";
                  IF TempSalesTaxAmtLine."Tax Amount" <> 0 THEN BEGIN
                    RemSalesTaxSrcAmt := RemSalesTaxSrcAmt +
    
    // Add the following line.
                      TempSalesTaxAmtLine."Tax Base Amount FCY" * TempSalesTaxAmtLine."Tax %" / 100;
    // End of the added line.
    
                    GenJnlLine."Source Curr. VAT Amount" :=
                      SalesTaxCalculate.ArithmeticRound(RemSalesTaxSrcAmt,Currency."Amount Rounding Precision");
                    RemSalesTaxSrcAmt := RemSalesTaxSrcAmt - GenJnlLine."Source Curr. VAT Amount";
                    RemSalesTaxAmt := RemSalesTaxAmt + TempSalesTaxAmtLine."Tax Amount";
    ...
    
  4. Αλλάξτε τον κωδικό στη συνάρτηση PostProvincialSalesTaxToGL στη μονάδα κώδικα Purch.-Post (90) ως εξής:
    Υπάρχων κώδικας

    ...
    TaxJurisdiction.TESTFIELD("Tax Account (Purchases)");
                      GenJnlLine."Account No." := TaxJurisdiction."Tax Account (Purchases)";
                    END;
                    GenJnlLine.Amount := GenJnlLine."VAT Amount";
    
    // Delete the following lines.
                    GenJnlLine."Source Curr. VAT Base Amount" := 0;
                    GenJnlLine."VAT Base Amount (LCY)" := 0;
                    GenJnlLine."VAT Base Amount" := 0;
                    GenJnlLine."Source Curr. VAT Amount" := 0;
    // End of the deleted lines.
    
                    GenJnlLine."VAT Amount (LCY)" := 0;
                    GenJnlLine."VAT Amount" := 0;
                    GenJnlLine.Quantity := 0;
                    GenJnlLine."VAT Difference" := 0;
    ...
    

    Κωδικός αντικατάστασης

    ...
    TaxJurisdiction.TESTFIELD("Tax Account (Purchases)");
                      GenJnlLine."Account No." := TaxJurisdiction."Tax Account (Purchases)";
                    END;
                    GenJnlLine.Amount := GenJnlLine."VAT Amount";
    
    // Add the following lines.
                    GenJnlLine."Source Currency Amount" := GenJnlLine."Source Curr. VAT Amount";
                    GenJnlLine."Source Curr. VAT Base Amount" := 0;
                    GenJnlLine."VAT Base Amount (LCY)" := 0;
                    GenJnlLine."VAT Base Amount" := 0;
    // End of the added lines.
    
                    GenJnlLine."VAT Amount (LCY)" := 0;
                    GenJnlLine."VAT Amount" := 0;
                    GenJnlLine.Quantity := 0;
                    GenJnlLine."VAT Difference" := 0;
    ...
    
  5. Αλλάξτε τον κωδικό στη συνάρτηση AddSalesLine στη μονάδα κώδικα υπολογισμού φόρου πωλήσεων (398) ως εξής:
    Υπάρχων κωδικός 1

    ...
    "Round Tax" := TaxArea."Round Tax";
                    TaxJurisdiction.GET("Tax Jurisdiction Code");
                    "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
                  END;
    
    // Delete the following line.
                  "Tax Base Amount" := (SalesLine."Line Amount" - SalesLine."Inv. Discount Amount") / ExchangeFactor;
    // End of the deleted line.
    
                  "Line Amount" := SalesLine."Line Amount" / ExchangeFactor;
                  "Tax Liable" := SalesLine."Tax Liable";
                  Quantity := SalesLine."Quantity (Base)";
                  "Invoice Discount Amount" := SalesLine."Inv. Discount Amount";
    ...
    

    Κωδικός αντικατάστασης 1

    ...
    "Round Tax" := TaxArea."Round Tax";
                    TaxJurisdiction.GET("Tax Jurisdiction Code");
                    "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
                  END;
    
    // Add the following line.
                  SetTaxBaseAmount(TempSalesTaxLine,SalesLine."Line Amount" - SalesLine."Inv. Discount Amount",ExchangeFactor,FALSE);
    // End of the added line.
    
                  "Line Amount" := SalesLine."Line Amount" / ExchangeFactor;
                  "Tax Liable" := SalesLine."Tax Liable";
                  Quantity := SalesLine."Quantity (Base)";
                  "Invoice Discount Amount" := SalesLine."Inv. Discount Amount";
    ...
    

    Υπάρχων κωδικός 2

    ...
    END ELSE BEGIN
                  "Line Amount" := "Line Amount" + (SalesLine."Line Amount" / ExchangeFactor);
                  IF SalesLine."Tax Liable" THEN
                    "Tax Liable" := SalesLine."Tax Liable";
    
    // Delete the following line.
                  "Tax Base Amount" := "Tax Base Amount" + ((SalesLine."Line Amount" - SalesLine."Inv. Discount Amount") / ExchangeFactor);
    // End of the deleted line.
    
                  "Tax Amount" := 0;
                  Quantity := Quantity + SalesLine."Quantity (Base)";
                  "Invoice Discount Amount" := "Invoice Discount Amount" + SalesLine."Inv. Discount Amount";
                  MODIFY;
    ...
    

    Κωδικός αντικατάστασης 2

    ...
    END ELSE BEGIN
                  "Line Amount" := "Line Amount" + (SalesLine."Line Amount" / ExchangeFactor);
                  IF SalesLine."Tax Liable" THEN
                    "Tax Liable" := SalesLine."Tax Liable";
    
    // Add the following line.
                  SetTaxBaseAmount(TempSalesTaxLine,SalesLine."Line Amount" - SalesLine."Inv. Discount Amount",ExchangeFactor,TRUE);
    // End of the added line.
    
                  "Tax Amount" := 0;
                  Quantity := Quantity + SalesLine."Quantity (Base)";
                  "Invoice Discount Amount" := "Invoice Discount Amount" + SalesLine."Inv. Discount Amount";
                  MODIFY;
    ...
    
  6. Αλλάξτε τον κωδικό στη συνάρτηση AddSalesInvoiceLines στη μονάδα κώδικα υπολογισμού φόρου πωλήσεων (398) ως εξής:
    Υπάρχων κωδικός 1

    ...
    "Is Report-to Jurisdiction" :=
                             ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
                         END;
                         "Line Amount" := SalesInvoiceLine."Line Amount" / ExchangeFactor;
    
    // Delete the following line.
                         "Tax Base Amount" := SalesInvoiceLine."VAT Base Amount" / ExchangeFactor;
    // End of the deleted line.
    
                         Quantity := SalesInvoiceLine.Quantity;
                         "Tax Liable" := SalesInvoiceLine."Tax Liable";
                         "Calculation Order" :=  TaxAreaLine."Calculation Order";
                         InsertRec := TRUE;
    ...
    

    Κωδικός αντικατάστασης 1

    ...
    "Is Report-to Jurisdiction" :=
                             ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
                         END;
                         "Line Amount" := SalesInvoiceLine."Line Amount" / ExchangeFactor;
    
    // Add the following line.
                         SetTaxBaseAmount(TempSalesTaxLine,SalesInvoiceLine."VAT Base Amount",ExchangeFactor,FALSE);
    // End of the added line.
    
                         Quantity := SalesInvoiceLine.Quantity;
                         "Tax Liable" := SalesInvoiceLine."Tax Liable";
                         "Calculation Order" :=  TaxAreaLine."Calculation Order";
                         InsertRec := TRUE;
    ...
    

    Υπάρχων κωδικός 2

    ...
    InsertRec := TRUE;
                         INSERT;
                       END ELSE BEGIN
                         "Line Amount" := "Line Amount" + (SalesInvoiceLine."Line Amount" / ExchangeFactor);
    
    // Delete the following line.
                         "Tax Base Amount" := "Tax Base Amount" + (SalesInvoiceLine."VAT Base Amount" / ExchangeFactor);
    // End of the deleted line.
    
                         Quantity := Quantity + SalesInvoiceLine.Quantity;
                         IF SalesInvoiceLine."Tax Liable" THEN
                           "Tax Liable" := SalesInvoiceLine."Tax Liable";
                         InsertRec := FALSE;
    ...
    

    Κωδικός αντικατάστασης 2

    ...
    InsertRec := TRUE;
                         INSERT;
                       END ELSE BEGIN
                         "Line Amount" := "Line Amount" + (SalesInvoiceLine."Line Amount" / ExchangeFactor);
    
    // Add the following line.
                         SetTaxBaseAmount(TempSalesTaxLine,SalesInvoiceLine."VAT Base Amount",ExchangeFactor,TRUE);
    // End of the added line.
    
                         Quantity := Quantity + SalesInvoiceLine.Quantity;
                         IF SalesInvoiceLine."Tax Liable" THEN
                           "Tax Liable" := SalesInvoiceLine."Tax Liable";
                         InsertRec := FALSE;
    ...
    
  7. Αλλάξτε τον κωδικό στη συνάρτηση AddSalesCrMemoLines στη μονάδα κώδικα υπολογισμού φόρου πωλήσεων (398) ως εξής:
    Υπάρχων κωδικός 1

    ...
    "Is Report-to Jurisdiction" :=
                             ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
                         END;
                         "Line Amount" := SalesCrMemoLine."Line Amount" / ExchangeFactor;
    
    // Delete the following line.
                         "Tax Base Amount" := SalesCrMemoLine."VAT Base Amount" / ExchangeFactor;
    // End of the deleted line.
    
                         Quantity := SalesCrMemoLine.Quantity;
                         "Tax Liable" := SalesCrMemoLine."Tax Liable";
                         "Calculation Order" :=  TaxAreaLine."Calculation Order";
                         InsertRec := TRUE;
    ...
    

    Κωδικός αντικατάστασης 1

    ...
    "Is Report-to Jurisdiction" :=
                             ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
                         END;
                         "Line Amount" := SalesCrMemoLine."Line Amount" / ExchangeFactor;
    
    // Add the following line.
                         SetTaxBaseAmount(TempSalesTaxLine,SalesCrMemoLine."VAT Base Amount",ExchangeFactor,FALSE);
    // End of the added line.
    
                         Quantity := SalesCrMemoLine.Quantity;
                         "Tax Liable" := SalesCrMemoLine."Tax Liable";
                         "Calculation Order" :=  TaxAreaLine."Calculation Order";
                         InsertRec := TRUE;
    ...
    

    Υπάρχων κωδικός 2

    ...
    InsertRec := TRUE;
                         INSERT;
                       END ELSE BEGIN
                         "Line Amount" := "Line Amount" + (SalesCrMemoLine."Line Amount" / ExchangeFactor);
    
    // Delete the following line.
                         "Tax Base Amount" := "Tax Base Amount" + (SalesCrMemoLine."VAT Base Amount" / ExchangeFactor);
    // End of the deleted line.
    
                         Quantity := Quantity + SalesCrMemoLine.Quantity;
                         IF SalesCrMemoLine."Tax Liable" THEN
                           "Tax Liable" := SalesCrMemoLine."Tax Liable";
                         InsertRec := FALSE;
    ...
    

    Κωδικός αντικατάστασης 2

    ...
    InsertRec := TRUE;
                         INSERT;
                       END ELSE BEGIN
                         "Line Amount" := "Line Amount" + (SalesCrMemoLine."Line Amount" / ExchangeFactor);
    
    // Add the following line.
                         SetTaxBaseAmount(TempSalesTaxLine,SalesCrMemoLine."VAT Base Amount",ExchangeFactor,TRUE);
    // End of the added line.
    
                         Quantity := Quantity + SalesCrMemoLine.Quantity;
                         IF SalesCrMemoLine."Tax Liable" THEN
                           "Tax Liable" := SalesCrMemoLine."Tax Liable";
                         InsertRec := FALSE;
    ...
    
  8. Αλλάξτε τον κωδικό στη συνάρτηση AddPurchLine στη μονάδα κώδικα υπολογισμού φόρου πωλήσεων (398) ως εξής:
    Υπάρχων κωδικός 1

    ...
    "Round Tax" := TaxArea."Round Tax";
                    TaxJurisdiction.GET("Tax Jurisdiction Code");
                    "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
                  END;
    
    // Delete the following line.
                  "Tax Base Amount" := (PurchLine."Line Amount" - PurchLine."Inv. Discount Amount") / ExchangeFactor;
    // End of the deleted line.
    
                  "Line Amount" := PurchLine."Line Amount" / ExchangeFactor;
                  "Tax Liable" := PurchLine."Tax Liable";
                  "Use Tax" := PurchLine."Use Tax";
    ...
    

    Κωδικός αντικατάστασης 1

    ...
    "Round Tax" := TaxArea."Round Tax";
                    TaxJurisdiction.GET("Tax Jurisdiction Code");
                    "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
                  END;
    
    // Add the following line.
                  SetTaxBaseAmount(TempSalesTaxLine,PurchLine."Line Amount" - PurchLine."Inv. Discount Amount",ExchangeFactor,FALSE);
    // End of the added line.
    
              "Line Amount" := PurchLine."Line Amount" / ExchangeFactor;
                  "Tax Liable" := PurchLine."Tax Liable";
                  "Use Tax" := PurchLine."Use Tax";
    ...
    

    Υπάρχων κωδικός 2

    ...
    END ELSE BEGIN
                  "Line Amount" := "Line Amount" + (PurchLine."Line Amount" / ExchangeFactor);
                  IF PurchLine."Tax Liable" THEN
                    "Tax Liable" := PurchLine."Tax Liable";
    
    // Delete the following line.
                  "Tax Base Amount" := "Tax Base Amount" + ((PurchLine."Line Amount" - PurchLine."Inv. Discount Amount") / ExchangeFactor);
    // End of the deleted line.
    
                  "Tax Amount" := 0;
                  Quantity := Quantity + PurchLine."Quantity (Base)";
                  "Invoice Discount Amount" := "Invoice Discount Amount" + PurchLine."Inv. Discount Amount";
                  MODIFY;
    ...
    

    Κωδικός αντικατάστασης 2

    ...
    END ELSE BEGIN
                  "Line Amount" := "Line Amount" + (PurchLine."Line Amount" / ExchangeFactor);
                  IF PurchLine."Tax Liable" THEN
                    "Tax Liable" := PurchLine."Tax Liable";
    
    // Add the following line.
                  SetTaxBaseAmount(TempSalesTaxLine,PurchLine."Line Amount" - PurchLine."Inv. Discount Amount",ExchangeFactor,TRUE);
    // End of the added line.
    
                  "Tax Amount" := 0;
                  Quantity := Quantity + PurchLine."Quantity (Base)";
                  "Invoice Discount Amount" := "Invoice Discount Amount" + PurchLine."Inv. Discount Amount";
                  MODIFY;
    ...
    
  9. Αλλάξτε τον κωδικό στη συνάρτηση AddPurchInvoiceLines στη μονάδα κώδικα υπολογισμού φόρου πωλήσεων (398) ως εξής:
    Υπάρχων κωδικός 1

    ...
    "Is Report-to Jurisdiction" :=
                             ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
                         END;
                         "Line Amount" := PurchInvLine."Line Amount" / ExchangeFactor;
    
    // Delete the following line.
                         "Tax Base Amount" := PurchInvLine."VAT Base Amount" / ExchangeFactor;
    // End of the deleted line.
    
                         Quantity := PurchInvLine.Quantity;
                         "Tax Liable" := PurchInvLine."Tax Liable";
                         "Use Tax" := PurchInvLine."Use Tax";
    ...
    

    Κωδικός αντικατάστασης 1

    ...
    "Is Report-to Jurisdiction" :=
                             ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
                         END;
                         "Line Amount" := PurchInvLine."Line Amount" / ExchangeFactor;
    
    // Add the following line.
                         SetTaxBaseAmount(TempSalesTaxLine,PurchInvLine."VAT Base Amount",ExchangeFactor,FALSE);
    // End of the added line.
    
                         Quantity := PurchInvLine.Quantity;
                         "Tax Liable" := PurchInvLine."Tax Liable";
                         "Use Tax" := PurchInvLine."Use Tax";
    ...
    

    Υπάρχων κωδικός 2

    ...
    InsertRec := TRUE;
                         INSERT;
                       END ELSE BEGIN
                         "Line Amount" := "Line Amount" + (PurchInvLine."Line Amount" / ExchangeFactor);
    
    // Delete the following line.
                         "Tax Base Amount" := "Tax Base Amount" + (PurchInvLine."VAT Base Amount" / ExchangeFactor);
    // End of the deleted line.
    
                         Quantity := Quantity + PurchInvLine.Quantity;
                         IF PurchInvLine."Tax Liable" THEN
                           "Tax Liable" := PurchInvLine."Tax Liable";
                         InsertRec := FALSE;
    ...
    

    Κωδικός αντικατάστασης 2

    ...
    InsertRec := TRUE;
                         INSERT;
                       END ELSE BEGIN
                         "Line Amount" := "Line Amount" + (PurchInvLine."Line Amount" / ExchangeFactor);
    
    // Add the following line.
                         SetTaxBaseAmount(TempSalesTaxLine,PurchInvLine."VAT Base Amount",ExchangeFactor,TRUE);
    // End of the added line.
    
                         Quantity := Quantity + PurchInvLine.Quantity;
                         IF PurchInvLine."Tax Liable" THEN
                           "Tax Liable" := PurchInvLine."Tax Liable";
                         InsertRec := FALSE;
    ...
    
  10. Αλλάξτε τον κωδικό στη συνάρτηση AddPurchCrMemoLines στη μονάδα κώδικα υπολογισμού φόρου πωλήσεων (398) ως εξής:
    Υπάρχων κωδικός 1

    ...
    "Is Report-to Jurisdiction" :=
                             ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
                         END;
                         "Line Amount" := PurchCrMemoLine."Line Amount" / ExchangeFactor;
    
    // Delete the following line.
                         "Tax Base Amount" := PurchCrMemoLine."VAT Base Amount" / ExchangeFactor;
    // End of the deleted line.
    
                         Quantity := PurchCrMemoLine.Quantity;
                         "Tax Liable" := PurchCrMemoLine."Tax Liable";
                         "Use Tax" := PurchCrMemoLine."Use Tax";
    ...
    

    Κωδικός αντικατάστασης 1

    ...
    "Is Report-to Jurisdiction" :=
                             ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
                         END;
                         "Line Amount" := PurchCrMemoLine."Line Amount" / ExchangeFactor;
    
    // Add the following line.
                         SetTaxBaseAmount(TempSalesTaxLine,PurchCrMemoLine."VAT Base Amount",ExchangeFactor,FALSE);
    // End of the added line.
    
                         Quantity := PurchCrMemoLine.Quantity;
                         "Tax Liable" := PurchCrMemoLine."Tax Liable";
                         "Use Tax" := PurchCrMemoLine."Use Tax";
    ...
    

    Υπάρχων κωδικός 2

    ...
    InsertRec := TRUE;
                         INSERT;
                       END ELSE BEGIN
                         "Line Amount" := "Line Amount" + (PurchCrMemoLine."Line Amount" / ExchangeFactor);
    
    // Delete the following line.
                         "Tax Base Amount" := "Tax Base Amount" + (PurchCrMemoLine."VAT Base Amount" / ExchangeFactor);
    // End of the deleted line.
    
                         Quantity := Quantity + PurchCrMemoLine.Quantity;
                         IF PurchCrMemoLine."Tax Liable" THEN
                           "Tax Liable" := PurchCrMemoLine."Tax Liable";
                         InsertRec := FALSE;
    ...
    

    Κωδικός αντικατάστασης 2

    ...
    InsertRec := TRUE;
                         INSERT;
                       END ELSE BEGIN
                         "Line Amount" := "Line Amount" + (PurchCrMemoLine."Line Amount" / ExchangeFactor);
    
    // Add the following line.
                         SetTaxBaseAmount(TempSalesTaxLine,PurchCrMemoLine."VAT Base Amount",ExchangeFactor,TRUE);
    // End of the added line.
    
                         Quantity := Quantity + PurchCrMemoLine.Quantity;
                         IF PurchCrMemoLine."Tax Liable" THEN
                           "Tax Liable" := PurchCrMemoLine."Tax Liable";
                         InsertRec := FALSE;
    ...
    
  11. Αλλάξτε τον κωδικό στη συνάρτηση AddServiceLine στη μονάδα κώδικα υπολογισμού φόρου πωλήσεων (398) ως εξής:
    Υπάρχων κωδικός 1

    ...
    "Round Tax" := TaxArea."Round Tax";
                    TaxJurisdiction.GET("Tax Jurisdiction Code");
                    "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
                  END;
    
    // Delete the following line.
                  "Tax Base Amount" := (ServiceLine."Line Amount" - ServiceLine."Inv. Discount Amount") / ExchangeFactor;
    // End of the deleted line.
    
                  "Line Amount" := ServiceLine."Line Amount" / ExchangeFactor;
                  "Tax Liable" := ServiceLine."Tax Liable";
                  Quantity := ServiceLine."Quantity (Base)";
                  "Invoice Discount Amount" := ServiceLine."Inv. Discount Amount";
    ...
    

    Κωδικός αντικατάστασης 1

    ...
    "Round Tax" := TaxArea."Round Tax";
                    TaxJurisdiction.GET("Tax Jurisdiction Code");
                    "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
                  END;
    
    // Add the following line.
                  SetTaxBaseAmount(TempSalesTaxLine,ServiceLine."Line Amount" - ServiceLine."Inv. Discount Amount",ExchangeFactor,FALSE);
    // End of the added line.
    
                  "Line Amount" := ServiceLine."Line Amount" / ExchangeFactor;
                  "Tax Liable" := ServiceLine."Tax Liable";
                  Quantity := ServiceLine."Quantity (Base)";
                  "Invoice Discount Amount" := ServiceLine."Inv. Discount Amount";
    ...
    

    Υπάρχων κωδικός 2

    ...
    END ELSE BEGIN
                  "Line Amount" := "Line Amount" + (ServiceLine."Line Amount" / ExchangeFactor);
                  IF ServiceLine."Tax Liable" THEN
                    "Tax Liable" := ServiceLine."Tax Liable";
    
    // Delete the following line.
                  "Tax Base Amount" :=
                    "Tax Base Amount" + ((ServiceLine."Line Amount" - ServiceLine."Inv. Discount Amount") / ExchangeFactor);
    // End of the deleted line.
    
              "Tax Amount" := 0;
                  Quantity := Quantity + ServiceLine."Quantity (Base)";
                  "Invoice Discount Amount" := "Invoice Discount Amount" + ServiceLine."Inv. Discount Amount";
                  MODIFY;
    ...
    

    Κωδικός αντικατάστασης 2

    ...
    END ELSE BEGIN
                  "Line Amount" := "Line Amount" + (ServiceLine."Line Amount" / ExchangeFactor);
                  IF ServiceLine."Tax Liable" THEN
                    "Tax Liable" := ServiceLine."Tax Liable";
    
    // Add the following line.
                  SetTaxBaseAmount(TempSalesTaxLine,ServiceLine."Line Amount" - ServiceLine."Inv. Discount Amount",ExchangeFactor,TRUE);
    // End of the added line.
    
                  "Tax Amount" := 0;
                  Quantity := Quantity + ServiceLine."Quantity (Base)";
                  "Invoice Discount Amount" := "Invoice Discount Amount" + ServiceLine."Inv. Discount Amount";
                  MODIFY;
    ...
    
  12. Αλλάξτε τον κωδικό στη συνάρτηση AddServInvoiceLines στη μονάδα κώδικα υπολογισμού φόρου πωλήσεων (398) ως εξής:
    Υπάρχων κωδικός 1

    ...
    "Is Report-to Jurisdiction" :=
                             ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
                         END;
                         "Line Amount" := ServInvLine."Line Amount" / ExchangeFactor;
    
    // Delete the following lines.
                         "Tax Base Amount" := ServInvLine."VAT Base Amount" / ExchangeFactor;
                         Quantity := ServInvLine.Quantity;
                         "Tax Liable" := ServInvLine."Tax Liable";
    
    // End of the deleted line.
    
                         "Calculation Order" :=  TaxAreaLine."Calculation Order";
                         InsertRec := TRUE;
                         INSERT;
    ...
    

    Κωδικός αντικατάστασης 1

    ...
    "Is Report-to Jurisdiction" :=
                             ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
                         END;
                         "Line Amount" := ServInvLine."Line Amount" / ExchangeFactor;
    
    // Add the following lines.
                         SetTaxBaseAmount(TempSalesTaxLine,ServInvLine."VAT Base Amount",ExchangeFactor,FALSE);
                         Quantity := ServInvLine.Quantity;
                         "Tax Liable" := ServInvLine."Tax Liable";
    // End of the added lines.
    
                         "Calculation Order" :=  TaxAreaLine."Calculation Order";
                         InsertRec := TRUE;
                         INSERT;
    ...
    

    Υπάρχων κωδικός 2

    ...
    InsertRec := TRUE;
                         INSERT;
                       END ELSE BEGIN
                         "Line Amount" := "Line Amount" + (ServInvLine."Line Amount" / ExchangeFactor);
    
    // Delete the following line.
                         "Tax Base Amount" := "Tax Base Amount" + (ServInvLine."VAT Base Amount" / ExchangeFactor);
    // End of the deleted line.
    
                         Quantity := Quantity + ServInvLine.Quantity;
                         IF ServInvLine."Tax Liable" THEN
                           "Tax Liable" := ServInvLine."Tax Liable";
                         InsertRec := FALSE;
    ...
    

    Κωδικός αντικατάστασης 2

    ...
    InsertRec := TRUE;
                         INSERT;
                       END ELSE BEGIN
                         "Line Amount" := "Line Amount" + (ServInvLine."Line Amount" / ExchangeFactor);
    
    // Add the following line.
                         SetTaxBaseAmount(TempSalesTaxLine,ServInvLine."VAT Base Amount",ExchangeFactor,TRUE);
    // End of the added line.
    
                         Quantity := Quantity + ServInvLine.Quantity;
                         IF ServInvLine."Tax Liable" THEN
                           "Tax Liable" := ServInvLine."Tax Liable";
                         InsertRec := FALSE;
    ...
    
  13. Αλλάξτε τον κωδικό στη συνάρτηση AddServCrMemoLines στη μονάδα κώδικα υπολογισμού φόρου πωλήσεων (398) ως εξής:
    Υπάρχων κωδικός 1

    ...
    "Is Report-to Jurisdiction" :=
                             ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
                         END;
                         "Line Amount" := ServCrMemoLine."Line Amount" / ExchangeFactor;
    
    // Delete the following line.
                         "Tax Base Amount" := ServCrMemoLine."VAT Base Amount" / ExchangeFactor;
    // End of the deleted line.
    
                         Quantity := ServCrMemoLine.Quantity;
                         "Tax Liable" := ServCrMemoLine."Tax Liable";
    
                         "Calculation Order" :=  TaxAreaLine."Calculation Order";
    ...
    

    Κωδικός αντικατάστασης 1

    ...
    "Is Report-to Jurisdiction" :=
                             ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction");
                         END;
                         "Line Amount" := ServCrMemoLine."Line Amount" / ExchangeFactor;
    
    // Add the following line.
                         SetTaxBaseAmount(TempSalesTaxLine,ServCrMemoLine."VAT Base Amount",ExchangeFactor,FALSE);
    // End of the added line.
    
                         Quantity := ServCrMemoLine.Quantity;
                         "Tax Liable" := ServCrMemoLine."Tax Liable";
    
                         "Calculation Order" :=  TaxAreaLine."Calculation Order";
    ...
    

    Υπάρχων κωδικός 2

    ...
    InsertRec := TRUE;
                         INSERT;
                       END ELSE BEGIN
                         "Line Amount" := "Line Amount" + (ServCrMemoLine."Line Amount" / ExchangeFactor);
    
    // Delete the following line.
                         "Tax Base Amount" := "Tax Base Amount" + (ServCrMemoLine."VAT Base Amount" / ExchangeFactor);
    // End of the deleted line.
    
                         Quantity := Quantity + ServCrMemoLine.Quantity;
                         IF ServCrMemoLine."Tax Liable" THEN
                           "Tax Liable" := ServCrMemoLine."Tax Liable";
                         InsertRec := FALSE;
    ...
    

    Κωδικός αντικατάστασης 2

    ...
    InsertRec := TRUE;
                         INSERT;
                       END ELSE BEGIN
                         "Line Amount" := "Line Amount" + (ServCrMemoLine."Line Amount" / ExchangeFactor);
    
    // Add the following line.
                         SetTaxBaseAmount(TempSalesTaxLine,ServCrMemoLine."VAT Base Amount",ExchangeFactor,TRUE);
    // End of the added line.
    
                         Quantity := Quantity + ServCrMemoLine.Quantity;
                         IF ServCrMemoLine."Tax Liable" THEN
                           "Tax Liable" := ServCrMemoLine."Tax Liable";
                         InsertRec := FALSE;
    ...
    
  14. Προσθέστε μια συνάρτηση SetTaxBaseAmount στο φόρο πωλήσεων Υπολογίστε τη μονάδα κώδικα (398) ως εξής:

    LOCAL PROCEDURE SetTaxBaseAmount@1020031(VAR SalesTaxAmountLine@1020001 : Record 10011;Value@1020000 : Decimal;ExchangeFactor@1020002 : Decimal;Increment@1020003 : Boolean);
          BEGIN
            WITH SalesTaxAmountLine DO BEGIN
              IF Increment THEN
                "Tax Base Amount FCY" += Value
              ELSE
                "Tax Base Amount FCY" := Value;
              "Tax Base Amount" := "Tax Base Amount FCY" / ExchangeFactor;
            END;
          END;
    

            
          

Προαπαιτούμενα

Πρέπει να έχετε ένα από τα ακόλουθα προϊόντα για να εφαρμόσετε αυτήν την επείγουσα επιδιόρθωση:

  • Η βορειοαμερικανική έκδοση του Microsoft Dynamics NAV 2009 R2
  • Η βορειοαμερικανική έκδοση του Microsoft Dynamics NAV 2009 Service Pack 1

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

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

Κατάσταση

Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα ζήτημα που αφορά τα προϊόντα της Microsoft που παρατίθενται στην ενότητα "Ισχύει για".

Σημείωση Αυτό είναι ένα άρθρο "FAST PUBLISH" που δημιουργήθηκε απευθείας μέσα από τον οργανισμό υποστήριξης της Microsoft. Οι πληροφορίες που περιέχονται στο παρόν παρέχονται ως έχουν ως απάντηση σε αναδυόμενα ζητήματα. Ως αποτέλεσμα της ταχύτητας διάθεσής του, το υλικό μπορεί να περιλαμβάνει τυπογραφικά λάθη και μπορεί να αναθεωρηθεί ανά πάσα στιγμή χωρίς προειδοποίηση. Ανατρέξτε στους Όρους χρήσης για άλλα ζητήματα.