Anpassning av levnadskostnader/budget

Standardinmatningen "Levnadskostnader" (tidigare Budget) är hårt styrd till konsumentverkets fält och schabloner. Vill du styra levnadskostnadsinmatningens fält och schabloner helt fritt så finns en alternativ sida. För att aktivera den alternativa sidan skriv enligt nedan i konfigurationsfilen (capitex_customer_config.xml).
<AnpassningGrund_Budget>capitex.boendekalkyl.webbgraenssnitt.grund.BudgetGenerell</AnpassningGrund_Budget>

Detaljbeskrivning för att aktivera Generell budget/levnadskostnader

Steg 1 - Fältspecifikation, anpassa inmatnings-gränssnittet för egna budgetfält

Det finns två typer av inmatning av budgetbelopp. Dels belopp som ska vara kopplade till beräknade riktvärden och dels belopp som matas in helt fritt. I detta exempel så har vi tio belopp med riktvärden och ett fritt belopp. I capitex_customer_config.xml lägger vi in en beskrivning av dessa fält:

<BudgetGenerell>
  <Riktvaerden>
   <Vaerde bernamn="Måltider">Måltider (alla mål)</Vaerde>
  <Vaerde bernamn="Kläder">Kläder</Vaerde>
  <Vaerde bernamn="Fritid">Fritid</Vaerde>
  <Vaerde bernamn="Hygien">Hygien</Vaerde>
  <Vaerde bernamn="Barnomsorg">Barnomsorg</Vaerde>
  <Vaerde bernamn="Resor - bil">Resor - bil</Vaerde>
  <Vaerde bernamn="Resor - lokala">Resor - lokala</Vaerde>
  <Vaerde bernamn="Förbrukningsvaror">Förbrukningsvaror</Vaerde>
  <Vaerde bernamn="Möbler, TV radio">Möbler, TV radio</Vaerde>
  <Vaerde bernamn="Tidningar tv-licens, tel">Tidningar tv, tel</Vaerde>
</Riktvaerden>
 <ExtraInmatning>
  <Vaerde bernamn="Underhållsbidrag">Underhållsbidrag</Vaerde>
 </ExtraInmatning>
</BudgetGenerell>

bernamn är fältnamnet som används internt för att matcha ihop fältspecifikationen med riktvärdesspecifikationen.

Steg 2 - Peka ut var riktvärdesspecifikationen finns

Riktvärdesspecifikationen lägger man in i den egna inställningsfilen som styr beräkningsdelen. För att använda en egen inställningsfil för styrning av beräkningsdelen så kan man skriva så här i capitex_customer_config.xml:

<boendekalkyl_instaellningar_egna_filnamn>BoendekalkylInst</boendekalkyl_instaellningar_egna_filnamn>
<boendekalkyl_instaellningar_egna_filtyp>Resource</boendekalkyl_instaellningar_egna_filtyp>

Om man skriver enligt ovan så betyder det att inställningarna för beräkningsdelen finns i följande katalog:

  • "classpath"/capitex/componentmodel/BoendekalkylInst

I katalogen BoendekalkylInst ska det sedan finnas en mapp för varje årtal som man vill ska hanteras av boendekalkylen, för version 2008.x av boendekalkylen bör man alltså ha med följande tre mappar 2008, 2009 och 2010. För 2009.x så bör man ha med mapparna 2009,2010 och 2011.

I varje årtals-mapp ska sedan filen boende.xml finnas dvs dessa filer ska finnas:

  • "classpath"/capitex/componentmodel/BoendekalkylInst/2008/boende.xml

  • "classpath"/capitex/componentmodel/BoendekalkylInst/2009/boende.xml

  • "classpath"/capitex/componentmodel/BoendekalkylInst/2010/boende.xml

Om en beräkning görs för 2008 så används information från filen 2008/boende.xml osv..

boende.xml kan förutom budget styra alla beräkningsgrundande inställningar som tex basbelopp mm, dessa kommer då att användas istället för de som Capitex skickar med. Detta kan alltså användas tex för att uppdatera ett basbelopp innan Capitex levererat en uppdatering.

Vill man bara ha budgetinställningarna i boende.xml och att alla år ska ha samma riktvärden ja då kan alla boende.xml se precis likadana ut.

Steg 3 - Anpassa utskrifterna för egen budget

Inställningen nedan döljer utskriften för konsumentverkets budget och gör istället utskrift av egen budget tillgänglig

<capitex_boendekalkyl_valbara_utskrifter>
<dokument exkludera="true" ID="clsUtskriftBudget" />           
  <dokument inkludera="true" ID="clsUtskriftBudgetGenerell" foervald="false">           
  <data t="capitex.boendekalkyl.datastrukturer.utskrifter.clsUtskriftBudgetGenerell">
  <Asterisktext t="java.lang.String">*Riktvärden enligt xxxxx, från feb 2007</Asterisktext>
  </data>
  <printklass>capitex.boendekalkyl.utskrifter.dok.BudgetGenerell</printklass>
  </dokument>
</capitex_boendekalkyl_valbara_utskrifter>

Steg 4 - Anpassa om-dialogen så den presenterar den egna budgeten

Inställningen döljer presentationen av konsumentverkets budget och visar istället den egna budgeten.

<omflikar>
<flik exkludera="true" ID="Budget" />
  <flik inkludera="true" ID="BudgetGenerell">
    <klass>capitex.boendekalkyl.oevrigadialoger.komponenter.BudgetGenerell</klass>
    <etikett>Budget</etikett>
  </flik>
</omflikar>

Steg 5 - Skriva riktvärdesspecifikationen i boende.xml

Ett riktvärde kan specificeras med en eller flera av följande grundprinciper:

  • Belopp som bestäms av antalet personer i hushåll med pensionär

  • Belopp som bestäms av antalet personer i hushåll utan pensionär

  • Belopp som bestäms per kön per åldersintervall

I detta exempel tänker oss att riktvärdesspecifikationen ska se ut så här:

Budget för barn per ålder och kön

Ålder

0-6

7-12

13-17

Måltider (alla mål)

 680

 1 150

 1 480

Kläder

 380

 450

 480

Fritid

 140

 450

 530

Hygien

 490

 120

 210

Barnomsorg

 1 102

Budget för vuxna per ålder och kön

Ålder

18-

Måltider (alla mål)

 1 770

Kläder

 490

Fritid

 470

Hygien

 240

Budget beroende av antal personer i hushållet

Antal personer i hushållet

1

2

3

4

5

6

7

8

9

10

Förbrukningsvaror

100 

 120

 200

 240

 290

 340

 380

Möbler, TV radio

 520

 610

 730

 800

 930

 1 070

 1 070

Tidningar tv, tel

 750

 780

 820

 830

 850

 870

 890

Budget per hushåll

Kr/mån

Resor - bil

2 580 

Resor - lokala

 500

Exempel måltider 7-12 år 
Måltiderna enligt ovan för intervallet 7-12 år skriver man då så här i boende.xml:

<root t="capitex.boendekalkyl.datastrukturer.installningar.clsInstallningar">
<BudgetGenerell t="capitex.boendekalkyl.datastrukturer.installningar.clsInstBudgetGenerell">
  <BudgetPerKoenPerAAlder t="[Lcapitex.boendekalkyl.datastrukturer.installningar.clsInstBudgetGenerellPostPerKoenPerAAlder;">
   <arrayitem>
    <Postnamn t="java.lang.String">Måltider</Postnamn>
    <Budget t="[Lcapitex.boendekalkyl.datastrukturer.installningar.clsInstBudgetPerKoenPerAAlder;">
     <arrayitem>
      <AAlderFrom t="int">7</AAlderFrom>
      <AAlderTom t="int">12</AAlderTom>
      <BudgetenGaellerKvinna t="boolean">true</BudgetenGaellerKvinna>
      <Belopp t="int">13800</Belopp>
      </arrayitem>
       <arrayitem>
       <AAlderFrom t="int">7</AAlderFrom>
       <AAlderTom t="int">12</AAlderTom>
       <BudgetenGaellerKvinna t="boolean">false</BudgetenGaellerKvinna>
       <Belopp t="int">13800</Belopp>
      </arrayitem>
     </Budget>
    </arrayitem>
   </BudgetPerKoenPerAAlder>
  </BudgetGenerell>
</root>
 
<Postnamn t="java.lang.String">Måltider</Postnamn> är det som knyter ihop denna specifikation med gränssnittets inställning i capitex_customer_config.xml:
<BudgetGenerell>
<Riktvaerden>
<Vaerde bernamn="Måltider">Måltider (alla mål)</Vaerde>

Beloppen som anges i exemplet ovan är årsbelopp. Specifikationen är uppdelad per kön så vill man ha samma belopp för båda könen så får man som ovan ange samma belopp och intervall två gånger, en gång för varje kön.
Exempel Resor - lokala
För att ange belopp som gäller för hela hushållet så kan fältet "startbelopp" användas. Siffran -1 i AAlderTom ska tolkas som "och äldre".

<arrayitem>
<Postnamn t="java.lang.String">Resor - lokala</Postnamn>
  <Budget t="[Lcapitex.boendekalkyl.datastrukturer.installningar.clsInstBudgetPerKoenPerAAlder;">
  <arrayitem>
    <AAlderFrom t="int">0</AAlderFrom>
      <AAlderTom t="int">-1</AAlderTom>
      <BudgetenGaellerKvinna t="boolean">true</BudgetenGaellerKvinna>
      <Startbelopp t="int">6000</Startbelopp>
      <Belopp t="int">0</Belopp>
    </arrayitem>
    <arrayitem>
      <AAlderFrom t="int">0</AAlderFrom>
      <AAlderTom t="int">-1</AAlderTom>
      <BudgetenGaellerKvinna t="boolean">false</BudgetenGaellerKvinna>
      <Startbelopp t="int">6000</Startbelopp>
      <Belopp t="int">0</Belopp>
    </arrayitem>
  </Budget>
</arrayitem>

Exempel Förbrukningsvaror
Dessa belopp ska gälla för familjen oavsett om den består av pensionärer eller ej, i inställningsfilen får man därmed specificera denna dubbelt.

<root t="capitex.boendekalkyl.datastrukturer.installningar.clsInstallningar">
<BudgetGenerell t="capitex.boendekalkyl.datastrukturer.installningar.clsInstBudgetGenerell">
   <BudgetPerAntalPersoner_Pensionaerer t="[Lcapitex.boendekalkyl.datastrukturer.installningar.clsInstBudgetGenerellPostPerAntalPersoner;">
   <arrayitem>
     <Postnamn t="java.lang.String">Förbrukningsvaror</Postnamn>
     <Budget t="[Lcapitex.boendekalkyl.datastrukturer.installningar.clsInstBudgetPerAntalPersoner;">
     <arrayitem>
       <AntalPersoner t="int">1</AntalPersoner>
      <Belopp t="int">1200</Belopp>
      </arrayitem>
       <arrayitem>
       <AntalPersoner t="int">2</AntalPersoner>
       <Belopp t="int">1440</Belopp>
      </arrayitem>
      <arrayitem>
       <AntalPersoner t="int">3</AntalPersoner>
       <Belopp t="int">2400</Belopp>
      </arrayitem>
       <arrayitem>
       <AntalPersoner t="int">4</AntalPersoner>
        <Belopp t="int">2880</Belopp>
      </arrayitem>
       <arrayitem>
       <AntalPersoner t="int">5</AntalPersoner>
       <Belopp t="int">3480</Belopp>
      </arrayitem>
       <arrayitem>
       <AntalPersoner t="int">6</AntalPersoner>
       <Belopp t="int">4080</Belopp>
      </arrayitem>
       <arrayitem>
       <AntalPersoner t="int">7</AntalPersoner>
       <Belopp t="int">4560</Belopp>
      </arrayitem>
     </Budget>
    </arrayitem>
</BudgetPerAntalPersoner_Pensionaerer>
  <BudgetPerAntalPersoner_EjPensionaerer t="[Lcapitex.boendekalkyl.datastrukturer.installningar.clsInstBudgetGenerellPostPerAntalPersoner;">
  <arrayitem>
     <Postnamn t="java.lang.String">Förbrukningsvaror</Postnamn>
     <Budget t="[Lcapitex.boendekalkyl.datastrukturer.installningar.clsInstBudgetPerAntalPersoner;">
      <arrayitem>
       <AntalPersoner t="int">1</AntalPersoner>
        <Belopp t="int">1200</Belopp>
      </arrayitem>
       <arrayitem>
       <AntalPersoner t="int">2</AntalPersoner>
       <Belopp t="int">1440</Belopp>
      </arrayitem>
      <arrayitem>
       <AntalPersoner t="int">3</AntalPersoner>
       <Belopp t="int">2400</Belopp>
      </arrayitem>
      <arrayitem>
       <AntalPersoner t="int">4</AntalPersoner>
       <Belopp t="int">2880</Belopp>
      </arrayitem>
       <arrayitem>
       <AntalPersoner t="int">5</AntalPersoner>
       <Belopp t="int">3480</Belopp>
      </arrayitem>
       <arrayitem>
       <AntalPersoner t="int">6</AntalPersoner>
        <Belopp t="int">4080</Belopp>
      </arrayitem>
      <arrayitem>
       <AntalPersoner t="int">7</AntalPersoner>
       <Belopp t="int">4560</Belopp>
      </arrayitem>
     </Budget>
    </arrayitem>   
   </BudgetPerAntalPersoner_EjPensionaerer>
  </BudgetGenerell>
</root>
 

Exempel med Startbelopp i kombination med Belopp
I riktvärdesspecifikationen ovan finns ingen budgetpost som har en startkostnad för hushållet som sedan ökar beroende på atalet personer i hushållet. Om man önskar skriva en sådan specifikation, dvs i stil med 7080 kr per år + 1560 * antal vuxna + 1080 * antal barn, så kombinerar man startbelopp med belopp enligt nedanstående exempel:

<arrayitem>
<AAlderFrom t="int">18</AAlderFrom>
  <AAlderTom t="int">-1</AAlderTom>
  <BudgetenGaellerKvinna t="boolean">true</BudgetenGaellerKvinna>
  <Startbelopp t="int">7080</Startbelopp>
  <Belopp t="int">1560</Belopp>
</arrayitem>
<arrayitem>
  <AAlderFrom t="int">18</AAlderFrom>
  <AAlderTom t="int">-1</AAlderTom>
  <BudgetenGaellerKvinna t="boolean">false</BudgetenGaellerKvinna>
  <Startbelopp t="int">7080</Startbelopp>
  <Belopp t="int">1560</Belopp>
</arrayitem>
<arrayitem>
  <AAlderFrom t="int">0</AAlderFrom>
  <AAlderTom t="int">17</AAlderTom>
  <BudgetenGaellerKvinna t="boolean">true</BudgetenGaellerKvinna>
  <Startbelopp t="int">7080</Startbelopp>
  <Belopp t="int">1080</Belopp>
</arrayitem>
<arrayitem>
  <AAlderFrom t="int">0</AAlderFrom>
  <AAlderTom t="int">17</AAlderTom>
  <BudgetenGaellerKvinna t="boolean">false</BudgetenGaellerKvinna>
  <Startbelopp t="int">7080</Startbelopp>
  <Belopp t="int" >1080</Belopp>
</arrayitem>

Steg 6 - Kontrollera

Starta boendekalkylen och klicka på menyvalet Om, klicka sedan på fliken "Budget" nu ska du se budgetuppställningen i tabeller på ungefär samma sätt som tabellerna ovan. Layouten anpassar sig automatiskt efter inställningarna i boende.xml, är det fel i boende.xml så kommer uppställningen att bli konstig. Är det fel i boende.xml så kan det också hända att boendekalkylen inte går att start alls. Boendekalkylen gör ingen kontroll av rimligheten i inställningarna.

Anrop av egen budget via webservice 

För att kunna utföra anrop till webservice som använder de egna budgetsifforna så måste webservicen kunna hantera anpassningar i capitex_customer_config.xml, detta kan inte webservicen som heter Kalkyl, däremot hanteras det av alla större webservicar som KalkylMedUtskrift, Applikationsservice och Metaservice.

Exempel på anrop via webservice

Detta exempel visar ett fristående anrop till budgetfunktionen BeraeknaBudgetGenerell i webservicen KalkylMedUtskrift (Applikationsservice och Metaservice hade gått lika bra). Indata för budgeten fyller man i på samma sätt även vid anrop av KomplettKalkyl.

utsk.BeraeknaBudgetGenerell budgetber = new utsk.BeraeknaBudgetGenerell();
utsk.clsBudgetGenerellFoerdjupningRiktvaerden riktvaerdsber = new utsk.clsBudgetGenerellFoerdjupningRiktvaerden();
 
budgetber.clsBudgetGenerellBeraekning_1 = new utsk.clsBudgetGenerellBeraekning();
budgetber.clsBudgetGenerellBeraekning_1.BeraekningsAAr = 2008;
budgetber.clsBudgetGenerellBeraekning_1.BudgetGenerellFoerdjupningRiktvaerden = riktvaerdsber;//Initiera familjesammansättningen
utsk.clsFamiljemedlemFoerBudgetMan man = new utsk.clsFamiljemedlemFoerBudgetMan();
utsk.clsFamiljemedlemFoerBudgetKvinna fru = new utsk.clsFamiljemedlemFoerBudgetKvinna();
utsk.clsFamiljemedlemFoerBudgetMan son = new utsk.clsFamiljemedlemFoerBudgetMan();
 
man.AAlder = 30;
fru.AAlder = 28;
son.AAlder = 4;
 
riktvaerdsber.Familjemedlemmar = new utsk.clsFamiljemedlemFoerBudgetBasklass[] {
man,
fru,
son
};
utsk.KalkylMedUtskrift kalkyl = new utsk.KalkylMedUtskrift();
 
kalkyl.Credentials = new System.Net.NetworkCredential("xxxx", "xxxx");
kalkyl.PreAuthenticate = true;
kalkyl.EnableDecompression = true;
 
utsk.clsBudgetGenerellPost[] utdata;
utdata = kalkyl.BeraeknaBudgetGenerell(budgetber).result;
 
for (int i = 0; i < utdata.Length; i++) {
    Console.WriteLine(utdata[i].Postnamn + " " + utdata[i].Belopp_Kr_Per_Ar.ToString());
}
 
/*
Exempel på utdata (beror på inställningarna förstås):
* Livsmedel 39000
* Sport, lek 5040
* Hygien, hälsovård 12120
* Kläder 18000
* Tvätt, rengöring, papper 2520
* Föreningsavgift 13440
* Bilkostnader 31200
* Tidningar 2520
* Telefon, TV 11280
* Försäkring utom hem 2400
* Hemförsäkring 1560
*/

Verkar det krångligt?

Verkar det krångligt  så kan Capitex initialt hjälpa till att skapa filen boende.xml, men sedan kan ni själva ändra beloppen i filen framöver.