Closed olibrian closed 3 years ago
Zur späteren Referenz, hier das Skript das ich für diesen Export verwendet habe:
m = Message::LetterWithInvoice.find(...)
def group_households(list)
list.each_with_object(Hash.new { |h, k| h[k] = [] }) do |person, memo|
memo[person.household_key.presence || SecureRandom.uuid] << person
end.values
end
l = InvoiceList.find(m.invoice_list_id)
def household_cols(household, l, m)
household.drop(1).map {|p| i=l.invoices.find_or_initialize_by(recipient_id: p.id); [p.first_name, p.last_name, Salutation.new(p, m.salutation).value, p.gender, p.correspondence_language, i.reference]}.flatten
end
File.open("in-puncto.csv", "w") {|f| f.write(group_households(m.recipients.unscope(:select)).map {|people| p=people.first; i=l.invoices.find_or_initialize_by(recipient_id: p.id); [i.esr_number, i.recipient_email, i.recipient_address, i.reference, 0, p.first_name, p.last_name, p.company_name, p.company, p.email, p.address, p.zip_code, p.town, p.country, p.gender, p.birthday, Salutation.new(p, m.salutation).value, p.title, p.correspondence_language, p.household_key?].concat(household_cols(people, l, m)) }.inject([]) { |csv, row| csv << CSV.generate_line(row) }.join(""))}
Partiell durchgelaufenen BatchCreate Job fortsetzen:
m = Message.find(...)
l = InvoiceList.find(m.invoice_list_id);
l.invoices.count
l.invoice = m.invoice;
batch_create = Invoice::BatchCreate.new(l, m.mailing_list.people.where.not(l.invoices.where('invoices.recipient_id = people.id').arel.exists));
batch_create.call;
total_invoices = InvoiceList.find(l.id).invoices.count;
m.update(success_count: total_invoices, failed_count: m.failed_count + batch_create.results.count(false));
l.update(recipients_processed: total_invoices);
Der Export wurde inzwischen in https://github.com/hitobito/hitobito_die_mitte/commit/bc63b0eed46b30f0d2faf6a57cbe039c43c5e52d implementiert.
Für den Versand des Magazins "in puncto" braucht die Mitte einen einmaligen Export für die Druckerei. Die Mitte erfasst ein Abo und erstellt eine Rechnung. Daten von dieser Sammelrechnungen sollen exportiert werden.
Ein Export, kombiniert aus den Tabellen Personen und Rechnungen mit folgenden Attribute
Rechnung
Person
Von der Person im Haushalt:
Ergänzung:
Mockup
hier folgt ein Mockup ...
Tech-Spec