Mesajul de eroare "Qt. to Ship nu poate fi mai mare de 0,9" atunci când expediați și facturați o comandă de vânzări care conține plăți anticipate în versiunea est-europeană a Microsoft Dynamics NAV 2009 R2

Se aplică la
Microsoft Dynamics NAV 2009 R2

Acest articol se aplică la setările regionale de limbă Microsoft Dynamics NAV pentru Europa de Est (EE).

Simptome

Să presupunem că aplicați 2672643 de remediere rapidă în versiunea est-europeană de Microsoft Dynamics NAV 2009 R2. Postați o scrisoare în avans pentru o comandă de vânzări care conține plăți în avans. În această situație, atunci când expediați și facturați comanda de vânzare, primiți următorul mesaj de eroare:

Notă

Cantitatea de expediere nu poate fi mai mare de 0,9. În linia vânzări Tip document='Comandă',Nr. document = "Număr", Număr linie = "Număr".

Prin urmare, nu puteți înregistra comanda de vânzare.
  Pentru informații suplimentare despre 2672643 de remediere rapidă, faceți clic pe următorul număr de articol pentru a vedea articolul în Baza de cunoștințe Microsoft:

2672643 Mesajul de eroare "Există sume nepublicate de plată anticipată la comandă [număr]" atunci când publicați livrarea parțială pentru o comandă de vânzări în versiunea est-europeană de Microsoft Dynamics NAV 2009 R2

Rezolvare

Informații despre remedierea rapidă

O remediere rapidă acceptată este acum disponibilă de la Microsoft. Însă, scopul său este doar să corecteze problema descrisă în acest articol. Aplicați-o doar sistemelor care se confruntă cu această problemă specifică. Această remediere rapidă poate fi testată suplimentar. De aceea, dacă această problemă nu vă afectează grav, vă recomandăm să așteptați următorul pachet Service Pack Microsoft Dynamics NAV 2009 sau versiunea următoare Microsoft Dynamics NAV care conține această remediere rapidă.

Notă În cazuri speciale, costurile implicate de obicei pentru apelurile de asistență pot fi revocate dacă un specialist în asistență tehnică pentru Microsoft Dynamics și produsele asociate stabilește că o anumită actualizare va rezolva problema. Costurile uzuale de suport se vor aplica pentru întrebări suplimentare de suport și pentru probleme ce nu fac obiectul actualizării în chestiune.

            
          

Informații despre instalare

Microsoft oferă exemple de programare numai în scop ilustrativ, fără nicio garanție explicită sau implicită. Aceasta include, dar nu se limitează la, garanțiile implicite de vandabilitate sau adecvare pentru un anumit scop. Acest articol presupune că sunteți familiarizat cu limbajul de programare prezentat și cu instrumentele utilizate pentru a crea și a depana proceduri. Inginerii de asistență Microsoft vă pot ajuta să explicați funcționalitatea unei anumite proceduri. Totuși, nu vor modifica aceste exemple pentru a furniza funcționalitate suplimentară și nu vor construi proceduri pentru a răspunde cerințelor dvs. specifice.

Notă Înainte de a instala această remediere rapidă, verificați dacă toți utilizatorii clientului Microsoft Dynamics NAV sunt deconectați de la sistem. Printre acestea se numără serviciile Microsoft Dynamics NAV Application Server (NAS). Ar trebui să fiți singurul utilizator client conectat atunci când implementați această remediere rapidă.

Pentru a implementa această remediere rapidă, trebuie să aveți o licență de dezvoltator.

Recomandăm ca contului de utilizator din fereastra Conectări Windows sau din fereastra Conectări bază de date să primească ID-ul de rol "SUPER". În cazul în care contului de utilizator nu i se poate atribui ID-ul de rol "SUPER", trebuie să verificați dacă acel cont de utilizator are următoarele permisiuni:

  • Permisiunea Modificare pentru obiectul pe care îl veți modifica.
  • Permisiunea de executare pentru obiectul cu ID obiect de sistem 5210 și pentru obiectul ID obiect de sistem 9015.

                
Notă: nu trebuie să aveți drepturi asupra depozitelor de date decât dacă trebuie să efectuați repararea datelor.

Modificări de cod

Notă: testați întotdeauna remedierile de cod într-un mediu controlat înainte de a aplica remedierile la computerele de producție.
Pentru a rezolva această problemă, urmați acești pași:

  1. Modificați codul din declanșatorul Amt Prepmt în Deduct - OnValidate din tabelul "Linie de vânzări" (37), după cum urmează:
    Cod existent

    ...
    "Prepmt Amt to Deduct",
    STRSUBSTNO(Text045,"Prepmt. Amt. Inv." - "Prepmt Amt Deducted"));
    
    IF "Qty. to Invoice" = Quantity - "Quantity Invoiced" THEN
    
    // Delete the following line. 
    TESTFIELD("Prepmt Amt to Deduct","Prepmt. Amt. Inv." - "Prepmt Amt Deducted");
    ...
    

    Codul de înlocuire

    ...
    "Prepmt Amt to Deduct",
    STRSUBSTNO(Text045,"Prepmt. Amt. Inv." - "Prepmt Amt Deducted"));
    
    IF "Qty. to Invoice" = Quantity - "Quantity Invoiced" THEN
    
    // Add the following lines. 
    TESTFIELD("Prepmt Amt to Deduct","Prepmt. Amt. Inv." - "Prepmt Amt Deducted");
    GetSalesHeader;
    IF SalesHeader."Prepayment Type" = SalesHeader."Prepayment Type"::Advance THEN BEGIN
    VATPostingSetup.GET("VAT Bus. Posting Group","VAT Prod. Posting Group");
    VATPostingSetup.TESTFIELD("Adv. Invoice Correction Type",VATPostingSetup."Adv. Invoice Correction Type"::Percentage);
    END;
    // End of the added lines. 
    ...
    
  2. Modificați codul din funcția CalcPrepaymentToDeduct din tabelul "Linie de vânzări" (37) după cum urmează:

    1. Ștergeți variabilele locale următoare:

      PrepmtPct: Decimal;
      AbsoluteAdvCorrection : Boolean;
      
    2. Modificați codul după cum urmează:
      Cod existent

      ...
      IF (Quantity - "Quantity Invoiced") <> 0 THEN BEGIN
      GetSalesHeader;
      IF SalesHeader."Prepayment Type" = SalesHeader."Prepayment Type"::Advance THEN BEGIN
      VATPostingSetup.GET("VAT Bus. Posting Group","VAT Prod. Posting Group");
      
      // Delete the following lines. 
      AbsoluteAdvCorrection :=
      VATPostingSetup."Adv. Invoice Correction Type" = VATPostingSetup."Adv. Invoice Correction Type"::Absolute;
      IF AbsoluteAdvCorrection THEN BEGIN
      PrepmtPct := "Prepayment %";
      "Prepayment %" := 100;
      END;
      END;
      IF SalesHeader."Prices Including VAT" THEN
      "Prepmt Amt to Deduct" :=
      ROUND(
      ROUND(
      ROUND(
      ROUND("Unit Price" * "Qty. to Invoice",Currency."Amount Rounding Precision") *
      (1 - ("Line Discount %" / 100)),Currency."Amount Rounding Precision") *
      ("Prepayment %" / 100) / (1 + ("VAT %" / 100)),Currency."Amount Rounding Precision") *
      (1 + ("VAT %" / 100)),Currency."Amount Rounding Precision")
      ELSE
      "Prepmt Amt to Deduct" :=
      ROUND(
      ROUND(
      ROUND("Unit Price" * "Qty. to Invoice",Currency."Amount Rounding Precision") *
      (1 - ("Line Discount %" / 100)),Currency."Amount Rounding Precision") *
      "Prepayment %" / 100 ,Currency."Amount Rounding Precision");
      IF AbsoluteAdvCorrection THEN BEGIN
      "Prepayment %" := PrepmtPct;
      IF "Prepmt Amt to Deduct" > ("Prepmt. Amt. Inv." - "Prepmt Amt Deducted") THEN
      "Prepmt Amt to Deduct" := "Prepmt. Amt. Inv." - "Prepmt Amt Deducted";
      END;
      END ELSE
      "Prepmt Amt to Deduct" := 0
      // End of the deleted lines.
      ...
      

      Codul de înlocuire

      ...
      IF (Quantity - "Quantity Invoiced") <> 0 THEN BEGIN
      GetSalesHeader;
      IF SalesHeader."Prepayment Type" = SalesHeader."Prepayment Type"::Advance THEN BEGIN
      VATPostingSetup.GET("VAT Bus. Posting Group","VAT Prod. Posting Group");
      
      // Add the following lines. 
      CASE VATPostingSetup."Adv. Invoice Correction Type" OF
      VATPostingSetup."Adv. Invoice Correction Type"::Percentage:
      "Prepmt Amt to Deduct" :=
      ROUND("Qty. to Invoice" / (Quantity - "Quantity Invoiced") *
      ("Prepmt. Amt. Inv." - "Prepmt Amt Deducted"),Currency."Amount Rounding Precision");
      VATPostingSetup."Adv. Invoice Correction Type"::Absolute:
      BEGIN
      "Prepmt Amt to Deduct" := PrepmtAmtToDeduct(SalesHeader."Prices Including VAT",100);
      IF "Prepmt Amt to Deduct" > ("Prepmt. Amt. Inv." - "Prepmt Amt Deducted") THEN
      "Prepmt Amt to Deduct" := "Prepmt. Amt. Inv." - "Prepmt Amt Deducted";
      END;
      VATPostingSetup."Adv. Invoice Correction Type"::"Fully Invoiced":
      IF "Qty. to Invoice" = Quantity - "Quantity Invoiced" THEN
      "Prepmt Amt to Deduct" := "Prepmt. Amt. Inv." - "Prepmt Amt Deducted"
      ELSE
      "Prepmt Amt to Deduct" := 0;
      END;
      END ELSE
      "Prepmt Amt to Deduct" := PrepmtAmtToDeduct(SalesHeader."Prices Including VAT","Prepayment %");
      END ELSE
      "Prepmt Amt to Deduct" := 0
      // End of the added lines. 
      ...
      
  3. Creați o nouă funcție PrepmtAmtToDeduct în tabelul "Linie de vânzări" (37), după cum urmează:

    PROCEDURE PrepmtAmtToDeduct@1470002(PricesIncludingVAT@1470000 : Boolean;PrepaymentPct@1470001 : Decimal) : Decimal;
    VAR
    VATPct@1470002 : Decimal;
    BEGIN
    IF PricesIncludingVAT THEN
    VATPct := "VAT %"
    ELSE
    VATPct := 0;
    EXIT(
    ROUND(
    ROUND(
    ROUND(
    ROUND("Unit Price" * "Qty. to Invoice",Currency."Amount Rounding Precision") *
    (1 - ("Line Discount %" / 100)),Currency."Amount Rounding Precision") *
    (PrepaymentPct / 100) / (1 + (VATPct / 100)),Currency."Amount Rounding Precision") *
    (1 + (VATPct / 100)),Currency."Amount Rounding Precision"));
    END;
    
  4. Modificați codul din declanșatorul Prepmt Amt to Deduct - OnValidate din tabelul "Linie de achiziție" (39), după cum urmează:
    Cod existent

    ...
    FIELDERROR(
    "Prepmt Amt to Deduct",
    STRSUBSTNO(Text039,"Prepmt. Amt. Inv." - "Prepmt Amt Deducted"));
    
    IF "Qty. to Invoice" = Quantity - "Quantity Invoiced" THEN
    
    // Delete the following line. 
    TESTFIELD("Prepmt Amt to Deduct","Prepmt. Amt. Inv." - "Prepmt Amt Deducted");
    ...
    

    Codul de înlocuire

    ...
    FIELDERROR(
    "Prepmt Amt to Deduct",
    STRSUBSTNO(Text039,"Prepmt. Amt. Inv." - "Prepmt Amt Deducted"));
    
    IF "Qty. to Invoice" = Quantity - "Quantity Invoiced" THEN
    
    // Add the following lines. 
    TESTFIELD("Prepmt Amt to Deduct","Prepmt. Amt. Inv." - "Prepmt Amt Deducted");
    GetPurchHeader;
    IF PurchHeader."Prepayment Type" = PurchHeader."Prepayment Type"::Advance THEN BEGIN
    VATPostingSetup.GET("VAT Bus. Posting Group","VAT Prod. Posting Group");
    VATPostingSetup.TESTFIELD("Adv. Invoice Correction Type",VATPostingSetup."Adv. Invoice Correction Type"::Percentage);
    END;
    // End of the added lines. 
    ...
    
  5. Modificați codul din funcția CalcPrepaymentToDeduct din tabelul "Linie de achiziție" (39). Pentru a face acest lucru, urmați acești pași:

    1. Ștergeți variabilele locale următoare:

      PrepmtPct@ : Decimal;
      AbsoluteAdvCorrection@ : Boolean;
      
    2. Modificați codul după cum urmează:
      Cod existent

      ...
      IF (Quantity - "Quantity Invoiced") <> 0 THEN BEGIN
      GetPurchHeader;
      IF PurchHeader."Prepayment Type" = PurchHeader."Prepayment Type"::Advance THEN BEGIN
      VATPostingSetup.GET("VAT Bus. Posting Group","VAT Prod. Posting Group");
      
      // Delete the following lines. 
      AbsoluteAdvCorrection :=
      VATPostingSetup."Adv. Invoice Correction Type" = VATPostingSetup."Adv. Invoice Correction Type"::Absolute;
      IF AbsoluteAdvCorrection THEN BEGIN
      PrepmtPct := "Prepayment %";
      "Prepayment %" := 100;
      END;
      END;
      IF PurchHeader."Prices Including VAT" THEN
      "Prepmt Amt to Deduct" :=
      ROUND(
      ROUND(
      ROUND(
      ROUND("Direct Unit Cost" * "Qty. to Invoice",Currency."Amount Rounding Precision") *
      (1 - ("Line Discount %" / 100)),Currency."Amount Rounding Precision") *
      ("Prepayment %" / 100) / (1 + ("VAT %" / 100)),Currency."Amount Rounding Precision") *
      (1 + ("VAT %" / 100)),Currency."Amount Rounding Precision")
      ELSE
      "Prepmt Amt to Deduct" :=
      ROUND(
      ROUND(
      ROUND("Direct Unit Cost" * "Qty. to Invoice",Currency."Amount Rounding Precision") *
      (1 - ("Line Discount %" / 100)),Currency."Amount Rounding Precision") *
      "Prepayment %" / 100,Currency."Amount Rounding Precision");
      IF AbsoluteAdvCorrection THEN BEGIN
      "Prepayment %" := PrepmtPct;
      IF "Prepmt Amt to Deduct" > ("Prepmt. Amt. Inv." - "Prepmt Amt Deducted") THEN
      "Prepmt Amt to Deduct" := "Prepmt. Amt. Inv." - "Prepmt Amt Deducted";
      END;
      END ELSE
      "Prepmt Amt to Deduct" := 0
      // End of the deleted lines.
      ...
      

      Codul de înlocuire

      ...
      IF (Quantity - "Quantity Invoiced") <> 0 THEN BEGIN
      GetPurchHeader;
      IF PurchHeader."Prepayment Type" = PurchHeader."Prepayment Type"::Advance THEN BEGIN
      VATPostingSetup.GET("VAT Bus. Posting Group","VAT Prod. Posting Group");
      
      // Add the following lines. 
      CASE VATPostingSetup."Adv. Invoice Correction Type" OF
      VATPostingSetup."Adv. Invoice Correction Type"::Percentage:
      "Prepmt Amt to Deduct" :=
      ROUND("Qty. to Invoice" / (Quantity - "Quantity Invoiced") *
      ("Prepmt. Amt. Inv." - "Prepmt Amt Deducted"),Currency."Amount Rounding Precision");
      VATPostingSetup."Adv. Invoice Correction Type"::Absolute:
      BEGIN
      "Prepmt Amt to Deduct" := PrepmtAmtToDeduct(PurchHeader."Prices Including VAT",100);
      IF "Prepmt Amt to Deduct" > ("Prepmt. Amt. Inv." - "Prepmt Amt Deducted") THEN
      "Prepmt Amt to Deduct" := "Prepmt. Amt. Inv." - "Prepmt Amt Deducted";
      END;
      VATPostingSetup."Adv. Invoice Correction Type"::"Fully Invoiced":
      IF "Qty. to Invoice" = Quantity - "Quantity Invoiced" THEN
      "Prepmt Amt to Deduct" := "Prepmt. Amt. Inv." - "Prepmt Amt Deducted"
      ELSE
      "Prepmt Amt to Deduct" := 0;
      END;
      END ELSE
      "Prepmt Amt to Deduct" := PrepmtAmtToDeduct(PurchHeader."Prices Including VAT","Prepayment %");
      END ELSE
      "Prepmt Amt to Deduct" := 0
      // End of the added lines. 
      ...
      
  6. Creați o nouă funcție PrepmtAmtToDeduct în tabelul "Linie de achiziție" (39), după cum urmează:

    PROCEDURE PrepmtAmtToDeduct@1470002(PricesIncludingVAT@1470000 : Boolean;PrepaymentPct@1470001 : Decimal) : Decimal;
    VAR
    VATPct@1470002 : Decimal;
    BEGIN
    IF PricesIncludingVAT THEN
    VATPct := "VAT %"
    ELSE
    VATPct := 0;
    EXIT(
    ROUND(
    ROUND(
    ROUND(
    ROUND("Direct Unit Cost" * "Qty. to Invoice",Currency."Amount Rounding Precision") *
    (1 - ("Line Discount %" / 100)),Currency."Amount Rounding Precision") *
    (PrepaymentPct / 100) / (1 + (VATPct / 100)),Currency."Amount Rounding Precision") *
    (1 + (VATPct / 100)),Currency."Amount Rounding Precision"));
    END;
    
  7. Modificați codul din declanșatorul OnRun din unitatea de cod "Vânzări-Post" (80), după cum urmează:
    Cod existent

    ...
    ItemJnlRollRndg := FALSE;
    LineCount := LineCount + 1;
    Window.UPDATE(2,LineCount);
    IF Invoice AND (NOT GLSetup."Allow VAT Date Change in Lines") THEN
    SalesLine."VAT Date" := "VAT Date";
    IF SalesLine.Type = SalesLine.Type::"Charge (Item)" THEN BEGIN
    SalesLine.TESTFIELD(Amount);
    SalesLine.TESTFIELD("Job No.",'');
    SalesLine.TESTFIELD("Job Contract Entry No.",0);
    END;
    ...
    

    Codul de înlocuire

    ...
    ItemJnlRollRndg := FALSE;
    LineCount := LineCount + 1;
    Window.UPDATE(2,LineCount);
    IF Invoice AND (NOT GLSetup."Allow VAT Date Change in Lines") THEN
    SalesLine."VAT Date" := "VAT Date";
    
    // Add the following lines. 
    IF Invoice THEN
    IF SalesHeader."Prepayment Type" = SalesHeader."Prepayment Type"::Advance THEN
    TestPrepmtAmount;
    // End of the added lines. 
    
    IF SalesLine.Type = SalesLine.Type::"Charge (Item)" THEN BEGIN
    SalesLine.TESTFIELD(Amount);
    SalesLine.TESTFIELD("Job No.",'');
    SalesLine.TESTFIELD("Job Contract Entry No.",0);
    END;
    ...
    
  8. Creați o nouă funcție TestPrepmtAmount în unitatea de cod "Vânzări-Postare" (80), după cum urmează:

    PROCEDURE TestPrepmtAmount@1470003();
    VAR
    AllowedQtyToShip@1470000 : Decimal;
    SalesAdvLetterHeader@1470001 : Record 26585;
    BEGIN
    WITH SalesLine DO BEGIN
    IF ("Prepmt. Line Amount" = 0) OR (Quantity = 0) THEN
    EXIT;
    SalesAdvLetterHeader.SETRANGE("Order No.","Document No.");
    IF NOT SalesAdvLetterHeader.ISEMPTY THEN BEGIN
    AllowedQtyToShip :=
    ROUND(
    ("Line Amount" - "Prepmt. Line Amount" + "Prepmt. Amt. Inv.") /
    "Line Amount" * Quantity - "Quantity Invoiced",0.00001);
    IF "Qty. to Ship" > AllowedQtyToShip THEN
    FIELDERROR("Qty. to Ship",STRSUBSTNO(Text047,AllowedQtyToShip));
    END;
    END;
    END;
    
  9. Modificați codul din declanșatorul OnRun din unitatea de cod "Purch.-Post" (90), după cum urmează:
    Cod existent

    ...
    IF GUIALLOWED THEN
    Window.UPDATE(2,LineCount);
    IF Invoice AND (NOT GLSetup."Allow VAT Date Change in Lines") THEN
    PurchLine."VAT Date" := "VAT Date";
    IF Invoice THEN
    TestPrepmtAmount;
    IF PurchLine.Type = PurchLine.Type::"Charge (Item)" THEN BEGIN
    PurchLine.TESTFIELD(Amount);
    PurchLine.TESTFIELD("Job No.",'');
    END;
    ...
    

    Codul de înlocuire

    ...
    IF GUIALLOWED THEN
    Window.UPDATE(2,LineCount);
    IF Invoice AND (NOT GLSetup."Allow VAT Date Change in Lines") THEN
    PurchLine."VAT Date" := "VAT Date";
    IF Invoice THEN
    
    // Add the following line.
    IF PurchHeader."Prepayment Type" = PurchHeader."Prepayment Type"::Advance THEN
    
    TestPrepmtAmount;
    IF PurchLine.Type = PurchLine.Type::"Charge (Item)" THEN BEGIN
    PurchLine.TESTFIELD(Amount);
    PurchLine.TESTFIELD("Job No.",'');
    END;
    ...
    
  10. Ștergeți funcția TestPrepmtAmount și creați-o din nou în unitatea de cod "Sales-Post" (80), după cum urmează:

    LOCAL PROCEDURE TestPrepmtAmount@55();
    VAR
    AllowedQtyToReceive@1470000 : Decimal;
    PurchAdvLetterHeader@147001 : Record 26587;
    BEGIN
    WITH PurchLine DO BEGIN
    IF ("Prepmt. Line Amount" = 0) OR (Quantity = 0) THEN
    EXIT;
    
    PurchAdvLetterHeader.SETRANGE("Order No.","Document No.");
    IF NOT PurchAdvLetterHeader.ISEMPTY THEN BEGIN
    AllowedQtyToReceive :=
    ROUND(
    ("Line Amount" - "Prepmt. Line Amount" + "Prepmt. Amt. Inv.") /
    "Line Amount" * Quantity - "Quantity Invoiced",0.00001);
    IF "Qty. to Receive" > AllowedQtyToReceive THEN
    FIELDERROR("Qty. to Receive",STRSUBSTNO(Text047,AllowedQtyToReceive));
    END;
    END;
    END;
    
  11. Modificați codul din funcția TestSalesPrepayment din unitatea de cod "Managementul aprobărilor" (439), după cum urmează:
    Cod existent

    ...
    SalesLines.SETRANGE("Document Type",SalesHeader."Document Type");
    SalesLines.SETRANGE("Document No.",SalesHeader."No.");
    SalesLines.SETFILTER("Prepmt. Line Amount",'<>%1',0);
    IF SalesLines.FIND('-') THEN BEGIN
    REPEAT
    ...
    

    Codul de înlocuire

    ...
    // Add the following lines.
    IF SalesHeader."Prepayment Type" = SalesHeader."Prepayment Type"::Advance THEN
    EXIT(IsNotInvoicedSalesAdvLetter(SalesHeader."No."));
    // End of the added lines. 
    
    SalesLines.SETRANGE("Document Type",SalesHeader."Document Type");
    SalesLines.SETRANGE("Document No.",SalesHeader."No.");
    SalesLines.SETFILTER("Prepmt. Line Amount",'<>%1',0);
    IF SalesLines.FIND('-') THEN BEGIN
    REPEAT
    ...
    
  12. Modificați codul din funcția TestPurchasePrepayment din unitatea de cod "Gestionarea aprobărilor" (439), după cum urmează:
    Cod existent

    ...
    PurchaseLines.SETRANGE("Document Type",PurchaseHeader."Document Type");
    PurchaseLines.SETRANGE("Document No.",PurchaseHeader."No.");
    PurchaseLines.SETFILTER("Prepmt. Line Amount",'<>%1',0);
    IF PurchaseLines.FIND('-') THEN BEGIN
    REPEAT
    ...
    

    Codul de înlocuire

    ...
    // Add the following lines.
    IF PurchaseHeader."Prepayment Type" = PurchaseHeader."Prepayment Type"::Advance THEN
    EXIT(IsNotInvoicedPurchAdvLetter(PurchaseHeader."No."));
    // End of the added lines. 
    
    PurchaseLines.SETRANGE("Document Type",PurchaseHeader."Document Type");
    PurchaseLines.SETRANGE("Document No.",PurchaseHeader."No.");
    PurchaseLines.SETFILTER("Prepmt. Line Amount",'<>%1',0);
    IF PurchaseLines.FIND('-') THEN BEGIN
    REPEAT
    ...
    
  13. Creați o nouă funcție locală IsNotInvoicedSalesAdvLetter în unitatea de cod "Gestionarea aprobărilor" (439), după cum urmează:

    LOCAL PROCEDURE IsNotInvoicedSalesAdvLetter@38(SalesOrderNo@1170000000 : Code[30]) : Boolean;
    VAR
    SalesAdvLetterHeader@1001 : Record 26585;
    SalesAdvLetterLine@1002 : Record 26586;
    BEGIN
    WITH SalesAdvLetterHeader DO BEGIN
    SETRANGE("Order No.",SalesOrderNo);
    IF FIND('-') THEN
    REPEAT
    SalesAdvLetterLine.SETRANGE("Letter No.","No.");
    IF SalesAdvLetterLine.FIND('-') THEN
    REPEAT
    IF SalesAdvLetterLine."Amount Including VAT" <> SalesAdvLetterLine."Amount Invoiced" THEN
    EXIT(TRUE);
    UNTIL SalesAdvLetterLine.NEXT = 0;
    UNTIL NEXT = 0;
    END;
    END;
    
  14. Creați o nouă funcție locală IsNotInvoicedPurchAdvLetter în unitatea de cod "Gestionarea aprobărilor" (439), după cum urmează:

    LOCAL PROCEDURE IsNotInvoicedPurchAdvLetter@39(PurchOrderNo@1170000000 : Code[30]) : Boolean;
    VAR
    PurchAdvLetterHeader@1001 : Record 26587;
    PurchAdvLetterLine@1002 : Record 26588;
    BEGIN
    WITH PurchAdvLetterHeader DO BEGIN
    SETRANGE("Order No.",PurchOrderNo);
    IF FIND('-') THEN
    REPEAT
    PurchAdvLetterLine.SETRANGE("Letter No.","No.");
    IF PurchAdvLetterLine.FIND('-') THEN
    REPEAT
    IF PurchAdvLetterLine."Amount Including VAT" <> PurchAdvLetterLine."Amount Invoiced" THEN
    EXIT(TRUE);
    UNTIL PurchAdvLetterLine.NEXT = 0;
    UNTIL NEXT = 0;
    END;
    END;
    

Cerințe preliminare

Trebuie să aveți versiunea est-europeană de Microsoft Dynamics NAV 2009 R2 instalată pentru a aplica această remediere rapidă.

Eliminarea informațiilor

Nu puteți elimina această remediere rapidă.

Stare

Microsoft a confirmat că aceasta este o problemă în produsele Microsoft care sunt listate în secțiunea „Se aplică la”.

Notă: Acesta este un articol "PUBLICARE RAPIDĂ" creat direct din cadrul organizației de asistență Microsoft. Informațiile din acest document sunt furnizate ca atare ca răspuns la problemele apărute. Ca urmare a vitezei de punere la dispoziție, materialele pot include erori tipografice și pot fi revizuite în orice moment fără preaviz. Consultați Condițiile de utilizare pentru alte considerente.