Files
BeWoPlaner/Report/ReportObjects/GkvAbrechnungRO.cs

109 lines
4.5 KiB
C#

using BeWo.Data.Entities;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.GkvAbrechnung;
using BS.Shared.Extensions;
using BS.Shared.Models;
using DevExpress.XtraPrinting.Drawing;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BeWo.Report.ReportObjects
{
public class GkvAbrechnungRO : AbstractBeWoReportObject<GkvAbrechnungRO>
{
public string SenderOrganisationName { get; set; }
public string SenderStreet { get; set; }
public string SenderPostCodeAndTown { get; set; }
public string SenderPhone { get; set; }
public string SenderFax { get; set; }
public string SenderMail { get; set; }
public string SenderWebsite { get; set; }
public string SenderContactPerson { get; set; }
public string SenderBankName { get; set; }
public string SenderBankIBAN { get; set; }
public string SenderBankBIC { get; set; }
public string ReceiverDatenannahmestelle { get; set; }
public string ReceiverContactPerson { get; set; }
public string ReceiverDivision { get; set; }
public string ReceiverStreet { get; set; }
public string ReceiverPostCodeAndTown { get; set; }
public string KrankenkasseIK { get; set; }
public string KrankenkasseName { get; set; }
public string SenderIK { get; set; }
public string Rechnungsnummer { get; set; }
public string Rechnungsdatum { get; set; }
public string AnzahlDerUrbelege { get; set; }
public InvoiceBaseDC InvoiceBase { get; set; }
public ImageSource Logo { get; set; }
public static GkvAbrechnungRO Create(GkvAbrechnungDC abrechnung, Mandator mandator, Employee employee, AddressInformation addressInformation)
{
var protokoll = (GkvTransferProtokollDC)abrechnung.LastTransferProtokoll;
var organisation = abrechnung.Organisation;
var invoicebase = abrechnung.InvoiceBases.First();
var result = new GkvAbrechnungRO();
result.SenderOrganisationName = addressInformation.OrganisationName;
result.SenderStreet = addressInformation.Street;
result.SenderPostCodeAndTown = $"{addressInformation.PostCode} {addressInformation.Town}";
result.SenderWebsite = addressInformation.Website;
result.SenderBankName = mandator.BankAccount.BankName;
result.SenderBankIBAN = mandator.BankAccount.IBAN;
result.SenderBankBIC = mandator.BankAccount.Bic;
var person = mandator.SoziotherapieAnsprechpartner?.Person ?? employee.Person;
result.SenderContactPerson = person.FirstNameLastName;
result.SenderPhone = addressInformation.Phone;
result.SenderFax = addressInformation.Fax;
result.SenderMail = addressInformation.Mail;
var receiver_first = invoicebase.RecipientPersonFirstName;
var receiver_last = invoicebase.RecipientPersonLastName;
var receiver_first_last = receiver_first.ToFormatFollows(receiver_last);
//result.ReceiverDatenannahmestelle = invoicebase.RecipientOrganisation.ToNullIfEmpty();
result.ReceiverDatenannahmestelle = organisation.BezDatenannahmestelle.ToNullIfEmpty();
//result.ReceiverContactPerson = receiver_first_last;
var datenannahmestelle = organisation.GetDatenannahmestelleAddress();
var datenannahme_postcode = datenannahmestelle.PostalCode;
var datenannahme_town = datenannahmestelle.Town;
var datenannahme_postcode_town = datenannahme_postcode.ToFormatFollows(datenannahme_town);
//result.ReceiverDivision = datenannahmestelle.AddressLine1.ToNullIfEmpty();
result.ReceiverStreet = datenannahmestelle.Street.ToNullIfEmpty();
result.ReceiverPostCodeAndTown = datenannahme_postcode_town;
result.KrankenkasseIK = organisation.IKKostentrager;
result.KrankenkasseName = organisation.Name;
result.SenderIK = addressInformation.IKLeistungserbringer;
result.Rechnungsnummer = protokoll.Rechnungsnummer;
result.Rechnungsdatum = protokoll.ErstelltAm.Value.ToString("dd.MM.yyyy");
result.AnzahlDerUrbelege = string.Empty;
result.InvoiceBase = invoicebase;
if(mandator.Logo?.Original is object)
result.Logo = new ImageSource(false, mandator.Logo.Original);
return result;
}
}
}