@jjlmoya/utils-finance 1.46.0 → 1.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/category/index.ts +2 -1
- package/src/entries.ts +4 -1
- package/src/tests/locale_completeness.test.ts +2 -2
- package/src/tests/tool_validation.test.ts +2 -2
- package/src/tool/loanAprScenarioCalculator/bibliography.astro +11 -0
- package/src/tool/loanAprScenarioCalculator/bibliography.ts +29 -0
- package/src/tool/loanAprScenarioCalculator/component.astro +62 -0
- package/src/tool/loanAprScenarioCalculator/controller.ts +205 -0
- package/src/tool/loanAprScenarioCalculator/currency-dom.ts +107 -0
- package/src/tool/loanAprScenarioCalculator/currency.test.ts +57 -0
- package/src/tool/loanAprScenarioCalculator/currency.ts +105 -0
- package/src/tool/loanAprScenarioCalculator/dom-views.ts +190 -0
- package/src/tool/loanAprScenarioCalculator/entry.ts +28 -0
- package/src/tool/loanAprScenarioCalculator/evaluator.ts +21 -0
- package/src/tool/loanAprScenarioCalculator/i18n/de.ts +194 -0
- package/src/tool/loanAprScenarioCalculator/i18n/en.ts +194 -0
- package/src/tool/loanAprScenarioCalculator/i18n/es.ts +195 -0
- package/src/tool/loanAprScenarioCalculator/i18n/fr.ts +195 -0
- package/src/tool/loanAprScenarioCalculator/i18n/id.ts +193 -0
- package/src/tool/loanAprScenarioCalculator/i18n/it.ts +193 -0
- package/src/tool/loanAprScenarioCalculator/i18n/ja.ts +186 -0
- package/src/tool/loanAprScenarioCalculator/i18n/ko.ts +186 -0
- package/src/tool/loanAprScenarioCalculator/i18n/nl.ts +194 -0
- package/src/tool/loanAprScenarioCalculator/i18n/pl.ts +194 -0
- package/src/tool/loanAprScenarioCalculator/i18n/pt.ts +194 -0
- package/src/tool/loanAprScenarioCalculator/i18n/ru.ts +193 -0
- package/src/tool/loanAprScenarioCalculator/i18n/sv.ts +189 -0
- package/src/tool/loanAprScenarioCalculator/i18n/tr.ts +193 -0
- package/src/tool/loanAprScenarioCalculator/i18n/zh.ts +181 -0
- package/src/tool/loanAprScenarioCalculator/index.ts +11 -0
- package/src/tool/loanAprScenarioCalculator/loan-apr-scenario-calculator.css +699 -0
- package/src/tool/loanAprScenarioCalculator/logic.test.ts +65 -0
- package/src/tool/loanAprScenarioCalculator/logic.ts +259 -0
- package/src/tool/loanAprScenarioCalculator/presets.ts +51 -0
- package/src/tool/loanAprScenarioCalculator/scenario-dom.ts +101 -0
- package/src/tool/loanAprScenarioCalculator/seo.astro +11 -0
- package/src/tool/loanAprScenarioCalculator/storage.ts +60 -0
- package/src/tool/loanAprScenarioCalculator/ui.ts +55 -0
- package/src/tool/loanAprScenarioCalculator/validation.ts +24 -0
- package/src/tools.ts +2 -1
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from "../../../types";
|
|
2
|
+
import { bibliography } from "../bibliography";
|
|
3
|
+
import type { LoanAprScenarioCalculatorUI } from "../ui";
|
|
4
|
+
|
|
5
|
+
const ui: LoanAprScenarioCalculatorUI = {
|
|
6
|
+
labelScenarioA: "Aanbod A",
|
|
7
|
+
labelScenarioB: "Aanbod B",
|
|
8
|
+
labelScenarioName: "Naam van aanbod",
|
|
9
|
+
labelCurrency: "Valuta",
|
|
10
|
+
labelApproximateRates:
|
|
11
|
+
"Benaderende planningsfactoren, geen live wisselkoersen.",
|
|
12
|
+
labelPrincipal: "Geleend bedrag",
|
|
13
|
+
labelTerm: "Looptijd",
|
|
14
|
+
labelMonths: "maanden",
|
|
15
|
+
labelInputBasis: "Welke informatie weet je?",
|
|
16
|
+
labelAnnualRate: "Nominale jaarrente",
|
|
17
|
+
labelMonthlyPayment: "Bekende maandtermijn",
|
|
18
|
+
labelUpfrontFees: "Eenmalige kosten",
|
|
19
|
+
labelMonthlyFees: "Maandelijkse kosten",
|
|
20
|
+
labelFinalFees: "Eindkosten",
|
|
21
|
+
labelOfferNameA: "Aanbod A",
|
|
22
|
+
labelOfferNameB: "Aanbod B",
|
|
23
|
+
labelRateMode: "Ik ken de rente",
|
|
24
|
+
labelPaymentMode: "Ik ken de termijn",
|
|
25
|
+
labelPreset: "Begin een vergelijking",
|
|
26
|
+
labelPresetBalanced: "Gebalanceerde aanbiedingen",
|
|
27
|
+
labelPresetLowFee: "Lage rente met kosten",
|
|
28
|
+
labelPresetLongTerm: "Langere looptijd",
|
|
29
|
+
labelReset: "Waarden resetten",
|
|
30
|
+
labelCopy: "Vergelijking kopiëren",
|
|
31
|
+
labelCopied: "Vergelijking gekopieerd",
|
|
32
|
+
labelEffectiveApr: "Effectieve jaarlijkse kosten",
|
|
33
|
+
labelNominalRate: "Nominale rente",
|
|
34
|
+
labelMonthlyPaymentResult: "Maandtermijn",
|
|
35
|
+
labelTotalPaid: "Totaal betaald",
|
|
36
|
+
labelTotalFees: "Kosten in scenario",
|
|
37
|
+
labelFinanceCost: "Kosten boven hoofdsom",
|
|
38
|
+
labelNetCashReceived: "Ontvangen bedrag na eenmalige kosten",
|
|
39
|
+
labelWinner: "Welk aanbod kost minder?",
|
|
40
|
+
labelLowerCost: "Lagere effectieve kosten",
|
|
41
|
+
labelHigherCost: "Hogere effectieve kosten",
|
|
42
|
+
labelTie: "Bijna gelijk",
|
|
43
|
+
labelNeedValidInputs: "Geldige gegevens nodig",
|
|
44
|
+
labelInvalidPrincipal:
|
|
45
|
+
"Het geleende bedrag moet groter zijn dan nul en hoger dan de eenmalige kosten.",
|
|
46
|
+
labelInvalidTerm: "Gebruik een hele looptijd van 1 tot 600 maanden.",
|
|
47
|
+
labelInvalidFees: "Kosten mogen niet negatief zijn.",
|
|
48
|
+
labelInvalidPayment:
|
|
49
|
+
"Voer een positieve maandtermijn in die het ontvangen bedrag kan terugbetalen.",
|
|
50
|
+
labelInvalidRate: "Gebruik een nominale jaarrente van 0% tot 100%.",
|
|
51
|
+
labelNoComparison: "Vul beide aanbiedingen in om ze te vergelijken.",
|
|
52
|
+
labelTimeline: "Betalingsverloop",
|
|
53
|
+
labelStart: "Start",
|
|
54
|
+
labelMonthly: "Elke maand",
|
|
55
|
+
labelEnd: "Laatste maand",
|
|
56
|
+
labelFormula: "Zo werkt de vergelijking",
|
|
57
|
+
labelFormulaText:
|
|
58
|
+
"De effectieve jaarlijkse kosten zijn de geannualiseerde maandrente die het ontvangen bedrag gelijk maakt aan de contant gemaakte betalingen en kosten.",
|
|
59
|
+
labelApproximation:
|
|
60
|
+
"De schatting gaat uit van gelijke maandtermijnen, geen uitstelperiode en alleen de ingevoerde kosten. Ze vervangt niet de officiële APR van de kredietverstrekker.",
|
|
61
|
+
labelScenarioSummary: "Samenvatting scenario",
|
|
62
|
+
currencyCode: "EUR",
|
|
63
|
+
currencyLocale: "nl-NL",
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
const faq = [
|
|
67
|
+
{
|
|
68
|
+
question:
|
|
69
|
+
"Wat is het verschil tussen rente en effectieve jaarlijkse kosten?",
|
|
70
|
+
answer:
|
|
71
|
+
"De nominale rente beschrijft de rente op het saldo. De effectieve jaarlijkse kosten houden ook rekening met bedrag en timing van de ingevoerde eenmalige, maandelijkse en eindkosten.",
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
question: "Kan ik een maandtermijn invoeren in plaats van een rente?",
|
|
75
|
+
answer:
|
|
76
|
+
"Ja. Kies de bekende maandtermijn voor dat aanbod. De calculator leidt de maandrente af die past bij het ontvangen bedrag, de betalingen en de kosten.",
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
question: "Welk aanbod is goedkoper?",
|
|
80
|
+
answer:
|
|
81
|
+
"Vergelijk eerst de effectieve jaarlijkse kosten en bekijk daarna het totaal betaald en het ontvangen bedrag. Een lager percentage kan door een andere looptijd of hoofdsom toch tot hogere totale kosten leiden.",
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
question: "Is dit de officiële APR van een kredietverstrekker?",
|
|
85
|
+
answer:
|
|
86
|
+
"Nee. Het is een transparante schatting op basis van jouw gegevens. Kredietverstrekkers en landen kunnen belastingen, verzekeringen, betaaldatums en kosten anders verwerken.",
|
|
87
|
+
},
|
|
88
|
+
];
|
|
89
|
+
|
|
90
|
+
const howTo = [
|
|
91
|
+
{
|
|
92
|
+
name: "Vul bedrag en looptijd in",
|
|
93
|
+
text: "Voer voor elk aanbod het bedrag dat je ontvangt en het aantal maandtermijnen in.",
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: "Kies de bekende informatie",
|
|
97
|
+
text: "Vul de nominale jaarrente of de maandtermijn in, afhankelijk van het aanbod.",
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
name: "Voeg alle kosten toe",
|
|
101
|
+
text: "Neem eenmalige, maandelijkse en eindkosten op voor een volledig betalingsverloop.",
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: "Lees de vergelijking",
|
|
105
|
+
text: "Gebruik de effectieve jaarlijkse kosten en controleer daarna totaal betaald en ontvangen bedrag.",
|
|
106
|
+
},
|
|
107
|
+
];
|
|
108
|
+
|
|
109
|
+
const schemas = [
|
|
110
|
+
{
|
|
111
|
+
"@context": "https://schema.org",
|
|
112
|
+
"@type": "SoftwareApplication",
|
|
113
|
+
name: "APR scenariocalculator voor leningen",
|
|
114
|
+
description:
|
|
115
|
+
"Vergelijk twee leningsscenario's met rente, termijnen en kosten.",
|
|
116
|
+
applicationCategory: "FinanceApplication",
|
|
117
|
+
operatingSystem: "All",
|
|
118
|
+
offers: { "@type": "Offer", price: "0", priceCurrency: "EUR" },
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"@context": "https://schema.org",
|
|
122
|
+
"@type": "FAQPage",
|
|
123
|
+
mainEntity: faq.map((item) => ({
|
|
124
|
+
"@type": "Question",
|
|
125
|
+
name: item.question,
|
|
126
|
+
acceptedAnswer: { "@type": "Answer", text: item.answer },
|
|
127
|
+
})),
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"@context": "https://schema.org",
|
|
131
|
+
"@type": "HowTo",
|
|
132
|
+
name: "Twee leningaanbiedingen vergelijken",
|
|
133
|
+
description:
|
|
134
|
+
"Modelleer twee betalingsverlopen en vergelijk hun effectieve jaarlijkse kosten.",
|
|
135
|
+
step: howTo.map((step, index) => ({
|
|
136
|
+
"@type": "HowToStep",
|
|
137
|
+
position: index + 1,
|
|
138
|
+
name: step.name,
|
|
139
|
+
text: step.text,
|
|
140
|
+
})),
|
|
141
|
+
},
|
|
142
|
+
];
|
|
143
|
+
|
|
144
|
+
export const content: ToolLocaleContent<LoanAprScenarioCalculatorUI> = {
|
|
145
|
+
slug: "lening-apr-scenario-calculator",
|
|
146
|
+
title: "APR scenariocalculator voor leningen",
|
|
147
|
+
description:
|
|
148
|
+
"Vergelijk twee leningaanbiedingen met rente, betalingsschema en kosten om de effectieve jaarlijkse kosten te schatten.",
|
|
149
|
+
ui,
|
|
150
|
+
faq,
|
|
151
|
+
bibliography,
|
|
152
|
+
howTo,
|
|
153
|
+
schemas,
|
|
154
|
+
seo: [
|
|
155
|
+
{
|
|
156
|
+
type: "title",
|
|
157
|
+
text: "Vergelijk leningen op effectieve jaarlijkse kosten",
|
|
158
|
+
level: 2,
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
type: "paragraph",
|
|
162
|
+
html: "<p>Een lage geadverteerde rente kan administratiekosten, maandelijkse servicekosten of een eindbedrag verbergen. Deze calculator maakt van twee aanbiedingen vergelijkbare betalingsscenario's zodat je de kosten van het werkelijk ontvangen geld ziet.</p>",
|
|
163
|
+
},
|
|
164
|
+
{ type: "title", text: "Wat de schatting bevat", level: 3 },
|
|
165
|
+
{
|
|
166
|
+
type: "paragraph",
|
|
167
|
+
html: "<p>Voer per aanbod het bedrag, de looptijd, de nominale rente of bekende maandtermijn en de kosten op verschillende momenten in. De calculator zoekt de maandrente die het ontvangen bedrag gelijk maakt aan de contant gemaakte betalingen en kosten, en annualiseert die.</p>",
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
type: "paragraph",
|
|
171
|
+
html: "<p>Zo is de kredietprijs breder dan alleen de rente. Het resultaat blijft een schatting omdat officiële APR-regels en aanvullende aannames per land kunnen verschillen.</p>",
|
|
172
|
+
},
|
|
173
|
+
{ type: "title", text: "Het resultaat lezen", level: 3 },
|
|
174
|
+
{
|
|
175
|
+
type: "list",
|
|
176
|
+
items: [
|
|
177
|
+
"Vergelijk de effectieve kosten als bedrag en looptijd vergelijkbaar zijn.",
|
|
178
|
+
"Bekijk het totaal betaald voor de totale geldimpact.",
|
|
179
|
+
"Controleer het ontvangen bedrag na eenmalige kosten.",
|
|
180
|
+
"Gebruik het betalingsverloop om de timing van kosten te zien.",
|
|
181
|
+
],
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
type: "tip",
|
|
185
|
+
title: "Gebruik de offerte als laatste referentie",
|
|
186
|
+
html: "<p>Vergelijk bij een echt contract de officiële APR met dezelfde aannames. Vraag naar verzekeringen, belastingen, variabele rente, kosten voor vervroegd aflossen en niet ingevoerde kosten.</p>",
|
|
187
|
+
},
|
|
188
|
+
{ type: "title", text: "Grenzen van een scenario", level: 3 },
|
|
189
|
+
{
|
|
190
|
+
type: "paragraph",
|
|
191
|
+
html: "<p>De tool gaat uit van gelijke maandtermijnen, geen uitstelperiode en kosten aan het begin, tijdens de looptijd of in de laatste maand. De tool bevestigt geen betaalbaarheid, goedkeuring, legaliteit of officiële APR.</p>",
|
|
192
|
+
},
|
|
193
|
+
],
|
|
194
|
+
};
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from "../../../types";
|
|
2
|
+
import { bibliography } from "../bibliography";
|
|
3
|
+
import type { LoanAprScenarioCalculatorUI } from "../ui";
|
|
4
|
+
|
|
5
|
+
const ui: LoanAprScenarioCalculatorUI = {
|
|
6
|
+
labelScenarioA: "Oferta A",
|
|
7
|
+
labelScenarioB: "Oferta B",
|
|
8
|
+
labelScenarioName: "Nazwa oferty",
|
|
9
|
+
labelCurrency: "Waluta",
|
|
10
|
+
labelApproximateRates:
|
|
11
|
+
"Przybliżone współczynniki planistyczne, nie kursy na żywo.",
|
|
12
|
+
labelPrincipal: "Pożyczona kwota",
|
|
13
|
+
labelTerm: "Okres spłaty",
|
|
14
|
+
labelMonths: "miesięcy",
|
|
15
|
+
labelInputBasis: "Jaką informację znasz?",
|
|
16
|
+
labelAnnualRate: "Nominalna stopa roczna",
|
|
17
|
+
labelMonthlyPayment: "Znana rata miesięczna",
|
|
18
|
+
labelUpfrontFees: "Opłaty początkowe",
|
|
19
|
+
labelMonthlyFees: "Opłaty miesięczne",
|
|
20
|
+
labelFinalFees: "Opłata końcowa",
|
|
21
|
+
labelOfferNameA: "Oferta A",
|
|
22
|
+
labelOfferNameB: "Oferta B",
|
|
23
|
+
labelRateMode: "Znam oprocentowanie",
|
|
24
|
+
labelPaymentMode: "Znam ratę",
|
|
25
|
+
labelPreset: "Rozpocznij porównanie",
|
|
26
|
+
labelPresetBalanced: "Zrównoważone oferty",
|
|
27
|
+
labelPresetLowFee: "Niska stopa z opłatami",
|
|
28
|
+
labelPresetLongTerm: "Dłuższy okres",
|
|
29
|
+
labelReset: "Zresetuj wartości",
|
|
30
|
+
labelCopy: "Kopiuj porównanie",
|
|
31
|
+
labelCopied: "Porównanie skopiowane",
|
|
32
|
+
labelEffectiveApr: "Efektywny koszt roczny",
|
|
33
|
+
labelNominalRate: "Stopa nominalna",
|
|
34
|
+
labelMonthlyPaymentResult: "Rata miesięczna",
|
|
35
|
+
labelTotalPaid: "Łącznie zapłacone",
|
|
36
|
+
labelTotalFees: "Opłaty w scenariuszu",
|
|
37
|
+
labelFinanceCost: "Koszt ponad kapitał",
|
|
38
|
+
labelNetCashReceived: "Otrzymana kwota po opłatach początkowych",
|
|
39
|
+
labelWinner: "Która oferta kosztuje mniej?",
|
|
40
|
+
labelLowerCost: "Niższy koszt efektywny",
|
|
41
|
+
labelHigherCost: "Wyższy koszt efektywny",
|
|
42
|
+
labelTie: "Prawie równo",
|
|
43
|
+
labelNeedValidInputs: "Potrzebne są prawidłowe dane",
|
|
44
|
+
labelInvalidPrincipal:
|
|
45
|
+
"Pożyczona kwota musi być większa od zera i od opłat początkowych.",
|
|
46
|
+
labelInvalidTerm: "Użyj całkowitego okresu od 1 do 600 miesięcy.",
|
|
47
|
+
labelInvalidFees: "Opłaty nie mogą być ujemne.",
|
|
48
|
+
labelInvalidPayment:
|
|
49
|
+
"Wpisz dodatnią ratę, która spłaci otrzymaną kwotę netto.",
|
|
50
|
+
labelInvalidRate: "Użyj nominalnej stopy rocznej od 0% do 100%.",
|
|
51
|
+
labelNoComparison: "Uzupełnij obie oferty, aby je porównać.",
|
|
52
|
+
labelTimeline: "Harmonogram płatności",
|
|
53
|
+
labelStart: "Początek",
|
|
54
|
+
labelMonthly: "Co miesiąc",
|
|
55
|
+
labelEnd: "Ostatni miesiąc",
|
|
56
|
+
labelFormula: "Jak działa porównanie",
|
|
57
|
+
labelFormulaText:
|
|
58
|
+
"Efektywny koszt roczny to zannualizowana stopa miesięczna, która zrównuje otrzymaną kwotę ze zdyskontowanymi płatnościami i opłatami.",
|
|
59
|
+
labelApproximation:
|
|
60
|
+
"Szacunek zakłada równe raty miesięczne, brak karencji i tylko wpisane opłaty. Nie zastępuje oficjalnego APR kredytodawcy.",
|
|
61
|
+
labelScenarioSummary: "Podsumowanie scenariusza",
|
|
62
|
+
currencyCode: "PLN",
|
|
63
|
+
currencyLocale: "pl-PL",
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
const faq = [
|
|
67
|
+
{
|
|
68
|
+
question:
|
|
69
|
+
"Jaka jest różnica między stopą procentową a efektywnym kosztem rocznym?",
|
|
70
|
+
answer:
|
|
71
|
+
"Nominalna stopa opisuje odsetki od salda. Efektywny koszt roczny uwzględnia także kwotę i moment pobrania opłat początkowych, miesięcznych i końcowych.",
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
question: "Czy mogę podać ratę miesięczną zamiast stopy?",
|
|
75
|
+
answer:
|
|
76
|
+
"Tak. Wybierz znaną ratę miesięczną dla danej oferty. Kalkulator wyznaczy stopę miesięczną zgodną z otrzymaną kwotą, płatnościami i opłatami.",
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
question: "Która oferta jest tańsza?",
|
|
80
|
+
answer:
|
|
81
|
+
"Najpierw porównaj efektywny koszt roczny, a potem łączną kwotę zapłaconą i otrzymaną kwotę. Niższy procent może dać wyższy koszt całkowity przy innej kwocie lub długości spłaty.",
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
question: "Czy to oficjalny APR kredytodawcy?",
|
|
85
|
+
answer:
|
|
86
|
+
"Nie. To przejrzysty szacunek oparty na Twoich danych. Kredytodawcy i przepisy mogą inaczej uwzględniać podatki, ubezpieczenia, terminy płatności i koszty.",
|
|
87
|
+
},
|
|
88
|
+
];
|
|
89
|
+
|
|
90
|
+
const howTo = [
|
|
91
|
+
{
|
|
92
|
+
name: "Podaj kwotę i okres",
|
|
93
|
+
text: "Wpisz kwotę, którą otrzymasz, oraz liczbę rat miesięcznych dla każdej oferty.",
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: "Wybierz znaną informację",
|
|
97
|
+
text: "Podaj nominalną stopę roczną albo ratę miesięczną, zależnie od danych oferty.",
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
name: "Dodaj wszystkie opłaty",
|
|
101
|
+
text: "Uwzględnij opłaty początkowe, miesięczne i końcowe, aby odwzorować pełny przepływ pieniędzy.",
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: "Odczytaj porównanie",
|
|
105
|
+
text: "Użyj efektywnego kosztu rocznego, a potem sprawdź sumę zapłaconą i otrzymaną przed decyzją.",
|
|
106
|
+
},
|
|
107
|
+
];
|
|
108
|
+
|
|
109
|
+
const schemas = [
|
|
110
|
+
{
|
|
111
|
+
"@context": "https://schema.org",
|
|
112
|
+
"@type": "SoftwareApplication",
|
|
113
|
+
name: "Kalkulator scenariuszy APR pożyczki",
|
|
114
|
+
description:
|
|
115
|
+
"Porównuje dwa scenariusze pożyczki z oprocentowaniem, ratami i opłatami.",
|
|
116
|
+
applicationCategory: "FinanceApplication",
|
|
117
|
+
operatingSystem: "All",
|
|
118
|
+
offers: { "@type": "Offer", price: "0", priceCurrency: "PLN" },
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"@context": "https://schema.org",
|
|
122
|
+
"@type": "FAQPage",
|
|
123
|
+
mainEntity: faq.map((item) => ({
|
|
124
|
+
"@type": "Question",
|
|
125
|
+
name: item.question,
|
|
126
|
+
acceptedAnswer: { "@type": "Answer", text: item.answer },
|
|
127
|
+
})),
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"@context": "https://schema.org",
|
|
131
|
+
"@type": "HowTo",
|
|
132
|
+
name: "Porównanie dwóch ofert pożyczki",
|
|
133
|
+
description:
|
|
134
|
+
"Modeluj przepływy dwóch pożyczek i porównuj ich efektywny koszt roczny.",
|
|
135
|
+
step: howTo.map((step, index) => ({
|
|
136
|
+
"@type": "HowToStep",
|
|
137
|
+
position: index + 1,
|
|
138
|
+
name: step.name,
|
|
139
|
+
text: step.text,
|
|
140
|
+
})),
|
|
141
|
+
},
|
|
142
|
+
];
|
|
143
|
+
|
|
144
|
+
export const content: ToolLocaleContent<LoanAprScenarioCalculatorUI> = {
|
|
145
|
+
slug: "kalkulator-scenariuszy-apr-pozyczki",
|
|
146
|
+
title: "Kalkulator scenariuszy APR pożyczki",
|
|
147
|
+
description:
|
|
148
|
+
"Porównaj dwie oferty pożyczki z oprocentowaniem, harmonogramem rat i opłatami, aby oszacować efektywny koszt roczny.",
|
|
149
|
+
ui,
|
|
150
|
+
faq,
|
|
151
|
+
bibliography,
|
|
152
|
+
howTo,
|
|
153
|
+
schemas,
|
|
154
|
+
seo: [
|
|
155
|
+
{
|
|
156
|
+
type: "title",
|
|
157
|
+
text: "Porównaj pożyczki według efektywnego kosztu rocznego",
|
|
158
|
+
level: 2,
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
type: "paragraph",
|
|
162
|
+
html: "<p>Niska reklamowana stopa może ukrywać opłatę przygotowawczą, miesięczną opłatę serwisową albo koszt końcowy. Ten kalkulator zamienia szczegóły dwóch ofert w porównywalne scenariusze przepływów pieniężnych.</p>",
|
|
163
|
+
},
|
|
164
|
+
{ type: "title", text: "Co obejmuje szacunek", level: 3 },
|
|
165
|
+
{
|
|
166
|
+
type: "paragraph",
|
|
167
|
+
html: "<p>Dla każdej oferty podaj kwotę, okres spłaty, nominalną stopę lub znaną ratę oraz opłaty pobierane w różnych momentach. Kalkulator znajduje stopę miesięczną równoważącą otrzymaną kwotę ze zdyskontowanymi płatnościami i opłatami, a następnie ją annualizuje.</p>",
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
type: "paragraph",
|
|
171
|
+
html: "<p>Cena kredytu jest więc szersza niż sama stopa procentowa. Wynik jest szacunkiem, ponieważ oficjalny APR może zależeć od lokalnych zasad i dodatkowych założeń.</p>",
|
|
172
|
+
},
|
|
173
|
+
{ type: "title", text: "Jak czytać wynik", level: 3 },
|
|
174
|
+
{
|
|
175
|
+
type: "list",
|
|
176
|
+
items: [
|
|
177
|
+
"Porównuj efektywny koszt roczny przy podobnej kwocie i okresie.",
|
|
178
|
+
"Sprawdź łączną kwotę zapłaconą, aby ocenić wpływ gotówkowy.",
|
|
179
|
+
"Zobacz kwotę otrzymaną po opłatach początkowych.",
|
|
180
|
+
"Użyj harmonogramu, aby zobaczyć moment każdego kosztu.",
|
|
181
|
+
],
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
type: "tip",
|
|
185
|
+
title: "Dokument kredytodawcy jest ostatecznym punktem odniesienia",
|
|
186
|
+
html: "<p>Przy prawdziwej umowie porównaj oficjalny APR przy tych samych założeniach. Zapytaj o ubezpieczenia, podatki, zmienne stopy, koszty wcześniejszej spłaty i nieujęte opłaty.</p>",
|
|
187
|
+
},
|
|
188
|
+
{ type: "title", text: "Ograniczenia scenariusza", level: 3 },
|
|
189
|
+
{
|
|
190
|
+
type: "paragraph",
|
|
191
|
+
html: "<p>Narzędzie zakłada równe raty miesięczne, brak karencji oraz opłaty na początku, w trakcie okresu lub w ostatnim miesiącu. Nie potwierdza zdolności, zgody, legalności ani oficjalnego APR.</p>",
|
|
192
|
+
},
|
|
193
|
+
],
|
|
194
|
+
};
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from "../../../types";
|
|
2
|
+
import { bibliography } from "../bibliography";
|
|
3
|
+
import type { LoanAprScenarioCalculatorUI } from "../ui";
|
|
4
|
+
|
|
5
|
+
const ui: LoanAprScenarioCalculatorUI = {
|
|
6
|
+
labelScenarioA: "Oferta A",
|
|
7
|
+
labelScenarioB: "Oferta B",
|
|
8
|
+
labelScenarioName: "Nome da oferta",
|
|
9
|
+
labelCurrency: "Moeda",
|
|
10
|
+
labelApproximateRates:
|
|
11
|
+
"Fatores aproximados para planeamento, não taxas de câmbio em tempo real.",
|
|
12
|
+
labelPrincipal: "Montante emprestado",
|
|
13
|
+
labelTerm: "Prazo de reembolso",
|
|
14
|
+
labelMonths: "meses",
|
|
15
|
+
labelInputBasis: "Que dado conhece?",
|
|
16
|
+
labelAnnualRate: "Taxa nominal anual",
|
|
17
|
+
labelMonthlyPayment: "Prestação mensal conhecida",
|
|
18
|
+
labelUpfrontFees: "Comissões iniciais",
|
|
19
|
+
labelMonthlyFees: "Comissões mensais",
|
|
20
|
+
labelFinalFees: "Comissão final",
|
|
21
|
+
labelOfferNameA: "Oferta A",
|
|
22
|
+
labelOfferNameB: "Oferta B",
|
|
23
|
+
labelRateMode: "Conheço a taxa",
|
|
24
|
+
labelPaymentMode: "Conheço a prestação",
|
|
25
|
+
labelPreset: "Começar uma comparação",
|
|
26
|
+
labelPresetBalanced: "Ofertas equilibradas",
|
|
27
|
+
labelPresetLowFee: "Taxa baixa com comissões",
|
|
28
|
+
labelPresetLongTerm: "Prazo mais longo",
|
|
29
|
+
labelReset: "Repor valores",
|
|
30
|
+
labelCopy: "Copiar comparação",
|
|
31
|
+
labelCopied: "Comparação copiada",
|
|
32
|
+
labelEffectiveApr: "Custo anual efetivo",
|
|
33
|
+
labelNominalRate: "Taxa nominal",
|
|
34
|
+
labelMonthlyPaymentResult: "Prestação mensal",
|
|
35
|
+
labelTotalPaid: "Total pago",
|
|
36
|
+
labelTotalFees: "Comissões do cenário",
|
|
37
|
+
labelFinanceCost: "Custo acima do capital",
|
|
38
|
+
labelNetCashReceived: "Valor recebido após comissões iniciais",
|
|
39
|
+
labelWinner: "Qual oferta custa menos?",
|
|
40
|
+
labelLowerCost: "Custo efetivo inferior",
|
|
41
|
+
labelHigherCost: "Custo efetivo superior",
|
|
42
|
+
labelTie: "Quase iguais",
|
|
43
|
+
labelNeedValidInputs: "São necessários dados válidos",
|
|
44
|
+
labelInvalidPrincipal:
|
|
45
|
+
"O montante deve ser superior a zero e às comissões iniciais.",
|
|
46
|
+
labelInvalidTerm: "Use um prazo inteiro entre 1 e 600 meses.",
|
|
47
|
+
labelInvalidFees: "As comissões não podem ser negativas.",
|
|
48
|
+
labelInvalidPayment:
|
|
49
|
+
"Introduza uma prestação mensal positiva que consiga reembolsar o valor líquido recebido.",
|
|
50
|
+
labelInvalidRate: "Use uma taxa nominal anual entre 0% e 100%.",
|
|
51
|
+
labelNoComparison: "Preencha as duas ofertas para as comparar.",
|
|
52
|
+
labelTimeline: "Calendário de pagamentos",
|
|
53
|
+
labelStart: "Início",
|
|
54
|
+
labelMonthly: "Cada mês",
|
|
55
|
+
labelEnd: "Último mês",
|
|
56
|
+
labelFormula: "Como funciona a comparação",
|
|
57
|
+
labelFormulaText:
|
|
58
|
+
"O custo anual efetivo é a taxa mensal anualizada que iguala o valor recebido aos pagamentos e comissões descontados.",
|
|
59
|
+
labelApproximation:
|
|
60
|
+
"A estimativa assume prestações mensais iguais, sem período de carência e apenas as comissões introduzidas. Não substitui a TAEG oficial do credor.",
|
|
61
|
+
labelScenarioSummary: "Resumo do cenário",
|
|
62
|
+
currencyCode: "EUR",
|
|
63
|
+
currencyLocale: "pt-PT",
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
const faq = [
|
|
67
|
+
{
|
|
68
|
+
question:
|
|
69
|
+
"Qual é a diferença entre a taxa de juro e o custo anual efetivo?",
|
|
70
|
+
answer:
|
|
71
|
+
"A taxa nominal descreve os juros sobre o saldo. O custo anual efetivo também considera o valor e o momento das comissões iniciais, mensais e finais introduzidas.",
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
question: "Posso introduzir uma prestação mensal em vez da taxa de juro?",
|
|
75
|
+
answer:
|
|
76
|
+
"Sim. Escolha a prestação mensal conhecida para essa oferta. A calculadora infere a taxa mensal compatível com o valor recebido, os pagamentos e as comissões.",
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
question: "Qual é a oferta mais barata?",
|
|
80
|
+
answer:
|
|
81
|
+
"Compare primeiro o custo anual efetivo e depois verifique o total pago e o valor recebido. Uma percentagem menor pode ter um custo total superior quando o prazo ou o montante diferem.",
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
question: "É a TAEG oficial do credor?",
|
|
85
|
+
answer:
|
|
86
|
+
"Não. É uma estimativa transparente baseada nos seus dados. Os credores e as jurisdições podem tratar de forma diferente impostos, seguros, datas de pagamento e outras despesas.",
|
|
87
|
+
},
|
|
88
|
+
];
|
|
89
|
+
|
|
90
|
+
const howTo = [
|
|
91
|
+
{
|
|
92
|
+
name: "Introduza montante e prazo",
|
|
93
|
+
text: "Indique o valor que receberia e o número de prestações mensais de cada oferta.",
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: "Escolha o dado conhecido",
|
|
97
|
+
text: "Introduza a taxa nominal anual ou a prestação mensal, conforme os dados da oferta.",
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
name: "Adicione todas as comissões",
|
|
101
|
+
text: "Inclua comissões iniciais, mensais e finais para representar o fluxo completo.",
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: "Leia a comparação",
|
|
105
|
+
text: "Use o custo anual efetivo e verifique o total pago e o valor recebido antes de decidir.",
|
|
106
|
+
},
|
|
107
|
+
];
|
|
108
|
+
|
|
109
|
+
const schemas = [
|
|
110
|
+
{
|
|
111
|
+
"@context": "https://schema.org",
|
|
112
|
+
"@type": "SoftwareApplication",
|
|
113
|
+
name: "Calculadora de cenários TAEG de empréstimo",
|
|
114
|
+
description:
|
|
115
|
+
"Compara dois cenários de empréstimo com taxas, prestações e comissões.",
|
|
116
|
+
applicationCategory: "FinanceApplication",
|
|
117
|
+
operatingSystem: "All",
|
|
118
|
+
offers: { "@type": "Offer", price: "0", priceCurrency: "EUR" },
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"@context": "https://schema.org",
|
|
122
|
+
"@type": "FAQPage",
|
|
123
|
+
mainEntity: faq.map((item) => ({
|
|
124
|
+
"@type": "Question",
|
|
125
|
+
name: item.question,
|
|
126
|
+
acceptedAnswer: { "@type": "Answer", text: item.answer },
|
|
127
|
+
})),
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"@context": "https://schema.org",
|
|
131
|
+
"@type": "HowTo",
|
|
132
|
+
name: "Comparar duas ofertas de empréstimo",
|
|
133
|
+
description:
|
|
134
|
+
"Modele os fluxos de dois empréstimos e compare o custo anual efetivo.",
|
|
135
|
+
step: howTo.map((step, index) => ({
|
|
136
|
+
"@type": "HowToStep",
|
|
137
|
+
position: index + 1,
|
|
138
|
+
name: step.name,
|
|
139
|
+
text: step.text,
|
|
140
|
+
})),
|
|
141
|
+
},
|
|
142
|
+
];
|
|
143
|
+
|
|
144
|
+
export const content: ToolLocaleContent<LoanAprScenarioCalculatorUI> = {
|
|
145
|
+
slug: "calculadora-cenarios-taeg-emprestimo",
|
|
146
|
+
title: "Calculadora de cenários TAEG de empréstimo",
|
|
147
|
+
description:
|
|
148
|
+
"Compare duas ofertas de empréstimo com juros, calendário de pagamentos e comissões para estimar o custo anual efetivo.",
|
|
149
|
+
ui,
|
|
150
|
+
faq,
|
|
151
|
+
bibliography,
|
|
152
|
+
howTo,
|
|
153
|
+
schemas,
|
|
154
|
+
seo: [
|
|
155
|
+
{
|
|
156
|
+
type: "title",
|
|
157
|
+
text: "Compare empréstimos pelo custo anual efetivo",
|
|
158
|
+
level: 2,
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
type: "paragraph",
|
|
162
|
+
html: "<p>Uma taxa anunciada baixa pode esconder uma comissão de abertura, um encargo mensal ou um custo final. Esta calculadora transforma os dados de duas ofertas em cenários de fluxo de caixa comparáveis.</p>",
|
|
163
|
+
},
|
|
164
|
+
{ type: "title", text: "O que inclui a estimativa", level: 3 },
|
|
165
|
+
{
|
|
166
|
+
type: "paragraph",
|
|
167
|
+
html: "<p>Para cada oferta, introduza o montante, o prazo, a taxa nominal ou a prestação mensal conhecida e as comissões cobradas em momentos diferentes. A calculadora encontra a taxa mensal que equilibra o valor recebido com os pagamentos e comissões descontados, e anualiza-a.</p>",
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
type: "paragraph",
|
|
171
|
+
html: "<p>O preço do crédito é mais amplo do que a taxa de juro. O resultado é uma estimativa porque a TAEG oficial pode seguir regras locais e incluir pressupostos ausentes do seu cenário.</p>",
|
|
172
|
+
},
|
|
173
|
+
{ type: "title", text: "Como ler o resultado", level: 3 },
|
|
174
|
+
{
|
|
175
|
+
type: "list",
|
|
176
|
+
items: [
|
|
177
|
+
"Compare o custo anual efetivo quando montante e prazo são semelhantes.",
|
|
178
|
+
"Verifique o total pago para perceber o impacto absoluto.",
|
|
179
|
+
"Confirme o valor recebido depois das comissões iniciais.",
|
|
180
|
+
"Use o calendário para ver quando surge cada custo.",
|
|
181
|
+
],
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
type: "tip",
|
|
185
|
+
title: "Use a documentação do credor como referência final",
|
|
186
|
+
html: "<p>Num contrato real, compare a TAEG oficial com os mesmos pressupostos. Pergunte por seguros, impostos, taxas variáveis, custos de amortização antecipada e encargos não representados.</p>",
|
|
187
|
+
},
|
|
188
|
+
{ type: "title", text: "Limites de um cenário", level: 3 },
|
|
189
|
+
{
|
|
190
|
+
type: "paragraph",
|
|
191
|
+
html: "<p>A ferramenta assume prestações mensais iguais, sem período de carência e comissões no início, durante o prazo ou no último mês. Não certifica capacidade financeira, aprovação, legalidade ou TAEG oficial.</p>",
|
|
192
|
+
},
|
|
193
|
+
],
|
|
194
|
+
};
|