Il valore "Termine medio ponderato superato" non è corretto quando si esegue il report "Fornitore - Pagamenti scaduto" (10748) dopo l'applicazione di hotfix 2710511 nella versione spagnola di Microsoft Dynamics NAV 2009

Si applica a
Microsoft Dynamics NAV 2009 R2 Dynamics NAV 2009 Service Pack 1

Questo articolo si applica a Microsoft Dynamics NAV per le impostazioni locali della lingua spagnola (es).

Sintomi

Si supponga di applicare hotfix 2710511 nella versione spagnola di Microsoft Dynamics NAV 2009. Quando si esegue il report "Fornitore - Scaduto Pagamenti" (10748), il termine medio ponderato superato non è corretto. Il termine medio ponderato superato valore include il valore per le fatture aperte in modo non corretto. Questo problema si verifica nei prodotti seguenti:

  • La versione spagnola di Microsoft Dynamics NAV 2009 R2
  • Versione spagnola di Microsoft Dynamics NAV 2009 Service Pack 1

Per altre informazioni sui 2710511 di aggiornamento rapido, fare clic sul numero dell'articolo seguente per visualizzare l'articolo della Microsoft Knowledge Base:

2710511 Gli importi di pagamento e gli importi di pagamento aperti sono misti e visualizzati nella sezione "Pagamenti al di fuori del limite legale" nel report Pagamenti Fornitore scaduto (10748) in modo non corretto nella versione spagnola di Microsoft Dynamics NAV

Risoluzione

Informazioni sull'aggiornamento rapido

È ora disponibile un hotfix supportato da Microsoft. Tuttavia, è destinato solo a correggere il problema descritto in questo articolo. Applicala solo ai sistemi che stanno riscontrando questo problema specifico. Questo hotfix potrebbe ricevere ulteriori test. Pertanto, se non sei gravemente interessato da questo problema, ti consigliamo di attendere il prossimo Service Pack di Microsoft Dynamics NAV 2009 o la prossima versione di Microsoft Dynamics NAV che contiene questo hotfix.

Nota In casi speciali, gli addebiti normalmente sostenuti per le chiamate al supporto tecnico possono essere annullati se un professionista del supporto tecnico per Microsoft Dynamics e i prodotti correlati determinano che un aggiornamento specifico risolverà il problema. I soliti costi del supporto verranno applicati a domande e problemi di supporto aggiuntivi che non sono idonei per l'aggiornamento specifico in questione.

            
          

Informazioni sull'installazione

Microsoft fornisce esempi di programmazione a titolo puramente illustrativo, senza alcuna garanzia espressa o implicita. Ciò include, a titolo esemplificativo e non esaustivo, le garanzie implicite di commerciabilità o idoneità a uno scopo particolare. Questo articolo presuppone che si abbia familiarità con il linguaggio di programmazione oggetto della dimostrazione e con gli strumenti utilizzati per la creazione e il debug delle procedure. I tecnici del supporto Tecnico Microsoft possono spiegare le funzionalità di una particolare procedura, ma non modificarli per fornire funzionalità aggiuntive o creare procedure in base a specifici requisiti.

Nota Prima di installare questo hotfix, verificare che tutti gli utenti client di Microsoft Navision siano disconnessi dal sistema. Sono inclusi gli utenti client di Microsoft Navision Application Services (NAS). Dovresti essere l'unico utente client connesso quando implementi questo hotfix.

Per implementare questo hotfix, è necessario disporre di una licenza per sviluppatori.

È consigliabile assegnare l'ID ruolo "SUPER" all'account utente nella finestra Accessi di Windows o nella finestra Accessi database. Se all'account utente non è possibile assegnare l'ID ruolo "SUPER", è necessario verificare che l'account utente disponga delle autorizzazioni seguenti:

  • Autorizzazione modifica per l'oggetto che si desidera modificare.
  • Autorizzazione Execute per l'oggetto System Object ID 5210 e per l'oggetto System Object ID 9015.

                
Nota: non è necessario disporre dei diritti per gli archivi dati a meno che non sia necessario eseguire il ripristino dei dati.

Modifiche al codice

Nota Verifica sempre le correzioni del codice in un ambiente controllato prima di applicare le correzioni ai computer di produzione.
Per risolvere il problema, attenersi alla procedura seguente:

  1. Modificare il codice nel numero di elemento di dati 1 nel report Cliente - Scaduto Pagamenti (10747) come segue:
    Exisiting code 1

    ...
    ESP=Plazo medio ponderado superado:];
    
    // Delete the following line.
    SourceExpr=CustWeightedExceededAmount / ABS(CustTotalAmount);
    
    DataSetFieldName=CustTotalAmounts_WeightedExceededAmount }
    ...
    

    Codice di sostituzione 1

    ...
    ESP=Plazo medio ponderado superado:];
    
    // Add the following line.
    SourceExpr=CalcWeightedExceededAmt;
    
    DataSetFieldName=CustTotalAmounts_WeightedExceededAmount }
    ...
    

    Codice esistente 2

    ...
    ESP=Plazo medio ponderado superado:];
    
    // Delete the following line.
    SourceExpr=TotalWeightedExceededAmount / ABS(TotalAmount);
    
    DataSetFieldName=TotalAmounts_WeightedExceededAmount }
    ...
    

    Codice di sostituzione 2

    ...
    ESP=Plazo medio ponderado superado:];
    
    // Add the following line.
    SourceExpr=CalcTotalWeightedExceededAmt;
    
    DataSetFieldName=TotalAmounts_WeightedExceededAmount }
    ...
    
  2. Modificare il codice nel numero dell'elemento di dati 3 nel report Cliente - Scaduto Pagamenti (10747) come segue:
    Exisiting code

    ...
    IF AppldCustLedgEntryTmp."Entry Type" = AppldCustLedgEntryTmp."Entry Type"::"Initial Entry" THEN
    
    // Delete the following lines.
    AppldCustLedgEntryTmp."Posting Date" := 0D;
    CustDaysOverdue += DaysOverdue;
    CustWeightedExceededAmount += DaysOverdue * ABS(AppldCustLedgEntryTmp."Amount (LCY)");
    CustTotalAmount := CustPaymentOutsideDueDate + CustPaymentWithinDueDate;
    TotalDaysOverdue += DaysOverdue;
    TotalWeightedExceededAmount += DaysOverdue * ABS(AppldCustLedgEntryTmp."Amount (LCY)");
    // End of the lines.
    
    TotalAmount := TotalPaymentOutsideDueDate + TotalPaymentWithinDueDate;
    ...
    

    Codice sostitutivo

    ...
    IF AppldCustLedgEntryTmp."Entry Type" = AppldCustLedgEntryTmp."Entry Type"::"Initial Entry" THEN
    
    // Add the following lines.
    AppldCustLedgEntryTmp."Posting Date" := 0D
    ELSE BEGIN
    CustApplAmount += ABS(AppldCustLedgEntryTmp."Amount (LCY)");
    TotalApplAmount += ABS(AppldCustLedgEntryTmp."Amount (LCY)");
    CustWeightedExceededAmount += DaysOverdue * ABS(AppldCustLedgEntryTmp."Amount (LCY)");
    TotalWeightedExceededAmount += DaysOverdue * ABS(AppldCustLedgEntryTmp."Amount (LCY)");
    END;
    CustDaysOverdue += DaysOverdue;
    CustTotalAmount := CustPaymentOutsideDueDate + CustPaymentWithinDueDate;
    TotalDaysOverdue += DaysOverdue;
    // End of the lines.
    
    TotalAmount := TotalPaymentOutsideDueDate + TotalPaymentWithinDueDate;
    ...
    
  3. Modificare il codice nelle variabili globali nel report Cliente - Scaduto Pagamenti (10747) nel modo seguente:
    Exisiting code

    ...
    Text1100003@1100006 : TextConst 'ENU=The start date cannot be later than the end date.;ESP=La fecha de inicio no puede ser posterior a la fecha final.';
    CustTotalAmount@1100013 : Decimal;
    ...
    

    Codice sostitutivo

    ...
    Text1100003@1100006 : TextConst 'ENU=The start date cannot be later than the end date.;ESP=La fecha de inicio no puede ser posterior a la fecha final.';
    
    // Add the following lines.
    CustApplAmount@1100020 : Decimal;
    TotalApplAmount@1100012 : Decimal;
    // End of the lines.
    
    CustTotalAmount@1100013 : Decimal;
    ...
    
  4. Modificare il codice nella funzione ClearCustAmount nel report Customer - Scaduto Pagamenti (10747) come segue:
    Exisiting code

    ...
    CustPaymentWithinDueDate := 0;
    END;
    ...
    

    Codice sostitutivo

    ...
    CustPaymentWithinDueDate := 0;
    
    // Add the following lines.
    CustApplAmount := 0;
    END;
    LOCAL PROCEDURE CalcWeightedExceededAmt@1100000() : Decimal;
    BEGIN
    IF CustApplAmount = 0 THEN
    EXIT(0);
    EXIT(CustWeightedExceededAmount / ABS(CustApplAmount));
    END;
    LOCAL PROCEDURE CalcTotalWeightedExceededAmt@1100009() : Decimal;
    BEGIN
    IF TotalApplAmount = 0 THEN
    EXIT(0);
    EXIT(TotalWeightedExceededAmount / ABS(TotalApplAmount));
    // End of the lines.
    
    END;
    ...
    
  5. Modificare il codice nel campo Data Item Number 1 nel report Fornitore - Scaduto Pagamenti (10748) nel modo seguente:
    Exisiting code 1

    ...
    ESP=Plazo medio ponderado superado:];
    
    // Delete the following line.
    SourceExpr=VendWeightedExceededAmount / ABS(VendTotalAmount);
    
    DataSetFieldName=Vend_WeightedExceededAmount }
    ...
    

    Codice di sostituzione 1

    ...
    ESP=Plazo medio ponderado superado:];
    
    // Add the following line.
    SourceExpr=CalcWeightedExceededAmt;
    
    DataSetFieldName=Vend_WeightedExceededAmount }
    ...
    

    Codice esistente 2

    ...
    ESP=Plazo medio ponderado superado:];
    
    // Delete the following line.
    SourceExpr=TotalWeightedExceededAmount / ABS(TotalAmount);
    
    DataSetFieldName=Total_WeightedExceededAmount }
    ...
    

    Codice di sostituzione 2

    ...
    ESP=Plazo medio ponderado superado:];
    
    // Add the following line.
    SourceExpr=CalcTotalWeightedExceededAmt;
    
    DataSetFieldName=Total_WeightedExceededAmount }
    ...
    
  6. Modificare il codice nel campo Data Item Number 3 nel report Fornitore - Scaduto Pagamenti (10748) nel modo seguente:
    Exisiting code

    ...
    IF AppldVendLedgEntryTmp."Entry Type" = AppldVendLedgEntryTmp."Entry Type"::"Initial Entry" THEN
    
    // Delete the following lines.
    AppldVendLedgEntryTmp."Posting Date" := 0D;
    VendDaysOverdue += DaysOverdue;
    VendWeightedExceededAmount += DaysOverdue * ABS(AppldVendLedgEntryTmp."Amount (LCY)");
    VendTotalAmount := VendPaymentOutsideDueDate + VendPaymentWithinDueDate;
    TotalDaysOverdue += DaysOverdue;
    TotalWeightedExceededAmount += DaysOverdue * ABS(AppldVendLedgEntryTmp."Amount (LCY)");
    // End of the lines.
    
    TotalAmount := TotalPaymentOutsideDueDate + TotalPaymentWithinDueDate;
    ...
    

    Codice sostitutivo

    ...
    IF AppldVendLedgEntryTmp."Entry Type" = AppldVendLedgEntryTmp."Entry Type"::"Initial Entry" THEN
    
    // Add the following lines.
    AppldVendLedgEntryTmp."Posting Date" := 0D
    ELSE BEGIN
    VendApplAmount += ABS(AppldVendLedgEntryTmp."Amount (LCY)");
    TotalApplAmount += ABS(AppldVendLedgEntryTmp."Amount (LCY)");
    VendWeightedExceededAmount += DaysOverdue * ABS(AppldVendLedgEntryTmp."Amount (LCY)");
    TotalWeightedExceededAmount += DaysOverdue * ABS(AppldVendLedgEntryTmp."Amount (LCY)");
    END;
    VendDaysOverdue += DaysOverdue;
    VendTotalAmount := VendPaymentOutsideDueDate + VendPaymentWithinDueDate;
    TotalDaysOverdue += DaysOverdue;
    // End of the lines.
    
    TotalAmount := TotalPaymentOutsideDueDate + TotalPaymentWithinDueDate;
    ...
    
  7. Modificare il codice nelle variabili globali nel report Fornitore - Scaduto Pagamenti (10748) nel modo seguente:
    Exisiting code

    ...
    Text1100003@1100006 : TextConst 'ENU=The start date cannot be later than the end date.;ESP=La fecha de inicio no puede ser posterior a la fecha final.';
    VendTotalAmount@1100011 : Decimal;
    ...
    

    Codice sostitutivo

    ...
    Text1100003@1100006 : TextConst 'ENU=The start date cannot be later than the end date.;ESP=La fecha de inicio no puede ser posterior a la fecha final.';
    
    // Add the following lines.
    VendApplAmount@1100002 : Decimal;
    TotalApplAmount@1100020 : Decimal;
    // End of the lines.
    
    VendTotalAmount@1100011 : Decimal;
    ...
    
  8. Modificare il codice nella funzione ClearVendAmount nel report Vendor - Scaduto Pagamenti (10748) come segue:
    Exisiting code

    ...
    VendPaymentWithinDueDate := 0;
    END;
    ...
    

    Codice sostitutivo

    ...
    VendPaymentWithinDueDate := 0;
    
    // Add the following lines.
    VendApplAmount := 0;
    END;
    LOCAL PROCEDURE CalcWeightedExceededAmt@1100000() : Decimal;
    BEGIN
    IF VendApplAmount = 0 THEN
    EXIT(0);
    EXIT(VendWeightedExceededAmount / ABS(VendApplAmount));
    END;
    LOCAL PROCEDURE CalcTotalWeightedExceededAmt@1100009() : Decimal;
    BEGIN
    IF TotalApplAmount = 0 THEN
    EXIT(0);
    EXIT(TotalWeightedExceededAmount / ABS(TotalApplAmount));
    // End of the lines.
    
    END;
    ...
    

Prerequisiti

Per applicare questo hotfix, è necessario che sia installato uno dei prodotti seguenti:

  • La versione spagnola di Microsoft Dynamics NAV 2009 R2
  • Versione spagnola di Microsoft Dynamics NAV 2009 Service Pack 1

Informazioni sulla rimozione

Non è possibile rimuovere questo hotfix.

Stato

Microsoft ha confermato che si tratta di un problema relativo ai prodotti elencati nella sezione "Si applica a".

Nota Questo è un articolo "FAST PUBLISH" creato direttamente dall'organizzazione di supporto Microsoft. Le informazioni contenute nel presente documento vengono fornite così come sono in risposta ai problemi emergenti. A causa della velocità di reso disponibile, i materiali possono includere errori tipografici e possono essere modificati in qualsiasi momento senza preavviso. Per altre considerazioni, vedere Condizioni per l'utilizzo .