/*

        Sollstellungen: Schreiben der einzelnen Datensätze

*/
@Item
     var r=oIdx[soll.Betrag<0
                  ?"t2"
                  :"t1"] as Recordset;
     var fl=soll.Fluechtling;

     /*
       Unterkunft des Flüchtlings ermitteln
     */
     // 1. Versuch: Unterkunft anhand des Anfangs-Tages ermitteln
     var uk = soll.Von.HasValue
       ? fl?.GetUnterbringung(fm,soll.Von.Value)?.Unterkunft
       : null;
     // 2. Versuch: Unterkunft anhand des Enddatums ermitteln
     if (uk==null && soll.Bis.HasValue)
        uk=fl?.GetUnterbringung(fm,soll.Bis.Value)?.Unterkunft;
     // 3. Versuch: ersatzweise die letzte Unterbringung auswerten.
     if (uk==null)
        uk=fl?.LastUnterbringung?.Unterkunft;

     r.AddNew();
                 // Sollstellung
                 r.SetField("DebitorKennung",soll.DebitorKennung);
                 r.SetField("KostenTraeger",soll.KostenTraeger);
                 r.SetField("Datum",Tools.ShortDate(soll.Datum));
                 r.SetField("Jahr",(soll.Von??DateTime.Today).Year);
                 r.SetField("BescheidDatum",Tools.ShortDate(soll.BescheidDatum));
                 r.SetField("Betrag",Math.Abs(soll.Betrag??0.0));
                 r.SetField("BetragMonatlich",Math.Abs(soll.BetragMonat??0.0));
                 r.SetField("BetragInWorten",Tools.InWorten((int)Math.Truncate(Math.Abs(soll.Betrag??0.0))));
                 r.SetField("Buchungstext",soll.BuchungsText);
                 r.SetField("VonDatum",Tools.ShortDate(soll.Von));
                 r.SetField("BisDatum",Tools.ShortDate(soll.Bis));
                 r.SetField("Faellig",Tools.ShortDate(soll.Faellig));
                 // Person
                 r.SetField("Name",fl.Name);
                 r.SetField("Vorname",fl.Vorname);
                 r.SetField("Geschlecht",fl.Geschlecht);
                 r.SetField("GeburtsDatum",Tools.ShortDate(fl.GeburtsDatum));
                 r.SetField("KennNummer",fl.KennNummer);
                 // Anschrift
                 r.SetField("Strasse",uk?.Strasse);
                 r.SetField("PLZ",uk?.PLZ);
                 r.SetField("Ort",uk?.Ort);
     r.Update();
     // Eintragung als übertragen markieren
     soll.Uebergabe=DateTime.Now.ToString();

/*

        Sollstellungen: Vorbereitung des Exports

*/
@Header
  var rs=new Recordset(
                 // Sollstellung
                 "DebitorKennung",
                 "KostenTraeger",
                 "Datum",
                 "Jahr",
                 "BescheidDatum",
                 "Betrag",
                 "BetragMonatlich",
                 "BetragInWorten",
                 "Buchungstext",
                 "VonDatum",
                 "BisDatum",
                 "Faellig",
                 // Person
                 "Name",
                 "Vorname",
                 "Geschlecht",
                 "GeburtsDatum",
                 "KennNummer",
                 // Anschrift
                 "Strasse",
                 "PLZ",
                 "Ort"
                 );
                oIdx["t1"]=rs;
                oIdx["t2"]=new Recordset(rs);
/*


       Sollstellungen: Nachlauf/Abschluß


*/
@Footer
var ts=DateTime.Now.ToString("yyyyMMddHHmmssff");
(oIdx["t1"] as Recordset).Export(Path.Combine(dName, "Soll_" + ts + ".csv"));
(oIdx["t2"] as Recordset).Export(Path.Combine(dName, "Storno_" + ts + ".csv"));

/*

        Beschaffungen: Schreiben der einzelnen Datensätze

*/
@ItemBS
     var r=oIdx["t1"] as Recordset;
     var l=bes.Lieferant;
     r.AddNew();
                 r.SetField("Rg.Nr",bes.RechnungNummer);
                 r.SetField("Rg.Datum",bes.RechnungDatum);
                 r.SetField("Rg.Betrag",bes.RechnungBetrag);
                 r.SetField("Mw-Satz",bes.MwSatz);
                 r.SetField("Fälligkeit",bes.Faelligkeit);
                 r.SetField("Verwendung",bes.Verwendung);
                 // Lieferanten-Datensatz
                 r.SetField("IBAN",l?.IBAN);
                 r.SetField("KundenNummer",l?.KundenNummer);
                 r.SetField("BuchungsKonto",l?.BuchungsKonto);
                 // Name
                 r.SetField("Firma",l?.Firma);
                 r.SetField("Name",l?.Name);
                 r.SetField("Vorname",l?.Vorname);
                 r.SetField("Geschlecht",l?.Geschlecht);
                 // Anschrift
                 r.SetField("Strasse",l?.Strasse);
                 r.SetField("PLZ",l?.PLZ);
                 r.SetField("Ort",l?.Ort);
     r.Update();
     // Eintragung als übertragen markieren
     bes.KassenUebergabe=DateTime.Now.ToString();

/*

        Beschaffungen: Vorbereitung des Exports

*/
@HeaderBS
  var rs=new Recordset(
                 // Beschafungsdatensatz
                 "Rg.Nr",
                 "Rg.Datum",
                 "Rg.Betrag",
                 "Mw-Satz",
                 "Fälligkeit",
                 "Verwendung",
                 // Lieferanten-Datensatz
                 "IBAN",
                 "KundenNummer",
                 "BuchungsKonto",
                 // Name
                 "Firma",
                 "Name",
                 "Vorname",
                 "Geschlecht",
                 // Anschrift
                 "Strasse",
                 "PLZ",
                 "Ort"
                 );
                oIdx["t1"]=rs;
/*


       Beschaffungen: Nachlauf/Abschluß


*/
@FooterBS
var ts=DateTime.Now.ToString("yyyyMMddHHmmssff");
(oIdx["t1"] as Recordset).Export(Path.Combine(dName, "Beschaffung_" + ts + ".csv"));