Files
Christoph Schwörer f045b99a25 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
2026-08-26 07:43:51 +02:00

260 lines
9.1 KiB
C#

using System.Linq.Expressions;
using Centron.BusinessLogic.Sales.Receipts.DataAndResults;
using Centron.BusinessLogic.WebServices.Sales.Receipts.DataAndResults;
using Centron.Data.WebServices.Sales.Receipts;
using Centron.Host.Messages;
using Centron.Host.RestRequests;
using Centron.Interfaces;
using CentronSoftware.Centron.WebServices.Connections;
using CentronSoftware.Centron.WebServices.Entities.Sales.Receipts.ReceiptReceiver;
namespace Centron.Tests.Integration;
public class InvoiceIntegrationTest
{
[Fact]
public async Task CreateOffer()
{
var connection = IntegrationTestHelper.GetConnection();
var loginToken = await IntegrationTestHelper.Login(connection);
var request = new CreateReceiptRequest
{
ReceiptKind = CentronObjectKindNumeric.OfferClass,
AddressI3D = 18,
ContactPersonI3D = 30,
CreateData = new CreateReceiptData(),
CustomerI3D = 2,
InsertSalutationAndAgreement = false,
IgnoreDefaultContract = false,
InsertCustomerDiscount = false
};
Expression<Func<ICentronRestService, Response<CreateReceiptResultDTO>>> executeNewReceipt = f => f.CreateNewReceipt(GetRequest(request, loginToken));
var response = await connection.CallAsync(executeNewReceipt);
Assert.NotNull(response);
Assert.NotNull(response.Result.FirstOrDefault());
var i3d = response.Result.First().Receipt.ReceiptReceiver.I3D;
var expectedReceiptReceiver = new ReceiptReceiverDTO
{
I3D = i3d,
CompanyName= "Barkunde",
Department = "",
ContactName = "Frau Web Account",
ContactDepartment = "",
Street = "Kistlerhofstraße",
HouseNumber = "75",
HasPostOfficeBox = false,
PostOfficeBox = "",
Zip = "81379",
City = "München",
Country = "Deutschland",
CountryI3D = 1,
AdditionalAddressSupplement = ""
};
Assert.Equivalent(expectedReceiptReceiver, response.Result.First().Receipt.ReceiptReceiver);
}
[Fact]
public async Task CreateReceiverObject()
{
var connection = IntegrationTestHelper.GetConnection();
var loginToken = await IntegrationTestHelper.Login(connection);
var request = new CreateReceiverTextRequest
{
AddressI3D = 18,
ContactPersonI3D = 30,
CustomerI3D = 2,
};
Expression<Func<ICentronRestService, Response<ReceiptReceiverDTO>>> executeNewReceipt = f => f.CreateReceiverObject(GetRequest(request, loginToken));
var response = await connection.CallAsync(executeNewReceipt);
Assert.NotNull(response);
Assert.NotNull(response.Result.FirstOrDefault());
var i3d = response.Result.First().I3D;
var expectedReceiptReceiver = new ReceiptReceiverDTO
{
I3D = i3d,
CompanyName= "Barkunde",
Department = "",
ContactName = "Frau Web Account",
ContactDepartment = "",
Street = "Kistlerhofstraße",
HouseNumber = "75",
HasPostOfficeBox = false,
PostOfficeBox = "",
Zip = "81379",
City = "München",
Country = "Deutschland",
CountryI3D = 1,
AdditionalAddressSupplement = ""
};
Assert.Equivalent(expectedReceiptReceiver, response.Result.First());
}
[Fact]
public async Task CreateInvoiceWithAlternativeAddress()
{
var connection = IntegrationTestHelper.GetConnection();
var loginToken = await IntegrationTestHelper.Login(connection);
var request = new CreateReceiptRequest
{
ReceiptKind = CentronObjectKindNumeric.InvoiceClass,
AddressI3D = 18,
ContactPersonI3D = 30,
CreateData = new CreateReceiptData(){UseAlternativeAddress = true},
CustomerI3D = 2,
InsertSalutationAndAgreement = false,
IgnoreDefaultContract = false,
InsertCustomerDiscount = false
};
Expression<Func<ICentronRestService, Response<CreateReceiptResultDTO>>> executeNewReceipt = f => f.CreateNewReceipt(GetRequest(request, loginToken));
var response = await connection.CallAsync(executeNewReceipt);
Assert.NotNull(response);
Assert.NotNull(response.Result.FirstOrDefault());
var i3d = response.Result.First().Receipt.ReceiptReceiver.I3D;
var expectedReceiptReceiver = new ReceiptReceiverDTO
{
I3D = i3d,
CompanyName= "Barkunde",
Department = "",
ContactName = "",
ContactDepartment = "",
Street = "Holzweg",
HouseNumber = "1",
HasPostOfficeBox = false,
PostOfficeBox = "",
Zip = "12345",
City = "Wald",
Country = "Deutschland",
CountryI3D = 1,
AdditionalAddressSupplement = ""
};
Assert.Equivalent(expectedReceiptReceiver, response.Result.First().Receipt.ReceiptReceiver);
}
[Theory]
[InlineData(CentronObjectKindNumeric.OfferClass)]
[InlineData(CentronObjectKindNumeric.InvoiceClass)]
[InlineData(CentronObjectKindNumeric.OrderClass)]
[InlineData(CentronObjectKindNumeric.CreditVoucherClass)]
public async Task SaveAndLoadOffer(CentronObjectKindNumeric receiptKind)
{
var connection = IntegrationTestHelper.GetConnection();
var loginToken = await IntegrationTestHelper.Login(connection);
var request = new CreateReceiptRequest
{
ReceiptKind = receiptKind,
AddressI3D = 18,
ContactPersonI3D = 30,
CreateData = new CreateReceiptData(){UseAlternativeAddress = false},
CustomerI3D = 2,
InsertSalutationAndAgreement = false,
IgnoreDefaultContract = false,
InsertCustomerDiscount = false
};
Expression<Func<ICentronRestService, Response<CreateReceiptResultDTO>>> executeNewReceipt = f => f.CreateNewReceipt(GetRequest(request, loginToken));
var response = await connection.CallAsync(executeNewReceipt);
Assert.NotNull(response);
Assert.NotNull(response.Result.FirstOrDefault());
var receipt = response.Result.First().Receipt;
var requestSave = new SaveReceiptRequest()
{
Receipt = receipt,
SaveData = new SaveReceiptData()
{
IgnoreCallbacks = true
},
AutoLockIfNewReceipt = false,
};
Expression<Func<ICentronRestService, Response<SaveReceiptResultDTO>>> executeSave = f => f.SaveReceipt(GetRequest(requestSave, loginToken));
var responseSave = await connection.CallAsync(executeSave);
Assert.NotNull(responseSave);
Assert.NotNull(responseSave.Result.First().ReceiptI3D);
var requestSearch = new GetReceiptByI3DRequest()
{
ReceiptI3D = responseSave.Result.First().ReceiptI3D.GetValueOrDefault(),
ObjectKind = responseSave.Result.First().Receipt.ReceiptKind
};
Expression<Func<ICentronRestService, Response<ReceiptBaseDTO>>> executeSearch = f => f.GetReceiptByI3D(GetRequest(requestSearch, loginToken));
var responseSearch = await connection.CallAsync(executeSearch);
Assert.NotNull(responseSearch);
var i3d = responseSearch.Result.First().ReceiptReceiver.I3D;
var expectedReceiptReceiver = new ReceiptReceiverDTO
{
I3D = i3d,
CompanyName= "Barkunde",
Department = "",
ContactName = "Frau Web Account",
ContactDepartment = "",
Street = "Kistlerhofstraße",
HouseNumber = "75",
HasPostOfficeBox = false,
PostOfficeBox = "",
Zip = "81379",
City = "München",
Country = "Deutschland",
CountryI3D = 1,
AdditionalAddressSupplement = ""
};
Assert.Equivalent(expectedReceiptReceiver, responseSearch.Result.First().ReceiptReceiver);
var requestNewVersion = new CreateNewReceiptVersionRequest()
{
ReceiptI3D = responseSave.Result.First().ReceiptI3D.GetValueOrDefault(),
CreateNewVersionData = new CreateNewVersionData(){IgnoreCallbacks = true},
ReceiptKind = responseSave.Result.First().Receipt.ReceiptKind
};
Expression<Func<ICentronRestService, Response<CreateNewVersionResultDTO>>> executeNewVersion = f => f.CreateNewReceiptVersion(GetRequest(requestNewVersion, loginToken));
var responseNewVersion = await connection.CallAsync(executeNewVersion);
Assert.Equivalent(expectedReceiptReceiver, responseNewVersion.Result.First().Receipt.ReceiptReceiver);
}
private Request<T> GetRequest<T>(T data, string ticket = "")
{
return new Request<T>
{
Data = data,
Ticket = ticket,
};
}
}