@jjlmoya/utils-finance 1.28.0 → 1.30.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 (65) 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 +2 -1
  5. package/src/tests/locale_completeness.test.ts +2 -3
  6. package/src/tests/tool_validation.test.ts +2 -2
  7. package/src/tool/pesetaValue/bibliography.astro +6 -0
  8. package/src/tool/pesetaValue/bibliography.ts +16 -0
  9. package/src/tool/pesetaValue/component.astro +86 -0
  10. package/src/tool/pesetaValue/controller.ts +126 -0
  11. package/src/tool/pesetaValue/dom-views.ts +83 -0
  12. package/src/tool/pesetaValue/entry.ts +31 -0
  13. package/src/tool/pesetaValue/evaluator.ts +18 -0
  14. package/src/tool/pesetaValue/i18n/de.ts +54 -0
  15. package/src/tool/pesetaValue/i18n/en.ts +138 -0
  16. package/src/tool/pesetaValue/i18n/es.ts +54 -0
  17. package/src/tool/pesetaValue/i18n/fr.ts +54 -0
  18. package/src/tool/pesetaValue/i18n/id.ts +48 -0
  19. package/src/tool/pesetaValue/i18n/it.ts +54 -0
  20. package/src/tool/pesetaValue/i18n/ja.ts +48 -0
  21. package/src/tool/pesetaValue/i18n/ko.ts +48 -0
  22. package/src/tool/pesetaValue/i18n/nl.ts +48 -0
  23. package/src/tool/pesetaValue/i18n/pl.ts +48 -0
  24. package/src/tool/pesetaValue/i18n/pt.ts +48 -0
  25. package/src/tool/pesetaValue/i18n/ru.ts +48 -0
  26. package/src/tool/pesetaValue/i18n/sv.ts +48 -0
  27. package/src/tool/pesetaValue/i18n/tr.ts +48 -0
  28. package/src/tool/pesetaValue/i18n/zh.ts +48 -0
  29. package/src/tool/pesetaValue/index.ts +11 -0
  30. package/src/tool/pesetaValue/logic.test.ts +63 -0
  31. package/src/tool/pesetaValue/logic.ts +162 -0
  32. package/src/tool/pesetaValue/pesetas-to-euros-with-inflation-calculator.css +564 -0
  33. package/src/tool/pesetaValue/seo.astro +15 -0
  34. package/src/tool/pesetaValue/storage.ts +25 -0
  35. package/src/tool/pesetaValue/ui.ts +33 -0
  36. package/src/tool/salaryEmployerCost/bibliography.astro +6 -0
  37. package/src/tool/salaryEmployerCost/bibliography.ts +16 -0
  38. package/src/tool/salaryEmployerCost/component.astro +130 -0
  39. package/src/tool/salaryEmployerCost/controller.ts +129 -0
  40. package/src/tool/salaryEmployerCost/dom-views.ts +87 -0
  41. package/src/tool/salaryEmployerCost/entry.ts +31 -0
  42. package/src/tool/salaryEmployerCost/evaluator.ts +9 -0
  43. package/src/tool/salaryEmployerCost/i18n/de.ts +159 -0
  44. package/src/tool/salaryEmployerCost/i18n/en.ts +148 -0
  45. package/src/tool/salaryEmployerCost/i18n/es.ts +148 -0
  46. package/src/tool/salaryEmployerCost/i18n/fr.ts +159 -0
  47. package/src/tool/salaryEmployerCost/i18n/id.ts +159 -0
  48. package/src/tool/salaryEmployerCost/i18n/it.ts +159 -0
  49. package/src/tool/salaryEmployerCost/i18n/ja.ts +159 -0
  50. package/src/tool/salaryEmployerCost/i18n/ko.ts +159 -0
  51. package/src/tool/salaryEmployerCost/i18n/nl.ts +159 -0
  52. package/src/tool/salaryEmployerCost/i18n/pl.ts +159 -0
  53. package/src/tool/salaryEmployerCost/i18n/pt.ts +159 -0
  54. package/src/tool/salaryEmployerCost/i18n/ru.ts +159 -0
  55. package/src/tool/salaryEmployerCost/i18n/sv.ts +159 -0
  56. package/src/tool/salaryEmployerCost/i18n/tr.ts +159 -0
  57. package/src/tool/salaryEmployerCost/i18n/zh.ts +159 -0
  58. package/src/tool/salaryEmployerCost/index.ts +11 -0
  59. package/src/tool/salaryEmployerCost/logic.test.ts +88 -0
  60. package/src/tool/salaryEmployerCost/logic.ts +133 -0
  61. package/src/tool/salaryEmployerCost/seo.astro +15 -0
  62. package/src/tool/salaryEmployerCost/spain-gross-net-salary-employer-cost-calculator.css +522 -0
  63. package/src/tool/salaryEmployerCost/storage.ts +35 -0
  64. package/src/tool/salaryEmployerCost/ui.ts +41 -0
  65. package/src/tools.ts +3 -3
@@ -0,0 +1,148 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
4
+ import type { SalaryEmployerCostUI } from '../ui';
5
+
6
+ const slug = 'spain-gross-net-salary-employer-cost-calculator';
7
+ const title = 'Spain Gross Net Salary and Employer Cost Calculator for 2026';
8
+ const description = 'Estimate take home pay, personal income tax withholding, employee contributions and the full employer cost of a salary in Spain under 2026 rules.';
9
+
10
+ const faq = [
11
+ {
12
+ question: 'How much does an employee cost a company in Spain?',
13
+ answer: 'The company pays the gross salary plus its Social Security contributions. For a permanent office role with a €30,000 annual gross salary, a 1.50% occupational premium and the 2026 rates used here, the estimated annual employer cost is €39,645 before bonuses, benefits, severance provisions or other company expenses.',
14
+ },
15
+ {
16
+ question: 'How do I calculate gross salary to net salary in Spain?',
17
+ answer: 'Start with annual gross salary, subtract employee Social Security contributions and subtract IRPF withholding. Enter the IRPF percentage from the Tax Agency calculator, an offer estimate or a recent payslip because personal and family circumstances can change that rate.',
18
+ },
19
+ {
20
+ question: 'Does choosing 12 or 14 payments change the annual salary?',
21
+ answer: 'No. The calculator preserves the same annual gross amount and divides the annual estimates by 12 or 14. The per payment figure is an average, so an actual 14 payment payroll can distribute deductions differently between ordinary and extra payments.',
22
+ },
23
+ {
24
+ question: 'Which Social Security rates are included for 2026?',
25
+ answer: 'The estimate includes common contingencies, unemployment, training, the Intergenerational Equity Mechanism and FOGASA where applicable. It also includes the employer occupational accident and disease premium selected in the control.',
26
+ },
27
+ {
28
+ question: 'What happens when salary exceeds the maximum contribution base?',
29
+ answer: 'Standard contributions are capped at the 2026 maximum monthly base of €5,101.20. The calculator then applies the 2026 progressive solidarity contribution to monthly remuneration above that amount.',
30
+ },
31
+ {
32
+ question: 'Is this calculator valid outside Spain?',
33
+ answer: 'No. It is deliberately limited to Spain and the 2026 General Social Security Scheme for a full time employee receiving ordinary cash salary. It does not mix rates or tax systems from other countries.',
34
+ },
35
+ {
36
+ question: 'Is salary information sent to a server?',
37
+ answer: 'No. Calculations run in your browser. Your most recent inputs can be stored locally on the same device so that you can continue the comparison later.',
38
+ },
39
+ ];
40
+
41
+ const howTo = [
42
+ { name: 'Enter the gross salary', text: 'Choose annual or monthly input, then enter the gross salary offered or budgeted.' },
43
+ { name: 'Set the Spanish payroll assumptions', text: 'Choose 12 or 14 payments, permanent or temporary contract, your IRPF withholding rate and the applicable occupational premium.' },
44
+ { name: 'Read the salary orbit', text: 'Compare the net core, employee deductions and the outer employer contribution halo.' },
45
+ { name: 'Switch the result period', text: 'View annual totals or average amounts per payment without changing the annual salary.' },
46
+ ];
47
+
48
+ const faqSchema: WithContext<FAQPage> = {
49
+ '@context': 'https://schema.org',
50
+ '@type': 'FAQPage',
51
+ mainEntity: faq.map((item) => ({
52
+ '@type': 'Question',
53
+ name: item.question,
54
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
55
+ })),
56
+ };
57
+
58
+ const howToSchema: WithContext<HowTo> = {
59
+ '@context': 'https://schema.org',
60
+ '@type': 'HowTo',
61
+ name: title,
62
+ description,
63
+ step: howTo.map((step, index) => ({
64
+ '@type': 'HowToStep',
65
+ position: index + 1,
66
+ name: step.name,
67
+ text: step.text,
68
+ })),
69
+ };
70
+
71
+ const appSchema: WithContext<SoftwareApplication> = {
72
+ '@context': 'https://schema.org',
73
+ '@type': 'SoftwareApplication',
74
+ name: title,
75
+ description,
76
+ applicationCategory: 'FinanceApplication',
77
+ operatingSystem: 'All',
78
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
79
+ inLanguage: 'en',
80
+ };
81
+
82
+ export const content: ToolLocaleContent<SalaryEmployerCostUI> = {
83
+ slug,
84
+ title,
85
+ description,
86
+ ui: {
87
+ labelGrossSalary: 'Gross salary signal',
88
+ labelGrossSalaryHint: 'Salary amount',
89
+ labelAnnual: 'Annual',
90
+ labelMonthly: 'Monthly',
91
+ labelPaySchedule: 'Payment schedule',
92
+ labelTwelvePayments: '12 payments',
93
+ labelFourteenPayments: '14 payments',
94
+ labelContract: 'Contract type',
95
+ labelPermanent: 'Permanent',
96
+ labelTemporary: 'Temporary',
97
+ labelIrpfRate: 'IRPF withholding',
98
+ labelIrpfHint: 'Use your Tax Agency, offer or payslip rate',
99
+ labelRiskRate: 'Occupational premium',
100
+ labelRiskHint: 'Employer AT and EP rate for the role',
101
+ labelOfficePreset: 'Office 1.50%',
102
+ labelTradePreset: 'Sales representative 2.00%',
103
+ labelConstructionPreset: 'Construction 6.70%',
104
+ labelNetCore: 'Net salary core',
105
+ labelEmployeeDeductions: 'Worker deductions',
106
+ labelDeductionsFormula: 'IRPF plus employee Social Security',
107
+ labelEmployerHalo: 'Employer contribution halo',
108
+ labelEmployerCost: 'Total employer cost',
109
+ labelAnnualView: 'Annual view',
110
+ labelPerPaymentView: 'Average per payment',
111
+ labelGross: 'Gross salary',
112
+ labelIrpf: 'IRPF withholding',
113
+ labelEmployeeSocialSecurity: 'Employee Social Security',
114
+ labelContributionBase: 'Monthly contribution base',
115
+ labelCostMultiplier: 'Cost versus gross',
116
+ labelWorkerKeeps: 'Net share of total cost',
117
+ labelLeanGap: 'Compact cost halo',
118
+ labelTypicalGap: 'Typical cost halo',
119
+ labelWideGap: 'Expanded cost halo',
120
+ labelModelScope: 'Spain only. 2026 General Scheme, full time employment and ordinary cash salary. Results are estimates, not payroll or tax advice.',
121
+ labelReset: 'Reset example',
122
+ labelInvalid: 'Enter a supported full time annual salary and keep IRPF and occupational rates within the available ranges.',
123
+ labelMinimumSalary: 'The model starts at the 2026 full time minimum of €17,094 per year.',
124
+ labelPrivacy: 'Calculated locally in your browser',
125
+ currencyLocale: 'en-IE',
126
+ },
127
+ seo: [
128
+ { type: 'title', text: 'From gross salary to the real company cost in Spain', level: 2 },
129
+ { type: 'paragraph', html: 'A salary offer has three different values: the gross amount in the contract, the net amount that reaches the employee and the total cost paid by the company. This Spain salary calculator keeps those layers together. Enter one gross figure and it estimates IRPF withholding, employee Social Security, employer contributions and the complete employment cost under the 2026 General Scheme.' },
130
+ { type: 'title', text: 'The employer cost formula', level: 2 },
131
+ { type: 'paragraph', html: 'Total employer cost equals annual gross salary plus employer Social Security contributions. Estimated net salary equals gross salary minus employee Social Security and the IRPF percentage entered by the user. The IRPF control is intentionally visible because withholding depends on personal circumstances and should come from the Spanish Tax Agency calculator, an employer estimate or a current payslip.' },
132
+ { type: 'table', headers: ['Layer', 'Calculation'], rows: [['Net salary', 'Gross salary minus employee Social Security minus IRPF withholding'], ['Worker deductions', 'Employee Social Security plus IRPF withholding'], ['Employer contributions', 'Company Social Security rates plus the selected occupational premium'], ['Total employer cost', 'Gross salary plus employer contributions']] },
133
+ { type: 'title', text: 'Spanish Social Security rates included for 2026', level: 2 },
134
+ { type: 'paragraph', html: 'For a permanent contract, the model applies 4.70% employee and 23.60% employer common contingencies, 1.55% employee and 5.50% employer unemployment, 0.10% employee and 0.60% employer training, 0.15% employee and 0.75% employer MEI, and 0.20% employer FOGASA. Temporary contracts use 1.60% employee and 6.70% employer unemployment. The separate occupational premium changes with the role or company activity.' },
135
+ { type: 'table', headers: ['Occupational preset', 'Employer rate'], rows: [['Exclusive office work', '1.50%'], ['Sales representative', '2.00%'], ['Construction work', '6.70%']] },
136
+ { type: 'title', text: 'Contribution caps and high salaries', level: 2 },
137
+ { type: 'paragraph', html: 'The standard contribution base is limited to €5,101.20 per month in 2026. Above that threshold, the calculator adds the progressive solidarity contribution across its three monthly remuneration bands. This prevents a high salary estimate from simply applying the ordinary percentage to the entire gross amount.' },
138
+ { type: 'title', text: 'Twelve payments and fourteen payments', level: 2 },
139
+ { type: 'paragraph', html: 'Changing the payment schedule does not change annual gross salary or annual company cost. It changes the displayed average per payment. A real fourteen payment payroll can collect Social Security mainly through ordinary monthly payslips, so the average shown here is best for comparing offers and budgets rather than reproducing every line of a payslip.' },
140
+ { type: 'tip', title: 'Use the same assumptions when comparing offers', html: 'Keep the IRPF rate, contract type, payment schedule and occupational premium consistent. That isolates the effect of gross salary and makes two job offers or hiring budgets genuinely comparable.' },
141
+ { type: 'title', text: 'Limits of this Spain salary estimate', level: 2 },
142
+ { type: 'paragraph', html: 'The calculator is limited to full time employment in Spain under the 2026 General Scheme. It does not cover part time minimum bases, regional tax settlements, benefits in kind, bonuses with special treatment, reductions, bonuses in company contributions, special employment relationships, self employment or payroll regularisation. Use payroll software or professional advice when those details matter.' },
143
+ ],
144
+ faq,
145
+ bibliography,
146
+ howTo,
147
+ schemas: [faqSchema, howToSchema, appSchema],
148
+ };
@@ -0,0 +1,148 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
4
+ import type { SalaryEmployerCostUI } from '../ui';
5
+
6
+ const slug = 'calculadora-salario-bruto-neto-coste-empresa-espana';
7
+ const title = 'Calculadora de Salario Bruto, Neto y Coste Empresa en España 2026';
8
+ const description = 'Calcula el sueldo neto, la retención de IRPF, la cotización del trabajador y el coste total que paga la empresa en España según la normativa de 2026.';
9
+
10
+ const faq = [
11
+ {
12
+ question: '¿Cuánto le cuesta un trabajador a una empresa en España?',
13
+ answer: 'La empresa paga el salario bruto más sus cotizaciones a la Seguridad Social. Para un puesto de oficina indefinido con un sueldo bruto anual de 30.000 €, un tipo de accidentes del 1,50 % y los tipos de 2026, el coste total estimado para la empresa es de 39.645 € anuales, antes de incluir bonificaciones, beneficios sociales o provisiones por despido.',
14
+ },
15
+ {
16
+ question: '¿Cómo se calcula el paso de salario bruto a neto en España?',
17
+ answer: 'Se parte del salario bruto anual, se restan las cotizaciones a la Seguridad Social a cargo del trabajador y se descuenta la retención del IRPF. Introduce el porcentaje de IRPF obtenido en la calculadora de la Agencia Tributaria, una oferta o una nómina reciente, ya que las circunstancias personales y familiares modifican dicho tipo.',
18
+ },
19
+ {
20
+ question: '¿Cambia el salario anual al elegir 12 o 14 pagas?',
21
+ answer: 'No. La calculadora mantiene exactamente el mismo importe bruto anual y divide las estimaciones anuales entre 12 o 14. La cifra por paga es un promedio orientativo, ya que en una nómina real con 14 pagas las deducciones pueden distribuirse de forma distinta entre mensualidades ordinarias y extraordinarias.',
22
+ },
23
+ {
24
+ question: '¿Qué tipos de la Seguridad Social se incluyen para 2026?',
25
+ answer: 'La estimación incluye contingencias comunes, desempleo, formación profesional, el Mecanismo de Equidad Intergeneracional (MEI) y FOGASA según corresponda. También suma la prima de accidentes de trabajo y enfermedades profesionales (AT y EP) seleccionada.',
26
+ },
27
+ {
28
+ question: '¿Qué ocurre si el salario supera la base máxima de cotización?',
29
+ answer: 'Las cotizaciones ordinarias se topan en la base máxima mensual de 2026, fijada en 5.101,20 €. A partir de esa cantidad, la calculadora aplica la cotización progresiva de solidaridad sobre la retribución que excede dicha base.',
30
+ },
31
+ {
32
+ question: '¿Es válida esta calculadora fuera de España?',
33
+ answer: 'No. Está deliberadamente limitada a España y al Régimen General de la Seguridad Social para 2026 en contratos a jornada completa con salario ordinario en dinero. No mezcla tipos ni sistemas fiscales de otros países.',
34
+ },
35
+ {
36
+ question: '¿Se envían los datos salariales a algún servidor?',
37
+ answer: 'No. Todos los cálculos se realizan localmente en tu navegador. Tus últimos datos pueden guardarse de forma local en el mismo dispositivo para que puedas retomar la comparación más adelante.',
38
+ },
39
+ ];
40
+
41
+ const howTo = [
42
+ { name: 'Introduce el salario bruto', text: 'Selecciona la modalidad anual o mensual e introduce la retribución bruta ofertada o presupuestada.' },
43
+ { name: 'Configura las condiciones de la nómina', text: 'Elige 12 o 14 pagas, tipo de contrato (indefinido o temporal), el porcentaje de retención de IRPF y la tarifa de accidentes aplicable.' },
44
+ { name: 'Consulta la órbita salarial', text: 'Compara el núcleo neto, las deducciones del trabajador y el halo de aportaciones empresariales.' },
45
+ { name: 'Cambia el periodo de visualización', text: 'Revisa los totales anuales o el promedio por paga sin alterar el salario bruto anual.' },
46
+ ];
47
+
48
+ const faqSchema: WithContext<FAQPage> = {
49
+ '@context': 'https://schema.org',
50
+ '@type': 'FAQPage',
51
+ mainEntity: faq.map((item) => ({
52
+ '@type': 'Question',
53
+ name: item.question,
54
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
55
+ })),
56
+ };
57
+
58
+ const howToSchema: WithContext<HowTo> = {
59
+ '@context': 'https://schema.org',
60
+ '@type': 'HowTo',
61
+ name: title,
62
+ description,
63
+ step: howTo.map((step, index) => ({
64
+ '@type': 'HowToStep',
65
+ position: index + 1,
66
+ name: step.name,
67
+ text: step.text,
68
+ })),
69
+ };
70
+
71
+ const appSchema: WithContext<SoftwareApplication> = {
72
+ '@context': 'https://schema.org',
73
+ '@type': 'SoftwareApplication',
74
+ name: title,
75
+ description,
76
+ applicationCategory: 'FinanceApplication',
77
+ operatingSystem: 'All',
78
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
79
+ inLanguage: 'es',
80
+ };
81
+
82
+ export const content: ToolLocaleContent<SalaryEmployerCostUI> = {
83
+ slug,
84
+ title,
85
+ description,
86
+ ui: {
87
+ labelGrossSalary: 'Señal de salario bruto',
88
+ labelGrossSalaryHint: 'Importe del salario',
89
+ labelAnnual: 'Anual',
90
+ labelMonthly: 'Mensual',
91
+ labelPaySchedule: 'Calendario de pagos',
92
+ labelTwelvePayments: '12 pagas',
93
+ labelFourteenPayments: '14 pagas',
94
+ labelContract: 'Tipo de contrato',
95
+ labelPermanent: 'Indefinido',
96
+ labelTemporary: 'Temporal',
97
+ labelIrpfRate: 'Retención de IRPF',
98
+ labelIrpfHint: 'Usa el tipo de la Agencia Tributaria, oferta o nómina',
99
+ labelRiskRate: 'Prima de accidentes (AT y EP)',
100
+ labelRiskHint: 'Tarifa de AT y EP del puesto para la empresa',
101
+ labelOfficePreset: 'Oficina 1,50 %',
102
+ labelTradePreset: 'Comercial 2,00 %',
103
+ labelConstructionPreset: 'Construcción 6,70 %',
104
+ labelNetCore: 'Núcleo de salario neto',
105
+ labelEmployeeDeductions: 'Deducciones del trabajador',
106
+ labelDeductionsFormula: 'IRPF más Seguridad Social del empleado',
107
+ labelEmployerHalo: 'Halo de cotización empresarial',
108
+ labelEmployerCost: 'Coste total para la empresa',
109
+ labelAnnualView: 'Vista anual',
110
+ labelPerPaymentView: 'Promedio por paga',
111
+ labelGross: 'Salario bruto',
112
+ labelIrpf: 'Retención de IRPF',
113
+ labelEmployeeSocialSecurity: 'Seguridad Social del trabajador',
114
+ labelContributionBase: 'Base de cotización mensual',
115
+ labelCostMultiplier: 'Multiplicador de coste frente al bruto',
116
+ labelWorkerKeeps: 'Porcentaje neto sobre el coste total',
117
+ labelLeanGap: 'Halo de coste ajustado',
118
+ labelTypicalGap: 'Halo de coste habitual',
119
+ labelWideGap: 'Halo de coste amplio',
120
+ labelModelScope: 'Solo España. Régimen General 2026, jornada completa y salario ordinario en dinero. Los resultados son estimaciones orientativas y no constituyen asesoramiento laboral o fiscal.',
121
+ labelReset: 'Restablecer ejemplo',
122
+ labelInvalid: 'Introduce un salario anual a jornada completa válido y mantén los tipos de IRPF y accidentes dentro de los rangos permitidos.',
123
+ labelMinimumSalary: 'El modelo parte del salario mínimo interprofesional a jornada completa de 2026 (17.094 €/año).',
124
+ labelPrivacy: 'Calculado de forma local en tu navegador',
125
+ currencyLocale: 'es-ES',
126
+ },
127
+ seo: [
128
+ { type: 'title', text: 'Del salario bruto al coste real para la empresa en España', level: 2 },
129
+ { type: 'paragraph', html: 'Una oferta salarial tiene tres dimensiones: la cifra bruta fijada en el contrato, el importe neto que percibe el trabajador y el coste total que asume la empresa. Esta calculadora unifica esas capas: a partir del salario bruto estimamos la retención de IRPF, la Seguridad Social del trabajador, las cotizaciones patronales y el coste laboral completo bajo el Régimen General de 2026.' },
130
+ { type: 'title', text: 'Fórmula del coste de empresa', level: 2 },
131
+ { type: 'paragraph', html: 'El coste total para la empresa equivale al salario bruto anual más las cotizaciones patronales a la Seguridad Social. El salario neto estimado se obtiene restando al bruto la Seguridad Social a cargo del empleado y el porcentaje de IRPF. El control del IRPF es manualmente ajustable porque la retención depende de la situación personal y familiar de cada contribuyente.' },
132
+ { type: 'table', headers: ['Capa', 'Cálculo'], rows: [['Salario neto', 'Salario bruto menos Seguridad Social del trabajador menos retención de IRPF'], ['Deducciones del trabajador', 'Seguridad Social del trabajador más retención de IRPF'], ['Cotizaciones patronales', 'Tipos de la Seguridad Social a cargo de la empresa más la tarifa de accidentes seleccionada'], ['Coste total empresa', 'Salario bruto más cotizaciones patronales']] },
133
+ { type: 'title', text: 'Tipos de la Seguridad Social en España para 2026', level: 2 },
134
+ { type: 'paragraph', html: 'En un contrato indefinido, el modelo aplica un 4,70 % al trabajador y un 23,60 % a la empresa por contingencias comunes; un 1,55 % al trabajador y un 5,50 % a la empresa por desempleo; un 0,10 % al trabajador y un 0,60 % a la empresa por formación profesional; un 0,15 % al trabajador y un 0,75 % a la empresa por el MEI; y un 0,20 % a cargo de la empresa para FOGASA. En contratos temporales la cotización de desempleo sube al 1,60 % (trabajador) y 6,70 % (empresa).' },
135
+ { type: 'table', headers: ['Tarifa de accidentes', 'Tipo empresarial'], rows: [['Trabajo exclusivo de oficina', '1,50 %'], ['Agente comercial o ventas', '2,00 %'], ['Trabajos de construcción', '6,70 %']] },
136
+ { type: 'title', text: 'Topes de cotización y cuota de solidaridad en sueldos altos', level: 2 },
137
+ { type: 'paragraph', html: 'La base de cotización máxima en 2026 se sitúa en 5.101,20 € mensuales. Por encima de dicho límite, la calculadora aplica la cotización progresiva de solidaridad en sus tres tramos sobre el exceso de retribución mensual, evitando aplicar el tipo ordinario sobre la totalidad del bruto en salarios elevados.' },
138
+ { type: 'title', text: 'Diferencia entre 12 y 14 pagas', level: 2 },
139
+ { type: 'paragraph', html: 'Modificar el número de pagas no altera el salario bruto anual ni el coste total de la empresa. Únicamente adapta la media mostrada por paga. Dado que las nóminas reales con 14 pagas suelen concentrar la cotización a la Seguridad Social en las 12 mensualidades ordinarias, el promedio que muestra esta herramienta es ideal para comparar ofertas y presupuestos.' },
140
+ { type: 'tip', title: 'Compara ofertas manteniendo los mismos parámetros', html: 'Mantén constantes el tipo de IRPF, la modalidad contractual, el número de pagas y la tarifa de accidentes. Así aislarás el efecto del salario bruto y podrás comparar dos ofertas de empleo o presupuestos de contratación en igualdad de condiciones.' },
141
+ { type: 'title', text: 'Límites del cálculo salarial', level: 2 },
142
+ { type: 'paragraph', html: 'La herramienta está orientada al trabajo a tiempo completo en España dentro del Régimen General para 2026. No contempla bases mínimas por jornada parcial, regímenes forales o especiales, retribución en especie, conceptos exentos, bonificaciones empresariales, trabajo autónomo ni regularizaciones de nómina. Para casos específicos, recurra a un profesional o a su software de nóminas.' },
143
+ ],
144
+ faq,
145
+ bibliography,
146
+ howTo,
147
+ schemas: [faqSchema, howToSchema, appSchema],
148
+ };
@@ -0,0 +1,159 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
4
+ import type { SalaryEmployerCostUI } from '../ui';
5
+
6
+ const slug = "calculateur-salaire-brut-net-cout-employeur-espagne";
7
+ const title = "Calculateur de Salaire Brut, Net et Coût Employeur en Espagne 2026";
8
+ const description = "Estimez le salaire net, la retenue IRPF, les cotisations salariales et le coût total de l employeur en Espagne selon les règles de 2026.";
9
+
10
+ const faq = [
11
+ {
12
+ "question": "Combien coûte un salarié à une entreprise en Espagne ?",
13
+ "answer": "L entreprise paie le salaire brut plus ses cotisations patronales. Pour un poste de bureau en CDI à 30 000 € bruts, le coût employeur annuel est estimé à 39 645 €."
14
+ },
15
+ {
16
+ "question": "Comment calculer le passage du brut au net en Espagne ?",
17
+ "answer": "Partez du salaire brut annuel, soustrayez la Sécurité Sociale du salarié et le taux de retenue IRPF."
18
+ },
19
+ {
20
+ "question": "Le choix de 12 ou 14 versements modifie-t-il le salaire annuel ?",
21
+ "answer": "Non. Le calculateur conserve le même montant brut annuel et le divise par 12 ou 14."
22
+ },
23
+ {
24
+ "question": "Quels taux de Sécurité Sociale 2026 sont inclus ?",
25
+ "answer": "L estimation inclut les contingences communes, le chômage, la formation, le MEI et le FOGASA ainsi que le taux AT/MP."
26
+ },
27
+ {
28
+ "question": "Que se passe-t-il au-delà de la base maximale de cotisation ?",
29
+ "answer": "Les cotisations standard sont plafonnées à 5 101,20 € par mois en 2026, puis la cotisation de solidarité s applique."
30
+ },
31
+ {
32
+ "question": "Cette calculatrice est-elle valable hors d Espagne ?",
33
+ "answer": "Non. Elle est exclusivement limitée au Régime Général espagnol pour 2026."
34
+ },
35
+ {
36
+ "question": "Les données salariales sont-elles envoyées à un serveur ?",
37
+ "answer": "Non. Tous les calculs s exécutent localement dans votre navigateur."
38
+ }
39
+ ];
40
+
41
+ const howTo = [
42
+ {
43
+ "name": "Saisir le salaire brut",
44
+ "text": "Choisissez l entrée annuelle ou mensuelle puis indiquez le salaire brut."
45
+ },
46
+ {
47
+ "name": "Configurer les hypothèses de paie",
48
+ "text": "Sélectionnez 12 ou 14 versements, le type de contrat, le taux d IRPF et la prime d accidents."
49
+ },
50
+ {
51
+ "name": "Consulter l orbite salariale",
52
+ "text": "Comparez le salaire net, les déductions salariales et le halo patronal."
53
+ },
54
+ {
55
+ "name": "Changer la période de résultat",
56
+ "text": "Passez des totaux annuels à la moyenne par versement."
57
+ }
58
+ ];
59
+
60
+ const faqSchema: WithContext<FAQPage> = {
61
+ '@context': 'https://schema.org',
62
+ '@type': 'FAQPage',
63
+ mainEntity: faq.map((item) => ({
64
+ '@type': 'Question',
65
+ name: item.question,
66
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
67
+ })),
68
+ };
69
+
70
+ const howToSchema: WithContext<HowTo> = {
71
+ '@context': 'https://schema.org',
72
+ '@type': 'HowTo',
73
+ name: title,
74
+ description,
75
+ step: howTo.map((step, index) => ({
76
+ '@type': 'HowToStep',
77
+ position: index + 1,
78
+ name: step.name,
79
+ text: step.text,
80
+ })),
81
+ };
82
+
83
+ const appSchema: WithContext<SoftwareApplication> = {
84
+ '@context': 'https://schema.org',
85
+ '@type': 'SoftwareApplication',
86
+ name: title,
87
+ description,
88
+ applicationCategory: 'FinanceApplication',
89
+ operatingSystem: 'All',
90
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
91
+ inLanguage: "fr",
92
+ };
93
+
94
+ export const content: ToolLocaleContent<SalaryEmployerCostUI> = {
95
+ slug,
96
+ title,
97
+ description,
98
+ ui: {
99
+ "labelGrossSalary": "Signal de salaire brut",
100
+ "labelGrossSalaryHint": "Montant du salaire",
101
+ "labelAnnual": "Annuel",
102
+ "labelMonthly": "Mensuel",
103
+ "labelPaySchedule": "Calendrier de paiement",
104
+ "labelTwelvePayments": "12 versements",
105
+ "labelFourteenPayments": "14 versements",
106
+ "labelContract": "Type de contrat",
107
+ "labelPermanent": "CDI (Indéterminé)",
108
+ "labelTemporary": "CDD (Temporaire)",
109
+ "labelIrpfRate": "Retenue à la source IRPF",
110
+ "labelIrpfHint": "Utilisez le taux de l Agence Tributaire, offre ou fiche de paie",
111
+ "labelRiskRate": "Cotisation accidents du travail et maladies pro (AT/MP)",
112
+ "labelRiskHint": "Taux employeur pour accidents du travail et maladies pro",
113
+ "labelOfficePreset": "Bureau 1,50 %",
114
+ "labelTradePreset": "Commercial / Ventes 2,00 %",
115
+ "labelConstructionPreset": "BTP / Construction 6,70 %",
116
+ "labelNetCore": "Noyau du salaire net",
117
+ "labelEmployeeDeductions": "Déductions du salarié",
118
+ "labelDeductionsFormula": "IRPF plus Sécurité Sociale du salarié",
119
+ "labelEmployerHalo": "Halo de cotisation patronale",
120
+ "labelEmployerCost": "Coût total pour l employeur",
121
+ "labelAnnualView": "Vue annuelle",
122
+ "labelPerPaymentView": "Moyenne par versement",
123
+ "labelGross": "Salaire brut",
124
+ "labelIrpf": "Retenue IRPF",
125
+ "labelEmployeeSocialSecurity": "Sécurité Sociale du salarié",
126
+ "labelContributionBase": "Base mensuelle de cotisation",
127
+ "labelCostMultiplier": "Multiplicateur de coût par rapport au brut",
128
+ "labelWorkerKeeps": "Part nette sur le coût total",
129
+ "labelLeanGap": "Halo de coût ajusté",
130
+ "labelTypicalGap": "Halo de coût classique",
131
+ "labelWideGap": "Halo de coût élargi",
132
+ "labelModelScope": "Espagne uniquement. Régime Général 2026, temps plein et salaire ordinaire en espèces. Les résultats sont des estimations.",
133
+ "labelReset": "Réinitialiser l exemple",
134
+ "labelInvalid": "Entrez un salaire annuel à temps plein valide et respectez les plages d IRPF et d accidents.",
135
+ "labelMinimumSalary": "Le modèle démarre au salaire minimum interprofessionnel 2026 de 17 094 € par an.",
136
+ "labelPrivacy": "Calculé localement dans votre navigateur"
137
+ },
138
+ seo: [
139
+ { type: 'title', text: "Du salaire brut au coût réel pour l entreprise en Espagne", level: 2 },
140
+ { type: 'paragraph', html: "Estimez le salaire net, la retenue IRPF, les cotisations salariales et le coût total de l employeur en Espagne selon les règles de 2026." },
141
+ { type: 'title', text: "La formule du coût employeur", level: 2 },
142
+ { type: 'paragraph', html: "L entreprise paie le salaire brut plus ses cotisations patronales. Pour un poste de bureau en CDI à 30 000 € bruts, le coût employeur annuel est estimé à 39 645 €." },
143
+ { type: 'table', headers: ['Layer', 'Details'], rows: [['Net', "Noyau du salaire net"], ['Employer Cost', "Coût total pour l employeur"]] },
144
+ { type: 'title', text: "Taux de Sécurité Sociale espagnols inclus pour 2026", level: 2 },
145
+ { type: 'paragraph', html: "L estimation inclut les contingences communes, le chômage, la formation, le MEI et le FOGASA ainsi que le taux AT/MP." },
146
+ { type: 'table', headers: ['Preset', 'Rate'], rows: [["Bureau 1,50 %", '1.50%'], ["Commercial / Ventes 2,00 %", '2.00%'], ["BTP / Construction 6,70 %", '6.70%']] },
147
+ { type: 'title', text: "Plafonds de cotisation et hauts salaires", level: 2 },
148
+ { type: 'paragraph', html: "Les cotisations standard sont plafonnées à 5 101,20 € par mois en 2026, puis la cotisation de solidarité s applique." },
149
+ { type: 'title', text: "Douze versements et quatorze versements", level: 2 },
150
+ { type: 'paragraph', html: "Non. Le calculateur conserve le même montant brut annuel et le divise par 12 ou 14." },
151
+ { type: 'tip', title: "Calendrier de paiement", html: "Sélectionnez 12 ou 14 versements, le type de contrat, le taux d IRPF et la prime d accidents." },
152
+ { type: 'title', text: "Limites de cette estimation salariale espagnole", level: 2 },
153
+ { type: 'paragraph', html: "Espagne uniquement. Régime Général 2026, temps plein et salaire ordinaire en espèces. Les résultats sont des estimations." },
154
+ ],
155
+ faq,
156
+ bibliography,
157
+ howTo,
158
+ schemas: [faqSchema, howToSchema, appSchema],
159
+ };
@@ -0,0 +1,159 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import { bibliography } from '../bibliography';
4
+ import type { SalaryEmployerCostUI } from '../ui';
5
+
6
+ const slug = "kalkulator-gaji-kotor-bersih-biaya-pemberi-kerja-spanyol";
7
+ const title = "Kalkulator Gaji Kotor, Bersih & Biaya Perusahaan Spanyol 2026";
8
+ const description = "Hitung gaji bersih, potongan IRPF, iuran pekerja, dan total biaya perusahaan di Spanyol berdasarkan aturan 2026.";
9
+
10
+ const faq = [
11
+ {
12
+ "question": "Berapa biaya seorang karyawan bagi perusahaan di Spanyol?",
13
+ "answer": "Perusahaan membayar gaji kotor ditambah iuran jaminan sosial perusahaan."
14
+ },
15
+ {
16
+ "question": "Bagaimana cara menghitung gaji kotor ke bersih di Spanyol?",
17
+ "answer": "Mulai dari gaji kotor tahunan, kurangi iuran jaminan sosial pekerja dan kurangi pajak IRPF."
18
+ },
19
+ {
20
+ "question": "Apakah memilih 12 atau 14 pembayaran mengubah gaji tahunan?",
21
+ "answer": "Tidak. Kalkulator mempertahankan total kotor tahunan yang sama."
22
+ },
23
+ {
24
+ "question": "Tarif Jaminan Sosial apa saja yang termasuk untuk 2026?",
25
+ "answer": "Estimasi mencakup kontinjensi umum, pengangguran, pelatihan, MEI, FOGASA, dan premi kecelakaan kerja."
26
+ },
27
+ {
28
+ "question": "Apa yang terjadi jika gaji melebihi batas maksimum iuran?",
29
+ "answer": "Batas maksimum bulanan 2026 adalah €5.101,20. Di atas itu berlaku iuran solidaritas progresif."
30
+ },
31
+ {
32
+ "question": "Apakah kalkulator ini berlaku di luar Spanyol?",
33
+ "answer": "Tidak. Kalkulator ini terbatas untuk sistem Spanyol 2026."
34
+ },
35
+ {
36
+ "question": "Apakah data gaji dikirim ke server?",
37
+ "answer": "Tidak. Semua perhitungan berjalan di peramban Anda secara lokal."
38
+ }
39
+ ];
40
+
41
+ const howTo = [
42
+ {
43
+ "name": "Masukkan gaji kotor",
44
+ "text": "Pilih opsi tahunan atau bulanan lalu masukkan gaji kotor."
45
+ },
46
+ {
47
+ "name": "Atur asumsi penggajian Spanyol",
48
+ "text": "Pilih 12/14 pembayaran, jenis kontrak, IRPF, dan premi risiko."
49
+ },
50
+ {
51
+ "name": "Bandingkan komponen gaji",
52
+ "text": "Lihat gaji bersih, potongan pekerja, dan kontribusi perusahaan."
53
+ },
54
+ {
55
+ "name": "Ubah periode hasil",
56
+ "text": "Lihat total tahunan atau rata-rata per pembayaran."
57
+ }
58
+ ];
59
+
60
+ const faqSchema: WithContext<FAQPage> = {
61
+ '@context': 'https://schema.org',
62
+ '@type': 'FAQPage',
63
+ mainEntity: faq.map((item) => ({
64
+ '@type': 'Question',
65
+ name: item.question,
66
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
67
+ })),
68
+ };
69
+
70
+ const howToSchema: WithContext<HowTo> = {
71
+ '@context': 'https://schema.org',
72
+ '@type': 'HowTo',
73
+ name: title,
74
+ description,
75
+ step: howTo.map((step, index) => ({
76
+ '@type': 'HowToStep',
77
+ position: index + 1,
78
+ name: step.name,
79
+ text: step.text,
80
+ })),
81
+ };
82
+
83
+ const appSchema: WithContext<SoftwareApplication> = {
84
+ '@context': 'https://schema.org',
85
+ '@type': 'SoftwareApplication',
86
+ name: title,
87
+ description,
88
+ applicationCategory: 'FinanceApplication',
89
+ operatingSystem: 'All',
90
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
91
+ inLanguage: "id",
92
+ };
93
+
94
+ export const content: ToolLocaleContent<SalaryEmployerCostUI> = {
95
+ slug,
96
+ title,
97
+ description,
98
+ ui: {
99
+ "labelGrossSalary": "Sinyal Gaji Kotor",
100
+ "labelGrossSalaryHint": "Jumlah gaji",
101
+ "labelAnnual": "Tahunan",
102
+ "labelMonthly": "Bulanan",
103
+ "labelPaySchedule": "Jadwal Pembayaran",
104
+ "labelTwelvePayments": "12 Pembayaran",
105
+ "labelFourteenPayments": "14 Pembayaran",
106
+ "labelContract": "Jenis Kontrak",
107
+ "labelPermanent": "Tetap",
108
+ "labelTemporary": "Kontrak / Sementara",
109
+ "labelIrpfRate": "Pemotongan Pajak IRPF",
110
+ "labelIrpfHint": "Gunakan tarif dari otoritas pajak, penawaran, atau slip gaji",
111
+ "labelRiskRate": "Premi Risiko Kecelakaan Kerja (AT & EP)",
112
+ "labelRiskHint": "Tarif premi kecelakaan kerja untuk perusahaan",
113
+ "labelOfficePreset": "Kantor 1,50%",
114
+ "labelTradePreset": "Penjualan / Komersial 2,00%",
115
+ "labelConstructionPreset": "Konstruksi 6,70%",
116
+ "labelNetCore": "Inti Gaji Bersih",
117
+ "labelEmployeeDeductions": "Potongan Pekerja",
118
+ "labelDeductionsFormula": "IRPF ditambah Jaminan Sosial Pekerja",
119
+ "labelEmployerHalo": "Halo Iuran Perusahaan",
120
+ "labelEmployerCost": "Total Biaya Perusahaan",
121
+ "labelAnnualView": "Tampilan Tahunan",
122
+ "labelPerPaymentView": "Rata-rata per Pembayaran",
123
+ "labelGross": "Gaji Kotor",
124
+ "labelIrpf": "Potongan IRPF",
125
+ "labelEmployeeSocialSecurity": "Jaminan Sosial Pekerja",
126
+ "labelContributionBase": "Basis Iuran Bulanan",
127
+ "labelCostMultiplier": "Pengali Biaya dibanding Kotor",
128
+ "labelWorkerKeeps": "Porsi Bersih dari Total Biaya",
129
+ "labelLeanGap": "Halo Biaya Efisien",
130
+ "labelTypicalGap": "Halo Biaya Standar",
131
+ "labelWideGap": "Halo Biaya Luas",
132
+ "labelModelScope": "Khusus Spanyol. Skema Umum 2026, kerja penuh waktu, gaji tunai biasa. Hasil berupa estimasi.",
133
+ "labelReset": "Reset contoh",
134
+ "labelInvalid": "Masukkan gaji kotor tahunan yang valid dan jaga tarif IRPF serta risiko dalam batas.",
135
+ "labelMinimumSalary": "Model dimulai dari UMR tahunan Spanyol 2026 sebesar €17.094.",
136
+ "labelPrivacy": "Dihitung secara lokal di peramban Anda"
137
+ },
138
+ seo: [
139
+ { type: 'title', text: "Dari gaji kotor ke biaya nyata perusahaan di Spanyol", level: 2 },
140
+ { type: 'paragraph', html: "Hitung gaji bersih, potongan IRPF, iuran pekerja, dan total biaya perusahaan di Spanyol berdasarkan aturan 2026." },
141
+ { type: 'title', text: "Formula biaya perusahaan Spanyol", level: 2 },
142
+ { type: 'paragraph', html: "Perusahaan membayar gaji kotor ditambah iuran jaminan sosial perusahaan." },
143
+ { type: 'table', headers: ['Layer', 'Details'], rows: [['Net', "Inti Gaji Bersih"], ['Employer Cost', "Total Biaya Perusahaan"]] },
144
+ { type: 'title', text: "Tarif Jaminan Sosial Spanyol 2026 yang disertakan", level: 2 },
145
+ { type: 'paragraph', html: "Estimasi mencakup kontinjensi umum, pengangguran, pelatihan, MEI, FOGASA, dan premi kecelakaan kerja." },
146
+ { type: 'table', headers: ['Preset', 'Rate'], rows: [["Kantor 1,50%", '1.50%'], ["Penjualan / Komersial 2,00%", '2.00%'], ["Konstruksi 6,70%", '6.70%']] },
147
+ { type: 'title', text: "Batas iuran dan gaji tinggi", level: 2 },
148
+ { type: 'paragraph', html: "Batas maksimum bulanan 2026 adalah €5.101,20. Di atas itu berlaku iuran solidaritas progresif." },
149
+ { type: 'title', text: "Skema 12 pembayaran dan 14 pembayaran", level: 2 },
150
+ { type: 'paragraph', html: "Tidak. Kalkulator mempertahankan total kotor tahunan yang sama." },
151
+ { type: 'tip', title: "Jadwal Pembayaran", html: "Pilih 12/14 pembayaran, jenis kontrak, IRPF, dan premi risiko." },
152
+ { type: 'title', text: "Batasan estimasi gaji Spanyol ini", level: 2 },
153
+ { type: 'paragraph', html: "Khusus Spanyol. Skema Umum 2026, kerja penuh waktu, gaji tunai biasa. Hasil berupa estimasi." },
154
+ ],
155
+ faq,
156
+ bibliography,
157
+ howTo,
158
+ schemas: [faqSchema, howToSchema, appSchema],
159
+ };