Symptomer
Hvis perioden og regnskapsåret er det samme i en kreditnota og en faktura, og Kreditnotabeløp er høyere enn fakturabeløpet, 349 deklarasjon eksporterer beløpet som positive beløp å deklarere i den spanske versjonen av Microsoft Dynamics NAV 2009. Det skal eksporteres i stedet som et korreksjonsbeløp. Følg trinnene i delen kodeendringer for å løse dette problemet. Dette problemet oppstår i følgende produkter:
-
Den spanske versjonen av Microsoft Dynamics NAV 2009 R2
-
Den spanske versjonen av Microsoft Dynamics NAV 2009 SP1
Oppløsning
Informasjon om hurtigreparasjon
En støttet hurtigreparasjon er nå tilgjengelig fra Microsoft. Det er imidlertid bare ment å løse problemet som er beskrevet i denne artikkelen. Bruk den bare på systemer som har dette bestemte problemet. Denne hurtigreparasjonen kan gjennomgå ytterligere testing. Hvis du ikke er alvorlig påvirket av dette problemet, anbefaler vi derfor at du venter på neste oppdateringspakke for Microsoft Dynamics NAV 2009 eller den neste versjonen av Microsoft Dynamics NAV som inneholder denne hurtigreparasjonen.
Obs! I spesielle tilfeller avgifter som vanligvis påløper for støtte samtaler kan avbrytes hvis en kundestøttemedarbeider for Microsoft Dynamics og beslektede produkter avgjør at en bestemt oppdatering løser problemet. Vanlige kundestøttekostnader gjelder for ytterligere kundestøttespørsmål og problemer som ikke dekkes av den gjeldende oppdateringen.
Installasjonsinformasjon
Microsoft bruker ment som eksempler, uten garanti, verken direkte eller indirekte. Dette inkluderer, men er ikke begrenset til, eventuelle stilltiende garantier om salgbarhet eller anvendelighet for særskilte formål. Denne artikkelen forutsetter at du er kjent med programmeringsspråket som anvendes, og verktøyene som brukes til å opprette og feilsøke prosedyrer. Microsofts kundestøtteteknikere kan hjelpe deg med å forklare funksjonaliteten til en bestemt prosedyre. De endrer imidlertid ikke disse eksemplene for å lage forbedret funksjonalitet eller lage prosedyrer som dekker dine spesifikke behov.
Obs! Før du installerer denne hurtigreparasjonen, må du kontrollere at alle brukerne i Microsoft Dynamics NAV-klienten er logget av systemet. Dette inkluderer tjenester for Microsoft Dynamics NAV Application Server (NAS). Du skal bare klient-brukeren som er logget på når du implementerer denne hurtigreparasjonen.
Hvis du vil implementere denne hurtigreparasjonen, må du ha en utviklerlisens.
Vi anbefaler at kontoen i vinduet Windows-pålogging eller i vinduet Database-pålogging være tildelt "SUPER" rolle-ID. Hvis brukerkontoen ikke kan tilordnes "SUPER" rolle-IDen, må du kontrollere at brukerkontoen har følgende tillatelser:
-
Endre-tillatelse for objektet du vil endre.
-
Tilgangsnivået for systemet objekt-IDen til 5210 objektet og systemet objekt-ID-9015
-objektet.
Obs! Du har ikke tilgangsrettigheter til datalagre med mindre du har til å utføre data reparasjon.
Kodeendringer
Obs! Alltid løser teste koden i et kontrollert miljø før du installerer hurtigreparasjoner til produksjonsdatamaskiner for.
Hvis du vil løse dette problemet, gjør du følgende:
-
Endre koden i Data elementet nummer 5 i rapporten gjør 349-deklarering (10710) som følger:
Eksisterende kode 1...VATEntry@1100001 : Record 254;
Amount@1100000 : ARRAY [3] OF Decimal;
AccPrevDeclAmount@1100005 : ARRAY [3] OF Decimal;
AccOrigDeclAmount@1100004 : ARRAY [3] OF Decimal;
i@1100002 : Integer;
BEGIN
// es0014.begin
WHILE (Customer."VAT Registration No." = PreVATRegNo) OR (Customer."VAT Registration No." = '') DO // ES0032
IF Customer.NEXT = 0 THEN
EXIT;
...Ny kode 1
...VATEntry@1100001 : Record 254;
Amount@1100000 : ARRAY [3] OF Decimal;
AccPrevDeclAmount@1100005 : ARRAY [3] OF Decimal;
AccOrigDeclAmount@1100004 : ARRAY [3] OF Decimal;
i@1100002 : Integer;
// Add the following lines.
CreditMemoOrgDeclaredAmt@1100003 : Decimal;
CreditMemoAmt@1100006 : Decimal;
AppliedAmt@1100008 : Decimal;
IsCreditMomoPrinted@1100007 : Boolean;
// End of the added lines.
BEGIN
// es0014.begin
WHILE (Customer."VAT Registration No." = PreVATRegNo) OR (Customer."VAT Registration No." = '') DO // ES0032
IF Customer.NEXT = 0 THEN
EXIT;
...Eksisterende kode 2
...IF CustVendWarning349."EU 3-Party Trade" THEN BEGIN
AmountOpTri := AmountOpTri + CustVendWarning349."Original Declared Amount";
CorrIncludedForOpTriAmount := TRUE;
END ELSE BEGIN
VATEntry.GET(CustVendWarning349."VAT Entry No.");
// Delete the following line.
SummarizeBaseAmount(VATEntry,CustVendWarning349."Original Declared Amount",Amount);
// End of the deleted line.
CorrIncludedForNormalAmount := TRUE;
END;
END;
// es0033.end
END;
...Ny kode 2
... IF CustVendWarning349."EU 3-Party Trade" THEN BEGIN
AmountOpTri := AmountOpTri + CustVendWarning349."Original Declared Amount";
CorrIncludedForOpTriAmount := TRUE;
END ELSE BEGIN
VATEntry.GET(CustVendWarning349."VAT Entry No.");
// Add the following lines.
IF ABS(Amount[1]) >= GetTotalCreditMemoAmt - AppliedAmt THEN BEGIN
AppliedAmt += ABS(Amount[1]);
SummarizeBaseAmount(VATEntry,CustVendWarning349."Original Declared Amount",Amount);
AppliedAmt -= ABS(Amount[1]);
END ELSE BEGIN
CreditMemoOrgDeclaredAmt += CustVendWarning349."Original Declared Amount";
CreditMemoAmt += VATEntry.Base;
NoOfCorrections += 1;
IsCreditMomoPrinted := TRUE;
END;
// End of the added lines.
CorrIncludedForNormalAmount := TRUE;
END;
END;
// es0033.end
END;
...Eksisterende kode 3
... 'S' + CONVERTSTR(TextAmount,' ','0') + PADSTR('',354,' ');
NoOperations := NoOperations + 1;
TotalAmtShip := TotalAmtShip + AmountEUService;
OutFile.WRITE(Txt);
END;
// es0033.end
END;
END;
// es0014.end
END;
...Ny kode 3
... 'S' + CONVERTSTR(TextAmount,' ','0') + PADSTR('',354,' ');
NoOperations := NoOperations + 1;
TotalAmtShip := TotalAmtShip + AmountEUService;
OutFile.WRITE(Txt);
END;
// Add the following lines.
IF IsCreditMomoPrinted THEN BEGIN
TextAmount2 := COPYSTR(FormatTextAmt(ABS(CreditMemoOrgDeclaredAmt)),3,13);
TextAmount := COPYSTR(FormatTextAmt(ABS(CreditMemoAmt)),3,13);
CustVendCountry.GET(Customer2."Country/Region Code");
Txt :=
'2' + '349' + FiscalYear + PADSTR(VatRegNo,9,' ') + PADSTR('',58,' ') +
FORMAT(CustVendCountry."EU Country/Region Code",2) + FORMAT(CustVendVatRegNo,15) +
PADSTR(CONVERTSTR(UPPERCASE(Customer2.Name),'µ·ÔÖÞàãé륚€()"&ï','AAEEIIOOUUÑUÇ '),40,' ') +
'E' + PADSTR('',13,' ') + CustVendWarning349."Original Declaration FY" +
CustVendWarning349."Original Declaration Period" + TextAmount2 + TextAmount +
PADSTR('',322,' ');
NoOperations += 1;
TotalAmtShip += AmountEUService;
OutFile.WRITE(Txt);
END;
// End of the added lines.
// es0033.end
END;
END;
// es0014.end
END;
... -
Endre koden i Data element nummer 6 i rapporten gjør 349-deklarering (10710) som følger:
Eksisterende kode 1... PreVATRegNo := '';
// es0014.end
// es0013.end
END;
// Delete the following line.
OnAfterGetRecord=BEGIN
// End of the deleted line.
// es0014.begin
WHILE (Vendor."VAT Registration No." = PreVATRegNo) OR (Vendor."VAT Registration No." = '') DO // ES0032
IF Vendor.NEXT = 0 THEN
EXIT;
PreVATRegNo := Vendor."VAT Registration No.";
...Ny kode 1
... PreVATRegNo := '';
// es0014.end
// es0013.end
END;
// Add the following lines.
OnAfterGetRecord=VAR
AppliedAmt@1100000 : Decimal;
PurchCreditMemoOrgDeclaredAmt@1100001 : Decimal;
PurchCreditMemoAmt@1100002 : Integer;
IsPurchCreditMomoPrinted@1100003 : Boolean;
BEGIN
// End of the added lines.
// es0014.begin
WHILE (Vendor."VAT Registration No." = PreVATRegNo) OR (Vendor."VAT Registration No." = '') DO // ES0032
IF Vendor.NEXT = 0 THEN
EXIT;
PreVATRegNo := Vendor."VAT Registration No.";
...Eksisterende kode 2
...END ELSE BEGIN
IF CustVendWarning349."EU 3-Party Trade" THEN BEGIN
AmountOpTri := AmountOpTri - CustVendWarning349."Original Declared Amount";
CorrIncludedForOpTriAmount := TRUE;
END ELSE BEGIN
// Delete the following line.
NormalAmount := NormalAmount - CustVendWarning349."Original Declared Amount";
// End of the deleted line.
CorrIncludedForNormalAmount := TRUE;
END;
END;
// es0033.end
END;
...Ny kode 2
... END ELSE BEGIN
IF CustVendWarning349."EU 3-Party Trade" THEN BEGIN
AmountOpTri := AmountOpTri - CustVendWarning349."Original Declared Amount";
CorrIncludedForOpTriAmount := TRUE;
END ELSE BEGIN
// Add the following lines.
IF ABS(NormalAmount) >= GetTotalPurchCreditMemoAmt - AppliedAmt THEN BEGIN
AppliedAmt += ABS(NormalAmount);
NormalAmount := NormalAmount - CustVendWarning349."Original Declared Amount";
AppliedAmt -= ABS(NormalAmount);
END ELSE BEGIN
PurchCreditMemoOrgDeclaredAmt += CustVendWarning349."Original Declared Amount";
NoOfCorrections += 1;
IsPurchCreditMomoPrinted := TRUE;
END;
// End of the added lines.
CorrIncludedForNormalAmount := TRUE;
END;
END;
// es0033.end
END;
...Eksisterende kode 3
... OutFile.WRITE(Txt);
END;
// es0033.end
END;
// es0014.end
END;
GroupTotalFields=VAT Registration No.;
DataItemLink=Country/Region Code=FIELD(Code);
}
...Ny kode 3
...OutFile.WRITE(Txt);
END;
// es0033.end
END;
// es0014.end
// Add the following lines.
IF IsPurchCreditMomoPrinted THEN BEGIN
TextAmount := COPYSTR(FormatTextAmt(ABS(PurchCreditMemoOrgDeclaredAmt)),3,13);
CustVendCountry.GET(Customer2."Country/Region Code");
Txt :=
'2' + '349' + FiscalYear + PADSTR(VatRegNo,9,' ') + PADSTR('',58,' ') +
FORMAT(CustVendCountry."EU Country/Region Code",2) + FORMAT(CustVendVatRegNo,15) +
PADSTR(CONVERTSTR(UPPERCASE(Vendor2.Name),'µ·ÔÖÞàãé륚€()"&ï','AAEEIIOOUUÑUÇ '),40,' ') +
'E' + PADSTR('',13,' ') + CustVendWarning349."Original Declaration FY" +
CustVendWarning349."Original Declaration Period" + TextAmount +
PADSTR('',322,' ');
NoOperations += 1;
TotalAmtShip += AmountEUService;
OutFile.WRITE(Txt);
END;
// End of the added lines.
END;
GroupTotalFields=VAT Registration No.;
DataItemLink=Country/Region Code=FIELD(Code);
}
... -
Legge til tre nye funksjoner i rapporten gjør 349-deklarering (10710) som følger:
...LOCAL PROCEDURE GetTotalCreditMemoAmt@1100010() : Decimal;
VAR
CustVendWarning349@1100000 : Record 10732;
VATEntry@1100002 : Record 254;
TotalAmount@1100001 : ARRAY [3] OF Decimal;
BEGIN
FilterCustVendWarning349(CustVendWarning349,CustVendWarning349.Type::Sale,Customer2."No.");
IF CustVendWarning349.FINDSET THEN BEGIN
REPEAT
IF Customer2."VAT Registration No." <> '' THEN BEGIN
VATEntry.GET(CustVendWarning349."VAT Entry No.");
SummarizeBaseAmount(VATEntry,CustVendWarning349."Original Declared Amount",TotalAmount)
END;
UNTIL CustVendWarning349.NEXT = 0;
EXIT(TotalAmount[1]);
END;
END;
LOCAL PROCEDURE GetTotalPurchCreditMemoAmt@1100013() : Decimal;
VAR
CustVendWarning349@1100000 : Record 10732;
VATEntry@1100002 : Record 254;
TotalAmount@1100001 : Decimal;
BEGIN
FilterCustVendWarning349(CustVendWarning349,CustVendWarning349.Type::Purchase,Vendor2."No.");
IF CustVendWarning349.FINDSET THEN BEGIN
REPEAT
IF Vendor2."VAT Registration No." <> '' THEN BEGIN
TotalAmount += ABS(CustVendWarning349."Original Declared Amount");
END;
UNTIL CustVendWarning349.NEXT = 0;
EXIT(TotalAmount);
END;
END;
LOCAL PROCEDURE FilterCustVendWarning349@1100008(VAR CustVendWarning349@1100002 : Record 10732;docType@1100000 : Option;No@1100001 : Code[20]);
BEGIN
WITH CustVendWarning349 DO BEGIN
SETRANGE(Type,docType);
SETRANGE("Customer/Vendor No.",No);
SETRANGE("Posting Date",FromDate,ToDate);
SETRANGE("Include Correction",TRUE);
END;
END;
...
Forutsetninger
Du må ha én av de følgende programmene installert for å bruke denne hurtigreparasjonen:
-
Den spanske versjonen av Microsoft Dynamics NAV 2009 R2
-
Den spanske versjonen av Microsoft Dynamics NAV 2009 SP1
Informasjon om fjerning
Du kan ikke fjerne denne hurtigreparasjonen.
Status
Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".
Obs! Dette er en "RASKT PUBLISERE" artikkel opprettet direkte fra innenfor organisasjonen Microsoft Kundestøtte. Informasjonen i dette dokumentet tilbys som-er som svar på nye problemer. Som et resultat av hastigheten i å gjøre den tilgjengelig materialene kan inkludere typografiske feil, og den kunne bli revidert når som helst uten varsel. Se Vilkårene for Brukfor andre hensyn.