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
260 lines
9.1 KiB
C#
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,
|
|
};
|
|
}
|
|
} |