1. GetStatus auf type=1 geändert.
2. Bei den Bargeldkassen Bugs gefixt (ist noch nicht fertig).
3. Fehler bezüglich jsonResult in mobileUtils.js gefixt.
4. Meldung bei Login wegen GetStatus eingebaut.
This commit is contained in:
2024-03-01 16:59:35 +01:00
parent 3ab5968cb9
commit 2663ce41ce
9 changed files with 380 additions and 231 deletions

View File

@@ -4108,6 +4108,7 @@ namespace BeWo.Service.ServiceImplementations
{
if(originalTransaction.SignatureOid.HasValue)
{
signatureOids2Delete.AddRangeIfElementsNotIn(DAOFactory.SearchDAO.LoadSignatureOidsByTransaktionOid(originalTransaction.BargeldtransaktionOid.Value));
signatureOids2Delete.AddIfNotIn(originalTransaction.SignatureOid.Value);
}
@@ -4129,14 +4130,20 @@ namespace BeWo.Service.ServiceImplementations
{
var newSignatureState = SignatureStateType.None;
// Wenn die Transaktion eine Unterschrift vor der Änderung hatte, wird diese als ungültig gespeichert und die Transaktion gelöscht.
// Wenn die Transaktion eine Unterschrift vor der Änderung hatte, wird diese als ungültig gespeichert und gelöscht.
if(changedOrDeletedTransactionDC.SignatureOid.HasValue)
{
newSignatureState = SignatureStateType.Invalid;
if(originalTransaction.BargeldtransaktionOid.HasValue)
{
deletedOids.AddIfNotIn(originalTransaction.BargeldtransaktionOid.Value);
}
signatureOids2Delete.AddRangeIfElementsNotIn(DAOFactory.SearchDAO.LoadSignatureOidsByTransaktionOid(changedOrDeletedTransactionDC.BargeldtransaktionOid.Value));
signatureOids2Delete.AddIfNotIn(changedOrDeletedTransactionDC.SignatureOid.Value);
changedOrDeletedTransactionDC.SignatureOid = null;
}
// Die Unterschrift wurde gelöscht
else if(changedOrDeletedTransactionDC.SignatureOid is null && originalTransaction.SignatureOid.HasValue)
{
signatureOids2Delete.AddRangeIfElementsNotIn(DAOFactory.SearchDAO.LoadSignatureOidsByTransaktionOid(changedOrDeletedTransactionDC.BargeldtransaktionOid.Value));
newSignatureState = SignatureStateType.ManuallyDeleted;
}
oids2ChangeTypes.AddIfNotIn(new KeyValuePair<long, KeyValuePair<StatementType, SignatureStateType>>(
@@ -4152,6 +4159,7 @@ namespace BeWo.Service.ServiceImplementations
var deletedTransactions = DAOFactory.GenericDAO.LoadByIDs<Bargeldtransaktion>(deletedOids);
var signatures2Delete = new List<Signature>();
// Die Transaktion wurde gelöscht
foreach(var deletedTransaction in deletedTransactions)
{
var signatureStateType = SignatureStateType.None;
@@ -4167,19 +4175,19 @@ namespace BeWo.Service.ServiceImplementations
transactionHistoryEntries.Add(CreateTransactionHistoryObject(deletedTransaction, StatementType.Delete, signatureStateType));
}
MapperFactory.BargeldkassenDCBargeldkasseDC_BargeldkassenDCBargeldkasse.MergeWithEntity(pBargeldkasse, lOriginal);
var newTransactions = lOriginal.Bargeldtransaktionen.Where(transaction => transaction.Oid is null).ToList();
DAOFactory.GenericDAO.Update(lOriginal);
// Nach dem Insert der neuen Transaktionen haben diese eine Oid und es können die History-Einträge gemacht werden
foreach(var newTransaction in newTransactions)
{
transactionHistoryEntries.Add(CreateTransactionHistoryObject(newTransaction, StatementType.Insert, SignatureStateType.None));
}
// Die History-Einträge für die bearbeiteten werden gemacht
foreach(var oid2ChangeTypes in oids2ChangeTypes)
{
var editedTransaction = lOriginal.Bargeldtransaktionen.FirstOrDefault(transaction => transaction.Oid.HasValue && transaction.Oid.Value.Equals(oid2ChangeTypes.Key));
@@ -4194,7 +4202,9 @@ namespace BeWo.Service.ServiceImplementations
DAOFactory.GenericDAO.Insert(transactionHistoryEntries);
DAOFactory.GenericDAO.Delete(DAOFactory.GenericDAO.LoadByIDs<Signature>(signatures2Delete.Where(s => s.Oid.HasValue).Select(s => s.Oid.Value)));
signatureOids2Delete.AddRangeIfElementsNotIn(signatures2Delete.Where(s => s.Oid.HasValue).Select(s => s.Oid.Value));
DAOFactory.GenericDAO.Delete(DAOFactory.GenericDAO.LoadByIDs<Signature>(signatureOids2Delete));
return MapperFactory.BargeldkassenDCBargeldkasseDC_BargeldkassenDCBargeldkasse.MapToNewDC(lOriginal);
}
@@ -4224,9 +4234,7 @@ namespace BeWo.Service.ServiceImplementations
{
var bargeldkasse = DAOFactory.GenericDAO.LoadByID<Bargeldkasse>(pOid);
var signatureOids2Delete = bargeldkasse.Bargeldtransaktionen.Where(transaction => transaction.SignatureOid.HasValue).Select(transaction => transaction.SignatureOid.Value).ToList();
var signatures2Delete = DAOFactory.GenericDAO.LoadByIDs<Signature>(signatureOids2Delete);
var signatures2Delete = DAOFactory.SearchDAO.LoadSignaturesByTransactionOids(bargeldkasse.Bargeldtransaktionen.Where(transaction => transaction.SignatureOid.HasValue).Select(transaction => transaction.SignatureOid.Value).ToList());
var historyEntries = new List<Bargeldtransaktionshistory>();
@@ -4241,6 +4249,15 @@ namespace BeWo.Service.ServiceImplementations
DAOFactory.GenericDAO.Insert(historyEntries);
ServiceLogic.SetActivationType<Bargeldkasse>(new Dictionary<long, long> { { pOid, pVersion } }, ActivationTypeId.Deleted);
// SignatureOids aus den Transaktionen löschen, da die Signature-Objekte gelöscht wurden
bargeldkasse = DAOFactory.GenericDAO.LoadByID<Bargeldkasse>(pOid);
foreach(var transaction in bargeldkasse.Bargeldtransaktionen)
{
transaction.SignatureOid = null;
}
DAOFactory.GenericDAO.Update(bargeldkasse);
}
catch (Exception e)
{