@Bescheide
/*

	Mit dieser Routine können die Kassenzeichen des Bewohners nachbearbeitet werden
	
	Aktionen für Stadt Bochum
		ZusatzFelder "fkz-Selbstzahler" und "fkz-Drittzahler" werden folgendermaßen gefüllt:
			Ziffer "9"
			4 Ziffern entsprechend dem Status der Person
			7 Ziffern aus der Debitoren-Kennung (PK-Nr)
			1 Prüfziffer
	
*/

   // Angabe für Geflüchtete
   var fkDritt ="1007";
   var fkSelbst="1008";
   if (!string.IsNullOrWhiteSpace(curFl.Status) && curFl.Status.ToLower().Contains("obdach")) {
      // Angaben für Obdachlose
      fkDritt ="1009";
      fkSelbst="1010";
   }
   /*
     Daten aus dem Flüchtlingsdatensatz lesen
           Die DebitorenKennung enthält die Basis des Kassenzeichens
   */
   var pkNr=(curFl.DebitorKennung??"" + "0000000").Prefix(7);

   /*

     Selbstzahler-Kennzeichen

   */
   var selbst="9" + fkSelbst + pkNr;
   Vars["str"]=selbst;
   RunCode("PrüfSumme");
   selbst=selbst+Vars["Prüf"];
   /*

     Drittzahler-Kennzeichen

   */
   var dritt="9" + fkDritt + pkNr;
   Vars["str"]=dritt;
   RunCode("PrüfSumme");
   dritt=dritt+Vars["Prüf"];
   /*

     Speichern der Datenwerte

   */
   bool chg=false;
   if (curFl.SetDyn(fm,fm.AddDynamikFeld(DynBereiche.Fluechtlinge,"fkz-Selbstzahler", WerteListe.tStringRO),selbst)) chg=true;
   if (curFl.SetDyn(fm,fm.AddDynamikFeld(DynBereiche.Fluechtlinge,"fkz-Drittzahler",  WerteListe.tStringRO),dritt)) chg=true;
   if (chg)
      curFl.DatenSpeichern(fm);

@PrüfSumme
var s=Vars["str"];
int sum=0;
var consts=new int[]{2,3,4,5,6,7};
int cnt=0;
for (int i=s.Length-1;i>=0;i--) {
    sum+=Tools.GetInt(s.Substring(i,1)) * consts[cnt % 6];
    cnt++;
}
int ps=11-(sum % 11);
if (ps>9) ps=0;
Vars["Prüf"]=ps.ToString();
