290 lines
10 KiB
C#
290 lines
10 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
using BS.Shared;
|
|
using BS.Shared.DataContracts;
|
|
using BeWo.Data.Entities;
|
|
using BeWo.Data.Access;
|
|
|
|
namespace BeWo.Report.ReportObjects
|
|
{
|
|
public class InvoiceCustomerRO : AbstractBeWoReportObject<InvoiceCustomerRO>
|
|
{
|
|
public string AccountingPeriod { get; set; }
|
|
|
|
public DateTime? AccountingPeriodEnd { get; set; }
|
|
|
|
public DateTime? AccountingPeriodStart { get; set; }
|
|
|
|
public string CreatorFirstName { get; set; }
|
|
|
|
public string CreatorLastName { get; set; }
|
|
|
|
public string CustomerReferenceNumber { get; set; }
|
|
|
|
public string InvoiceDate { get; set; }
|
|
|
|
public List<InvoiceItemRO> InvoiceItems { get; set; }
|
|
|
|
public string InvoiceNumber { get; set; }
|
|
|
|
public string Notice { get; set; }
|
|
|
|
public string RecipientFirstName { get; set; }
|
|
|
|
public string RecipientLastName { get; set; }
|
|
|
|
public string RecipientPostCode { get; set; }
|
|
|
|
public string RecipientSalutation { get; set; }
|
|
|
|
public string RecipientStreet { get; set; }
|
|
|
|
public string RecipientTown { get; set; }
|
|
|
|
public string CustomerFirstName { get; set; }
|
|
|
|
public string CustomerLastName { get; set; }
|
|
|
|
public string CustomerPostCode { get; set; }
|
|
|
|
public string CustomerSalutation { get; set; }
|
|
|
|
public string CustomerStreet { get; set; }
|
|
|
|
public string CustomerTown { get; set; }
|
|
|
|
public DateTime? CustomerBirthdate { get; set; }
|
|
|
|
public string SenderDivision { get; set; }
|
|
|
|
public string SenderFax { get; set; }
|
|
|
|
public string SenderFirstName { get; set; }
|
|
|
|
public string SenderLastName { get; set; }
|
|
|
|
public string SenderPhone { get; set; }
|
|
|
|
public string SenderMail { get; set; }
|
|
|
|
public string TotalClaim { get; set; }
|
|
|
|
public string RecipientSalutationAddressField { get; set; }
|
|
|
|
public string RecipientDivision { get; set; }
|
|
|
|
public string RecipientOrganisation { get; set; }
|
|
|
|
public string RecipientDebitorNumber { get; set; }
|
|
|
|
public string RecipientCostCenter { get; set; }
|
|
|
|
public DateTime InvoiceDateTime { get; set; }
|
|
|
|
public InvoiceBaseDC InvoiceBase { get; set; }
|
|
|
|
public static InvoiceCustomerRO Create(InvoiceBaseDC pDC)
|
|
{
|
|
var result = new InvoiceCustomerRO();
|
|
|
|
result.InvoiceBase = pDC;
|
|
result.AccountingPeriod = pDC.AccountingPeriodStart.Value.ToShortDateString() + " bis " + pDC.AccountingPeriodEnd.Value.ToShortDateString();
|
|
result.CreatorFirstName = pDC.CreatorFirstName;
|
|
result.CreatorLastName = pDC.CreatorLastName;
|
|
result.CustomerReferenceNumber = GetCustomerReferenceNumber(pDC);
|
|
result.InvoiceDateTime = pDC.InvoiceDate.Value;
|
|
result.InvoiceDate = pDC.InvoiceDate.Value.ToShortDateString();
|
|
result.InvoiceItems = pDC.InvoiceItems.Select(ii => InvoiceItemRO.Create(ii)).ToList();
|
|
result.InvoiceNumber = pDC.InvoiceNumber;
|
|
result.Notice = pDC.Notice;
|
|
result.RecipientSalutationAddressField = pDC.RecipientSalutationAddressField;
|
|
result.RecipientFirstName = pDC.RecipientPersonFirstName;
|
|
result.RecipientLastName = pDC.RecipientPersonLastName;
|
|
result.RecipientPostCode = pDC.RecipientPostCode;
|
|
result.RecipientStreet = pDC.RecipientStreet;
|
|
result.RecipientTown = pDC.RecipientTown;
|
|
result.RecipientDivision = pDC.RecipientDivision;
|
|
result.RecipientOrganisation = pDC.RecipientOrganisation;
|
|
result.SenderDivision = pDC.SenderDivision;
|
|
result.SenderFirstName = pDC.SenderFirstName;
|
|
result.SenderLastName = pDC.SenderLastName;
|
|
result.TotalClaim = string.Format("{0:c}", pDC.InvoiceItems.Sum(ii => ii.AmountTotal));
|
|
|
|
Person p = null;
|
|
if (pDC.RecipientPersonOid.HasValue)
|
|
{
|
|
p = DAOFactory.GenericDAO.LoadByID<Person>(pDC.RecipientPersonOid.Value);
|
|
}
|
|
else if (pDC.RecipientCustomerOid.HasValue)
|
|
{
|
|
Customer c = DAOFactory.GenericDAO.LoadByID<Customer>(pDC.RecipientCustomerOid.Value);
|
|
result.RecipientDebitorNumber = c.DebitorNumber;
|
|
result.RecipientCostCenter = c.CostCenter;
|
|
|
|
p = c.Person;
|
|
}
|
|
|
|
result.RecipientSalutation = "Sehr geehrte Damen und Herren,";
|
|
|
|
if (p != null)
|
|
{
|
|
result.RecipientSalutationAddressField = p.Sex == Sex.Male ? "Herr" : "Frau";
|
|
|
|
if (p.InvoiceAddress != null && !String.IsNullOrEmpty(p.InvoiceAddress.AddressLine1))
|
|
{
|
|
result.RecipientFirstName = p.InvoiceAddress.AddressLine1;
|
|
result.RecipientLastName = "";
|
|
}
|
|
//else
|
|
//{
|
|
if (p.Sex == Sex.Male)
|
|
{
|
|
result.RecipientSalutationAddressField = "Herrn";
|
|
result.RecipientSalutation = "Sehr geehrter Herr " + p.LastName+ ",";
|
|
}
|
|
else if (p.Sex == Sex.Female)
|
|
{
|
|
result.RecipientSalutationAddressField = "Frau";
|
|
result.RecipientSalutation = "Sehr geehrte Frau " + p.LastName + ",";
|
|
}
|
|
else if (p.Sex == Sex.Divers || !p.Sex.HasValue)
|
|
{
|
|
result.RecipientSalutationAddressField = "";
|
|
result.RecipientSalutation = "Guten Tag " + p.FirstName + " " + p.LastName + ",";
|
|
}
|
|
|
|
//}
|
|
if (p.Sex == Sex.Male)
|
|
result.CustomerSalutation = "Herr";
|
|
else if (p.Sex == Sex.Female)
|
|
result.CustomerSalutation = "Frau";
|
|
else
|
|
result.CustomerSalutation = "";
|
|
|
|
if (p.Address != null)
|
|
{
|
|
result.CustomerStreet = p.Address.Street;
|
|
result.CustomerTown = p.Address.Town;
|
|
result.CustomerPostCode = p.Address.PostalCode;
|
|
}
|
|
result.CustomerFirstName = p.FirstName;
|
|
result.CustomerLastName = p.LastName;
|
|
result.CustomerBirthdate = p.DateOfBirth;
|
|
}
|
|
|
|
foreach (ContactDC iContactDC in pDC.SenderContactInformations)
|
|
{
|
|
if (iContactDC.ContactType == ContactType.business_Fax)
|
|
{
|
|
result.SenderFax = "Fax: " + iContactDC.ContactValue;
|
|
}
|
|
|
|
if (iContactDC.ContactType == ContactType.business_Phone)
|
|
{
|
|
result.SenderPhone = "Tel.: " + iContactDC.ContactValue;
|
|
}
|
|
|
|
if (iContactDC.ContactType == ContactType.business_Mail)
|
|
{
|
|
result.SenderMail = iContactDC.ContactValue;
|
|
}
|
|
}
|
|
|
|
if (pDC.InvoiceItems != null && pDC.InvoiceItems.Count > 0)
|
|
{
|
|
foreach (InvoiceItemDC item in pDC.InvoiceItems)
|
|
{
|
|
if (item.ItemPeriodStart != null)
|
|
{
|
|
if (result.AccountingPeriodStart == null || result.AccountingPeriodStart > item.ItemPeriodStart)
|
|
{
|
|
result.AccountingPeriodStart = item.ItemPeriodStart;
|
|
}
|
|
}
|
|
|
|
if (item.ItemPeriodEnd != null)
|
|
{
|
|
if (result.AccountingPeriodEnd == null || result.AccountingPeriodEnd < item.ItemPeriodEnd)
|
|
{
|
|
result.AccountingPeriodEnd = item.ItemPeriodEnd;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
private static string GetCustomerReferenceNumber(InvoiceBaseDC pDC)
|
|
{
|
|
if (!String.IsNullOrEmpty(pDC.CustomerReferenceNumber))
|
|
{
|
|
return pDC.CustomerReferenceNumber;
|
|
}
|
|
if (pDC.SupportConceptOid.HasValue)
|
|
{
|
|
var sc = DAOFactory.GenericDAO.GetByID<SupportConcept>(pDC.SupportConceptOid.Value);
|
|
|
|
foreach (var costBearer2SupportConcept in sc.CostBearer2SupportConceptList)
|
|
{
|
|
if (!String.IsNullOrEmpty(costBearer2SupportConcept.CustomerReferenceNumber))
|
|
return costBearer2SupportConcept.CustomerReferenceNumber;
|
|
}
|
|
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public class InvoiceItemRO : AbstractBeWoReportObject<InvoiceItemRO>
|
|
{
|
|
public string AccountingPeriodEnd { get; set; }
|
|
|
|
public string AccountingPeriodStart { get; set; }
|
|
|
|
public DateTime? AccountingPeriodEndDateTime { get; set; }
|
|
|
|
public DateTime? AccountingPeriodStartDateTime { get; set; }
|
|
|
|
public string AmountSum { get; set; }
|
|
|
|
public decimal? AmountTotal { get; set; }
|
|
|
|
public string ItemDescription { get; set; }
|
|
|
|
public decimal UnitCount { get; set; }
|
|
|
|
public decimal? AmountPerUnit { get; set; }
|
|
|
|
public string UnitPrice { get; set; }
|
|
|
|
public static InvoiceItemRO Create(InvoiceItemDC pDC)
|
|
{
|
|
var ii = new InvoiceItemRO
|
|
{
|
|
AccountingPeriodStartDateTime = pDC.ItemPeriodStart,
|
|
AccountingPeriodEndDateTime = pDC.ItemPeriodEnd,
|
|
ItemDescription = pDC.ItemDescription,
|
|
UnitPrice = string.Format("{0:c}", pDC.AmountPerUnit),
|
|
AmountSum = string.Format("{0:c}", pDC.AmountTotal),
|
|
AmountPerUnit = pDC.ApprovedPerUnit,
|
|
AmountTotal = pDC.AmountTotal
|
|
};
|
|
|
|
if (pDC.ItemPeriodStart.HasValue)
|
|
{
|
|
ii.AccountingPeriodStart = pDC.ItemPeriodStart.Value.ToShortDateString();
|
|
}
|
|
if (pDC.ItemPeriodEnd.HasValue)
|
|
{
|
|
ii.AccountingPeriodEnd = pDC.ItemPeriodEnd.Value.ToShortDateString();
|
|
}
|
|
if (pDC.UnitCount.HasValue)
|
|
{
|
|
ii.UnitCount = pDC.UnitCount.Value;
|
|
}
|
|
return ii;
|
|
}
|
|
}
|
|
} |