167 lines
5.0 KiB
C#
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 "";
|
|
}
|
|
}
|
|
}
|