@jjlmoya/utils-finance 1.42.0 → 1.44.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.
Files changed (62) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +3 -1
  3. package/src/entries.ts +7 -1
  4. package/src/index.ts +1 -0
  5. package/src/tests/locale_completeness.test.ts +2 -2
  6. package/src/tests/tool_validation.test.ts +2 -2
  7. package/src/tool/capitalGainsTaxScenarioCalculator/bibliography.astro +11 -0
  8. package/src/tool/capitalGainsTaxScenarioCalculator/bibliography.ts +12 -0
  9. package/src/tool/capitalGainsTaxScenarioCalculator/capital-gains-tax-scenario-calculator.css +469 -0
  10. package/src/tool/capitalGainsTaxScenarioCalculator/component.astro +328 -0
  11. package/src/tool/capitalGainsTaxScenarioCalculator/entry.ts +26 -0
  12. package/src/tool/capitalGainsTaxScenarioCalculator/i18n/de.ts +3 -0
  13. package/src/tool/capitalGainsTaxScenarioCalculator/i18n/en.ts +181 -0
  14. package/src/tool/capitalGainsTaxScenarioCalculator/i18n/es.ts +3 -0
  15. package/src/tool/capitalGainsTaxScenarioCalculator/i18n/fr.ts +3 -0
  16. package/src/tool/capitalGainsTaxScenarioCalculator/i18n/id.ts +3 -0
  17. package/src/tool/capitalGainsTaxScenarioCalculator/i18n/it.ts +3 -0
  18. package/src/tool/capitalGainsTaxScenarioCalculator/i18n/ja.ts +3 -0
  19. package/src/tool/capitalGainsTaxScenarioCalculator/i18n/ko.ts +3 -0
  20. package/src/tool/capitalGainsTaxScenarioCalculator/i18n/nl.ts +3 -0
  21. package/src/tool/capitalGainsTaxScenarioCalculator/i18n/pl.ts +3 -0
  22. package/src/tool/capitalGainsTaxScenarioCalculator/i18n/pt.ts +3 -0
  23. package/src/tool/capitalGainsTaxScenarioCalculator/i18n/ru.ts +3 -0
  24. package/src/tool/capitalGainsTaxScenarioCalculator/i18n/shared.ts +153 -0
  25. package/src/tool/capitalGainsTaxScenarioCalculator/i18n/sv.ts +3 -0
  26. package/src/tool/capitalGainsTaxScenarioCalculator/i18n/tr.ts +3 -0
  27. package/src/tool/capitalGainsTaxScenarioCalculator/i18n/zh.ts +3 -0
  28. package/src/tool/capitalGainsTaxScenarioCalculator/index.ts +11 -0
  29. package/src/tool/capitalGainsTaxScenarioCalculator/logic.test.ts +71 -0
  30. package/src/tool/capitalGainsTaxScenarioCalculator/logic.ts +137 -0
  31. package/src/tool/capitalGainsTaxScenarioCalculator/seo.astro +11 -0
  32. package/src/tool/capitalGainsTaxScenarioCalculator/ui.ts +40 -0
  33. package/src/tool/capitalGainsTaxScenarioCalculator/validation.ts +34 -0
  34. package/src/tool/insuranceDeductibleBreakEvenCalculator/bibliography.astro +10 -0
  35. package/src/tool/insuranceDeductibleBreakEvenCalculator/bibliography.ts +6 -0
  36. package/src/tool/insuranceDeductibleBreakEvenCalculator/component.astro +172 -0
  37. package/src/tool/insuranceDeductibleBreakEvenCalculator/currency.test.ts +13 -0
  38. package/src/tool/insuranceDeductibleBreakEvenCalculator/currency.ts +26 -0
  39. package/src/tool/insuranceDeductibleBreakEvenCalculator/entry.ts +28 -0
  40. package/src/tool/insuranceDeductibleBreakEvenCalculator/i18n/content-factory.ts +147 -0
  41. package/src/tool/insuranceDeductibleBreakEvenCalculator/i18n/de.ts +2 -0
  42. package/src/tool/insuranceDeductibleBreakEvenCalculator/i18n/en.ts +100 -0
  43. package/src/tool/insuranceDeductibleBreakEvenCalculator/i18n/es.ts +2 -0
  44. package/src/tool/insuranceDeductibleBreakEvenCalculator/i18n/fr.ts +2 -0
  45. package/src/tool/insuranceDeductibleBreakEvenCalculator/i18n/id.ts +2 -0
  46. package/src/tool/insuranceDeductibleBreakEvenCalculator/i18n/it.ts +2 -0
  47. package/src/tool/insuranceDeductibleBreakEvenCalculator/i18n/ja.ts +2 -0
  48. package/src/tool/insuranceDeductibleBreakEvenCalculator/i18n/ko.ts +2 -0
  49. package/src/tool/insuranceDeductibleBreakEvenCalculator/i18n/nl.ts +2 -0
  50. package/src/tool/insuranceDeductibleBreakEvenCalculator/i18n/pl.ts +2 -0
  51. package/src/tool/insuranceDeductibleBreakEvenCalculator/i18n/pt.ts +2 -0
  52. package/src/tool/insuranceDeductibleBreakEvenCalculator/i18n/ru.ts +2 -0
  53. package/src/tool/insuranceDeductibleBreakEvenCalculator/i18n/sv.ts +2 -0
  54. package/src/tool/insuranceDeductibleBreakEvenCalculator/i18n/tr.ts +2 -0
  55. package/src/tool/insuranceDeductibleBreakEvenCalculator/i18n/zh.ts +2 -0
  56. package/src/tool/insuranceDeductibleBreakEvenCalculator/index.ts +11 -0
  57. package/src/tool/insuranceDeductibleBreakEvenCalculator/insurance-deductible-break-even-calculator.css +424 -0
  58. package/src/tool/insuranceDeductibleBreakEvenCalculator/logic.test.ts +40 -0
  59. package/src/tool/insuranceDeductibleBreakEvenCalculator/logic.ts +72 -0
  60. package/src/tool/insuranceDeductibleBreakEvenCalculator/seo.astro +11 -0
  61. package/src/tool/insuranceDeductibleBreakEvenCalculator/ui.ts +33 -0
  62. package/src/tools.ts +3 -1
@@ -0,0 +1,153 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import { bibliography } from '../bibliography';
3
+ import type { CapitalGainsTaxScenarioCalculatorUI } from '../ui';
4
+
5
+ type LocalizedContent = {
6
+ title: string;
7
+ description: string;
8
+ ui: CapitalGainsTaxScenarioCalculatorUI;
9
+ seo: {
10
+ compareTitle: string;
11
+ intro: string;
12
+ includesTitle: string;
13
+ includes: string[];
14
+ interpretTitle: string;
15
+ interpret: string;
16
+ currentTitle: string;
17
+ currentDescription: string;
18
+ currentPoints: string[];
19
+ alternativeTitle: string;
20
+ alternativeDescription: string;
21
+ alternativePoints: string[];
22
+ limitsTitle: string;
23
+ limits: string;
24
+ privateTitle: string;
25
+ privateText: string;
26
+ };
27
+ faq: Array<{ question: string; answer: string }>;
28
+ howTo: Array<{ name: string; text: string }>;
29
+ };
30
+
31
+ type SeoCopy = LocalizedContent['seo'];
32
+
33
+ const makeContent = (title: string, description: string, ui: CapitalGainsTaxScenarioCalculatorUI, seo: SeoCopy, faq: LocalizedContent['faq'], howTo: LocalizedContent['howTo']): LocalizedContent => ({ title, description, ui, seo, faq, howTo });
34
+
35
+ const translations: Record<string, LocalizedContent> = {
36
+ de: {
37
+ title: 'Rechner für Kapitalertragsteuerszenarien',
38
+ description: 'Vergleiche den geschätzten Gewinn nach Steuern aus zwei Verkaufsszenarien mit deinen eigenen Kaufpreisen, Kosten, Verbesserungen und einem Steuersatz. Die Berechnung ist eine transparente Planungsschätzung und keine Steuererklärung.',
39
+ ui: {
40
+ labelPurchasePrice: 'Kaufpreis', labelAcquisitionCosts: 'Anschaffungskosten', labelImprovements: 'Verbesserungen', labelSalePrice: 'Aktueller Verkaufspreis', labelSellingCosts: 'Aktuelle Verkaufskosten', labelTaxRate: 'Geschätzter Steuersatz', labelAlternativeSalePrice: 'Alternativer Verkaufspreis', labelAlternativeSellingCosts: 'Alternative Verkaufskosten', labelCurrency: 'Währung', labelCurrentScenario: 'Aktuelles Szenario', labelAlternativeScenario: 'Alternatives Szenario', labelAcquisitionBasis: 'Geschätzte Anschaffungskostenbasis', labelNetSaleValue: 'Nettoverkaufswert', labelGainOrLoss: 'Gewinn oder Verlust', labelEstimatedTax: 'Geschätzte Steuer', labelNetGainAfterTax: 'Geschätzter Gewinn nach Steuern', labelNetProceeds: 'Geschätzter Erlös nach Steuern', labelBetterScenario: 'Szenario mit höherem geschätzten Gewinn', labelCurrentIsBetter: 'Aktueller Verkauf', labelAlternativeIsBetter: 'Alternativer Verkauf', labelSameOutcome: 'Gleiches Ergebnis', labelGainStatus: 'Geschätzter Gewinn', labelLossStatus: 'Geschätzter Verlust', labelBreakEvenStatus: 'Geschätzter Break-even', labelTaxableGainNote: 'In diesem Planungsmodell wird der Steuersatz nur auf einen positiven Gewinn angewendet.', labelLossNote: 'Für diesen Verlust wird keine geschätzte Steuer berechnet. Die örtlichen Regeln können Verluste anders behandeln.', labelVisual: 'Vergleich des geschätzten Gewinns nach Steuern für beide Szenarien', labelComparison: 'Szenarien vergleichen', labelDifference: 'Unterschied', labelCopy: 'Zusammenfassung kopieren', labelCopied: 'Zusammenfassung kopiert', labelReset: 'Beispiel zurücksetzen', labelInvalidInput: 'Wert prüfen', labelMethodTitle: 'So funktioniert die Schätzung', labelMethodText: 'Die geschätzte Anschaffungskostenbasis ist der Kaufpreis zuzüglich Anschaffungskosten und Verbesserungen. Der Nettoverkaufswert ist der Verkaufspreis abzüglich Verkaufskosten. Das Tool zieht die Basis vom Nettoverkaufswert ab und wendet den eingegebenen Prozentsatz nur auf einen positiven Gewinn an. Es ruft keinen Steuersatz ab.', labelPrivacyNote: 'Deine Werte bleiben in diesem Browser. Kein Konto, keine API und keine Serverberechnung sind erforderlich.', labelAmountPlaceholder: '0,00', labelPercentPlaceholder: '0 bis 100',
41
+ },
42
+ seo: { compareTitle: 'Vergleiche zwei Verkaufsentscheidungen mit deinen eigenen Zahlen', intro: 'Bei einer Verkaufsentscheidung zählt mehr als der angegebene Preis. Anschaffungskosten, Verbesserungen und Verkaufskosten verändern den Betrag, der nach dem Geschäft verbleibt. Dieser Rechner vergleicht einen aktuellen Verkauf mit einer Alternative anhand deiner Zahlen und eines von dir gewählten Planungssteuersatzes.', includesTitle: 'Was die Schätzung enthält', includes: ['Geschätzte Anschaffungskostenbasis: Kaufpreis plus Anschaffungskosten und Verbesserungen.', 'Nettoverkaufswert: Verkaufspreis minus Verkaufskosten.', 'Gewinn oder Verlust: Nettoverkaufswert minus geschätzte Anschaffungskostenbasis.', 'Geschätzte Steuer: dein eingegebener Prozentsatz auf einen positiven Gewinn im Modell.', 'Vergleich: der Unterschied beim geschätzten Gewinn nach Steuern zwischen beiden Szenarien.'], interpretTitle: 'So liest du die beiden Szenarien', interpret: 'Nutze das aktuelle Szenario für den Verkauf, den du gerade prüfst. Mit den Alternativfeldern testest du einen anderen Verkaufspreis oder andere Verkaufskosten. Ein höherer Preis bedeutet nicht automatisch einen höheren Gewinn nach Steuern, wenn die zugehörigen Kosten ebenfalls steigen.', currentTitle: 'Aktuelles Szenario', currentDescription: 'Deine erste Reihe von Verkaufsannahmen.', currentPoints: ['Verwendet den aktuellen Verkaufspreis', 'Zieht die aktuellen Verkaufskosten ab', 'Zeigt den geschätzten Gewinn nach Steuern'], alternativeTitle: 'Alternatives Szenario', alternativeDescription: 'Eine zweite Reihe von Verkaufsannahmen.', alternativePoints: ['Testet einen anderen Verkaufspreis', 'Erlaubt andere Verkaufskosten', 'Zeigt den Unterschied sofort'], limitsTitle: 'Wichtige Grenzen einer Kapitalgewinnschätzung', limits: 'Dies ist ein transparentes Planungsmodell, kein länderspezifischer Steuerrechner. Es ruft keine Steuersätze ab und entscheidet nicht, welche Kosten anerkannt werden. Abschreibung, Freibeträge, Inflationsanpassungen, frühere Verluste, Beteiligungsquoten, Sonderregelungen und die gesonderte Zuordnung von Verbesserungen werden nicht modelliert. Prüfe die geltenden Regeln und bewahre deine Belege auf.', privateTitle: 'Ein privater Vergleich direkt im Browser', privateText: 'Du gibst die Zahlen selbst ein und sie werden im Browser verarbeitet. So kannst du schnell Was-wäre-wenn-Szenarien vergleichen, ohne für eine einzelne Entscheidung eine Tabelle aufzubauen.' },
43
+ faq: [{ question: 'Was schätzt dieser Rechner für Kapitalgewinn-Szenarien?', answer: 'Er schätzt Gewinn oder Verlust eines Verkaufs, den im Modell steuerpflichtig verwendeten positiven Gewinn, die Steuer aus deinem eingegebenen Prozentsatz und den verbleibenden Gewinn nach dieser Schätzung. Dabei vergleicht er ein aktuelles Szenario mit einem alternativen Preis und Verkaufskosten.' }, { question: 'Welche Kosten kann ich eingeben?', answer: 'Gib Kaufpreis, Anschaffungskosten und Verbesserungen ein, die du in die geschätzte Basis aufnehmen möchtest. Verkaufskosten werden separat erfasst, weil sie den Nettoverkaufswert reduzieren. Verwende nur Beträge aus deiner eigenen Transaktion und bewahre die Belege auf.' }, { question: 'Kennt der Rechner meinen örtlichen Steuersatz?', answer: 'Nein. Du gibst den Prozentsatz als Planungsannahme ein. Die steuerliche Behandlung kann von Land, Vermögenswert, Eigentum, Zeitpunkten, Freibeträgen, früheren Verlusten und weiteren Tatsachen abhängen.' }, { question: 'Warum ist die geschätzte Steuer bei einem Verlust null?', answer: 'Dieses einfache Modell wendet den eingegebenen Satz nur auf einen positiven Gewinn an. Es entscheidet nicht, ob ein Verlust nach den für dich geltenden Regeln verrechnet, vorgetragen oder gemeldet werden kann.' }, { question: 'Kann ich das Ergebnis für eine Steuererklärung verwenden?', answer: 'Nein. Nutze es, um eigene Szenarien zu vergleichen und Fragen für die Steuerbehörde oder eine qualifizierte Beratung vorzubereiten. Es enthält nicht jede Anpassung oder Meldevorschrift.' }],
44
+ howTo: [{ name: 'Erfasse die Anschaffungsdaten', text: 'Gib deinen Kaufpreis, relevante Anschaffungskosten und Verbesserungen ein, die du als Teil der geschätzten Basis prüfen möchtest.' }, { name: 'Erfasse das aktuelle Verkaufsszenario', text: 'Gib den aktuellen Verkaufspreis und die Verkaufskosten ein. Das Tool zieht die Kosten vor dem Vergleich mit der geschätzten Basis ab.' }, { name: 'Gib deinen Planungssteuersatz ein', text: 'Trage den Prozentsatz ein, den du testen möchtest. Er stammt von dir und wird nicht vom Tool abgerufen.' }, { name: 'Teste die Alternative', text: 'Ändere den alternativen Verkaufspreis oder die Verkaufskosten und prüfe, welches Szenario den höheren geschätzten Gewinn nach dem Prozentsatz hinterlässt.' }],
45
+ },
46
+ es: {
47
+ title: 'Calculadora de escenarios de ganancias patrimoniales',
48
+ description: 'Compara la ganancia estimada después de impuestos de dos escenarios de venta con tu precio de compra, costes, mejoras y tipo fiscal. Es una estimación transparente para planificar, no una declaración tributaria.',
49
+ ui: {
50
+ labelPurchasePrice: 'Precio de compra', labelAcquisitionCosts: 'Costes de adquisición', labelImprovements: 'Mejoras', labelSalePrice: 'Precio de venta actual', labelSellingCosts: 'Costes de venta actuales', labelTaxRate: 'Tipo impositivo estimado', labelAlternativeSalePrice: 'Precio de venta alternativo', labelAlternativeSellingCosts: 'Costes de venta alternativos', labelCurrency: 'Moneda', labelCurrentScenario: 'Escenario actual', labelAlternativeScenario: 'Escenario alternativo', labelAcquisitionBasis: 'Base de adquisición estimada', labelNetSaleValue: 'Valor neto de venta', labelGainOrLoss: 'Ganancia o pérdida', labelEstimatedTax: 'Impuesto estimado', labelNetGainAfterTax: 'Ganancia estimada después de impuestos', labelNetProceeds: 'Importe neto estimado después de impuestos', labelBetterScenario: 'Escenario con mayor ganancia estimada', labelCurrentIsBetter: 'Venta actual', labelAlternativeIsBetter: 'Venta alternativa', labelSameOutcome: 'Mismo resultado', labelGainStatus: 'Ganancia estimada', labelLossStatus: 'Pérdida estimada', labelBreakEvenStatus: 'Punto de equilibrio estimado', labelTaxableGainNote: 'En este modelo de planificación, el tipo se aplica solo a una ganancia positiva.', labelLossNote: 'No se aplica impuesto estimado a esta pérdida. Las normas locales pueden tratar las pérdidas de otra forma.', labelVisual: 'Comparación de la ganancia estimada después de impuestos en ambos escenarios', labelComparison: 'Comparar escenarios', labelDifference: 'Diferencia', labelCopy: 'Copiar resumen', labelCopied: 'Resumen copiado', labelReset: 'Restablecer ejemplo', labelInvalidInput: 'Revisa este valor', labelMethodTitle: 'Cómo funciona esta estimación', labelMethodText: 'La base de adquisición estimada es el precio de compra más los costes de adquisición y las mejoras. El valor neto de venta es el precio de venta menos los costes de venta. La herramienta resta la base al valor neto y aplica el porcentaje indicado solo a una ganancia positiva. No consulta ningún tipo impositivo.', labelPrivacyNote: 'Tus cifras se quedan en este navegador. No se necesita cuenta, API ni cálculo en servidor.', labelAmountPlaceholder: '0,00', labelPercentPlaceholder: 'de 0 a 100',
51
+ },
52
+ seo: { compareTitle: 'Compara dos decisiones de venta con tus propios números', intro: 'Una decisión de venta depende de algo más que del precio anunciado. Los costes de adquisición, las mejoras y los gastos de venta cambian lo que queda después de la operación. Esta calculadora compara una venta actual con una alternativa usando tus cifras y un porcentaje fiscal que eliges para planificar.', includesTitle: 'Qué incluye la estimación', includes: ['Base de adquisición estimada: precio de compra más costes de adquisición y mejoras.', 'Valor neto de venta: precio de venta menos costes de venta.', 'Ganancia o pérdida: valor neto de venta menos base de adquisición estimada.', 'Impuesto estimado: tu porcentaje aplicado a una ganancia positiva en el modelo.', 'Comparación: diferencia de ganancia estimada después de impuestos entre los dos escenarios.'], interpretTitle: 'Cómo interpretar los dos escenarios', interpret: 'Usa el escenario actual para la venta que estás estudiando. Usa los campos alternativos para probar otro precio o unos costes de venta distintos. Un precio mayor no implica automáticamente una ganancia mayor después de impuestos si también suben los costes asociados.', currentTitle: 'Escenario actual', currentDescription: 'Tu primera serie de supuestos de venta.', currentPoints: ['Usa el precio de venta actual', 'Resta los costes de venta actuales', 'Muestra la ganancia estimada después de impuestos'], alternativeTitle: 'Escenario alternativo', alternativeDescription: 'Una segunda serie de supuestos de venta.', alternativePoints: ['Prueba otro precio de venta', 'Permite otros costes de venta', 'Muestra la diferencia al instante'], limitsTitle: 'Límites importantes de una estimación de ganancias patrimoniales', limits: 'Es un modelo transparente de planificación, no una calculadora fiscal específica de una jurisdicción. No consulta tipos ni decide qué costes son admisibles. No modela amortizaciones, exenciones, ajustes por inflación, pérdidas anteriores, porcentajes de propiedad, regímenes especiales ni el reparto separado de mejoras. Confirma las normas aplicables y conserva la documentación antes de declarar.', privateTitle: 'Una comparación privada y local', privateText: 'Introduces las cifras tú y se procesan en el navegador. Es útil para comparar rápidamente escenarios sin montar una hoja de cálculo, manteniendo visibles los supuestos.' },
53
+ faq: [{ question: '¿Qué estima esta calculadora de escenarios de ganancias patrimoniales?', answer: 'Estima la ganancia o pérdida de una venta, la ganancia positiva que usa el modelo como base imponible, el impuesto producido por el porcentaje que introduzcas y la ganancia restante después de esa estimación. Compara un escenario actual con un precio y unos costes de venta alternativos.' }, { question: '¿Qué costes puedo introducir?', answer: 'Introduce el precio de compra, los costes de adquisición y las mejoras que quieras incluir en la base estimada. Introduce los costes de venta aparte porque reducen el valor neto de venta. Usa solo importes de tu propia operación y conserva los justificantes.' }, { question: '¿La calculadora conoce mi tipo local de ganancias patrimoniales?', answer: 'No. Tú introduces el porcentaje como supuesto de planificación. El tratamiento puede depender de la jurisdicción, el activo, la titularidad, las fechas, las exenciones, las pérdidas previas y otros hechos.' }, { question: '¿Por qué el impuesto estimado es cero cuando hay una pérdida?', answer: 'Esta comparación sencilla aplica el tipo introducido solo a una ganancia positiva. No decide si una pérdida puede compensarse, arrastrarse o declararse según las normas que te correspondan.' }, { question: '¿Puedo usar el resultado para la declaración?', answer: 'No. Úsalo para comparar tus escenarios y preparar preguntas para la Agencia Tributaria o un asesor cualificado. No incluye todos los ajustes, regímenes especiales ni reglas de declaración.' }],
54
+ howTo: [{ name: 'Introduce los datos de adquisición', text: 'Añade lo que pagaste, los costes de adquisición relevantes y las mejoras que quieras probar como parte de la base estimada.' }, { name: 'Introduce el escenario de venta actual', text: 'Indica el precio de venta actual y sus costes. La herramienta resta los costes antes de comparar la venta con la base estimada.' }, { name: 'Introduce tu tipo de planificación', text: 'Escribe el porcentaje que quieras probar. Es un supuesto tuyo, no un tipo obtenido por la herramienta.' }, { name: 'Prueba la alternativa', text: 'Cambia el precio de venta alternativo o sus costes y observa qué escenario deja la mayor ganancia estimada después del porcentaje indicado.' }],
55
+ },
56
+ id: makeContent('Kalkulator Skenario Pajak Keuntungan Modal', 'Bandingkan perkiraan keuntungan setelah pajak dari dua skenario penjualan dengan harga beli, biaya, perbaikan, dan tarif pajak Anda. Ini adalah perkiraan perencanaan yang transparan, bukan pelaporan pajak.', {
57
+ labelPurchasePrice: 'Harga beli', labelAcquisitionCosts: 'Biaya akuisisi', labelImprovements: 'Perbaikan', labelSalePrice: 'Harga jual saat ini', labelSellingCosts: 'Biaya penjualan saat ini', labelTaxRate: 'Perkiraan tarif pajak', labelAlternativeSalePrice: 'Harga jual alternatif', labelAlternativeSellingCosts: 'Biaya penjualan alternatif', labelCurrency: 'Mata uang', labelCurrentScenario: 'Skenario saat ini', labelAlternativeScenario: 'Skenario alternatif', labelAcquisitionBasis: 'Dasar akuisisi perkiraan', labelNetSaleValue: 'Nilai penjualan bersih', labelGainOrLoss: 'Keuntungan atau kerugian', labelEstimatedTax: 'Pajak perkiraan', labelNetGainAfterTax: 'Keuntungan perkiraan setelah pajak', labelNetProceeds: 'Hasil bersih perkiraan setelah pajak', labelBetterScenario: 'Skenario dengan keuntungan perkiraan lebih besar', labelCurrentIsBetter: 'Penjualan saat ini', labelAlternativeIsBetter: 'Penjualan alternatif', labelSameOutcome: 'Hasil sama', labelGainStatus: 'Keuntungan perkiraan', labelLossStatus: 'Kerugian perkiraan', labelBreakEvenStatus: 'Titik impas perkiraan', labelTaxableGainNote: 'Dalam model perencanaan ini, tarif hanya diterapkan pada keuntungan positif.', labelLossNote: 'Tidak ada pajak perkiraan yang diterapkan pada kerugian ini. Aturan setempat dapat memperlakukan kerugian secara berbeda.', labelVisual: 'Perbandingan keuntungan perkiraan setelah pajak untuk kedua skenario', labelComparison: 'Bandingkan skenario', labelDifference: 'Perbedaan', labelCopy: 'Salin ringkasan', labelCopied: 'Ringkasan disalin', labelReset: 'Atur ulang contoh', labelInvalidInput: 'Periksa nilai ini', labelMethodTitle: 'Cara kerja perkiraan ini', labelMethodText: 'Dasar akuisisi perkiraan adalah harga beli ditambah biaya akuisisi dan perbaikan. Nilai penjualan bersih adalah harga jual dikurangi biaya penjualan. Alat ini mengurangi dasar dari nilai bersih lalu menerapkan persentase yang Anda masukkan hanya pada keuntungan positif. Alat ini tidak mengambil tarif pajak.', labelPrivacyNote: 'Angka Anda tetap di browser ini. Tidak diperlukan akun, API, atau perhitungan server.', labelAmountPlaceholder: '0,00', labelPercentPlaceholder: '0 hingga 100',
58
+ }, { compareTitle: 'Bandingkan dua keputusan penjualan dengan angka Anda sendiri', intro: 'Keputusan penjualan tidak hanya ditentukan oleh harga utama. Biaya akuisisi, perbaikan, dan biaya penjualan mengubah jumlah yang tersisa setelah transaksi. Kalkulator ini membandingkan penjualan saat ini dengan alternatif menggunakan angka Anda dan persentase pajak yang Anda pilih untuk perencanaan.', includesTitle: 'Yang termasuk dalam perkiraan', includes: ['Dasar akuisisi perkiraan: harga beli ditambah biaya akuisisi dan perbaikan.', 'Nilai penjualan bersih: harga jual dikurangi biaya penjualan.', 'Keuntungan atau kerugian: nilai penjualan bersih dikurangi dasar akuisisi perkiraan.', 'Pajak perkiraan: persentase yang Anda masukkan diterapkan pada keuntungan positif dalam model.', 'Perbandingan: selisih keuntungan perkiraan setelah pajak antara kedua skenario.'], interpretTitle: 'Cara membaca kedua skenario', interpret: 'Gunakan skenario saat ini untuk penjualan yang sedang Anda pertimbangkan. Gunakan kolom alternatif untuk menguji harga jual atau biaya penjualan yang berbeda. Harga yang lebih tinggi tidak selalu berarti keuntungan setelah pajak lebih besar jika biayanya juga naik.', currentTitle: 'Skenario saat ini', currentDescription: 'Rangkaian asumsi penjualan pertama Anda.', currentPoints: ['Menggunakan harga jual saat ini', 'Mengurangi biaya penjualan saat ini', 'Menampilkan keuntungan perkiraan setelah pajak'], alternativeTitle: 'Skenario alternatif', alternativeDescription: 'Rangkaian asumsi penjualan kedua.', alternativePoints: ['Menguji harga jual berbeda', 'Memungkinkan biaya penjualan berbeda', 'Menampilkan selisih dengan segera'], limitsTitle: 'Batas penting perkiraan keuntungan modal', limits: 'Ini adalah model perencanaan transparan, bukan kalkulator pajak untuk yurisdiksi tertentu. Alat ini tidak mencari tarif dan tidak menentukan biaya yang memenuhi syarat. Depresiasi, pengecualian, penyesuaian inflasi, kerugian sebelumnya, pembagian kepemilikan, rezim khusus, dan alokasi perbaikan terpisah tidak dimodelkan. Pastikan aturan yang berlaku dan simpan catatan transaksi.', privateTitle: 'Perbandingan pribadi langsung di browser', privateText: 'Anda memasukkan angka sendiri dan memprosesnya di browser. Ini memudahkan perbandingan cepat tanpa membuat spreadsheet untuk satu keputusan.' }, [{ question: 'Apa yang diperkirakan kalkulator skenario keuntungan modal ini?', answer: 'Alat ini memperkirakan keuntungan atau kerugian dari penjualan, keuntungan positif yang digunakan model sebagai jumlah kena pajak, pajak dari persentase yang Anda masukkan, dan keuntungan tersisa setelah perkiraan tersebut. Alat ini membandingkan skenario saat ini dengan harga dan biaya penjualan alternatif.' }, { question: 'Biaya apa yang dapat saya masukkan?', answer: 'Masukkan harga beli, biaya akuisisi, dan perbaikan yang ingin dimasukkan ke dasar perkiraan. Masukkan biaya penjualan secara terpisah karena mengurangi nilai penjualan bersih. Gunakan jumlah dari transaksi Anda sendiri dan simpan buktinya.' }, { question: 'Apakah kalkulator mengetahui tarif pajak keuntungan modal setempat?', answer: 'Tidak. Anda memasukkan persentase sebagai asumsi perencanaan. Perlakuan pajak dapat bergantung pada yurisdiksi, jenis aset, kepemilikan, tanggal, pengecualian, kerugian sebelumnya, dan fakta lain.' }, { question: 'Mengapa pajak perkiraan nol ketika hasilnya rugi?', answer: 'Perbandingan sederhana ini menerapkan tarif yang dimasukkan hanya pada keuntungan positif. Alat ini tidak menentukan apakah kerugian dapat dikompensasikan, dibawa ke depan, atau dilaporkan menurut aturan yang berlaku.' }, { question: 'Dapatkah hasilnya digunakan untuk pelaporan pajak?', answer: 'Tidak. Gunakan untuk membandingkan skenario Anda dan menyiapkan pertanyaan bagi otoritas pajak atau penasihat yang memenuhi syarat. Alat ini tidak mencakup semua penyesuaian atau aturan pelaporan.' }], [{ name: 'Masukkan angka akuisisi', text: 'Tambahkan harga yang Anda bayar, biaya akuisisi yang relevan, dan perbaikan yang ingin diuji sebagai bagian dari dasar perkiraan.' }, { name: 'Masukkan skenario penjualan saat ini', text: 'Berikan harga jual dan biaya penjualan saat ini. Alat ini mengurangi biaya sebelum membandingkan penjualan dengan dasar perkiraan.' }, { name: 'Masukkan tarif perencanaan', text: 'Ketik persentase yang ingin diuji. Ini adalah asumsi dari Anda, bukan tarif yang diambil alat.' }, { name: 'Uji alternatifnya', text: 'Ubah harga jual alternatif atau biayanya lalu lihat skenario mana yang menyisakan keuntungan perkiraan setelah pajak lebih besar.' }]),
59
+ it: makeContent('Calcolatore di scenari sulle plusvalenze', 'Confronta il guadagno stimato dopo le imposte di due scenari di vendita usando prezzo di acquisto, costi, migliorie e aliquota fiscale. È una stima trasparente per la pianificazione, non una dichiarazione fiscale.', {
60
+ labelPurchasePrice: 'Prezzo di acquisto', labelAcquisitionCosts: 'Costi di acquisto', labelImprovements: 'Migliorie', labelSalePrice: 'Prezzo di vendita attuale', labelSellingCosts: 'Costi di vendita attuali', labelTaxRate: 'Aliquota fiscale stimata', labelAlternativeSalePrice: 'Prezzo di vendita alternativo', labelAlternativeSellingCosts: 'Costi di vendita alternativi', labelCurrency: 'Valuta', labelCurrentScenario: 'Scenario attuale', labelAlternativeScenario: 'Scenario alternativo', labelAcquisitionBasis: 'Base di acquisto stimata', labelNetSaleValue: 'Valore netto di vendita', labelGainOrLoss: 'Guadagno o perdita', labelEstimatedTax: 'Imposta stimata', labelNetGainAfterTax: 'Guadagno stimato dopo le imposte', labelNetProceeds: 'Ricavo netto stimato dopo le imposte', labelBetterScenario: 'Scenario con il guadagno stimato più alto', labelCurrentIsBetter: 'Vendita attuale', labelAlternativeIsBetter: 'Vendita alternativa', labelSameOutcome: 'Stesso risultato', labelGainStatus: 'Guadagno stimato', labelLossStatus: 'Perdita stimata', labelBreakEvenStatus: 'Pareggio stimato', labelTaxableGainNote: 'In questo modello di pianificazione, l\'aliquota si applica solo a un guadagno positivo.', labelLossNote: 'Nessuna imposta stimata viene applicata a questa perdita. Le regole locali possono trattare le perdite in modo diverso.', labelVisual: 'Confronto del guadagno stimato dopo le imposte per entrambi gli scenari', labelComparison: 'Confronta gli scenari', labelDifference: 'Differenza', labelCopy: 'Copia riepilogo', labelCopied: 'Riepilogo copiato', labelReset: 'Ripristina esempio', labelInvalidInput: 'Controlla questo valore', labelMethodTitle: 'Come funziona questa stima', labelMethodText: 'La base di acquisto stimata è il prezzo di acquisto più i costi di acquisto e le migliorie. Il valore netto di vendita è il prezzo di vendita meno i costi di vendita. Lo strumento sottrae la base dal valore netto e applica la percentuale inserita solo a un guadagno positivo. Non recupera alcuna aliquota fiscale.', labelPrivacyNote: 'I tuoi dati restano in questo browser. Non servono account, API o calcoli sul server.', labelAmountPlaceholder: '0,00', labelPercentPlaceholder: 'da 0 a 100',
61
+ }, { compareTitle: 'Confronta due decisioni di vendita con i tuoi numeri', intro: 'Una decisione di vendita dipende da più del prezzo indicato. Costi di acquisto, migliorie e costi di vendita modificano ciò che resta dopo la transazione. Questo calcolatore confronta una vendita attuale con un\'alternativa usando i tuoi dati e una percentuale fiscale scelta per la pianificazione.', includesTitle: 'Cosa include la stima', includes: ['Base di acquisto stimata: prezzo di acquisto più costi di acquisto e migliorie.', 'Valore netto di vendita: prezzo di vendita meno costi di vendita.', 'Guadagno o perdita: valore netto di vendita meno base di acquisto stimata.', 'Imposta stimata: la percentuale inserita applicata a un guadagno positivo nel modello.', 'Confronto: differenza del guadagno stimato dopo le imposte tra i due scenari.'], interpretTitle: 'Come interpretare i due scenari', interpret: 'Usa lo scenario attuale per la vendita che stai valutando. Usa i campi alternativi per provare un prezzo o costi di vendita diversi. Un prezzo più alto non significa automaticamente un guadagno dopo le imposte maggiore se aumentano anche i costi collegati.', currentTitle: 'Scenario attuale', currentDescription: 'La tua prima serie di ipotesi di vendita.', currentPoints: ['Usa il prezzo di vendita attuale', 'Sottrae i costi di vendita attuali', 'Mostra il guadagno stimato dopo le imposte'], alternativeTitle: 'Scenario alternativo', alternativeDescription: 'Una seconda serie di ipotesi di vendita.', alternativePoints: ['Prova un altro prezzo di vendita', 'Permette costi di vendita diversi', 'Mostra subito la differenza'], limitsTitle: 'Limiti importanti di una stima delle plusvalenze', limits: 'È un modello trasparente di pianificazione, non un calcolatore fiscale specifico per una giurisdizione. Non cerca aliquote e non decide quali costi siano ammissibili. Non modella ammortamenti, esenzioni, adeguamenti all\'inflazione, perdite precedenti, quote di proprietà, regimi speciali o l\'allocazione separata delle migliorie. Verifica le regole applicabili e conserva la documentazione.', privateTitle: 'Un confronto privato nel browser', privateText: 'Inserisci tu i dati e vengono elaborati nel browser. Puoi confrontare rapidamente scenari senza creare un foglio di calcolo per una sola decisione.' }, [{ question: 'Cosa stima questo calcolatore di scenari sulle plusvalenze?', answer: 'Stima il guadagno o la perdita di una vendita, il guadagno positivo usato dal modello come importo imponibile, l\'imposta prodotta dalla percentuale inserita e il guadagno residuo dopo la stima. Confronta uno scenario attuale con prezzo e costi di vendita alternativi.' }, { question: 'Quali costi posso inserire?', answer: 'Inserisci prezzo di acquisto, costi di acquisto e migliorie che vuoi includere nella base stimata. Inserisci separatamente i costi di vendita perché riducono il valore netto di vendita. Usa gli importi della tua transazione e conserva le ricevute.' }, { question: 'Il calcolatore conosce la mia aliquota locale sulle plusvalenze?', answer: 'No. Inserisci tu la percentuale come ipotesi di pianificazione. Il trattamento fiscale può dipendere da giurisdizione, bene, proprietà, date, esenzioni, perdite precedenti e altri fatti.' }, { question: 'Perché l\'imposta stimata è zero quando c\'è una perdita?', answer: 'Questo semplice confronto applica l\'aliquota inserita solo a un guadagno positivo. Non stabilisce se una perdita possa essere compensata, riportata o dichiarata secondo le regole applicabili.' }, { question: 'Posso usare il risultato per la dichiarazione dei redditi?', answer: 'No. Usalo per confrontare i tuoi scenari e preparare domande per l\'amministrazione fiscale o un consulente qualificato. Non include tutti gli aggiustamenti, regimi speciali o obblighi di dichiarazione.' }], [{ name: 'Inserisci i dati di acquisto', text: 'Aggiungi il prezzo pagato, i costi di acquisto pertinenti e le migliorie che vuoi provare nella base stimata.' }, { name: 'Inserisci lo scenario di vendita attuale', text: 'Indica il prezzo di vendita attuale e i relativi costi. Lo strumento sottrae i costi prima del confronto con la base stimata.' }, { name: 'Inserisci la tua aliquota di pianificazione', text: 'Digita la percentuale da testare. È un\'ipotesi fornita da te, non un\'aliquota recuperata dallo strumento.' }, { name: 'Prova l\'alternativa', text: 'Modifica il prezzo alternativo o i suoi costi e verifica quale scenario lascia il guadagno stimato dopo le imposte più alto.' }]),
62
+ ja: makeContent('譲渡益税シナリオ計算機', '購入価格、取得費、改良費、売却費用、税率を入力して、2つの売却シナリオの税引後の推定利益を比較します。税務申告ではなく、透明な計画用の概算です。', {
63
+ labelPurchasePrice: '購入価格', labelAcquisitionCosts: '取得費', labelImprovements: '改良費', labelSalePrice: '現在の売却価格', labelSellingCosts: '現在の売却費用', labelTaxRate: '推定税率', labelAlternativeSalePrice: '別の売却価格', labelAlternativeSellingCosts: '別の売却費用', labelCurrency: '通貨', labelCurrentScenario: '現在のシナリオ', labelAlternativeScenario: '別のシナリオ', labelAcquisitionBasis: '推定取得価額', labelNetSaleValue: '売却純額', labelGainOrLoss: '利益または損失', labelEstimatedTax: '推定税額', labelNetGainAfterTax: '税引後の推定利益', labelNetProceeds: '税引後の推定受取額', labelBetterScenario: '税引後の推定利益が大きいシナリオ', labelCurrentIsBetter: '現在の売却', labelAlternativeIsBetter: '別の売却', labelSameOutcome: '同じ結果', labelGainStatus: '推定利益', labelLossStatus: '推定損失', labelBreakEvenStatus: '推定損益分岐点', labelTaxableGainNote: 'この計画モデルでは、税率はプラスの利益にのみ適用されます。', labelLossNote: 'この損失には推定税額を適用していません。現地のルールでは異なる扱いになる場合があります。', labelVisual: '2つのシナリオの税引後推定利益の比較', labelComparison: 'シナリオを比較', labelDifference: '差額', labelCopy: '概要をコピー', labelCopied: '概要をコピーしました', labelReset: '例をリセット', labelInvalidInput: 'この値を確認してください', labelMethodTitle: 'この概算の計算方法', labelMethodText: '推定取得価額は購入価格、取得費、改良費の合計です。売却純額は売却価格から売却費用を引いた金額です。売却純額から取得価額を引き、入力した割合をプラスの利益にだけ適用します。税率の検索は行いません。', labelPrivacyNote: '入力値はこのブラウザ内に留まります。アカウント、API、サーバー計算は必要ありません。', labelAmountPlaceholder: '0.00', labelPercentPlaceholder: '0〜100',
64
+ }, { compareTitle: '自分の数字で2つの売却判断を比較する', intro: '売却判断は表示価格だけでは決まりません。取得費、改良費、売却費用によって取引後に残る金額が変わります。この計算機では、自分の数字と計画用に選んだ税率を使って、現在の売却と別の売却を比較できます。', includesTitle: '概算に含まれるもの', includes: ['推定取得価額:購入価格と取得費、改良費の合計。', '売却純額:売却価格から売却費用を差し引いた金額。', '利益または損失:売却純額から推定取得価額を差し引いた金額。', '推定税額:モデル上のプラスの利益に入力した割合を適用。', '比較:2つのシナリオの税引後推定利益の差。'], interpretTitle: '2つのシナリオの読み方', interpret: '現在のシナリオには、検討中の売却を入力します。別の欄では、売却価格や売却費用を変えて試します。関連費用も増える場合、高い価格が必ずしも大きな税引後利益になるとは限りません。', currentTitle: '現在のシナリオ', currentDescription: '最初の売却条件です。', currentPoints: ['現在の売却価格を使用', '現在の売却費用を差し引く', '税引後の推定利益を表示'], alternativeTitle: '別のシナリオ', alternativeDescription: '2つ目の売却条件です。', alternativePoints: ['別の売却価格を試す', '別の売却費用を入力できる', '差額をすぐに表示'], limitsTitle: '譲渡益の概算に関する重要な制限', limits: 'これは透明な計画モデルであり、特定の地域の税務計算機ではありません。税率を検索したり、どの費用が認められるかを判断したりしません。減価償却、控除、インフレ調整、過去の損失、共有持分、特別制度、改良費の個別配分は扱いません。申告前に適用ルールを確認し、取引記録を保管してください。', privateTitle: 'ブラウザ内で行うプライベートな比較', privateText: '数字は自分で入力し、ブラウザ内で処理されます。1回の判断のために表計算を作らず、複数の仮定をすばやく比較できます。' }, [{ question: 'この譲渡益シナリオ計算機は何を概算しますか?', answer: '売却の利益または損失、モデルで課税対象として使うプラスの利益、入力した割合から得られる推定税額、その後に残る利益を概算します。現在のシナリオと別の売却価格・費用を比較します。' }, { question: 'どの費用を入力できますか?', answer: '推定取得価額に含めたい購入価格、取得費、改良費を入力します。売却費用は売却純額を減らすため、別に入力してください。自分の取引に関係する金額と記録を使ってください。' }, { question: '地域の譲渡益税率を計算機が知っていますか?', answer: 'いいえ。計画用の仮定として割合を入力します。税務上の扱いは地域、資産、所有権、日付、控除、過去の損失などで変わります。' }, { question: '損失のときに推定税額がゼロなのはなぜですか?', answer: 'この単純な比較では、入力した税率をプラスの利益にだけ適用します。損失を相殺、繰越、申告できるかは判断しません。' }, { question: '結果を税務申告に使えますか?', answer: 'いいえ。自分のシナリオ比較や、税務当局・有資格者への質問準備に使ってください。すべての調整、特例、申告ルールは含まれていません。' }], [{ name: '取得に関する数字を入力', text: '支払った金額、関連する取得費、推定取得価額に含めて試す改良費を入力します。' }, { name: '現在の売却シナリオを入力', text: '現在の売却価格と売却費用を入力します。費用を差し引いてから推定取得価額と比較します。' }, { name: '計画用の税率を入力', text: '試したい割合を入力します。これは自分で指定する仮定であり、計算機が取得する税率ではありません。' }, { name: '別の条件を試す', text: '別の売却価格や売却費用を変更し、税引後の推定利益が大きいシナリオを確認します。' }]),
65
+ ko: makeContent('양도소득세 시나리오 계산기', '구매 가격, 취득 비용, 개선 비용, 판매 비용과 세율을 입력해 두 판매 시나리오의 세후 예상 이익을 비교합니다. 세금 신고가 아닌 투명한 계획용 추정치입니다.', {
66
+ labelPurchasePrice: '구매 가격', labelAcquisitionCosts: '취득 비용', labelImprovements: '개선 비용', labelSalePrice: '현재 판매 가격', labelSellingCosts: '현재 판매 비용', labelTaxRate: '예상 세율', labelAlternativeSalePrice: '대안 판매 가격', labelAlternativeSellingCosts: '대안 판매 비용', labelCurrency: '통화', labelCurrentScenario: '현재 시나리오', labelAlternativeScenario: '대안 시나리오', labelAcquisitionBasis: '예상 취득 원가', labelNetSaleValue: '순판매 금액', labelGainOrLoss: '이익 또는 손실', labelEstimatedTax: '예상 세금', labelNetGainAfterTax: '세후 예상 이익', labelNetProceeds: '세후 예상 수령액', labelBetterScenario: '세후 예상 이익이 더 큰 시나리오', labelCurrentIsBetter: '현재 판매', labelAlternativeIsBetter: '대안 판매', labelSameOutcome: '같은 결과', labelGainStatus: '예상 이익', labelLossStatus: '예상 손실', labelBreakEvenStatus: '예상 손익분기점', labelTaxableGainNote: '이 계획 모델에서는 양의 이익에만 세율을 적용합니다.', labelLossNote: '이 손실에는 예상 세금을 적용하지 않습니다. 현지 규정은 손실을 다르게 처리할 수 있습니다.', labelVisual: '두 시나리오의 세후 예상 이익 비교', labelComparison: '시나리오 비교', labelDifference: '차이', labelCopy: '요약 복사', labelCopied: '요약이 복사됨', labelReset: '예시 초기화', labelInvalidInput: '이 값을 확인하세요', labelMethodTitle: '이 추정치의 계산 방법', labelMethodText: '예상 취득 원가는 구매 가격에 취득 비용과 개선 비용을 더한 값입니다. 순판매 금액은 판매 가격에서 판매 비용을 뺀 값입니다. 순판매 금액에서 취득 원가를 빼고 입력한 비율을 양의 이익에만 적용합니다. 세율을 조회하지 않습니다.', labelPrivacyNote: '입력한 수치는 이 브라우저에만 남습니다. 계정, API 또는 서버 계산이 필요하지 않습니다.', labelAmountPlaceholder: '0.00', labelPercentPlaceholder: '0~100',
67
+ }, { compareTitle: '내 숫자로 두 판매 결정을 비교하세요', intro: '판매 결정은 표시 가격만으로 정해지지 않습니다. 취득 비용, 개선 비용과 판매 비용에 따라 거래 후 남는 금액이 달라집니다. 이 계산기는 직접 입력한 수치와 계획용 세율로 현재 판매와 대안 판매를 비교합니다.', includesTitle: '추정치에 포함되는 항목', includes: ['예상 취득 원가: 구매 가격에 취득 비용과 개선 비용을 더한 값.', '순판매 금액: 판매 가격에서 판매 비용을 뺀 값.', '이익 또는 손실: 순판매 금액에서 예상 취득 원가를 뺀 값.', '예상 세금: 모델에서 양의 이익에 입력한 비율을 적용한 값.', '비교: 두 시나리오의 세후 예상 이익 차이.'], interpretTitle: '두 시나리오를 해석하는 방법', interpret: '현재 시나리오에는 지금 검토 중인 판매를 입력합니다. 대안 입력란에서 다른 판매 가격이나 판매 비용을 시험합니다. 관련 비용도 늘어나면 가격이 높아도 세후 이익이 더 크다고 할 수 없습니다.', currentTitle: '현재 시나리오', currentDescription: '첫 번째 판매 가정입니다.', currentPoints: ['현재 판매 가격 사용', '현재 판매 비용 차감', '세후 예상 이익 표시'], alternativeTitle: '대안 시나리오', alternativeDescription: '두 번째 판매 가정입니다.', alternativePoints: ['다른 판매 가격 시험', '다른 판매 비용 입력', '차이를 즉시 표시'], limitsTitle: '양도소득 추정의 중요한 한계', limits: '이 도구는 투명한 계획 모델이며 특정 지역의 세금 계산기가 아닙니다. 세율을 조회하거나 어떤 비용이 인정되는지 판단하지 않습니다. 감가상각, 공제, 인플레이션 조정, 이전 손실, 소유 지분, 특별 제도와 개선 비용의 별도 배분은 포함하지 않습니다. 신고 전에 적용 규정을 확인하고 거래 기록을 보관하세요.', privateTitle: '브라우저에서 처리하는 개인 비교', privateText: '수치는 직접 입력하고 브라우저에서 처리됩니다. 한 번의 결정을 위해 스프레드시트를 만들지 않고 여러 가정을 빠르게 비교할 수 있습니다.' }, [{ question: '이 양도소득 시나리오 계산기는 무엇을 추정하나요?', answer: '판매의 이익 또는 손실, 모델에서 과세 금액으로 사용하는 양의 이익, 입력한 비율로 계산한 세금과 그 후 남는 이익을 추정합니다. 현재 시나리오를 대안 판매 가격 및 비용과 비교합니다.' }, { question: '어떤 비용을 입력할 수 있나요?', answer: '예상 취득 원가에 포함하려는 구매 가격, 취득 비용과 개선 비용을 입력합니다. 판매 비용은 순판매 금액을 줄이므로 따로 입력하세요. 본인의 거래 금액과 기록을 사용하세요.' }, { question: '계산기가 현지 양도소득세율을 알고 있나요?', answer: '아니요. 계획용 가정으로 비율을 직접 입력합니다. 세금 처리는 관할 지역, 자산 종류, 소유권, 날짜, 공제와 이전 손실 등에 따라 달라질 수 있습니다.' }, { question: '손실일 때 예상 세금이 0인 이유는 무엇인가요?', answer: '이 간단한 비교는 입력한 세율을 양의 이익에만 적용합니다. 손실을 상계하거나 이월하거나 신고할 수 있는지는 판단하지 않습니다.' }, { question: '결과를 세금 신고에 사용할 수 있나요?', answer: '아니요. 시나리오를 비교하고 세무 당국이나 자격 있는 상담가에게 물어볼 내용을 준비하는 데 사용하세요. 모든 조정, 특례와 신고 규칙을 포함하지 않습니다.' }], [{ name: '취득 수치 입력', text: '지불한 금액, 관련 취득 비용과 예상 원가에 포함해 시험할 개선 비용을 입력합니다.' }, { name: '현재 판매 시나리오 입력', text: '현재 판매 가격과 판매 비용을 입력합니다. 비용을 차감한 뒤 예상 취득 원가와 비교합니다.' }, { name: '계획용 세율 입력', text: '시험할 비율을 입력합니다. 도구가 조회한 세율이 아니라 직접 정한 가정입니다.' }, { name: '대안 시험', text: '대안 판매 가격이나 비용을 바꾸고 세후 예상 이익이 더 큰 시나리오를 확인합니다.' }]),
68
+ nl: makeContent('Calculator voor scenario\'s met vermogenswinst', 'Vergelijk de geschatte winst na belasting van twee verkoopsituaties met je eigen aankoopprijs, kosten, verbeteringen en belastingtarief. Dit is een transparante planningsschatting, geen belastingaangifte.', {
69
+ labelPurchasePrice: 'Aankoopprijs', labelAcquisitionCosts: 'Aankoopkosten', labelImprovements: 'Verbeteringen', labelSalePrice: 'Huidige verkoopprijs', labelSellingCosts: 'Huidige verkoopkosten', labelTaxRate: 'Geschat belastingtarief', labelAlternativeSalePrice: 'Alternatieve verkoopprijs', labelAlternativeSellingCosts: 'Alternatieve verkoopkosten', labelCurrency: 'Valuta', labelCurrentScenario: 'Huidig scenario', labelAlternativeScenario: 'Alternatief scenario', labelAcquisitionBasis: 'Geschatte aankoopbasis', labelNetSaleValue: 'Netto verkoopwaarde', labelGainOrLoss: 'Winst of verlies', labelEstimatedTax: 'Geschatte belasting', labelNetGainAfterTax: 'Geschatte winst na belasting', labelNetProceeds: 'Geschatte opbrengst na belasting', labelBetterScenario: 'Scenario met de hoogste geschatte winst', labelCurrentIsBetter: 'Huidige verkoop', labelAlternativeIsBetter: 'Alternatieve verkoop', labelSameOutcome: 'Zelfde resultaat', labelGainStatus: 'Geschatte winst', labelLossStatus: 'Geschat verlies', labelBreakEvenStatus: 'Geschat break-evenpunt', labelTaxableGainNote: 'In dit planningsmodel wordt het tarief alleen toegepast op een positieve winst.', labelLossNote: 'Op dit verlies wordt geen geschatte belasting toegepast. Lokale regels kunnen verliezen anders behandelen.', labelVisual: 'Vergelijking van de geschatte winst na belasting voor beide scenario\'s', labelComparison: 'Scenario\'s vergelijken', labelDifference: 'Verschil', labelCopy: 'Samenvatting kopiëren', labelCopied: 'Samenvatting gekopieerd', labelReset: 'Voorbeeld herstellen', labelInvalidInput: 'Controleer deze waarde', labelMethodTitle: 'Zo werkt deze schatting', labelMethodText: 'De geschatte aankoopbasis is de aankoopprijs plus aankoopkosten en verbeteringen. De netto verkoopwaarde is de verkoopprijs min verkoopkosten. De tool trekt de basis van de netto verkoopwaarde af en past het ingevoerde percentage alleen toe op een positieve winst. Er wordt geen belastingtarief opgezocht.', labelPrivacyNote: 'Je cijfers blijven in deze browser. Je hebt geen account, API of serverberekening nodig.', labelAmountPlaceholder: '0,00', labelPercentPlaceholder: '0 tot 100',
70
+ }, { compareTitle: 'Vergelijk twee verkoopbeslissingen met je eigen cijfers', intro: 'Bij een verkoopbeslissing draait het om meer dan de vraagprijs. Aankoopkosten, verbeteringen en verkoopkosten veranderen wat er na de transactie overblijft. Deze calculator vergelijkt een huidige verkoop met een alternatief op basis van je cijfers en een zelfgekozen percentage voor de planning.', includesTitle: 'Wat de schatting bevat', includes: ['Geschatte aankoopbasis: aankoopprijs plus aankoopkosten en verbeteringen.', 'Netto verkoopwaarde: verkoopprijs min verkoopkosten.', 'Winst of verlies: netto verkoopwaarde min geschatte aankoopbasis.', 'Geschatte belasting: je ingevoerde percentage op een positieve winst in het model.', 'Vergelijking: het verschil in geschatte winst na belasting tussen beide scenario\'s.'], interpretTitle: 'De twee scenario\'s lezen', interpret: 'Gebruik het huidige scenario voor de verkoop die je nu onderzoekt. Gebruik de alternatieve velden om een andere prijs of andere verkoopkosten te testen. Een hogere prijs betekent niet vanzelf een hogere winst na belasting als de bijbehorende kosten ook stijgen.', currentTitle: 'Huidig scenario', currentDescription: 'Je eerste reeks verkoopaannames.', currentPoints: ['Gebruikt de huidige verkoopprijs', 'Trekt huidige verkoopkosten af', 'Toont de geschatte winst na belasting'], alternativeTitle: 'Alternatief scenario', alternativeDescription: 'Een tweede reeks verkoopaannames.', alternativePoints: ['Test een andere verkoopprijs', 'Laat andere verkoopkosten toe', 'Toont het verschil direct'], limitsTitle: 'Belangrijke grenzen van een schatting van vermogenswinst', limits: 'Dit is een transparant planningsmodel, geen belastingcalculator voor een specifieke jurisdictie. De tool zoekt geen tarieven op en bepaalt niet welke kosten aftrekbaar zijn. Afschrijving, vrijstellingen, inflatiecorrecties, eerdere verliezen, eigendomsverdeling, bijzondere regelingen en afzonderlijke toerekening van verbeteringen worden niet gemodelleerd. Controleer de toepasselijke regels en bewaar je bewijsstukken.', privateTitle: 'Een privévergelijking in de browser', privateText: 'Je voert de cijfers zelf in en ze worden in de browser verwerkt. Zo vergelijk je snel wat-als-scenario\'s zonder voor één beslissing een spreadsheet te maken.' }, [{ question: 'Wat schat deze calculator voor vermogenswinstscenario\'s?', answer: 'De tool schat de winst of het verlies van een verkoop, de positieve winst die het model als belastbaar bedrag gebruikt, de belasting op basis van je ingevoerde percentage en de resterende winst na die schatting. Hij vergelijkt een huidig scenario met een alternatieve verkoopprijs en verkoopkosten.' }, { question: 'Welke kosten kan ik invoeren?', answer: 'Voer de aankoopprijs, aankoopkosten en verbeteringen in die je in de geschatte basis wilt opnemen. Voer verkoopkosten apart in omdat ze de netto verkoopwaarde verlagen. Gebruik bedragen uit je eigen transactie en bewaar de bewijsstukken.' }, { question: 'Kent de calculator mijn lokale belastingtarief?', answer: 'Nee. Je voert het percentage zelf in als planningsaanname. De fiscale behandeling kan afhangen van jurisdictie, type bezit, eigendom, datums, vrijstellingen, eerdere verliezen en andere feiten.' }, { question: 'Waarom is de geschatte belasting nul bij verlies?', answer: 'Deze eenvoudige vergelijking past het ingevoerde tarief alleen toe op een positieve winst. De tool bepaalt niet of een verlies volgens jouw regels mag worden verrekend, doorgeschoven of aangegeven.' }, { question: 'Kan ik het resultaat gebruiken voor mijn aangifte?', answer: 'Nee. Gebruik het om je eigen scenario\'s te vergelijken en vragen voor de belastingdienst of een gekwalificeerd adviseur voor te bereiden. Niet alle aanpassingen, bijzondere regelingen en aangifteregels zijn opgenomen.' }], [{ name: 'Voer de aankoopgegevens in', text: 'Voeg de betaalde prijs, relevante aankoopkosten en verbeteringen toe die je in de geschatte basis wilt testen.' }, { name: 'Voer het huidige verkoopscenario in', text: 'Geef de huidige verkoopprijs en verkoopkosten op. De tool trekt de kosten af voordat hij met de geschatte basis vergelijkt.' }, { name: 'Voer je planningstarief in', text: 'Vul het percentage in dat je wilt testen. Het is jouw aanname en wordt niet door de tool opgezocht.' }, { name: 'Test het alternatief', text: 'Wijzig de alternatieve prijs of verkoopkosten en kijk welk scenario de hoogste geschatte winst na belasting overlaat.' }]),
71
+ pl: makeContent('Kalkulator scenariuszy zysku kapitałowego', 'Porównaj szacowany zysk po podatku dla dwóch scenariuszy sprzedaży, używając własnej ceny zakupu, kosztów, ulepszeń i stawki podatku. To przejrzysta symulacja planistyczna, a nie deklaracja podatkowa.', {
72
+ labelPurchasePrice: 'Cena zakupu', labelAcquisitionCosts: 'Koszty nabycia', labelImprovements: 'Ulepszenia', labelSalePrice: 'Bieżąca cena sprzedaży', labelSellingCosts: 'Bieżące koszty sprzedaży', labelTaxRate: 'Szacowana stawka podatku', labelAlternativeSalePrice: 'Alternatywna cena sprzedaży', labelAlternativeSellingCosts: 'Alternatywne koszty sprzedaży', labelCurrency: 'Waluta', labelCurrentScenario: 'Obecny scenariusz', labelAlternativeScenario: 'Alternatywny scenariusz', labelAcquisitionBasis: 'Szacowana podstawa nabycia', labelNetSaleValue: 'Wartość netto sprzedaży', labelGainOrLoss: 'Zysk lub strata', labelEstimatedTax: 'Szacowany podatek', labelNetGainAfterTax: 'Szacowany zysk po podatku', labelNetProceeds: 'Szacowane wpływy po podatku', labelBetterScenario: 'Scenariusz z większym szacowanym zyskiem', labelCurrentIsBetter: 'Bieżąca sprzedaż', labelAlternativeIsBetter: 'Alternatywna sprzedaż', labelSameOutcome: 'Ten sam wynik', labelGainStatus: 'Szacowany zysk', labelLossStatus: 'Szacowana strata', labelBreakEvenStatus: 'Szacowany próg rentowności', labelTaxableGainNote: 'W tym modelu planistycznym stawka dotyczy tylko dodatniego zysku.', labelLossNote: 'Do tej straty nie zastosowano szacowanego podatku. Lokalne przepisy mogą traktować straty inaczej.', labelVisual: 'Porównanie szacowanego zysku po podatku dla obu scenariuszy', labelComparison: 'Porównaj scenariusze', labelDifference: 'Różnica', labelCopy: 'Kopiuj podsumowanie', labelCopied: 'Podsumowanie skopiowane', labelReset: 'Przywróć przykład', labelInvalidInput: 'Sprawdź tę wartość', labelMethodTitle: 'Jak działa to oszacowanie', labelMethodText: 'Szacowana podstawa nabycia to cena zakupu powiększona o koszty nabycia i ulepszenia. Wartość netto sprzedaży to cena sprzedaży pomniejszona o koszty sprzedaży. Narzędzie odejmuje podstawę od wartości netto, a następnie stosuje podany procent tylko do dodatniego zysku. Nie pobiera stawki podatku.', labelPrivacyNote: 'Twoje dane pozostają w tej przeglądarce. Konto, API ani obliczenia na serwerze nie są potrzebne.', labelAmountPlaceholder: '0,00', labelPercentPlaceholder: 'od 0 do 100',
73
+ }, { compareTitle: 'Porównaj dwie decyzje sprzedażowe na własnych liczbach', intro: 'Decyzja o sprzedaży zależy od czegoś więcej niż cena ofertowa. Koszty nabycia, ulepszenia i koszty sprzedaży zmieniają kwotę pozostałą po transakcji. Ten kalkulator porównuje bieżącą sprzedaż z alternatywą na podstawie własnych danych i wybranej stawki do planowania.', includesTitle: 'Co obejmuje oszacowanie', includes: ['Szacowana podstawa nabycia: cena zakupu plus koszty nabycia i ulepszenia.', 'Wartość netto sprzedaży: cena sprzedaży minus koszty sprzedaży.', 'Zysk lub strata: wartość netto sprzedaży minus szacowana podstawa nabycia.', 'Szacowany podatek: podany procent zastosowany w modelu do dodatniego zysku.', 'Porównanie: różnica szacowanego zysku po podatku między scenariuszami.'], interpretTitle: 'Jak czytać oba scenariusze', interpret: 'Użyj bieżącego scenariusza dla rozważanej teraz sprzedaży. Pola alternatywne pozwalają sprawdzić inną cenę lub inne koszty sprzedaży. Wyższa cena nie musi oznaczać większego zysku po podatku, jeśli rosną także związane z nią koszty.', currentTitle: 'Obecny scenariusz', currentDescription: 'Pierwszy zestaw założeń sprzedaży.', currentPoints: ['Używa bieżącej ceny sprzedaży', 'Odejmuje bieżące koszty sprzedaży', 'Pokazuje szacowany zysk po podatku'], alternativeTitle: 'Alternatywny scenariusz', alternativeDescription: 'Drugi zestaw założeń sprzedaży.', alternativePoints: ['Testuje inną cenę sprzedaży', 'Pozwala podać inne koszty sprzedaży', 'Od razu pokazuje różnicę'], limitsTitle: 'Ważne ograniczenia szacowania zysku kapitałowego', limits: 'To przejrzysty model planistyczny, a nie kalkulator podatkowy właściwy dla konkretnej jurysdykcji. Nie pobiera stawek i nie rozstrzyga, które koszty są uznawane. Nie obejmuje amortyzacji, zwolnień, korekt inflacyjnych, wcześniejszych strat, udziałów własnościowych, szczególnych reżimów ani osobnego przypisania ulepszeń. Sprawdź właściwe przepisy i zachowaj dokumentację.', privateTitle: 'Prywatne porównanie w przeglądarce', privateText: 'Wprowadzasz własne liczby, a obliczenia odbywają się w przeglądarce. Możesz szybko porównać warianty bez tworzenia arkusza dla jednej decyzji.' }, [{ question: 'Co szacuje ten kalkulator scenariuszy zysku kapitałowego?', answer: 'Szacuje zysk lub stratę ze sprzedaży, dodatni zysk używany przez model jako kwota podlegająca opodatkowaniu, podatek wynikający z podanego procentu oraz zysk pozostały po tym oszacowaniu. Porównuje scenariusz bieżący z alternatywną ceną i kosztami sprzedaży.' }, { question: 'Jakie koszty mogę wprowadzić?', answer: 'Wprowadź cenę zakupu, koszty nabycia i ulepszenia, które chcesz uwzględnić w szacowanej podstawie. Koszty sprzedaży podaj osobno, ponieważ obniżają wartość netto sprzedaży. Używaj kwot z własnej transakcji i zachowaj dowody.' }, { question: 'Czy kalkulator zna mój lokalny podatek od zysku kapitałowego?', answer: 'Nie. Wprowadzasz procent jako założenie planistyczne. Zasady podatkowe mogą zależeć od jurysdykcji, rodzaju aktywa, własności, dat, zwolnień, wcześniejszych strat i innych faktów.' }, { question: 'Dlaczego przy stracie szacowany podatek wynosi zero?', answer: 'To proste porównanie stosuje podaną stawkę wyłącznie do dodatniego zysku. Nie rozstrzyga, czy stratę można odliczyć, przenieść lub wykazać zgodnie z właściwymi przepisami.' }, { question: 'Czy mogę użyć wyniku w zeznaniu podatkowym?', answer: 'Nie. Użyj go do porównania własnych scenariuszy i przygotowania pytań do organu podatkowego lub wykwalifikowanego doradcy. Nie obejmuje wszystkich korekt, wyjątków i zasad raportowania.' }], [{ name: 'Wprowadź dane nabycia', text: 'Dodaj zapłaconą cenę, odpowiednie koszty nabycia i ulepszenia, które chcesz sprawdzić w szacowanej podstawie.' }, { name: 'Wprowadź bieżący scenariusz sprzedaży', text: 'Podaj bieżącą cenę sprzedaży i koszty sprzedaży. Narzędzie odejmie koszty przed porównaniem z szacowaną podstawą.' }, { name: 'Wprowadź stawkę do planowania', text: 'Wpisz procent, który chcesz przetestować. To Twoje założenie, a nie stawka pobrana przez narzędzie.' }, { name: 'Przetestuj alternatywę', text: 'Zmień alternatywną cenę lub koszty sprzedaży i sprawdź, który scenariusz pozostawia większy szacowany zysk po podatku.' }]),
74
+ pt: makeContent('Calculadora de cenários de mais-valias', 'Compare o ganho estimado depois de impostos em dois cenários de venda usando o seu preço de compra, custos, melhorias e taxa fiscal. É uma estimativa transparente para planeamento, não uma declaração fiscal.', {
75
+ labelPurchasePrice: 'Preço de compra', labelAcquisitionCosts: 'Custos de aquisição', labelImprovements: 'Melhorias', labelSalePrice: 'Preço de venda atual', labelSellingCosts: 'Custos de venda atuais', labelTaxRate: 'Taxa de imposto estimada', labelAlternativeSalePrice: 'Preço de venda alternativo', labelAlternativeSellingCosts: 'Custos de venda alternativos', labelCurrency: 'Moeda', labelCurrentScenario: 'Cenário atual', labelAlternativeScenario: 'Cenário alternativo', labelAcquisitionBasis: 'Base de aquisição estimada', labelNetSaleValue: 'Valor líquido da venda', labelGainOrLoss: 'Ganho ou perda', labelEstimatedTax: 'Imposto estimado', labelNetGainAfterTax: 'Ganho estimado depois de impostos', labelNetProceeds: 'Receita líquida estimada depois de impostos', labelBetterScenario: 'Cenário com maior ganho estimado', labelCurrentIsBetter: 'Venda atual', labelAlternativeIsBetter: 'Venda alternativa', labelSameOutcome: 'Mesmo resultado', labelGainStatus: 'Ganho estimado', labelLossStatus: 'Perda estimada', labelBreakEvenStatus: 'Ponto de equilíbrio estimado', labelTaxableGainNote: 'Neste modelo de planeamento, a taxa aplica-se apenas a um ganho positivo.', labelLossNote: 'Não é aplicado imposto estimado a esta perda. As regras locais podem tratar as perdas de forma diferente.', labelVisual: 'Comparação do ganho estimado depois de impostos nos dois cenários', labelComparison: 'Comparar cenários', labelDifference: 'Diferença', labelCopy: 'Copiar resumo', labelCopied: 'Resumo copiado', labelReset: 'Repor exemplo', labelInvalidInput: 'Verifique este valor', labelMethodTitle: 'Como funciona esta estimativa', labelMethodText: 'A base de aquisição estimada é o preço de compra mais os custos de aquisição e as melhorias. O valor líquido da venda é o preço de venda menos os custos de venda. A ferramenta subtrai a base ao valor líquido e aplica a percentagem introduzida apenas a um ganho positivo. Não pesquisa nenhuma taxa de imposto.', labelPrivacyNote: 'Os seus valores ficam neste navegador. Não é necessária conta, API ou cálculo no servidor.', labelAmountPlaceholder: '0,00', labelPercentPlaceholder: 'de 0 a 100',
76
+ }, { compareTitle: 'Compare duas decisões de venda com os seus próprios números', intro: 'Uma decisão de venda depende de mais do que o preço anunciado. Os custos de aquisição, as melhorias e os custos de venda alteram o valor que fica depois da operação. Esta calculadora compara uma venda atual com uma alternativa usando os seus valores e uma percentagem fiscal escolhida para planeamento.', includesTitle: 'O que inclui a estimativa', includes: ['Base de aquisição estimada: preço de compra mais custos de aquisição e melhorias.', 'Valor líquido da venda: preço de venda menos custos de venda.', 'Ganho ou perda: valor líquido da venda menos base de aquisição estimada.', 'Imposto estimado: a sua percentagem aplicada a um ganho positivo no modelo.', 'Comparação: diferença do ganho estimado depois de impostos entre os dois cenários.'], interpretTitle: 'Como interpretar os dois cenários', interpret: 'Use o cenário atual para a venda que está a considerar. Use os campos alternativos para testar outro preço ou outros custos de venda. Um preço superior não garante um ganho depois de impostos maior se os custos associados também aumentarem.', currentTitle: 'Cenário atual', currentDescription: 'O seu primeiro conjunto de pressupostos de venda.', currentPoints: ['Usa o preço de venda atual', 'Subtrai os custos de venda atuais', 'Mostra o ganho estimado depois de impostos'], alternativeTitle: 'Cenário alternativo', alternativeDescription: 'Um segundo conjunto de pressupostos de venda.', alternativePoints: ['Testa outro preço de venda', 'Permite outros custos de venda', 'Mostra a diferença de imediato'], limitsTitle: 'Limites importantes de uma estimativa de mais-valias', limits: 'É um modelo transparente de planeamento, não um calculador fiscal específico de uma jurisdição. Não pesquisa taxas nem decide que custos são aceites. Não modela depreciação, isenções, ajustamentos de inflação, perdas anteriores, percentagens de propriedade, regimes especiais ou a afetação separada de melhorias. Confirme as regras aplicáveis e guarde os comprovativos.', privateTitle: 'Uma comparação privada no navegador', privateText: 'Introduz os valores e eles são processados no navegador. Assim pode comparar rapidamente cenários sem criar uma folha de cálculo para uma única decisão.' }, [{ question: 'O que estima esta calculadora de cenários de mais-valias?', answer: 'Estima o ganho ou a perda de uma venda, o ganho positivo usado pelo modelo como valor tributável, o imposto produzido pela percentagem introduzida e o ganho restante depois dessa estimativa. Compara um cenário atual com um preço e custos de venda alternativos.' }, { question: 'Que custos posso introduzir?', answer: 'Introduza o preço de compra, os custos de aquisição e as melhorias que quer incluir na base estimada. Introduza os custos de venda separadamente porque reduzem o valor líquido da venda. Use valores da sua própria operação e guarde os comprovativos.' }, { question: 'A calculadora conhece a minha taxa local de imposto sobre mais-valias?', answer: 'Não. Introduz a percentagem como pressuposto de planeamento. O tratamento fiscal pode depender da jurisdição, do ativo, da propriedade, das datas, das isenções, das perdas anteriores e de outros factos.' }, { question: 'Porque é que o imposto estimado é zero quando existe uma perda?', answer: 'Esta comparação simples aplica a taxa introduzida apenas a um ganho positivo. Não decide se uma perda pode ser compensada, reportada ou declarada segundo as regras aplicáveis.' }, { question: 'Posso usar o resultado na declaração fiscal?', answer: 'Não. Use-o para comparar os seus cenários e preparar perguntas para a autoridade tributária ou um consultor qualificado. Não inclui todos os ajustamentos, regimes especiais e regras de declaração.' }], [{ name: 'Introduza os dados de aquisição', text: 'Adicione o que pagou, os custos de aquisição relevantes e as melhorias que quer testar na base estimada.' }, { name: 'Introduza o cenário de venda atual', text: 'Indique o preço de venda atual e os custos de venda. A ferramenta subtrai os custos antes de comparar com a base estimada.' }, { name: 'Introduza a taxa de planeamento', text: 'Escreva a percentagem que quer testar. É um pressuposto seu, não uma taxa obtida pela ferramenta.' }, { name: 'Teste a alternativa', text: 'Altere o preço de venda alternativo ou os seus custos e veja qual cenário deixa o maior ganho estimado depois de impostos.' }]),
77
+ ru: makeContent('Калькулятор сценариев налога на прирост капитала', 'Сравните расчётную прибыль после налога для двух сценариев продажи, указав цену покупки, расходы, улучшения и налоговую ставку. Это прозрачная оценка для планирования, а не налоговая декларация.', {
78
+ labelPurchasePrice: 'Цена покупки', labelAcquisitionCosts: 'Расходы на приобретение', labelImprovements: 'Улучшения', labelSalePrice: 'Текущая цена продажи', labelSellingCosts: 'Текущие расходы на продажу', labelTaxRate: 'Расчётная налоговая ставка', labelAlternativeSalePrice: 'Альтернативная цена продажи', labelAlternativeSellingCosts: 'Альтернативные расходы на продажу', labelCurrency: 'Валюта', labelCurrentScenario: 'Текущий сценарий', labelAlternativeScenario: 'Альтернативный сценарий', labelAcquisitionBasis: 'Расчётная стоимость приобретения', labelNetSaleValue: 'Чистая стоимость продажи', labelGainOrLoss: 'Прибыль или убыток', labelEstimatedTax: 'Расчётный налог', labelNetGainAfterTax: 'Расчётная прибыль после налога', labelNetProceeds: 'Расчётная сумма после налога', labelBetterScenario: 'Сценарий с большей расчётной прибылью', labelCurrentIsBetter: 'Текущая продажа', labelAlternativeIsBetter: 'Альтернативная продажа', labelSameOutcome: 'Одинаковый результат', labelGainStatus: 'Расчётная прибыль', labelLossStatus: 'Расчётный убыток', labelBreakEvenStatus: 'Расчётная точка безубыточности', labelTaxableGainNote: 'В этой плановой модели ставка применяется только к положительной прибыли.', labelLossNote: 'К этому убытку расчётный налог не применяется. Местные правила могут учитывать убытки иначе.', labelVisual: 'Сравнение расчётной прибыли после налога для двух сценариев', labelComparison: 'Сравнить сценарии', labelDifference: 'Разница', labelCopy: 'Скопировать сводку', labelCopied: 'Сводка скопирована', labelReset: 'Сбросить пример', labelInvalidInput: 'Проверьте это значение', labelMethodTitle: 'Как работает оценка', labelMethodText: 'Расчётная стоимость приобретения равна цене покупки плюс расходы на приобретение и улучшения. Чистая стоимость продажи равна цене продажи минус расходы на продажу. Инструмент вычитает стоимость приобретения из чистой стоимости продажи и применяет введённый процент только к положительной прибыли. Ставка налога не запрашивается.', labelPrivacyNote: 'Ваши цифры остаются в этом браузере. Аккаунт, API и расчёты на сервере не нужны.', labelAmountPlaceholder: '0,00', labelPercentPlaceholder: 'от 0 до 100',
79
+ }, { compareTitle: 'Сравните два решения о продаже на собственных данных', intro: 'Решение о продаже зависит не только от указанной цены. Расходы на приобретение, улучшения и продажу меняют сумму, которая остаётся после сделки. Этот калькулятор сравнивает текущую продажу с альтернативой по вашим цифрам и выбранному проценту для планирования.', includesTitle: 'Что входит в оценку', includes: ['Расчётная стоимость приобретения: цена покупки плюс расходы на приобретение и улучшения.', 'Чистая стоимость продажи: цена продажи минус расходы на продажу.', 'Прибыль или убыток: чистая стоимость продажи минус расчётная стоимость приобретения.', 'Расчётный налог: введённый процент от положительной прибыли в модели.', 'Сравнение: разница расчётной прибыли после налога между сценариями.'], interpretTitle: 'Как читать два сценария', interpret: 'Используйте текущий сценарий для продажи, которую рассматриваете сейчас. В альтернативных полях проверьте другую цену или другие расходы на продажу. Более высокая цена не обязательно даёт большую прибыль после налога, если растут связанные расходы.', currentTitle: 'Текущий сценарий', currentDescription: 'Ваш первый набор условий продажи.', currentPoints: ['Использует текущую цену продажи', 'Вычитает текущие расходы на продажу', 'Показывает расчётную прибыль после налога'], alternativeTitle: 'Альтернативный сценарий', alternativeDescription: 'Второй набор условий продажи.', alternativePoints: ['Проверяет другую цену продажи', 'Позволяет указать другие расходы', 'Сразу показывает разницу'], limitsTitle: 'Важные ограничения оценки прироста капитала', limits: 'Это прозрачная модель планирования, а не налоговый калькулятор конкретной юрисдикции. Он не ищет ставки и не определяет, какие расходы учитываются. Амортизация, льготы, поправки на инфляцию, прошлые убытки, доли владения, специальные режимы и отдельное распределение улучшений не моделируются. Проверьте применимые правила и сохраните документы.', privateTitle: 'Сравнение обрабатывается в браузере', privateText: 'Вы вводите собственные цифры, и они обрабатываются в браузере. Можно быстро сравнить варианты без создания таблицы для одного решения.' }, [{ question: 'Что оценивает этот калькулятор сценариев прироста капитала?', answer: 'Он оценивает прибыль или убыток от продажи, положительную прибыль, которую модель использует как облагаемую сумму, налог по введённому проценту и оставшуюся прибыль. Текущий сценарий сравнивается с альтернативной ценой и расходами продажи.' }, { question: 'Какие расходы можно ввести?', answer: 'Введите цену покупки, расходы на приобретение и улучшения, которые хотите включить в расчётную стоимость. Расходы на продажу указываются отдельно, поскольку уменьшают чистую стоимость продажи. Используйте суммы собственной сделки и сохраняйте подтверждения.' }, { question: 'Знает ли калькулятор мою местную ставку налога?', answer: 'Нет. Вы вводите процент как плановое допущение. Налогообложение зависит от юрисдикции, вида актива, владения, дат, льгот, прошлых убытков и других обстоятельств.' }, { question: 'Почему при убытке расчётный налог равен нулю?', answer: 'Это простое сравнение применяет введённую ставку только к положительной прибыли. Оно не определяет, можно ли зачесть, перенести или заявить убыток по действующим правилам.' }, { question: 'Можно ли использовать результат для декларации?', answer: 'Нет. Используйте его для сравнения собственных вариантов и подготовки вопросов налоговому органу или квалифицированному консультанту. Все корректировки, специальные режимы и правила отчётности не учтены.' }], [{ name: 'Введите данные приобретения', text: 'Добавьте уплаченную цену, подходящие расходы на приобретение и улучшения для проверки в расчётной стоимости.' }, { name: 'Введите текущий сценарий продажи', text: 'Укажите текущую цену и расходы на продажу. Инструмент вычтет расходы перед сравнением с расчётной стоимостью.' }, { name: 'Введите ставку для планирования', text: 'Укажите процент, который хотите проверить. Это ваше допущение, а не ставка, полученная инструментом.' }, { name: 'Проверьте альтернативу', text: 'Измените альтернативную цену или расходы и посмотрите, какой сценарий оставляет большую расчётную прибыль после налога.' }]),
80
+ sv: makeContent('Kalkylator för scenarier med kapitalvinst', 'Jämför uppskattad vinst efter skatt i två försäljningsscenarier med ditt eget inköpspris, kostnader, förbättringar och skattesats. Det är en transparent planeringsuppskattning, inte en skattedeklaration.', {
81
+ labelPurchasePrice: 'Inköpspris', labelAcquisitionCosts: 'Förvärvskostnader', labelImprovements: 'Förbättringar', labelSalePrice: 'Aktuellt försäljningspris', labelSellingCosts: 'Aktuella försäljningskostnader', labelTaxRate: 'Uppskattad skattesats', labelAlternativeSalePrice: 'Alternativt försäljningspris', labelAlternativeSellingCosts: 'Alternativa försäljningskostnader', labelCurrency: 'Valuta', labelCurrentScenario: 'Nuvarande scenario', labelAlternativeScenario: 'Alternativt scenario', labelAcquisitionBasis: 'Uppskattat anskaffningsvärde', labelNetSaleValue: 'Nettovärde vid försäljning', labelGainOrLoss: 'Vinst eller förlust', labelEstimatedTax: 'Uppskattad skatt', labelNetGainAfterTax: 'Uppskattad vinst efter skatt', labelNetProceeds: 'Uppskattat nettobelopp efter skatt', labelBetterScenario: 'Scenario med större uppskattad vinst', labelCurrentIsBetter: 'Aktuell försäljning', labelAlternativeIsBetter: 'Alternativ försäljning', labelSameOutcome: 'Samma resultat', labelGainStatus: 'Uppskattad vinst', labelLossStatus: 'Uppskattad förlust', labelBreakEvenStatus: 'Uppskattad nollpunkt', labelTaxableGainNote: 'I denna planeringsmodell tillämpas skattesatsen bara på en positiv vinst.', labelLossNote: 'Ingen uppskattad skatt tillämpas på denna förlust. Lokala regler kan behandla förluster på annat sätt.', labelVisual: 'Jämförelse av uppskattad vinst efter skatt för båda scenarierna', labelComparison: 'Jämför scenarier', labelDifference: 'Skillnad', labelCopy: 'Kopiera sammanfattning', labelCopied: 'Sammanfattning kopierad', labelReset: 'Återställ exempel', labelInvalidInput: 'Kontrollera värdet', labelMethodTitle: 'Så fungerar uppskattningen', labelMethodText: 'Det uppskattade anskaffningsvärdet är inköpspriset plus förvärvskostnader och förbättringar. Nettovärdet vid försäljning är försäljningspriset minus försäljningskostnader. Verktyget drar anskaffningsvärdet från nettovärdet och tillämpar den angivna procenten bara på en positiv vinst. Ingen skattesats hämtas automatiskt.', labelPrivacyNote: 'Dina siffror stannar i den här webbläsaren. Inget konto, API eller serverberäkning behövs.', labelAmountPlaceholder: '0,00', labelPercentPlaceholder: '0 till 100',
82
+ }, { compareTitle: 'Jämför två försäljningsbeslut med dina egna siffror', intro: 'Ett försäljningsbeslut handlar om mer än det annonserade priset. Förvärvskostnader, förbättringar och försäljningskostnader ändrar beloppet som återstår efter transaktionen. Kalkylatorn jämför en aktuell försäljning med ett alternativ utifrån dina siffror och en procentsats som du väljer för planering.', includesTitle: 'Det här ingår i uppskattningen', includes: ['Uppskattat anskaffningsvärde: inköpspris plus förvärvskostnader och förbättringar.', 'Nettovärde vid försäljning: försäljningspris minus försäljningskostnader.', 'Vinst eller förlust: nettovärde vid försäljning minus uppskattat anskaffningsvärde.', 'Uppskattad skatt: din angivna procentsats på en positiv vinst i modellen.', 'Jämförelse: skillnaden i uppskattad vinst efter skatt mellan scenarierna.'], interpretTitle: 'Så tolkar du scenarierna', interpret: 'Använd det nuvarande scenariot för försäljningen du överväger. Använd de alternativa fälten för att testa ett annat pris eller andra försäljningskostnader. Ett högre pris ger inte automatiskt större vinst efter skatt om kostnaderna också ökar.', currentTitle: 'Nuvarande scenario', currentDescription: 'Dina första antaganden om försäljningen.', currentPoints: ['Använder aktuellt försäljningspris', 'Drar av aktuella försäljningskostnader', 'Visar uppskattad vinst efter skatt'], alternativeTitle: 'Alternativt scenario', alternativeDescription: 'En andra uppsättning försäljningsantaganden.', alternativePoints: ['Testar ett annat försäljningspris', 'Tillåter andra försäljningskostnader', 'Visar skillnaden direkt'], limitsTitle: 'Viktiga begränsningar för en uppskattad kapitalvinst', limits: 'Detta är en transparent planeringsmodell, inte en skatteberäkning för en viss jurisdiktion. Den hämtar inte skattesatser och avgör inte vilka kostnader som får räknas med. Avskrivningar, undantag, inflationsjusteringar, tidigare förluster, ägarandelar, specialregler och separat fördelning av förbättringar ingår inte. Kontrollera reglerna som gäller för dig och spara underlagen.', privateTitle: 'En privat jämförelse i webbläsaren', privateText: 'Du matar in siffrorna själv och de behandlas i webbläsaren. Därför kan du snabbt jämföra tänkbara scenarier utan att skapa ett kalkylblad för ett enda beslut.' }, [{ question: 'Vad uppskattar kalkylatorn för kapitalvinstscenarier?', answer: 'Den uppskattar vinst eller förlust från en försäljning, den positiva vinst som modellen använder som beskattningsbart belopp, skatten enligt din angivna procentsats och vinsten som återstår. Ett aktuellt scenario jämförs med ett alternativt pris och alternativa försäljningskostnader.' }, { question: 'Vilka kostnader kan jag ange?', answer: 'Ange inköpspris, förvärvskostnader och förbättringar som du vill ta med i det uppskattade anskaffningsvärdet. Ange försäljningskostnader separat eftersom de minskar nettovärdet. Använd belopp från din egen transaktion och spara underlagen.' }, { question: 'Känner kalkylatorn till min lokala skattesats?', answer: 'Nej. Du anger procentsatsen som ett planeringsantagande. Skattebehandlingen kan bero på jurisdiktion, tillgång, ägande, datum, undantag, tidigare förluster och andra omständigheter.' }, { question: 'Varför är den uppskattade skatten noll vid en förlust?', answer: 'Den här enkla jämförelsen tillämpar den angivna satsen bara på en positiv vinst. Den avgör inte om en förlust kan kvittas, föras vidare eller deklareras enligt reglerna som gäller för dig.' }, { question: 'Kan jag använda resultatet i deklarationen?', answer: 'Nej. Använd det för att jämföra dina scenarier och förbereda frågor till Skatteverket eller en kvalificerad rådgivare. Alla justeringar, specialregler och deklarationskrav ingår inte.' }], [{ name: 'Ange förvärvsuppgifterna', text: 'Lägg till vad du betalade, relevanta förvärvskostnader och förbättringar som du vill testa i det uppskattade anskaffningsvärdet.' }, { name: 'Ange det aktuella försäljningsscenariot', text: 'Fyll i aktuellt försäljningspris och försäljningskostnader. Verktyget drar av kostnaderna före jämförelsen.' }, { name: 'Ange din planeringssats', text: 'Skriv in procentsatsen du vill testa. Det är ett antagande från dig, inte en sats som hämtas av verktyget.' }, { name: 'Testa alternativet', text: 'Ändra det alternativa priset eller kostnaderna och se vilket scenario som lämnar störst uppskattad vinst efter skatt.' }]),
83
+ tr: makeContent('Sermaye kazancı vergisi senaryo hesaplayıcısı', 'Kendi alış fiyatınızı, maliyetlerinizi, iyileştirmelerinizi ve vergi oranınızı kullanarak iki satış senaryosundaki tahmini vergi sonrası kazancı karşılaştırın. Bu, vergi beyannamesi değil, şeffaf bir planlama tahminidir.', {
84
+ labelPurchasePrice: 'Alış fiyatı', labelAcquisitionCosts: 'Edinim maliyetleri', labelImprovements: 'İyileştirmeler', labelSalePrice: 'Mevcut satış fiyatı', labelSellingCosts: 'Mevcut satış maliyetleri', labelTaxRate: 'Tahmini vergi oranı', labelAlternativeSalePrice: 'Alternatif satış fiyatı', labelAlternativeSellingCosts: 'Alternatif satış maliyetleri', labelCurrency: 'Para birimi', labelCurrentScenario: 'Mevcut senaryo', labelAlternativeScenario: 'Alternatif senaryo', labelAcquisitionBasis: 'Tahmini edinim bedeli', labelNetSaleValue: 'Net satış değeri', labelGainOrLoss: 'Kazanç veya zarar', labelEstimatedTax: 'Tahmini vergi', labelNetGainAfterTax: 'Vergi sonrası tahmini kazanç', labelNetProceeds: 'Vergi sonrası tahmini net tutar', labelBetterScenario: 'Tahmini kazancı daha yüksek senaryo', labelCurrentIsBetter: 'Mevcut satış', labelAlternativeIsBetter: 'Alternatif satış', labelSameOutcome: 'Aynı sonuç', labelGainStatus: 'Tahmini kazanç', labelLossStatus: 'Tahmini zarar', labelBreakEvenStatus: 'Tahmini başa baş noktası', labelTaxableGainNote: 'Bu planlama modelinde oran yalnızca pozitif kazanca uygulanır.', labelLossNote: 'Bu zarara tahmini vergi uygulanmaz. Yerel kurallar zararları farklı ele alabilir.', labelVisual: 'İki senaryonun vergi sonrası tahmini kazanç karşılaştırması', labelComparison: 'Senaryoları karşılaştır', labelDifference: 'Fark', labelCopy: 'Özeti kopyala', labelCopied: 'Özet kopyalandı', labelReset: 'Örneği sıfırla', labelInvalidInput: 'Bu değeri kontrol edin', labelMethodTitle: 'Bu tahmin nasıl çalışır?', labelMethodText: 'Tahmini edinim bedeli alış fiyatı, edinim maliyetleri ve iyileştirmelerin toplamıdır. Net satış değeri satış fiyatından satış maliyetlerinin çıkarılmasıyla bulunur. Araç, net değerden edinim bedelini çıkarır ve girilen yüzdeyi yalnızca pozitif kazanca uygular. Vergi oranı aramaz.', labelPrivacyNote: 'Rakamlarınız bu tarayıcıda kalır. Hesap için hesap, API veya sunucu gerekmez.', labelAmountPlaceholder: '0,00', labelPercentPlaceholder: '0 ile 100 arası',
85
+ }, { compareTitle: 'Kendi rakamlarınızla iki satış kararını karşılaştırın', intro: 'Satış kararı yalnızca ilan edilen fiyata bağlı değildir. Edinim maliyetleri, iyileştirmeler ve satış maliyetleri işlemden sonra kalan tutarı değiştirir. Bu hesaplayıcı, kendi rakamlarınız ve planlama için seçtiğiniz yüzdeyle mevcut satışı alternatif bir senaryoyla karşılaştırır.', includesTitle: 'Tahmine dahil olanlar', includes: ['Tahmini edinim bedeli: alış fiyatı artı edinim maliyetleri ve iyileştirmeler.', 'Net satış değeri: satış fiyatı eksi satış maliyetleri.', 'Kazanç veya zarar: net satış değeri eksi tahmini edinim bedeli.', 'Tahmini vergi: modelde pozitif kazanca uygulanan girdiğiniz yüzde.', 'Karşılaştırma: iki senaryo arasındaki vergi sonrası tahmini kazanç farkı.'], interpretTitle: 'İki senaryo nasıl yorumlanır?', interpret: 'Şu anda değerlendirdiğiniz satış için mevcut senaryoyu kullanın. Alternatif alanlarla farklı bir satış fiyatını veya satış maliyetini deneyin. İlgili maliyetler de artıyorsa daha yüksek fiyat otomatik olarak daha büyük vergi sonrası kazanç anlamına gelmez.', currentTitle: 'Mevcut senaryo', currentDescription: 'İlk satış varsayımlarınız.', currentPoints: ['Mevcut satış fiyatını kullanır', 'Mevcut satış maliyetlerini çıkarır', 'Vergi sonrası tahmini kazancı gösterir'], alternativeTitle: 'Alternatif senaryo', alternativeDescription: 'İkinci satış varsayımları.', alternativePoints: ['Farklı satış fiyatını test eder', 'Farklı satış maliyetlerine izin verir', 'Farkı hemen gösterir'], limitsTitle: 'Sermaye kazancı tahmininin önemli sınırları', limits: 'Bu, belirli bir yargı alanına ait vergi hesaplayıcısı değil, şeffaf bir planlama modelidir. Oranları aramaz ve hangi maliyetlerin kabul edildiğine karar vermez. Amortisman, istisnalar, enflasyon düzeltmeleri, önceki zararlar, ortaklık payları, özel rejimler ve iyileştirmelerin ayrı dağıtımı modellenmez. Uygulanabilir kuralları doğrulayın ve işlem kayıtlarını saklayın.', privateTitle: 'Tarayıcıda özel bir karşılaştırma', privateText: 'Rakamları siz girersiniz ve tarayıcıda işlenir. Böylece tek bir karar için tablo hazırlamadan senaryoları hızlıca karşılaştırabilirsiniz.' }, [{ question: 'Bu sermaye kazancı senaryo hesaplayıcısı neyi tahmin eder?', answer: 'Bir satıştan elde edilen kazanç veya zararı, modelin vergilendirilebilir tutar olarak kullandığı pozitif kazancı, girdiğiniz yüzdeye göre tahmini vergiyi ve sonrasında kalan kazancı tahmin eder. Mevcut senaryoyu alternatif fiyat ve satış maliyetleriyle karşılaştırır.' }, { question: 'Hangi maliyetleri girebilirim?', answer: 'Tahmini edinim bedeline dahil etmek istediğiniz alış fiyatını, edinim maliyetlerini ve iyileştirmeleri girin. Satış maliyetlerini ayrı girin; çünkü net satış değerini azaltırlar. Kendi işleminize ait tutarları ve kayıtları kullanın.' }, { question: 'Hesaplayıcı yerel sermaye kazancı vergi oranımı biliyor mu?', answer: 'Hayır. Yüzdeyi planlama varsayımı olarak siz girersiniz. Vergi uygulaması yargı alanına, varlığa, mülkiyete, tarihlere, istisnalara, önceki zararlara ve diğer koşullara bağlı olabilir.' }, { question: 'Zarar olduğunda tahmini vergi neden sıfır?', answer: 'Bu basit karşılaştırma, girilen oranı yalnızca pozitif kazanca uygular. Zararın ilgili kurallara göre mahsup edilip edilemeyeceğine, devredilemeyeceğine veya bildirilemeyeceğine karar vermez.' }, { question: 'Sonucu vergi beyannamesinde kullanabilir miyim?', answer: 'Hayır. Sonucu senaryolarınızı karşılaştırmak ve vergi idaresine veya yetkin bir danışmana sorular hazırlamak için kullanın. Tüm düzeltmeleri, özel rejimleri ve bildirim kurallarını kapsamaz.' }], [{ name: 'Edinim bilgilerini girin', text: 'Ödediğiniz fiyatı, ilgili edinim maliyetlerini ve tahmini bedele dahil etmek istediğiniz iyileştirmeleri ekleyin.' }, { name: 'Mevcut satış senaryosunu girin', text: 'Mevcut satış fiyatını ve satış maliyetlerini belirtin. Araç karşılaştırmadan önce maliyetleri çıkarır.' }, { name: 'Planlama oranınızı girin', text: 'Test etmek istediğiniz yüzdeyi yazın. Bu sizin varsayımınızdır; araç oran aramaz.' }, { name: 'Alternatifi test edin', text: 'Alternatif satış fiyatını veya maliyetlerini değiştirin ve hangi senaryonun daha yüksek vergi sonrası tahmini kazanç bıraktığına bakın.' }]),
86
+ zh: makeContent('资本利得税情景计算器', '输入自己的购买价格、取得成本、改良成本、出售费用和税率,比较两种出售情景的税后预计收益。这是透明的规划估算,不是税务申报结果。', {
87
+ labelPurchasePrice: '购买价格', labelAcquisitionCosts: '取得成本', labelImprovements: '改良成本', labelSalePrice: '当前出售价格', labelSellingCosts: '当前出售费用', labelTaxRate: '预计税率', labelAlternativeSalePrice: '备选出售价格', labelAlternativeSellingCosts: '备选出售费用', labelCurrency: '货币', labelCurrentScenario: '当前情景', labelAlternativeScenario: '备选情景', labelAcquisitionBasis: '预计取得基础', labelNetSaleValue: '出售净额', labelGainOrLoss: '收益或损失', labelEstimatedTax: '预计税额', labelNetGainAfterTax: '税后预计收益', labelNetProceeds: '税后预计所得', labelBetterScenario: '税后预计收益更高的情景', labelCurrentIsBetter: '当前出售', labelAlternativeIsBetter: '备选出售', labelSameOutcome: '结果相同', labelGainStatus: '预计收益', labelLossStatus: '预计损失', labelBreakEvenStatus: '预计盈亏平衡', labelTaxableGainNote: '在此规划模型中,税率只应用于正收益。', labelLossNote: '这项损失不计入预计税额。当地规则可能以不同方式处理损失。', labelVisual: '比较两种情景的税后预计收益', labelComparison: '比较情景', labelDifference: '差额', labelCopy: '复制摘要', labelCopied: '摘要已复制', labelReset: '重置示例', labelInvalidInput: '请检查此数值', labelMethodTitle: '估算方法', labelMethodText: '预计取得基础等于购买价格加取得成本和改良成本。出售净额等于出售价格减出售费用。工具用出售净额减去取得基础,再将输入的百分比只应用于正收益。工具不会查询税率。', labelPrivacyNote: '你的数字只保留在此浏览器中。不需要账户、API或服务器计算。', labelAmountPlaceholder: '0.00', labelPercentPlaceholder: '0到100',
88
+ }, { compareTitle: '用自己的数字比较两种出售决定', intro: '出售决定不只取决于标价。取得成本、改良成本和出售费用都会改变交易后剩余的金额。本计算器使用你已有的数字和自选的规划税率,比较当前出售与备选出售。', includesTitle: '估算包含的内容', includes: ['预计取得基础:购买价格加取得成本和改良成本。', '出售净额:出售价格减出售费用。', '收益或损失:出售净额减预计取得基础。', '预计税额:模型将输入百分比应用于正收益。', '比较:两种情景之间税后预计收益的差额。'], interpretTitle: '如何解读两个情景', interpret: '当前情景用于你正在考虑的出售。备选字段可用来测试不同的出售价格或出售费用。若相关费用也上升,更高的价格不一定带来更高的税后收益。', currentTitle: '当前情景', currentDescription: '你的第一组出售假设。', currentPoints: ['使用当前出售价格', '扣除当前出售费用', '显示税后预计收益'], alternativeTitle: '备选情景', alternativeDescription: '第二组出售假设。', alternativePoints: ['测试不同的出售价格', '允许不同的出售费用', '立即显示差额'], limitsTitle: '资本利得估算的重要限制', limits: '这是透明的规划模型,不是针对某个司法辖区的税务计算器。它不会查询税率,也不会判断哪些费用符合规定。不包含折旧、免税额、通胀调整、以前的损失、所有权份额、特殊制度或改良成本的单独分配。申报前请确认适用规则并保存交易记录。', privateTitle: '在浏览器中进行私密比较', privateText: '数字由你输入,并在浏览器中处理。这样无需为一次决定制作电子表格,就能快速比较假设情景。' }, [{ question: '这个资本利得情景计算器估算什么?', answer: '它估算出售产生的收益或损失、模型作为应税金额使用的正收益、输入百分比对应的预计税额,以及估算后剩余的收益。它会将当前情景与备选出售价格和费用进行比较。' }, { question: '可以输入哪些费用?', answer: '输入想计入预计取得基础的购买价格、取得成本和改良成本。出售费用会降低出售净额,因此请单独输入。请使用自己交易中的金额并保存凭证。' }, { question: '计算器知道我当地的资本利得税率吗?', answer: '不知道。你需要把税率百分比作为规划假设输入。税务处理可能取决于司法辖区、资产类型、所有权、日期、免税额、以前的损失和其他事实。' }, { question: '为什么出现损失时预计税额为零?', answer: '这个简单模型只对正收益应用输入税率。它不会判断损失是否可以抵扣、结转或按照适用规则申报。' }, { question: '可以把结果用于税务申报吗?', answer: '不可以。请用它比较自己的情景,并准备向税务机关或合格顾问咨询的问题。它不包含所有调整、特殊制度和申报规则。' }], [{ name: '输入取得数据', text: '输入支付的价格、相关取得成本,以及想在预计基础中测试的改良成本。' }, { name: '输入当前出售情景', text: '填写当前出售价格和出售费用。工具会在与预计取得基础比较前扣除出售费用。' }, { name: '输入规划税率', text: '输入想测试的百分比。这是你提供的假设,不是工具查询的税率。' }, { name: '测试备选方案', text: '修改备选出售价格或费用,查看哪个情景留下的税后预计收益更高。' }]),
89
+ fr: {
90
+ title: 'Calculateur de scénarios de plus value',
91
+ description: 'Comparez le gain estimé après impôt de deux scénarios de vente avec votre prix d\'achat, vos frais, vos travaux et votre taux fiscal. Il s\'agit d\'une estimation transparente de planification, pas d\'une déclaration fiscale.',
92
+ ui: {
93
+ labelPurchasePrice: 'Prix d\'achat', labelAcquisitionCosts: 'Frais d\'acquisition', labelImprovements: 'Travaux et améliorations', labelSalePrice: 'Prix de vente actuel', labelSellingCosts: 'Frais de vente actuels', labelTaxRate: 'Taux d\'imposition estimé', labelAlternativeSalePrice: 'Prix de vente alternatif', labelAlternativeSellingCosts: 'Frais de vente alternatifs', labelCurrency: 'Devise', labelCurrentScenario: 'Scénario actuel', labelAlternativeScenario: 'Scénario alternatif', labelAcquisitionBasis: 'Base d\'acquisition estimée', labelNetSaleValue: 'Valeur nette de vente', labelGainOrLoss: 'Gain ou perte', labelEstimatedTax: 'Impôt estimé', labelNetGainAfterTax: 'Gain estimé après impôt', labelNetProceeds: 'Produit net estimé après impôt', labelBetterScenario: 'Scénario avec le gain estimé le plus élevé', labelCurrentIsBetter: 'Vente actuelle', labelAlternativeIsBetter: 'Vente alternative', labelSameOutcome: 'Même résultat', labelGainStatus: 'Gain estimé', labelLossStatus: 'Perte estimée', labelBreakEvenStatus: 'Seuil de rentabilité estimé', labelTaxableGainNote: 'Dans ce modèle de planification, le taux s\'applique uniquement à un gain positif.', labelLossNote: 'Aucun impôt estimé n\'est appliqué à cette perte. Les règles locales peuvent traiter les pertes différemment.', labelVisual: 'Comparaison du gain estimé après impôt pour les deux scénarios', labelComparison: 'Comparer les scénarios', labelDifference: 'Écart', labelCopy: 'Copier le résumé', labelCopied: 'Résumé copié', labelReset: 'Réinitialiser l\'exemple', labelInvalidInput: 'Vérifiez cette valeur', labelMethodTitle: 'Fonctionnement de l\'estimation', labelMethodText: 'La base d\'acquisition estimée correspond au prix d\'achat augmenté des frais d\'acquisition et des améliorations. La valeur nette de vente correspond au prix de vente diminué des frais de vente. L\'outil soustrait la base de la valeur nette puis applique le pourcentage saisi uniquement à un gain positif. Il ne recherche aucun taux d\'imposition.', labelPrivacyNote: 'Vos chiffres restent dans ce navigateur. Aucun compte, aucune API ni aucun calcul serveur ne sont nécessaires.', labelAmountPlaceholder: '0,00', labelPercentPlaceholder: 'de 0 à 100',
94
+ },
95
+ seo: { compareTitle: 'Comparez deux décisions de vente avec vos propres chiffres', intro: 'Une décision de vente dépend de plus que du prix affiché. Les frais d\'acquisition, les travaux et les frais de vente modifient le montant restant après la transaction. Ce calculateur compare une vente actuelle et une alternative à partir de vos chiffres et d\'un pourcentage fiscal choisi pour la planification.', includesTitle: 'Ce que comprend l\'estimation', includes: ['Base d\'acquisition estimée: prix d\'achat plus frais d\'acquisition et améliorations.', 'Valeur nette de vente: prix de vente moins frais de vente.', 'Gain ou perte: valeur nette de vente moins base d\'acquisition estimée.', 'Impôt estimé: votre pourcentage appliqué à un gain positif dans le modèle.', 'Comparaison: écart de gain estimé après impôt entre les deux scénarios.'], interpretTitle: 'Interpréter les deux scénarios', interpret: 'Utilisez le scénario actuel pour la vente que vous étudiez. Les champs alternatifs servent à tester un autre prix ou d\'autres frais de vente. Un prix plus élevé ne donne pas automatiquement un gain après impôt supérieur si les frais associés augmentent aussi.', currentTitle: 'Scénario actuel', currentDescription: 'Votre première série d\'hypothèses de vente.', currentPoints: ['Utilise le prix de vente actuel', 'Déduit les frais de vente actuels', 'Affiche le gain estimé après impôt'], alternativeTitle: 'Scénario alternatif', alternativeDescription: 'Une seconde série d\'hypothèses de vente.', alternativePoints: ['Teste un autre prix de vente', 'Autorise d\'autres frais de vente', 'Affiche immédiatement l\'écart'], limitsTitle: 'Limites importantes d\'une estimation de plus-value', limits: 'Il s\'agit d\'un modèle transparent de planification, pas d\'un calculateur fiscal propre à une juridiction. Il ne recherche pas les taux et ne détermine pas quels frais sont admissibles. Il ne modélise pas l\'amortissement, les exonérations, les corrections d\'inflation, les pertes antérieures, les quotes-parts, les régimes spéciaux ni l\'affectation séparée des améliorations. Vérifiez les règles applicables et conservez vos justificatifs.', privateTitle: 'Une comparaison privée dans le navigateur', privateText: 'Vous saisissez vos chiffres et ils sont traités dans le navigateur. Vous pouvez ainsi comparer rapidement des scénarios sans créer un tableur pour une seule décision.' },
96
+ faq: [{ question: 'Que calcule ce calculateur de scénarios de plus-value ?', answer: 'Il estime le gain ou la perte d\'une vente, le gain positif utilisé comme base imposable dans ce modèle, l\'impôt produit par le pourcentage saisi et le gain restant après cette estimation. Il compare un scénario actuel avec un prix et des frais de vente alternatifs.' }, { question: 'Quels frais puis-je saisir ?', answer: 'Saisissez le prix d\'achat, les frais d\'acquisition et les améliorations que vous souhaitez inclure dans la base estimée. Saisissez les frais de vente séparément, car ils réduisent la valeur nette de vente. Utilisez les montants de votre propre transaction et gardez les justificatifs.' }, { question: 'Le calculateur connaît-il mon taux local de plus-value ?', answer: 'Non. Vous saisissez le pourcentage comme hypothèse de planification. Le traitement fiscal peut dépendre de la juridiction, du bien, de la propriété, des dates, des exonérations, des pertes antérieures et d\'autres faits.' }, { question: 'Pourquoi l\'impôt estimé est-il nul en cas de perte ?', answer: 'Cette comparaison simple applique le taux saisi uniquement à un gain positif. Elle ne détermine pas si une perte peut être imputée, reportée ou déclarée selon les règles qui vous concernent.' }, { question: 'Puis-je utiliser le résultat pour ma déclaration ?', answer: 'Non. Utilisez-le pour comparer vos scénarios et préparer des questions pour l\'administration fiscale ou un conseiller qualifié. Il ne couvre pas tous les ajustements, régimes spéciaux et obligations déclaratives.' }],
97
+ howTo: [{ name: 'Saisissez les données d\'acquisition', text: 'Ajoutez le prix payé, les frais d\'acquisition pertinents et les améliorations que vous souhaitez tester dans la base estimée.' }, { name: 'Saisissez la vente actuelle', text: 'Indiquez le prix de vente actuel et les frais de vente. L\'outil déduit les frais avant de comparer la vente à la base estimée.' }, { name: 'Saisissez votre taux de planification', text: 'Entrez le pourcentage à tester. Il s\'agit d\'une hypothèse fournie par vous, pas d\'un taux récupéré par l\'outil.' }, { name: 'Testez l\'alternative', text: 'Modifiez le prix de vente alternatif ou ses frais et regardez quel scénario laisse le gain estimé après impôt le plus élevé.' }],
98
+ },
99
+ };
100
+
101
+ const localizedSlugs: Record<string, string> = {
102
+ de: 'capital-gains-tax-scenario-kapitalertrag',
103
+ en: 'capital-gains-tax-scenario-calculator',
104
+ es: 'capital-gains-tax-scenario-ganancias-patrimoniales',
105
+ fr: 'capital-gains-tax-scenario-plus-value',
106
+ id: 'capital-gains-tax-scenario-keuntungan-modal',
107
+ it: 'capital-gains-tax-scenario-plusvalenze',
108
+ ja: 'capital-gains-tax-scenario-calculator',
109
+ ko: 'capital-gains-tax-scenario-calculator',
110
+ nl: 'capital-gains-tax-scenario-vermogenswinst',
111
+ pl: 'capital-gains-tax-scenario-zysk-kapitalowy',
112
+ pt: 'capital-gains-tax-scenario-mais-valias',
113
+ ru: 'capital-gains-tax-scenario-prirost-kapitala',
114
+ sv: 'capital-gains-tax-scenario-kapitalvinst',
115
+ tr: 'capital-gains-tax-scenario-sermaye-kazanci',
116
+ zh: 'capital-gains-tax-scenario-calculator',
117
+ };
118
+
119
+ export const getCapitalGainsContent = (locale: string): ToolLocaleContent<CapitalGainsTaxScenarioCalculatorUI> => {
120
+ const localized = translations[locale] ?? translations.de;
121
+ if (!localized) throw new Error(`Missing capital gains translation for ${locale}`);
122
+ const { seo, faq, howTo } = localized;
123
+ return {
124
+ slug: localizedSlugs[locale] ?? 'capital-gains-tax-scenario-kapitalertrag',
125
+ title: localized.title,
126
+ description: localized.description,
127
+ ui: localized.ui,
128
+ seo: [
129
+ { type: 'title', text: seo.compareTitle, level: 2 },
130
+ { type: 'paragraph', html: `<p>${seo.intro}</p>` },
131
+ { type: 'title', text: seo.includesTitle, level: 2 },
132
+ { type: 'list', items: seo.includes },
133
+ { type: 'title', text: seo.interpretTitle, level: 2 },
134
+ { type: 'paragraph', html: `<p>${seo.interpret}</p>` },
135
+ { type: 'comparative', columns: 2, items: [
136
+ { title: seo.currentTitle, description: seo.currentDescription, points: seo.currentPoints },
137
+ { title: seo.alternativeTitle, description: seo.alternativeDescription, points: seo.alternativePoints, highlight: true },
138
+ ] },
139
+ { type: 'title', text: seo.limitsTitle, level: 2 },
140
+ { type: 'paragraph', html: `<p>${seo.limits}</p>` },
141
+ { type: 'title', text: seo.privateTitle, level: 2 },
142
+ { type: 'paragraph', html: `<p>${seo.privateText}</p>` },
143
+ ],
144
+ faq,
145
+ bibliography,
146
+ howTo,
147
+ schemas: [
148
+ { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) },
149
+ { '@context': 'https://schema.org', '@type': 'HowTo', name: localized.title, step: howTo.map((step, index) => ({ '@type': 'HowToStep', position: index + 1, name: step.name, text: step.text })) },
150
+ { '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: localized.title, description: localized.description, applicationCategory: 'FinanceApplication', operatingSystem: 'All', offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' } },
151
+ ],
152
+ };
153
+ };
@@ -0,0 +1,3 @@
1
+ import { getCapitalGainsContent } from './shared';
2
+
3
+ export const content = getCapitalGainsContent('sv');
@@ -0,0 +1,3 @@
1
+ import { getCapitalGainsContent } from './shared';
2
+
3
+ export const content = getCapitalGainsContent('tr');
@@ -0,0 +1,3 @@
1
+ import { getCapitalGainsContent } from './shared';
2
+
3
+ export const content = getCapitalGainsContent('zh');
@@ -0,0 +1,11 @@
1
+ import type { ToolDefinition } from '../../types';
2
+ import { capitalGainsTaxScenarioCalculator } from './entry';
3
+
4
+ export * from './entry';
5
+
6
+ export const CAPITAL_GAINS_TAX_SCENARIO_CALCULATOR_TOOL: ToolDefinition = {
7
+ entry: capitalGainsTaxScenarioCalculator,
8
+ Component: () => import('./component.astro'),
9
+ SEOComponent: () => import('./seo.astro'),
10
+ BibliographyComponent: () => import('./bibliography.astro'),
11
+ };
@@ -0,0 +1,71 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { calculateCapitalGains, validateCapitalGainsInput, type CapitalGainsInput } from './logic';
3
+
4
+ const input: CapitalGainsInput = {
5
+ purchasePrice: 100000,
6
+ acquisitionCosts: 5000,
7
+ improvements: 10000,
8
+ salePrice: 180000,
9
+ sellingCosts: 6000,
10
+ taxRate: 20,
11
+ alternativeSalePrice: 190000,
12
+ alternativeSellingCosts: 7000,
13
+ };
14
+
15
+ describe('calculateCapitalGains', () => {
16
+ it('calculates the basis, gain, tax estimate and comparison', () => {
17
+ const result = calculateCapitalGains(input);
18
+
19
+ expect(result?.current).toMatchObject({
20
+ acquisitionBasis: 115000,
21
+ netSaleValue: 174000,
22
+ gainOrLoss: 59000,
23
+ taxableGain: 59000,
24
+ estimatedTax: 11800,
25
+ netGainAfterTax: 47200,
26
+ netProceeds: 162200,
27
+ status: 'gain',
28
+ });
29
+ expect(result?.alternative).toMatchObject({ estimatedTax: 13600, netGainAfterTax: 54400 });
30
+ expect(result?.comparison).toEqual({
31
+ netGainDifference: 7200,
32
+ taxDifference: 1800,
33
+ salePriceDifference: 10000,
34
+ betterScenario: 'alternative',
35
+ });
36
+ });
37
+
38
+ it('does not estimate tax when the scenario is a loss', () => {
39
+ const result = calculateCapitalGains({ ...input, salePrice: 90000, alternativeSalePrice: 95000 });
40
+
41
+ expect(result?.current).toMatchObject({ gainOrLoss: -31000, taxableGain: 0, estimatedTax: 0, status: 'loss' });
42
+ });
43
+
44
+ it('accepts a break-even scenario and rounds long decimal results', () => {
45
+ const result = calculateCapitalGains({
46
+ ...input,
47
+ purchasePrice: 0.1,
48
+ acquisitionCosts: 0,
49
+ improvements: 0,
50
+ salePrice: 0.3,
51
+ sellingCosts: 0,
52
+ taxRate: 33.333,
53
+ alternativeSalePrice: 0.1,
54
+ alternativeSellingCosts: 0,
55
+ });
56
+
57
+ expect(result?.current).toMatchObject({ gainOrLoss: 0.2, estimatedTax: 0.07, netGainAfterTax: 0.13 });
58
+ expect(result?.alternative.status).toBe('breakEven');
59
+ });
60
+
61
+ it('reports invalid, negative, out-of-range and zero inputs', () => {
62
+ const errors = validateCapitalGainsInput({ ...input, purchasePrice: 0, taxRate: 101, sellingCosts: -1 });
63
+
64
+ expect(errors).toMatchObject({
65
+ purchasePrice: expect.any(String),
66
+ sellingCosts: expect.any(String),
67
+ taxRate: expect.any(String),
68
+ });
69
+ expect(calculateCapitalGains({ ...input, alternativeSalePrice: Number.NaN })).toBeNull();
70
+ });
71
+ });
@@ -0,0 +1,137 @@
1
+ export interface CapitalGainsScenarioInput {
2
+ salePrice: number;
3
+ sellingCosts: number;
4
+ }
5
+
6
+ export interface CapitalGainsInput extends CapitalGainsScenarioInput {
7
+ purchasePrice: number;
8
+ acquisitionCosts: number;
9
+ improvements: number;
10
+ taxRate: number;
11
+ alternativeSalePrice: number;
12
+ alternativeSellingCosts: number;
13
+ }
14
+
15
+ export interface CapitalGainsScenarioResult {
16
+ acquisitionBasis: number;
17
+ netSaleValue: number;
18
+ gainOrLoss: number;
19
+ taxableGain: number;
20
+ estimatedTax: number;
21
+ netGainAfterTax: number;
22
+ netProceeds: number;
23
+ status: 'gain' | 'loss' | 'breakEven';
24
+ }
25
+
26
+ export interface CapitalGainsComparison {
27
+ netGainDifference: number;
28
+ taxDifference: number;
29
+ salePriceDifference: number;
30
+ betterScenario: 'current' | 'alternative' | 'same';
31
+ }
32
+
33
+ export interface CapitalGainsResult {
34
+ current: CapitalGainsScenarioResult;
35
+ alternative: CapitalGainsScenarioResult;
36
+ comparison: CapitalGainsComparison;
37
+ }
38
+
39
+ export type CapitalGainsField = keyof CapitalGainsInput;
40
+ export type CapitalGainsValidationErrors = Partial<Record<CapitalGainsField, string>>;
41
+
42
+ const MAX_AMOUNT = 1_000_000_000_000_000;
43
+ const MONEY_FIELDS: CapitalGainsField[] = [
44
+ 'purchasePrice',
45
+ 'salePrice',
46
+ 'acquisitionCosts',
47
+ 'sellingCosts',
48
+ 'improvements',
49
+ 'alternativeSalePrice',
50
+ 'alternativeSellingCosts',
51
+ ];
52
+
53
+ const round = (value: number): number => {
54
+ const rounded = Number(value.toFixed(2));
55
+ return Object.is(rounded, -0) ? 0 : rounded;
56
+ };
57
+
58
+ function getStatus(gainOrLoss: number): CapitalGainsScenarioResult['status'] {
59
+ if (gainOrLoss > 0) return 'gain';
60
+ if (gainOrLoss < 0) return 'loss';
61
+ return 'breakEven';
62
+ }
63
+
64
+ function getBetterScenario(netGainDifference: number): CapitalGainsComparison['betterScenario'] {
65
+ if (netGainDifference > 0) return 'alternative';
66
+ if (netGainDifference < 0) return 'current';
67
+ return 'same';
68
+ }
69
+
70
+ export function validateCapitalGainsInput(input: CapitalGainsInput): CapitalGainsValidationErrors {
71
+ const errors: CapitalGainsValidationErrors = {};
72
+
73
+ MONEY_FIELDS.forEach((field) => {
74
+ const value = input[field];
75
+ if (!Number.isFinite(value)) errors[field] = 'Enter a valid number.';
76
+ else if (value < 0) errors[field] = 'Use zero or a positive amount.';
77
+ else if (value > MAX_AMOUNT) errors[field] = 'Use an amount below 1 quadrillion.';
78
+ });
79
+
80
+ if (input.purchasePrice === 0) errors.purchasePrice = 'Enter the amount you paid for the asset.';
81
+ if (input.salePrice === 0) errors.salePrice = 'Enter a sale price above zero.';
82
+ if (input.alternativeSalePrice === 0) errors.alternativeSalePrice = 'Enter an alternative sale price above zero.';
83
+
84
+ if (!Number.isFinite(input.taxRate)) errors.taxRate = 'Enter a valid tax rate.';
85
+ else if (input.taxRate < 0 || input.taxRate > 100) errors.taxRate = 'Use a rate from 0% to 100%.';
86
+
87
+ return errors;
88
+ }
89
+
90
+ function calculateScenario(
91
+ input: Pick<CapitalGainsInput, 'purchasePrice' | 'acquisitionCosts' | 'improvements' | 'taxRate'> & CapitalGainsScenarioInput,
92
+ ): CapitalGainsScenarioResult {
93
+ const acquisitionBasis = input.purchasePrice + input.acquisitionCosts + input.improvements;
94
+ const netSaleValue = input.salePrice - input.sellingCosts;
95
+ const gainOrLoss = netSaleValue - acquisitionBasis;
96
+ const taxableGain = Math.max(gainOrLoss, 0);
97
+ const estimatedTax = taxableGain * (input.taxRate / 100);
98
+ const netGainAfterTax = gainOrLoss - estimatedTax;
99
+ const netProceeds = netSaleValue - estimatedTax;
100
+
101
+ return {
102
+ acquisitionBasis: round(acquisitionBasis),
103
+ netSaleValue: round(netSaleValue),
104
+ gainOrLoss: round(gainOrLoss),
105
+ taxableGain: round(taxableGain),
106
+ estimatedTax: round(estimatedTax),
107
+ netGainAfterTax: round(netGainAfterTax),
108
+ netProceeds: round(netProceeds),
109
+ status: getStatus(gainOrLoss),
110
+ };
111
+ }
112
+
113
+ export function calculateCapitalGains(input: CapitalGainsInput): CapitalGainsResult | null {
114
+ if (Object.keys(validateCapitalGainsInput(input)).length > 0) return null;
115
+
116
+ const current = calculateScenario(input);
117
+ const alternative = calculateScenario({
118
+ purchasePrice: input.purchasePrice,
119
+ acquisitionCosts: input.acquisitionCosts,
120
+ improvements: input.improvements,
121
+ taxRate: input.taxRate,
122
+ salePrice: input.alternativeSalePrice,
123
+ sellingCosts: input.alternativeSellingCosts,
124
+ });
125
+ const netGainDifference = round(alternative.netGainAfterTax - current.netGainAfterTax);
126
+
127
+ return {
128
+ current,
129
+ alternative,
130
+ comparison: {
131
+ netGainDifference,
132
+ taxDifference: round(alternative.estimatedTax - current.estimatedTax),
133
+ salePriceDifference: round(input.alternativeSalePrice - input.salePrice),
134
+ betterScenario: getBetterScenario(netGainDifference),
135
+ },
136
+ };
137
+ }