From d41146a1c4b0a930769871e1313c96ceadb14b1f Mon Sep 17 00:00:00 2001 From: Tero Elonen Date: Fri, 12 Apr 2024 18:06:14 +0300 Subject: [PATCH 1/3] UHF-9815: Remove possibility to select multiple deliveries for the shopping service in the home care client fee calculator, adjust texts accordingly --- dist/js/home_care_client_fee.min.js | 2 +- dist/js/home_care_service_voucher.min.js | 2 +- package-lock.json | 6 +- src/js/calculator/example-calc.html | 3 +- .../calculator/home_care_client_fee/_form.js | 22 +----- .../home_care_client_fee/_translations.js | 40 ++++------- .../home_care_client_fee.js | 71 ++++++------------- 7 files changed, 46 insertions(+), 100 deletions(-) diff --git a/dist/js/home_care_client_fee.min.js b/dist/js/home_care_client_fee.min.js index aee7243c5..416f9437a 100644 --- a/dist/js/home_care_client_fee.min.js +++ b/dist/js/home_care_client_fee.min.js @@ -1 +1 @@ -!function(){"use strict";var e={getFormData:function(e,a,{firstPerWeekPrice:i,othersPerWeekPrice:t}){return{form_id:e,has_required_fields:!0,items:[{input_integer:{id:"household_size",label:a("household_size"),unit:a("unit_person"),min:1,size:2,required:!0,helper_text:a("household_size_explanation")}},{input_float:{id:"gross_income_per_month",label:a("gross_income_per_month"),unit:a("unit_euro"),min:0,size:8,required:!1,strip:"[€eE ]",helper_text:a("gross_income_per_month_explanation")}},{input_integer:{id:"monthly_usage",label:a("monthly_usage"),unit:a("unit_hour"),min:0,max:744,size:3,required:!0,helper_text:a("monthly_usage_explanation")}},{heading:{text:a("living_at_home_heading"),level:3}},{paragraph:{text:a("living_at_home_paragraph")}},{heading:{text:a("safetyphone_heading"),level:4}},{paragraph:{text:a("safetyphone_paragraph")}},{radio:{id:"safetyphone",label:a("safetyphone"),required:!0,radio_items:[{name:"safetyphone",item_id:"safetyphone_1",label:a("yes_calculate"),value:1},{name:"safetyphone",item_id:"safetyphone_2",label:a("no"),value:2}]}},{heading:{text:a("shopping_service_heading"),level:4}},{paragraph:{text:a("shopping_service_paragraph")}},{radio:{id:"shopping_service",label:a("shopping_service"),required:!0,radio_items:[{name:"shopping_service",item_id:"shopping_service_1",label:a("yes_calculate"),value:1},{name:"shopping_service",item_id:"shopping_service_2",label:a("no"),value:2}]}},{group:{id:"shopping_service_group",hide_group:!0,items:[{input_integer:{id:"shopping_service_per_week",label:a("shopping_service_per_week"),unit:a("unit_amount"),min:1,size:2,required:!0,helper_text:a("shopping_service_per_week_explanation",{first_per_week_price:i,others_per_week_price:t})}}]}},{heading:{text:a("meal_service_heading"),level:4}},{paragraph:{text:a("meal_service_paragraph")}},{radio:{id:"meal_service",label:a("meal_service"),required:!0,radio_items:[{name:"meal_service",item_id:"meal_service_1",label:a("yes_calculate"),value:1},{name:"meal_service",item_id:"meal_service_2",label:a("no"),value:2}]}},{group:{id:"meal_service_group",hide_group:!0,items:[{input_integer:{id:"meal_service_per_week",label:a("meal_service_per_week"),unit:a("unit_amount"),min:1,max:7,size:2,required:!0,helper_text:a("meal_service_per_week_explanation")}}]}}]}}};var a={household_size:{fi:"Talouden koko",sv:"Hushållets storlek",en:"Household size"},household_size_explanation:{fi:"Samassa osoitteessa asuvien perheenjäsenten määrä.",sv:"Antal familjemedlemmar som bor på samma adress.",en:"The number of family members living at the same address."},gross_income_per_month:{fi:"Talouden bruttotulot kuukaudessa",sv:"Hushållets bruttoinkomster per månad",en:"Household's gross income per month"},gross_income_per_month_explanation:{fi:"Koko talouden yhteenlasketut ansio- ja pääomatulot ennen verojen vähentämistä. Tuloihin lasketaan palkka, eläke-, vuokra- ja korkotulot sekä eläkkeensaajan hoitotuki. Jos jätät kentän tyhjäksi, lasketaan arvio korkeimman maksun mukaisesti.",sv:"Hela hushållets sammanlagda förvärvs- och kapitalinkomster före skatteavdrag. I inkomsterna ingår lön, pensions-, hyres och ränteinkomster samt vårdbidrag för pensionstagare. Om du lämnar fältet tomt beräknas bedömningen enligt den högsta avgiften.",en:"The entire household's combined income from earnings and capital income before taxes. Income includes salary, wages, pension, rental and interest income as well as care allowance for pensioners. If you leave the field blank, the estimate will be calculated using the highest fee."},monthly_usage:{fi:"Kotihoidon tuntimäärä kuukaudessa",sv:"Antal hemvårdstimmar per månad",en:"Number of hours of home care per month"},monthly_usage_explanation:{fi:"Löydät tuntimäärän kotihoidon palvelu- ja hoitosuunnitelmasta.",sv:"Du hittar antalet timmar i hemvårdens service- och vårdplan.",en:"You can find the number of hours in the home care service and care plan."},living_at_home_heading:{fi:"Kotona asumista tukevat palvelut",sv:"Tjänster som stöder hemmaboende",en:"Services to support living at home"},living_at_home_paragraph:{fi:"Voit laskea mukaan kotona asumista tukevia palveluja. Tukipalvelut ovat maksullisia.",sv:"Du kan inkludera tjänster som stöder hemmaboende. Stödtjänsterna är avgiftsbelagda.",en:"You can include services supporting living at home. The support services are subject to a fee."},safetyphone_heading:{fi:"Turvapuhelin ja turvaranneke",sv:"Trygghetstelefon och säkerhetsarmband",en:"Safety phone and bracelet"},safetyphone_paragraph:{fi:"Turvapuhelinpalveluun kuuluu turvapuhelin ja turvaranneke, joilla saat tarvittaessa apua ympäri vuorokauden. Turvapuhelinpalvelun maksut riippuvat talouden tuloista.",sv:"I trygghetstelefontjänsten ingår en trygghetstelefon och ett säkerhetsarmband genom vilka du vid behov får hjälp dygnet runt. Avgifterna för säkerhetstelefontjänsten beror på hushållets inkomster.",en:"The safety phone service includes a safety phone and a safety bracelet to call for help around the clock. The charges for the safety phone service depend on the income of the household."},safetyphone:{fi:"Laske arvioon turvapuhelin ja turvaranneke",sv:"Inkludera en trygghetstelefon och ett säkerhetsarmband i bedömningen",en:"Include the safety phone and safety bracelet in the estimate"},yes_calculate:{fi:"Kyllä, laske arvioon.",sv:"Ja, inkludera i bedömningen.",en:"Yes, include them in the estimate."},no:{fi:"Ei",sv:"Nej",en:"No"},shopping_service_heading:{fi:"Kauppapalvelu",sv:"Butiksservice:",en:"Grocery delivery service"},shopping_service_paragraph:{fi:"Kauppapalvelussa tilaamasi ruokaostokset toimitetaan kotiovellesi. Kauppapalvelun hintaan kuuluu ruokaostosten keräily ja toimitus.",sv:"I butiksservicen levereras de livsmedelsinköp som du beställer till din dörr. I priset för butiksservicen ingår insamling och leverans av livsmedelsinköp.",en:"The grocery delivery service delivers the groceries that you order through the service to your door. The price of the grocery delivery service includes the collection and delivery of the groceries."},shopping_service:{fi:"Laske arvioon kauppapalvelu",sv:"Inkludera butiksservicen i bedömningen",en:"Include the grocery delivery service in the estimate"},shopping_service_per_week:{fi:"Kauppapalvelun toimitusten määrä viikossa",sv:"Antal butiksserviceleveranser per vecka",en:"Number of deliveries from the grocery delivery service per week"},shopping_service_per_week_explanation:{fi:"Yksi toimitus viikossa maksaa ${first_per_week_price} euroa, muut toimitukset ${others_per_week_price} euroa per toimitus.",sv:"En leverans per vecka kostar ${first_per_week_price} euro, andra leveranser ${others_per_week_price} euro per leverans.",en:"One delivery per week costs ${first_per_week_price} euros, and the other deliveries are ${others_per_week_price} euros per delivery."},meal_service_heading:{fi:"Ateriapalvelu",sv:"Måltidstjänst",en:"Meal service"},meal_service_paragraph:{fi:"Ateriapalvelussa kotiisi kuljetetaan valmiita lounasaterioita, jotka voit itse lämmittää. Ateriapalvelun hintaan kuuluu lounasaterian hinta ja kuljetusmaksu.",sv:"I måltidstjänsten levereras färdiga lunchmåltider hem till dig, som du själv kan värma upp. I priset för måltidstjänsten ingår priset för lunchmåltiderna och leveransavgiften.",en:"The meal service transports to your home ready-made lunch meals, which you can heat up yourself. The price of the meal service includes the price of a lunch meal and a delivery fee."},meal_service:{fi:"Laske arvioon ateriapalvelu",sv:"Inkludera måltidstjänsten i bedömningen",en:"Include the meal service in the estimate"},meal_service_per_week:{fi:"Aterioiden määrä viikossa",sv:"Antal måltider per vecka",en:"Number of meals per week"},meal_service_per_week_explanation:{fi:"Voit tilata ateriapalvelun hinnaston mukaisia lounasaterioita enintään 7 ateriaa viikossa.",sv:"Du kan beställa högst sju måltider per vecka enligt måltidstjänstens prislista.",en:"You can order up to 7 lunch meals according to the meal service price list per week."},receipt_estimate_of_payment:{fi:"Arvio kotihoidon asiakasmaksusta",sv:"Bedömning av klientavgiften för hemvård",en:"Estimated home care client fee"},receipt_family_estimated_payment_prefix:{fi:"Arvioitu asiakasmaksu on yhteensä",sv:"Den beräknade klientavgiften är totalt",en:"The total estimated client fee is"},receipt_family_estimated_payment_suffix:{fi:"euroa kuukaudessa.",sv:"euro per månad.",en:"euros per month."},receipt_family_estimated_payment_explanation_min:{fi:"Alle ${minimum_payment_euro} euron maksuja ei laskuteta. ",sv:"Inga avgifter under ${minimum_payment_euro} euro debiteras. ",en:"Fees of less than ${minimum_payment_euro} euros will not be charged. "},receipt_family_empty_income:{fi:"Arvio on laskettu korkeimman maksun mukaisesti, koska et täyttänyt laskuriin talouden kuukausituloja. ",sv:"Bedömningen har beräknats enligt den högsta avgiften, eftersom du inte fyllde i hushållets månadsinkomster i räknaren. ",en:"Since you did not enter the household's monthly income in the calculator, the estimate was calculated using the highest fee. "},receipt_family_estimated_payment_explanation:{fi:"Tämä arvio on suuntaa antava. Tarkka arvo lasketaan kotihoidon päätökseen.",sv:"Denna bedömning är riktgivande. Det exakta värdet beräknas för beslutet om hemvård.",en:"This estimate is indicative only. The exact value will be calculated for the home care decision."},receipt_estimate_is_based_on:{fi:"Arvio muodostuu seuraavista tiedoista:",sv:"Bedömningen görs enligt följande uppgifter:",en:"The estimate consists of the following:"},receipt_subtotal_euros_per_month:{fi:"${value} €/kk",sv:"${value} euro/månad",en:"${value} €/month"},receipt_subtotal_euros_per_month_screenreader:{fi:"${value} euroa kuukaudessa",sv:"${value} euro per månad",en:"${value} euros per month"},receipt_additional_details:{fi:"Lisähuomiot:",sv:"Ytterligare anmärkningar:",en:"Additional remarks:"},receipt_homecare_payment:{fi:"Kotihoidon asiakasmaksu",sv:"Klientavgift för hemvården",en:"Home care client fee"},receipt_homecare_payment_two_or_more:{fi:"Jos molemmat puolisot ovat jatkuvan ja säännöllisen kotihoidon kuukausimaksuasiakkaita, maksu jakautuu kummallekin palvelu- ja hoitosuunnitelman mukaisesti.",sv:"Om båda makarna betalar en månatlig avgift för kontinuerlig och regelbunden hemvård, fördelas avgiften mellan dem i enlighet med service- och vårdplanen.",en:"If both spouses are clients of continuous and regular home care with a monthly fee, the fee is divided between them in accordance with their service and care plans."},receipt_shopping_service_math_single:{fi:"1 kauppatoimitus viikossa, kuukausihintaan on laskettu 4 toimitusta.",sv:"1 butiksleverans per vecka, 4 leveranser ingår i månadspriset.",en:"1 grocery delivery per week; the monthly fee includes 4 deliveries."},receipt_shopping_service_math_multiple:{fi:"${delivery_count_per_week} kauppatoimitusta viikossa, kuukausihintaan on laskettu ${delivery_count_per_month} toimitusta.",sv:"${delivery_count_per_week} butiksleveranser per vecka, i månadspriset ingår ${delivery_count_per_month} leveranser.",en:"${delivery_count_per_week} grocery deliveries per week; the monthly fee includes ${delivery_count_per_month} deliveries."},receipt_shopping_service_explanation:{fi:"Kunkin viikon ensimmäinen toimitus maksaa ${first_per_week} euroa. Muut saman viikon toimitukset maksavat kukin ${others_per_week} euroa.",sv:"Den första leveransen för varje vecka kostar ${first_per_week} euro. De övriga leveranserna för samma vecka kostar ${others_per_week} euro.",en:"The first delivery of each week costs ${first_per_week} euros. Other deliveries during the same week cost ${others_per_week} euros each."},receipt_shopping_service_algorithm:{fi:"Laskuri laskee kuljetukset tasaisesti eri viikoille, mutta voit itse vaikuttaa kauppatoimitusten määrään tarpeesi mukaan.",sv:"Räknaren beräknar leveranserna jämnt för olika veckor, men du kan påverka antalet butiksleveranser enligt dina behov.",en:"The calculator calculates deliveries evenly for different weeks, but you can set the number of grocery deliveries according to your needs."},receipt_aria_live:{fi:"Kotihoidon asiakasmaksun arvio on ${payment} euroa kuukaudessa, lue lisätietoja lomakkeen alta.",sv:"Den beräknade klientavgiften för hemvården är ${payment} euro per månad, mer information under blanketten.",en:"The estimated home care client fee is ${payment} euros per month; read more under the form."},receipt_meal_service_count_single:{fi:"1 lounasateria viikossa, kuukausihintaan on laskettu 4 ateriaa.",sv:"1 butiksleverans per vecka, 4 leveranser ingår i månadspriset.",en:"1 lunch meal per week; the monthly fee includes 4 meals."},receipt_meal_service_count_multiple:{fi:"${meals_per_week} lounasateriaa viikossa, kuukausihintaan on laskettu ${meals_per_month} ateriaa.",sv:"${meals_per_week} lunchmåltider per vecka, i månadspriset ingår ${meals_per_month} måltider.",en:"${meals_per_week} lunch meals per week; the monthly fee includes ${meals_per_month} meals."},receipt_meal_service_price:{fi:"Yksittäisen lounasaterian hinta on ${meal_service_price} euroa. Lämpimän aterian lisäksi voit tilata maksullisen jälkiruuan. Voit tilata ateriapalvelun hinnaston mukaisia lounasaterioita enintään 7 ateriaa viikossa, muut ateriat ovat omakustanteisia.",sv:"Priset på en lunchmåltid är ${meal_service_price} euro. Förutom en varm måltid kan du också beställa en avgiftsbelagd efterrätt. Du kan beställa högst sju måltider per vecka enligt måltidstjänstens prislista, de övriga måltiderna på egen bekostnad.",en:"The price of a single lunch meal is ${meal_service_price} euros. In addition to a hot meal, you can order a dessert for a fee. You can order up to 7 lunch meals according to the meal service price list per week; any additional meals are at your own expense."},receipt_meal_service_1_delivery_price:{fi:"Ateriat toimitetaan kotiin 1–2 kertaa viikossa. Kuljetuksia on yksi, kun tilattuja aterioita on 1–3, ja kuljetuksia on kaksi, kun aterioita on 4 tai enemmän. Hintaan on laskettu yksi kuljetusmaksu viikossa eli 4 kuljetusta kuukaudessa. Kukin kuljetus maksaa ${meal_service_delivery_price} euroa.",sv:"Måltiderna levereras hem 1–2 gånger per vecka. Det görs en leverans för 1–3 beställda måltider, och två leveranser för 4 eller fler måltider. I priset ingår en leveransavgift per vecka, med andra ord 4 leveranser per månad. Varje leverans kostar ${meal_service_delivery_price} euro.",en:"The meals will be delivered to your home once or twice a week: once a week if you order 1–3 meals, twice a week if you order 4 or more meals. The price includes one delivery fee per week, i.e. 4 deliveries per month. Each delivery costs ${meal_service_delivery_price} euros."},receipt_meal_service_2_delivery_price:{fi:"Ateriat toimitetaan kotiin 1–2 kertaa viikossa. Kuljetuksia on yksi, kun tilattuja aterioita on 1–3, ja kuljetuksia on kaksi, kun aterioita on 4 tai enemmän. Hintaan on laskettu kaksi kuljetusmaksua viikossa eli 8 kuljetusta kuukaudessa. Kukin kuljetus maksaa ${meal_service_delivery_price} euroa.",sv:"Måltiderna levereras hem 1–2 gånger per vecka. Det görs en leverans för 1–3 beställda måltider, och två leveranser för 4 eller fler måltider. I priset ingår två leveransavgifter per vecka, med andra ord 8 leveranser per månad. Varje leverans kostar ${meal_service_delivery_price} euro.",en:"The meals will be delivered to your home once or twice a week: once a week if you order 1–3 meals, twice a week if you order 4 or more meals. The price includes two delivery fees per week, i.e. 8 deliveries per month. Each delivery costs ${meal_service_delivery_price} euros."},receipt_meal_service_menumat_notice:{fi:"Ateriapalvelun sijaan voit tilata kotiisi pakastimen ja uunin yhdistelmän eli Menumat-ateria-automaatin. Menumat-palvelussa aterian hinta on ${menumat_price} euroa ja palvelumaksu on ${menumat_device_price} euroa vuorokaudessa. Aterian lisäksi voit tilata maksullisen jälkiruoan.",sv:"I stället för måltidstjänsten kan du beställa en kombination av en frys och en ugn, med andra ord en Menumat-måltidsautomat. I Menumat-servicen kostar en måltid ${menumat_price} euro och serviceavgiften är ${menumat_device_price} euro per dag. Förutom en måltid kan du också beställa en avgiftsbelagd efterrätt.",en:"Instead of the meal service, you can order a Menumat meal device, which is a combination of a freezer and an oven, to your home. In the Menumat service, the price per meal is ${menumat_price} euros, and the service fee is ${menumat_device_price} euros per day. In addition to the meal, you can order a dessert for a fee."}};class i{static calculateClientFee(e,a,i,t,r,s,n=!1){function l(e,a){const i=Object.keys(a).reverse();for(let t=0;t0&&(c=m*s.household_size_beyond_defined_multiplier_euro);const _=u.gross_income_limit+c,h=l(t,u.monthly_usage_percentage);let p=o;null!==i&&(p=h/100*(a-_));const v=r.clamp(0,p,o);return n&&console.log(`maximumPayment\t${o}`,`\ngrossIncomeLimit\t${_}`,`\npaymentPercentage\t${h}`,`\nreferencePayment\t${p}`),v}constructor(t,r){this.id=t;const s=JSON.parse(r),n=()=>{"1"===this.calculator.getFieldValue("shopping_service")?this.calculator.showGroup("shopping_service_group"):this.calculator.hideGroup("shopping_service_group");"1"===this.calculator.getFieldValue("meal_service")?this.calculator.showGroup("meal_service_group"):this.calculator.hideGroup("meal_service_group")},l=()=>{const e=[];e.push(...this.calculator.validateBasics("household_size")),e.push(...this.calculator.validateBasics("gross_income_per_month")),e.push(...this.calculator.validateBasics("monthly_usage")),e.push(...this.calculator.validateBasics("safetyphone")),e.push(...this.calculator.validateBasics("shopping_service"));const a=this.calculator.getFieldValue("shopping_service");"1"===a&&e.push(...this.calculator.validateBasics("shopping_service_per_week")),e.push(...this.calculator.validateBasics("meal_service"));const t=this.calculator.getFieldValue("meal_service");if("1"===t&&e.push(...this.calculator.validateBasics("meal_service_per_week")),e.length)return{error:{title:this.t("missing_input"),message:e}};const r=Number(this.calculator.getFieldValue("household_size")),n=Number(this.calculator.getFieldValue("gross_income_per_month")),l=this.calculator.getFieldValue("gross_income_per_month"),o=Number(this.calculator.getFieldValue("monthly_usage")),u=this.calculator.getFieldValue("safetyphone"),c=Number(this.calculator.getFieldValue("shopping_service_per_week")),m=Number(this.calculator.getFieldValue("meal_service_per_week"));let _=this.t("receipt_family_estimated_payment_explanation");const h=i.calculateClientFee(r,n,l,o,this.calculator,s,!1);null===l&&(_=this.t("receipt_family_empty_income")+_);const p={title:this.t("receipt_homecare_payment"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(h)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(h)})};r>=2&&(p.has_details=!0,p.details.push(this.t("receipt_homecare_payment_two_or_more")));const v=[p],d=[];let k=0;if("1"===u){const e=this.calculator.getMinimumRange(r,s.safetyphone_limits),a=null===l?1/0:n;k=this.calculator.getMinimumRange(a,e),v.push({title:this.t("safetyphone_heading"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(k)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(k)})})}let f=0,g=0;"1"===a&&(f=s.shopping_service_prices.first_per_week,f+=(c-1)*s.shopping_service_prices.others_per_week,g=4*f,v.push({title:this.t("shopping_service_heading"),has_details:!0,details:[this.t(1===c?"receipt_shopping_service_math_single":"receipt_shopping_service_math_multiple",{delivery_count_per_week:c,delivery_count_per_month:4*c}),this.t("receipt_shopping_service_explanation",{first_per_week:this.calculator.formatFinnishEuroCents(s.shopping_service_prices.first_per_week),others_per_week:this.calculator.formatFinnishEuroCents(s.shopping_service_prices.others_per_week)}),this.t("receipt_shopping_service_algorithm")],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(g)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(g)})}));let y=0,b=0,w=0;"1"===t&&(y=m*s.meal_service_prices.lunch,b=m<=s.meal_service_prices.max_meals_for_single_delivery_per_week?1:2,y+=b*s.meal_service_prices.delivery,w=4*y,v.push({title:this.t("meal_service_heading"),has_details:!0,details:[this.t(1===m?"receipt_meal_service_count_single":"receipt_meal_service_count_multiple",{meals_per_week:m,meals_per_month:4*m}),this.t("receipt_meal_service_price",{meal_service_price:this.calculator.formatFinnishEuroCents(s.meal_service_prices.lunch),meal_deliveries_per_week:b,meal_deliveries_per_month:4*b}),this.t(`receipt_meal_service_${b}_delivery_price`,{meal_service_delivery_price:this.calculator.formatFinnishEuroCents(s.meal_service_prices.delivery)})],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(w)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(w)})}),d.push({title:this.t("receipt_additional_details"),text:this.t("receipt_meal_service_menumat_notice",{menumat_price:this.calculator.formatFinnishEuroCents(s.meal_service_prices.menumat.lunch),menumat_device_price:this.calculator.formatFinnishEuroCents(s.meal_service_prices.menumat.device_per_day)})}));const j=h+k+g+w,$={id:this.id,title:this.t("receipt_estimate_of_payment"),total_prefix:this.t("receipt_family_estimated_payment_prefix"),total_value:this.calculator.formatFinnishEuroCents(j),total_suffix:this.t("receipt_family_estimated_payment_suffix"),total_explanation:_,hr:!0,breakdown:{title:this.t("receipt_estimate_is_based_on"),subtotals:v,additional_details:d}};return{receipt:this.calculator.getPartialRender("{{>receipt}}",$),ariaLive:this.t("receipt_aria_live",{payment:j})}},o={submit:e=>{this.calculator.clearResult(),e.preventDefault();const a=l();this.calculator.renderResult(a)},keydown:()=>{n()},change:()=>{n()},reset:()=>{window.setTimeout(n,1),this.calculator.clearResult(),this.calculator.showAriaLiveText(this.t("reset_aria_live"))}};this.calculator=window.HelfiCalculator({name:"home_care_client_fee",translations:a}),this.t=(e,a)=>this.calculator.translate(e,a),this.settings=this.calculator.parseSettings(r),this.calculator.init({id:t,formData:(()=>e.getFormData(this.id,this.t,{firstPerWeekPrice:s.shopping_service_prices.first_per_week,othersPerWeekPrice:s.shopping_service_prices.others_per_week}))(),eventHandlers:o})}}window.helfi_calculator=window.helfi_calculator||{},window.helfi_calculator.home_care_client_fee=(e,a)=>new i(e,a);i.calculateClientFee}(); \ No newline at end of file +!function(){"use strict";var e={getFormData:function(e,a,{firstPerWeekPrice:t}){return{form_id:e,has_required_fields:!0,items:[{input_integer:{id:"household_size",label:a("household_size"),unit:a("unit_person"),min:1,size:2,required:!0,helper_text:a("household_size_explanation")}},{input_float:{id:"gross_income_per_month",label:a("gross_income_per_month"),unit:a("unit_euro"),min:0,size:8,required:!1,strip:"[€eE ]",helper_text:a("gross_income_per_month_explanation")}},{input_integer:{id:"monthly_usage",label:a("monthly_usage"),unit:a("unit_hour"),min:0,max:744,size:3,required:!0,helper_text:a("monthly_usage_explanation")}},{heading:{text:a("living_at_home_heading"),level:3}},{paragraph:{text:a("living_at_home_paragraph")}},{heading:{text:a("safetyphone_heading"),level:4}},{paragraph:{text:a("safetyphone_paragraph")}},{radio:{id:"safetyphone",label:a("safetyphone"),required:!0,radio_items:[{name:"safetyphone",item_id:"safetyphone_1",label:a("yes_calculate"),value:1},{name:"safetyphone",item_id:"safetyphone_2",label:a("no"),value:2}]}},{heading:{text:a("shopping_service_heading"),level:4}},{paragraph:{text:a("shopping_service_paragraph")}},{radio:{id:"shopping_service",label:a("shopping_service"),required:!0,helper_text:a("shopping_service_per_week_explanation",{first_per_week_price:t}),radio_items:[{name:"shopping_service",item_id:"shopping_service_1",label:a("yes_calculate"),value:1},{name:"shopping_service",item_id:"shopping_service_2",label:a("no"),value:2}]}},{heading:{text:a("meal_service_heading"),level:4}},{paragraph:{text:a("meal_service_paragraph")}},{radio:{id:"meal_service",label:a("meal_service"),required:!0,radio_items:[{name:"meal_service",item_id:"meal_service_1",label:a("yes_calculate"),value:1},{name:"meal_service",item_id:"meal_service_2",label:a("no"),value:2}]}},{group:{id:"meal_service_group",hide_group:!0,items:[{input_integer:{id:"meal_service_per_week",label:a("meal_service_per_week"),unit:a("unit_amount"),min:1,max:7,size:2,required:!0,helper_text:a("meal_service_per_week_explanation")}}]}}]}}};var a={household_size:{fi:"Talouden koko",sv:"Hushållets storlek",en:"Household size"},household_size_explanation:{fi:"Samassa osoitteessa asuvien perheenjäsenten määrä.",sv:"Antal familjemedlemmar som bor på samma adress.",en:"The number of family members living at the same address."},gross_income_per_month:{fi:"Talouden bruttotulot kuukaudessa",sv:"Hushållets bruttoinkomster per månad",en:"Household's gross income per month"},gross_income_per_month_explanation:{fi:"Koko talouden yhteenlasketut ansio- ja pääomatulot ennen verojen vähentämistä. Tuloihin lasketaan palkka, eläke-, vuokra- ja korkotulot sekä eläkkeensaajan hoitotuki. Jos jätät kentän tyhjäksi, lasketaan arvio korkeimman maksun mukaisesti.",sv:"Hela hushållets sammanlagda förvärvs- och kapitalinkomster före skatteavdrag. I inkomsterna ingår lön, pensions-, hyres och ränteinkomster samt vårdbidrag för pensionstagare. Om du lämnar fältet tomt beräknas bedömningen enligt den högsta avgiften.",en:"The entire household's combined income from earnings and capital income before taxes. Income includes salary, wages, pension, rental and interest income as well as care allowance for pensioners. If you leave the field blank, the estimate will be calculated using the highest fee."},monthly_usage:{fi:"Kotihoidon tuntimäärä kuukaudessa",sv:"Antal hemvårdstimmar per månad",en:"Number of hours of home care per month"},monthly_usage_explanation:{fi:"Löydät tuntimäärän kotihoidon palvelu- ja hoitosuunnitelmasta.",sv:"Du hittar antalet timmar i hemvårdens service- och vårdplan.",en:"You can find the number of hours in the home care service and care plan."},living_at_home_heading:{fi:"Kotona asumista tukevat palvelut",sv:"Tjänster som stöder hemmaboende",en:"Services to support living at home"},living_at_home_paragraph:{fi:"Voit laskea mukaan kotona asumista tukevia palveluja. Tukipalvelut ovat maksullisia.",sv:"Du kan inkludera tjänster som stöder hemmaboende. Stödtjänsterna är avgiftsbelagda.",en:"You can include services supporting living at home. The support services are subject to a fee."},safetyphone_heading:{fi:"Turvapuhelin ja turvaranneke",sv:"Trygghetstelefon och säkerhetsarmband",en:"Safety phone and bracelet"},safetyphone_paragraph:{fi:"Turvapuhelinpalveluun kuuluu turvapuhelin ja turvaranneke, joilla saat tarvittaessa apua ympäri vuorokauden. Turvapuhelinpalvelun maksut riippuvat talouden tuloista.",sv:"I trygghetstelefontjänsten ingår en trygghetstelefon och ett säkerhetsarmband genom vilka du vid behov får hjälp dygnet runt. Avgifterna för säkerhetstelefontjänsten beror på hushållets inkomster.",en:"The safety phone service includes a safety phone and a safety bracelet to call for help around the clock. The charges for the safety phone service depend on the income of the household."},safetyphone:{fi:"Laske arvioon turvapuhelin ja turvaranneke",sv:"Inkludera en trygghetstelefon och ett säkerhetsarmband i bedömningen",en:"Include the safety phone and safety bracelet in the estimate"},yes_calculate:{fi:"Kyllä, laske arvioon.",sv:"Ja, inkludera i bedömningen.",en:"Yes, include them in the estimate."},no:{fi:"Ei",sv:"Nej",en:"No"},shopping_service_heading:{fi:"Kauppapalvelu",sv:"Butiksservice:",en:"Grocery delivery service"},shopping_service_paragraph:{fi:"Kauppapalvelussa tilaamasi ruokaostokset toimitetaan kotiovellesi. Kauppapalvelun hintaan kuuluu yksi ruokaostosten keräily ja toimitus viikossa.",sv:"I butiksservicen levereras de livsmedelsinköp som du beställer till din dörr. I priset för butiksservicen ingår en insamling och leverans av livsmedel per vecka.",en:"The grocery delivery service delivers the groceries that you order through the service to your door. The price of the grocery delivery service includes one collection and delivery of the groceries per week."},shopping_service:{fi:"Laske arvioon kauppapalvelu",sv:"Inkludera butiksservicen i bedömningen",en:"Include the grocery delivery service in the estimate"},shopping_service_per_week_explanation:{fi:"Yksi toimitus viikossa maksaa ${first_per_week_price} euroa.",sv:"En leverans per vecka kostar ${first_per_week_price} euro.",en:"One delivery per week costs ${first_per_week_price} euros."},meal_service_heading:{fi:"Ateriapalvelu",sv:"Måltidstjänst",en:"Meal service"},meal_service_paragraph:{fi:"Ateriapalvelussa kotiisi kuljetetaan valmiita lounasaterioita, jotka voit itse lämmittää. Ateriapalvelun hintaan kuuluu lounasaterian hinta ja kuljetusmaksu.",sv:"I måltidstjänsten levereras färdiga lunchmåltider hem till dig, som du själv kan värma upp. I priset för måltidstjänsten ingår priset för lunchmåltiderna och leveransavgiften.",en:"The meal service transports to your home ready-made lunch meals, which you can heat up yourself. The price of the meal service includes the price of a lunch meal and a delivery fee."},meal_service:{fi:"Laske arvioon ateriapalvelu",sv:"Inkludera måltidstjänsten i bedömningen",en:"Include the meal service in the estimate"},meal_service_per_week:{fi:"Aterioiden määrä viikossa",sv:"Antal måltider per vecka",en:"Number of meals per week"},meal_service_per_week_explanation:{fi:"Voit tilata ateriapalvelun hinnaston mukaisia lounasaterioita enintään 7 ateriaa viikossa.",sv:"Du kan beställa högst sju måltider per vecka enligt måltidstjänstens prislista.",en:"You can order up to 7 lunch meals according to the meal service price list per week."},receipt_estimate_of_payment:{fi:"Arvio kotihoidon asiakasmaksusta",sv:"Bedömning av klientavgiften för hemvård",en:"Estimated home care client fee"},receipt_family_estimated_payment_prefix:{fi:"Arvioitu asiakasmaksu on yhteensä",sv:"Den beräknade klientavgiften är totalt",en:"The total estimated client fee is"},receipt_family_estimated_payment_suffix:{fi:"euroa kuukaudessa.",sv:"euro per månad.",en:"euros per month."},receipt_family_estimated_payment_explanation_min:{fi:"Alle ${minimum_payment_euro} euron maksuja ei laskuteta. ",sv:"Inga avgifter under ${minimum_payment_euro} euro debiteras. ",en:"Fees of less than ${minimum_payment_euro} euros will not be charged. "},receipt_family_empty_income:{fi:"Arvio on laskettu korkeimman maksun mukaisesti, koska et täyttänyt laskuriin talouden kuukausituloja. ",sv:"Bedömningen har beräknats enligt den högsta avgiften, eftersom du inte fyllde i hushållets månadsinkomster i räknaren. ",en:"Since you did not enter the household's monthly income in the calculator, the estimate was calculated using the highest fee. "},receipt_family_estimated_payment_explanation:{fi:"Tämä arvio on suuntaa antava. Tarkka arvo lasketaan kotihoidon päätökseen.",sv:"Denna bedömning är riktgivande. Det exakta värdet beräknas för beslutet om hemvård.",en:"This estimate is indicative only. The exact value will be calculated for the home care decision."},receipt_estimate_is_based_on:{fi:"Arvio muodostuu seuraavista tiedoista:",sv:"Bedömningen görs enligt följande uppgifter:",en:"The estimate consists of the following:"},receipt_subtotal_euros_per_month:{fi:"${value} €/kk",sv:"${value} euro/månad",en:"${value} €/month"},receipt_subtotal_euros_per_month_screenreader:{fi:"${value} euroa kuukaudessa",sv:"${value} euro per månad",en:"${value} euros per month"},receipt_additional_details:{fi:"Lisähuomiot:",sv:"Ytterligare anmärkningar:",en:"Additional remarks:"},receipt_homecare_payment:{fi:"Kotihoidon asiakasmaksu",sv:"Klientavgift för hemvården",en:"Home care client fee"},receipt_homecare_payment_two_or_more:{fi:"Jos molemmat puolisot ovat jatkuvan ja säännöllisen kotihoidon kuukausimaksuasiakkaita, maksu jakautuu kummallekin palvelu- ja hoitosuunnitelman mukaisesti.",sv:"Om båda makarna betalar en månatlig avgift för kontinuerlig och regelbunden hemvård, fördelas avgiften mellan dem i enlighet med service- och vårdplanen.",en:"If both spouses are clients of continuous and regular home care with a monthly fee, the fee is divided between them in accordance with their service and care plans."},receipt_shopping_service_math_single:{fi:"1 kauppatoimitus viikossa, kuukausihintaan on laskettu 4 toimitusta.",sv:"1 butiksleverans per vecka, 4 leveranser ingår i månadspriset.",en:"1 grocery delivery per week; the monthly fee includes 4 deliveries."},receipt_shopping_service_math_multiple:{fi:"1 kauppatoimitus viikossa, kuukausihintaan on laskettu 4 toimitusta.",sv:"1 butiksleveranser per vecka, i månadspriset ingår 4 leveranser.",en:"1 grocery deliveries per week; the monthly fee includes 4 deliveries."},receipt_shopping_service_explanation:{fi:"Kunkin viikon toimitus maksaa ${first_per_week} euroa.",sv:"Leveransen varje vecka kostar ${first_per_week} euro.",en:"The delivery each week costs ${first_per_week} euros."},receipt_aria_live:{fi:"Kotihoidon asiakasmaksun arvio on ${payment} euroa kuukaudessa, lue lisätietoja lomakkeen alta.",sv:"Den beräknade klientavgiften för hemvården är ${payment} euro per månad, mer information under blanketten.",en:"The estimated home care client fee is ${payment} euros per month; read more under the form."},receipt_meal_service_count_single:{fi:"1 lounasateria viikossa, kuukausihintaan on laskettu 4 ateriaa.",sv:"1 butiksleverans per vecka, 4 leveranser ingår i månadspriset.",en:"1 lunch meal per week; the monthly fee includes 4 meals."},receipt_meal_service_count_multiple:{fi:"${meals_per_week} lounasateriaa viikossa, kuukausihintaan on laskettu ${meals_per_month} ateriaa.",sv:"${meals_per_week} lunchmåltider per vecka, i månadspriset ingår ${meals_per_month} måltider.",en:"${meals_per_week} lunch meals per week; the monthly fee includes ${meals_per_month} meals."},receipt_meal_service_price:{fi:"Yksittäisen lounasaterian hinta on ${meal_service_price} euroa. Lämpimän aterian lisäksi voit tilata maksullisen jälkiruuan. Voit tilata ateriapalvelun hinnaston mukaisia lounasaterioita enintään 7 ateriaa viikossa, muut ateriat ovat omakustanteisia.",sv:"Priset på en lunchmåltid är ${meal_service_price} euro. Förutom en varm måltid kan du också beställa en avgiftsbelagd efterrätt. Du kan beställa högst sju måltider per vecka enligt måltidstjänstens prislista, de övriga måltiderna på egen bekostnad.",en:"The price of a single lunch meal is ${meal_service_price} euros. In addition to a hot meal, you can order a dessert for a fee. You can order up to 7 lunch meals according to the meal service price list per week; any additional meals are at your own expense."},receipt_meal_service_1_delivery_price:{fi:"Ateriat toimitetaan kotiin 1–2 kertaa viikossa. Kuljetuksia on yksi, kun tilattuja aterioita on 1–3, ja kuljetuksia on kaksi, kun aterioita on 4 tai enemmän. Hintaan on laskettu yksi kuljetusmaksu viikossa eli 4 kuljetusta kuukaudessa. Kukin kuljetus maksaa ${meal_service_delivery_price} euroa.",sv:"Måltiderna levereras hem 1–2 gånger per vecka. Det görs en leverans för 1–3 beställda måltider, och två leveranser för 4 eller fler måltider. I priset ingår en leveransavgift per vecka, med andra ord 4 leveranser per månad. Varje leverans kostar ${meal_service_delivery_price} euro.",en:"The meals will be delivered to your home once or twice a week: once a week if you order 1–3 meals, twice a week if you order 4 or more meals. The price includes one delivery fee per week, i.e. 4 deliveries per month. Each delivery costs ${meal_service_delivery_price} euros."},receipt_meal_service_2_delivery_price:{fi:"Ateriat toimitetaan kotiin 1–2 kertaa viikossa. Kuljetuksia on yksi, kun tilattuja aterioita on 1–3, ja kuljetuksia on kaksi, kun aterioita on 4 tai enemmän. Hintaan on laskettu kaksi kuljetusmaksua viikossa eli 8 kuljetusta kuukaudessa. Kukin kuljetus maksaa ${meal_service_delivery_price} euroa.",sv:"Måltiderna levereras hem 1–2 gånger per vecka. Det görs en leverans för 1–3 beställda måltider, och två leveranser för 4 eller fler måltider. I priset ingår två leveransavgifter per vecka, med andra ord 8 leveranser per månad. Varje leverans kostar ${meal_service_delivery_price} euro.",en:"The meals will be delivered to your home once or twice a week: once a week if you order 1–3 meals, twice a week if you order 4 or more meals. The price includes two delivery fees per week, i.e. 8 deliveries per month. Each delivery costs ${meal_service_delivery_price} euros."},receipt_meal_service_menumat_notice:{fi:"Ateriapalvelun sijaan voit tilata kotiisi pakastimen ja uunin yhdistelmän eli Menumat-ateria-automaatin. Menumat-palvelussa aterian hinta on ${menumat_price} euroa ja palvelumaksu on ${menumat_device_price} euroa vuorokaudessa. Aterian lisäksi voit tilata maksullisen jälkiruoan.",sv:"I stället för måltidstjänsten kan du beställa en kombination av en frys och en ugn, med andra ord en Menumat-måltidsautomat. I Menumat-servicen kostar en måltid ${menumat_price} euro och serviceavgiften är ${menumat_device_price} euro per dag. Förutom en måltid kan du också beställa en avgiftsbelagd efterrätt.",en:"Instead of the meal service, you can order a Menumat meal device, which is a combination of a freezer and an oven, to your home. In the Menumat service, the price per meal is ${menumat_price} euros, and the service fee is ${menumat_device_price} euros per day. In addition to the meal, you can order a dessert for a fee."}};class t{static calculateClientFee(e,a,t,i,r,s,n=!1){function l(e,a){const t=Object.keys(a).reverse();for(let i=0;i0&&(m=c*s.household_size_beyond_defined_multiplier_euro);const _=u.gross_income_limit+m,h=l(i,u.monthly_usage_percentage);let p=o;null!==t&&(p=h/100*(a-_));const d=r.clamp(0,p,o);return n&&console.log(`maximumPayment\t${o}`,`\ngrossIncomeLimit\t${_}`,`\npaymentPercentage\t${h}`,`\nreferencePayment\t${p}`),d}constructor(i,r){this.id=i;const s=JSON.parse(r),n=()=>{"1"===this.calculator.getFieldValue("meal_service")?this.calculator.showGroup("meal_service_group"):this.calculator.hideGroup("meal_service_group")},l=()=>{const e=[];e.push(...this.calculator.validateBasics("household_size")),e.push(...this.calculator.validateBasics("gross_income_per_month")),e.push(...this.calculator.validateBasics("monthly_usage")),e.push(...this.calculator.validateBasics("safetyphone")),e.push(...this.calculator.validateBasics("shopping_service")),e.push(...this.calculator.validateBasics("meal_service"));const a=this.calculator.getFieldValue("meal_service");if("1"===a&&e.push(...this.calculator.validateBasics("meal_service_per_week")),e.length)return{error:{title:this.t("missing_input"),message:e}};const i=Number(this.calculator.getFieldValue("household_size")),r=Number(this.calculator.getFieldValue("gross_income_per_month")),n=this.calculator.getFieldValue("gross_income_per_month"),l=Number(this.calculator.getFieldValue("monthly_usage")),o=this.calculator.getFieldValue("safetyphone"),u=this.calculator.getFieldValue("shopping_service"),m=Number(this.calculator.getFieldValue("meal_service_per_week"));let c=this.t("receipt_family_estimated_payment_explanation");const _=t.calculateClientFee(i,r,n,l,this.calculator,s,!1);null===n&&(c=this.t("receipt_family_empty_income")+c);const h={title:this.t("receipt_homecare_payment"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(_)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(_)})};i>=2&&(h.has_details=!0,h.details.push(this.t("receipt_homecare_payment_two_or_more")));const p=[h],d=[];let v=0;if("1"===o){const e=this.calculator.getMinimumRange(i,s.safetyphone_limits),a=null===n?1/0:r;v=this.calculator.getMinimumRange(a,e),p.push({title:this.t("safetyphone_heading"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(v)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(v)})})}let k=0,f=0;"1"===u&&(k=s.shopping_service_prices.first_per_week,f=4*k,p.push({title:this.t("shopping_service_heading"),has_details:!0,details:[this.t("receipt_shopping_service_math_single",{delivery_count_per_week:1,delivery_count_per_month:4}),this.t("receipt_shopping_service_explanation",{first_per_week:this.calculator.formatFinnishEuroCents(s.shopping_service_prices.first_per_week)})],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(f)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(f)})}));let g=0,y=0,b=0;"1"===a&&(g=m*s.meal_service_prices.lunch,y=m<=s.meal_service_prices.max_meals_for_single_delivery_per_week?1:2,g+=y*s.meal_service_prices.delivery,b=4*g,p.push({title:this.t("meal_service_heading"),has_details:!0,details:[this.t(1===m?"receipt_meal_service_count_single":"receipt_meal_service_count_multiple",{meals_per_week:m,meals_per_month:4*m}),this.t("receipt_meal_service_price",{meal_service_price:this.calculator.formatFinnishEuroCents(s.meal_service_prices.lunch),meal_deliveries_per_week:y,meal_deliveries_per_month:4*y}),this.t(`receipt_meal_service_${y}_delivery_price`,{meal_service_delivery_price:this.calculator.formatFinnishEuroCents(s.meal_service_prices.delivery)})],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(b)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(b)})}),d.push({title:this.t("receipt_additional_details"),text:this.t("receipt_meal_service_menumat_notice",{menumat_price:this.calculator.formatFinnishEuroCents(s.meal_service_prices.menumat.lunch),menumat_device_price:this.calculator.formatFinnishEuroCents(s.meal_service_prices.menumat.device_per_day)})}));const w=_+v+f+b,j={id:this.id,title:this.t("receipt_estimate_of_payment"),total_prefix:this.t("receipt_family_estimated_payment_prefix"),total_value:this.calculator.formatFinnishEuroCents(w),total_suffix:this.t("receipt_family_estimated_payment_suffix"),total_explanation:c,hr:!0,breakdown:{title:this.t("receipt_estimate_is_based_on"),subtotals:p,additional_details:d}};return{receipt:this.calculator.getPartialRender("{{>receipt}}",j),ariaLive:this.t("receipt_aria_live",{payment:w})}},o={submit:e=>{this.calculator.clearResult(),e.preventDefault();const a=l();this.calculator.renderResult(a)},keydown:()=>{n()},change:()=>{n()},reset:()=>{window.setTimeout(n,1),this.calculator.clearResult(),this.calculator.showAriaLiveText(this.t("reset_aria_live"))}};this.calculator=window.HelfiCalculator({name:"home_care_client_fee",translations:a}),this.t=(e,a)=>this.calculator.translate(e,a),this.settings=this.calculator.parseSettings(r),this.calculator.init({id:i,formData:(()=>e.getFormData(this.id,this.t,{firstPerWeekPrice:s.shopping_service_prices.first_per_week}))(),eventHandlers:o})}}window.helfi_calculator=window.helfi_calculator||{},window.helfi_calculator.home_care_client_fee=(e,a)=>new t(e,a);t.calculateClientFee}(); \ No newline at end of file diff --git a/dist/js/home_care_service_voucher.min.js b/dist/js/home_care_service_voucher.min.js index 59535157e..e38c43beb 100644 --- a/dist/js/home_care_service_voucher.min.js +++ b/dist/js/home_care_service_voucher.min.js @@ -1 +1 @@ -!function(){"use strict";var e={4270:function(e,t,a){a.d(t,{Z:function(){return n}});var i={getFormData:function(e,t,{firstPerWeekPrice:a,othersPerWeekPrice:i}){return{form_id:e,has_required_fields:!0,items:[{input_integer:{id:"household_size",label:t("household_size"),unit:t("unit_person"),min:1,size:2,required:!0,helper_text:t("household_size_explanation")}},{input_float:{id:"gross_income_per_month",label:t("gross_income_per_month"),unit:t("unit_euro"),min:0,size:8,required:!1,strip:"[€eE ]",helper_text:t("gross_income_per_month_explanation")}},{input_integer:{id:"monthly_usage",label:t("monthly_usage"),unit:t("unit_hour"),min:0,max:744,size:3,required:!0,helper_text:t("monthly_usage_explanation")}},{heading:{text:t("living_at_home_heading"),level:3}},{paragraph:{text:t("living_at_home_paragraph")}},{heading:{text:t("safetyphone_heading"),level:4}},{paragraph:{text:t("safetyphone_paragraph")}},{radio:{id:"safetyphone",label:t("safetyphone"),required:!0,radio_items:[{name:"safetyphone",item_id:"safetyphone_1",label:t("yes_calculate"),value:1},{name:"safetyphone",item_id:"safetyphone_2",label:t("no"),value:2}]}},{heading:{text:t("shopping_service_heading"),level:4}},{paragraph:{text:t("shopping_service_paragraph")}},{radio:{id:"shopping_service",label:t("shopping_service"),required:!0,radio_items:[{name:"shopping_service",item_id:"shopping_service_1",label:t("yes_calculate"),value:1},{name:"shopping_service",item_id:"shopping_service_2",label:t("no"),value:2}]}},{group:{id:"shopping_service_group",hide_group:!0,items:[{input_integer:{id:"shopping_service_per_week",label:t("shopping_service_per_week"),unit:t("unit_amount"),min:1,size:2,required:!0,helper_text:t("shopping_service_per_week_explanation",{first_per_week_price:a,others_per_week_price:i})}}]}},{heading:{text:t("meal_service_heading"),level:4}},{paragraph:{text:t("meal_service_paragraph")}},{radio:{id:"meal_service",label:t("meal_service"),required:!0,radio_items:[{name:"meal_service",item_id:"meal_service_1",label:t("yes_calculate"),value:1},{name:"meal_service",item_id:"meal_service_2",label:t("no"),value:2}]}},{group:{id:"meal_service_group",hide_group:!0,items:[{input_integer:{id:"meal_service_per_week",label:t("meal_service_per_week"),unit:t("unit_amount"),min:1,max:7,size:2,required:!0,helper_text:t("meal_service_per_week_explanation")}}]}}]}}};var r={household_size:{fi:"Talouden koko",sv:"Hushållets storlek",en:"Household size"},household_size_explanation:{fi:"Samassa osoitteessa asuvien perheenjäsenten määrä.",sv:"Antal familjemedlemmar som bor på samma adress.",en:"The number of family members living at the same address."},gross_income_per_month:{fi:"Talouden bruttotulot kuukaudessa",sv:"Hushållets bruttoinkomster per månad",en:"Household's gross income per month"},gross_income_per_month_explanation:{fi:"Koko talouden yhteenlasketut ansio- ja pääomatulot ennen verojen vähentämistä. Tuloihin lasketaan palkka, eläke-, vuokra- ja korkotulot sekä eläkkeensaajan hoitotuki. Jos jätät kentän tyhjäksi, lasketaan arvio korkeimman maksun mukaisesti.",sv:"Hela hushållets sammanlagda förvärvs- och kapitalinkomster före skatteavdrag. I inkomsterna ingår lön, pensions-, hyres och ränteinkomster samt vårdbidrag för pensionstagare. Om du lämnar fältet tomt beräknas bedömningen enligt den högsta avgiften.",en:"The entire household's combined income from earnings and capital income before taxes. Income includes salary, wages, pension, rental and interest income as well as care allowance for pensioners. If you leave the field blank, the estimate will be calculated using the highest fee."},monthly_usage:{fi:"Kotihoidon tuntimäärä kuukaudessa",sv:"Antal hemvårdstimmar per månad",en:"Number of hours of home care per month"},monthly_usage_explanation:{fi:"Löydät tuntimäärän kotihoidon palvelu- ja hoitosuunnitelmasta.",sv:"Du hittar antalet timmar i hemvårdens service- och vårdplan.",en:"You can find the number of hours in the home care service and care plan."},living_at_home_heading:{fi:"Kotona asumista tukevat palvelut",sv:"Tjänster som stöder hemmaboende",en:"Services to support living at home"},living_at_home_paragraph:{fi:"Voit laskea mukaan kotona asumista tukevia palveluja. Tukipalvelut ovat maksullisia.",sv:"Du kan inkludera tjänster som stöder hemmaboende. Stödtjänsterna är avgiftsbelagda.",en:"You can include services supporting living at home. The support services are subject to a fee."},safetyphone_heading:{fi:"Turvapuhelin ja turvaranneke",sv:"Trygghetstelefon och säkerhetsarmband",en:"Safety phone and bracelet"},safetyphone_paragraph:{fi:"Turvapuhelinpalveluun kuuluu turvapuhelin ja turvaranneke, joilla saat tarvittaessa apua ympäri vuorokauden. Turvapuhelinpalvelun maksut riippuvat talouden tuloista.",sv:"I trygghetstelefontjänsten ingår en trygghetstelefon och ett säkerhetsarmband genom vilka du vid behov får hjälp dygnet runt. Avgifterna för säkerhetstelefontjänsten beror på hushållets inkomster.",en:"The safety phone service includes a safety phone and a safety bracelet to call for help around the clock. The charges for the safety phone service depend on the income of the household."},safetyphone:{fi:"Laske arvioon turvapuhelin ja turvaranneke",sv:"Inkludera en trygghetstelefon och ett säkerhetsarmband i bedömningen",en:"Include the safety phone and safety bracelet in the estimate"},yes_calculate:{fi:"Kyllä, laske arvioon.",sv:"Ja, inkludera i bedömningen.",en:"Yes, include them in the estimate."},no:{fi:"Ei",sv:"Nej",en:"No"},shopping_service_heading:{fi:"Kauppapalvelu",sv:"Butiksservice:",en:"Grocery delivery service"},shopping_service_paragraph:{fi:"Kauppapalvelussa tilaamasi ruokaostokset toimitetaan kotiovellesi. Kauppapalvelun hintaan kuuluu ruokaostosten keräily ja toimitus.",sv:"I butiksservicen levereras de livsmedelsinköp som du beställer till din dörr. I priset för butiksservicen ingår insamling och leverans av livsmedelsinköp.",en:"The grocery delivery service delivers the groceries that you order through the service to your door. The price of the grocery delivery service includes the collection and delivery of the groceries."},shopping_service:{fi:"Laske arvioon kauppapalvelu",sv:"Inkludera butiksservicen i bedömningen",en:"Include the grocery delivery service in the estimate"},shopping_service_per_week:{fi:"Kauppapalvelun toimitusten määrä viikossa",sv:"Antal butiksserviceleveranser per vecka",en:"Number of deliveries from the grocery delivery service per week"},shopping_service_per_week_explanation:{fi:"Yksi toimitus viikossa maksaa ${first_per_week_price} euroa, muut toimitukset ${others_per_week_price} euroa per toimitus.",sv:"En leverans per vecka kostar ${first_per_week_price} euro, andra leveranser ${others_per_week_price} euro per leverans.",en:"One delivery per week costs ${first_per_week_price} euros, and the other deliveries are ${others_per_week_price} euros per delivery."},meal_service_heading:{fi:"Ateriapalvelu",sv:"Måltidstjänst",en:"Meal service"},meal_service_paragraph:{fi:"Ateriapalvelussa kotiisi kuljetetaan valmiita lounasaterioita, jotka voit itse lämmittää. Ateriapalvelun hintaan kuuluu lounasaterian hinta ja kuljetusmaksu.",sv:"I måltidstjänsten levereras färdiga lunchmåltider hem till dig, som du själv kan värma upp. I priset för måltidstjänsten ingår priset för lunchmåltiderna och leveransavgiften.",en:"The meal service transports to your home ready-made lunch meals, which you can heat up yourself. The price of the meal service includes the price of a lunch meal and a delivery fee."},meal_service:{fi:"Laske arvioon ateriapalvelu",sv:"Inkludera måltidstjänsten i bedömningen",en:"Include the meal service in the estimate"},meal_service_per_week:{fi:"Aterioiden määrä viikossa",sv:"Antal måltider per vecka",en:"Number of meals per week"},meal_service_per_week_explanation:{fi:"Voit tilata ateriapalvelun hinnaston mukaisia lounasaterioita enintään 7 ateriaa viikossa.",sv:"Du kan beställa högst sju måltider per vecka enligt måltidstjänstens prislista.",en:"You can order up to 7 lunch meals according to the meal service price list per week."},receipt_estimate_of_payment:{fi:"Arvio kotihoidon asiakasmaksusta",sv:"Bedömning av klientavgiften för hemvård",en:"Estimated home care client fee"},receipt_family_estimated_payment_prefix:{fi:"Arvioitu asiakasmaksu on yhteensä",sv:"Den beräknade klientavgiften är totalt",en:"The total estimated client fee is"},receipt_family_estimated_payment_suffix:{fi:"euroa kuukaudessa.",sv:"euro per månad.",en:"euros per month."},receipt_family_estimated_payment_explanation_min:{fi:"Alle ${minimum_payment_euro} euron maksuja ei laskuteta. ",sv:"Inga avgifter under ${minimum_payment_euro} euro debiteras. ",en:"Fees of less than ${minimum_payment_euro} euros will not be charged. "},receipt_family_empty_income:{fi:"Arvio on laskettu korkeimman maksun mukaisesti, koska et täyttänyt laskuriin talouden kuukausituloja. ",sv:"Bedömningen har beräknats enligt den högsta avgiften, eftersom du inte fyllde i hushållets månadsinkomster i räknaren. ",en:"Since you did not enter the household's monthly income in the calculator, the estimate was calculated using the highest fee. "},receipt_family_estimated_payment_explanation:{fi:"Tämä arvio on suuntaa antava. Tarkka arvo lasketaan kotihoidon päätökseen.",sv:"Denna bedömning är riktgivande. Det exakta värdet beräknas för beslutet om hemvård.",en:"This estimate is indicative only. The exact value will be calculated for the home care decision."},receipt_estimate_is_based_on:{fi:"Arvio muodostuu seuraavista tiedoista:",sv:"Bedömningen görs enligt följande uppgifter:",en:"The estimate consists of the following:"},receipt_subtotal_euros_per_month:{fi:"${value} €/kk",sv:"${value} euro/månad",en:"${value} €/month"},receipt_subtotal_euros_per_month_screenreader:{fi:"${value} euroa kuukaudessa",sv:"${value} euro per månad",en:"${value} euros per month"},receipt_additional_details:{fi:"Lisähuomiot:",sv:"Ytterligare anmärkningar:",en:"Additional remarks:"},receipt_homecare_payment:{fi:"Kotihoidon asiakasmaksu",sv:"Klientavgift för hemvården",en:"Home care client fee"},receipt_homecare_payment_two_or_more:{fi:"Jos molemmat puolisot ovat jatkuvan ja säännöllisen kotihoidon kuukausimaksuasiakkaita, maksu jakautuu kummallekin palvelu- ja hoitosuunnitelman mukaisesti.",sv:"Om båda makarna betalar en månatlig avgift för kontinuerlig och regelbunden hemvård, fördelas avgiften mellan dem i enlighet med service- och vårdplanen.",en:"If both spouses are clients of continuous and regular home care with a monthly fee, the fee is divided between them in accordance with their service and care plans."},receipt_shopping_service_math_single:{fi:"1 kauppatoimitus viikossa, kuukausihintaan on laskettu 4 toimitusta.",sv:"1 butiksleverans per vecka, 4 leveranser ingår i månadspriset.",en:"1 grocery delivery per week; the monthly fee includes 4 deliveries."},receipt_shopping_service_math_multiple:{fi:"${delivery_count_per_week} kauppatoimitusta viikossa, kuukausihintaan on laskettu ${delivery_count_per_month} toimitusta.",sv:"${delivery_count_per_week} butiksleveranser per vecka, i månadspriset ingår ${delivery_count_per_month} leveranser.",en:"${delivery_count_per_week} grocery deliveries per week; the monthly fee includes ${delivery_count_per_month} deliveries."},receipt_shopping_service_explanation:{fi:"Kunkin viikon ensimmäinen toimitus maksaa ${first_per_week} euroa. Muut saman viikon toimitukset maksavat kukin ${others_per_week} euroa.",sv:"Den första leveransen för varje vecka kostar ${first_per_week} euro. De övriga leveranserna för samma vecka kostar ${others_per_week} euro.",en:"The first delivery of each week costs ${first_per_week} euros. Other deliveries during the same week cost ${others_per_week} euros each."},receipt_shopping_service_algorithm:{fi:"Laskuri laskee kuljetukset tasaisesti eri viikoille, mutta voit itse vaikuttaa kauppatoimitusten määrään tarpeesi mukaan.",sv:"Räknaren beräknar leveranserna jämnt för olika veckor, men du kan påverka antalet butiksleveranser enligt dina behov.",en:"The calculator calculates deliveries evenly for different weeks, but you can set the number of grocery deliveries according to your needs."},receipt_aria_live:{fi:"Kotihoidon asiakasmaksun arvio on ${payment} euroa kuukaudessa, lue lisätietoja lomakkeen alta.",sv:"Den beräknade klientavgiften för hemvården är ${payment} euro per månad, mer information under blanketten.",en:"The estimated home care client fee is ${payment} euros per month; read more under the form."},receipt_meal_service_count_single:{fi:"1 lounasateria viikossa, kuukausihintaan on laskettu 4 ateriaa.",sv:"1 butiksleverans per vecka, 4 leveranser ingår i månadspriset.",en:"1 lunch meal per week; the monthly fee includes 4 meals."},receipt_meal_service_count_multiple:{fi:"${meals_per_week} lounasateriaa viikossa, kuukausihintaan on laskettu ${meals_per_month} ateriaa.",sv:"${meals_per_week} lunchmåltider per vecka, i månadspriset ingår ${meals_per_month} måltider.",en:"${meals_per_week} lunch meals per week; the monthly fee includes ${meals_per_month} meals."},receipt_meal_service_price:{fi:"Yksittäisen lounasaterian hinta on ${meal_service_price} euroa. Lämpimän aterian lisäksi voit tilata maksullisen jälkiruuan. Voit tilata ateriapalvelun hinnaston mukaisia lounasaterioita enintään 7 ateriaa viikossa, muut ateriat ovat omakustanteisia.",sv:"Priset på en lunchmåltid är ${meal_service_price} euro. Förutom en varm måltid kan du också beställa en avgiftsbelagd efterrätt. Du kan beställa högst sju måltider per vecka enligt måltidstjänstens prislista, de övriga måltiderna på egen bekostnad.",en:"The price of a single lunch meal is ${meal_service_price} euros. In addition to a hot meal, you can order a dessert for a fee. You can order up to 7 lunch meals according to the meal service price list per week; any additional meals are at your own expense."},receipt_meal_service_1_delivery_price:{fi:"Ateriat toimitetaan kotiin 1–2 kertaa viikossa. Kuljetuksia on yksi, kun tilattuja aterioita on 1–3, ja kuljetuksia on kaksi, kun aterioita on 4 tai enemmän. Hintaan on laskettu yksi kuljetusmaksu viikossa eli 4 kuljetusta kuukaudessa. Kukin kuljetus maksaa ${meal_service_delivery_price} euroa.",sv:"Måltiderna levereras hem 1–2 gånger per vecka. Det görs en leverans för 1–3 beställda måltider, och två leveranser för 4 eller fler måltider. I priset ingår en leveransavgift per vecka, med andra ord 4 leveranser per månad. Varje leverans kostar ${meal_service_delivery_price} euro.",en:"The meals will be delivered to your home once or twice a week: once a week if you order 1–3 meals, twice a week if you order 4 or more meals. The price includes one delivery fee per week, i.e. 4 deliveries per month. Each delivery costs ${meal_service_delivery_price} euros."},receipt_meal_service_2_delivery_price:{fi:"Ateriat toimitetaan kotiin 1–2 kertaa viikossa. Kuljetuksia on yksi, kun tilattuja aterioita on 1–3, ja kuljetuksia on kaksi, kun aterioita on 4 tai enemmän. Hintaan on laskettu kaksi kuljetusmaksua viikossa eli 8 kuljetusta kuukaudessa. Kukin kuljetus maksaa ${meal_service_delivery_price} euroa.",sv:"Måltiderna levereras hem 1–2 gånger per vecka. Det görs en leverans för 1–3 beställda måltider, och två leveranser för 4 eller fler måltider. I priset ingår två leveransavgifter per vecka, med andra ord 8 leveranser per månad. Varje leverans kostar ${meal_service_delivery_price} euro.",en:"The meals will be delivered to your home once or twice a week: once a week if you order 1–3 meals, twice a week if you order 4 or more meals. The price includes two delivery fees per week, i.e. 8 deliveries per month. Each delivery costs ${meal_service_delivery_price} euros."},receipt_meal_service_menumat_notice:{fi:"Ateriapalvelun sijaan voit tilata kotiisi pakastimen ja uunin yhdistelmän eli Menumat-ateria-automaatin. Menumat-palvelussa aterian hinta on ${menumat_price} euroa ja palvelumaksu on ${menumat_device_price} euroa vuorokaudessa. Aterian lisäksi voit tilata maksullisen jälkiruoan.",sv:"I stället för måltidstjänsten kan du beställa en kombination av en frys och en ugn, med andra ord en Menumat-måltidsautomat. I Menumat-servicen kostar en måltid ${menumat_price} euro och serviceavgiften är ${menumat_device_price} euro per dag. Förutom en måltid kan du också beställa en avgiftsbelagd efterrätt.",en:"Instead of the meal service, you can order a Menumat meal device, which is a combination of a freezer and an oven, to your home. In the Menumat service, the price per meal is ${menumat_price} euros, and the service fee is ${menumat_device_price} euros per day. In addition to the meal, you can order a dessert for a fee."}};class s{static calculateClientFee(e,t,a,i,r,s,n=!1){function o(e,t){const a=Object.keys(t).reverse();for(let i=0;i0&&(c=m*s.household_size_beyond_defined_multiplier_euro);const _=u.gross_income_limit+c,h=o(i,u.monthly_usage_percentage);let p=l;null!==a&&(p=h/100*(t-_));const d=r.clamp(0,p,l);return n&&console.log(`maximumPayment\t${l}`,`\ngrossIncomeLimit\t${_}`,`\npaymentPercentage\t${h}`,`\nreferencePayment\t${p}`),d}constructor(e,t){this.id=e;const a=JSON.parse(t),n=()=>{"1"===this.calculator.getFieldValue("shopping_service")?this.calculator.showGroup("shopping_service_group"):this.calculator.hideGroup("shopping_service_group");"1"===this.calculator.getFieldValue("meal_service")?this.calculator.showGroup("meal_service_group"):this.calculator.hideGroup("meal_service_group")},o=()=>{const e=[];e.push(...this.calculator.validateBasics("household_size")),e.push(...this.calculator.validateBasics("gross_income_per_month")),e.push(...this.calculator.validateBasics("monthly_usage")),e.push(...this.calculator.validateBasics("safetyphone")),e.push(...this.calculator.validateBasics("shopping_service"));const t=this.calculator.getFieldValue("shopping_service");"1"===t&&e.push(...this.calculator.validateBasics("shopping_service_per_week")),e.push(...this.calculator.validateBasics("meal_service"));const i=this.calculator.getFieldValue("meal_service");if("1"===i&&e.push(...this.calculator.validateBasics("meal_service_per_week")),e.length)return{error:{title:this.t("missing_input"),message:e}};const r=Number(this.calculator.getFieldValue("household_size")),n=Number(this.calculator.getFieldValue("gross_income_per_month")),o=this.calculator.getFieldValue("gross_income_per_month"),l=Number(this.calculator.getFieldValue("monthly_usage")),u=this.calculator.getFieldValue("safetyphone"),c=Number(this.calculator.getFieldValue("shopping_service_per_week")),m=Number(this.calculator.getFieldValue("meal_service_per_week"));let _=this.t("receipt_family_estimated_payment_explanation");const h=s.calculateClientFee(r,n,o,l,this.calculator,a,!1);null===o&&(_=this.t("receipt_family_empty_income")+_);const p={title:this.t("receipt_homecare_payment"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(h)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(h)})};r>=2&&(p.has_details=!0,p.details.push(this.t("receipt_homecare_payment_two_or_more")));const d=[p],v=[];let k=0;if("1"===u){const e=this.calculator.getMinimumRange(r,a.safetyphone_limits),t=null===o?1/0:n;k=this.calculator.getMinimumRange(t,e),d.push({title:this.t("safetyphone_heading"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(k)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(k)})})}let f=0,g=0;"1"===t&&(f=a.shopping_service_prices.first_per_week,f+=(c-1)*a.shopping_service_prices.others_per_week,g=4*f,d.push({title:this.t("shopping_service_heading"),has_details:!0,details:[this.t(1===c?"receipt_shopping_service_math_single":"receipt_shopping_service_math_multiple",{delivery_count_per_week:c,delivery_count_per_month:4*c}),this.t("receipt_shopping_service_explanation",{first_per_week:this.calculator.formatFinnishEuroCents(a.shopping_service_prices.first_per_week),others_per_week:this.calculator.formatFinnishEuroCents(a.shopping_service_prices.others_per_week)}),this.t("receipt_shopping_service_algorithm")],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(g)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(g)})}));let y=0,b=0,w=0;"1"===i&&(y=m*a.meal_service_prices.lunch,b=m<=a.meal_service_prices.max_meals_for_single_delivery_per_week?1:2,y+=b*a.meal_service_prices.delivery,w=4*y,d.push({title:this.t("meal_service_heading"),has_details:!0,details:[this.t(1===m?"receipt_meal_service_count_single":"receipt_meal_service_count_multiple",{meals_per_week:m,meals_per_month:4*m}),this.t("receipt_meal_service_price",{meal_service_price:this.calculator.formatFinnishEuroCents(a.meal_service_prices.lunch),meal_deliveries_per_week:b,meal_deliveries_per_month:4*b}),this.t(`receipt_meal_service_${b}_delivery_price`,{meal_service_delivery_price:this.calculator.formatFinnishEuroCents(a.meal_service_prices.delivery)})],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(w)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(w)})}),v.push({title:this.t("receipt_additional_details"),text:this.t("receipt_meal_service_menumat_notice",{menumat_price:this.calculator.formatFinnishEuroCents(a.meal_service_prices.menumat.lunch),menumat_device_price:this.calculator.formatFinnishEuroCents(a.meal_service_prices.menumat.device_per_day)})}));const j=h+k+g+w,x={id:this.id,title:this.t("receipt_estimate_of_payment"),total_prefix:this.t("receipt_family_estimated_payment_prefix"),total_value:this.calculator.formatFinnishEuroCents(j),total_suffix:this.t("receipt_family_estimated_payment_suffix"),total_explanation:_,hr:!0,breakdown:{title:this.t("receipt_estimate_is_based_on"),subtotals:d,additional_details:v}};return{receipt:this.calculator.getPartialRender("{{>receipt}}",x),ariaLive:this.t("receipt_aria_live",{payment:j})}},l={submit:e=>{this.calculator.clearResult(),e.preventDefault();const t=o();this.calculator.renderResult(t)},keydown:()=>{n()},change:()=>{n()},reset:()=>{window.setTimeout(n,1),this.calculator.clearResult(),this.calculator.showAriaLiveText(this.t("reset_aria_live"))}};this.calculator=window.HelfiCalculator({name:"home_care_client_fee",translations:r}),this.t=(e,t)=>this.calculator.translate(e,t),this.settings=this.calculator.parseSettings(t),this.calculator.init({id:e,formData:(()=>i.getFormData(this.id,this.t,{firstPerWeekPrice:a.shopping_service_prices.first_per_week,othersPerWeekPrice:a.shopping_service_prices.others_per_week}))(),eventHandlers:l})}}window.helfi_calculator=window.helfi_calculator||{},window.helfi_calculator.home_care_client_fee=(e,t)=>new s(e,t);var n=s.calculateClientFee}},t={};function a(i){var r=t[i];if(void 0!==r)return r.exports;var s=t[i]={exports:{}};return e[i](s,s.exports,a),s.exports}a.d=function(e,t){for(var i in t)a.o(t,i)&&!a.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={getFormData:function(e,t){return{form_id:e,has_required_fields:!0,items:[{input_integer:{id:"household_size",label:t("household_size"),unit:t("unit_person"),min:1,size:2,required:!0,helper_text:t("household_size_explanation")}},{input_float:{id:"gross_income_per_month",label:t("gross_income_per_month"),unit:t("unit_euro"),min:0,size:8,required:!1,strip:"[€eE ]",helper_text:t("gross_income_per_month_explanation")}},{input_integer:{id:"monthly_usage",label:t("monthly_usage"),unit:t("unit_hour"),min:0,max:744,size:3,required:!0,helper_text:t("monthly_usage_explanation")}},{input_float:{id:"service_provider_price",label:t("service_provider_price"),unit:t("unit_euro"),min:0,size:6,required:!0,strip:"[€eE ]",helper_text:t("service_provider_price_explanation")}}]}}};var t={household_size:{fi:"Talouden koko",sv:"Hushållets storlek",en:"Household size"},household_size_explanation:{fi:"Samassa osoitteessa asuvien perheenjäsenten määrä.",sv:"Antal familjemedlemmar som bor på samma adress.",en:"The number of family members living at the same address."},gross_income_per_month:{fi:"Talouden bruttotulot kuukaudessa",sv:"Hushållets bruttoinkomster per månad",en:"Household's gross income per month"},gross_income_per_month_explanation:{fi:"Koko talouden yhteenlasketut ansio- ja pääomatulot ennen verojen vähentämistä. Tuloihin lasketaan palkka, eläke-, vuokra- ja korkotulot sekä eläkkeensaajan hoitotuki. Jos jätät kentän tyhjäksi, lasketaan arvio korkeimman tulorajan mukaisesti.",sv:"Hela hushållets sammanlagda förvärvs- och kapitalinkomster före skatteavdrag. I inkomsterna ingår lön, pensions-, hyres och ränteinkomster samt vårdbidrag för pensionstagare. Om du lämnar fältet tomt beräknas bedömningen enligt den högsta inkomstgränsen.",en:"The entire household's combined income from earnings and capital income before taxes. Income includes salary, wages, pension, rental and interest income as well as care allowance for pensioners. If you leave the field blank, the estimate will be calculated using the highest income threshold."},monthly_usage:{fi:"Kotihoidon tuntimäärä kuukaudessa",sv:"Antal hemvårdstimmar per månad",en:"Number of hours of home care per month"},monthly_usage_explanation:{fi:"Löydät tuntimäärän kotihoidon palvelu- ja hoitosuunnitelmasta.",sv:"Du hittar antalet timmar i hemvårdens service- och vårdplan.",en:"You can find the number of hours in the home care service and care plan."},service_provider_price:{fi:"Palveluntuottajan tuntihinta",sv:"Serviceproducentens timpris",en:"Service provider's hourly rate"},service_provider_price_explanation:{fi:"Valitsemasi palveluntuottajan tuntihinta kotihoidon palveluista.",sv:"Timpris för den serviceproducent som du väljer för hemvård.",en:"The service provider's hourly rate for the home care services of your choice."},receipt_estimate_of_payment:{fi:"Arvio palvelusetelillä hankitusta kotihoidosta",sv:"Bedömning av den hemvård som förvärvats med servicesedeln",en:"Estimate of home care acquired with a service voucher"},receipt_family_estimated_payment_prefix:{fi:"Omavastuuosuus eli sinulle maksettavaksi jäävä asiakasmaksu on",sv:"Självriskandelen, det vill säga den klientavgift som återstår att betala hos dig, är",en:"The copayment, i.e. the client fee payable by you, is"},receipt_family_estimated_payment_suffix:{fi:"euroa kuukaudessa.",sv:"euro per månad.",en:"euros per month."},receipt_family_empty_income:{fi:"Arvio on laskettu korkeimman maksun mukaisesti, koska et täyttänyt laskuriin talouden kuukausituloja. ",sv:"Bedömningen har beräknats enligt den högsta avgiften eftersom du inte fyllde i hushållets månadsinkomster i räknaren. ",en:"Since you did not enter the household's monthly income in the calculator, the estimate was calculated using the highest fee. "},receipt_family_estimated_payment_explanation:{fi:"Tämä arvio on suuntaa antava. Tarkka arvo lasketaan kotihoidon päätökseen.",sv:"Denna bedömning är riktgivande. Det exakta värdet beräknas för beslutet om hemvård.",en:"This estimate is indicative only. The exact value will be calculated for the home care decision."},receipt_estimate_is_based_on:{fi:"Arvio muodostuu seuraavasti:",sv:"Bedömningen görs enligt följande:",en:"The estimate consists of the following:"},receipt_subtotal_euros_per_month:{fi:"${value} €/kk",sv:"${value} euro/månad",en:"${value} €/month"},receipt_subtotal_euros_per_month_screenreader:{fi:"${value} euroa kuukaudessa",sv:"${value} euro per månad",en:"${value} euros per month"},receipt_subtotal_euros_per_hour:{fi:"${value} €/tunti",sv:"${value} euro/timme",en:"${value} €/hour"},receipt_subtotal_euros_per_hour_screenreader:{fi:"${value} euroa per tunti",sv:"${value} euro per timme",en:"${value} euros per hour"},receipt_homecare_total:{fi:"Palvelusetelillä hankittavan palvelun kokonaiskustannus",sv:"Total kostnad för tjänsten som köpts med servicesedeln",en:"Total cost of the service to be procured with the service voucher"},receipt_city_pays_to_provider:{fi:"Kaupunki maksaa palvelusetelillä palveluntuottajalle",sv:"Staden betalar serviceproducenten med en servicesedel",en:"The city pays the service provider with the service voucher"},receipt_voucher_value:{fi:"Palvelusetelisi arvo",sv:"Värde på din servicesedel",en:"Your service voucher's value"},receipt_client_self_payment:{fi:"Omavastuuosuus eli sinulle maksettavaksi jäävä asiakasmaksu",sv:"Självriskandel, det vill säga den klientavgift som återstår för dig att betala ",en:"The copayment, i.e. the client fee payable by you"},receipt_additional_details:{fi:"Lisähuomiot:",sv:"Ytterligare anmärkningar:",en:"Additional remarks:"},receipt_included_homecare:{fi:"Jos palvelu - ja hoitosuunnitelmassasi on myös kaupungin tuottamaa kotihoitoa, siitä laskutetaan erikseen kotihoidon asiakasmaksun mukaisesti.",sv:"Om din service- och vårdplan även omfattar hemvård som tillhandahålls av staden debiteras den separat i enlighet med klientavgiften för hemvård.",en:"If your service and care plan also includes home care provided by the city, it will be charged separately in accordance with the home care client fee."},receipt_estimate_if_done_by_city:{fi:"Arvio kaupungin kotihoidon asiakasmaksusta:",sv:"Bedömning av klientavgiften för stadens hemvård:",en:"Estimated client fee of the city's home care:"},receipt_when_done_by_city:{fi:"Kaupungin kotihoidon tuottamana palvelu maksaisi",sv:"Om staden producerade tjänsten skulle den kosta",en:"Provided by the city's home care, the service would cost"},receipt_aria_live:{fi:"Omavastuuosuus eli sinulle maksettavaksi jäävä asiakasmaksu on ${payment} euroa kuukaudessa, lue lisätietoja lomakkeen alta.",sv:"Självriskandelen, det vill säga den klientavgift som du ska betala för, är ${payment} euro per månad, se mer information under blanketten.",en:"The copayment, i.e. the client fee payable by you, is ${payment} euros per month; read more under the form."}},i=a(4270);class r{constructor(a,r){this.id=a;const s=JSON.parse(r),n=JSON.parse(drupalSettings.home_care_client_fee),o=()=>{};const l=()=>{const e=[];if(e.push(...this.calculator.validateBasics("household_size")),e.push(...this.calculator.validateBasics("gross_income_per_month")),e.push(...this.calculator.validateBasics("monthly_usage")),e.push(...this.calculator.validateBasics("service_provider_price")),e.length)return{error:{title:this.t("missing_input"),message:e}};const t=Number(this.calculator.getFieldValue("household_size")),a=Number(this.calculator.getFieldValue("gross_income_per_month")),r=this.calculator.getFieldValue("gross_income_per_month"),o=Number(this.calculator.getFieldValue("monthly_usage")),l=Number(this.calculator.getFieldValue("service_provider_price")),{limit:u,percent:c}=function(e,t,a,i){const r=i.getMinimumRange(e,a.household_size);let s=0;const n=e-Number(Object.keys(a.household_size).at(-1));n>0&&(s=n*a.household_size_beyond_defined_multiplier_euro);const o=i.getMinimumRange(e,t.household_size);let l=0;const u=e-Number(Object.keys(t.household_size).at(-1));return u>0&&(l=u*t.household_size_beyond_defined_multiplier_percent),{limit:r.gross_income_limit+s,percent:o.percent+l}}(t,s,n,this.calculator),m=a-u,_=Math.round(100*(null!==r?this.calculator.clamp(s.voucher_limits.min,s.voucher_limits.max-m*(c/100)/s.voucher_divisor,s.voucher_limits.max):s.voucher_limits.min))/100,h=o*_,p=Math.max(0,l-_)*o,d=(0,i.Z)(t,a,r,o,this.calculator,n,!1);let v=this.t("receipt_family_estimated_payment_explanation");const k=[{title:this.t("receipt_additional_details"),text:null}];null===r&&(v=this.t("receipt_family_empty_income")+v);const f=[];f.push({title:this.t("receipt_homecare_total"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(o*l)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(o*l)})},{title:this.t("receipt_city_pays_to_provider"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(h)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(h)})},{title:this.t("receipt_voucher_value"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_hour",{value:this.calculator.formatFinnishEuroCents(_)}),sum_screenreader:this.t("receipt_subtotal_euros_per_hour_screenreader",{value:this.calculator.formatEuroCents(_)})}),k.push({title:null,text:this.t("receipt_included_homecare")});const g={id:this.id,title:this.t("receipt_estimate_of_payment"),total_prefix:this.t("receipt_family_estimated_payment_prefix"),total_value:this.calculator.formatFinnishEuroCents(p),total_suffix:this.t("receipt_family_estimated_payment_suffix"),total_explanation:v,hr:!0,breakdown:[{title:this.t("receipt_estimate_is_based_on"),subtotals:f,additional_details:k},{title:this.t("receipt_estimate_if_done_by_city"),subtotals:[{title:this.t("receipt_when_done_by_city"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(d)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(d)})}],additional_details:null}]};return{receipt:this.calculator.getPartialRender("{{>receipt}}",g),ariaLive:this.t("receipt_aria_live",{payment:this.calculator.formatEuroCents(p)})}},u={submit:e=>{this.calculator.clearResult(),e.preventDefault();const t=l();this.calculator.renderResult(t)},keydown:()=>{},change:()=>{},reset:()=>{window.setTimeout(o,1),this.calculator.clearResult(),this.calculator.showAriaLiveText(this.t("reset_aria_live"))}};this.calculator=window.HelfiCalculator({name:"home_care_service_voucher",translations:t}),this.t=(e,t)=>this.calculator.translate(e,t),this.settings=this.calculator.parseSettings(r),this.calculator.init({id:a,formData:(()=>e.getFormData(this.id,this.t))(),eventHandlers:u})}}window.helfi_calculator=window.helfi_calculator||{},window.helfi_calculator.home_care_service_voucher=(e,t)=>new r(e,t)}()}(); \ No newline at end of file +!function(){"use strict";var e={4270:function(e,t,a){a.d(t,{Z:function(){return n}});var i={getFormData:function(e,t,{firstPerWeekPrice:a}){return{form_id:e,has_required_fields:!0,items:[{input_integer:{id:"household_size",label:t("household_size"),unit:t("unit_person"),min:1,size:2,required:!0,helper_text:t("household_size_explanation")}},{input_float:{id:"gross_income_per_month",label:t("gross_income_per_month"),unit:t("unit_euro"),min:0,size:8,required:!1,strip:"[€eE ]",helper_text:t("gross_income_per_month_explanation")}},{input_integer:{id:"monthly_usage",label:t("monthly_usage"),unit:t("unit_hour"),min:0,max:744,size:3,required:!0,helper_text:t("monthly_usage_explanation")}},{heading:{text:t("living_at_home_heading"),level:3}},{paragraph:{text:t("living_at_home_paragraph")}},{heading:{text:t("safetyphone_heading"),level:4}},{paragraph:{text:t("safetyphone_paragraph")}},{radio:{id:"safetyphone",label:t("safetyphone"),required:!0,radio_items:[{name:"safetyphone",item_id:"safetyphone_1",label:t("yes_calculate"),value:1},{name:"safetyphone",item_id:"safetyphone_2",label:t("no"),value:2}]}},{heading:{text:t("shopping_service_heading"),level:4}},{paragraph:{text:t("shopping_service_paragraph")}},{radio:{id:"shopping_service",label:t("shopping_service"),required:!0,helper_text:t("shopping_service_per_week_explanation",{first_per_week_price:a}),radio_items:[{name:"shopping_service",item_id:"shopping_service_1",label:t("yes_calculate"),value:1},{name:"shopping_service",item_id:"shopping_service_2",label:t("no"),value:2}]}},{heading:{text:t("meal_service_heading"),level:4}},{paragraph:{text:t("meal_service_paragraph")}},{radio:{id:"meal_service",label:t("meal_service"),required:!0,radio_items:[{name:"meal_service",item_id:"meal_service_1",label:t("yes_calculate"),value:1},{name:"meal_service",item_id:"meal_service_2",label:t("no"),value:2}]}},{group:{id:"meal_service_group",hide_group:!0,items:[{input_integer:{id:"meal_service_per_week",label:t("meal_service_per_week"),unit:t("unit_amount"),min:1,max:7,size:2,required:!0,helper_text:t("meal_service_per_week_explanation")}}]}}]}}};var s={household_size:{fi:"Talouden koko",sv:"Hushållets storlek",en:"Household size"},household_size_explanation:{fi:"Samassa osoitteessa asuvien perheenjäsenten määrä.",sv:"Antal familjemedlemmar som bor på samma adress.",en:"The number of family members living at the same address."},gross_income_per_month:{fi:"Talouden bruttotulot kuukaudessa",sv:"Hushållets bruttoinkomster per månad",en:"Household's gross income per month"},gross_income_per_month_explanation:{fi:"Koko talouden yhteenlasketut ansio- ja pääomatulot ennen verojen vähentämistä. Tuloihin lasketaan palkka, eläke-, vuokra- ja korkotulot sekä eläkkeensaajan hoitotuki. Jos jätät kentän tyhjäksi, lasketaan arvio korkeimman maksun mukaisesti.",sv:"Hela hushållets sammanlagda förvärvs- och kapitalinkomster före skatteavdrag. I inkomsterna ingår lön, pensions-, hyres och ränteinkomster samt vårdbidrag för pensionstagare. Om du lämnar fältet tomt beräknas bedömningen enligt den högsta avgiften.",en:"The entire household's combined income from earnings and capital income before taxes. Income includes salary, wages, pension, rental and interest income as well as care allowance for pensioners. If you leave the field blank, the estimate will be calculated using the highest fee."},monthly_usage:{fi:"Kotihoidon tuntimäärä kuukaudessa",sv:"Antal hemvårdstimmar per månad",en:"Number of hours of home care per month"},monthly_usage_explanation:{fi:"Löydät tuntimäärän kotihoidon palvelu- ja hoitosuunnitelmasta.",sv:"Du hittar antalet timmar i hemvårdens service- och vårdplan.",en:"You can find the number of hours in the home care service and care plan."},living_at_home_heading:{fi:"Kotona asumista tukevat palvelut",sv:"Tjänster som stöder hemmaboende",en:"Services to support living at home"},living_at_home_paragraph:{fi:"Voit laskea mukaan kotona asumista tukevia palveluja. Tukipalvelut ovat maksullisia.",sv:"Du kan inkludera tjänster som stöder hemmaboende. Stödtjänsterna är avgiftsbelagda.",en:"You can include services supporting living at home. The support services are subject to a fee."},safetyphone_heading:{fi:"Turvapuhelin ja turvaranneke",sv:"Trygghetstelefon och säkerhetsarmband",en:"Safety phone and bracelet"},safetyphone_paragraph:{fi:"Turvapuhelinpalveluun kuuluu turvapuhelin ja turvaranneke, joilla saat tarvittaessa apua ympäri vuorokauden. Turvapuhelinpalvelun maksut riippuvat talouden tuloista.",sv:"I trygghetstelefontjänsten ingår en trygghetstelefon och ett säkerhetsarmband genom vilka du vid behov får hjälp dygnet runt. Avgifterna för säkerhetstelefontjänsten beror på hushållets inkomster.",en:"The safety phone service includes a safety phone and a safety bracelet to call for help around the clock. The charges for the safety phone service depend on the income of the household."},safetyphone:{fi:"Laske arvioon turvapuhelin ja turvaranneke",sv:"Inkludera en trygghetstelefon och ett säkerhetsarmband i bedömningen",en:"Include the safety phone and safety bracelet in the estimate"},yes_calculate:{fi:"Kyllä, laske arvioon.",sv:"Ja, inkludera i bedömningen.",en:"Yes, include them in the estimate."},no:{fi:"Ei",sv:"Nej",en:"No"},shopping_service_heading:{fi:"Kauppapalvelu",sv:"Butiksservice:",en:"Grocery delivery service"},shopping_service_paragraph:{fi:"Kauppapalvelussa tilaamasi ruokaostokset toimitetaan kotiovellesi. Kauppapalvelun hintaan kuuluu yksi ruokaostosten keräily ja toimitus viikossa.",sv:"I butiksservicen levereras de livsmedelsinköp som du beställer till din dörr. I priset för butiksservicen ingår en insamling och leverans av livsmedel per vecka.",en:"The grocery delivery service delivers the groceries that you order through the service to your door. The price of the grocery delivery service includes one collection and delivery of the groceries per week."},shopping_service:{fi:"Laske arvioon kauppapalvelu",sv:"Inkludera butiksservicen i bedömningen",en:"Include the grocery delivery service in the estimate"},shopping_service_per_week_explanation:{fi:"Yksi toimitus viikossa maksaa ${first_per_week_price} euroa.",sv:"En leverans per vecka kostar ${first_per_week_price} euro.",en:"One delivery per week costs ${first_per_week_price} euros."},meal_service_heading:{fi:"Ateriapalvelu",sv:"Måltidstjänst",en:"Meal service"},meal_service_paragraph:{fi:"Ateriapalvelussa kotiisi kuljetetaan valmiita lounasaterioita, jotka voit itse lämmittää. Ateriapalvelun hintaan kuuluu lounasaterian hinta ja kuljetusmaksu.",sv:"I måltidstjänsten levereras färdiga lunchmåltider hem till dig, som du själv kan värma upp. I priset för måltidstjänsten ingår priset för lunchmåltiderna och leveransavgiften.",en:"The meal service transports to your home ready-made lunch meals, which you can heat up yourself. The price of the meal service includes the price of a lunch meal and a delivery fee."},meal_service:{fi:"Laske arvioon ateriapalvelu",sv:"Inkludera måltidstjänsten i bedömningen",en:"Include the meal service in the estimate"},meal_service_per_week:{fi:"Aterioiden määrä viikossa",sv:"Antal måltider per vecka",en:"Number of meals per week"},meal_service_per_week_explanation:{fi:"Voit tilata ateriapalvelun hinnaston mukaisia lounasaterioita enintään 7 ateriaa viikossa.",sv:"Du kan beställa högst sju måltider per vecka enligt måltidstjänstens prislista.",en:"You can order up to 7 lunch meals according to the meal service price list per week."},receipt_estimate_of_payment:{fi:"Arvio kotihoidon asiakasmaksusta",sv:"Bedömning av klientavgiften för hemvård",en:"Estimated home care client fee"},receipt_family_estimated_payment_prefix:{fi:"Arvioitu asiakasmaksu on yhteensä",sv:"Den beräknade klientavgiften är totalt",en:"The total estimated client fee is"},receipt_family_estimated_payment_suffix:{fi:"euroa kuukaudessa.",sv:"euro per månad.",en:"euros per month."},receipt_family_estimated_payment_explanation_min:{fi:"Alle ${minimum_payment_euro} euron maksuja ei laskuteta. ",sv:"Inga avgifter under ${minimum_payment_euro} euro debiteras. ",en:"Fees of less than ${minimum_payment_euro} euros will not be charged. "},receipt_family_empty_income:{fi:"Arvio on laskettu korkeimman maksun mukaisesti, koska et täyttänyt laskuriin talouden kuukausituloja. ",sv:"Bedömningen har beräknats enligt den högsta avgiften, eftersom du inte fyllde i hushållets månadsinkomster i räknaren. ",en:"Since you did not enter the household's monthly income in the calculator, the estimate was calculated using the highest fee. "},receipt_family_estimated_payment_explanation:{fi:"Tämä arvio on suuntaa antava. Tarkka arvo lasketaan kotihoidon päätökseen.",sv:"Denna bedömning är riktgivande. Det exakta värdet beräknas för beslutet om hemvård.",en:"This estimate is indicative only. The exact value will be calculated for the home care decision."},receipt_estimate_is_based_on:{fi:"Arvio muodostuu seuraavista tiedoista:",sv:"Bedömningen görs enligt följande uppgifter:",en:"The estimate consists of the following:"},receipt_subtotal_euros_per_month:{fi:"${value} €/kk",sv:"${value} euro/månad",en:"${value} €/month"},receipt_subtotal_euros_per_month_screenreader:{fi:"${value} euroa kuukaudessa",sv:"${value} euro per månad",en:"${value} euros per month"},receipt_additional_details:{fi:"Lisähuomiot:",sv:"Ytterligare anmärkningar:",en:"Additional remarks:"},receipt_homecare_payment:{fi:"Kotihoidon asiakasmaksu",sv:"Klientavgift för hemvården",en:"Home care client fee"},receipt_homecare_payment_two_or_more:{fi:"Jos molemmat puolisot ovat jatkuvan ja säännöllisen kotihoidon kuukausimaksuasiakkaita, maksu jakautuu kummallekin palvelu- ja hoitosuunnitelman mukaisesti.",sv:"Om båda makarna betalar en månatlig avgift för kontinuerlig och regelbunden hemvård, fördelas avgiften mellan dem i enlighet med service- och vårdplanen.",en:"If both spouses are clients of continuous and regular home care with a monthly fee, the fee is divided between them in accordance with their service and care plans."},receipt_shopping_service_math_single:{fi:"1 kauppatoimitus viikossa, kuukausihintaan on laskettu 4 toimitusta.",sv:"1 butiksleverans per vecka, 4 leveranser ingår i månadspriset.",en:"1 grocery delivery per week; the monthly fee includes 4 deliveries."},receipt_shopping_service_math_multiple:{fi:"1 kauppatoimitus viikossa, kuukausihintaan on laskettu 4 toimitusta.",sv:"1 butiksleveranser per vecka, i månadspriset ingår 4 leveranser.",en:"1 grocery deliveries per week; the monthly fee includes 4 deliveries."},receipt_shopping_service_explanation:{fi:"Kunkin viikon toimitus maksaa ${first_per_week} euroa.",sv:"Leveransen varje vecka kostar ${first_per_week} euro.",en:"The delivery each week costs ${first_per_week} euros."},receipt_aria_live:{fi:"Kotihoidon asiakasmaksun arvio on ${payment} euroa kuukaudessa, lue lisätietoja lomakkeen alta.",sv:"Den beräknade klientavgiften för hemvården är ${payment} euro per månad, mer information under blanketten.",en:"The estimated home care client fee is ${payment} euros per month; read more under the form."},receipt_meal_service_count_single:{fi:"1 lounasateria viikossa, kuukausihintaan on laskettu 4 ateriaa.",sv:"1 butiksleverans per vecka, 4 leveranser ingår i månadspriset.",en:"1 lunch meal per week; the monthly fee includes 4 meals."},receipt_meal_service_count_multiple:{fi:"${meals_per_week} lounasateriaa viikossa, kuukausihintaan on laskettu ${meals_per_month} ateriaa.",sv:"${meals_per_week} lunchmåltider per vecka, i månadspriset ingår ${meals_per_month} måltider.",en:"${meals_per_week} lunch meals per week; the monthly fee includes ${meals_per_month} meals."},receipt_meal_service_price:{fi:"Yksittäisen lounasaterian hinta on ${meal_service_price} euroa. Lämpimän aterian lisäksi voit tilata maksullisen jälkiruuan. Voit tilata ateriapalvelun hinnaston mukaisia lounasaterioita enintään 7 ateriaa viikossa, muut ateriat ovat omakustanteisia.",sv:"Priset på en lunchmåltid är ${meal_service_price} euro. Förutom en varm måltid kan du också beställa en avgiftsbelagd efterrätt. Du kan beställa högst sju måltider per vecka enligt måltidstjänstens prislista, de övriga måltiderna på egen bekostnad.",en:"The price of a single lunch meal is ${meal_service_price} euros. In addition to a hot meal, you can order a dessert for a fee. You can order up to 7 lunch meals according to the meal service price list per week; any additional meals are at your own expense."},receipt_meal_service_1_delivery_price:{fi:"Ateriat toimitetaan kotiin 1–2 kertaa viikossa. Kuljetuksia on yksi, kun tilattuja aterioita on 1–3, ja kuljetuksia on kaksi, kun aterioita on 4 tai enemmän. Hintaan on laskettu yksi kuljetusmaksu viikossa eli 4 kuljetusta kuukaudessa. Kukin kuljetus maksaa ${meal_service_delivery_price} euroa.",sv:"Måltiderna levereras hem 1–2 gånger per vecka. Det görs en leverans för 1–3 beställda måltider, och två leveranser för 4 eller fler måltider. I priset ingår en leveransavgift per vecka, med andra ord 4 leveranser per månad. Varje leverans kostar ${meal_service_delivery_price} euro.",en:"The meals will be delivered to your home once or twice a week: once a week if you order 1–3 meals, twice a week if you order 4 or more meals. The price includes one delivery fee per week, i.e. 4 deliveries per month. Each delivery costs ${meal_service_delivery_price} euros."},receipt_meal_service_2_delivery_price:{fi:"Ateriat toimitetaan kotiin 1–2 kertaa viikossa. Kuljetuksia on yksi, kun tilattuja aterioita on 1–3, ja kuljetuksia on kaksi, kun aterioita on 4 tai enemmän. Hintaan on laskettu kaksi kuljetusmaksua viikossa eli 8 kuljetusta kuukaudessa. Kukin kuljetus maksaa ${meal_service_delivery_price} euroa.",sv:"Måltiderna levereras hem 1–2 gånger per vecka. Det görs en leverans för 1–3 beställda måltider, och två leveranser för 4 eller fler måltider. I priset ingår två leveransavgifter per vecka, med andra ord 8 leveranser per månad. Varje leverans kostar ${meal_service_delivery_price} euro.",en:"The meals will be delivered to your home once or twice a week: once a week if you order 1–3 meals, twice a week if you order 4 or more meals. The price includes two delivery fees per week, i.e. 8 deliveries per month. Each delivery costs ${meal_service_delivery_price} euros."},receipt_meal_service_menumat_notice:{fi:"Ateriapalvelun sijaan voit tilata kotiisi pakastimen ja uunin yhdistelmän eli Menumat-ateria-automaatin. Menumat-palvelussa aterian hinta on ${menumat_price} euroa ja palvelumaksu on ${menumat_device_price} euroa vuorokaudessa. Aterian lisäksi voit tilata maksullisen jälkiruoan.",sv:"I stället för måltidstjänsten kan du beställa en kombination av en frys och en ugn, med andra ord en Menumat-måltidsautomat. I Menumat-servicen kostar en måltid ${menumat_price} euro och serviceavgiften är ${menumat_device_price} euro per dag. Förutom en måltid kan du också beställa en avgiftsbelagd efterrätt.",en:"Instead of the meal service, you can order a Menumat meal device, which is a combination of a freezer and an oven, to your home. In the Menumat service, the price per meal is ${menumat_price} euros, and the service fee is ${menumat_device_price} euros per day. In addition to the meal, you can order a dessert for a fee."}};class r{static calculateClientFee(e,t,a,i,s,r,n=!1){function l(e,t){const a=Object.keys(t).reverse();for(let i=0;i0&&(m=c*r.household_size_beyond_defined_multiplier_euro);const _=u.gross_income_limit+m,h=l(i,u.monthly_usage_percentage);let p=o;null!==a&&(p=h/100*(t-_));const d=s.clamp(0,p,o);return n&&console.log(`maximumPayment\t${o}`,`\ngrossIncomeLimit\t${_}`,`\npaymentPercentage\t${h}`,`\nreferencePayment\t${p}`),d}constructor(e,t){this.id=e;const a=JSON.parse(t),n=()=>{"1"===this.calculator.getFieldValue("meal_service")?this.calculator.showGroup("meal_service_group"):this.calculator.hideGroup("meal_service_group")},l=()=>{const e=[];e.push(...this.calculator.validateBasics("household_size")),e.push(...this.calculator.validateBasics("gross_income_per_month")),e.push(...this.calculator.validateBasics("monthly_usage")),e.push(...this.calculator.validateBasics("safetyphone")),e.push(...this.calculator.validateBasics("shopping_service")),e.push(...this.calculator.validateBasics("meal_service"));const t=this.calculator.getFieldValue("meal_service");if("1"===t&&e.push(...this.calculator.validateBasics("meal_service_per_week")),e.length)return{error:{title:this.t("missing_input"),message:e}};const i=Number(this.calculator.getFieldValue("household_size")),s=Number(this.calculator.getFieldValue("gross_income_per_month")),n=this.calculator.getFieldValue("gross_income_per_month"),l=Number(this.calculator.getFieldValue("monthly_usage")),o=this.calculator.getFieldValue("safetyphone"),u=this.calculator.getFieldValue("shopping_service"),m=Number(this.calculator.getFieldValue("meal_service_per_week"));let c=this.t("receipt_family_estimated_payment_explanation");const _=r.calculateClientFee(i,s,n,l,this.calculator,a,!1);null===n&&(c=this.t("receipt_family_empty_income")+c);const h={title:this.t("receipt_homecare_payment"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(_)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(_)})};i>=2&&(h.has_details=!0,h.details.push(this.t("receipt_homecare_payment_two_or_more")));const p=[h],d=[];let v=0;if("1"===o){const e=this.calculator.getMinimumRange(i,a.safetyphone_limits),t=null===n?1/0:s;v=this.calculator.getMinimumRange(t,e),p.push({title:this.t("safetyphone_heading"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(v)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(v)})})}let k=0,f=0;"1"===u&&(k=a.shopping_service_prices.first_per_week,f=4*k,p.push({title:this.t("shopping_service_heading"),has_details:!0,details:[this.t("receipt_shopping_service_math_single",{delivery_count_per_week:1,delivery_count_per_month:4}),this.t("receipt_shopping_service_explanation",{first_per_week:this.calculator.formatFinnishEuroCents(a.shopping_service_prices.first_per_week)})],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(f)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(f)})}));let g=0,y=0,b=0;"1"===t&&(g=m*a.meal_service_prices.lunch,y=m<=a.meal_service_prices.max_meals_for_single_delivery_per_week?1:2,g+=y*a.meal_service_prices.delivery,b=4*g,p.push({title:this.t("meal_service_heading"),has_details:!0,details:[this.t(1===m?"receipt_meal_service_count_single":"receipt_meal_service_count_multiple",{meals_per_week:m,meals_per_month:4*m}),this.t("receipt_meal_service_price",{meal_service_price:this.calculator.formatFinnishEuroCents(a.meal_service_prices.lunch),meal_deliveries_per_week:y,meal_deliveries_per_month:4*y}),this.t(`receipt_meal_service_${y}_delivery_price`,{meal_service_delivery_price:this.calculator.formatFinnishEuroCents(a.meal_service_prices.delivery)})],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(b)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(b)})}),d.push({title:this.t("receipt_additional_details"),text:this.t("receipt_meal_service_menumat_notice",{menumat_price:this.calculator.formatFinnishEuroCents(a.meal_service_prices.menumat.lunch),menumat_device_price:this.calculator.formatFinnishEuroCents(a.meal_service_prices.menumat.device_per_day)})}));const w=_+v+f+b,j={id:this.id,title:this.t("receipt_estimate_of_payment"),total_prefix:this.t("receipt_family_estimated_payment_prefix"),total_value:this.calculator.formatFinnishEuroCents(w),total_suffix:this.t("receipt_family_estimated_payment_suffix"),total_explanation:c,hr:!0,breakdown:{title:this.t("receipt_estimate_is_based_on"),subtotals:p,additional_details:d}};return{receipt:this.calculator.getPartialRender("{{>receipt}}",j),ariaLive:this.t("receipt_aria_live",{payment:w})}},o={submit:e=>{this.calculator.clearResult(),e.preventDefault();const t=l();this.calculator.renderResult(t)},keydown:()=>{n()},change:()=>{n()},reset:()=>{window.setTimeout(n,1),this.calculator.clearResult(),this.calculator.showAriaLiveText(this.t("reset_aria_live"))}};this.calculator=window.HelfiCalculator({name:"home_care_client_fee",translations:s}),this.t=(e,t)=>this.calculator.translate(e,t),this.settings=this.calculator.parseSettings(t),this.calculator.init({id:e,formData:(()=>i.getFormData(this.id,this.t,{firstPerWeekPrice:a.shopping_service_prices.first_per_week}))(),eventHandlers:o})}}window.helfi_calculator=window.helfi_calculator||{},window.helfi_calculator.home_care_client_fee=(e,t)=>new r(e,t);var n=r.calculateClientFee}},t={};function a(i){var s=t[i];if(void 0!==s)return s.exports;var r=t[i]={exports:{}};return e[i](r,r.exports,a),r.exports}a.d=function(e,t){for(var i in t)a.o(t,i)&&!a.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={getFormData:function(e,t){return{form_id:e,has_required_fields:!0,items:[{input_integer:{id:"household_size",label:t("household_size"),unit:t("unit_person"),min:1,size:2,required:!0,helper_text:t("household_size_explanation")}},{input_float:{id:"gross_income_per_month",label:t("gross_income_per_month"),unit:t("unit_euro"),min:0,size:8,required:!1,strip:"[€eE ]",helper_text:t("gross_income_per_month_explanation")}},{input_integer:{id:"monthly_usage",label:t("monthly_usage"),unit:t("unit_hour"),min:0,max:744,size:3,required:!0,helper_text:t("monthly_usage_explanation")}},{input_float:{id:"service_provider_price",label:t("service_provider_price"),unit:t("unit_euro"),min:0,size:6,required:!0,strip:"[€eE ]",helper_text:t("service_provider_price_explanation")}}]}}};var t={household_size:{fi:"Talouden koko",sv:"Hushållets storlek",en:"Household size"},household_size_explanation:{fi:"Samassa osoitteessa asuvien perheenjäsenten määrä.",sv:"Antal familjemedlemmar som bor på samma adress.",en:"The number of family members living at the same address."},gross_income_per_month:{fi:"Talouden bruttotulot kuukaudessa",sv:"Hushållets bruttoinkomster per månad",en:"Household's gross income per month"},gross_income_per_month_explanation:{fi:"Koko talouden yhteenlasketut ansio- ja pääomatulot ennen verojen vähentämistä. Tuloihin lasketaan palkka, eläke-, vuokra- ja korkotulot sekä eläkkeensaajan hoitotuki. Jos jätät kentän tyhjäksi, lasketaan arvio korkeimman tulorajan mukaisesti.",sv:"Hela hushållets sammanlagda förvärvs- och kapitalinkomster före skatteavdrag. I inkomsterna ingår lön, pensions-, hyres och ränteinkomster samt vårdbidrag för pensionstagare. Om du lämnar fältet tomt beräknas bedömningen enligt den högsta inkomstgränsen.",en:"The entire household's combined income from earnings and capital income before taxes. Income includes salary, wages, pension, rental and interest income as well as care allowance for pensioners. If you leave the field blank, the estimate will be calculated using the highest income threshold."},monthly_usage:{fi:"Kotihoidon tuntimäärä kuukaudessa",sv:"Antal hemvårdstimmar per månad",en:"Number of hours of home care per month"},monthly_usage_explanation:{fi:"Löydät tuntimäärän kotihoidon palvelu- ja hoitosuunnitelmasta.",sv:"Du hittar antalet timmar i hemvårdens service- och vårdplan.",en:"You can find the number of hours in the home care service and care plan."},service_provider_price:{fi:"Palveluntuottajan tuntihinta",sv:"Serviceproducentens timpris",en:"Service provider's hourly rate"},service_provider_price_explanation:{fi:"Valitsemasi palveluntuottajan tuntihinta kotihoidon palveluista.",sv:"Timpris för den serviceproducent som du väljer för hemvård.",en:"The service provider's hourly rate for the home care services of your choice."},receipt_estimate_of_payment:{fi:"Arvio palvelusetelillä hankitusta kotihoidosta",sv:"Bedömning av den hemvård som förvärvats med servicesedeln",en:"Estimate of home care acquired with a service voucher"},receipt_family_estimated_payment_prefix:{fi:"Omavastuuosuus eli sinulle maksettavaksi jäävä asiakasmaksu on",sv:"Självriskandelen, det vill säga den klientavgift som återstår att betala hos dig, är",en:"The copayment, i.e. the client fee payable by you, is"},receipt_family_estimated_payment_suffix:{fi:"euroa kuukaudessa.",sv:"euro per månad.",en:"euros per month."},receipt_family_empty_income:{fi:"Arvio on laskettu korkeimman maksun mukaisesti, koska et täyttänyt laskuriin talouden kuukausituloja. ",sv:"Bedömningen har beräknats enligt den högsta avgiften eftersom du inte fyllde i hushållets månadsinkomster i räknaren. ",en:"Since you did not enter the household's monthly income in the calculator, the estimate was calculated using the highest fee. "},receipt_family_estimated_payment_explanation:{fi:"Tämä arvio on suuntaa antava. Tarkka arvo lasketaan kotihoidon päätökseen.",sv:"Denna bedömning är riktgivande. Det exakta värdet beräknas för beslutet om hemvård.",en:"This estimate is indicative only. The exact value will be calculated for the home care decision."},receipt_estimate_is_based_on:{fi:"Arvio muodostuu seuraavasti:",sv:"Bedömningen görs enligt följande:",en:"The estimate consists of the following:"},receipt_subtotal_euros_per_month:{fi:"${value} €/kk",sv:"${value} euro/månad",en:"${value} €/month"},receipt_subtotal_euros_per_month_screenreader:{fi:"${value} euroa kuukaudessa",sv:"${value} euro per månad",en:"${value} euros per month"},receipt_subtotal_euros_per_hour:{fi:"${value} €/tunti",sv:"${value} euro/timme",en:"${value} €/hour"},receipt_subtotal_euros_per_hour_screenreader:{fi:"${value} euroa per tunti",sv:"${value} euro per timme",en:"${value} euros per hour"},receipt_homecare_total:{fi:"Palvelusetelillä hankittavan palvelun kokonaiskustannus",sv:"Total kostnad för tjänsten som köpts med servicesedeln",en:"Total cost of the service to be procured with the service voucher"},receipt_city_pays_to_provider:{fi:"Kaupunki maksaa palvelusetelillä palveluntuottajalle",sv:"Staden betalar serviceproducenten med en servicesedel",en:"The city pays the service provider with the service voucher"},receipt_voucher_value:{fi:"Palvelusetelisi arvo",sv:"Värde på din servicesedel",en:"Your service voucher's value"},receipt_client_self_payment:{fi:"Omavastuuosuus eli sinulle maksettavaksi jäävä asiakasmaksu",sv:"Självriskandel, det vill säga den klientavgift som återstår för dig att betala ",en:"The copayment, i.e. the client fee payable by you"},receipt_additional_details:{fi:"Lisähuomiot:",sv:"Ytterligare anmärkningar:",en:"Additional remarks:"},receipt_included_homecare:{fi:"Jos palvelu - ja hoitosuunnitelmassasi on myös kaupungin tuottamaa kotihoitoa, siitä laskutetaan erikseen kotihoidon asiakasmaksun mukaisesti.",sv:"Om din service- och vårdplan även omfattar hemvård som tillhandahålls av staden debiteras den separat i enlighet med klientavgiften för hemvård.",en:"If your service and care plan also includes home care provided by the city, it will be charged separately in accordance with the home care client fee."},receipt_estimate_if_done_by_city:{fi:"Arvio kaupungin kotihoidon asiakasmaksusta:",sv:"Bedömning av klientavgiften för stadens hemvård:",en:"Estimated client fee of the city's home care:"},receipt_when_done_by_city:{fi:"Kaupungin kotihoidon tuottamana palvelu maksaisi",sv:"Om staden producerade tjänsten skulle den kosta",en:"Provided by the city's home care, the service would cost"},receipt_aria_live:{fi:"Omavastuuosuus eli sinulle maksettavaksi jäävä asiakasmaksu on ${payment} euroa kuukaudessa, lue lisätietoja lomakkeen alta.",sv:"Självriskandelen, det vill säga den klientavgift som du ska betala för, är ${payment} euro per månad, se mer information under blanketten.",en:"The copayment, i.e. the client fee payable by you, is ${payment} euros per month; read more under the form."}},i=a(4270);class s{constructor(a,s){this.id=a;const r=JSON.parse(s),n=JSON.parse(drupalSettings.home_care_client_fee),l=()=>{};const o=()=>{const e=[];if(e.push(...this.calculator.validateBasics("household_size")),e.push(...this.calculator.validateBasics("gross_income_per_month")),e.push(...this.calculator.validateBasics("monthly_usage")),e.push(...this.calculator.validateBasics("service_provider_price")),e.length)return{error:{title:this.t("missing_input"),message:e}};const t=Number(this.calculator.getFieldValue("household_size")),a=Number(this.calculator.getFieldValue("gross_income_per_month")),s=this.calculator.getFieldValue("gross_income_per_month"),l=Number(this.calculator.getFieldValue("monthly_usage")),o=Number(this.calculator.getFieldValue("service_provider_price")),{limit:u,percent:m}=function(e,t,a,i){const s=i.getMinimumRange(e,a.household_size);let r=0;const n=e-Number(Object.keys(a.household_size).at(-1));n>0&&(r=n*a.household_size_beyond_defined_multiplier_euro);const l=i.getMinimumRange(e,t.household_size);let o=0;const u=e-Number(Object.keys(t.household_size).at(-1));return u>0&&(o=u*t.household_size_beyond_defined_multiplier_percent),{limit:s.gross_income_limit+r,percent:l.percent+o}}(t,r,n,this.calculator),c=a-u,_=Math.round(100*(null!==s?this.calculator.clamp(r.voucher_limits.min,r.voucher_limits.max-c*(m/100)/r.voucher_divisor,r.voucher_limits.max):r.voucher_limits.min))/100,h=l*_,p=Math.max(0,o-_)*l,d=(0,i.Z)(t,a,s,l,this.calculator,n,!1);let v=this.t("receipt_family_estimated_payment_explanation");const k=[{title:this.t("receipt_additional_details"),text:null}];null===s&&(v=this.t("receipt_family_empty_income")+v);const f=[];f.push({title:this.t("receipt_homecare_total"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(l*o)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(l*o)})},{title:this.t("receipt_city_pays_to_provider"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(h)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(h)})},{title:this.t("receipt_voucher_value"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_hour",{value:this.calculator.formatFinnishEuroCents(_)}),sum_screenreader:this.t("receipt_subtotal_euros_per_hour_screenreader",{value:this.calculator.formatEuroCents(_)})}),k.push({title:null,text:this.t("receipt_included_homecare")});const g={id:this.id,title:this.t("receipt_estimate_of_payment"),total_prefix:this.t("receipt_family_estimated_payment_prefix"),total_value:this.calculator.formatFinnishEuroCents(p),total_suffix:this.t("receipt_family_estimated_payment_suffix"),total_explanation:v,hr:!0,breakdown:[{title:this.t("receipt_estimate_is_based_on"),subtotals:f,additional_details:k},{title:this.t("receipt_estimate_if_done_by_city"),subtotals:[{title:this.t("receipt_when_done_by_city"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(d)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(d)})}],additional_details:null}]};return{receipt:this.calculator.getPartialRender("{{>receipt}}",g),ariaLive:this.t("receipt_aria_live",{payment:this.calculator.formatEuroCents(p)})}},u={submit:e=>{this.calculator.clearResult(),e.preventDefault();const t=o();this.calculator.renderResult(t)},keydown:()=>{},change:()=>{},reset:()=>{window.setTimeout(l,1),this.calculator.clearResult(),this.calculator.showAriaLiveText(this.t("reset_aria_live"))}};this.calculator=window.HelfiCalculator({name:"home_care_service_voucher",translations:t}),this.t=(e,t)=>this.calculator.translate(e,t),this.settings=this.calculator.parseSettings(s),this.calculator.init({id:a,formData:(()=>e.getFormData(this.id,this.t))(),eventHandlers:u})}}window.helfi_calculator=window.helfi_calculator||{},window.helfi_calculator.home_care_service_voucher=(e,t)=>new s(e,t)}()}(); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index cd538ac70..620884361 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6530,9 +6530,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001606", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001606.tgz", - "integrity": "sha512-LPbwnW4vfpJId225pwjZJOgX1m9sGfbw/RKJvw/t0QhYOOaTXHvkjVGFGPpvwEzufrjvTlsULnVTxdy4/6cqkg==", + "version": "1.0.30001609", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001609.tgz", + "integrity": "sha512-JFPQs34lHKx1B5t1EpQpWH4c+29zIyn/haGsbpfq3suuV9v56enjFt23zqijxGTMwy1p/4H2tjnQMY+p1WoAyA==", "funding": [ { "type": "opencollective", diff --git a/src/js/calculator/example-calc.html b/src/js/calculator/example-calc.html index 054dd64f3..077c01105 100644 --- a/src/js/calculator/example-calc.html +++ b/src/js/calculator/example-calc.html @@ -170,8 +170,7 @@ } }, "shopping_service_prices": { - "first_per_week": 9.37, - "others_per_week": 11.35 + "first_per_week": 9.37 }, "meal_service_prices": { "lunch": 3.9, diff --git a/src/js/calculator/home_care_client_fee/_form.js b/src/js/calculator/home_care_client_fee/_form.js index 95bdebf8f..2b86c2ba1 100644 --- a/src/js/calculator/home_care_client_fee/_form.js +++ b/src/js/calculator/home_care_client_fee/_form.js @@ -1,4 +1,4 @@ -function getFormData(id, t, { firstPerWeekPrice, othersPerWeekPrice }) { +function getFormData(id, t, { firstPerWeekPrice }) { return { form_id: id, has_required_fields: true, @@ -97,6 +97,7 @@ function getFormData(id, t, { firstPerWeekPrice, othersPerWeekPrice }) { id: 'shopping_service', label: t('shopping_service'), required: true, + helper_text: t('shopping_service_per_week_explanation', { first_per_week_price: firstPerWeekPrice }), radio_items: [ { name: 'shopping_service', @@ -113,25 +114,6 @@ function getFormData(id, t, { firstPerWeekPrice, othersPerWeekPrice }) { ], }, }, - { - group: { - id: 'shopping_service_group', - hide_group: true, - items: [ - { - input_integer: { - id: 'shopping_service_per_week', - label: t('shopping_service_per_week'), - unit: t('unit_amount'), - min: 1, - size: 2, - required: true, - helper_text: t('shopping_service_per_week_explanation', { first_per_week_price: firstPerWeekPrice, others_per_week_price: othersPerWeekPrice }), - }, - }, - ], - }, - }, { heading: { text: t('meal_service_heading'), diff --git a/src/js/calculator/home_care_client_fee/_translations.js b/src/js/calculator/home_care_client_fee/_translations.js index a83736c42..82e40319a 100644 --- a/src/js/calculator/home_care_client_fee/_translations.js +++ b/src/js/calculator/home_care_client_fee/_translations.js @@ -72,24 +72,19 @@ const translations = { en: 'Grocery delivery service', }, shopping_service_paragraph: { - fi: 'Kauppapalvelussa tilaamasi ruokaostokset toimitetaan kotiovellesi. Kauppapalvelun hintaan kuuluu ruokaostosten keräily ja toimitus.', - sv: 'I butiksservicen levereras de livsmedelsinköp som du beställer till din dörr. I priset för butiksservicen ingår insamling och leverans av livsmedelsinköp.', - en: 'The grocery delivery service delivers the groceries that you order through the service to your door. The price of the grocery delivery service includes the collection and delivery of the groceries.', + fi: 'Kauppapalvelussa tilaamasi ruokaostokset toimitetaan kotiovellesi. Kauppapalvelun hintaan kuuluu yksi ruokaostosten keräily ja toimitus viikossa.', + sv: 'I butiksservicen levereras de livsmedelsinköp som du beställer till din dörr. I priset för butiksservicen ingår en insamling och leverans av livsmedel per vecka.', + en: 'The grocery delivery service delivers the groceries that you order through the service to your door. The price of the grocery delivery service includes one collection and delivery of the groceries per week.', }, shopping_service: { fi: 'Laske arvioon kauppapalvelu', sv: 'Inkludera butiksservicen i bedömningen', en: 'Include the grocery delivery service in the estimate', }, - shopping_service_per_week: { - fi: 'Kauppapalvelun toimitusten määrä viikossa', - sv: 'Antal butiksserviceleveranser per vecka', - en: 'Number of deliveries from the grocery delivery service per week', - }, shopping_service_per_week_explanation: { - fi: 'Yksi toimitus viikossa maksaa ${first_per_week_price} euroa, muut toimitukset ${others_per_week_price} euroa per toimitus.', - sv: 'En leverans per vecka kostar ${first_per_week_price} euro, andra leveranser ${others_per_week_price} euro per leverans.', - en: 'One delivery per week costs ${first_per_week_price} euros, and the other deliveries are ${others_per_week_price} euros per delivery.', + fi: 'Yksi toimitus viikossa maksaa ${first_per_week_price} euroa.', + sv: 'En leverans per vecka kostar ${first_per_week_price} euro.', + en: 'One delivery per week costs ${first_per_week_price} euros.', }, meal_service_heading: { fi: 'Ateriapalvelu', @@ -177,24 +172,19 @@ const translations = { en: 'If both spouses are clients of continuous and regular home care with a monthly fee, the fee is divided between them in accordance with their service and care plans.', }, receipt_shopping_service_math_single: { - fi: '1 kauppatoimitus viikossa, kuukausihintaan on laskettu 4 toimitusta.', - sv: '1 butiksleverans per vecka, 4 leveranser ingår i månadspriset.', - en: '1 grocery delivery per week; the monthly fee includes 4 deliveries.', + fi: '1 kauppatoimitus viikossa, kuukausihintaan on laskettu 4 toimitusta.', + sv: '1 butiksleverans per vecka, 4 leveranser ingår i månadspriset.', + en: '1 grocery delivery per week; the monthly fee includes 4 deliveries.', }, receipt_shopping_service_math_multiple: { - fi: '${delivery_count_per_week} kauppatoimitusta viikossa, kuukausihintaan on laskettu ${delivery_count_per_month} toimitusta.', - sv: '${delivery_count_per_week} butiksleveranser per vecka, i månadspriset ingår ${delivery_count_per_month} leveranser.', - en: '${delivery_count_per_week} grocery deliveries per week; the monthly fee includes ${delivery_count_per_month} deliveries.', + fi: '1 kauppatoimitus viikossa, kuukausihintaan on laskettu 4 toimitusta.', + sv: '1 butiksleveranser per vecka, i månadspriset ingår 4 leveranser.', + en: '1 grocery deliveries per week; the monthly fee includes 4 deliveries.', }, receipt_shopping_service_explanation: { - fi: 'Kunkin viikon ensimmäinen toimitus maksaa ${first_per_week} euroa. Muut saman viikon toimitukset maksavat kukin ${others_per_week} euroa.', - sv: 'Den första leveransen för varje vecka kostar ${first_per_week} euro. De övriga leveranserna för samma vecka kostar ${others_per_week} euro.', - en: 'The first delivery of each week costs ${first_per_week} euros. Other deliveries during the same week cost ${others_per_week} euros each.', - }, - receipt_shopping_service_algorithm: { - fi: 'Laskuri laskee kuljetukset tasaisesti eri viikoille, mutta voit itse vaikuttaa kauppatoimitusten määrään tarpeesi mukaan.', - sv: 'Räknaren beräknar leveranserna jämnt för olika veckor, men du kan påverka antalet butiksleveranser enligt dina behov.', - en: 'The calculator calculates deliveries evenly for different weeks, but you can set the number of grocery deliveries according to your needs.', + fi: 'Kunkin viikon toimitus maksaa ${first_per_week} euroa.', + sv: 'Leveransen varje vecka kostar ${first_per_week} euro.', + en: 'The delivery each week costs ${first_per_week} euros.', }, receipt_aria_live: { fi: 'Kotihoidon asiakasmaksun arvio on ${payment} euroa kuukaudessa, lue lisätietoja lomakkeen alta.', diff --git a/src/js/calculator/home_care_client_fee/home_care_client_fee.js b/src/js/calculator/home_care_client_fee/home_care_client_fee.js index 57c3ff3f5..c1666a3c7 100644 --- a/src/js/calculator/home_care_client_fee/home_care_client_fee.js +++ b/src/js/calculator/home_care_client_fee/home_care_client_fee.js @@ -25,7 +25,7 @@ class HomeCareClientFee { } } throw new Error(`Minimum range not found for ${value} from ${range}`); - }; + } // 1. Get proper limits based on given values and the parsed settings. const maximumPayment = getMinimumRange(monthlyUsage, calculatorSettings.monthly_usage_max_payment); @@ -201,8 +201,7 @@ class HomeCareClientFee { }, }, shopping_service_prices: { - first_per_week: 9.37, - others_per_week: 11.35, + first_per_week: 9.37 }, meal_service_prices: { lunch: 3.9, @@ -217,19 +216,10 @@ class HomeCareClientFee { // */ // Form content const getFormData = () => form.getFormData(this.id, this.t, { - firstPerWeekPrice: parsedSettings.shopping_service_prices.first_per_week, - othersPerWeekPrice: parsedSettings.shopping_service_prices.others_per_week, + firstPerWeekPrice: parsedSettings.shopping_service_prices.first_per_week }); const update = () => { - const shoppingService = this.calculator.getFieldValue('shopping_service'); - - if (shoppingService === '1') { - this.calculator.showGroup('shopping_service_group'); - } else { - this.calculator.hideGroup('shopping_service_group'); - } - const mealService = this.calculator.getFieldValue('meal_service'); if (mealService === '1') { @@ -248,12 +238,7 @@ class HomeCareClientFee { errorMessages.push(...this.calculator.validateBasics('gross_income_per_month')); errorMessages.push(...this.calculator.validateBasics('monthly_usage')); errorMessages.push(...this.calculator.validateBasics('safetyphone')); - errorMessages.push(...this.calculator.validateBasics('shopping_service')); - const shoppingService = this.calculator.getFieldValue('shopping_service'); - if (shoppingService === '1') { - errorMessages.push(...this.calculator.validateBasics('shopping_service_per_week')); - } errorMessages.push(...this.calculator.validateBasics('meal_service')); const mealService = this.calculator.getFieldValue('meal_service'); @@ -278,8 +263,7 @@ class HomeCareClientFee { const grossIncomePerMonthRaw = this.calculator.getFieldValue('gross_income_per_month'); const monthlyUsage = Number(this.calculator.getFieldValue('monthly_usage')); const safetyphone = this.calculator.getFieldValue('safetyphone'); - // Shopping service is set earlier - const shoppingServicePerWeek = Number(this.calculator.getFieldValue('shopping_service_per_week')); + const shoppingService = this.calculator.getFieldValue('shopping_service'); // Meal service is set earlier const mealServicePerWeek = Number(this.calculator.getFieldValue('meal_service_per_week')); @@ -355,39 +339,30 @@ class HomeCareClientFee { // 6. If shopping service is selected, calculate value for it. let shoppingPaymentPerWeek = 0; let shoppingPaymentPerMonth = 0; + + const shoppingServicePerWeek = 1; + if (shoppingService === '1') { - // First shopping service per week has cheaper price + // Since there is only one shopping service, use the price for the first service shoppingPaymentPerWeek = parsedSettings.shopping_service_prices.first_per_week; - // Others have higher price - shoppingPaymentPerWeek += (shoppingServicePerWeek - 1) * parsedSettings.shopping_service_prices.others_per_week; shoppingPaymentPerMonth = shoppingPaymentPerWeek * 4; // Add details to receipt - subtotals.push( - { - title: this.t('shopping_service_heading'), - has_details: true, - details: [ - this.t( - (shoppingServicePerWeek === 1) ? 'receipt_shopping_service_math_single' : 'receipt_shopping_service_math_multiple', - { - delivery_count_per_week: shoppingServicePerWeek, - delivery_count_per_month: shoppingServicePerWeek * 4, - } - ), - this.t( - 'receipt_shopping_service_explanation', - { - first_per_week: this.calculator.formatFinnishEuroCents(parsedSettings.shopping_service_prices.first_per_week), - others_per_week: this.calculator.formatFinnishEuroCents(parsedSettings.shopping_service_prices.others_per_week), - }, - ), - this.t('receipt_shopping_service_algorithm') - ], - sum: this.t('receipt_subtotal_euros_per_month', { value: this.calculator.formatFinnishEuroCents(shoppingPaymentPerMonth) }), - sum_screenreader: this.t('receipt_subtotal_euros_per_month_screenreader', { value: this.calculator.formatEuroCents(shoppingPaymentPerMonth) }), - } - ); + subtotals.push({ + title: this.t('shopping_service_heading'), + has_details: true, + details: [ + this.t('receipt_shopping_service_math_single', { + delivery_count_per_week: shoppingServicePerWeek, + delivery_count_per_month: shoppingServicePerWeek * 4, + }), + this.t('receipt_shopping_service_explanation', { + first_per_week: this.calculator.formatFinnishEuroCents(parsedSettings.shopping_service_prices.first_per_week), + }) + ], + sum: this.t('receipt_subtotal_euros_per_month', { value: this.calculator.formatFinnishEuroCents(shoppingPaymentPerMonth) }), + sum_screenreader: this.t('receipt_subtotal_euros_per_month_screenreader', { value: this.calculator.formatEuroCents(shoppingPaymentPerMonth) }), + }); } // 7. If meal service is selected, calculate value for it. From 9b119b6b69c44a59843c13eb7c79548f87565dfd Mon Sep 17 00:00:00 2001 From: Tero Elonen Date: Fri, 12 Apr 2024 18:13:52 +0300 Subject: [PATCH 2/3] UHF-9815: Improve commenting on the code, add correct translations for Swedish and English --- src/js/calculator/home_care_client_fee/_translations.js | 4 ++-- .../calculator/home_care_client_fee/home_care_client_fee.js | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/js/calculator/home_care_client_fee/_translations.js b/src/js/calculator/home_care_client_fee/_translations.js index 82e40319a..3f9eeaefa 100644 --- a/src/js/calculator/home_care_client_fee/_translations.js +++ b/src/js/calculator/home_care_client_fee/_translations.js @@ -73,8 +73,8 @@ const translations = { }, shopping_service_paragraph: { fi: 'Kauppapalvelussa tilaamasi ruokaostokset toimitetaan kotiovellesi. Kauppapalvelun hintaan kuuluu yksi ruokaostosten keräily ja toimitus viikossa.', - sv: 'I butiksservicen levereras de livsmedelsinköp som du beställer till din dörr. I priset för butiksservicen ingår en insamling och leverans av livsmedel per vecka.', - en: 'The grocery delivery service delivers the groceries that you order through the service to your door. The price of the grocery delivery service includes one collection and delivery of the groceries per week.', + sv: 'Butiksservicen levererar de livsmedelsinköp som du beställer till din dörr. I priset för butiksservicen ingår samling och leverans av livsmedelsinköp en gång i veckan.', + en: 'The grocery delivery service delivers the groceries that you order through the service to your door. The price of the grocery delivery service includes the collection and delivery of the groceries once a week.', }, shopping_service: { fi: 'Laske arvioon kauppapalvelu', diff --git a/src/js/calculator/home_care_client_fee/home_care_client_fee.js b/src/js/calculator/home_care_client_fee/home_care_client_fee.js index c1666a3c7..006d01747 100644 --- a/src/js/calculator/home_care_client_fee/home_care_client_fee.js +++ b/src/js/calculator/home_care_client_fee/home_care_client_fee.js @@ -343,7 +343,9 @@ class HomeCareClientFee { const shoppingServicePerWeek = 1; if (shoppingService === '1') { - // Since there is only one shopping service, use the price for the first service + // Since shopping service has only one delivery per week we use the first_per_week value. + // There used to be possibility in the calculator to have multiple deliveries per week, + // but it was fixed to one. This is why there is a bit misleading term first_per_week. shoppingPaymentPerWeek = parsedSettings.shopping_service_prices.first_per_week; shoppingPaymentPerMonth = shoppingPaymentPerWeek * 4; From 6234c53e58906605acde05bafbece2e5131fe1aa Mon Sep 17 00:00:00 2001 From: Tero Elonen Date: Mon, 15 Apr 2024 12:07:17 +0300 Subject: [PATCH 3/3] UHF-9815: Remove reduntant translation, add nbsp spaces back to traslations with numbers --- dist/js/home_care_client_fee.min.js | 2 +- dist/js/home_care_service_voucher.min.js | 2 +- package-lock.json | 6 +++--- .../calculator/home_care_client_fee/_translations.js | 11 +++-------- .../home_care_client_fee/home_care_client_fee.js | 4 ++-- 5 files changed, 10 insertions(+), 15 deletions(-) diff --git a/dist/js/home_care_client_fee.min.js b/dist/js/home_care_client_fee.min.js index 416f9437a..3b7cd084a 100644 --- a/dist/js/home_care_client_fee.min.js +++ b/dist/js/home_care_client_fee.min.js @@ -1 +1 @@ -!function(){"use strict";var e={getFormData:function(e,a,{firstPerWeekPrice:t}){return{form_id:e,has_required_fields:!0,items:[{input_integer:{id:"household_size",label:a("household_size"),unit:a("unit_person"),min:1,size:2,required:!0,helper_text:a("household_size_explanation")}},{input_float:{id:"gross_income_per_month",label:a("gross_income_per_month"),unit:a("unit_euro"),min:0,size:8,required:!1,strip:"[€eE ]",helper_text:a("gross_income_per_month_explanation")}},{input_integer:{id:"monthly_usage",label:a("monthly_usage"),unit:a("unit_hour"),min:0,max:744,size:3,required:!0,helper_text:a("monthly_usage_explanation")}},{heading:{text:a("living_at_home_heading"),level:3}},{paragraph:{text:a("living_at_home_paragraph")}},{heading:{text:a("safetyphone_heading"),level:4}},{paragraph:{text:a("safetyphone_paragraph")}},{radio:{id:"safetyphone",label:a("safetyphone"),required:!0,radio_items:[{name:"safetyphone",item_id:"safetyphone_1",label:a("yes_calculate"),value:1},{name:"safetyphone",item_id:"safetyphone_2",label:a("no"),value:2}]}},{heading:{text:a("shopping_service_heading"),level:4}},{paragraph:{text:a("shopping_service_paragraph")}},{radio:{id:"shopping_service",label:a("shopping_service"),required:!0,helper_text:a("shopping_service_per_week_explanation",{first_per_week_price:t}),radio_items:[{name:"shopping_service",item_id:"shopping_service_1",label:a("yes_calculate"),value:1},{name:"shopping_service",item_id:"shopping_service_2",label:a("no"),value:2}]}},{heading:{text:a("meal_service_heading"),level:4}},{paragraph:{text:a("meal_service_paragraph")}},{radio:{id:"meal_service",label:a("meal_service"),required:!0,radio_items:[{name:"meal_service",item_id:"meal_service_1",label:a("yes_calculate"),value:1},{name:"meal_service",item_id:"meal_service_2",label:a("no"),value:2}]}},{group:{id:"meal_service_group",hide_group:!0,items:[{input_integer:{id:"meal_service_per_week",label:a("meal_service_per_week"),unit:a("unit_amount"),min:1,max:7,size:2,required:!0,helper_text:a("meal_service_per_week_explanation")}}]}}]}}};var a={household_size:{fi:"Talouden koko",sv:"Hushållets storlek",en:"Household size"},household_size_explanation:{fi:"Samassa osoitteessa asuvien perheenjäsenten määrä.",sv:"Antal familjemedlemmar som bor på samma adress.",en:"The number of family members living at the same address."},gross_income_per_month:{fi:"Talouden bruttotulot kuukaudessa",sv:"Hushållets bruttoinkomster per månad",en:"Household's gross income per month"},gross_income_per_month_explanation:{fi:"Koko talouden yhteenlasketut ansio- ja pääomatulot ennen verojen vähentämistä. Tuloihin lasketaan palkka, eläke-, vuokra- ja korkotulot sekä eläkkeensaajan hoitotuki. Jos jätät kentän tyhjäksi, lasketaan arvio korkeimman maksun mukaisesti.",sv:"Hela hushållets sammanlagda förvärvs- och kapitalinkomster före skatteavdrag. I inkomsterna ingår lön, pensions-, hyres och ränteinkomster samt vårdbidrag för pensionstagare. Om du lämnar fältet tomt beräknas bedömningen enligt den högsta avgiften.",en:"The entire household's combined income from earnings and capital income before taxes. Income includes salary, wages, pension, rental and interest income as well as care allowance for pensioners. If you leave the field blank, the estimate will be calculated using the highest fee."},monthly_usage:{fi:"Kotihoidon tuntimäärä kuukaudessa",sv:"Antal hemvårdstimmar per månad",en:"Number of hours of home care per month"},monthly_usage_explanation:{fi:"Löydät tuntimäärän kotihoidon palvelu- ja hoitosuunnitelmasta.",sv:"Du hittar antalet timmar i hemvårdens service- och vårdplan.",en:"You can find the number of hours in the home care service and care plan."},living_at_home_heading:{fi:"Kotona asumista tukevat palvelut",sv:"Tjänster som stöder hemmaboende",en:"Services to support living at home"},living_at_home_paragraph:{fi:"Voit laskea mukaan kotona asumista tukevia palveluja. Tukipalvelut ovat maksullisia.",sv:"Du kan inkludera tjänster som stöder hemmaboende. Stödtjänsterna är avgiftsbelagda.",en:"You can include services supporting living at home. The support services are subject to a fee."},safetyphone_heading:{fi:"Turvapuhelin ja turvaranneke",sv:"Trygghetstelefon och säkerhetsarmband",en:"Safety phone and bracelet"},safetyphone_paragraph:{fi:"Turvapuhelinpalveluun kuuluu turvapuhelin ja turvaranneke, joilla saat tarvittaessa apua ympäri vuorokauden. Turvapuhelinpalvelun maksut riippuvat talouden tuloista.",sv:"I trygghetstelefontjänsten ingår en trygghetstelefon och ett säkerhetsarmband genom vilka du vid behov får hjälp dygnet runt. Avgifterna för säkerhetstelefontjänsten beror på hushållets inkomster.",en:"The safety phone service includes a safety phone and a safety bracelet to call for help around the clock. The charges for the safety phone service depend on the income of the household."},safetyphone:{fi:"Laske arvioon turvapuhelin ja turvaranneke",sv:"Inkludera en trygghetstelefon och ett säkerhetsarmband i bedömningen",en:"Include the safety phone and safety bracelet in the estimate"},yes_calculate:{fi:"Kyllä, laske arvioon.",sv:"Ja, inkludera i bedömningen.",en:"Yes, include them in the estimate."},no:{fi:"Ei",sv:"Nej",en:"No"},shopping_service_heading:{fi:"Kauppapalvelu",sv:"Butiksservice:",en:"Grocery delivery service"},shopping_service_paragraph:{fi:"Kauppapalvelussa tilaamasi ruokaostokset toimitetaan kotiovellesi. Kauppapalvelun hintaan kuuluu yksi ruokaostosten keräily ja toimitus viikossa.",sv:"I butiksservicen levereras de livsmedelsinköp som du beställer till din dörr. I priset för butiksservicen ingår en insamling och leverans av livsmedel per vecka.",en:"The grocery delivery service delivers the groceries that you order through the service to your door. The price of the grocery delivery service includes one collection and delivery of the groceries per week."},shopping_service:{fi:"Laske arvioon kauppapalvelu",sv:"Inkludera butiksservicen i bedömningen",en:"Include the grocery delivery service in the estimate"},shopping_service_per_week_explanation:{fi:"Yksi toimitus viikossa maksaa ${first_per_week_price} euroa.",sv:"En leverans per vecka kostar ${first_per_week_price} euro.",en:"One delivery per week costs ${first_per_week_price} euros."},meal_service_heading:{fi:"Ateriapalvelu",sv:"Måltidstjänst",en:"Meal service"},meal_service_paragraph:{fi:"Ateriapalvelussa kotiisi kuljetetaan valmiita lounasaterioita, jotka voit itse lämmittää. Ateriapalvelun hintaan kuuluu lounasaterian hinta ja kuljetusmaksu.",sv:"I måltidstjänsten levereras färdiga lunchmåltider hem till dig, som du själv kan värma upp. I priset för måltidstjänsten ingår priset för lunchmåltiderna och leveransavgiften.",en:"The meal service transports to your home ready-made lunch meals, which you can heat up yourself. The price of the meal service includes the price of a lunch meal and a delivery fee."},meal_service:{fi:"Laske arvioon ateriapalvelu",sv:"Inkludera måltidstjänsten i bedömningen",en:"Include the meal service in the estimate"},meal_service_per_week:{fi:"Aterioiden määrä viikossa",sv:"Antal måltider per vecka",en:"Number of meals per week"},meal_service_per_week_explanation:{fi:"Voit tilata ateriapalvelun hinnaston mukaisia lounasaterioita enintään 7 ateriaa viikossa.",sv:"Du kan beställa högst sju måltider per vecka enligt måltidstjänstens prislista.",en:"You can order up to 7 lunch meals according to the meal service price list per week."},receipt_estimate_of_payment:{fi:"Arvio kotihoidon asiakasmaksusta",sv:"Bedömning av klientavgiften för hemvård",en:"Estimated home care client fee"},receipt_family_estimated_payment_prefix:{fi:"Arvioitu asiakasmaksu on yhteensä",sv:"Den beräknade klientavgiften är totalt",en:"The total estimated client fee is"},receipt_family_estimated_payment_suffix:{fi:"euroa kuukaudessa.",sv:"euro per månad.",en:"euros per month."},receipt_family_estimated_payment_explanation_min:{fi:"Alle ${minimum_payment_euro} euron maksuja ei laskuteta. ",sv:"Inga avgifter under ${minimum_payment_euro} euro debiteras. ",en:"Fees of less than ${minimum_payment_euro} euros will not be charged. "},receipt_family_empty_income:{fi:"Arvio on laskettu korkeimman maksun mukaisesti, koska et täyttänyt laskuriin talouden kuukausituloja. ",sv:"Bedömningen har beräknats enligt den högsta avgiften, eftersom du inte fyllde i hushållets månadsinkomster i räknaren. ",en:"Since you did not enter the household's monthly income in the calculator, the estimate was calculated using the highest fee. "},receipt_family_estimated_payment_explanation:{fi:"Tämä arvio on suuntaa antava. Tarkka arvo lasketaan kotihoidon päätökseen.",sv:"Denna bedömning är riktgivande. Det exakta värdet beräknas för beslutet om hemvård.",en:"This estimate is indicative only. The exact value will be calculated for the home care decision."},receipt_estimate_is_based_on:{fi:"Arvio muodostuu seuraavista tiedoista:",sv:"Bedömningen görs enligt följande uppgifter:",en:"The estimate consists of the following:"},receipt_subtotal_euros_per_month:{fi:"${value} €/kk",sv:"${value} euro/månad",en:"${value} €/month"},receipt_subtotal_euros_per_month_screenreader:{fi:"${value} euroa kuukaudessa",sv:"${value} euro per månad",en:"${value} euros per month"},receipt_additional_details:{fi:"Lisähuomiot:",sv:"Ytterligare anmärkningar:",en:"Additional remarks:"},receipt_homecare_payment:{fi:"Kotihoidon asiakasmaksu",sv:"Klientavgift för hemvården",en:"Home care client fee"},receipt_homecare_payment_two_or_more:{fi:"Jos molemmat puolisot ovat jatkuvan ja säännöllisen kotihoidon kuukausimaksuasiakkaita, maksu jakautuu kummallekin palvelu- ja hoitosuunnitelman mukaisesti.",sv:"Om båda makarna betalar en månatlig avgift för kontinuerlig och regelbunden hemvård, fördelas avgiften mellan dem i enlighet med service- och vårdplanen.",en:"If both spouses are clients of continuous and regular home care with a monthly fee, the fee is divided between them in accordance with their service and care plans."},receipt_shopping_service_math_single:{fi:"1 kauppatoimitus viikossa, kuukausihintaan on laskettu 4 toimitusta.",sv:"1 butiksleverans per vecka, 4 leveranser ingår i månadspriset.",en:"1 grocery delivery per week; the monthly fee includes 4 deliveries."},receipt_shopping_service_math_multiple:{fi:"1 kauppatoimitus viikossa, kuukausihintaan on laskettu 4 toimitusta.",sv:"1 butiksleveranser per vecka, i månadspriset ingår 4 leveranser.",en:"1 grocery deliveries per week; the monthly fee includes 4 deliveries."},receipt_shopping_service_explanation:{fi:"Kunkin viikon toimitus maksaa ${first_per_week} euroa.",sv:"Leveransen varje vecka kostar ${first_per_week} euro.",en:"The delivery each week costs ${first_per_week} euros."},receipt_aria_live:{fi:"Kotihoidon asiakasmaksun arvio on ${payment} euroa kuukaudessa, lue lisätietoja lomakkeen alta.",sv:"Den beräknade klientavgiften för hemvården är ${payment} euro per månad, mer information under blanketten.",en:"The estimated home care client fee is ${payment} euros per month; read more under the form."},receipt_meal_service_count_single:{fi:"1 lounasateria viikossa, kuukausihintaan on laskettu 4 ateriaa.",sv:"1 butiksleverans per vecka, 4 leveranser ingår i månadspriset.",en:"1 lunch meal per week; the monthly fee includes 4 meals."},receipt_meal_service_count_multiple:{fi:"${meals_per_week} lounasateriaa viikossa, kuukausihintaan on laskettu ${meals_per_month} ateriaa.",sv:"${meals_per_week} lunchmåltider per vecka, i månadspriset ingår ${meals_per_month} måltider.",en:"${meals_per_week} lunch meals per week; the monthly fee includes ${meals_per_month} meals."},receipt_meal_service_price:{fi:"Yksittäisen lounasaterian hinta on ${meal_service_price} euroa. Lämpimän aterian lisäksi voit tilata maksullisen jälkiruuan. Voit tilata ateriapalvelun hinnaston mukaisia lounasaterioita enintään 7 ateriaa viikossa, muut ateriat ovat omakustanteisia.",sv:"Priset på en lunchmåltid är ${meal_service_price} euro. Förutom en varm måltid kan du också beställa en avgiftsbelagd efterrätt. Du kan beställa högst sju måltider per vecka enligt måltidstjänstens prislista, de övriga måltiderna på egen bekostnad.",en:"The price of a single lunch meal is ${meal_service_price} euros. In addition to a hot meal, you can order a dessert for a fee. You can order up to 7 lunch meals according to the meal service price list per week; any additional meals are at your own expense."},receipt_meal_service_1_delivery_price:{fi:"Ateriat toimitetaan kotiin 1–2 kertaa viikossa. Kuljetuksia on yksi, kun tilattuja aterioita on 1–3, ja kuljetuksia on kaksi, kun aterioita on 4 tai enemmän. Hintaan on laskettu yksi kuljetusmaksu viikossa eli 4 kuljetusta kuukaudessa. Kukin kuljetus maksaa ${meal_service_delivery_price} euroa.",sv:"Måltiderna levereras hem 1–2 gånger per vecka. Det görs en leverans för 1–3 beställda måltider, och två leveranser för 4 eller fler måltider. I priset ingår en leveransavgift per vecka, med andra ord 4 leveranser per månad. Varje leverans kostar ${meal_service_delivery_price} euro.",en:"The meals will be delivered to your home once or twice a week: once a week if you order 1–3 meals, twice a week if you order 4 or more meals. The price includes one delivery fee per week, i.e. 4 deliveries per month. Each delivery costs ${meal_service_delivery_price} euros."},receipt_meal_service_2_delivery_price:{fi:"Ateriat toimitetaan kotiin 1–2 kertaa viikossa. Kuljetuksia on yksi, kun tilattuja aterioita on 1–3, ja kuljetuksia on kaksi, kun aterioita on 4 tai enemmän. Hintaan on laskettu kaksi kuljetusmaksua viikossa eli 8 kuljetusta kuukaudessa. Kukin kuljetus maksaa ${meal_service_delivery_price} euroa.",sv:"Måltiderna levereras hem 1–2 gånger per vecka. Det görs en leverans för 1–3 beställda måltider, och två leveranser för 4 eller fler måltider. I priset ingår två leveransavgifter per vecka, med andra ord 8 leveranser per månad. Varje leverans kostar ${meal_service_delivery_price} euro.",en:"The meals will be delivered to your home once or twice a week: once a week if you order 1–3 meals, twice a week if you order 4 or more meals. The price includes two delivery fees per week, i.e. 8 deliveries per month. Each delivery costs ${meal_service_delivery_price} euros."},receipt_meal_service_menumat_notice:{fi:"Ateriapalvelun sijaan voit tilata kotiisi pakastimen ja uunin yhdistelmän eli Menumat-ateria-automaatin. Menumat-palvelussa aterian hinta on ${menumat_price} euroa ja palvelumaksu on ${menumat_device_price} euroa vuorokaudessa. Aterian lisäksi voit tilata maksullisen jälkiruoan.",sv:"I stället för måltidstjänsten kan du beställa en kombination av en frys och en ugn, med andra ord en Menumat-måltidsautomat. I Menumat-servicen kostar en måltid ${menumat_price} euro och serviceavgiften är ${menumat_device_price} euro per dag. Förutom en måltid kan du också beställa en avgiftsbelagd efterrätt.",en:"Instead of the meal service, you can order a Menumat meal device, which is a combination of a freezer and an oven, to your home. In the Menumat service, the price per meal is ${menumat_price} euros, and the service fee is ${menumat_device_price} euros per day. In addition to the meal, you can order a dessert for a fee."}};class t{static calculateClientFee(e,a,t,i,r,s,n=!1){function l(e,a){const t=Object.keys(a).reverse();for(let i=0;i0&&(m=c*s.household_size_beyond_defined_multiplier_euro);const _=u.gross_income_limit+m,h=l(i,u.monthly_usage_percentage);let p=o;null!==t&&(p=h/100*(a-_));const d=r.clamp(0,p,o);return n&&console.log(`maximumPayment\t${o}`,`\ngrossIncomeLimit\t${_}`,`\npaymentPercentage\t${h}`,`\nreferencePayment\t${p}`),d}constructor(i,r){this.id=i;const s=JSON.parse(r),n=()=>{"1"===this.calculator.getFieldValue("meal_service")?this.calculator.showGroup("meal_service_group"):this.calculator.hideGroup("meal_service_group")},l=()=>{const e=[];e.push(...this.calculator.validateBasics("household_size")),e.push(...this.calculator.validateBasics("gross_income_per_month")),e.push(...this.calculator.validateBasics("monthly_usage")),e.push(...this.calculator.validateBasics("safetyphone")),e.push(...this.calculator.validateBasics("shopping_service")),e.push(...this.calculator.validateBasics("meal_service"));const a=this.calculator.getFieldValue("meal_service");if("1"===a&&e.push(...this.calculator.validateBasics("meal_service_per_week")),e.length)return{error:{title:this.t("missing_input"),message:e}};const i=Number(this.calculator.getFieldValue("household_size")),r=Number(this.calculator.getFieldValue("gross_income_per_month")),n=this.calculator.getFieldValue("gross_income_per_month"),l=Number(this.calculator.getFieldValue("monthly_usage")),o=this.calculator.getFieldValue("safetyphone"),u=this.calculator.getFieldValue("shopping_service"),m=Number(this.calculator.getFieldValue("meal_service_per_week"));let c=this.t("receipt_family_estimated_payment_explanation");const _=t.calculateClientFee(i,r,n,l,this.calculator,s,!1);null===n&&(c=this.t("receipt_family_empty_income")+c);const h={title:this.t("receipt_homecare_payment"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(_)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(_)})};i>=2&&(h.has_details=!0,h.details.push(this.t("receipt_homecare_payment_two_or_more")));const p=[h],d=[];let v=0;if("1"===o){const e=this.calculator.getMinimumRange(i,s.safetyphone_limits),a=null===n?1/0:r;v=this.calculator.getMinimumRange(a,e),p.push({title:this.t("safetyphone_heading"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(v)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(v)})})}let k=0,f=0;"1"===u&&(k=s.shopping_service_prices.first_per_week,f=4*k,p.push({title:this.t("shopping_service_heading"),has_details:!0,details:[this.t("receipt_shopping_service_math_single",{delivery_count_per_week:1,delivery_count_per_month:4}),this.t("receipt_shopping_service_explanation",{first_per_week:this.calculator.formatFinnishEuroCents(s.shopping_service_prices.first_per_week)})],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(f)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(f)})}));let g=0,y=0,b=0;"1"===a&&(g=m*s.meal_service_prices.lunch,y=m<=s.meal_service_prices.max_meals_for_single_delivery_per_week?1:2,g+=y*s.meal_service_prices.delivery,b=4*g,p.push({title:this.t("meal_service_heading"),has_details:!0,details:[this.t(1===m?"receipt_meal_service_count_single":"receipt_meal_service_count_multiple",{meals_per_week:m,meals_per_month:4*m}),this.t("receipt_meal_service_price",{meal_service_price:this.calculator.formatFinnishEuroCents(s.meal_service_prices.lunch),meal_deliveries_per_week:y,meal_deliveries_per_month:4*y}),this.t(`receipt_meal_service_${y}_delivery_price`,{meal_service_delivery_price:this.calculator.formatFinnishEuroCents(s.meal_service_prices.delivery)})],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(b)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(b)})}),d.push({title:this.t("receipt_additional_details"),text:this.t("receipt_meal_service_menumat_notice",{menumat_price:this.calculator.formatFinnishEuroCents(s.meal_service_prices.menumat.lunch),menumat_device_price:this.calculator.formatFinnishEuroCents(s.meal_service_prices.menumat.device_per_day)})}));const w=_+v+f+b,j={id:this.id,title:this.t("receipt_estimate_of_payment"),total_prefix:this.t("receipt_family_estimated_payment_prefix"),total_value:this.calculator.formatFinnishEuroCents(w),total_suffix:this.t("receipt_family_estimated_payment_suffix"),total_explanation:c,hr:!0,breakdown:{title:this.t("receipt_estimate_is_based_on"),subtotals:p,additional_details:d}};return{receipt:this.calculator.getPartialRender("{{>receipt}}",j),ariaLive:this.t("receipt_aria_live",{payment:w})}},o={submit:e=>{this.calculator.clearResult(),e.preventDefault();const a=l();this.calculator.renderResult(a)},keydown:()=>{n()},change:()=>{n()},reset:()=>{window.setTimeout(n,1),this.calculator.clearResult(),this.calculator.showAriaLiveText(this.t("reset_aria_live"))}};this.calculator=window.HelfiCalculator({name:"home_care_client_fee",translations:a}),this.t=(e,a)=>this.calculator.translate(e,a),this.settings=this.calculator.parseSettings(r),this.calculator.init({id:i,formData:(()=>e.getFormData(this.id,this.t,{firstPerWeekPrice:s.shopping_service_prices.first_per_week}))(),eventHandlers:o})}}window.helfi_calculator=window.helfi_calculator||{},window.helfi_calculator.home_care_client_fee=(e,a)=>new t(e,a);t.calculateClientFee}(); \ No newline at end of file +!function(){"use strict";var e={getFormData:function(e,a,{firstPerWeekPrice:t}){return{form_id:e,has_required_fields:!0,items:[{input_integer:{id:"household_size",label:a("household_size"),unit:a("unit_person"),min:1,size:2,required:!0,helper_text:a("household_size_explanation")}},{input_float:{id:"gross_income_per_month",label:a("gross_income_per_month"),unit:a("unit_euro"),min:0,size:8,required:!1,strip:"[€eE ]",helper_text:a("gross_income_per_month_explanation")}},{input_integer:{id:"monthly_usage",label:a("monthly_usage"),unit:a("unit_hour"),min:0,max:744,size:3,required:!0,helper_text:a("monthly_usage_explanation")}},{heading:{text:a("living_at_home_heading"),level:3}},{paragraph:{text:a("living_at_home_paragraph")}},{heading:{text:a("safetyphone_heading"),level:4}},{paragraph:{text:a("safetyphone_paragraph")}},{radio:{id:"safetyphone",label:a("safetyphone"),required:!0,radio_items:[{name:"safetyphone",item_id:"safetyphone_1",label:a("yes_calculate"),value:1},{name:"safetyphone",item_id:"safetyphone_2",label:a("no"),value:2}]}},{heading:{text:a("shopping_service_heading"),level:4}},{paragraph:{text:a("shopping_service_paragraph")}},{radio:{id:"shopping_service",label:a("shopping_service"),required:!0,helper_text:a("shopping_service_per_week_explanation",{first_per_week_price:t}),radio_items:[{name:"shopping_service",item_id:"shopping_service_1",label:a("yes_calculate"),value:1},{name:"shopping_service",item_id:"shopping_service_2",label:a("no"),value:2}]}},{heading:{text:a("meal_service_heading"),level:4}},{paragraph:{text:a("meal_service_paragraph")}},{radio:{id:"meal_service",label:a("meal_service"),required:!0,radio_items:[{name:"meal_service",item_id:"meal_service_1",label:a("yes_calculate"),value:1},{name:"meal_service",item_id:"meal_service_2",label:a("no"),value:2}]}},{group:{id:"meal_service_group",hide_group:!0,items:[{input_integer:{id:"meal_service_per_week",label:a("meal_service_per_week"),unit:a("unit_amount"),min:1,max:7,size:2,required:!0,helper_text:a("meal_service_per_week_explanation")}}]}}]}}};var a={household_size:{fi:"Talouden koko",sv:"Hushållets storlek",en:"Household size"},household_size_explanation:{fi:"Samassa osoitteessa asuvien perheenjäsenten määrä.",sv:"Antal familjemedlemmar som bor på samma adress.",en:"The number of family members living at the same address."},gross_income_per_month:{fi:"Talouden bruttotulot kuukaudessa",sv:"Hushållets bruttoinkomster per månad",en:"Household's gross income per month"},gross_income_per_month_explanation:{fi:"Koko talouden yhteenlasketut ansio- ja pääomatulot ennen verojen vähentämistä. Tuloihin lasketaan palkka, eläke-, vuokra- ja korkotulot sekä eläkkeensaajan hoitotuki. Jos jätät kentän tyhjäksi, lasketaan arvio korkeimman maksun mukaisesti.",sv:"Hela hushållets sammanlagda förvärvs- och kapitalinkomster före skatteavdrag. I inkomsterna ingår lön, pensions-, hyres och ränteinkomster samt vårdbidrag för pensionstagare. Om du lämnar fältet tomt beräknas bedömningen enligt den högsta avgiften.",en:"The entire household's combined income from earnings and capital income before taxes. Income includes salary, wages, pension, rental and interest income as well as care allowance for pensioners. If you leave the field blank, the estimate will be calculated using the highest fee."},monthly_usage:{fi:"Kotihoidon tuntimäärä kuukaudessa",sv:"Antal hemvårdstimmar per månad",en:"Number of hours of home care per month"},monthly_usage_explanation:{fi:"Löydät tuntimäärän kotihoidon palvelu- ja hoitosuunnitelmasta.",sv:"Du hittar antalet timmar i hemvårdens service- och vårdplan.",en:"You can find the number of hours in the home care service and care plan."},living_at_home_heading:{fi:"Kotona asumista tukevat palvelut",sv:"Tjänster som stöder hemmaboende",en:"Services to support living at home"},living_at_home_paragraph:{fi:"Voit laskea mukaan kotona asumista tukevia palveluja. Tukipalvelut ovat maksullisia.",sv:"Du kan inkludera tjänster som stöder hemmaboende. Stödtjänsterna är avgiftsbelagda.",en:"You can include services supporting living at home. The support services are subject to a fee."},safetyphone_heading:{fi:"Turvapuhelin ja turvaranneke",sv:"Trygghetstelefon och säkerhetsarmband",en:"Safety phone and bracelet"},safetyphone_paragraph:{fi:"Turvapuhelinpalveluun kuuluu turvapuhelin ja turvaranneke, joilla saat tarvittaessa apua ympäri vuorokauden. Turvapuhelinpalvelun maksut riippuvat talouden tuloista.",sv:"I trygghetstelefontjänsten ingår en trygghetstelefon och ett säkerhetsarmband genom vilka du vid behov får hjälp dygnet runt. Avgifterna för säkerhetstelefontjänsten beror på hushållets inkomster.",en:"The safety phone service includes a safety phone and a safety bracelet to call for help around the clock. The charges for the safety phone service depend on the income of the household."},safetyphone:{fi:"Laske arvioon turvapuhelin ja turvaranneke",sv:"Inkludera en trygghetstelefon och ett säkerhetsarmband i bedömningen",en:"Include the safety phone and safety bracelet in the estimate"},yes_calculate:{fi:"Kyllä, laske arvioon.",sv:"Ja, inkludera i bedömningen.",en:"Yes, include them in the estimate."},no:{fi:"Ei",sv:"Nej",en:"No"},shopping_service_heading:{fi:"Kauppapalvelu",sv:"Butiksservice:",en:"Grocery delivery service"},shopping_service_paragraph:{fi:"Kauppapalvelussa tilaamasi ruokaostokset toimitetaan kotiovellesi. Kauppapalvelun hintaan kuuluu yksi ruokaostosten keräily ja toimitus viikossa.",sv:"Butiksservicen levererar de livsmedelsinköp som du beställer till din dörr. I priset för butiksservicen ingår samling och leverans av livsmedelsinköp en gång i veckan.",en:"The grocery delivery service delivers the groceries that you order through the service to your door. The price of the grocery delivery service includes the collection and delivery of the groceries once a week."},shopping_service:{fi:"Laske arvioon kauppapalvelu",sv:"Inkludera butiksservicen i bedömningen",en:"Include the grocery delivery service in the estimate"},shopping_service_per_week_explanation:{fi:"Yksi toimitus viikossa maksaa ${first_per_week_price} euroa.",sv:"En leverans per vecka kostar ${first_per_week_price} euro.",en:"One delivery per week costs ${first_per_week_price} euros."},meal_service_heading:{fi:"Ateriapalvelu",sv:"Måltidstjänst",en:"Meal service"},meal_service_paragraph:{fi:"Ateriapalvelussa kotiisi kuljetetaan valmiita lounasaterioita, jotka voit itse lämmittää. Ateriapalvelun hintaan kuuluu lounasaterian hinta ja kuljetusmaksu.",sv:"I måltidstjänsten levereras färdiga lunchmåltider hem till dig, som du själv kan värma upp. I priset för måltidstjänsten ingår priset för lunchmåltiderna och leveransavgiften.",en:"The meal service transports to your home ready-made lunch meals, which you can heat up yourself. The price of the meal service includes the price of a lunch meal and a delivery fee."},meal_service:{fi:"Laske arvioon ateriapalvelu",sv:"Inkludera måltidstjänsten i bedömningen",en:"Include the meal service in the estimate"},meal_service_per_week:{fi:"Aterioiden määrä viikossa",sv:"Antal måltider per vecka",en:"Number of meals per week"},meal_service_per_week_explanation:{fi:"Voit tilata ateriapalvelun hinnaston mukaisia lounasaterioita enintään 7 ateriaa viikossa.",sv:"Du kan beställa högst sju måltider per vecka enligt måltidstjänstens prislista.",en:"You can order up to 7 lunch meals according to the meal service price list per week."},receipt_estimate_of_payment:{fi:"Arvio kotihoidon asiakasmaksusta",sv:"Bedömning av klientavgiften för hemvård",en:"Estimated home care client fee"},receipt_family_estimated_payment_prefix:{fi:"Arvioitu asiakasmaksu on yhteensä",sv:"Den beräknade klientavgiften är totalt",en:"The total estimated client fee is"},receipt_family_estimated_payment_suffix:{fi:"euroa kuukaudessa.",sv:"euro per månad.",en:"euros per month."},receipt_family_estimated_payment_explanation_min:{fi:"Alle ${minimum_payment_euro} euron maksuja ei laskuteta. ",sv:"Inga avgifter under ${minimum_payment_euro} euro debiteras. ",en:"Fees of less than ${minimum_payment_euro} euros will not be charged. "},receipt_family_empty_income:{fi:"Arvio on laskettu korkeimman maksun mukaisesti, koska et täyttänyt laskuriin talouden kuukausituloja. ",sv:"Bedömningen har beräknats enligt den högsta avgiften, eftersom du inte fyllde i hushållets månadsinkomster i räknaren. ",en:"Since you did not enter the household's monthly income in the calculator, the estimate was calculated using the highest fee. "},receipt_family_estimated_payment_explanation:{fi:"Tämä arvio on suuntaa antava. Tarkka arvo lasketaan kotihoidon päätökseen.",sv:"Denna bedömning är riktgivande. Det exakta värdet beräknas för beslutet om hemvård.",en:"This estimate is indicative only. The exact value will be calculated for the home care decision."},receipt_estimate_is_based_on:{fi:"Arvio muodostuu seuraavista tiedoista:",sv:"Bedömningen görs enligt följande uppgifter:",en:"The estimate consists of the following:"},receipt_subtotal_euros_per_month:{fi:"${value} €/kk",sv:"${value} euro/månad",en:"${value} €/month"},receipt_subtotal_euros_per_month_screenreader:{fi:"${value} euroa kuukaudessa",sv:"${value} euro per månad",en:"${value} euros per month"},receipt_additional_details:{fi:"Lisähuomiot:",sv:"Ytterligare anmärkningar:",en:"Additional remarks:"},receipt_homecare_payment:{fi:"Kotihoidon asiakasmaksu",sv:"Klientavgift för hemvården",en:"Home care client fee"},receipt_homecare_payment_two_or_more:{fi:"Jos molemmat puolisot ovat jatkuvan ja säännöllisen kotihoidon kuukausimaksuasiakkaita, maksu jakautuu kummallekin palvelu- ja hoitosuunnitelman mukaisesti.",sv:"Om båda makarna betalar en månatlig avgift för kontinuerlig och regelbunden hemvård, fördelas avgiften mellan dem i enlighet med service- och vårdplanen.",en:"If both spouses are clients of continuous and regular home care with a monthly fee, the fee is divided between them in accordance with their service and care plans."},receipt_shopping_service_math_single:{fi:"1 kauppatoimitus viikossa, kuukausihintaan on laskettu 4 toimitusta.",sv:"1 butiksleverans per vecka, 4 leveranser ingår i månadspriset.",en:"1 grocery delivery per week; the monthly fee includes 4 deliveries."},receipt_shopping_service_explanation:{fi:"Kunkin viikon toimitus maksaa ${first_per_week} euroa.",sv:"Leveransen varje vecka kostar ${first_per_week} euro.",en:"The delivery each week costs ${first_per_week} euros."},receipt_aria_live:{fi:"Kotihoidon asiakasmaksun arvio on ${payment} euroa kuukaudessa, lue lisätietoja lomakkeen alta.",sv:"Den beräknade klientavgiften för hemvården är ${payment} euro per månad, mer information under blanketten.",en:"The estimated home care client fee is ${payment} euros per month; read more under the form."},receipt_meal_service_count_single:{fi:"1 lounasateria viikossa, kuukausihintaan on laskettu 4 ateriaa.",sv:"1 butiksleverans per vecka, 4 leveranser ingår i månadspriset.",en:"1 lunch meal per week; the monthly fee includes 4 meals."},receipt_meal_service_count_multiple:{fi:"${meals_per_week} lounasateriaa viikossa, kuukausihintaan on laskettu ${meals_per_month} ateriaa.",sv:"${meals_per_week} lunchmåltider per vecka, i månadspriset ingår ${meals_per_month} måltider.",en:"${meals_per_week} lunch meals per week; the monthly fee includes ${meals_per_month} meals."},receipt_meal_service_price:{fi:"Yksittäisen lounasaterian hinta on ${meal_service_price} euroa. Lämpimän aterian lisäksi voit tilata maksullisen jälkiruuan. Voit tilata ateriapalvelun hinnaston mukaisia lounasaterioita enintään 7 ateriaa viikossa, muut ateriat ovat omakustanteisia.",sv:"Priset på en lunchmåltid är ${meal_service_price} euro. Förutom en varm måltid kan du också beställa en avgiftsbelagd efterrätt. Du kan beställa högst sju måltider per vecka enligt måltidstjänstens prislista, de övriga måltiderna på egen bekostnad.",en:"The price of a single lunch meal is ${meal_service_price} euros. In addition to a hot meal, you can order a dessert for a fee. You can order up to 7 lunch meals according to the meal service price list per week; any additional meals are at your own expense."},receipt_meal_service_1_delivery_price:{fi:"Ateriat toimitetaan kotiin 1–2 kertaa viikossa. Kuljetuksia on yksi, kun tilattuja aterioita on 1–3, ja kuljetuksia on kaksi, kun aterioita on 4 tai enemmän. Hintaan on laskettu yksi kuljetusmaksu viikossa eli 4 kuljetusta kuukaudessa. Kukin kuljetus maksaa ${meal_service_delivery_price} euroa.",sv:"Måltiderna levereras hem 1–2 gånger per vecka. Det görs en leverans för 1–3 beställda måltider, och två leveranser för 4 eller fler måltider. I priset ingår en leveransavgift per vecka, med andra ord 4 leveranser per månad. Varje leverans kostar ${meal_service_delivery_price} euro.",en:"The meals will be delivered to your home once or twice a week: once a week if you order 1–3 meals, twice a week if you order 4 or more meals. The price includes one delivery fee per week, i.e. 4 deliveries per month. Each delivery costs ${meal_service_delivery_price} euros."},receipt_meal_service_2_delivery_price:{fi:"Ateriat toimitetaan kotiin 1–2 kertaa viikossa. Kuljetuksia on yksi, kun tilattuja aterioita on 1–3, ja kuljetuksia on kaksi, kun aterioita on 4 tai enemmän. Hintaan on laskettu kaksi kuljetusmaksua viikossa eli 8 kuljetusta kuukaudessa. Kukin kuljetus maksaa ${meal_service_delivery_price} euroa.",sv:"Måltiderna levereras hem 1–2 gånger per vecka. Det görs en leverans för 1–3 beställda måltider, och två leveranser för 4 eller fler måltider. I priset ingår två leveransavgifter per vecka, med andra ord 8 leveranser per månad. Varje leverans kostar ${meal_service_delivery_price} euro.",en:"The meals will be delivered to your home once or twice a week: once a week if you order 1–3 meals, twice a week if you order 4 or more meals. The price includes two delivery fees per week, i.e. 8 deliveries per month. Each delivery costs ${meal_service_delivery_price} euros."},receipt_meal_service_menumat_notice:{fi:"Ateriapalvelun sijaan voit tilata kotiisi pakastimen ja uunin yhdistelmän eli Menumat-ateria-automaatin. Menumat-palvelussa aterian hinta on ${menumat_price} euroa ja palvelumaksu on ${menumat_device_price} euroa vuorokaudessa. Aterian lisäksi voit tilata maksullisen jälkiruoan.",sv:"I stället för måltidstjänsten kan du beställa en kombination av en frys och en ugn, med andra ord en Menumat-måltidsautomat. I Menumat-servicen kostar en måltid ${menumat_price} euro och serviceavgiften är ${menumat_device_price} euro per dag. Förutom en måltid kan du också beställa en avgiftsbelagd efterrätt.",en:"Instead of the meal service, you can order a Menumat meal device, which is a combination of a freezer and an oven, to your home. In the Menumat service, the price per meal is ${menumat_price} euros, and the service fee is ${menumat_device_price} euros per day. In addition to the meal, you can order a dessert for a fee."}};class t{static calculateClientFee(e,a,t,i,r,s,n=!1){function l(e,a){const t=Object.keys(a).reverse();for(let i=0;i0&&(m=c*s.household_size_beyond_defined_multiplier_euro);const _=u.gross_income_limit+m,h=l(i,u.monthly_usage_percentage);let p=o;null!==t&&(p=h/100*(a-_));const d=r.clamp(0,p,o);return n&&console.log(`maximumPayment\t${o}`,`\ngrossIncomeLimit\t${_}`,`\npaymentPercentage\t${h}`,`\nreferencePayment\t${p}`),d}constructor(i,r){this.id=i;const s=JSON.parse(r),n=()=>{"1"===this.calculator.getFieldValue("meal_service")?this.calculator.showGroup("meal_service_group"):this.calculator.hideGroup("meal_service_group")},l=()=>{const e=[];e.push(...this.calculator.validateBasics("household_size")),e.push(...this.calculator.validateBasics("gross_income_per_month")),e.push(...this.calculator.validateBasics("monthly_usage")),e.push(...this.calculator.validateBasics("safetyphone")),e.push(...this.calculator.validateBasics("shopping_service")),e.push(...this.calculator.validateBasics("meal_service"));const a=this.calculator.getFieldValue("meal_service");if("1"===a&&e.push(...this.calculator.validateBasics("meal_service_per_week")),e.length)return{error:{title:this.t("missing_input"),message:e}};const i=Number(this.calculator.getFieldValue("household_size")),r=Number(this.calculator.getFieldValue("gross_income_per_month")),n=this.calculator.getFieldValue("gross_income_per_month"),l=Number(this.calculator.getFieldValue("monthly_usage")),o=this.calculator.getFieldValue("safetyphone"),u=this.calculator.getFieldValue("shopping_service"),m=Number(this.calculator.getFieldValue("meal_service_per_week"));let c=this.t("receipt_family_estimated_payment_explanation");const _=t.calculateClientFee(i,r,n,l,this.calculator,s,!1);null===n&&(c=this.t("receipt_family_empty_income")+c);const h={title:this.t("receipt_homecare_payment"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(_)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(_)})};i>=2&&(h.has_details=!0,h.details.push(this.t("receipt_homecare_payment_two_or_more")));const p=[h],d=[];let v=0;if("1"===o){const e=this.calculator.getMinimumRange(i,s.safetyphone_limits),a=null===n?1/0:r;v=this.calculator.getMinimumRange(a,e),p.push({title:this.t("safetyphone_heading"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(v)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(v)})})}let k=0,f=0;"1"===u&&(k=s.shopping_service_prices.first_per_week,f=4*k,p.push({title:this.t("shopping_service_heading"),has_details:!0,details:[this.t("receipt_shopping_service_math_single",{delivery_count_per_week:1,delivery_count_per_month:4}),this.t("receipt_shopping_service_explanation",{first_per_week:this.calculator.formatFinnishEuroCents(s.shopping_service_prices.first_per_week)})],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(f)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(f)})}));let g=0,y=0,b=0;"1"===a&&(g=m*s.meal_service_prices.lunch,y=m<=s.meal_service_prices.max_meals_for_single_delivery_per_week?1:2,g+=y*s.meal_service_prices.delivery,b=4*g,p.push({title:this.t("meal_service_heading"),has_details:!0,details:[this.t(1===m?"receipt_meal_service_count_single":"receipt_meal_service_count_multiple",{meals_per_week:m,meals_per_month:4*m}),this.t("receipt_meal_service_price",{meal_service_price:this.calculator.formatFinnishEuroCents(s.meal_service_prices.lunch),meal_deliveries_per_week:y,meal_deliveries_per_month:4*y}),this.t(`receipt_meal_service_${y}_delivery_price`,{meal_service_delivery_price:this.calculator.formatFinnishEuroCents(s.meal_service_prices.delivery)})],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(b)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(b)})}),d.push({title:this.t("receipt_additional_details"),text:this.t("receipt_meal_service_menumat_notice",{menumat_price:this.calculator.formatFinnishEuroCents(s.meal_service_prices.menumat.lunch),menumat_device_price:this.calculator.formatFinnishEuroCents(s.meal_service_prices.menumat.device_per_day)})}));const w=_+v+f+b,j={id:this.id,title:this.t("receipt_estimate_of_payment"),total_prefix:this.t("receipt_family_estimated_payment_prefix"),total_value:this.calculator.formatFinnishEuroCents(w),total_suffix:this.t("receipt_family_estimated_payment_suffix"),total_explanation:c,hr:!0,breakdown:{title:this.t("receipt_estimate_is_based_on"),subtotals:p,additional_details:d}};return{receipt:this.calculator.getPartialRender("{{>receipt}}",j),ariaLive:this.t("receipt_aria_live",{payment:w})}},o={submit:e=>{this.calculator.clearResult(),e.preventDefault();const a=l();this.calculator.renderResult(a)},keydown:()=>{n()},change:()=>{n()},reset:()=>{window.setTimeout(n,1),this.calculator.clearResult(),this.calculator.showAriaLiveText(this.t("reset_aria_live"))}};this.calculator=window.HelfiCalculator({name:"home_care_client_fee",translations:a}),this.t=(e,a)=>this.calculator.translate(e,a),this.settings=this.calculator.parseSettings(r),this.calculator.init({id:i,formData:(()=>e.getFormData(this.id,this.t,{firstPerWeekPrice:s.shopping_service_prices.first_per_week}))(),eventHandlers:o})}}window.helfi_calculator=window.helfi_calculator||{},window.helfi_calculator.home_care_client_fee=(e,a)=>new t(e,a);t.calculateClientFee}(); \ No newline at end of file diff --git a/dist/js/home_care_service_voucher.min.js b/dist/js/home_care_service_voucher.min.js index e38c43beb..156f81707 100644 --- a/dist/js/home_care_service_voucher.min.js +++ b/dist/js/home_care_service_voucher.min.js @@ -1 +1 @@ -!function(){"use strict";var e={4270:function(e,t,a){a.d(t,{Z:function(){return n}});var i={getFormData:function(e,t,{firstPerWeekPrice:a}){return{form_id:e,has_required_fields:!0,items:[{input_integer:{id:"household_size",label:t("household_size"),unit:t("unit_person"),min:1,size:2,required:!0,helper_text:t("household_size_explanation")}},{input_float:{id:"gross_income_per_month",label:t("gross_income_per_month"),unit:t("unit_euro"),min:0,size:8,required:!1,strip:"[€eE ]",helper_text:t("gross_income_per_month_explanation")}},{input_integer:{id:"monthly_usage",label:t("monthly_usage"),unit:t("unit_hour"),min:0,max:744,size:3,required:!0,helper_text:t("monthly_usage_explanation")}},{heading:{text:t("living_at_home_heading"),level:3}},{paragraph:{text:t("living_at_home_paragraph")}},{heading:{text:t("safetyphone_heading"),level:4}},{paragraph:{text:t("safetyphone_paragraph")}},{radio:{id:"safetyphone",label:t("safetyphone"),required:!0,radio_items:[{name:"safetyphone",item_id:"safetyphone_1",label:t("yes_calculate"),value:1},{name:"safetyphone",item_id:"safetyphone_2",label:t("no"),value:2}]}},{heading:{text:t("shopping_service_heading"),level:4}},{paragraph:{text:t("shopping_service_paragraph")}},{radio:{id:"shopping_service",label:t("shopping_service"),required:!0,helper_text:t("shopping_service_per_week_explanation",{first_per_week_price:a}),radio_items:[{name:"shopping_service",item_id:"shopping_service_1",label:t("yes_calculate"),value:1},{name:"shopping_service",item_id:"shopping_service_2",label:t("no"),value:2}]}},{heading:{text:t("meal_service_heading"),level:4}},{paragraph:{text:t("meal_service_paragraph")}},{radio:{id:"meal_service",label:t("meal_service"),required:!0,radio_items:[{name:"meal_service",item_id:"meal_service_1",label:t("yes_calculate"),value:1},{name:"meal_service",item_id:"meal_service_2",label:t("no"),value:2}]}},{group:{id:"meal_service_group",hide_group:!0,items:[{input_integer:{id:"meal_service_per_week",label:t("meal_service_per_week"),unit:t("unit_amount"),min:1,max:7,size:2,required:!0,helper_text:t("meal_service_per_week_explanation")}}]}}]}}};var s={household_size:{fi:"Talouden koko",sv:"Hushållets storlek",en:"Household size"},household_size_explanation:{fi:"Samassa osoitteessa asuvien perheenjäsenten määrä.",sv:"Antal familjemedlemmar som bor på samma adress.",en:"The number of family members living at the same address."},gross_income_per_month:{fi:"Talouden bruttotulot kuukaudessa",sv:"Hushållets bruttoinkomster per månad",en:"Household's gross income per month"},gross_income_per_month_explanation:{fi:"Koko talouden yhteenlasketut ansio- ja pääomatulot ennen verojen vähentämistä. Tuloihin lasketaan palkka, eläke-, vuokra- ja korkotulot sekä eläkkeensaajan hoitotuki. Jos jätät kentän tyhjäksi, lasketaan arvio korkeimman maksun mukaisesti.",sv:"Hela hushållets sammanlagda förvärvs- och kapitalinkomster före skatteavdrag. I inkomsterna ingår lön, pensions-, hyres och ränteinkomster samt vårdbidrag för pensionstagare. Om du lämnar fältet tomt beräknas bedömningen enligt den högsta avgiften.",en:"The entire household's combined income from earnings and capital income before taxes. Income includes salary, wages, pension, rental and interest income as well as care allowance for pensioners. If you leave the field blank, the estimate will be calculated using the highest fee."},monthly_usage:{fi:"Kotihoidon tuntimäärä kuukaudessa",sv:"Antal hemvårdstimmar per månad",en:"Number of hours of home care per month"},monthly_usage_explanation:{fi:"Löydät tuntimäärän kotihoidon palvelu- ja hoitosuunnitelmasta.",sv:"Du hittar antalet timmar i hemvårdens service- och vårdplan.",en:"You can find the number of hours in the home care service and care plan."},living_at_home_heading:{fi:"Kotona asumista tukevat palvelut",sv:"Tjänster som stöder hemmaboende",en:"Services to support living at home"},living_at_home_paragraph:{fi:"Voit laskea mukaan kotona asumista tukevia palveluja. Tukipalvelut ovat maksullisia.",sv:"Du kan inkludera tjänster som stöder hemmaboende. Stödtjänsterna är avgiftsbelagda.",en:"You can include services supporting living at home. The support services are subject to a fee."},safetyphone_heading:{fi:"Turvapuhelin ja turvaranneke",sv:"Trygghetstelefon och säkerhetsarmband",en:"Safety phone and bracelet"},safetyphone_paragraph:{fi:"Turvapuhelinpalveluun kuuluu turvapuhelin ja turvaranneke, joilla saat tarvittaessa apua ympäri vuorokauden. Turvapuhelinpalvelun maksut riippuvat talouden tuloista.",sv:"I trygghetstelefontjänsten ingår en trygghetstelefon och ett säkerhetsarmband genom vilka du vid behov får hjälp dygnet runt. Avgifterna för säkerhetstelefontjänsten beror på hushållets inkomster.",en:"The safety phone service includes a safety phone and a safety bracelet to call for help around the clock. The charges for the safety phone service depend on the income of the household."},safetyphone:{fi:"Laske arvioon turvapuhelin ja turvaranneke",sv:"Inkludera en trygghetstelefon och ett säkerhetsarmband i bedömningen",en:"Include the safety phone and safety bracelet in the estimate"},yes_calculate:{fi:"Kyllä, laske arvioon.",sv:"Ja, inkludera i bedömningen.",en:"Yes, include them in the estimate."},no:{fi:"Ei",sv:"Nej",en:"No"},shopping_service_heading:{fi:"Kauppapalvelu",sv:"Butiksservice:",en:"Grocery delivery service"},shopping_service_paragraph:{fi:"Kauppapalvelussa tilaamasi ruokaostokset toimitetaan kotiovellesi. Kauppapalvelun hintaan kuuluu yksi ruokaostosten keräily ja toimitus viikossa.",sv:"I butiksservicen levereras de livsmedelsinköp som du beställer till din dörr. I priset för butiksservicen ingår en insamling och leverans av livsmedel per vecka.",en:"The grocery delivery service delivers the groceries that you order through the service to your door. The price of the grocery delivery service includes one collection and delivery of the groceries per week."},shopping_service:{fi:"Laske arvioon kauppapalvelu",sv:"Inkludera butiksservicen i bedömningen",en:"Include the grocery delivery service in the estimate"},shopping_service_per_week_explanation:{fi:"Yksi toimitus viikossa maksaa ${first_per_week_price} euroa.",sv:"En leverans per vecka kostar ${first_per_week_price} euro.",en:"One delivery per week costs ${first_per_week_price} euros."},meal_service_heading:{fi:"Ateriapalvelu",sv:"Måltidstjänst",en:"Meal service"},meal_service_paragraph:{fi:"Ateriapalvelussa kotiisi kuljetetaan valmiita lounasaterioita, jotka voit itse lämmittää. Ateriapalvelun hintaan kuuluu lounasaterian hinta ja kuljetusmaksu.",sv:"I måltidstjänsten levereras färdiga lunchmåltider hem till dig, som du själv kan värma upp. I priset för måltidstjänsten ingår priset för lunchmåltiderna och leveransavgiften.",en:"The meal service transports to your home ready-made lunch meals, which you can heat up yourself. The price of the meal service includes the price of a lunch meal and a delivery fee."},meal_service:{fi:"Laske arvioon ateriapalvelu",sv:"Inkludera måltidstjänsten i bedömningen",en:"Include the meal service in the estimate"},meal_service_per_week:{fi:"Aterioiden määrä viikossa",sv:"Antal måltider per vecka",en:"Number of meals per week"},meal_service_per_week_explanation:{fi:"Voit tilata ateriapalvelun hinnaston mukaisia lounasaterioita enintään 7 ateriaa viikossa.",sv:"Du kan beställa högst sju måltider per vecka enligt måltidstjänstens prislista.",en:"You can order up to 7 lunch meals according to the meal service price list per week."},receipt_estimate_of_payment:{fi:"Arvio kotihoidon asiakasmaksusta",sv:"Bedömning av klientavgiften för hemvård",en:"Estimated home care client fee"},receipt_family_estimated_payment_prefix:{fi:"Arvioitu asiakasmaksu on yhteensä",sv:"Den beräknade klientavgiften är totalt",en:"The total estimated client fee is"},receipt_family_estimated_payment_suffix:{fi:"euroa kuukaudessa.",sv:"euro per månad.",en:"euros per month."},receipt_family_estimated_payment_explanation_min:{fi:"Alle ${minimum_payment_euro} euron maksuja ei laskuteta. ",sv:"Inga avgifter under ${minimum_payment_euro} euro debiteras. ",en:"Fees of less than ${minimum_payment_euro} euros will not be charged. "},receipt_family_empty_income:{fi:"Arvio on laskettu korkeimman maksun mukaisesti, koska et täyttänyt laskuriin talouden kuukausituloja. ",sv:"Bedömningen har beräknats enligt den högsta avgiften, eftersom du inte fyllde i hushållets månadsinkomster i räknaren. ",en:"Since you did not enter the household's monthly income in the calculator, the estimate was calculated using the highest fee. "},receipt_family_estimated_payment_explanation:{fi:"Tämä arvio on suuntaa antava. Tarkka arvo lasketaan kotihoidon päätökseen.",sv:"Denna bedömning är riktgivande. Det exakta värdet beräknas för beslutet om hemvård.",en:"This estimate is indicative only. The exact value will be calculated for the home care decision."},receipt_estimate_is_based_on:{fi:"Arvio muodostuu seuraavista tiedoista:",sv:"Bedömningen görs enligt följande uppgifter:",en:"The estimate consists of the following:"},receipt_subtotal_euros_per_month:{fi:"${value} €/kk",sv:"${value} euro/månad",en:"${value} €/month"},receipt_subtotal_euros_per_month_screenreader:{fi:"${value} euroa kuukaudessa",sv:"${value} euro per månad",en:"${value} euros per month"},receipt_additional_details:{fi:"Lisähuomiot:",sv:"Ytterligare anmärkningar:",en:"Additional remarks:"},receipt_homecare_payment:{fi:"Kotihoidon asiakasmaksu",sv:"Klientavgift för hemvården",en:"Home care client fee"},receipt_homecare_payment_two_or_more:{fi:"Jos molemmat puolisot ovat jatkuvan ja säännöllisen kotihoidon kuukausimaksuasiakkaita, maksu jakautuu kummallekin palvelu- ja hoitosuunnitelman mukaisesti.",sv:"Om båda makarna betalar en månatlig avgift för kontinuerlig och regelbunden hemvård, fördelas avgiften mellan dem i enlighet med service- och vårdplanen.",en:"If both spouses are clients of continuous and regular home care with a monthly fee, the fee is divided between them in accordance with their service and care plans."},receipt_shopping_service_math_single:{fi:"1 kauppatoimitus viikossa, kuukausihintaan on laskettu 4 toimitusta.",sv:"1 butiksleverans per vecka, 4 leveranser ingår i månadspriset.",en:"1 grocery delivery per week; the monthly fee includes 4 deliveries."},receipt_shopping_service_math_multiple:{fi:"1 kauppatoimitus viikossa, kuukausihintaan on laskettu 4 toimitusta.",sv:"1 butiksleveranser per vecka, i månadspriset ingår 4 leveranser.",en:"1 grocery deliveries per week; the monthly fee includes 4 deliveries."},receipt_shopping_service_explanation:{fi:"Kunkin viikon toimitus maksaa ${first_per_week} euroa.",sv:"Leveransen varje vecka kostar ${first_per_week} euro.",en:"The delivery each week costs ${first_per_week} euros."},receipt_aria_live:{fi:"Kotihoidon asiakasmaksun arvio on ${payment} euroa kuukaudessa, lue lisätietoja lomakkeen alta.",sv:"Den beräknade klientavgiften för hemvården är ${payment} euro per månad, mer information under blanketten.",en:"The estimated home care client fee is ${payment} euros per month; read more under the form."},receipt_meal_service_count_single:{fi:"1 lounasateria viikossa, kuukausihintaan on laskettu 4 ateriaa.",sv:"1 butiksleverans per vecka, 4 leveranser ingår i månadspriset.",en:"1 lunch meal per week; the monthly fee includes 4 meals."},receipt_meal_service_count_multiple:{fi:"${meals_per_week} lounasateriaa viikossa, kuukausihintaan on laskettu ${meals_per_month} ateriaa.",sv:"${meals_per_week} lunchmåltider per vecka, i månadspriset ingår ${meals_per_month} måltider.",en:"${meals_per_week} lunch meals per week; the monthly fee includes ${meals_per_month} meals."},receipt_meal_service_price:{fi:"Yksittäisen lounasaterian hinta on ${meal_service_price} euroa. Lämpimän aterian lisäksi voit tilata maksullisen jälkiruuan. Voit tilata ateriapalvelun hinnaston mukaisia lounasaterioita enintään 7 ateriaa viikossa, muut ateriat ovat omakustanteisia.",sv:"Priset på en lunchmåltid är ${meal_service_price} euro. Förutom en varm måltid kan du också beställa en avgiftsbelagd efterrätt. Du kan beställa högst sju måltider per vecka enligt måltidstjänstens prislista, de övriga måltiderna på egen bekostnad.",en:"The price of a single lunch meal is ${meal_service_price} euros. In addition to a hot meal, you can order a dessert for a fee. You can order up to 7 lunch meals according to the meal service price list per week; any additional meals are at your own expense."},receipt_meal_service_1_delivery_price:{fi:"Ateriat toimitetaan kotiin 1–2 kertaa viikossa. Kuljetuksia on yksi, kun tilattuja aterioita on 1–3, ja kuljetuksia on kaksi, kun aterioita on 4 tai enemmän. Hintaan on laskettu yksi kuljetusmaksu viikossa eli 4 kuljetusta kuukaudessa. Kukin kuljetus maksaa ${meal_service_delivery_price} euroa.",sv:"Måltiderna levereras hem 1–2 gånger per vecka. Det görs en leverans för 1–3 beställda måltider, och två leveranser för 4 eller fler måltider. I priset ingår en leveransavgift per vecka, med andra ord 4 leveranser per månad. Varje leverans kostar ${meal_service_delivery_price} euro.",en:"The meals will be delivered to your home once or twice a week: once a week if you order 1–3 meals, twice a week if you order 4 or more meals. The price includes one delivery fee per week, i.e. 4 deliveries per month. Each delivery costs ${meal_service_delivery_price} euros."},receipt_meal_service_2_delivery_price:{fi:"Ateriat toimitetaan kotiin 1–2 kertaa viikossa. Kuljetuksia on yksi, kun tilattuja aterioita on 1–3, ja kuljetuksia on kaksi, kun aterioita on 4 tai enemmän. Hintaan on laskettu kaksi kuljetusmaksua viikossa eli 8 kuljetusta kuukaudessa. Kukin kuljetus maksaa ${meal_service_delivery_price} euroa.",sv:"Måltiderna levereras hem 1–2 gånger per vecka. Det görs en leverans för 1–3 beställda måltider, och två leveranser för 4 eller fler måltider. I priset ingår två leveransavgifter per vecka, med andra ord 8 leveranser per månad. Varje leverans kostar ${meal_service_delivery_price} euro.",en:"The meals will be delivered to your home once or twice a week: once a week if you order 1–3 meals, twice a week if you order 4 or more meals. The price includes two delivery fees per week, i.e. 8 deliveries per month. Each delivery costs ${meal_service_delivery_price} euros."},receipt_meal_service_menumat_notice:{fi:"Ateriapalvelun sijaan voit tilata kotiisi pakastimen ja uunin yhdistelmän eli Menumat-ateria-automaatin. Menumat-palvelussa aterian hinta on ${menumat_price} euroa ja palvelumaksu on ${menumat_device_price} euroa vuorokaudessa. Aterian lisäksi voit tilata maksullisen jälkiruoan.",sv:"I stället för måltidstjänsten kan du beställa en kombination av en frys och en ugn, med andra ord en Menumat-måltidsautomat. I Menumat-servicen kostar en måltid ${menumat_price} euro och serviceavgiften är ${menumat_device_price} euro per dag. Förutom en måltid kan du också beställa en avgiftsbelagd efterrätt.",en:"Instead of the meal service, you can order a Menumat meal device, which is a combination of a freezer and an oven, to your home. In the Menumat service, the price per meal is ${menumat_price} euros, and the service fee is ${menumat_device_price} euros per day. In addition to the meal, you can order a dessert for a fee."}};class r{static calculateClientFee(e,t,a,i,s,r,n=!1){function l(e,t){const a=Object.keys(t).reverse();for(let i=0;i0&&(m=c*r.household_size_beyond_defined_multiplier_euro);const _=u.gross_income_limit+m,h=l(i,u.monthly_usage_percentage);let p=o;null!==a&&(p=h/100*(t-_));const d=s.clamp(0,p,o);return n&&console.log(`maximumPayment\t${o}`,`\ngrossIncomeLimit\t${_}`,`\npaymentPercentage\t${h}`,`\nreferencePayment\t${p}`),d}constructor(e,t){this.id=e;const a=JSON.parse(t),n=()=>{"1"===this.calculator.getFieldValue("meal_service")?this.calculator.showGroup("meal_service_group"):this.calculator.hideGroup("meal_service_group")},l=()=>{const e=[];e.push(...this.calculator.validateBasics("household_size")),e.push(...this.calculator.validateBasics("gross_income_per_month")),e.push(...this.calculator.validateBasics("monthly_usage")),e.push(...this.calculator.validateBasics("safetyphone")),e.push(...this.calculator.validateBasics("shopping_service")),e.push(...this.calculator.validateBasics("meal_service"));const t=this.calculator.getFieldValue("meal_service");if("1"===t&&e.push(...this.calculator.validateBasics("meal_service_per_week")),e.length)return{error:{title:this.t("missing_input"),message:e}};const i=Number(this.calculator.getFieldValue("household_size")),s=Number(this.calculator.getFieldValue("gross_income_per_month")),n=this.calculator.getFieldValue("gross_income_per_month"),l=Number(this.calculator.getFieldValue("monthly_usage")),o=this.calculator.getFieldValue("safetyphone"),u=this.calculator.getFieldValue("shopping_service"),m=Number(this.calculator.getFieldValue("meal_service_per_week"));let c=this.t("receipt_family_estimated_payment_explanation");const _=r.calculateClientFee(i,s,n,l,this.calculator,a,!1);null===n&&(c=this.t("receipt_family_empty_income")+c);const h={title:this.t("receipt_homecare_payment"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(_)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(_)})};i>=2&&(h.has_details=!0,h.details.push(this.t("receipt_homecare_payment_two_or_more")));const p=[h],d=[];let v=0;if("1"===o){const e=this.calculator.getMinimumRange(i,a.safetyphone_limits),t=null===n?1/0:s;v=this.calculator.getMinimumRange(t,e),p.push({title:this.t("safetyphone_heading"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(v)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(v)})})}let k=0,f=0;"1"===u&&(k=a.shopping_service_prices.first_per_week,f=4*k,p.push({title:this.t("shopping_service_heading"),has_details:!0,details:[this.t("receipt_shopping_service_math_single",{delivery_count_per_week:1,delivery_count_per_month:4}),this.t("receipt_shopping_service_explanation",{first_per_week:this.calculator.formatFinnishEuroCents(a.shopping_service_prices.first_per_week)})],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(f)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(f)})}));let g=0,y=0,b=0;"1"===t&&(g=m*a.meal_service_prices.lunch,y=m<=a.meal_service_prices.max_meals_for_single_delivery_per_week?1:2,g+=y*a.meal_service_prices.delivery,b=4*g,p.push({title:this.t("meal_service_heading"),has_details:!0,details:[this.t(1===m?"receipt_meal_service_count_single":"receipt_meal_service_count_multiple",{meals_per_week:m,meals_per_month:4*m}),this.t("receipt_meal_service_price",{meal_service_price:this.calculator.formatFinnishEuroCents(a.meal_service_prices.lunch),meal_deliveries_per_week:y,meal_deliveries_per_month:4*y}),this.t(`receipt_meal_service_${y}_delivery_price`,{meal_service_delivery_price:this.calculator.formatFinnishEuroCents(a.meal_service_prices.delivery)})],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(b)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(b)})}),d.push({title:this.t("receipt_additional_details"),text:this.t("receipt_meal_service_menumat_notice",{menumat_price:this.calculator.formatFinnishEuroCents(a.meal_service_prices.menumat.lunch),menumat_device_price:this.calculator.formatFinnishEuroCents(a.meal_service_prices.menumat.device_per_day)})}));const w=_+v+f+b,j={id:this.id,title:this.t("receipt_estimate_of_payment"),total_prefix:this.t("receipt_family_estimated_payment_prefix"),total_value:this.calculator.formatFinnishEuroCents(w),total_suffix:this.t("receipt_family_estimated_payment_suffix"),total_explanation:c,hr:!0,breakdown:{title:this.t("receipt_estimate_is_based_on"),subtotals:p,additional_details:d}};return{receipt:this.calculator.getPartialRender("{{>receipt}}",j),ariaLive:this.t("receipt_aria_live",{payment:w})}},o={submit:e=>{this.calculator.clearResult(),e.preventDefault();const t=l();this.calculator.renderResult(t)},keydown:()=>{n()},change:()=>{n()},reset:()=>{window.setTimeout(n,1),this.calculator.clearResult(),this.calculator.showAriaLiveText(this.t("reset_aria_live"))}};this.calculator=window.HelfiCalculator({name:"home_care_client_fee",translations:s}),this.t=(e,t)=>this.calculator.translate(e,t),this.settings=this.calculator.parseSettings(t),this.calculator.init({id:e,formData:(()=>i.getFormData(this.id,this.t,{firstPerWeekPrice:a.shopping_service_prices.first_per_week}))(),eventHandlers:o})}}window.helfi_calculator=window.helfi_calculator||{},window.helfi_calculator.home_care_client_fee=(e,t)=>new r(e,t);var n=r.calculateClientFee}},t={};function a(i){var s=t[i];if(void 0!==s)return s.exports;var r=t[i]={exports:{}};return e[i](r,r.exports,a),r.exports}a.d=function(e,t){for(var i in t)a.o(t,i)&&!a.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={getFormData:function(e,t){return{form_id:e,has_required_fields:!0,items:[{input_integer:{id:"household_size",label:t("household_size"),unit:t("unit_person"),min:1,size:2,required:!0,helper_text:t("household_size_explanation")}},{input_float:{id:"gross_income_per_month",label:t("gross_income_per_month"),unit:t("unit_euro"),min:0,size:8,required:!1,strip:"[€eE ]",helper_text:t("gross_income_per_month_explanation")}},{input_integer:{id:"monthly_usage",label:t("monthly_usage"),unit:t("unit_hour"),min:0,max:744,size:3,required:!0,helper_text:t("monthly_usage_explanation")}},{input_float:{id:"service_provider_price",label:t("service_provider_price"),unit:t("unit_euro"),min:0,size:6,required:!0,strip:"[€eE ]",helper_text:t("service_provider_price_explanation")}}]}}};var t={household_size:{fi:"Talouden koko",sv:"Hushållets storlek",en:"Household size"},household_size_explanation:{fi:"Samassa osoitteessa asuvien perheenjäsenten määrä.",sv:"Antal familjemedlemmar som bor på samma adress.",en:"The number of family members living at the same address."},gross_income_per_month:{fi:"Talouden bruttotulot kuukaudessa",sv:"Hushållets bruttoinkomster per månad",en:"Household's gross income per month"},gross_income_per_month_explanation:{fi:"Koko talouden yhteenlasketut ansio- ja pääomatulot ennen verojen vähentämistä. Tuloihin lasketaan palkka, eläke-, vuokra- ja korkotulot sekä eläkkeensaajan hoitotuki. Jos jätät kentän tyhjäksi, lasketaan arvio korkeimman tulorajan mukaisesti.",sv:"Hela hushållets sammanlagda förvärvs- och kapitalinkomster före skatteavdrag. I inkomsterna ingår lön, pensions-, hyres och ränteinkomster samt vårdbidrag för pensionstagare. Om du lämnar fältet tomt beräknas bedömningen enligt den högsta inkomstgränsen.",en:"The entire household's combined income from earnings and capital income before taxes. Income includes salary, wages, pension, rental and interest income as well as care allowance for pensioners. If you leave the field blank, the estimate will be calculated using the highest income threshold."},monthly_usage:{fi:"Kotihoidon tuntimäärä kuukaudessa",sv:"Antal hemvårdstimmar per månad",en:"Number of hours of home care per month"},monthly_usage_explanation:{fi:"Löydät tuntimäärän kotihoidon palvelu- ja hoitosuunnitelmasta.",sv:"Du hittar antalet timmar i hemvårdens service- och vårdplan.",en:"You can find the number of hours in the home care service and care plan."},service_provider_price:{fi:"Palveluntuottajan tuntihinta",sv:"Serviceproducentens timpris",en:"Service provider's hourly rate"},service_provider_price_explanation:{fi:"Valitsemasi palveluntuottajan tuntihinta kotihoidon palveluista.",sv:"Timpris för den serviceproducent som du väljer för hemvård.",en:"The service provider's hourly rate for the home care services of your choice."},receipt_estimate_of_payment:{fi:"Arvio palvelusetelillä hankitusta kotihoidosta",sv:"Bedömning av den hemvård som förvärvats med servicesedeln",en:"Estimate of home care acquired with a service voucher"},receipt_family_estimated_payment_prefix:{fi:"Omavastuuosuus eli sinulle maksettavaksi jäävä asiakasmaksu on",sv:"Självriskandelen, det vill säga den klientavgift som återstår att betala hos dig, är",en:"The copayment, i.e. the client fee payable by you, is"},receipt_family_estimated_payment_suffix:{fi:"euroa kuukaudessa.",sv:"euro per månad.",en:"euros per month."},receipt_family_empty_income:{fi:"Arvio on laskettu korkeimman maksun mukaisesti, koska et täyttänyt laskuriin talouden kuukausituloja. ",sv:"Bedömningen har beräknats enligt den högsta avgiften eftersom du inte fyllde i hushållets månadsinkomster i räknaren. ",en:"Since you did not enter the household's monthly income in the calculator, the estimate was calculated using the highest fee. "},receipt_family_estimated_payment_explanation:{fi:"Tämä arvio on suuntaa antava. Tarkka arvo lasketaan kotihoidon päätökseen.",sv:"Denna bedömning är riktgivande. Det exakta värdet beräknas för beslutet om hemvård.",en:"This estimate is indicative only. The exact value will be calculated for the home care decision."},receipt_estimate_is_based_on:{fi:"Arvio muodostuu seuraavasti:",sv:"Bedömningen görs enligt följande:",en:"The estimate consists of the following:"},receipt_subtotal_euros_per_month:{fi:"${value} €/kk",sv:"${value} euro/månad",en:"${value} €/month"},receipt_subtotal_euros_per_month_screenreader:{fi:"${value} euroa kuukaudessa",sv:"${value} euro per månad",en:"${value} euros per month"},receipt_subtotal_euros_per_hour:{fi:"${value} €/tunti",sv:"${value} euro/timme",en:"${value} €/hour"},receipt_subtotal_euros_per_hour_screenreader:{fi:"${value} euroa per tunti",sv:"${value} euro per timme",en:"${value} euros per hour"},receipt_homecare_total:{fi:"Palvelusetelillä hankittavan palvelun kokonaiskustannus",sv:"Total kostnad för tjänsten som köpts med servicesedeln",en:"Total cost of the service to be procured with the service voucher"},receipt_city_pays_to_provider:{fi:"Kaupunki maksaa palvelusetelillä palveluntuottajalle",sv:"Staden betalar serviceproducenten med en servicesedel",en:"The city pays the service provider with the service voucher"},receipt_voucher_value:{fi:"Palvelusetelisi arvo",sv:"Värde på din servicesedel",en:"Your service voucher's value"},receipt_client_self_payment:{fi:"Omavastuuosuus eli sinulle maksettavaksi jäävä asiakasmaksu",sv:"Självriskandel, det vill säga den klientavgift som återstår för dig att betala ",en:"The copayment, i.e. the client fee payable by you"},receipt_additional_details:{fi:"Lisähuomiot:",sv:"Ytterligare anmärkningar:",en:"Additional remarks:"},receipt_included_homecare:{fi:"Jos palvelu - ja hoitosuunnitelmassasi on myös kaupungin tuottamaa kotihoitoa, siitä laskutetaan erikseen kotihoidon asiakasmaksun mukaisesti.",sv:"Om din service- och vårdplan även omfattar hemvård som tillhandahålls av staden debiteras den separat i enlighet med klientavgiften för hemvård.",en:"If your service and care plan also includes home care provided by the city, it will be charged separately in accordance with the home care client fee."},receipt_estimate_if_done_by_city:{fi:"Arvio kaupungin kotihoidon asiakasmaksusta:",sv:"Bedömning av klientavgiften för stadens hemvård:",en:"Estimated client fee of the city's home care:"},receipt_when_done_by_city:{fi:"Kaupungin kotihoidon tuottamana palvelu maksaisi",sv:"Om staden producerade tjänsten skulle den kosta",en:"Provided by the city's home care, the service would cost"},receipt_aria_live:{fi:"Omavastuuosuus eli sinulle maksettavaksi jäävä asiakasmaksu on ${payment} euroa kuukaudessa, lue lisätietoja lomakkeen alta.",sv:"Självriskandelen, det vill säga den klientavgift som du ska betala för, är ${payment} euro per månad, se mer information under blanketten.",en:"The copayment, i.e. the client fee payable by you, is ${payment} euros per month; read more under the form."}},i=a(4270);class s{constructor(a,s){this.id=a;const r=JSON.parse(s),n=JSON.parse(drupalSettings.home_care_client_fee),l=()=>{};const o=()=>{const e=[];if(e.push(...this.calculator.validateBasics("household_size")),e.push(...this.calculator.validateBasics("gross_income_per_month")),e.push(...this.calculator.validateBasics("monthly_usage")),e.push(...this.calculator.validateBasics("service_provider_price")),e.length)return{error:{title:this.t("missing_input"),message:e}};const t=Number(this.calculator.getFieldValue("household_size")),a=Number(this.calculator.getFieldValue("gross_income_per_month")),s=this.calculator.getFieldValue("gross_income_per_month"),l=Number(this.calculator.getFieldValue("monthly_usage")),o=Number(this.calculator.getFieldValue("service_provider_price")),{limit:u,percent:m}=function(e,t,a,i){const s=i.getMinimumRange(e,a.household_size);let r=0;const n=e-Number(Object.keys(a.household_size).at(-1));n>0&&(r=n*a.household_size_beyond_defined_multiplier_euro);const l=i.getMinimumRange(e,t.household_size);let o=0;const u=e-Number(Object.keys(t.household_size).at(-1));return u>0&&(o=u*t.household_size_beyond_defined_multiplier_percent),{limit:s.gross_income_limit+r,percent:l.percent+o}}(t,r,n,this.calculator),c=a-u,_=Math.round(100*(null!==s?this.calculator.clamp(r.voucher_limits.min,r.voucher_limits.max-c*(m/100)/r.voucher_divisor,r.voucher_limits.max):r.voucher_limits.min))/100,h=l*_,p=Math.max(0,o-_)*l,d=(0,i.Z)(t,a,s,l,this.calculator,n,!1);let v=this.t("receipt_family_estimated_payment_explanation");const k=[{title:this.t("receipt_additional_details"),text:null}];null===s&&(v=this.t("receipt_family_empty_income")+v);const f=[];f.push({title:this.t("receipt_homecare_total"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(l*o)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(l*o)})},{title:this.t("receipt_city_pays_to_provider"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(h)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(h)})},{title:this.t("receipt_voucher_value"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_hour",{value:this.calculator.formatFinnishEuroCents(_)}),sum_screenreader:this.t("receipt_subtotal_euros_per_hour_screenreader",{value:this.calculator.formatEuroCents(_)})}),k.push({title:null,text:this.t("receipt_included_homecare")});const g={id:this.id,title:this.t("receipt_estimate_of_payment"),total_prefix:this.t("receipt_family_estimated_payment_prefix"),total_value:this.calculator.formatFinnishEuroCents(p),total_suffix:this.t("receipt_family_estimated_payment_suffix"),total_explanation:v,hr:!0,breakdown:[{title:this.t("receipt_estimate_is_based_on"),subtotals:f,additional_details:k},{title:this.t("receipt_estimate_if_done_by_city"),subtotals:[{title:this.t("receipt_when_done_by_city"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(d)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(d)})}],additional_details:null}]};return{receipt:this.calculator.getPartialRender("{{>receipt}}",g),ariaLive:this.t("receipt_aria_live",{payment:this.calculator.formatEuroCents(p)})}},u={submit:e=>{this.calculator.clearResult(),e.preventDefault();const t=o();this.calculator.renderResult(t)},keydown:()=>{},change:()=>{},reset:()=>{window.setTimeout(l,1),this.calculator.clearResult(),this.calculator.showAriaLiveText(this.t("reset_aria_live"))}};this.calculator=window.HelfiCalculator({name:"home_care_service_voucher",translations:t}),this.t=(e,t)=>this.calculator.translate(e,t),this.settings=this.calculator.parseSettings(s),this.calculator.init({id:a,formData:(()=>e.getFormData(this.id,this.t))(),eventHandlers:u})}}window.helfi_calculator=window.helfi_calculator||{},window.helfi_calculator.home_care_service_voucher=(e,t)=>new s(e,t)}()}(); \ No newline at end of file +!function(){"use strict";var e={4270:function(e,t,a){a.d(t,{Z:function(){return n}});var i={getFormData:function(e,t,{firstPerWeekPrice:a}){return{form_id:e,has_required_fields:!0,items:[{input_integer:{id:"household_size",label:t("household_size"),unit:t("unit_person"),min:1,size:2,required:!0,helper_text:t("household_size_explanation")}},{input_float:{id:"gross_income_per_month",label:t("gross_income_per_month"),unit:t("unit_euro"),min:0,size:8,required:!1,strip:"[€eE ]",helper_text:t("gross_income_per_month_explanation")}},{input_integer:{id:"monthly_usage",label:t("monthly_usage"),unit:t("unit_hour"),min:0,max:744,size:3,required:!0,helper_text:t("monthly_usage_explanation")}},{heading:{text:t("living_at_home_heading"),level:3}},{paragraph:{text:t("living_at_home_paragraph")}},{heading:{text:t("safetyphone_heading"),level:4}},{paragraph:{text:t("safetyphone_paragraph")}},{radio:{id:"safetyphone",label:t("safetyphone"),required:!0,radio_items:[{name:"safetyphone",item_id:"safetyphone_1",label:t("yes_calculate"),value:1},{name:"safetyphone",item_id:"safetyphone_2",label:t("no"),value:2}]}},{heading:{text:t("shopping_service_heading"),level:4}},{paragraph:{text:t("shopping_service_paragraph")}},{radio:{id:"shopping_service",label:t("shopping_service"),required:!0,helper_text:t("shopping_service_per_week_explanation",{first_per_week_price:a}),radio_items:[{name:"shopping_service",item_id:"shopping_service_1",label:t("yes_calculate"),value:1},{name:"shopping_service",item_id:"shopping_service_2",label:t("no"),value:2}]}},{heading:{text:t("meal_service_heading"),level:4}},{paragraph:{text:t("meal_service_paragraph")}},{radio:{id:"meal_service",label:t("meal_service"),required:!0,radio_items:[{name:"meal_service",item_id:"meal_service_1",label:t("yes_calculate"),value:1},{name:"meal_service",item_id:"meal_service_2",label:t("no"),value:2}]}},{group:{id:"meal_service_group",hide_group:!0,items:[{input_integer:{id:"meal_service_per_week",label:t("meal_service_per_week"),unit:t("unit_amount"),min:1,max:7,size:2,required:!0,helper_text:t("meal_service_per_week_explanation")}}]}}]}}};var s={household_size:{fi:"Talouden koko",sv:"Hushållets storlek",en:"Household size"},household_size_explanation:{fi:"Samassa osoitteessa asuvien perheenjäsenten määrä.",sv:"Antal familjemedlemmar som bor på samma adress.",en:"The number of family members living at the same address."},gross_income_per_month:{fi:"Talouden bruttotulot kuukaudessa",sv:"Hushållets bruttoinkomster per månad",en:"Household's gross income per month"},gross_income_per_month_explanation:{fi:"Koko talouden yhteenlasketut ansio- ja pääomatulot ennen verojen vähentämistä. Tuloihin lasketaan palkka, eläke-, vuokra- ja korkotulot sekä eläkkeensaajan hoitotuki. Jos jätät kentän tyhjäksi, lasketaan arvio korkeimman maksun mukaisesti.",sv:"Hela hushållets sammanlagda förvärvs- och kapitalinkomster före skatteavdrag. I inkomsterna ingår lön, pensions-, hyres och ränteinkomster samt vårdbidrag för pensionstagare. Om du lämnar fältet tomt beräknas bedömningen enligt den högsta avgiften.",en:"The entire household's combined income from earnings and capital income before taxes. Income includes salary, wages, pension, rental and interest income as well as care allowance for pensioners. If you leave the field blank, the estimate will be calculated using the highest fee."},monthly_usage:{fi:"Kotihoidon tuntimäärä kuukaudessa",sv:"Antal hemvårdstimmar per månad",en:"Number of hours of home care per month"},monthly_usage_explanation:{fi:"Löydät tuntimäärän kotihoidon palvelu- ja hoitosuunnitelmasta.",sv:"Du hittar antalet timmar i hemvårdens service- och vårdplan.",en:"You can find the number of hours in the home care service and care plan."},living_at_home_heading:{fi:"Kotona asumista tukevat palvelut",sv:"Tjänster som stöder hemmaboende",en:"Services to support living at home"},living_at_home_paragraph:{fi:"Voit laskea mukaan kotona asumista tukevia palveluja. Tukipalvelut ovat maksullisia.",sv:"Du kan inkludera tjänster som stöder hemmaboende. Stödtjänsterna är avgiftsbelagda.",en:"You can include services supporting living at home. The support services are subject to a fee."},safetyphone_heading:{fi:"Turvapuhelin ja turvaranneke",sv:"Trygghetstelefon och säkerhetsarmband",en:"Safety phone and bracelet"},safetyphone_paragraph:{fi:"Turvapuhelinpalveluun kuuluu turvapuhelin ja turvaranneke, joilla saat tarvittaessa apua ympäri vuorokauden. Turvapuhelinpalvelun maksut riippuvat talouden tuloista.",sv:"I trygghetstelefontjänsten ingår en trygghetstelefon och ett säkerhetsarmband genom vilka du vid behov får hjälp dygnet runt. Avgifterna för säkerhetstelefontjänsten beror på hushållets inkomster.",en:"The safety phone service includes a safety phone and a safety bracelet to call for help around the clock. The charges for the safety phone service depend on the income of the household."},safetyphone:{fi:"Laske arvioon turvapuhelin ja turvaranneke",sv:"Inkludera en trygghetstelefon och ett säkerhetsarmband i bedömningen",en:"Include the safety phone and safety bracelet in the estimate"},yes_calculate:{fi:"Kyllä, laske arvioon.",sv:"Ja, inkludera i bedömningen.",en:"Yes, include them in the estimate."},no:{fi:"Ei",sv:"Nej",en:"No"},shopping_service_heading:{fi:"Kauppapalvelu",sv:"Butiksservice:",en:"Grocery delivery service"},shopping_service_paragraph:{fi:"Kauppapalvelussa tilaamasi ruokaostokset toimitetaan kotiovellesi. Kauppapalvelun hintaan kuuluu yksi ruokaostosten keräily ja toimitus viikossa.",sv:"Butiksservicen levererar de livsmedelsinköp som du beställer till din dörr. I priset för butiksservicen ingår samling och leverans av livsmedelsinköp en gång i veckan.",en:"The grocery delivery service delivers the groceries that you order through the service to your door. The price of the grocery delivery service includes the collection and delivery of the groceries once a week."},shopping_service:{fi:"Laske arvioon kauppapalvelu",sv:"Inkludera butiksservicen i bedömningen",en:"Include the grocery delivery service in the estimate"},shopping_service_per_week_explanation:{fi:"Yksi toimitus viikossa maksaa ${first_per_week_price} euroa.",sv:"En leverans per vecka kostar ${first_per_week_price} euro.",en:"One delivery per week costs ${first_per_week_price} euros."},meal_service_heading:{fi:"Ateriapalvelu",sv:"Måltidstjänst",en:"Meal service"},meal_service_paragraph:{fi:"Ateriapalvelussa kotiisi kuljetetaan valmiita lounasaterioita, jotka voit itse lämmittää. Ateriapalvelun hintaan kuuluu lounasaterian hinta ja kuljetusmaksu.",sv:"I måltidstjänsten levereras färdiga lunchmåltider hem till dig, som du själv kan värma upp. I priset för måltidstjänsten ingår priset för lunchmåltiderna och leveransavgiften.",en:"The meal service transports to your home ready-made lunch meals, which you can heat up yourself. The price of the meal service includes the price of a lunch meal and a delivery fee."},meal_service:{fi:"Laske arvioon ateriapalvelu",sv:"Inkludera måltidstjänsten i bedömningen",en:"Include the meal service in the estimate"},meal_service_per_week:{fi:"Aterioiden määrä viikossa",sv:"Antal måltider per vecka",en:"Number of meals per week"},meal_service_per_week_explanation:{fi:"Voit tilata ateriapalvelun hinnaston mukaisia lounasaterioita enintään 7 ateriaa viikossa.",sv:"Du kan beställa högst sju måltider per vecka enligt måltidstjänstens prislista.",en:"You can order up to 7 lunch meals according to the meal service price list per week."},receipt_estimate_of_payment:{fi:"Arvio kotihoidon asiakasmaksusta",sv:"Bedömning av klientavgiften för hemvård",en:"Estimated home care client fee"},receipt_family_estimated_payment_prefix:{fi:"Arvioitu asiakasmaksu on yhteensä",sv:"Den beräknade klientavgiften är totalt",en:"The total estimated client fee is"},receipt_family_estimated_payment_suffix:{fi:"euroa kuukaudessa.",sv:"euro per månad.",en:"euros per month."},receipt_family_estimated_payment_explanation_min:{fi:"Alle ${minimum_payment_euro} euron maksuja ei laskuteta. ",sv:"Inga avgifter under ${minimum_payment_euro} euro debiteras. ",en:"Fees of less than ${minimum_payment_euro} euros will not be charged. "},receipt_family_empty_income:{fi:"Arvio on laskettu korkeimman maksun mukaisesti, koska et täyttänyt laskuriin talouden kuukausituloja. ",sv:"Bedömningen har beräknats enligt den högsta avgiften, eftersom du inte fyllde i hushållets månadsinkomster i räknaren. ",en:"Since you did not enter the household's monthly income in the calculator, the estimate was calculated using the highest fee. "},receipt_family_estimated_payment_explanation:{fi:"Tämä arvio on suuntaa antava. Tarkka arvo lasketaan kotihoidon päätökseen.",sv:"Denna bedömning är riktgivande. Det exakta värdet beräknas för beslutet om hemvård.",en:"This estimate is indicative only. The exact value will be calculated for the home care decision."},receipt_estimate_is_based_on:{fi:"Arvio muodostuu seuraavista tiedoista:",sv:"Bedömningen görs enligt följande uppgifter:",en:"The estimate consists of the following:"},receipt_subtotal_euros_per_month:{fi:"${value} €/kk",sv:"${value} euro/månad",en:"${value} €/month"},receipt_subtotal_euros_per_month_screenreader:{fi:"${value} euroa kuukaudessa",sv:"${value} euro per månad",en:"${value} euros per month"},receipt_additional_details:{fi:"Lisähuomiot:",sv:"Ytterligare anmärkningar:",en:"Additional remarks:"},receipt_homecare_payment:{fi:"Kotihoidon asiakasmaksu",sv:"Klientavgift för hemvården",en:"Home care client fee"},receipt_homecare_payment_two_or_more:{fi:"Jos molemmat puolisot ovat jatkuvan ja säännöllisen kotihoidon kuukausimaksuasiakkaita, maksu jakautuu kummallekin palvelu- ja hoitosuunnitelman mukaisesti.",sv:"Om båda makarna betalar en månatlig avgift för kontinuerlig och regelbunden hemvård, fördelas avgiften mellan dem i enlighet med service- och vårdplanen.",en:"If both spouses are clients of continuous and regular home care with a monthly fee, the fee is divided between them in accordance with their service and care plans."},receipt_shopping_service_math_single:{fi:"1 kauppatoimitus viikossa, kuukausihintaan on laskettu 4 toimitusta.",sv:"1 butiksleverans per vecka, 4 leveranser ingår i månadspriset.",en:"1 grocery delivery per week; the monthly fee includes 4 deliveries."},receipt_shopping_service_explanation:{fi:"Kunkin viikon toimitus maksaa ${first_per_week} euroa.",sv:"Leveransen varje vecka kostar ${first_per_week} euro.",en:"The delivery each week costs ${first_per_week} euros."},receipt_aria_live:{fi:"Kotihoidon asiakasmaksun arvio on ${payment} euroa kuukaudessa, lue lisätietoja lomakkeen alta.",sv:"Den beräknade klientavgiften för hemvården är ${payment} euro per månad, mer information under blanketten.",en:"The estimated home care client fee is ${payment} euros per month; read more under the form."},receipt_meal_service_count_single:{fi:"1 lounasateria viikossa, kuukausihintaan on laskettu 4 ateriaa.",sv:"1 butiksleverans per vecka, 4 leveranser ingår i månadspriset.",en:"1 lunch meal per week; the monthly fee includes 4 meals."},receipt_meal_service_count_multiple:{fi:"${meals_per_week} lounasateriaa viikossa, kuukausihintaan on laskettu ${meals_per_month} ateriaa.",sv:"${meals_per_week} lunchmåltider per vecka, i månadspriset ingår ${meals_per_month} måltider.",en:"${meals_per_week} lunch meals per week; the monthly fee includes ${meals_per_month} meals."},receipt_meal_service_price:{fi:"Yksittäisen lounasaterian hinta on ${meal_service_price} euroa. Lämpimän aterian lisäksi voit tilata maksullisen jälkiruuan. Voit tilata ateriapalvelun hinnaston mukaisia lounasaterioita enintään 7 ateriaa viikossa, muut ateriat ovat omakustanteisia.",sv:"Priset på en lunchmåltid är ${meal_service_price} euro. Förutom en varm måltid kan du också beställa en avgiftsbelagd efterrätt. Du kan beställa högst sju måltider per vecka enligt måltidstjänstens prislista, de övriga måltiderna på egen bekostnad.",en:"The price of a single lunch meal is ${meal_service_price} euros. In addition to a hot meal, you can order a dessert for a fee. You can order up to 7 lunch meals according to the meal service price list per week; any additional meals are at your own expense."},receipt_meal_service_1_delivery_price:{fi:"Ateriat toimitetaan kotiin 1–2 kertaa viikossa. Kuljetuksia on yksi, kun tilattuja aterioita on 1–3, ja kuljetuksia on kaksi, kun aterioita on 4 tai enemmän. Hintaan on laskettu yksi kuljetusmaksu viikossa eli 4 kuljetusta kuukaudessa. Kukin kuljetus maksaa ${meal_service_delivery_price} euroa.",sv:"Måltiderna levereras hem 1–2 gånger per vecka. Det görs en leverans för 1–3 beställda måltider, och två leveranser för 4 eller fler måltider. I priset ingår en leveransavgift per vecka, med andra ord 4 leveranser per månad. Varje leverans kostar ${meal_service_delivery_price} euro.",en:"The meals will be delivered to your home once or twice a week: once a week if you order 1–3 meals, twice a week if you order 4 or more meals. The price includes one delivery fee per week, i.e. 4 deliveries per month. Each delivery costs ${meal_service_delivery_price} euros."},receipt_meal_service_2_delivery_price:{fi:"Ateriat toimitetaan kotiin 1–2 kertaa viikossa. Kuljetuksia on yksi, kun tilattuja aterioita on 1–3, ja kuljetuksia on kaksi, kun aterioita on 4 tai enemmän. Hintaan on laskettu kaksi kuljetusmaksua viikossa eli 8 kuljetusta kuukaudessa. Kukin kuljetus maksaa ${meal_service_delivery_price} euroa.",sv:"Måltiderna levereras hem 1–2 gånger per vecka. Det görs en leverans för 1–3 beställda måltider, och två leveranser för 4 eller fler måltider. I priset ingår två leveransavgifter per vecka, med andra ord 8 leveranser per månad. Varje leverans kostar ${meal_service_delivery_price} euro.",en:"The meals will be delivered to your home once or twice a week: once a week if you order 1–3 meals, twice a week if you order 4 or more meals. The price includes two delivery fees per week, i.e. 8 deliveries per month. Each delivery costs ${meal_service_delivery_price} euros."},receipt_meal_service_menumat_notice:{fi:"Ateriapalvelun sijaan voit tilata kotiisi pakastimen ja uunin yhdistelmän eli Menumat-ateria-automaatin. Menumat-palvelussa aterian hinta on ${menumat_price} euroa ja palvelumaksu on ${menumat_device_price} euroa vuorokaudessa. Aterian lisäksi voit tilata maksullisen jälkiruoan.",sv:"I stället för måltidstjänsten kan du beställa en kombination av en frys och en ugn, med andra ord en Menumat-måltidsautomat. I Menumat-servicen kostar en måltid ${menumat_price} euro och serviceavgiften är ${menumat_device_price} euro per dag. Förutom en måltid kan du också beställa en avgiftsbelagd efterrätt.",en:"Instead of the meal service, you can order a Menumat meal device, which is a combination of a freezer and an oven, to your home. In the Menumat service, the price per meal is ${menumat_price} euros, and the service fee is ${menumat_device_price} euros per day. In addition to the meal, you can order a dessert for a fee."}};class r{static calculateClientFee(e,t,a,i,s,r,n=!1){function l(e,t){const a=Object.keys(t).reverse();for(let i=0;i0&&(c=m*r.household_size_beyond_defined_multiplier_euro);const _=u.gross_income_limit+c,h=l(i,u.monthly_usage_percentage);let d=o;null!==a&&(d=h/100*(t-_));const p=s.clamp(0,d,o);return n&&console.log(`maximumPayment\t${o}`,`\ngrossIncomeLimit\t${_}`,`\npaymentPercentage\t${h}`,`\nreferencePayment\t${d}`),p}constructor(e,t){this.id=e;const a=JSON.parse(t),n=()=>{"1"===this.calculator.getFieldValue("meal_service")?this.calculator.showGroup("meal_service_group"):this.calculator.hideGroup("meal_service_group")},l=()=>{const e=[];e.push(...this.calculator.validateBasics("household_size")),e.push(...this.calculator.validateBasics("gross_income_per_month")),e.push(...this.calculator.validateBasics("monthly_usage")),e.push(...this.calculator.validateBasics("safetyphone")),e.push(...this.calculator.validateBasics("shopping_service")),e.push(...this.calculator.validateBasics("meal_service"));const t=this.calculator.getFieldValue("meal_service");if("1"===t&&e.push(...this.calculator.validateBasics("meal_service_per_week")),e.length)return{error:{title:this.t("missing_input"),message:e}};const i=Number(this.calculator.getFieldValue("household_size")),s=Number(this.calculator.getFieldValue("gross_income_per_month")),n=this.calculator.getFieldValue("gross_income_per_month"),l=Number(this.calculator.getFieldValue("monthly_usage")),o=this.calculator.getFieldValue("safetyphone"),u=this.calculator.getFieldValue("shopping_service"),c=Number(this.calculator.getFieldValue("meal_service_per_week"));let m=this.t("receipt_family_estimated_payment_explanation");const _=r.calculateClientFee(i,s,n,l,this.calculator,a,!1);null===n&&(m=this.t("receipt_family_empty_income")+m);const h={title:this.t("receipt_homecare_payment"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(_)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(_)})};i>=2&&(h.has_details=!0,h.details.push(this.t("receipt_homecare_payment_two_or_more")));const d=[h],p=[];let v=0;if("1"===o){const e=this.calculator.getMinimumRange(i,a.safetyphone_limits),t=null===n?1/0:s;v=this.calculator.getMinimumRange(t,e),d.push({title:this.t("safetyphone_heading"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(v)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(v)})})}let k=0,f=0;"1"===u&&(k=a.shopping_service_prices.first_per_week,f=4*k,d.push({title:this.t("shopping_service_heading"),has_details:!0,details:[this.t("receipt_shopping_service_math_single",{delivery_count_per_week:1,delivery_count_per_month:4}),this.t("receipt_shopping_service_explanation",{first_per_week:this.calculator.formatFinnishEuroCents(a.shopping_service_prices.first_per_week)})],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(f)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(f)})}));let g=0,y=0,b=0;"1"===t&&(g=c*a.meal_service_prices.lunch,y=c<=a.meal_service_prices.max_meals_for_single_delivery_per_week?1:2,g+=y*a.meal_service_prices.delivery,b=4*g,d.push({title:this.t("meal_service_heading"),has_details:!0,details:[this.t(1===c?"receipt_meal_service_count_single":"receipt_meal_service_count_multiple",{meals_per_week:c,meals_per_month:4*c}),this.t("receipt_meal_service_price",{meal_service_price:this.calculator.formatFinnishEuroCents(a.meal_service_prices.lunch),meal_deliveries_per_week:y,meal_deliveries_per_month:4*y}),this.t(`receipt_meal_service_${y}_delivery_price`,{meal_service_delivery_price:this.calculator.formatFinnishEuroCents(a.meal_service_prices.delivery)})],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(b)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(b)})}),p.push({title:this.t("receipt_additional_details"),text:this.t("receipt_meal_service_menumat_notice",{menumat_price:this.calculator.formatFinnishEuroCents(a.meal_service_prices.menumat.lunch),menumat_device_price:this.calculator.formatFinnishEuroCents(a.meal_service_prices.menumat.device_per_day)})}));const w=_+v+f+b,j={id:this.id,title:this.t("receipt_estimate_of_payment"),total_prefix:this.t("receipt_family_estimated_payment_prefix"),total_value:this.calculator.formatFinnishEuroCents(w),total_suffix:this.t("receipt_family_estimated_payment_suffix"),total_explanation:m,hr:!0,breakdown:{title:this.t("receipt_estimate_is_based_on"),subtotals:d,additional_details:p}};return{receipt:this.calculator.getPartialRender("{{>receipt}}",j),ariaLive:this.t("receipt_aria_live",{payment:w})}},o={submit:e=>{this.calculator.clearResult(),e.preventDefault();const t=l();this.calculator.renderResult(t)},keydown:()=>{n()},change:()=>{n()},reset:()=>{window.setTimeout(n,1),this.calculator.clearResult(),this.calculator.showAriaLiveText(this.t("reset_aria_live"))}};this.calculator=window.HelfiCalculator({name:"home_care_client_fee",translations:s}),this.t=(e,t)=>this.calculator.translate(e,t),this.settings=this.calculator.parseSettings(t),this.calculator.init({id:e,formData:(()=>i.getFormData(this.id,this.t,{firstPerWeekPrice:a.shopping_service_prices.first_per_week}))(),eventHandlers:o})}}window.helfi_calculator=window.helfi_calculator||{},window.helfi_calculator.home_care_client_fee=(e,t)=>new r(e,t);var n=r.calculateClientFee}},t={};function a(i){var s=t[i];if(void 0!==s)return s.exports;var r=t[i]={exports:{}};return e[i](r,r.exports,a),r.exports}a.d=function(e,t){for(var i in t)a.o(t,i)&&!a.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={getFormData:function(e,t){return{form_id:e,has_required_fields:!0,items:[{input_integer:{id:"household_size",label:t("household_size"),unit:t("unit_person"),min:1,size:2,required:!0,helper_text:t("household_size_explanation")}},{input_float:{id:"gross_income_per_month",label:t("gross_income_per_month"),unit:t("unit_euro"),min:0,size:8,required:!1,strip:"[€eE ]",helper_text:t("gross_income_per_month_explanation")}},{input_integer:{id:"monthly_usage",label:t("monthly_usage"),unit:t("unit_hour"),min:0,max:744,size:3,required:!0,helper_text:t("monthly_usage_explanation")}},{input_float:{id:"service_provider_price",label:t("service_provider_price"),unit:t("unit_euro"),min:0,size:6,required:!0,strip:"[€eE ]",helper_text:t("service_provider_price_explanation")}}]}}};var t={household_size:{fi:"Talouden koko",sv:"Hushållets storlek",en:"Household size"},household_size_explanation:{fi:"Samassa osoitteessa asuvien perheenjäsenten määrä.",sv:"Antal familjemedlemmar som bor på samma adress.",en:"The number of family members living at the same address."},gross_income_per_month:{fi:"Talouden bruttotulot kuukaudessa",sv:"Hushållets bruttoinkomster per månad",en:"Household's gross income per month"},gross_income_per_month_explanation:{fi:"Koko talouden yhteenlasketut ansio- ja pääomatulot ennen verojen vähentämistä. Tuloihin lasketaan palkka, eläke-, vuokra- ja korkotulot sekä eläkkeensaajan hoitotuki. Jos jätät kentän tyhjäksi, lasketaan arvio korkeimman tulorajan mukaisesti.",sv:"Hela hushållets sammanlagda förvärvs- och kapitalinkomster före skatteavdrag. I inkomsterna ingår lön, pensions-, hyres och ränteinkomster samt vårdbidrag för pensionstagare. Om du lämnar fältet tomt beräknas bedömningen enligt den högsta inkomstgränsen.",en:"The entire household's combined income from earnings and capital income before taxes. Income includes salary, wages, pension, rental and interest income as well as care allowance for pensioners. If you leave the field blank, the estimate will be calculated using the highest income threshold."},monthly_usage:{fi:"Kotihoidon tuntimäärä kuukaudessa",sv:"Antal hemvårdstimmar per månad",en:"Number of hours of home care per month"},monthly_usage_explanation:{fi:"Löydät tuntimäärän kotihoidon palvelu- ja hoitosuunnitelmasta.",sv:"Du hittar antalet timmar i hemvårdens service- och vårdplan.",en:"You can find the number of hours in the home care service and care plan."},service_provider_price:{fi:"Palveluntuottajan tuntihinta",sv:"Serviceproducentens timpris",en:"Service provider's hourly rate"},service_provider_price_explanation:{fi:"Valitsemasi palveluntuottajan tuntihinta kotihoidon palveluista.",sv:"Timpris för den serviceproducent som du väljer för hemvård.",en:"The service provider's hourly rate for the home care services of your choice."},receipt_estimate_of_payment:{fi:"Arvio palvelusetelillä hankitusta kotihoidosta",sv:"Bedömning av den hemvård som förvärvats med servicesedeln",en:"Estimate of home care acquired with a service voucher"},receipt_family_estimated_payment_prefix:{fi:"Omavastuuosuus eli sinulle maksettavaksi jäävä asiakasmaksu on",sv:"Självriskandelen, det vill säga den klientavgift som återstår att betala hos dig, är",en:"The copayment, i.e. the client fee payable by you, is"},receipt_family_estimated_payment_suffix:{fi:"euroa kuukaudessa.",sv:"euro per månad.",en:"euros per month."},receipt_family_empty_income:{fi:"Arvio on laskettu korkeimman maksun mukaisesti, koska et täyttänyt laskuriin talouden kuukausituloja. ",sv:"Bedömningen har beräknats enligt den högsta avgiften eftersom du inte fyllde i hushållets månadsinkomster i räknaren. ",en:"Since you did not enter the household's monthly income in the calculator, the estimate was calculated using the highest fee. "},receipt_family_estimated_payment_explanation:{fi:"Tämä arvio on suuntaa antava. Tarkka arvo lasketaan kotihoidon päätökseen.",sv:"Denna bedömning är riktgivande. Det exakta värdet beräknas för beslutet om hemvård.",en:"This estimate is indicative only. The exact value will be calculated for the home care decision."},receipt_estimate_is_based_on:{fi:"Arvio muodostuu seuraavasti:",sv:"Bedömningen görs enligt följande:",en:"The estimate consists of the following:"},receipt_subtotal_euros_per_month:{fi:"${value} €/kk",sv:"${value} euro/månad",en:"${value} €/month"},receipt_subtotal_euros_per_month_screenreader:{fi:"${value} euroa kuukaudessa",sv:"${value} euro per månad",en:"${value} euros per month"},receipt_subtotal_euros_per_hour:{fi:"${value} €/tunti",sv:"${value} euro/timme",en:"${value} €/hour"},receipt_subtotal_euros_per_hour_screenreader:{fi:"${value} euroa per tunti",sv:"${value} euro per timme",en:"${value} euros per hour"},receipt_homecare_total:{fi:"Palvelusetelillä hankittavan palvelun kokonaiskustannus",sv:"Total kostnad för tjänsten som köpts med servicesedeln",en:"Total cost of the service to be procured with the service voucher"},receipt_city_pays_to_provider:{fi:"Kaupunki maksaa palvelusetelillä palveluntuottajalle",sv:"Staden betalar serviceproducenten med en servicesedel",en:"The city pays the service provider with the service voucher"},receipt_voucher_value:{fi:"Palvelusetelisi arvo",sv:"Värde på din servicesedel",en:"Your service voucher's value"},receipt_client_self_payment:{fi:"Omavastuuosuus eli sinulle maksettavaksi jäävä asiakasmaksu",sv:"Självriskandel, det vill säga den klientavgift som återstår för dig att betala ",en:"The copayment, i.e. the client fee payable by you"},receipt_additional_details:{fi:"Lisähuomiot:",sv:"Ytterligare anmärkningar:",en:"Additional remarks:"},receipt_included_homecare:{fi:"Jos palvelu - ja hoitosuunnitelmassasi on myös kaupungin tuottamaa kotihoitoa, siitä laskutetaan erikseen kotihoidon asiakasmaksun mukaisesti.",sv:"Om din service- och vårdplan även omfattar hemvård som tillhandahålls av staden debiteras den separat i enlighet med klientavgiften för hemvård.",en:"If your service and care plan also includes home care provided by the city, it will be charged separately in accordance with the home care client fee."},receipt_estimate_if_done_by_city:{fi:"Arvio kaupungin kotihoidon asiakasmaksusta:",sv:"Bedömning av klientavgiften för stadens hemvård:",en:"Estimated client fee of the city's home care:"},receipt_when_done_by_city:{fi:"Kaupungin kotihoidon tuottamana palvelu maksaisi",sv:"Om staden producerade tjänsten skulle den kosta",en:"Provided by the city's home care, the service would cost"},receipt_aria_live:{fi:"Omavastuuosuus eli sinulle maksettavaksi jäävä asiakasmaksu on ${payment} euroa kuukaudessa, lue lisätietoja lomakkeen alta.",sv:"Självriskandelen, det vill säga den klientavgift som du ska betala för, är ${payment} euro per månad, se mer information under blanketten.",en:"The copayment, i.e. the client fee payable by you, is ${payment} euros per month; read more under the form."}},i=a(4270);class s{constructor(a,s){this.id=a;const r=JSON.parse(s),n=JSON.parse(drupalSettings.home_care_client_fee),l=()=>{};const o=()=>{const e=[];if(e.push(...this.calculator.validateBasics("household_size")),e.push(...this.calculator.validateBasics("gross_income_per_month")),e.push(...this.calculator.validateBasics("monthly_usage")),e.push(...this.calculator.validateBasics("service_provider_price")),e.length)return{error:{title:this.t("missing_input"),message:e}};const t=Number(this.calculator.getFieldValue("household_size")),a=Number(this.calculator.getFieldValue("gross_income_per_month")),s=this.calculator.getFieldValue("gross_income_per_month"),l=Number(this.calculator.getFieldValue("monthly_usage")),o=Number(this.calculator.getFieldValue("service_provider_price")),{limit:u,percent:c}=function(e,t,a,i){const s=i.getMinimumRange(e,a.household_size);let r=0;const n=e-Number(Object.keys(a.household_size).at(-1));n>0&&(r=n*a.household_size_beyond_defined_multiplier_euro);const l=i.getMinimumRange(e,t.household_size);let o=0;const u=e-Number(Object.keys(t.household_size).at(-1));return u>0&&(o=u*t.household_size_beyond_defined_multiplier_percent),{limit:s.gross_income_limit+r,percent:l.percent+o}}(t,r,n,this.calculator),m=a-u,_=Math.round(100*(null!==s?this.calculator.clamp(r.voucher_limits.min,r.voucher_limits.max-m*(c/100)/r.voucher_divisor,r.voucher_limits.max):r.voucher_limits.min))/100,h=l*_,d=Math.max(0,o-_)*l,p=(0,i.Z)(t,a,s,l,this.calculator,n,!1);let v=this.t("receipt_family_estimated_payment_explanation");const k=[{title:this.t("receipt_additional_details"),text:null}];null===s&&(v=this.t("receipt_family_empty_income")+v);const f=[];f.push({title:this.t("receipt_homecare_total"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(l*o)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(l*o)})},{title:this.t("receipt_city_pays_to_provider"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(h)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(h)})},{title:this.t("receipt_voucher_value"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_hour",{value:this.calculator.formatFinnishEuroCents(_)}),sum_screenreader:this.t("receipt_subtotal_euros_per_hour_screenreader",{value:this.calculator.formatEuroCents(_)})}),k.push({title:null,text:this.t("receipt_included_homecare")});const g={id:this.id,title:this.t("receipt_estimate_of_payment"),total_prefix:this.t("receipt_family_estimated_payment_prefix"),total_value:this.calculator.formatFinnishEuroCents(d),total_suffix:this.t("receipt_family_estimated_payment_suffix"),total_explanation:v,hr:!0,breakdown:[{title:this.t("receipt_estimate_is_based_on"),subtotals:f,additional_details:k},{title:this.t("receipt_estimate_if_done_by_city"),subtotals:[{title:this.t("receipt_when_done_by_city"),has_details:!1,details:[],sum:this.t("receipt_subtotal_euros_per_month",{value:this.calculator.formatFinnishEuroCents(p)}),sum_screenreader:this.t("receipt_subtotal_euros_per_month_screenreader",{value:this.calculator.formatEuroCents(p)})}],additional_details:null}]};return{receipt:this.calculator.getPartialRender("{{>receipt}}",g),ariaLive:this.t("receipt_aria_live",{payment:this.calculator.formatEuroCents(d)})}},u={submit:e=>{this.calculator.clearResult(),e.preventDefault();const t=o();this.calculator.renderResult(t)},keydown:()=>{},change:()=>{},reset:()=>{window.setTimeout(l,1),this.calculator.clearResult(),this.calculator.showAriaLiveText(this.t("reset_aria_live"))}};this.calculator=window.HelfiCalculator({name:"home_care_service_voucher",translations:t}),this.t=(e,t)=>this.calculator.translate(e,t),this.settings=this.calculator.parseSettings(s),this.calculator.init({id:a,formData:(()=>e.getFormData(this.id,this.t))(),eventHandlers:u})}}window.helfi_calculator=window.helfi_calculator||{},window.helfi_calculator.home_care_service_voucher=(e,t)=>new s(e,t)}()}(); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 620884361..0095ba00c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6530,9 +6530,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001609", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001609.tgz", - "integrity": "sha512-JFPQs34lHKx1B5t1EpQpWH4c+29zIyn/haGsbpfq3suuV9v56enjFt23zqijxGTMwy1p/4H2tjnQMY+p1WoAyA==", + "version": "1.0.30001610", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001610.tgz", + "integrity": "sha512-QFutAY4NgaelojVMjY63o6XlZyORPaLfyMnsl3HgnWdJUcX6K0oaJymHjH8PT5Gk7sTm8rvC/c5COUQKXqmOMA==", "funding": [ { "type": "opencollective", diff --git a/src/js/calculator/home_care_client_fee/_translations.js b/src/js/calculator/home_care_client_fee/_translations.js index 3f9eeaefa..a2edd9130 100644 --- a/src/js/calculator/home_care_client_fee/_translations.js +++ b/src/js/calculator/home_care_client_fee/_translations.js @@ -172,14 +172,9 @@ const translations = { en: 'If both spouses are clients of continuous and regular home care with a monthly fee, the fee is divided between them in accordance with their service and care plans.', }, receipt_shopping_service_math_single: { - fi: '1 kauppatoimitus viikossa, kuukausihintaan on laskettu 4 toimitusta.', - sv: '1 butiksleverans per vecka, 4 leveranser ingår i månadspriset.', - en: '1 grocery delivery per week; the monthly fee includes 4 deliveries.', - }, - receipt_shopping_service_math_multiple: { - fi: '1 kauppatoimitus viikossa, kuukausihintaan on laskettu 4 toimitusta.', - sv: '1 butiksleveranser per vecka, i månadspriset ingår 4 leveranser.', - en: '1 grocery deliveries per week; the monthly fee includes 4 deliveries.', + fi: '1 kauppatoimitus viikossa, kuukausihintaan on laskettu 4 toimitusta.', + sv: '1 butiksleverans per vecka, 4 leveranser ingår i månadspriset.', + en: '1 grocery delivery per week; the monthly fee includes 4 deliveries.', }, receipt_shopping_service_explanation: { fi: 'Kunkin viikon toimitus maksaa ${first_per_week} euroa.', diff --git a/src/js/calculator/home_care_client_fee/home_care_client_fee.js b/src/js/calculator/home_care_client_fee/home_care_client_fee.js index 006d01747..7fe3618a9 100644 --- a/src/js/calculator/home_care_client_fee/home_care_client_fee.js +++ b/src/js/calculator/home_care_client_fee/home_care_client_fee.js @@ -201,7 +201,7 @@ class HomeCareClientFee { }, }, shopping_service_prices: { - first_per_week: 9.37 + first_per_week: 9.37, }, meal_service_prices: { lunch: 3.9, @@ -216,7 +216,7 @@ class HomeCareClientFee { // */ // Form content const getFormData = () => form.getFormData(this.id, this.t, { - firstPerWeekPrice: parsedSettings.shopping_service_prices.first_per_week + firstPerWeekPrice: parsedSettings.shopping_service_prices.first_per_week, }); const update = () => {