@jjlmoya/utils-finance 1.45.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 +5 -1
- package/src/tests/locale_completeness.test.ts +2 -2
- package/src/tests/mfe_assets_contract.test.ts +48 -0
- 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/tool/renterInsuranceCoverageGapCalculator/bibliography.astro +11 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/bibliography.ts +6 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/component.astro +80 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/controller.ts +102 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/currency.test.ts +17 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/currency.ts +69 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/dom-views.ts +68 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/entry.ts +28 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/evaluator.ts +17 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/i18n/de.ts +40 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/i18n/en.ts +98 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/i18n/es.ts +38 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/i18n/fr.ts +38 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/i18n/id.ts +38 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/i18n/it.ts +38 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/i18n/ja.ts +38 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/i18n/ko.ts +38 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/i18n/nl.ts +38 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/i18n/pl.ts +38 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/i18n/pt.ts +38 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/i18n/ru.ts +38 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/i18n/sv.ts +38 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/i18n/tr.ts +38 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/i18n/zh.ts +38 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/index.ts +11 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/logic.test.ts +52 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/logic.ts +108 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/renter-insurance-coverage-gap-calculator.css +462 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/seo.astro +11 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/storage.ts +23 -0
- package/src/tool/renterInsuranceCoverageGapCalculator/ui.ts +48 -0
- package/src/tools.ts +3 -1
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from "../../../types";
|
|
2
|
+
import { bibliography } from "../bibliography";
|
|
3
|
+
import type { LoanAprScenarioCalculatorUI } from "../ui";
|
|
4
|
+
|
|
5
|
+
const ui: LoanAprScenarioCalculatorUI = {
|
|
6
|
+
labelScenarioA: "상품 A",
|
|
7
|
+
labelScenarioB: "상품 B",
|
|
8
|
+
labelScenarioName: "상품 이름",
|
|
9
|
+
labelCurrency: "통화",
|
|
10
|
+
labelApproximateRates: "계획용 근사 계수이며 실시간 환율이 아닙니다.",
|
|
11
|
+
labelPrincipal: "대출 금액",
|
|
12
|
+
labelTerm: "상환 기간",
|
|
13
|
+
labelMonths: "개월",
|
|
14
|
+
labelInputBasis: "어떤 정보를 알고 있나요?",
|
|
15
|
+
labelAnnualRate: "명목 연이율",
|
|
16
|
+
labelMonthlyPayment: "알고 있는 월 상환액",
|
|
17
|
+
labelUpfrontFees: "초기 수수료",
|
|
18
|
+
labelMonthlyFees: "월 수수료",
|
|
19
|
+
labelFinalFees: "최종 수수료",
|
|
20
|
+
labelOfferNameA: "상품 A",
|
|
21
|
+
labelOfferNameB: "상품 B",
|
|
22
|
+
labelRateMode: "금리를 알고 있어요",
|
|
23
|
+
labelPaymentMode: "상환액을 알고 있어요",
|
|
24
|
+
labelPreset: "비교 시작",
|
|
25
|
+
labelPresetBalanced: "균형 잡힌 상품",
|
|
26
|
+
labelPresetLowFee: "낮은 금리와 수수료",
|
|
27
|
+
labelPresetLongTerm: "긴 상환 기간",
|
|
28
|
+
labelReset: "값 초기화",
|
|
29
|
+
labelCopy: "비교 복사",
|
|
30
|
+
labelCopied: "비교를 복사했습니다",
|
|
31
|
+
labelEffectiveApr: "실질 연간 비용",
|
|
32
|
+
labelNominalRate: "명목 금리",
|
|
33
|
+
labelMonthlyPaymentResult: "월 상환액",
|
|
34
|
+
labelTotalPaid: "총 납부액",
|
|
35
|
+
labelTotalFees: "시나리오 수수료",
|
|
36
|
+
labelFinanceCost: "원금 초과 비용",
|
|
37
|
+
labelNetCashReceived: "초기 수수료 후 수령액",
|
|
38
|
+
labelWinner: "어느 상품이 더 저렴한가요?",
|
|
39
|
+
labelLowerCost: "실질 비용이 낮음",
|
|
40
|
+
labelHigherCost: "실질 비용이 높음",
|
|
41
|
+
labelTie: "거의 같음",
|
|
42
|
+
labelNeedValidInputs: "유효한 값이 필요합니다",
|
|
43
|
+
labelInvalidPrincipal: "대출 금액은 0보다 크고 초기 수수료보다 커야 합니다.",
|
|
44
|
+
labelInvalidTerm: "1개월에서 600개월 사이의 정수를 입력하세요.",
|
|
45
|
+
labelInvalidFees: "수수료는 음수가 될 수 없습니다.",
|
|
46
|
+
labelInvalidPayment:
|
|
47
|
+
"수령한 순액을 상환할 수 있는 양의 월 상환액을 입력하세요.",
|
|
48
|
+
labelInvalidRate: "명목 연이율은 0%에서 100% 사이여야 합니다.",
|
|
49
|
+
labelNoComparison: "두 상품을 모두 입력해야 비교할 수 있습니다.",
|
|
50
|
+
labelTimeline: "상환 일정",
|
|
51
|
+
labelStart: "시작",
|
|
52
|
+
labelMonthly: "매월",
|
|
53
|
+
labelEnd: "마지막 달",
|
|
54
|
+
labelFormula: "비교 방식",
|
|
55
|
+
labelFormulaText:
|
|
56
|
+
"실질 연간 비용은 수령액과 할인된 상환액 및 수수료가 같아지도록 하는 월 이율을 연율로 환산한 값입니다.",
|
|
57
|
+
labelApproximation:
|
|
58
|
+
"동일한 월 상환액, 거치 기간 없음, 입력한 수수료만을 가정한 추정치입니다. 대출기관의 공식 APR을 대신하지 않습니다.",
|
|
59
|
+
labelScenarioSummary: "시나리오 요약",
|
|
60
|
+
currencyCode: "KRW",
|
|
61
|
+
currencyLocale: "ko-KR",
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const faq = [
|
|
65
|
+
{
|
|
66
|
+
question: "이자율과 실질 연간 비용의 차이는 무엇인가요?",
|
|
67
|
+
answer:
|
|
68
|
+
"명목 금리는 잔액에 부과되는 이자를 나타냅니다. 실질 연간 비용은 입력한 초기, 월, 최종 수수료의 금액과 시점도 반영합니다.",
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
question: "이자율 대신 월 상환액을 입력할 수 있나요?",
|
|
72
|
+
answer:
|
|
73
|
+
"네. 해당 상품에서 알고 있는 월 상환액을 선택하세요. 수령액, 상환 흐름, 수수료에 맞는 월 이율을 계산합니다.",
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
question: "어느 상품이 더 저렴한가요?",
|
|
77
|
+
answer:
|
|
78
|
+
"먼저 실질 연간 비용을 비교한 뒤 총 납부액과 수령액을 확인하세요. 기간이나 금액이 다르면 비율이 낮아도 총비용은 높을 수 있습니다.",
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
question: "대출기관의 공식 APR인가요?",
|
|
82
|
+
answer:
|
|
83
|
+
"아닙니다. 입력값에 기반한 투명한 시나리오 추정치입니다. 세금, 보험, 납부일과 기타 비용은 대출기관과 지역에 따라 다르게 계산될 수 있습니다.",
|
|
84
|
+
},
|
|
85
|
+
];
|
|
86
|
+
|
|
87
|
+
const howTo = [
|
|
88
|
+
{
|
|
89
|
+
name: "금액과 기간 입력",
|
|
90
|
+
text: "각 상품에서 받을 금액과 월 상환 횟수를 입력합니다.",
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: "알고 있는 정보 선택",
|
|
94
|
+
text: "상품에 표시된 명목 연이율 또는 월 상환액을 입력합니다.",
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
name: "모든 수수료 추가",
|
|
98
|
+
text: "초기, 매월, 최종 수수료를 입력해 전체 현금 흐름을 반영합니다.",
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
name: "비교 결과 읽기",
|
|
102
|
+
text: "실질 연간 비용을 사용하고 결정하기 전에 총 납부액과 수령액도 확인합니다.",
|
|
103
|
+
},
|
|
104
|
+
];
|
|
105
|
+
|
|
106
|
+
const schemas = [
|
|
107
|
+
{
|
|
108
|
+
"@context": "https://schema.org",
|
|
109
|
+
"@type": "SoftwareApplication",
|
|
110
|
+
name: "대출 APR 시나리오 계산기",
|
|
111
|
+
description: "금리, 상환액, 수수료가 있는 두 대출 시나리오를 비교합니다.",
|
|
112
|
+
applicationCategory: "FinanceApplication",
|
|
113
|
+
operatingSystem: "All",
|
|
114
|
+
offers: { "@type": "Offer", price: "0", priceCurrency: "KRW" },
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"@context": "https://schema.org",
|
|
118
|
+
"@type": "FAQPage",
|
|
119
|
+
mainEntity: faq.map((item) => ({
|
|
120
|
+
"@type": "Question",
|
|
121
|
+
name: item.question,
|
|
122
|
+
acceptedAnswer: { "@type": "Answer", text: item.answer },
|
|
123
|
+
})),
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"@context": "https://schema.org",
|
|
127
|
+
"@type": "HowTo",
|
|
128
|
+
name: "두 대출 상품 비교하기",
|
|
129
|
+
description:
|
|
130
|
+
"두 대출의 현금 흐름을 모델링하고 실질 연간 비용을 비교합니다.",
|
|
131
|
+
step: howTo.map((step, index) => ({
|
|
132
|
+
"@type": "HowToStep",
|
|
133
|
+
position: index + 1,
|
|
134
|
+
name: step.name,
|
|
135
|
+
text: step.text,
|
|
136
|
+
})),
|
|
137
|
+
},
|
|
138
|
+
];
|
|
139
|
+
|
|
140
|
+
export const content: ToolLocaleContent<LoanAprScenarioCalculatorUI> = {
|
|
141
|
+
slug: "loan-apr-scenario-calculator",
|
|
142
|
+
title: "대출 APR 시나리오 계산기",
|
|
143
|
+
description:
|
|
144
|
+
"두 대출 상품의 금리, 상환 일정, 수수료를 비교해 결정 전에 실질 연간 비용을 추정합니다.",
|
|
145
|
+
ui,
|
|
146
|
+
faq,
|
|
147
|
+
bibliography,
|
|
148
|
+
howTo,
|
|
149
|
+
schemas,
|
|
150
|
+
seo: [
|
|
151
|
+
{ type: "title", text: "실질 연간 비용으로 대출 비교하기", level: 2 },
|
|
152
|
+
{
|
|
153
|
+
type: "paragraph",
|
|
154
|
+
html: "<p>광고된 금리가 낮아도 취급 수수료, 월 서비스 비용, 최종 비용이 숨어 있을 수 있습니다. 이 계산기는 두 상품의 세부 정보를 비교 가능한 현금 흐름으로 바꿔 실제로 받는 돈의 비용을 보여 줍니다.</p>",
|
|
155
|
+
},
|
|
156
|
+
{ type: "title", text: "추정에 포함되는 내용", level: 3 },
|
|
157
|
+
{
|
|
158
|
+
type: "paragraph",
|
|
159
|
+
html: "<p>각 상품에 대출 금액, 기간, 명목 연이율 또는 알고 있는 월 상환액과 각 시점의 수수료를 입력합니다. 수령한 순액과 할인된 상환액 및 수수료가 균형을 이루는 월 이율을 찾은 뒤 연율로 환산합니다.</p>",
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
type: "paragraph",
|
|
163
|
+
html: "<p>따라서 신용 비용을 이자율만으로 보지 않습니다. 공식 APR에는 지역별 규칙과 입력하지 않은 조건이 포함될 수 있으므로 결과는 추정치입니다.</p>",
|
|
164
|
+
},
|
|
165
|
+
{ type: "title", text: "결과 읽는 방법", level: 3 },
|
|
166
|
+
{
|
|
167
|
+
type: "list",
|
|
168
|
+
items: [
|
|
169
|
+
"금액과 기간이 비슷할 때 실질 연간 비용을 비교하세요.",
|
|
170
|
+
"총 납부액으로 실제 현금 부담을 확인하세요.",
|
|
171
|
+
"초기 수수료 후 받는 금액을 확인하세요.",
|
|
172
|
+
"일정에서 각 비용이 언제 발생하는지 보세요.",
|
|
173
|
+
],
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
type: "tip",
|
|
177
|
+
title: "최종 기준은 대출기관의 설명서입니다",
|
|
178
|
+
html: "<p>실제 계약을 비교할 때는 같은 조건으로 대출기관의 APR을 확인하세요. 보험, 세금, 변동 금리, 중도상환 비용과 입력하지 못한 수수료를 물어보세요.</p>",
|
|
179
|
+
},
|
|
180
|
+
{ type: "title", text: "시나리오 추정의 한계", level: 3 },
|
|
181
|
+
{
|
|
182
|
+
type: "paragraph",
|
|
183
|
+
html: "<p>이 도구는 동일한 월 상환액, 거치 기간 없음, 시작 시점이나 기간 중 또는 마지막 달의 수수료를 가정합니다. 상환 능력, 승인, 적법성 또는 상품의 공식 APR을 보장하지 않습니다.</p>",
|
|
184
|
+
},
|
|
185
|
+
],
|
|
186
|
+
};
|
|
@@ -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
|
+
};
|