Service/Plugins/AccountingService.cs - NEU DifferenzRechnung für beide ServiceInvoiceTypen
This commit is contained in:
@@ -97,9 +97,10 @@ namespace BeWo.Service.Plugins
|
||||
protected virtual ServiceInvoiceDC ErstelleDifferenzRechnung(DifferenzRechnungCheck item)
|
||||
{
|
||||
ServiceInvoiceDC diffRechnung = null;
|
||||
var alterBetrag = item.VorhandeneRechungen.Sum(i => i.ClaimSum ?? 0);
|
||||
//var alterBetrag = item.VorhandeneRechungen.Sum(i => i.ClaimSum ?? 0);
|
||||
var letzteRg = item.VorhandeneRechungen.OrderByDescending(r => r.ServiceInvoiceOid).FirstOrDefault();
|
||||
|
||||
if (item.NeueRechnung.ClaimSum == alterBetrag)
|
||||
if (item.NeueRechnung.ClaimSum == letzteRg.ClaimSum)
|
||||
{
|
||||
diffRechnung = item.NeueRechnung;
|
||||
diffRechnung.InvoiceBase.NeuErstellen = false;
|
||||
@@ -107,30 +108,21 @@ namespace BeWo.Service.Plugins
|
||||
}
|
||||
else
|
||||
{
|
||||
diffRechnung = new ServiceInvoiceDC();
|
||||
diffRechnung.OriginalZurDifferenz = item.NeueRechnung;
|
||||
diffRechnung.InvoiceBase = new InvoiceBaseDC();
|
||||
CopyInvoiceBaseDC(item.NeueRechnung.InvoiceBase, diffRechnung);
|
||||
diffRechnung = new ServiceInvoiceDC();
|
||||
diffRechnung.OriginalZurDifferenz = item.NeueRechnung;
|
||||
diffRechnung.InvoiceBase = new InvoiceBaseDC();
|
||||
CopyInvoiceBaseDC(item.NeueRechnung.InvoiceBase, diffRechnung);
|
||||
|
||||
var newItem = new InvoiceItemDC();
|
||||
newItem.ItemPeriodStart = item.NeueRechnung.InvoiceBase.AccountingPeriodStart;
|
||||
newItem.ItemPeriodEnd = item.NeueRechnung.InvoiceBase.AccountingPeriodEnd;
|
||||
newItem.UnitCount = 1;
|
||||
newItem.AmountPerUnit = item.NeueRechnung.ClaimSum - alterBetrag;
|
||||
newItem.AmountTotal = newItem.AmountPerUnit;
|
||||
newItem.GrossAmountTotal = newItem.AmountTotal;
|
||||
newItem.ItemDescription = String.Format("Rechnungsdifferenz zu Rechnung {0} in Höhe von {1:c}", item.VorhandeneRechungen[0].InvoiceBase.InvoiceNumber, alterBetrag);
|
||||
diffRechnung.InvoiceBase.Hinweise = String.Format("Rechnungsdifferenz zu Rechnung {0} in Höhe von {1:c}", item.VorhandeneRechungen[0].InvoiceBase.InvoiceNumber, alterBetrag);
|
||||
ServiceInvoice counterInvoice = new ServiceInvoice();
|
||||
var serviceInvoice = DAOFactory.SearchDAO.GetServiceInvoiceByInvoiceBaseOid(letzteRg.InvoiceBase.InvoiceBaseOid.Value);
|
||||
|
||||
var newSip = new ServiceInvoicePeriodDC();
|
||||
newSip.Claim = newItem.AmountTotal;
|
||||
newSip.Start = item.NeueRechnung.InvoiceBase.AccountingPeriodStart;
|
||||
newSip.End = item.NeueRechnung.InvoiceBase.AccountingPeriodEnd;
|
||||
diffRechnung.ServiceInvoicePeriods = new List<ServiceInvoicePeriodDC>();
|
||||
diffRechnung.ServiceInvoicePeriods.Add(newSip);
|
||||
newSip.InvoiceItems = new List<InvoiceItemDC>();
|
||||
newSip.InvoiceItems.Add(newItem);
|
||||
}
|
||||
CopyServiceInvoice(serviceInvoice, counterInvoice);
|
||||
SetzeStornoInfos(counterInvoice);
|
||||
SetzeRechnungspositionenServiceInvoice(diffRechnung, counterInvoice, item);
|
||||
|
||||
diffRechnung.InvoiceBase.NeuErstellen = true;
|
||||
diffRechnung.InvoiceBase.Hinweise = String.Format("Rechnungsdifferenz zu Rechnung {0} in Höhe von {1:c}", letzteRg.InvoiceBase.InvoiceNumber, letzteRg.InvoiceBase.TotalAmount.Value);
|
||||
}
|
||||
return diffRechnung;
|
||||
}
|
||||
|
||||
@@ -153,30 +145,33 @@ namespace BeWo.Service.Plugins
|
||||
var siAlt = DAOFactory.SearchDAO.GetServiceInvoiceByInvoiceBaseOid(i2.Oid.Value);
|
||||
var siDCAlt = MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewDC(siAlt);
|
||||
|
||||
//InvoiceItems vergleichen?
|
||||
//foreach (var sip in si.ServiceInvoicePeriods)
|
||||
//{
|
||||
// foreach (var ii in sip.InvoiceItems)
|
||||
// {
|
||||
// typNeu = ii.ItemDescription;
|
||||
// }
|
||||
//}
|
||||
|
||||
//foreach (var sip in siAlt.ServiceInvoicePeriodList)
|
||||
//{
|
||||
// foreach (var ii in sip.InvoiceItemList)
|
||||
// {
|
||||
// typAlt = ii.ItemDescription;
|
||||
// }
|
||||
//}
|
||||
|
||||
//if (typAlt == typNeu)
|
||||
//{
|
||||
// exist = true;
|
||||
//}
|
||||
|
||||
checkResult.VorhandeneRechungen.Add(siDCAlt);
|
||||
}
|
||||
else // Sammelrechnung
|
||||
{
|
||||
if (i2.RecipientCostBearerOid == invoices[0].InvoiceBase.RecipientCostBearerOid)
|
||||
{
|
||||
var siAlt = DAOFactory.SearchDAO.GetServiceInvoiceByInvoiceBaseOid(i2.Oid.Value);
|
||||
var siDCAlt = MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewDC(siAlt);
|
||||
if (siAlt.ServiceInvoicePeriodList != null && siAlt.ServiceInvoicePeriodList.Count > 0)
|
||||
{
|
||||
foreach (var i in invoices)
|
||||
{
|
||||
if (i.ServiceInvoicePeriods != null && i.ServiceInvoicePeriods.Count > 0)
|
||||
{
|
||||
foreach (var sip in siDCAlt.ServiceInvoicePeriods)
|
||||
{
|
||||
if (sip.Customer != null && i.ServiceInvoicePeriods.Any(s => s.Customer.CustomerOid == sip.Customer.CustomerOid))
|
||||
{
|
||||
checkResult.VorhandeneRechungen.Add(siDCAlt);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
@@ -230,7 +225,6 @@ namespace BeWo.Service.Plugins
|
||||
return MapperFactory.InvoiceBaseDC_InvoiceBase.MapToNewDCs(list);
|
||||
}
|
||||
|
||||
|
||||
public virtual void DeactivateInvoiceBases(List<InvoiceBaseDC> invoices)
|
||||
{
|
||||
ServiceLogic.SetActivationType<InvoiceBase>(invoices.ToDictionary(i => i.InvoiceBaseOid.Value, i => i.InvoiceBaseVersion.Value), ActivationTypeId.Deleted);
|
||||
@@ -276,7 +270,6 @@ namespace BeWo.Service.Plugins
|
||||
public virtual ServiceInvoice ErstelleStornoRechnung(InvoiceBaseDC ibdc)
|
||||
{
|
||||
ServiceInvoice newInvoice = new ServiceInvoice();
|
||||
|
||||
var serviceInvoice = DAOFactory.SearchDAO.GetServiceInvoiceByInvoiceBaseOid(ibdc.InvoiceBaseOid.Value);
|
||||
|
||||
CopyServiceInvoice(serviceInvoice, newInvoice);
|
||||
@@ -364,7 +357,6 @@ namespace BeWo.Service.Plugins
|
||||
copyInvoice.AmountAdvancePayments = existingInvoice.AmountAdvancePayments;
|
||||
copyInvoice.AmountEquityContribution = existingInvoice.AmountEquityContribution;
|
||||
copyInvoice.ServiceUnitOid = existingInvoice.ServiceUnitOid;
|
||||
|
||||
|
||||
CopyInvoiceBase(existingInvoice.InvoiceBase, copyInvoice.InvoiceBase);
|
||||
|
||||
@@ -575,7 +567,52 @@ namespace BeWo.Service.Plugins
|
||||
copyItem.ServiceRecord = existingItem.ServiceRecord;
|
||||
}
|
||||
|
||||
public virtual Settlement2DC ErstelleDifferenzSpitzabrechnung(Settlement2DC neueRechnung, Settlement2DC letzteRechnung)
|
||||
private void SetzeRechnungspositionenServiceInvoice(ServiceInvoiceDC diffRechnung, ServiceInvoice counterInvoice, DifferenzRechnungCheck item)
|
||||
{
|
||||
var siDCAlt = MapperFactory.ServiceInvoiceDC_ServiceInvoice.MapToNewDC(counterInvoice);
|
||||
if (siDCAlt.ServiceInvoicePeriods != null && siDCAlt.ServiceInvoicePeriods.Count > 0)
|
||||
{
|
||||
diffRechnung.ServiceInvoicePeriods = siDCAlt.ServiceInvoicePeriods;
|
||||
}
|
||||
|
||||
if (item.NeueRechnung.ServiceInvoicePeriods != null && item.NeueRechnung.ServiceInvoicePeriods.Count > 0)
|
||||
{
|
||||
if (diffRechnung.ServiceInvoicePeriods == null)
|
||||
{
|
||||
diffRechnung.ServiceInvoicePeriods = item.NeueRechnung.ServiceInvoicePeriods;
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var NewSip in item.NeueRechnung.ServiceInvoicePeriods)
|
||||
{
|
||||
if (NewSip.InvoiceItems != null && NewSip.InvoiceItems.Count > 0)
|
||||
{
|
||||
if (NewSip.Customer != null && diffRechnung.ServiceInvoicePeriods.Any(s => s.Customer.CustomerOid == NewSip.Customer.CustomerOid) &&
|
||||
NewSip.SupportConceptApprovalPeriod != null && NewSip.SupportConceptApprovalPeriod.SupportConceptApprovalPeriodOid.HasValue
|
||||
&& diffRechnung.ServiceInvoicePeriods.Any(s => s.SupportConceptApprovalPeriod.SupportConceptApprovalPeriodOid.HasValue
|
||||
&& s.SupportConceptApprovalPeriod.SupportConceptApprovalPeriodOid.Value == NewSip.SupportConceptApprovalPeriod.SupportConceptApprovalPeriodOid.Value))
|
||||
{
|
||||
var ip = diffRechnung.ServiceInvoicePeriods.Where(s => s.SupportConceptApprovalPeriod.SupportConceptApprovalPeriodOid.Value == NewSip.SupportConceptApprovalPeriod.SupportConceptApprovalPeriodOid.Value).First();
|
||||
if (ip.InvoiceItems != null && ip.InvoiceItems.Count > 0)
|
||||
{
|
||||
ip.Claim += NewSip.Claim;
|
||||
foreach (var ii in NewSip.InvoiceItems)
|
||||
{
|
||||
ip.InvoiceItems.Add(ii);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
diffRechnung.ServiceInvoicePeriods.Add(NewSip);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public virtual Settlement2DC ErstelleDifferenzSpitzabrechnung(Settlement2DC neueRechnung, Settlement2DC letzteRechnung)
|
||||
{
|
||||
var diff = neueRechnung.Claim - letzteRechnung.Claim;
|
||||
var ii = new InvoiceItemDC();
|
||||
|
||||
Reference in New Issue
Block a user