Questo articolo si applica a Microsoft Dynamics NAV per le impostazioni locali della lingua spagnola (es).
Se si utilizzano due gruppi di registrazione prodotti IVA nella versione spagnola di Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1), la dichiarazione 349 mostra un risultato errato. Questo problema si verifica se si utilizza o meno il servizio UE nella configurazione della registrazione IVA.
Sintomi
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 5.0 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.
Risoluzione
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:
Modificare il codice nelle sezioni Numero elemento di dati 5 nel report Dichiarazione 349 (88)) come segue:
Codice esistente 1... SectionType=GroupFooter; SectionWidth=15600; SectionHeight=423; // Delete the following line. OnPostSection=BEGIN CustVendCountry.GET("Country/Region Code"); CustVendVatRegNo := COPYSTR("VAT Registration No.",1,CustVendCountry."VAT Registration No. digits"); OpTriang := ' '; ...Codice di sostituzione 1
... SectionType=GroupFooter; SectionWidth=15600; SectionHeight=423; // Add the following lines. OnPostSection=VAR SalesInvLine@1100300 : Record 113; SalesInvHeader@1100301 : Record 112; BEGIN // End of the lines. CustVendCountry.GET("Country/Region Code"); CustVendVatRegNo := COPYSTR("VAT Registration No.",1,CustVendCountry."VAT Registration No. digits"); OpTriang := ' '; ...Codice esistente 2
... AccumOrigDeclAmountEUService := 0; AccumPrevDeclAmountTri := 0; AccumOrigDeclAmountTri := 0; Customer2.RESET; Customer2.SETRANGE(Customer2."VAT Registration No.","VAT Registration No."); ...Codice di sostituzione 2
... AccumOrigDeclAmountEUService := 0; AccumPrevDeclAmountTri := 0; AccumOrigDeclAmountTri := 0; Customer2.RESET; Customer2.SETRANGE(Customer2."VAT Registration No.","VAT Registration No."); ...Codice esistente 3
... AccumOrigDeclAmountEUService := 0; AccumPrevDeclAmountTri := 0; AccumOrigDeclAmountTri := 0; Customer2.RESET; Customer2.SETRANGE(Customer2."VAT Registration No.","VAT Registration No."); ...Codice di sostituzione 3
... AccumOrigDeclAmountEUService := 0; AccumPrevDeclAmountTri := 0; AccumOrigDeclAmountTri := 0; // Add the following lines. NoTaxableNormalAmount := 0; NoTaxableAmountOpTri := 0; NoTaxableAmountEUService := 0; // End of the lines. Customer2.RESET; Customer2.SETRANGE(Customer2."VAT Registration No.","VAT Registration No."); ...Codice esistente 4
... RectPeriod := '0'; UNTIL CustVendWarning349.NEXT = 0; //END; UNTIL Customer2.NEXT = 0; IF "VAT Registration No." <> '' THEN BEGIN ...Codice di sostituzione 4
... RectPeriod := '0'; UNTIL CustVendWarning349.NEXT = 0; //END; // Add the following lines. SalesInvLine.RESET; SalesInvLine.SETRANGE("Bill-to Customer No.",Customer2."No."); SalesInvLine.SETRANGE("Posting Date",FromDate,ToDate); SalesInvLine.SETRANGE("VAT Calculation Type",SalesInvLine."VAT Calculation Type"::"No Taxable VAT"); SalesInvLine.SETFILTER("Gen. Prod. Posting Group", FilterString); IF SalesInvLine.FINDSET THEN REPEAT IF VATPostingSetup.GET(SalesInvLine."VAT Bus. Posting Group",SalesInvLine."VAT Prod. Posting Group") THEN IF VATPostingSetup."EU Service" THEN NoTaxableAmountEUService := NoTaxableAmountEUService + SalesInvLine."Line Amount" ELSE IF SalesInvHeader.GET(SalesInvLine."Document No.") THEN IF SalesInvHeader."EU 3-Party Trade" THEN NoTaxableAmountOpTri := NoTaxableAmountOpTri + SalesInvLine."Line Amount" ELSE NoTaxableNormalAmount := NoTaxableNormalAmount + SalesInvLine."Line Amount" UNTIL SalesInvLine.NEXT = 0; // End of the lines. UNTIL Customer2.NEXT = 0; IF "VAT Registration No." <> '' THEN BEGIN ...Codice esistente 5
... IF "VAT Registration No." <> '' THEN BEGIN IF NormalAmount < 0 THEN NormalAmount := -NormalAmount; IF CorrIncludedForNormalAmount OR (NormalAmount <> 0) THEN BEGIN TextAmount := COPYSTR(FormatTextAmt(NormalAmount),3,13); Txt := ...Codice di sostituzione 5
... IF "VAT Registration No." <> '' THEN BEGIN IF NormalAmount < 0 THEN NormalAmount := -NormalAmount; // Add the following line. NormalAmount := NormalAmount + NoTaxableNormalAmount; IF CorrIncludedForNormalAmount OR (NormalAmount <> 0) THEN BEGIN TextAmount := COPYSTR(FormatTextAmt(NormalAmount),3,13); Txt := ...Codice esistente 6
... END; IF AmountOpTri < 0 THEN AmountOpTri := -AmountOpTri; IF CorrIncludedForOpTriAmount OR (AmountOpTri <> 0) THEN BEGIN TextAmount := COPYSTR(FormatTextAmt(AmountOpTri),3,13); Txt := ...Codice di sostituzione 6
... END; IF AmountOpTri < 0 THEN AmountOpTri := -AmountOpTri; // Add the following line. AmountOpTri := AmountOpTri + NoTaxableAmountOpTri; IF CorrIncludedForOpTriAmount OR (AmountOpTri <> 0) THEN BEGIN TextAmount := COPYSTR(FormatTextAmt(AmountOpTri),3,13); Txt := ...Codice esistente 7
... END; IF AmountEUService < 0 THEN AmountEUService := -AmountEUService; IF CorrIncludedForEUServiceAmount OR (AmountEUService <> 0) THEN BEGIN TextAmount := COPYSTR(FormatTextAmt(AmountEUService),3,13); CustVendCountry.GET(Customer2."Country/Region Code"); ...Codice di sostituzione 7
... END; IF AmountEUService < 0 THEN AmountEUService := -AmountEUService; // Add the following line. AmountEUService := AmountEUService + NoTaxableAmountEUService; IF CorrIncludedForEUServiceAmount OR (AmountEUService <> 0) THEN BEGIN TextAmount := COPYSTR(FormatTextAmt(AmountEUService),3,13); CustVendCountry.GET(Customer2."Country/Region Code"); ...Modificare il codice nelle sezioni Numero elemento di dati 6 nel report Dichiarazione 349 (88) come segue:
Codice esistente 1... SectionType=GroupFooter; SectionWidth=15600; SectionHeight=423; // Delete the following line. OnPostSection=BEGIN CustVendCountry.GET("Country/Region Code"); CustVendVatRegNo := COPYSTR("VAT Registration No.",1,CustVendCountry."VAT Registration No. digits"); OpTriang := ' '; ...Codice di sostituzione 1
... SectionType=GroupFooter; SectionWidth=15600; SectionHeight=423; // Add the following lines. OnPostSection=VAR PurchInvLine@1100302 : Record 123; BEGIN // End of the lines. CustVendCountry.GET("Country/Region Code"); CustVendVatRegNo := COPYSTR("VAT Registration No.",1,CustVendCountry."VAT Registration No. digits"); OpTriang := ' '; ...Codice esistente 2
... AccumOrigDeclAmountEUService := 0; AccumPrevDeclAmountTri := 0; AccumOrigDeclAmountTri := 0; Vendor2.RESET; Vendor2.SETRANGE(Vendor2."VAT Registration No.","VAT Registration No."); ...Codice di sostituzione 2
... AccumOrigDeclAmountEUService := 0; AccumPrevDeclAmountTri := 0; AccumOrigDeclAmountTri := 0; // Add the following lines. NoTaxableNormalAmount := 0; NoTaxableAmountEUService := 0; // End of the lines. Vendor2.RESET; Vendor2.SETRANGE(Vendor2."VAT Registration No.","VAT Registration No."); ...Codice esistente 3
... RectPeriod := '0'; UNTIL CustVendWarning349.NEXT = 0; END; UNTIL Vendor2.NEXT = 0; IF "VAT Registration No." <> '' THEN BEGIN ...Codice di sostituzione 3
... RectPeriod := '0'; UNTIL CustVendWarning349.NEXT = 0; END; // Add the following lines. PurchInvLine.RESET; PurchInvLine.SETRANGE("Pay-to Vendor No.",Vendor2."No."); PurchInvLine.SETRANGE("Posting Date",FromDate,ToDate); PurchInvLine.SETRANGE("VAT Calculation Type",PurchInvLine."VAT Calculation Type"::"No Taxable VAT"); PurchInvLine.SETFILTER("Gen. Prod. Posting Group", FilterString); IF PurchInvLine.FINDSET THEN REPEAT IF VATPostingSetup.GET(PurchInvLine."VAT Bus. Posting Group",PurchInvLine."VAT Prod. Posting Group") THEN IF VATPostingSetup."EU Service" THEN NoTaxableAmountEUService := NoTaxableAmountEUService + PurchInvLine."Line Amount" ELSE NoTaxableNormalAmount := NoTaxableNormalAmount + PurchInvLine."Line Amount" UNTIL PurchInvLine.NEXT = 0; // End of the lines. UNTIL Vendor2.NEXT = 0; IF "VAT Registration No." <> '' THEN BEGIN ...Codice esistente 4
... IF "VAT Registration No." <> '' THEN BEGIN IF NormalAmount < 0 THEN NormalAmount := -NormalAmount; IF CorrIncludedForNormalAmount OR (NormalAmount <> 0) THEN BEGIN TextAmount := COPYSTR(FormatTextAmt(NormalAmount),3,13); Txt := ...Codice di sostituzione 4
... IF "VAT Registration No." <> '' THEN BEGIN IF NormalAmount < 0 THEN NormalAmount := -NormalAmount; // Add the following line. NormalAmount := NormalAmount + NoTaxableNormalAmount; IF CorrIncludedForNormalAmount OR (NormalAmount <> 0) THEN BEGIN TextAmount := COPYSTR(FormatTextAmt(NormalAmount),3,13); Txt := ...Codice esistente 5
... END; IF AmountEUService < 0 THEN AmountEUService := -AmountEUService; IF CorrIncludedForEUServiceAmount OR (AmountEUService <> 0) THEN BEGIN TextAmount := COPYSTR(FormatTextAmt(AmountEUService),3,13); CustVendCountry.GET(Customer2."Country/Region Code"); ...Codice di sostituzione 5
... END; IF AmountEUService < 0 THEN AmountEUService := -AmountEUService; // Add the following line. AmountEUService := AmountEUService + NoTaxableAmountEUService; IF CorrIncludedForEUServiceAmount OR (AmountEUService <> 0) THEN BEGIN TextAmount := COPYSTR(FormatTextAmt(AmountEUService),3,13); CustVendCountry.GET(Customer2."Country/Region Code"); ...Modificare il codice nelle variabili globali nel report Dichiarazione 349 (88) come segue:
Codice esistente... CorrIncludedForNormalAmount@1100063 : Boolean; CorrIncludedForOpTriAmount@1100070 : Boolean; CorrIncludedForEUServiceAmount@1100071 : Boolean; PROCEDURE FormatTextAmt@1100101(Amount@1100100 : Decimal) : Text[15]; VAR ...Codice sostitutivo
... CorrIncludedForNormalAmount@1100063 : Boolean; CorrIncludedForOpTriAmount@1100070 : Boolean; CorrIncludedForEUServiceAmount@1100071 : Boolean; // Add the following lines. NoTaxableNormalAmount@1100304 : Decimal; NoTaxableAmountOpTri@1100305 : Decimal; NoTaxableAmountEUService@1100306 : Decimal; VATPostingSetup@1100307 : Record 325; // End of the lines. PROCEDURE FormatTextAmt@1100101(Amount@1100100 : Decimal) : Text[15]; VAR ...
Prerequisiti
Per applicare questo hotfix è necessaria la versione spagnola di Microsoft Dynamics NAV 5.0 Service Pack 1.
Informazioni sulla rimozione
Non è possibile rimuovere questo hotfix.
Microsoft ha confermato che si tratta di un problema relativo ai prodotti elencati nella sezione "Si applica a".
Stato
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 .