52 lines
2.6 KiB
C#
52 lines
2.6 KiB
C#
using Elwig.Models;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Elwig.Helpers.Export {
|
|
public class Bki : Csv<DeliveryPart> {
|
|
|
|
private readonly string _clientData;
|
|
|
|
public Bki(string filename) : base(filename, ';', Encoding.Latin1) {
|
|
Header = """
|
|
EDV-Liste zum automatischen Einlesen in die Weindatenbank;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
Stammdaten;;;;;;;;;;;;;;Transportschein;;;;;;;;;;;;;;;;
|
|
Empfänger:;;;;;;;Versender:;;;;;;;;;;;;;;;;;;;;;;;
|
|
Betriebsnr;Name od. Firmenname;Vorname;Straße;Hausnr;Plz;Ort;Betriebsnr;Name od. Firmenname;Vorname;Straße;Hausnr;Plz;Ort;Datum der Lieferung;Menge in kg;Art;Weiß;Rot;Sorte1;Sorte2;Sorte3;Qualitätsstufe;Jahrgang;Herkunft;°KMW;°Oe;Vollablieferer;Ha Gesamt;Ha Ertragsfähig;Flächenbindung in Ha für AMA
|
|
""";
|
|
var c = App.Client;
|
|
var (a1, a2) = Utils.SplitAddress(c.Address);
|
|
_clientData = $"{c.LfbisNr};{c.NameFull};;{a1};{a2};{c.Plz};{c.Ort}";
|
|
}
|
|
|
|
public async Task ExportAsync(AppDbContext ctx, int year) {
|
|
await ExportAsync(await ctx.DeliveryParts.Where(p => p.Year == year).ToListAsync());
|
|
}
|
|
|
|
public void Export(AppDbContext ctx, int year) {
|
|
ExportAsync(ctx, year).GetAwaiter().GetResult();
|
|
}
|
|
|
|
public override string FormatRow(DeliveryPart p) {
|
|
var d = p.Delivery;
|
|
var m = d.Member;
|
|
string memberData;
|
|
if (m.BillingAddress is BillingAddr a) {
|
|
var (n1, n2) = Utils.SplitName(a.Name, m.FamilyName);
|
|
var (a1, a2) = Utils.SplitAddress(a.Address);
|
|
memberData = $"{m.LfbisNr};{n1};{n2};{a1};{a2};{a.PostalDest.AtPlz?.Plz};{a.PostalDest.AtPlz?.Ort.Name}";
|
|
} else {
|
|
var (a1, a2) = Utils.SplitAddress(m.Address);
|
|
memberData = $"{m.LfbisNr};{m.FamilyName};{m.AdministrativeName2};{a1};{a2};{m.PostalDest.AtPlz?.Plz};{m.PostalDest.AtPlz?.Ort.Name}";
|
|
}
|
|
var s = p.Variant;
|
|
var deliveryData = $"{d.Date:dd.MM.yyyy};{p.Weight};TB;{(s.IsWhite ? "J" : "")};{(s.IsRed ? "J" : "")};{s.SortId};;;{p.QualId};{d.Year};{p.HkId};{p.Kmw};{p.Oe}";
|
|
var vollData = $"N;;;{m.AreaCommitments.Where(a => a.YearFrom <= d.Year && (a.YearTo == null || a.YearTo >= d.Year)).Sum(a => a.Area) / 10_000.0}";
|
|
return $"{_clientData};{memberData};{deliveryData};{vollData}";
|
|
}
|
|
}
|
|
}
|