Files
BeWoPlaner/ReportImp/HilfeDaheim2/Invoicing/CustomInvoiceNumberGenerator.cs
Christian 0480df61a8 CB 14.08.
2017-08-14 11:59:31 +02:00

167 lines
5.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Diagnostics.Eventing.Reader;
using System.Linq;
using System.Text;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.DCEntityMapper;
using BeWo.Service.Invoicing;
using BeWo.Service.Plugins;
using BS.Shared;
using BS.Shared.Core;
using BS.Shared.DataContracts;
using BS.Shared.Services;
namespace SchillingerReports.Invoicing
{
internal class CustomInvoiceNumberGenerator : InvoiceNumberGenerator
{
private String betreuungsart = null;
public override string GetNextInvoiceNumber(int increment, InvoiceBase invoiceBase)
{
string next = String.Empty;
long oid = 1;
String ba = GetBetreuungsart(invoiceBase);
betreuungsart = ba;
if (!String.IsNullOrEmpty(ba) && ba.ToLower().Contains("essen"))
{
oid = 2; // Essen
}
else
{
oid = 1; // Oberhausen
}
InvoiceNumberDC invoiceNumber = LoadInvoiceNumber(oid);
if (invoiceNumber != null && invoiceNumber.Use)
{
next = ApplyPattern(invoiceNumber.Pattern, invoiceNumber.CurrentNumber + increment, invoiceBase);
}
return next;
}
public override string GetNextInvoiceNumber(int increment, Settlement2DC settlementInvoice)
{
string next = String.Empty;
long oid = 1;
String ba = GetBetreuungsart(settlementInvoice);
betreuungsart = ba;
if (!String.IsNullOrEmpty(ba) && ba.ToLower().Contains("essen"))
{
oid = 2; // Essen
}
else
{
oid = 1; // Oberhausen
}
InvoiceNumberDC invoiceNumber = LoadInvoiceNumber(oid);
if (invoiceNumber != null && invoiceNumber.Use)
{
next = ApplyPattern(invoiceNumber.Pattern, invoiceNumber.CurrentNumber + increment, null);
}
return next;
}
public override InvoiceNumberDC LoadInvoiceNumber()
{
long oid = 1;
if (!String.IsNullOrEmpty(betreuungsart) && betreuungsart.ToLower().Contains("essen"))
{
oid = 2; // Essen
}
else
{
oid = 1; // Oberhausen
}
var inr = DAOFactory.GenericDAO.LoadByID<InvoiceNumber>(oid);
if (inr != null)
return MapperFactory.InvoiceNumberDC_InvoiceNumber.MapToNewDC(inr);
return null;
}
protected override string ApplyPattern(string pattern, long number, InvoiceBase invoiceBase)
{
//if (!String.IsNullOrEmpty(betreuungsart) && betreuungsart.ToLower().Contains("essen"))
//{
// pattern = pattern.Replace("11", "12");
//}
String invoiceNumber = base.ApplyPattern(pattern, number, invoiceBase);
invoiceNumber = invoiceNumber.Replace("{mm}", String.Format("{0:MM}", DateTime.Now.Date));
invoiceNumber = invoiceNumber.Replace("{MM}", String.Format("{0:MM}", DateTime.Now.Date));
return invoiceNumber;
}
private InvoiceNumberDC LoadInvoiceNumber(long oid)
{
var inr = DAOFactory.GenericDAO.LoadByID<InvoiceNumber>(oid);
if (inr != null)
return MapperFactory.InvoiceNumberDC_InvoiceNumber.MapToNewDC(inr);
return null;
}
public virtual InvoiceNumberDC UpdateInvoiceNumber(InvoiceNumberDC dc)
{
var old = DAOFactory.GenericDAO.LoadByID<InvoiceNumber>(1);
MapperFactory.InvoiceNumberDC_InvoiceNumber.MergeWithEntity(dc, old);
DAOFactory.GenericDAO.Update(old);
return MapperFactory.InvoiceNumberDC_InvoiceNumber.MapToNewDC(old);
}
private String GetBetreuungsart(InvoiceBase invoiceBase)
{
if (invoiceBase != null)
{
return GetBetreuungsart(invoiceBase.CostBearer2SupportConcept);
}
return "";
}
private string GetBetreuungsart(Settlement2DC settlementInvoice)
{
if (settlementInvoice.CostBearer2SupportConceptOid.HasValue)
{
var c2s =
DAOFactory.GenericDAO.LoadByID<CostBearer2SupportConcept>(
settlementInvoice.CostBearer2SupportConceptOid.Value);
return GetBetreuungsart(c2s);
}
return "";
}
private String GetBetreuungsart(CostBearer2SupportConcept c2s)
{
if (c2s != null)
{
foreach (var v2o in c2s.SupportConcept.Customer.ValueList)
{
if (v2o.Entry.Type == ValueListEntryType.CustomerCareType)
{
return v2o.Entry.Value;
}
}
}
return "";
}
}
}