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,112 @@
using System;
using System.Collections.Generic;
using System.Xml.Linq;
using Centron.Data.Entities.DataExchange.BookKeeping.Export;
using Centron.Gateway.DataExchange.BookKeeping.Abacus;
using Centron.Interfaces.DataExchange.BookKeeping;
using NSubstitute;
namespace Centron.Tests.BL.DataExchange.BookKeeping.Abacus;
public class BookKeepingExportAbacusTest
{
[Theory]
[InlineData("2024.00")]
[InlineData("2023.00")]
[InlineData("2020.00")]
public void SupplierReceiptExport_DoesNotWriteTaxTransferTypeForModernKreditorVersions(string kreditorReceiptVersion)
{
var result = CreateExport(kreditorReceiptVersion);
var document = XDocument.Parse((string)result.File);
Assert.Empty(document.Descendants("TaxTransferType"));
Assert.Equal("KRED", document.Root?.Element("Task")?.Element("Parameter")?.Element("Application")?.Value);
Assert.Equal("Document", document.Root?.Element("Task")?.Element("Parameter")?.Element("Id")?.Value);
Assert.Equal(kreditorReceiptVersion, document.Root?.Element("Task")?.Element("Parameter")?.Element("Version")?.Value);
}
[Theory]
[InlineData("2018.00")]
[InlineData("2015.00")]
public void SupplierReceiptExport_WritesTaxTransferTypeForLegacyKreditorVersions(string kreditorReceiptVersion)
{
var result = CreateExport(kreditorReceiptVersion);
var document = XDocument.Parse((string)result.File);
var taxTransferType = Assert.Single(document.Descendants("TaxTransferType"));
Assert.Equal("0", taxTransferType.Value);
Assert.Equal(kreditorReceiptVersion, document.Root?.Element("Task")?.Element("Parameter")?.Element("Version")?.Value);
}
private static IBookKeepingReceiptExportFileGeneratorResult CreateExport(string kreditorReceiptVersion)
{
var sut = new BookKeepingExportAbacus();
var result = sut.GetReceiptsBookingData(
new[] { CreateSupplierReceipt() },
CreateSettings(kreditorReceiptVersion),
CreateUserSettings(),
customInterfaceSettings: null,
customInterfaceColumns: null);
Assert.True(result.IsSuccessful, result.Message);
Assert.Empty(result.FailedList);
return result;
}
private static BookKeepingExportConfiguration CreateSettings(string kreditorReceiptVersion)
{
return new BookKeepingExportConfiguration
{
KreditorReceiptVersion = kreditorReceiptVersion,
ReceiptsExportAllPositions = true
};
}
private static BookKeepingExportUserSettings CreateUserSettings()
{
return new BookKeepingExportUserSettings
{
ExportDateFrom = new DateTime(2026, 1, 1),
ExportDateTo = new DateTime(2026, 1, 31)
};
}
private static IBookKeepingReceipt CreateSupplierReceipt()
{
var receipt = Substitute.For<IBookKeepingReceipt>();
receipt.Number.Returns(4711);
receipt.Date.Returns(new DateTime(2026, 1, 15));
receipt.ExternalReceiptDate.Returns(new DateTime(2026, 1, 14));
receipt.ExternalReceiptNumber.Returns("EXT-4711");
receipt.Type.Returns(BookKeepingReceiptKind.SupplierInvoice);
receipt.AddressBookKeepingNumber.Returns("70001");
receipt.CurrencyISOCode.Returns("CHF");
receipt.PaymentTypeNumber.Returns("30");
receipt.BankNumber.Returns(1);
receipt.NetPriceComplete.Returns(100m);
receipt.TaxPriceComplete.Returns(8.1m);
receipt.NetPriceFCComplete.Returns(100m);
receipt.TaxPriceFCComplete.Returns(8.1m);
var item = CreateReceiptItem();
receipt.Items.Returns(new List<IBookKeepingReceiptItem> { item });
return receipt;
}
private static IBookKeepingReceiptItem CreateReceiptItem()
{
var item = Substitute.For<IBookKeepingReceiptItem>();
item.Position.Returns(1);
item.ProfitAndLossAccount.Returns(4000);
item.NetPriceTotalComplete.Returns(100m);
item.TaxPriceTotalComplete.Returns(8.1m);
item.NetPriceTotalFCComplete.Returns(100m);
item.TaxPriceTotalFCComplete.Returns(8.1m);
item.TaxRate.Returns(8.1m);
item.VATCode.Returns("81");
item.Text.Returns("Test position");
return item;
}
}