Codebasis als Dateien ins Arbeitsrepo statt als Gitlink

QuellCode/CentronERP war nur als Gitlink (Submodul-Referenz auf 79c1142)
getrackt, ohne .gitmodules und ohne erreichbares Remote. Der
Untersuchungsgegenstand der Versuchsreihe war damit nicht reproduzierbar
gesichert: Ein Klon haette ein leeres Verzeichnis erhalten, und die Belege
der 3.287 Anforderungen waeren nicht ueberpruefbar gewesen.

Umstellung:
- Historie nach c:\DEV\CentronERP_git_snapshot_79c1142 ausgelagert
  (vollstaendig lesbar, enthaelt 79c1142 und Vorgaenger 89ccfd6)
- Gitlink aus dem Index entfernt
- Dateiinhalt aufgenommen: 24.557 Dateien, rund 333 MB

Die verschachtelte .gitignore der Codebasis gilt weiter, Build-Artefakte
bleiben ausgeschlossen. Details in Versuche/Versuch_01/_Codebasis-Nachweis.md
This commit is contained in:
Christoph Schwörer
2026-08-26 07:43:51 +02:00
parent 18edae75b6
commit f045b99a25
24664 changed files with 5846716 additions and 1 deletions
@@ -0,0 +1,7 @@
{
Data: null,
Error: null,
Message: 'Account muss ausgewählt sein.',
MessageCode: null,
Status: 2
}
@@ -0,0 +1,35 @@
{
Data: {
AccountAddressContactI3D: 8,
AccountI3D: 1,
ActivityKind: 3,
CampaignI3D: null,
Caption: 'Why are murders in Kentucky so hard to solve?',
ChangedByI3D: 22,
ChangedDate: DateTime,
CreatedByI3D: 22,
CreatedDate: DateTime,
DateFrom: null,
DateTo: null,
DirectoryI3D: null,
DueDate: null,
EditorI3D: 22,
HasDocuments: false,
I3D: 8066,
IsDone: false,
ProcessActivityI3D: null,
ProjectNumber: '',
Rating: 0,
RecurrenceDate: null,
ReferenceObjectI3D: null,
ReferenceObjectKind: null,
SyncWithOutlook: false,
Text: 'Because there are no dental records and all the DNA matches.',
TextRtf: '',
TodoI3D: 20744
},
Error: null,
Message: null,
MessageCode: null,
Status: 0
}
@@ -0,0 +1,35 @@
{
Data: {
AccountAddressContactI3D: 9,
AccountI3D: 1028,
ActivityKind: 1,
CampaignI3D: null,
Caption: 'What did the teddy bear eat for lunch?',
ChangedByI3D: 22,
ChangedDate: DateTime,
CreatedByI3D: 22,
CreatedDate: DateTime,
DateFrom: DateTime,
DateTo: DateTime,
DirectoryI3D: null,
DueDate: null,
EditorI3D: 27,
HasDocuments: false,
I3D: 8067,
IsDone: false,
ProcessActivityI3D: null,
ProjectNumber: '',
Rating: 4,
RecurrenceDate: null,
ReferenceObjectI3D: null,
ReferenceObjectKind: null,
SyncWithOutlook: true,
Text: 'Nothing, he was stuffed.',
TextRtf: '',
TodoI3D: 20746
},
Error: null,
Message: null,
MessageCode: null,
Status: 0
}
@@ -0,0 +1,9 @@
{
Data: {
I3D: 8067
},
Error: null,
Message: null,
MessageCode: null,
Status: 0
}
@@ -0,0 +1,12 @@
{
Data: {
Count: 0,
CurrentPage: 0,
PageCount: 0,
Result: []
},
Error: null,
Message: null,
MessageCode: null,
Status: 0
}
@@ -0,0 +1,47 @@
{
Data: {
Count: 1,
CurrentPage: 0,
PageCount: 0,
Result: [
{
Account: 'Celos Software GmbH.\r\n',
AccountI3D: 1028,
ActivityKind: 1,
Adviser1I3D: 22,
Adviser2I3D: null,
Adviser3I3D: null,
Adviser4I3D: null,
Adviser5I3D: null,
Adviser6I3D: null,
CampaignI3D: null,
Caption: 'What did the teddy bear eat for lunch?',
ContactEMail1: 'bauer@c-entron.de',
ContactI3D: 9,
ContactName: 'Frau Elisabeth Bauer',
ContactPhone1: '',
CreatedBy: 'ADMIN',
CreatedByI3D: 22,
CreatedDate: DateTime,
DateFrom: DateTime,
DateTo: DateTime,
DueDate: null,
Editor: 'ABO',
EditorI3D: 27,
HasDocuments: false,
I3D: 8067,
IsDone: true,
ProcessActivityI3D: null,
ProjectNumber: '',
Rating: 2,
RecurrenceDate: null,
SalesAreaI3D: null,
Text: 'Nothing, he was stuffed.'
}
]
},
Error: null,
Message: null,
MessageCode: null,
Status: 0
}
@@ -0,0 +1,41 @@
{
Data: {
AccountActivity: {
AccountAddressContactI3D: 9,
AccountI3D: 1028,
ActivityKind: 1,
CampaignI3D: null,
Caption: 'What did the teddy bear eat for lunch?',
ChangedByI3D: 22,
ChangedDate: DateTime,
CreatedByI3D: 22,
CreatedDate: DateTime,
DateFrom: DateTime,
DateTo: DateTime,
DirectoryI3D: null,
DueDate: null,
EditorI3D: 27,
HasDocuments: false,
I3D: 8067,
IsDone: true,
ProcessActivityI3D: null,
ProjectNumber: '',
Rating: 2,
RecurrenceDate: null,
ReferenceObjectI3D: null,
ReferenceObjectKind: null,
SyncWithOutlook: true,
Text: 'Nothing, he was stuffed.',
TextRtf: '',
TodoI3D: null
},
I3D: 1,
ReceiptI3D: 1311,
ReceiptKind: 2,
ReceiptNumber: 20312
},
Error: null,
Message: null,
MessageCode: null,
Status: 0
}
@@ -0,0 +1,41 @@
{
Data: {
AccountActivity: {
AccountAddressContactI3D: 2,
AccountI3D: 1,
ActivityKind: 0,
CampaignI3D: null,
Caption: 'Angebot für einen Drucker',
ChangedByI3D: 44,
ChangedDate: DateTime,
CreatedByI3D: 44,
CreatedDate: DateTime,
DateFrom: null,
DateTo: null,
DirectoryI3D: null,
DueDate: DateTime,
EditorI3D: 44,
HasDocuments: false,
I3D: 1117,
IsDone: false,
ProcessActivityI3D: null,
ProjectNumber: '',
Rating: 0,
RecurrenceDate: DateTime,
ReferenceObjectI3D: null,
ReferenceObjectKind: null,
SyncWithOutlook: false,
Text: '',
TextRtf: '{\rtf1\deff0{\fonttbl{\f0 Calibri;}}{\colortbl ;\red0\green0\blue255 ;}{\*\defchp \fs22}{\stylesheet {\ql\fs22 Normal;}{\*\cs1\fs22 Default Paragraph Font;}{\*\cs2\sbasedon1\fs22 Line Number;}{\*\cs3\ul\fs22\cf1 Hyperlink;}{\*\ts4\tsrowd\fs22\ql\tscellpaddfl3\tscellpaddl108\tscellpaddfb3\tscellpaddfr3\tscellpaddr108\tscellpaddft3\tsvertalt\cltxlrtb Normal Table;}{\*\ts5\tsrowd\sbasedon4\fs22\ql\trbrdrt\brdrs\brdrw10\trbrdrl\brdrs\brdrw10\trbrdrb\brdrs\brdrw10\trbrdrr\brdrs\brdrw10\trbrdrh\brdrs\brdrw10\trbrdrv\brdrs\brdrw10\tscellpaddfl3\tscellpaddl108\tscellpaddfr3\tscellpaddr108\tsvertalt\cltxlrtb Table Simple 1;}}{\*\listoverridetable}{\info{\version1}}\nouicompat\splytwnine\htmautsp\sectd\pard\plain\ql\fs22\par}',
TodoI3D: 19209
},
I3D: 2,
ReceiptI3D: 1311,
ReceiptKind: 2,
ReceiptNumber: 20312
},
Error: null,
Message: null,
MessageCode: null,
Status: 0
}
@@ -0,0 +1,78 @@
{
Data: [
{
AccountActivity: {
AccountAddressContactI3D: 2,
AccountI3D: 1,
ActivityKind: 0,
CampaignI3D: null,
Caption: 'Angebot für einen Drucker',
ChangedByI3D: 44,
ChangedDate: DateTime,
CreatedByI3D: 44,
CreatedDate: DateTime,
DateFrom: null,
DateTo: null,
DirectoryI3D: null,
DueDate: DateTime,
EditorI3D: 44,
HasDocuments: false,
I3D: 1117,
IsDone: false,
ProcessActivityI3D: null,
ProjectNumber: '',
Rating: 0,
RecurrenceDate: DateTime,
ReferenceObjectI3D: null,
ReferenceObjectKind: null,
SyncWithOutlook: false,
Text: '',
TextRtf: '{\rtf1\deff0{\fonttbl{\f0 Calibri;}}{\colortbl ;\red0\green0\blue255 ;}{\*\defchp \fs22}{\stylesheet {\ql\fs22 Normal;}{\*\cs1\fs22 Default Paragraph Font;}{\*\cs2\sbasedon1\fs22 Line Number;}{\*\cs3\ul\fs22\cf1 Hyperlink;}{\*\ts4\tsrowd\fs22\ql\tscellpaddfl3\tscellpaddl108\tscellpaddfb3\tscellpaddfr3\tscellpaddr108\tscellpaddft3\tsvertalt\cltxlrtb Normal Table;}{\*\ts5\tsrowd\sbasedon4\fs22\ql\trbrdrt\brdrs\brdrw10\trbrdrl\brdrs\brdrw10\trbrdrb\brdrs\brdrw10\trbrdrr\brdrs\brdrw10\trbrdrh\brdrs\brdrw10\trbrdrv\brdrs\brdrw10\tscellpaddfl3\tscellpaddl108\tscellpaddfr3\tscellpaddr108\tsvertalt\cltxlrtb Table Simple 1;}}{\*\listoverridetable}{\info{\version1}}\nouicompat\splytwnine\htmautsp\sectd\pard\plain\ql\fs22\par}',
TodoI3D: 19209
},
I3D: 2,
ReceiptI3D: 1311,
ReceiptKind: 2,
ReceiptNumber: 20312
},
{
AccountActivity: {
AccountAddressContactI3D: 9,
AccountI3D: 1028,
ActivityKind: 1,
CampaignI3D: null,
Caption: 'What did the teddy bear eat for lunch?',
ChangedByI3D: 22,
ChangedDate: DateTime,
CreatedByI3D: 22,
CreatedDate: DateTime,
DateFrom: DateTime,
DateTo: DateTime,
DirectoryI3D: null,
DueDate: null,
EditorI3D: 27,
HasDocuments: false,
I3D: 8067,
IsDone: true,
ProcessActivityI3D: null,
ProjectNumber: '',
Rating: 2,
RecurrenceDate: null,
ReferenceObjectI3D: null,
ReferenceObjectKind: null,
SyncWithOutlook: true,
Text: 'Nothing, he was stuffed.',
TextRtf: '',
TodoI3D: null
},
I3D: 1,
ReceiptI3D: 1311,
ReceiptKind: 2,
ReceiptNumber: 20312
}
],
Error: null,
Message: null,
MessageCode: null,
Status: 0
}
@@ -0,0 +1,6 @@
{
Error: null,
Message: null,
MessageCode: null,
Status: 0
}
@@ -0,0 +1,43 @@
{
Data: [
{
AccountActivity: {
AccountAddressContactI3D: 9,
AccountI3D: 1028,
ActivityKind: 1,
CampaignI3D: null,
Caption: 'What did the teddy bear eat for lunch?',
ChangedByI3D: 22,
ChangedDate: DateTime,
CreatedByI3D: 22,
CreatedDate: DateTime,
DateFrom: DateTime,
DateTo: DateTime,
DirectoryI3D: null,
DueDate: null,
EditorI3D: 27,
HasDocuments: false,
I3D: 8067,
IsDone: true,
ProcessActivityI3D: null,
ProjectNumber: '',
Rating: 2,
RecurrenceDate: null,
ReferenceObjectI3D: null,
ReferenceObjectKind: null,
SyncWithOutlook: true,
Text: 'Nothing, he was stuffed.',
TextRtf: '',
TodoI3D: null
},
I3D: 1,
ReceiptI3D: 1311,
ReceiptKind: 2,
ReceiptNumber: 20312
}
],
Error: null,
Message: null,
MessageCode: null,
Status: 0
}
@@ -0,0 +1,43 @@
{
Data: [
{
AccountActivity: {
AccountAddressContactI3D: 9,
AccountI3D: 1028,
ActivityKind: 1,
CampaignI3D: null,
Caption: 'What did the teddy bear eat for lunch?',
ChangedByI3D: 22,
ChangedDate: DateTime,
CreatedByI3D: 22,
CreatedDate: DateTime,
DateFrom: DateTime,
DateTo: DateTime,
DirectoryI3D: null,
DueDate: null,
EditorI3D: 27,
HasDocuments: false,
I3D: 8067,
IsDone: true,
ProcessActivityI3D: null,
ProjectNumber: '',
Rating: 2,
RecurrenceDate: null,
ReferenceObjectI3D: null,
ReferenceObjectKind: null,
SyncWithOutlook: true,
Text: 'Nothing, he was stuffed.',
TextRtf: '',
TodoI3D: null
},
I3D: 1,
ReceiptI3D: 1311,
ReceiptKind: 2,
ReceiptNumber: 20312
}
],
Error: null,
Message: null,
MessageCode: null,
Status: 0
}
@@ -0,0 +1,194 @@
using System;
using System.Linq;
using Centron.BusinessLogic;
using Centron.BusinessLogic.WebServices.Accounts.Activities;
using Centron.BusinessLogic.WebServices.Mail.Templates;
using Centron.BusinessLogic.WebServices.Sales.Receipts;
using Centron.Controls.Shared;
using Centron.Data.Entities.Accounts.Activities;
using Centron.Data.WebServices.Mail.Templates;
using Centron.Interfaces;
using Centron.Interfaces.Accounts.Activities;
using Centron.Interfaces.BL;
using Centron.Tests.EndToEnd.Infrastructure;
using CentronSoftware.Centron.WebServices.Entities.Accounts.Activities;
using DevExpress.XtraRichEdit;
using Xunit;
using Xunit.Abstractions;
namespace Centron.Tests.EndToEnd.Tests.AccountActivities;
public class AccountActivityTest : EndToEndTest
{
private int _centronAccountI3D = 1;
private int _celosAccountI3D = 1028;
private int _adminPersonalI3D = 22;
private int _thPersonalI3D = 27;
private int _dukeMartinAccountAddressContactI3D = 8;
private int _farmerElisabethAccountAddressContactI3D = 9;
private int _accountActivitiyI3D = 1117;
public AccountActivityTest(ITestOutputHelper testOutputHelper) : base(testOutputHelper)
{
this.Verifier.Settings.IgnoreProperty<AccountActivityDTO>(f => f.CreatedVersion);
this.Verifier.Settings.IgnoreProperty<AccountActivityDTO>(f => f.ChangedVersion);
this.Verifier.Settings.IgnoreColumn("Datum");
this.Verifier.Settings.IgnoreColumn("WiedervorlageDatum");
this.Verifier.Settings.IgnoreColumn("GeaendertDatum");
this.Verifier.Settings.IgnoreColumn("GeaendertDatumVersion");
this.Verifier.Settings.IgnoreColumn("ErstelltVersion");
this.Verifier.Settings.IgnoreColumn("GeaendertVersion");
}
[Fact(Skip = "This test is weirdly flaky, not sure why, but it's very annoying that PRs fail because of it")]
public override void Execute()
{
var accountActivityI3D = this.CreateAccountActivities();
this.UpdateAccountActivities(accountActivityI3D);
this.LoadAccountActivities();
this.LinkActivityWithReceipt(accountActivityI3D);
this.LoadMailForNote("FallbackMailBody");
this.CreateMailTemplatesForNote();
this.LoadMailForNote("NewMailTemplateMailBody");
}
private void CreateMailTemplatesForNote()
{
using (var session = new BLSession())
{
var mailTemplate = new MailTemplateDTO
{
Subject = "Was hat jemand der im Dreieck läuft?",
Body = TextHelper.PlainToRtf("Kreislaufprobleme."),
ObjectKind = (int) CentronObjectKindNumeric.AccountActivity,
SubObjectKind = (int) AccountActivityKind.Note,
IsActive = true
};
var saved = session.GetBL<MailTemplateWebServiceBL>().SaveOrUpdateMailTemplate(this.GetLoggedInUser(), mailTemplate);
Assert.NotNull(saved);
Assert.Equal(ResultStatus.Success, saved.Status);
}
}
private void LoadMailForNote(string name)
{
using (var session = new BLSession())
{
//random exisiting i3D
var mailTemplate = session.GetBL<AccountActivitiesWebServiceBL>().GetCrmMailTemplate(1166, "test@c-entron.de", this.GetLoggedInUser());
Assert.NotNull(mailTemplate);
Assert.Equal(ResultStatus.Success, mailTemplate.Status);
this.Verifier.Verify(name, TextHelper.RtfToPlain(mailTemplate.Data.FirstOrDefault().Body.Text));
}
}
private int CreateAccountActivities()
{
var zeroDTO = new AccountActivityDTO
{
Caption = "What did the Cannibal get when he was late to the feast?",
Text = "The cold shoulder"
};
//this should return an error
var zeroResult = this.WithSession(f => f.GetBL<AccountActivitiesWebServiceBL>().SaveAccountActivity(zeroDTO, this.GetLoggedInUser()));
this.Verifier.Verify("00_FailedSaving", zeroResult);
var oneDTO = new AccountActivityDTO
{
Caption = "Why are murders in Kentucky so hard to solve?",
Text = "Because there are no dental records and all the DNA matches.",
AccountI3D = _centronAccountI3D,
EditorI3D = _adminPersonalI3D,
AccountAddressContactI3D = _dukeMartinAccountAddressContactI3D,
ActivityKind = AccountActivityKind.Note
};
var oneResult = this.WithSession(f => f.GetBL<AccountActivitiesWebServiceBL>().SaveAccountActivity(oneDTO, this.GetLoggedInUser()));
this.Verifier.Verify("01_SuccessfulSaving1", oneResult);
var twoDTO = new AccountActivityDTO
{
Caption = "What did the teddy bear eat for lunch?",
Text = "Nothing, he was stuffed.",
AccountI3D = _celosAccountI3D,
EditorI3D = _thPersonalI3D,
AccountAddressContactI3D = _farmerElisabethAccountAddressContactI3D,
ActivityKind = AccountActivityKind.Appointment,
DateFrom = new DateTime(2222, 2, 2),
DateTo = new DateTime(1111, 1, 1),
Rating = 4,
SyncWithOutlook = true,
};
var twoResult = this.WithSession(f => f.GetBL<AccountActivitiesWebServiceBL>().SaveAccountActivity(twoDTO, this.GetLoggedInUser()));
this.Verifier.Verify("02_SuccessfulSaving2", twoResult);
this.Verifier.VerifyTable("XX_TaetigkeitenTable", "Taetigkeiten");
return twoResult.Data.I3D;
}
private void UpdateAccountActivities(int i3DToUpdate)
{
var threeUpdateResult = this.WithSession(f => f.GetBL<AccountActivitiesWebServiceBL>().UpdateAccountActivity(i3DToUpdate, true, 2, this.GetLoggedInUser()));
this.Verifier.Verify("03_UpdateResult", threeUpdateResult);
}
private void LoadAccountActivities()
{
var oneFilter = new AccountActivitySearchFilter()
{
Caption = "bear",
IsDone = false,
};
var fourList = this.WithSession(f => f.GetBL<AccountActivitiesWebServiceBL>().SearchActivitiesThroughPaging(oneFilter, 1, Int32.MaxValue, this.GetLoggedInUser()));
this.Verifier.Verify("04_bearSearchResult", fourList);
var twoFilter = new AccountActivitySearchFilter
{
Caption = "teddy",
IsDone = true
};
var fiveList = this.WithSession(f => f.GetBL<AccountActivitiesWebServiceBL>().SearchActivitiesThroughPaging(twoFilter, 1, Int32.MaxValue, this.GetLoggedInUser()));
this.Verifier.Verify("05_closedSearchResult", fiveList);
}
private void LinkActivityWithReceipt(int inactiveAccountActivity)
{
var offerKind = CentronObjectKindNumeric.OrderClass;
var offerI3D = 1311;
var sixResult = this.WithSession(f => f.GetBL<ReceiptWebServiceBL>().SaveAccountActivityForReceipt(offerKind,offerI3D, inactiveAccountActivity));
this.Verifier.Verify("06_linkActivityWithReceipt1", sixResult);
var sevenResult = this.WithSession(f => f.GetBL<ReceiptWebServiceBL>().SaveAccountActivityForReceipt(offerKind, offerI3D, _accountActivitiyI3D));
this.Verifier.Verify("07_linkActivityWithReceipt2", sevenResult);
var eightList = this.WithSession(f => f.GetBL<ReceiptWebServiceBL>().GetAccountActivitiesForReceipt(offerKind, offerI3D, false));
this.Verifier.Verify("08_linkedAccountActivities", eightList);
var nineResult = this.WithSession(f => f.GetBL<ReceiptWebServiceBL>().DeleteAccountActivityForReceipt(eightList.Data.First()));
this.Verifier.Verify("09_deleteLinkedAccountActivityResult", nineResult);
var tenList = this.WithSession(f => f.GetBL<ReceiptWebServiceBL>().GetAccountActivitiesForReceipt(offerKind, offerI3D, false));
this.Verifier.Verify("10_linkedAccountActivitiesAfterDelete", tenList);
var elevenList = this.WithSession(f => f.GetBL<ReceiptWebServiceBL>().GetReceiptsForAccountActivity(inactiveAccountActivity));
this.Verifier.Verify("11_linkedAccountActivitiesReceipts", elevenList);
}
}
@@ -0,0 +1 @@
'c-entron software gmbh\r\nListstrasse 1\r\n89079 Ulm\r\n\r\nSehr geehrter Herr Markus Fischer\r\n0731.140399.331\r\nfischer@c-entron.de\r\n__________________________________________________________________\r\n\r\nWill Angebot über MS Service im Bereich Security\r\n\r\n__________________________________________________________________\r\n\r\nErstellt am: 14.02.2017 10:39\r\nFällig bis: 24.02.2017 10:20\r\nWiedervorlage: 22.02.2017 10:20\r\n__________________________________________________________________\r\n'