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,457 @@
{
Data: {
ArticleCodes: [
'CB413A#B19'
],
HintTexts: [],
ProjectOfferRichTexts: [
null
],
ReceiptItems: [
{
AddAdditionalInformations: [],
ArticleCode: 'CB413A#B19',
ArticleI3D: 69,
ArticlePositionKind: 0,
AttachedData: {},
BasePrice: 190.590000000,
ChangeStock: true,
ContractI3D: null,
CostCenterI3D: 1,
CostObjectI3D: 1,
CustomerCostCenter: null,
DeliveryDate: null,
Discount: 30.0,
DisplayPositionNumber: null,
EANCode: '0883585165186',
Expanded: null,
FontColor: -16777208,
FontName: 'Verdana',
FontSize: 9,
FontStyle: 0,
GroupID: 0,
I3D: 0,
Indent: 0,
InternalNote: null,
InternalPosition: 0,
IsBillingPartList: false,
IsLeasing: false,
IsReverseCharge: false,
IsService: false,
Kind: 1,
ManufacturerCode: 'CB413A#B19',
OriginalPurchasePrice: 173.2616153800,
PlannedDurationInHours: 0.0,
PreparationDate: null,
ProjectOfferRichText: null,
PurchaseBasePrice: 173.2616153800,
PurchaseInformations: null,
PurchaseOrderNumber: null,
PurchasePriceSupplierI3D: null,
QuantityComplete: 1.0,
QuantityProcessed: 0.0,
ReasonForCustomPurchasePrice: null,
ReceiptI3D: 1381,
RevenueAccount: 4400,
RichText: null,
ShowImage: false,
SpecialAgreementI3D: null,
Text: 'Hewlett Packard LASERJET P1505Plus\r\n\r\n23PPM USB 3.0\r\nLaserdrucker s/w/ 600x600 dpi/ Druckgeschwindigkeit Mono: 23 ppm/ Speicher: 8 MB/ Formate: Briefumschläge, A4, A5, A6, B5, Postkarten/ Zufuhr: 260 Blatt/ Duplex: manuell/ Papierablage Standard: 150 Blatt/ Papiergew. min. - max.: 60 - 163 g/m2/ USB 2.0, 12 Monate HP Garantie',
VATI3D: 4,
VATRate: 19.0,
Visible: 1,
WarehouseI3D: -1,
WEEE: ''
},
{
AddAdditionalInformations: [],
ArticleCode: '34543ER',
ArticleI3D: 46,
ArticlePositionKind: 0,
AttachedData: {},
BasePrice: 26.240000000,
ChangeStock: true,
ContractI3D: null,
CostCenterI3D: 1,
CostObjectI3D: 1,
CustomerCostCenter: null,
DeliveryDate: null,
Discount: 0.0,
DisplayPositionNumber: null,
EANCode: '',
Expanded: null,
FontColor: -16777208,
FontName: 'Verdana',
FontSize: 9,
FontStyle: 0,
GroupID: 0,
I3D: 0,
Indent: 0,
InternalNote: null,
InternalPosition: 0,
IsBillingPartList: false,
IsLeasing: false,
IsReverseCharge: true,
IsService: false,
Kind: 1,
ManufacturerCode: '',
OriginalPurchasePrice: 16.3165946100,
PlannedDurationInHours: 0.0,
PreparationDate: null,
ProjectOfferRichText: null,
PurchaseBasePrice: 16.3165946100,
PurchaseInformations: null,
PurchaseOrderNumber: null,
PurchasePriceSupplierI3D: null,
QuantityComplete: 20.0000000,
QuantityProcessed: 0.0,
ReasonForCustomPurchasePrice: null,
ReceiptI3D: 1381,
RevenueAccount: 4400,
RichText: null,
ShowImage: false,
SpecialAgreementI3D: null,
Text: 'USB Kabel 3 Meter, grau',
VATI3D: 4,
VATRate: 19.0,
Visible: 1,
WarehouseI3D: -1,
WEEE: ''
},
{
AddAdditionalInformations: [],
ArticleCode: null,
ArticleI3D: null,
ArticlePositionKind: 0,
AttachedData: {},
BasePrice: null,
ChangeStock: false,
ContractI3D: null,
CostCenterI3D: null,
CostObjectI3D: null,
CustomerCostCenter: null,
DeliveryDate: null,
Discount: 0.0,
DisplayPositionNumber: null,
EANCode: null,
Expanded: null,
FontColor: -16777208,
FontName: 'Verdana',
FontSize: 9,
FontStyle: 0,
GroupID: 0,
I3D: 0,
Indent: 0,
InternalNote: null,
InternalPosition: 0,
IsBillingPartList: false,
IsLeasing: false,
IsReverseCharge: false,
IsService: false,
Kind: 2,
ManufacturerCode: null,
OriginalPurchasePrice: null,
PlannedDurationInHours: 0.0,
PreparationDate: null,
ProjectOfferRichText: null,
PurchaseBasePrice: null,
PurchaseInformations: null,
PurchaseOrderNumber: null,
PurchasePriceSupplierI3D: null,
QuantityComplete: null,
QuantityProcessed: null,
ReasonForCustomPurchasePrice: null,
ReceiptI3D: 1381,
RevenueAccount: null,
RichText: null,
ShowImage: false,
SpecialAgreementI3D: null,
Text: '',
VATI3D: null,
VATRate: null,
Visible: 1,
WarehouseI3D: null,
WEEE: null
},
{
AddAdditionalInformations: [],
ArticleCode: null,
ArticleI3D: null,
ArticlePositionKind: 0,
AttachedData: {},
BasePrice: null,
ChangeStock: false,
ContractI3D: null,
CostCenterI3D: null,
CostObjectI3D: null,
CustomerCostCenter: null,
DeliveryDate: null,
Discount: 0.0,
DisplayPositionNumber: null,
EANCode: null,
Expanded: null,
FontColor: -16777208,
FontName: 'Verdana',
FontSize: 9,
FontStyle: 0,
GroupID: 0,
I3D: 0,
Indent: 0,
InternalNote: null,
InternalPosition: 0,
IsBillingPartList: false,
IsLeasing: false,
IsReverseCharge: false,
IsService: false,
Kind: 2,
ManufacturerCode: null,
OriginalPurchasePrice: null,
PlannedDurationInHours: 0.0,
PreparationDate: null,
ProjectOfferRichText: null,
PurchaseBasePrice: null,
PurchaseInformations: null,
PurchaseOrderNumber: null,
PurchasePriceSupplierI3D: null,
QuantityComplete: null,
QuantityProcessed: null,
ReasonForCustomPurchasePrice: null,
ReceiptI3D: 1381,
RevenueAccount: null,
RichText: null,
ShowImage: false,
SpecialAgreementI3D: null,
Text: 'Verfügbares Zubehör:',
VATI3D: null,
VATRate: null,
Visible: 1,
WarehouseI3D: null,
WEEE: null
},
{
AddAdditionalInformations: [],
ArticleCode: 'CB436A',
ArticleI3D: 92,
ArticlePositionKind: 0,
AttachedData: {},
BasePrice: 92.990000000,
ChangeStock: true,
ContractI3D: null,
CostCenterI3D: 1,
CostObjectI3D: 1,
CustomerCostCenter: null,
DeliveryDate: null,
Discount: 0.0,
DisplayPositionNumber: null,
EANCode: '0882780905221',
Expanded: null,
FontColor: -16777208,
FontName: 'Verdana',
FontSize: 9,
FontStyle: 0,
GroupID: 0,
I3D: 0,
Indent: 0,
InternalNote: null,
InternalPosition: 0,
IsBillingPartList: false,
IsLeasing: false,
IsReverseCharge: false,
IsService: false,
Kind: 1,
ManufacturerCode: 'CB436A',
OriginalPurchasePrice: 56.3600000000,
PlannedDurationInHours: 0.0,
PreparationDate: null,
ProjectOfferRichText: null,
PurchaseBasePrice: 56.3600000000,
PurchaseInformations: null,
PurchaseOrderNumber: null,
PurchasePriceSupplierI3D: null,
QuantityComplete: 17.0000000,
QuantityProcessed: 0.0,
ReasonForCustomPurchasePrice: null,
ReceiptI3D: 1381,
RevenueAccount: 4400,
RichText: null,
ShowImage: false,
SpecialAgreementI3D: null,
Text: 'Hewlett Packard Toner CB436A mit Smart Drucktechnologie für HP LaserJet P1505/N, M1120 MFP, M1522 MFP. 2.000 Seiten Kapazität nach ISO/IEC 19752',
VATI3D: 4,
VATRate: 19.0,
Visible: 1,
WarehouseI3D: -1,
WEEE: ''
},
{
AddAdditionalInformations: [],
ArticleCode: 'Q6259A',
ArticleI3D: 91,
ArticlePositionKind: 0,
AttachedData: {},
BasePrice: 78.300000000,
ChangeStock: true,
ContractI3D: null,
CostCenterI3D: 1,
CostObjectI3D: 1,
CustomerCostCenter: null,
DeliveryDate: null,
Discount: 0.0,
DisplayPositionNumber: null,
EANCode: '0882780624825',
Expanded: null,
FontColor: -16777208,
FontName: 'Verdana',
FontSize: 9,
FontStyle: 0,
GroupID: 0,
I3D: 0,
Indent: 0,
InternalNote: null,
InternalPosition: 0,
IsBillingPartList: false,
IsLeasing: false,
IsReverseCharge: false,
IsService: false,
Kind: 1,
ManufacturerCode: 'Q6259A',
OriginalPurchasePrice: 58.0000000000,
PlannedDurationInHours: 0.0,
PreparationDate: null,
ProjectOfferRichText: null,
PurchaseBasePrice: 58.0000000000,
PurchaseInformations: null,
PurchaseOrderNumber: null,
PurchasePriceSupplierI3D: null,
QuantityComplete: 13.0000000,
QuantityProcessed: 0.0,
ReasonForCustomPurchasePrice: null,
ReceiptI3D: 1381,
RevenueAccount: 4400,
RichText: null,
ShowImage: false,
SpecialAgreementI3D: null,
Text: 'Hewlett Packard WIRELESS UPGRADE KIT\r\n\r\nHP Upgrade-Kit für den Wireless-Druck, umfasst einen Drucker-Empfänger und einen PC-Empfänger',
VATI3D: 4,
VATRate: 19.0,
Visible: 1,
WarehouseI3D: -1,
WEEE: ''
},
{
AddAdditionalInformations: [],
ArticleCode: 'UG086E',
ArticleI3D: 90,
ArticlePositionKind: 0,
AttachedData: {},
BasePrice: 50.490000000,
ChangeStock: true,
ContractI3D: null,
CostCenterI3D: 1,
CostObjectI3D: 1,
CustomerCostCenter: null,
DeliveryDate: null,
Discount: 0.0,
DisplayPositionNumber: null,
EANCode: '',
Expanded: null,
FontColor: -16777208,
FontName: 'Verdana',
FontSize: 9,
FontStyle: 0,
GroupID: 0,
I3D: 0,
Indent: 0,
InternalNote: null,
InternalPosition: 0,
IsBillingPartList: false,
IsLeasing: false,
IsReverseCharge: false,
IsService: false,
Kind: 1,
ManufacturerCode: 'UG086E',
OriginalPurchasePrice: 37.4000000000,
PlannedDurationInHours: 0.0,
PreparationDate: null,
ProjectOfferRichText: null,
PurchaseBasePrice: 37.4000000000,
PurchaseInformations: null,
PurchaseOrderNumber: null,
PurchasePriceSupplierI3D: null,
QuantityComplete: 10.0000000,
QuantityProcessed: 0.0,
ReasonForCustomPurchasePrice: null,
ReceiptI3D: 1381,
RevenueAccount: 4400,
RichText: null,
ShowImage: false,
SpecialAgreementI3D: null,
Text: 'Hewlett Packard Care Pack UG086E, 3 Jahre Austauschservice nächster Arbeitstag',
VATI3D: 4,
VATRate: 19.0,
Visible: 1,
WarehouseI3D: -1,
WEEE: ''
},
{
AddAdditionalInformations: [],
ArticleCode: '27',
ArticleI3D: 134,
ArticlePositionKind: 0,
AttachedData: {},
BasePrice: 39.0,
ChangeStock: false,
ContractI3D: null,
CostCenterI3D: null,
CostObjectI3D: null,
CustomerCostCenter: null,
DeliveryDate: null,
Discount: 0.0,
DisplayPositionNumber: null,
EANCode: '',
Expanded: null,
FontColor: -16777208,
FontName: 'Verdana',
FontSize: 9,
FontStyle: 0,
GroupID: 0,
I3D: 0,
Indent: 0,
InternalNote: null,
InternalPosition: 0,
IsBillingPartList: false,
IsLeasing: false,
IsReverseCharge: false,
IsService: false,
Kind: 1,
ManufacturerCode: '',
OriginalPurchasePrice: 28.0000000000,
PlannedDurationInHours: 0.0,
PreparationDate: null,
ProjectOfferRichText: null,
PurchaseBasePrice: 28.0000000000,
PurchaseInformations: null,
PurchaseOrderNumber: null,
PurchasePriceSupplierI3D: null,
QuantityComplete: 19.0000000,
QuantityProcessed: 0.0,
ReasonForCustomPurchasePrice: null,
ReceiptI3D: 1381,
RevenueAccount: 4400,
RichText: null,
ShowImage: false,
SpecialAgreementI3D: null,
Text: 'Druckerservice, pro Gerät\r\n\r\nAufstellung und Montage\r\nPatronen und Toner einrichten\r\nDruckertest mit Testseite\r\naus Anwendung drucken\r\nKurzerklärung',
VATI3D: 4,
VATRate: 19.0,
Visible: 1,
WarehouseI3D: -1,
WEEE: ''
}
]
},
Error: null,
Message: null,
MessageCode: null,
Status: 0
}
@@ -0,0 +1,87 @@
using System.Linq;
using Centron.BusinessLogic;
using Centron.BusinessLogic.EmployeeArea;
using Centron.BusinessLogic.WebServices.Sales.Receipts;
using Centron.Data.Entities.Administration.Logins;
using Centron.Interfaces;
using Centron.Interfaces.BL;
using Centron.Tests.EndToEnd.Infrastructure;
using Xunit;
using Xunit.Abstractions;
namespace Centron.Tests.EndToEnd.Tests.ReceiptsDefaultArticleSearchQuantity
{
public class ReceiptsDefaultArticleSearchQuantityTests : EndToEndTest
{
public ReceiptsDefaultArticleSearchQuantityTests(ITestOutputHelper testOutputHelper)
: base(testOutputHelper)
{
}
// We need a offer so we can create new receipt-items for it, but we don't actually save the offer or something like that
// We just use it to call CreateArticleReceiptItems
const int OfferI3D = 1381;
// The main-article 69 has a following-article 49, and the accessory-articles 90, 91, 92, 134
private const int MainArticleI3D = 69;
private const int FollowingArticleI3D = 46;
private const int FollowingArticleDefaultQuantity = 20;
private const int AccessoryArticle1I3D = 90;
private const int AccessoryArticle1DefaultQuantity = 10;
private const int AccessoryArticle2I3D = 91;
private const int AccessoryArticle2DefaultQuantity = 13;
private const int AccessoryArticle3I3D = 92;
private const int AccessoryArticle3DefaultQuantity = 17;
private const int AccessoryArticle4I3D = 134;
private const int AccessoryArticle4DefaultQuantity = 19;
public override void Execute()
{
// This test makes sure that the Article.DefaultArticleSearchQuantity works correctly for following-articles and accessory-articles
this.PrepareDatabase();
using var session = new BLSession();
var user = session.GetBL<AppUserBL>().GetAppUser(f => f.I3D == 11);
var offer = session.GetBL<ReceiptWebServiceBL>().GetReceiptByI3D(OfferI3D, CentronObjectKindNumeric.OfferClass).ThrowIfError();
var receiptItems = session.GetBL<ReceiptItemWebServiceBL>().CreateArticleReceiptItems(
offer,
isExternalArticle: false,
MainArticleI3D,
externalArticleKind: null,
externalArticleId: null,
warehouseI3D: -1,
new LoggedInUser(user));
AssertArticleQuantity(FollowingArticleI3D, FollowingArticleDefaultQuantity);
AssertArticleQuantity(AccessoryArticle1I3D, AccessoryArticle1DefaultQuantity);
AssertArticleQuantity(AccessoryArticle2I3D, AccessoryArticle2DefaultQuantity);
AssertArticleQuantity(AccessoryArticle3I3D, AccessoryArticle3DefaultQuantity);
AssertArticleQuantity(AccessoryArticle4I3D, AccessoryArticle4DefaultQuantity);
this.Verifier.Verify("ReceiptItems", receiptItems);
void AssertArticleQuantity(int articleI3D, int expectedQuantity)
{
var item = receiptItems.Data.ReceiptItems.Single(f => f.ArticleI3D == articleI3D);
Assert.Equal(expectedQuantity, item.QuantityComplete);
}
}
private void PrepareDatabase()
{
this.Sql($"UPDATE dbo.ARTIK SET DefaultArticleSearchQuantity = {FollowingArticleDefaultQuantity} WHERE I3D = {FollowingArticleI3D}");
this.Sql($"UPDATE dbo.ARTIK SET DefaultArticleSearchQuantity = {AccessoryArticle1DefaultQuantity} WHERE I3D = {AccessoryArticle1I3D}");
this.Sql($"UPDATE dbo.ARTIK SET DefaultArticleSearchQuantity = {AccessoryArticle2DefaultQuantity} WHERE I3D = {AccessoryArticle2I3D}");
this.Sql($"UPDATE dbo.ARTIK SET DefaultArticleSearchQuantity = {AccessoryArticle3DefaultQuantity} WHERE I3D = {AccessoryArticle3I3D}");
this.Sql($"UPDATE dbo.ARTIK SET DefaultArticleSearchQuantity = {AccessoryArticle4DefaultQuantity} WHERE I3D = {AccessoryArticle4I3D}");
}
}
}