Merge branch 'master' of ssh://float.ownsoft.de/git/beyondSoft/BeWo

This commit is contained in:
2024-08-02 10:23:31 +02:00
18 changed files with 1531 additions and 2095 deletions

View File

@@ -982,15 +982,23 @@ namespace BeWo
private void LoginResult( WaitLayer2 lWaitLayer, UserValidationResult result, String lUserName, String lPassword, String tenant, String lPIN)
{
if (result == UserValidationResult.UserValid || result == UserValidationResult.UserValidTwoFactorAuthenticationNeeded)
if (result == UserValidationResult.UserValid || result == UserValidationResult.UserValidTwoFactorAuthenticationNeeded || result == UserValidationResult.TwoFactorAuthenticationFailedNoChatCodeAllowLogin)
{
if (result == UserValidationResult.UserValidTwoFactorAuthenticationNeeded)
if (result == UserValidationResult.UserValidTwoFactorAuthenticationNeeded || result == UserValidationResult.TwoFactorAuthenticationFailedNoChatCodeAllowLogin)
{
Translator t = new Translator(new MultiLanguage.ServiceTranslator());
grid_root.Children.Remove(lWaitLayer);
var dlg = new TwoFactorAuthMessageDialog(lUserName, lPassword);
var message = Translator.Translate("Zwei Faktor Authentifizierung erforderlich");
dlg.ShowCodeField = true;
if (result == UserValidationResult.TwoFactorAuthenticationFailedNoChatCodeAllowLogin)
{
message = Translator.Translate("Kein Chat Code für die Zwei Faktor Authentifizierung gefunden");
dlg.ShowCodeField = false;
}
if (message.Contains("<") && message.Contains(">"))
{
dlg.SetXaml(message);
@@ -999,7 +1007,7 @@ namespace BeWo
{
dlg.Message = message;
}
dlg.Owner = BeWoApp.Current.MainWindow;
var dr = dlg.ShowDialog();
@@ -1035,7 +1043,7 @@ namespace BeWo
});
}, true);
}
else if (result == UserValidationResult.PasswordExpired || result == UserValidationResult.BeWoPasswordNotAllowed)
else if (result == UserValidationResult.PasswordExpired || result == UserValidationResult.BeWoPasswordNotAllowed || result == UserValidationResult.TwoFactorAuthenticationFailedNoChatCodeDontAllowLogin)
{
BeWoApp.UserName = lUserName;
BeWoApp.UserPassword = lPassword;

View File

@@ -16,6 +16,7 @@ namespace BeWo.View
{
private String username;
private String password;
private bool showCodeField = true;
public TwoFactorAuthMessageDialog(String username, String password)
{
@@ -35,7 +36,7 @@ namespace BeWo.View
{
try
{
if(XamlReader.Parse(xamlCode) is UIElement element)
if (XamlReader.Parse(xamlCode) is UIElement element)
{
txtMessage.Visibility = Visibility.Collapsed;
rootGrid.Children.Add(element);
@@ -52,10 +53,22 @@ namespace BeWo.View
get => txtMessage.Text;
set => txtMessage.Text = value;
}
public bool ShowCodeField { get { return showCodeField; }
set
{
showCodeField = value;
if (!showCodeField)
{
textbox.Visibility = Visibility.Collapsed;
OkayButton.Visibility = Visibility.Collapsed;
CancelButton.Content = "OK";
}
}
}
private void CancelButton_OnClick(object sender, RoutedEventArgs e)
{
DialogResult = false;
DialogResult = !showCodeField;
}

View File

@@ -1046,4 +1046,27 @@ ALTER TABLE `invoicebase`
ADD COLUMN `IsReviewed` tinyint NULL DEFAULT 0 AFTER `Type`,
ADD COLUMN `IsSent` tinyint NULL DEFAULT 0 AFTER `IsReviewed`,
ADD COLUMN `IsExported` tinyint NULL DEFAULT 0 AFTER `IsSent`,
ADD COLUMN `PartialPayment` VARCHAR(512) NULL DEFAULT NULL AFTER `IsPaid`;
ADD COLUMN `PartialPayment` VARCHAR(512) NULL DEFAULT NULL AFTER `IsPaid`;
ALTER TABLE `organisation`
ADD COLUMN `Leistungserbringergruppe` VARCHAR(256) NULL DEFAULT NULL AFTER `IKDatenannahmestelle`;
CREATE TABLE `twofactorcode` (
Oid BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
InsTs DATETIME DEFAULT NULL,
UpdTs DATETIME DEFAULT NULL,
InsUser VARCHAR(256) DEFAULT NULL,
UdpUser VARCHAR(256) DEFAULT NULL,
Tid INT NOT NULL,
Notice VARCHAR(1024) DEFAULT NULL,
Version BIGINT DEFAULT NULL,
IsActive TINYINT DEFAULT NULL,
SystemEntryID INT DEFAULT NULL,
TFCode VARCHAR(16) DEFAULT NULL,
LoginName VARCHAR(256) DEFAULT NULL,
Password VARCHAR(1024) DEFAULT NULL,
IPAddress VARCHAR(256) DEFAULT NULL,
CreateDate DATETIME DEFAULT NULL,
UsedDate DATETIME DEFAULT NULL
) ENGINE=InnoDB;

View File

@@ -100,25 +100,32 @@ namespace PerspektivenEV
}
else
{
if (sip.ServiceInvoiceItems[0].ServiceDescription.StartsWith("Qualifizierte"))
foreach (var ii in sip.ServiceInvoiceItems)
{
sip.ServiceInvoiceItems[0].ServiceDescription = "Qualifizierte Assistenz";
}
else if (sip.ServiceInvoiceItems[0].ServiceDescription.StartsWith("Kompensatorische"))
{
sip.ServiceInvoiceItems[0].ServiceDescription = "Kompensatorische Assistenz";
}
else if (sip.ServiceInvoiceItems[0].ServiceDescription.StartsWith("Kompensatorische"))
{
sip.ServiceInvoiceItems[0].ServiceDescription = "Kompensatorische Assistenz";
}
else if (sip.ServiceInvoiceItems[0].ServiceDescription.StartsWith("Fahrzeit"))
{
sip.ServiceInvoiceItems[0].ServiceDescription = sip.ServiceInvoiceItems[0].ServiceDescription.Substring(0, 11);
}
else if (sip.ServiceInvoiceItems[0].ServiceDescription.StartsWith("Ges."))
{
sip.ServiceInvoiceItems[0].ServiceDescription = sip.ServiceInvoiceItems[0].ServiceDescription.Substring(0, 18);
if (ii.ServiceDescription.StartsWith("Qualifizierte"))
{
ii.ServiceDescription = "Qualifizierte Assistenz";
}
else if (ii.ServiceDescription.StartsWith("Kompensatorische"))
{
ii.ServiceDescription = "Kompensatorische Assistenz";
}
else if (ii.ServiceDescription.StartsWith("Kompensatorische"))
{
ii.ServiceDescription = "Kompensatorische Assistenz";
}
else if (ii.ServiceDescription.StartsWith("Fahrzeit"))
{
ii.ServiceDescription = ii.ServiceDescription.Substring(0, 11);
}
else if (ii.ServiceDescription.StartsWith("Ges."))
{
ii.ServiceDescription = ii.ServiceDescription.Substring(0, 18);
}
else if (ii.ServiceDescription.StartsWith("Differenz"))
{
ii.ServiceDescription = ii.ServiceDescription.Substring(0, 36);
}
}
}
}

View File

@@ -409,6 +409,10 @@ namespace PerspektivenEV.Export
{
if (orgaName.Contains("LWV") || orgaName.Contains("Landeswohlfahrtsverband Hessen"))
{
if (itemDesc.StartsWith("Differenz"))
{
// Test;
}
if (itemDesc.Contains("Anfahrt") || itemDesc.Contains("Fahr"))
return "496100";
else if (itemDesc.Contains("ieH HTK"))
@@ -543,7 +547,7 @@ namespace PerspektivenEV.Export
inner join serviceinvoiceperiod sip on sip.serviceinvoiceoid = si.oid
inner join invoiceitem ii on ii.serviceinvoiceperiodoid = sip.oid
WHERE ib.`AccountingPeriodEnd` >= ':MonatAbrechnung_Start' AND ib.`AccountingPeriodEnd` < ':MonatAbrechnung_End' and ib.IsActive = 1
AND ib.`InvoiceDate` >= ':Monat_Start' AND ib.`InvoiceDate` < ':Monat_End'
AND ib.`InvoiceDate` >= ':Monat_Start' AND ib.`InvoiceDate` < ':Monat_End' AND ib.`IsExported` = 0
ORDER BY invoiceoid, ii.ItemDescription
";
@@ -574,7 +578,7 @@ namespace PerspektivenEV.Export
invoicebase ib
inner join invoiceitem ii on ii.InvoiceBaseOid = ib.Oid
WHERE ib.`AccountingPeriodEnd` >= ':MonatAbrechnung_Start' AND ib.`AccountingPeriodEnd` < ':MonatAbrechnung_End' and ib.IsActive = 1
AND ib.`InvoiceDate` >= ':Monat_Start' AND ib.`InvoiceDate` < ':Monat_End'
AND ib.`InvoiceDate` >= ':Monat_Start' AND ib.`InvoiceDate` < ':Monat_End' AND ib.`IsExported` = 0
ORDER BY invoiceoid, ii.ItemDescription
";
@@ -609,7 +613,7 @@ namespace PerspektivenEV.Export
JOIN serviceinvoiceperiod sip ON sip.serviceinvoiceoid = si.oid
JOIN invoiceitem ii ON ii.serviceinvoiceperiodoid = sip.oid
WHERE ib.`AccountingPeriodEnd` >= ':MonatAbrechnung_Start' AND ib.`AccountingPeriodEnd` < ':MonatAbrechnung_End' and ib.IsActive = 1
AND ib.`InvoiceDate` >= ':Monat_Start' AND ib.`InvoiceDate` < ':Monat_End' AND ib.InvoiceId = 'SammelrechnungBthg'
AND ib.`InvoiceDate` >= ':Monat_Start' AND ib.`InvoiceDate` < ':Monat_End' AND ib.InvoiceId = 'SammelrechnungBthg' AND ib.`IsExported` = 0
ORDER BY ii.ItemDescription
";

View File

@@ -267,35 +267,7 @@ namespace PerspektivenEV.Invoicing
}
}
// + Ort - Tagesstätte oder BeWo mit Ort
if (cat.Abbreviation.StartsWith("TS"))
{
ii.ItemDescription += " TS HTK";
if (cat.Abbreviation.StartsWith("TSKÖ"))
{
ii.ItemDescription += " Kö";
}
else if (cat.Abbreviation.StartsWith("TSSTB"))
{
ii.ItemDescription += " Stb";
}
else if (cat.Abbreviation.StartsWith("TSOU"))
{
ii.ItemDescription += " OU";
}
}
else if (cat.Abbreviation.StartsWith("HTK"))
{
ii.ItemDescription += " ieH HTK";
}
else if (cat.Abbreviation.StartsWith("FFM"))
{
ii.ItemDescription += " ieH FFM";
}
else if (cat.Abbreviation.StartsWith("KB"))
{
ii.ItemDescription += " ieH KB";
}
SetzeItemDescription(cat, ii);
ii.AmountTotal = 0;
//Rundung erfolgt auf Tagespreisebene auf 2 Nachkommastellen
@@ -360,12 +332,46 @@ namespace PerspektivenEV.Invoicing
ItemDescription = String.Format("Differenz erbrachter Stunden KA {0}", jahr),
UnitDescription = "0,00 €"
};
SetzeItemDescription(cat, iiKa);
serviceInvoicePeriod.InvoiceItemList.Add(iiKa);
}
}
}
}
private void SetzeItemDescription(ServiceCategoryDC cat, InvoiceItem ii)
{
// + Ort - Tagesstätte oder BeWo mit Ort - wichtig für Kostenstellen und Erlöskonten
if (cat.Abbreviation.StartsWith("TS"))
{
ii.ItemDescription += " TS HTK";
if (cat.Abbreviation.StartsWith("TSKÖ"))
{
ii.ItemDescription += " Kö";
}
else if (cat.Abbreviation.StartsWith("TSSTB"))
{
ii.ItemDescription += " Stb";
}
else if (cat.Abbreviation.StartsWith("TSOU"))
{
ii.ItemDescription += " OU";
}
}
else if (cat.Abbreviation.StartsWith("HTK"))
{
ii.ItemDescription += " ieH HTK";
}
else if (cat.Abbreviation.StartsWith("FFM"))
{
ii.ItemDescription += " ieH FFM";
}
else if (cat.Abbreviation.StartsWith("KB"))
{
ii.ItemDescription += " ieH KB";
}
}
private void GetKombiniertenPreisQA(ServiceInvoicePeriod period, SupportConceptApprovalPeriodDC scapTS, ServiceCategoryDC cat, CostBearer2SupportConcept cb2sc, decimal LG, decimal? stdPreis, InvoiceItem ii)
{
var qaAps = cb2sc.ApprovalPeriodList.Where(a => a.ServiceCategory.Abbreviation.Contains("QA") && !a.ServiceCategory.Abbreviation.Contains("TS")).ToList();

File diff suppressed because it is too large Load Diff

View File

@@ -23,10 +23,12 @@ namespace SHKService
foreach (var sip in pRO.ServiceInvoicePeriods)
{
if (sip.Customer.LastName.ToLower().Contains("(ka)"))
if (sip.Customer.FirstName.ToLower().Contains("(ka)"))
{
sip.Customer.LastName = sip.Customer.LastName.Replace(" (ka)", "");
sip.Customer.FirstName = sip.Customer.FirstName.Replace("(ka)", "").Trim();
sip.Customer.FirstName = sip.Customer.FirstName.Replace("(KA)", "").Trim();
}
sip.Customer.LastName = sip.Customer.LastName + ", " + sip.Customer.FirstName;
if (sip.Notice != null)
{
if (sip.ServiceInvoiceItems.Count > 0)
@@ -45,9 +47,24 @@ namespace SHKService
sip.CostBearer2SupportConcept.CustomerReferenceNumber = "LVG";
}
//var anhang = new SammelrechnungAnhang();
//xrSubreport1.ReportSource = anhang;
//anhang.SetReportDataSource(pRO);
pRO.ServiceInvoicePeriods.Sort((a, b) => a.Customer.LastNameFirstName.CompareTo(b.Customer.LastNameFirstName));
var count = pRO.ServiceInvoicePeriods.Count;
var pos = 1;
for (int i = 0; i < count; i++)
{
var sip = pRO.ServiceInvoicePeriods[i];
if (sip.ServiceInvoiceItems.Count > 0)
{
foreach (var ii in sip.ServiceInvoiceItems)
{
ii.CustomerFirstname = pos++.ToString();
if(ii.Notice == null && sip.SupportConceptApprovalPeriod != null && sip.SupportConceptApprovalPeriod.ApprovedBEPerInterval.HasValue)
{
ii.Notice = String.Format("{0:n0}", sip.SupportConceptApprovalPeriod.ApprovedBEPerInterval.Value);
}
}
}
}
this.bindingSource1.DataSource = pRO;
}

File diff suppressed because one or more lines are too long

View File

@@ -33,7 +33,12 @@ namespace SHKService
{
base.CorrectOverlappingTimes(serviceRecords);
}
protected override bool HatArbeitszeitImZeitraum(IList<Arbeitszeit> arbeitszeiten, DateTime start, DateTime ende)
{
return false;
}
protected override ServiceRecordSummary BerechneStunden(MitarbeiterstundenkontoRO.EmployeeDetail empDetail, IList<ServiceRecord> groupFilteredRecords, DateTime berichtsAnfang,
DateTime berichtsEnde)

View File

@@ -89,7 +89,8 @@ namespace SHKService.Invoicing
ItemPeriodEnd = serviceInvoicePeriod.End,
SupportConceptApprovalPeriodOid = supportConceptApprovalPeriod.SupportConceptApprovalPeriodOid,
AccountingInterval = AccountingIntervalType.Daily,
UnitCount = (decimal)(end - start).TotalDays + 1
UnitCount = (decimal)(end - start).TotalDays + 1,
Notice = String.Format("{0:n0}", supportConceptApprovalPeriod.ApprovedBEPerInterval.Value)
};
if (supportConceptApprovalPeriod.ServiceCategory.Name == "Fahrzeit")
{
@@ -107,14 +108,21 @@ namespace SHKService.Invoicing
else
{
ii.AmountPerUnit = supportConceptApprovalPeriod.ApprovedBEPerInterval * (decimal)Math.Round((double)data[0].AmountTotal / 60, 4, MidpointRounding.AwayFromZero);
if (!cb2sc.SupportConcept.Customer.Person.LastNameFirstName.Contains("(ka)"))
{
var LG = (decimal)GetLeistungsgruppe(supportConceptApprovalPeriod.ApprovedBEPerInterval);
if (data.Count > 0 && data[0].AmountTotal != null)
{
ii.AmountPerUnit = (decimal)Math.Round((double)data[0].AmountTotal * Math.Round((double)LG / 60, 2, MidpointRounding.AwayFromZero), 2, MidpointRounding.AwayFromZero);
//ii.AmountPerUnit = LG * (decimal)Math.Round((double)data[0].AmountTotal / 60, 4, MidpointRounding.AwayFromZero);
}
ii.ItemDescription = "Qualifizierte Assistenz";
ii.Notice = LG.ToString();
}
if (cb2sc.SupportConcept.Customer.Person.LastNameFirstName.Contains("(ka)"))
{
ii.ItemDescription = "Kompensatorische Assistenz";
}
else
{
ii.ItemDescription = "Qualifizierte Assistenz";
}
}
ii.AmountPerUnit = Math.Round((decimal)ii.AmountPerUnit, 2, MidpointRounding.AwayFromZero);
@@ -141,5 +149,46 @@ namespace SHKService.Invoicing
return 0;
}
private object GetLeistungsgruppe(decimal? approvedBEPerInterval)
{
// alle Leistungen werden in Stufen - sogenannten Leistungsgruppen abgerechnet -
// bei der QA tragen sie die tatsächlich bewilligten Minuten ein, um zu wissen wie viel sie leisten müssen - Abrechnung braucht aber LG
decimal lg = 60;
if (approvedBEPerInterval == null || approvedBEPerInterval.Value < 91)
{
lg = 60;
}
else if (approvedBEPerInterval.Value < 151)
{
lg = 120;
}
else if (approvedBEPerInterval.Value < 211)
{
lg = 180;
}
else if (approvedBEPerInterval.Value < 271)
{
lg = 240;
}
else if (approvedBEPerInterval.Value < 391)
{
lg = 330;
}
else if (approvedBEPerInterval.Value < 511)
{
lg = 450;
}
else if (approvedBEPerInterval.Value < 751)
{
lg = 630;
}
else if (approvedBEPerInterval.Value < 1051)
{
lg = 900;
}
return lg;
}
}
}

View File

@@ -35,24 +35,9 @@ namespace Wabe
this.ruleRateFactorNull = new DevExpress.XtraReports.UI.FormattingRule();
this.topMarginBand1 = new DevExpress.XtraReports.UI.TopMarginBand();
this.bottomMarginBand1 = new DevExpress.XtraReports.UI.BottomMarginBand();
this.GroupFooter = new DevExpress.XtraReports.UI.GroupFooterBand();
this.ruleNoticeNull = new DevExpress.XtraReports.UI.FormattingRule();
this.Page1 = new DevExpress.XtraReports.UI.GroupHeaderBand();
this.lblAdresse = new DevExpress.XtraReports.UI.XRLabel();
this.DetailReport = new DevExpress.XtraReports.UI.DetailReportBand();
this.Detail1 = new DevExpress.XtraReports.UI.DetailBand();
this.xrTable5 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow23 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell37 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell36 = new DevExpress.XtraReports.UI.XRTableCell();
this.DetailReport2 = new DevExpress.XtraReports.UI.DetailReportBand();
this.Detail3 = new DevExpress.XtraReports.UI.DetailBand();
this.GroupFooter1 = new DevExpress.XtraReports.UI.GroupFooterBand();
this.xrTable1 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow6 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell3 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell11 = new DevExpress.XtraReports.UI.XRTableCell();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel4 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel7 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel9 = new DevExpress.XtraReports.UI.XRLabel();
@@ -64,25 +49,35 @@ namespace Wabe
this.xrLabel14 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel15 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel18 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel2 = new DevExpress.XtraReports.UI.XRLabel();
this.xrPictureBox1 = new DevExpress.XtraReports.UI.XRPictureBox();
this.xrLabel19 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel3 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel8 = new DevExpress.XtraReports.UI.XRLabel();
this.lblAdresse = new DevExpress.XtraReports.UI.XRLabel();
this.bindingSource1 = new System.Windows.Forms.BindingSource(this.components);
this.ReportFooter = new DevExpress.XtraReports.UI.ReportFooterBand();
this.xrLabel1 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel10 = new DevExpress.XtraReports.UI.XRLabel();
this.xrTable2 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow2 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell5 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow3 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell7 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrLabel20 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel21 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel22 = new DevExpress.XtraReports.UI.XRLabel();
this.xrPictureBox2 = new DevExpress.XtraReports.UI.XRPictureBox();
this.xrTable3 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow10 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow14 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableRow4 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell1 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrLabel5 = new DevExpress.XtraReports.UI.XRLabel();
this.xrLabel6 = new DevExpress.XtraReports.UI.XRLabel();
this.xrTableRow1 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell2 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell4 = new DevExpress.XtraReports.UI.XRTableCell();
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).BeginInit();
this.xrTableCell6 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTable4 = new DevExpress.XtraReports.UI.XRTable();
this.xrTableRow5 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell8 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell9 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableRow7 = new DevExpress.XtraReports.UI.XRTableRow();
this.xrTableCell10 = new DevExpress.XtraReports.UI.XRTableCell();
this.xrTableCell12 = new DevExpress.XtraReports.UI.XRTableCell();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
//
// Detail
@@ -108,19 +103,6 @@ namespace Wabe
this.bottomMarginBand1.HeightF = 71.00005F;
this.bottomMarginBand1.Name = "bottomMarginBand1";
//
// GroupFooter
//
this.GroupFooter.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrPictureBox1,
this.xrLabel19,
this.xrLabel3,
this.xrLabel8,
this.xrTable3,
this.xrLabel5,
this.xrLabel6});
this.GroupFooter.HeightF = 226.0417F;
this.GroupFooter.Name = "GroupFooter";
//
// ruleNoticeNull
//
this.ruleNoticeNull.Condition = "[Notice] == ?";
@@ -130,6 +112,8 @@ namespace Wabe
// Page1
//
this.Page1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable4,
this.xrTable3,
this.xrLabel2,
this.xrLabel4,
this.xrLabel7,
@@ -143,186 +127,21 @@ namespace Wabe
this.xrLabel15,
this.xrLabel18,
this.lblAdresse});
this.Page1.HeightF = 337.6666F;
this.Page1.HeightF = 408.375F;
this.Page1.Name = "Page1";
this.Page1.StylePriority.UseFont = false;
//
// lblAdresse
// xrLabel2
//
this.lblAdresse.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.lblAdresse.LocationFloat = new DevExpress.Utils.PointFloat(0F, 10.00002F);
this.lblAdresse.Multiline = true;
this.lblAdresse.Name = "lblAdresse";
this.lblAdresse.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.lblAdresse.SizeF = new System.Drawing.SizeF(317F, 111.5F);
this.lblAdresse.StylePriority.UseFont = false;
this.lblAdresse.Text = "[RecipientOrganisation]\r\n[RecipientContactPerson]\r\n[RecipientDivision]\r\n[Recipien" +
"tStreet]\r\n[RecipientPostCodeAndTown]";
//
// DetailReport
//
this.DetailReport.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail1,
this.DetailReport2});
this.DetailReport.DataMember = "ServiceInvoicePeriods";
this.DetailReport.DataSource = this.bindingSource1;
this.DetailReport.Level = 0;
this.DetailReport.Name = "DetailReport";
//
// Detail1
//
this.Detail1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable5});
this.Detail1.Font = new DevExpress.Drawing.DXFont("Arial", 12F, DevExpress.Drawing.DXFontStyle.Italic, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.Detail1.HeightF = 25F;
this.Detail1.Name = "Detail1";
this.Detail1.StylePriority.UseFont = false;
//
// xrTable5
//
this.xrTable5.LocationFloat = new DevExpress.Utils.PointFloat(0F, 0F);
this.xrTable5.Name = "xrTable5";
this.xrTable5.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow23});
this.xrTable5.SizeF = new System.Drawing.SizeF(505F, 25F);
//
// xrTableRow23
//
this.xrTableRow23.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell37,
this.xrTableCell36});
this.xrTableRow23.Name = "xrTableRow23";
this.xrTableRow23.Weight = 1D;
//
// xrTableCell37
//
this.xrTableCell37.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell37.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell37.Font = new DevExpress.Drawing.DXFont("Arial", 12F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrTableCell37.Name = "xrTableCell37";
this.xrTableCell37.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell37.StylePriority.UseBackColor = false;
this.xrTableCell37.StylePriority.UseBorderColor = false;
this.xrTableCell37.StylePriority.UseBorders = false;
this.xrTableCell37.StylePriority.UseFont = false;
this.xrTableCell37.StylePriority.UsePadding = false;
this.xrTableCell37.StylePriority.UseTextAlignment = false;
this.xrTableCell37.Text = "Gesamtsumme:";
this.xrTableCell37.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell37.Weight = 1.6985645512702885D;
//
// xrTableCell36
//
this.xrTableCell36.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell36.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell36.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "GrossClaim")});
this.xrTableCell36.Font = new DevExpress.Drawing.DXFont("Arial", 12F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrTableCell36.Name = "xrTableCell36";
this.xrTableCell36.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell36.StylePriority.UseBackColor = false;
this.xrTableCell36.StylePriority.UseBorderColor = false;
this.xrTableCell36.StylePriority.UseBorders = false;
this.xrTableCell36.StylePriority.UseFont = false;
this.xrTableCell36.StylePriority.UsePadding = false;
this.xrTableCell36.StylePriority.UseTextAlignment = false;
this.xrTableCell36.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell36.Weight = 0.71770342553031441D;
//
// DetailReport2
//
this.DetailReport2.Bands.AddRange(new DevExpress.XtraReports.UI.Band[] {
this.Detail3,
this.GroupFooter1});
this.DetailReport2.DataMember = "ServiceInvoicePeriods.ServiceInvoiceItems";
this.DetailReport2.DataSource = this.bindingSource1;
this.DetailReport2.Level = 0;
this.DetailReport2.Name = "DetailReport2";
//
// Detail3
//
this.Detail3.HeightF = 0F;
this.Detail3.Name = "Detail3";
//
// GroupFooter1
//
this.GroupFooter1.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrTable1});
this.GroupFooter1.Font = new DevExpress.Drawing.DXFont("Arial", 12F, DevExpress.Drawing.DXFontStyle.Bold, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.GroupFooter1.HeightF = 50F;
this.GroupFooter1.Name = "GroupFooter1";
this.GroupFooter1.StylePriority.UseFont = false;
//
// xrTable1
//
this.xrTable1.LocationFloat = new DevExpress.Utils.PointFloat(2.119276E-05F, 0F);
this.xrTable1.Name = "xrTable1";
this.xrTable1.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow1,
this.xrTableRow6});
this.xrTable1.SizeF = new System.Drawing.SizeF(505F, 50F);
//
// xrTableRow6
//
this.xrTableRow6.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell3,
this.xrTableCell11});
this.xrTableRow6.Name = "xrTableRow6";
this.xrTableRow6.Weight = 1D;
//
// xrTableCell3
//
this.xrTableCell3.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell3.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell3.Font = new DevExpress.Drawing.DXFont("Arial", 12F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrTableCell3.Name = "xrTableCell3";
this.xrTableCell3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell3.StylePriority.UseBackColor = false;
this.xrTableCell3.StylePriority.UseBorderColor = false;
this.xrTableCell3.StylePriority.UseBorders = false;
this.xrTableCell3.StylePriority.UseFont = false;
this.xrTableCell3.StylePriority.UsePadding = false;
this.xrTableCell3.StylePriority.UseTextAlignment = false;
this.xrTableCell3.Text = "Restbetrag";
this.xrTableCell3.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell3.Weight = 1.6985645512702885D;
//
// xrTableCell11
//
this.xrTableCell11.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell11.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell11.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "NetClaim")});
this.xrTableCell11.Font = new DevExpress.Drawing.DXFont("Arial", 12F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrTableCell11.Name = "xrTableCell11";
this.xrTableCell11.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell11.StylePriority.UseBackColor = false;
this.xrTableCell11.StylePriority.UseBorderColor = false;
this.xrTableCell11.StylePriority.UseBorders = false;
this.xrTableCell11.StylePriority.UseFont = false;
this.xrTableCell11.StylePriority.UsePadding = false;
this.xrTableCell11.StylePriority.UseTextAlignment = false;
this.xrTableCell11.Text = "Gesamtkosten";
this.xrTableCell11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell11.Weight = 0.71770342553031441D;
//
// bindingSource1
//
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO);
this.xrLabel2.Font = new DevExpress.Drawing.DXFont("Arial", 10F);
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(461.3603F, 253.1668F);
this.xrLabel2.Name = "xrLabel2";
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel2.SizeF = new System.Drawing.SizeF(236.2082F, 20F);
this.xrLabel2.StylePriority.UseFont = false;
this.xrLabel2.StylePriority.UseTextAlignment = false;
this.xrLabel2.Text = "ZE-Nummer 70033";
this.xrLabel2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
//
// xrLabel4
//
@@ -479,165 +298,298 @@ namespace Wabe
this.xrLabel18.Text = "Betreuungszeitraum [AccountingPeriod]";
this.xrLabel18.WordWrap = false;
//
// xrLabel2
// lblAdresse
//
this.xrLabel2.Font = new DevExpress.Drawing.DXFont("Arial", 10F);
this.xrLabel2.LocationFloat = new DevExpress.Utils.PointFloat(461.3603F, 253.1668F);
this.xrLabel2.Name = "xrLabel2";
this.xrLabel2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel2.SizeF = new System.Drawing.SizeF(236.2082F, 20F);
this.xrLabel2.StylePriority.UseFont = false;
this.xrLabel2.StylePriority.UseTextAlignment = false;
this.xrLabel2.Text = "ZE-Nummer 70033";
this.xrLabel2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopLeft;
this.lblAdresse.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.lblAdresse.LocationFloat = new DevExpress.Utils.PointFloat(0F, 10.00002F);
this.lblAdresse.Multiline = true;
this.lblAdresse.Name = "lblAdresse";
this.lblAdresse.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.lblAdresse.SizeF = new System.Drawing.SizeF(317F, 111.5F);
this.lblAdresse.StylePriority.UseFont = false;
this.lblAdresse.Text = "[RecipientOrganisation]\r\n[RecipientContactPerson]\r\n[RecipientDivision]\r\n[Recipien" +
"tStreet]\r\n[RecipientPostCodeAndTown]";
//
// xrPictureBox1
// bindingSource1
//
this.xrPictureBox1.ImageSource = new DevExpress.XtraPrinting.Drawing.ImageSource("img", resources.GetString("xrPictureBox1.ImageSource"));
this.xrPictureBox1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 143.4167F);
this.xrPictureBox1.Name = "xrPictureBox1";
this.xrPictureBox1.SizeF = new System.Drawing.SizeF(144.6248F, 65.62502F);
this.xrPictureBox1.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage;
this.bindingSource1.DataSource = typeof(BeWo.Report.ReportObjects.ServiceInvoiceRO);
//
// xrLabel19
// ReportFooter
//
this.xrLabel19.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.xrLabel19.LocationFloat = new DevExpress.Utils.PointFloat(0F, 126.4166F);
this.xrLabel19.Name = "xrLabel19";
this.xrLabel19.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel19.SizeF = new System.Drawing.SizeF(175F, 17F);
this.xrLabel19.StylePriority.UseFont = false;
this.xrLabel19.Text = "Im Auftrag";
this.ReportFooter.Controls.AddRange(new DevExpress.XtraReports.UI.XRControl[] {
this.xrLabel1,
this.xrLabel10,
this.xrTable2,
this.xrLabel20,
this.xrLabel21,
this.xrLabel22,
this.xrPictureBox2});
this.ReportFooter.HeightF = 233.6668F;
this.ReportFooter.Name = "ReportFooter";
//
// xrLabel3
// xrLabel1
//
this.xrLabel3.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.xrLabel3.LocationFloat = new DevExpress.Utils.PointFloat(0F, 91.66666F);
this.xrLabel3.Name = "xrLabel3";
this.xrLabel3.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel3.SizeF = new System.Drawing.SizeF(587.8749F, 17.74998F);
this.xrLabel3.StylePriority.UseFont = false;
this.xrLabel3.Text = "Für Ihre Unterstützung bedanken wir uns im voraus sehr herzlich und verbleiben";
this.xrLabel1.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.xrLabel1.LocationFloat = new DevExpress.Utils.PointFloat(0F, 115.6666F);
this.xrLabel1.Name = "xrLabel1";
this.xrLabel1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel1.SizeF = new System.Drawing.SizeF(175F, 17F);
this.xrLabel1.StylePriority.UseFont = false;
this.xrLabel1.Text = "mit freundlichen Grüßen";
//
// xrLabel8
// xrLabel10
//
this.xrLabel8.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.xrLabel8.LocationFloat = new DevExpress.Utils.PointFloat(0F, 30.20833F);
this.xrLabel8.Name = "xrLabel8";
this.xrLabel8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel8.SizeF = new System.Drawing.SizeF(650F, 21.91664F);
this.xrLabel8.StylePriority.UseFont = false;
this.xrLabel8.Text = "Wir bitten Sie um Überweisung des Rechnungsbetrages auf die angegebene Bankverbin" +
this.xrLabel10.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.xrLabel10.LocationFloat = new DevExpress.Utils.PointFloat(0F, 215.2917F);
this.xrLabel10.Name = "xrLabel10";
this.xrLabel10.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel10.SizeF = new System.Drawing.SizeF(225F, 17F);
this.xrLabel10.StylePriority.UseFont = false;
this.xrLabel10.Text = "Hartmann ";
//
// xrTable2
//
this.xrTable2.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.xrTable2.LocationFloat = new DevExpress.Utils.PointFloat(3.178914E-05F, 71.91671F);
this.xrTable2.Name = "xrTable2";
this.xrTable2.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow2,
this.xrTableRow3});
this.xrTable2.SizeF = new System.Drawing.SizeF(650F, 26F);
this.xrTable2.StylePriority.UseFont = false;
//
// xrTableRow2
//
this.xrTableRow2.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell5});
this.xrTableRow2.Name = "xrTableRow2";
this.xrTableRow2.Weight = 0.38095238095238093D;
//
// xrTableCell5
//
this.xrTableCell5.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Notice")});
this.xrTableCell5.Name = "xrTableCell5";
this.xrTableCell5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell5.StylePriority.UsePadding = false;
this.xrTableCell5.Text = "xrTableCell1";
this.xrTableCell5.Weight = 3D;
//
// xrTableRow3
//
this.xrTableRow3.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell7});
this.xrTableRow3.Name = "xrTableRow3";
this.xrTableRow3.Weight = 0.23809523809523808D;
//
// xrTableCell7
//
this.xrTableCell7.Name = "xrTableCell7";
this.xrTableCell7.Weight = 3D;
//
// xrLabel20
//
this.xrLabel20.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.xrLabel20.LocationFloat = new DevExpress.Utils.PointFloat(0F, 36.45833F);
this.xrLabel20.Name = "xrLabel20";
this.xrLabel20.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel20.SizeF = new System.Drawing.SizeF(650F, 21.91664F);
this.xrLabel20.StylePriority.UseFont = false;
this.xrLabel20.Text = "Wir bitten Sie um Überweisung des Rechnungsbetrages auf die angegebene Bankverbin" +
"dung.";
//
// xrLabel21
//
this.xrLabel21.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.xrLabel21.LocationFloat = new DevExpress.Utils.PointFloat(0F, 97.91666F);
this.xrLabel21.Name = "xrLabel21";
this.xrLabel21.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel21.SizeF = new System.Drawing.SizeF(587.8749F, 17.74998F);
this.xrLabel21.StylePriority.UseFont = false;
this.xrLabel21.Text = "Für Ihre Unterstützung bedanken wir uns im voraus sehr herzlich und verbleiben";
//
// xrLabel22
//
this.xrLabel22.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.xrLabel22.LocationFloat = new DevExpress.Utils.PointFloat(0F, 132.6667F);
this.xrLabel22.Name = "xrLabel22";
this.xrLabel22.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel22.SizeF = new System.Drawing.SizeF(175F, 17F);
this.xrLabel22.StylePriority.UseFont = false;
this.xrLabel22.Text = "Im Auftrag";
//
// xrPictureBox2
//
this.xrPictureBox2.ImageSource = new DevExpress.XtraPrinting.Drawing.ImageSource("img", resources.GetString("xrPictureBox2.ImageSource"));
this.xrPictureBox2.LocationFloat = new DevExpress.Utils.PointFloat(0F, 149.6667F);
this.xrPictureBox2.Name = "xrPictureBox2";
this.xrPictureBox2.SizeF = new System.Drawing.SizeF(144.6248F, 65.62502F);
this.xrPictureBox2.Sizing = DevExpress.XtraPrinting.ImageSizeMode.ZoomImage;
//
// xrTable3
//
this.xrTable3.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.xrTable3.LocationFloat = new DevExpress.Utils.PointFloat(3.178914E-05F, 65.66664F);
this.xrTable3.LocationFloat = new DevExpress.Utils.PointFloat(0F, 333.375F);
this.xrTable3.Name = "xrTable3";
this.xrTable3.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow10,
this.xrTableRow14});
this.xrTable3.SizeF = new System.Drawing.SizeF(650F, 26F);
this.xrTable3.StylePriority.UseFont = false;
this.xrTableRow4});
this.xrTable3.SizeF = new System.Drawing.SizeF(505F, 25F);
//
// xrTableRow10
// xrTableRow4
//
this.xrTableRow10.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableRow4.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell1,
this.xrTableCell6});
this.xrTableRow10.Name = "xrTableRow10";
this.xrTableRow10.Weight = 0.38095238095238093D;
//
// xrTableCell6
//
this.xrTableCell6.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Notice")});
this.xrTableCell6.Name = "xrTableCell6";
this.xrTableCell6.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrTableCell6.StylePriority.UsePadding = false;
this.xrTableCell6.Text = "xrTableCell1";
this.xrTableCell6.Weight = 3D;
//
// xrTableRow14
//
this.xrTableRow14.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell1});
this.xrTableRow14.Name = "xrTableRow14";
this.xrTableRow14.Weight = 0.23809523809523808D;
this.xrTableRow4.Name = "xrTableRow4";
this.xrTableRow4.Weight = 1D;
//
// xrTableCell1
//
this.xrTableCell1.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell1.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell1.Font = new DevExpress.Drawing.DXFont("Arial", 12F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrTableCell1.Name = "xrTableCell1";
this.xrTableCell1.Weight = 3D;
this.xrTableCell1.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell1.StylePriority.UseBackColor = false;
this.xrTableCell1.StylePriority.UseBorderColor = false;
this.xrTableCell1.StylePriority.UseBorders = false;
this.xrTableCell1.StylePriority.UseFont = false;
this.xrTableCell1.StylePriority.UsePadding = false;
this.xrTableCell1.StylePriority.UseTextAlignment = false;
this.xrTableCell1.Text = "Gesamtsumme:";
this.xrTableCell1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell1.Weight = 1.6985645512702885D;
//
// xrLabel5
// xrTableCell6
//
this.xrLabel5.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.xrLabel5.LocationFloat = new DevExpress.Utils.PointFloat(0F, 209.0417F);
this.xrLabel5.Name = "xrLabel5";
this.xrLabel5.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel5.SizeF = new System.Drawing.SizeF(225F, 17F);
this.xrLabel5.StylePriority.UseFont = false;
this.xrLabel5.Text = "Hartmann ";
//
// xrLabel6
//
this.xrLabel6.Font = new DevExpress.Drawing.DXFont("Arial", 11F);
this.xrLabel6.LocationFloat = new DevExpress.Utils.PointFloat(0F, 109.4166F);
this.xrLabel6.Name = "xrLabel6";
this.xrLabel6.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100F);
this.xrLabel6.SizeF = new System.Drawing.SizeF(175F, 17F);
this.xrLabel6.StylePriority.UseFont = false;
this.xrLabel6.Text = "mit freundlichen Grüßen";
//
// xrTableRow1
//
this.xrTableRow1.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell2,
this.xrTableCell4});
this.xrTableRow1.Name = "xrTableRow1";
this.xrTableRow1.Weight = 1D;
//
// xrTableCell2
//
this.xrTableCell2.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell2.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)));
this.xrTableCell2.Font = new DevExpress.Drawing.DXFont("Arial", 12F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
this.xrTableCell6.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell6.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell6.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "GrossClaim")});
this.xrTableCell6.Font = new DevExpress.Drawing.DXFont("Arial", 12F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrTableCell2.Multiline = true;
this.xrTableCell2.Name = "xrTableCell2";
this.xrTableCell2.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell2.StylePriority.UseBackColor = false;
this.xrTableCell2.StylePriority.UseBorderColor = false;
this.xrTableCell2.StylePriority.UseBorders = false;
this.xrTableCell2.StylePriority.UseFont = false;
this.xrTableCell2.StylePriority.UsePadding = false;
this.xrTableCell2.StylePriority.UseTextAlignment = false;
this.xrTableCell2.Text = "abzüglich Abschlagszahlungen";
this.xrTableCell2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell2.Weight = 1.6985645512702885D;
this.xrTableCell6.Name = "xrTableCell6";
this.xrTableCell6.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell6.StylePriority.UseBackColor = false;
this.xrTableCell6.StylePriority.UseBorderColor = false;
this.xrTableCell6.StylePriority.UseBorders = false;
this.xrTableCell6.StylePriority.UseFont = false;
this.xrTableCell6.StylePriority.UsePadding = false;
this.xrTableCell6.StylePriority.UseTextAlignment = false;
this.xrTableCell6.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell6.Weight = 0.71770342553031441D;
//
// xrTableCell4
// xrTable4
//
this.xrTableCell4.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell4.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
this.xrTable4.LocationFloat = new DevExpress.Utils.PointFloat(3.178914E-05F, 358.375F);
this.xrTable4.Name = "xrTable4";
this.xrTable4.Rows.AddRange(new DevExpress.XtraReports.UI.XRTableRow[] {
this.xrTableRow5,
this.xrTableRow7});
this.xrTable4.SizeF = new System.Drawing.SizeF(505F, 50F);
//
// xrTableRow5
//
this.xrTableRow5.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell8,
this.xrTableCell9});
this.xrTableRow5.Name = "xrTableRow5";
this.xrTableRow5.Weight = 1D;
//
// xrTableCell8
//
this.xrTableCell8.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell8.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)));
this.xrTableCell4.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
this.xrTableCell8.Font = new DevExpress.Drawing.DXFont("Arial", 12F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrTableCell8.Multiline = true;
this.xrTableCell8.Name = "xrTableCell8";
this.xrTableCell8.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell8.StylePriority.UseBackColor = false;
this.xrTableCell8.StylePriority.UseBorderColor = false;
this.xrTableCell8.StylePriority.UseBorders = false;
this.xrTableCell8.StylePriority.UseFont = false;
this.xrTableCell8.StylePriority.UsePadding = false;
this.xrTableCell8.StylePriority.UseTextAlignment = false;
this.xrTableCell8.Text = "abzüglich Abschlagszahlungen";
this.xrTableCell8.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell8.Weight = 1.6985645512702885D;
//
// xrTableCell9
//
this.xrTableCell9.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell9.Borders = ((DevExpress.XtraPrinting.BorderSide)(((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)));
this.xrTableCell9.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "AmountAdvancedPayments")});
this.xrTableCell4.Font = new DevExpress.Drawing.DXFont("Arial", 12F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
this.xrTableCell9.Font = new DevExpress.Drawing.DXFont("Arial", 12F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrTableCell4.Multiline = true;
this.xrTableCell4.Name = "xrTableCell4";
this.xrTableCell4.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell4.StylePriority.UseBackColor = false;
this.xrTableCell4.StylePriority.UseBorderColor = false;
this.xrTableCell4.StylePriority.UseBorders = false;
this.xrTableCell4.StylePriority.UseFont = false;
this.xrTableCell4.StylePriority.UsePadding = false;
this.xrTableCell4.StylePriority.UseTextAlignment = false;
this.xrTableCell4.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell4.Weight = 0.71770342553031441D;
this.xrTableCell9.Multiline = true;
this.xrTableCell9.Name = "xrTableCell9";
this.xrTableCell9.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell9.StylePriority.UseBackColor = false;
this.xrTableCell9.StylePriority.UseBorderColor = false;
this.xrTableCell9.StylePriority.UseBorders = false;
this.xrTableCell9.StylePriority.UseFont = false;
this.xrTableCell9.StylePriority.UsePadding = false;
this.xrTableCell9.StylePriority.UseTextAlignment = false;
this.xrTableCell9.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell9.Weight = 0.71770342553031441D;
//
// xrTableRow7
//
this.xrTableRow7.Cells.AddRange(new DevExpress.XtraReports.UI.XRTableCell[] {
this.xrTableCell10,
this.xrTableCell12});
this.xrTableRow7.Name = "xrTableRow7";
this.xrTableRow7.Weight = 1D;
//
// xrTableCell10
//
this.xrTableCell10.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell10.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell10.Font = new DevExpress.Drawing.DXFont("Arial", 12F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrTableCell10.Name = "xrTableCell10";
this.xrTableCell10.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell10.StylePriority.UseBackColor = false;
this.xrTableCell10.StylePriority.UseBorderColor = false;
this.xrTableCell10.StylePriority.UseBorders = false;
this.xrTableCell10.StylePriority.UseFont = false;
this.xrTableCell10.StylePriority.UsePadding = false;
this.xrTableCell10.StylePriority.UseTextAlignment = false;
this.xrTableCell10.Text = "Restbetrag";
this.xrTableCell10.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft;
this.xrTableCell10.Weight = 1.6985645512702885D;
//
// xrTableCell12
//
this.xrTableCell12.BorderColor = System.Drawing.Color.DarkGray;
this.xrTableCell12.Borders = ((DevExpress.XtraPrinting.BorderSide)((((DevExpress.XtraPrinting.BorderSide.Left | DevExpress.XtraPrinting.BorderSide.Top)
| DevExpress.XtraPrinting.BorderSide.Right)
| DevExpress.XtraPrinting.BorderSide.Bottom)));
this.xrTableCell12.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "NetClaim")});
this.xrTableCell12.Font = new DevExpress.Drawing.DXFont("Arial", 12F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
new DevExpress.Drawing.DXFontAdditionalProperty("GdiCharSet", ((byte)(0)))});
this.xrTableCell12.Name = "xrTableCell12";
this.xrTableCell12.Padding = new DevExpress.XtraPrinting.PaddingInfo(2, 2, 2, 2, 100F);
this.xrTableCell12.StylePriority.UseBackColor = false;
this.xrTableCell12.StylePriority.UseBorderColor = false;
this.xrTableCell12.StylePriority.UseBorders = false;
this.xrTableCell12.StylePriority.UseFont = false;
this.xrTableCell12.StylePriority.UsePadding = false;
this.xrTableCell12.StylePriority.UseTextAlignment = false;
this.xrTableCell12.Text = "Gesamtkosten";
this.xrTableCell12.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleRight;
this.xrTableCell12.Weight = 0.71770342553031441D;
//
// Sammelrechnung
//
@@ -645,9 +597,8 @@ namespace Wabe
this.Detail,
this.topMarginBand1,
this.bottomMarginBand1,
this.GroupFooter,
this.Page1,
this.DetailReport});
this.ReportFooter});
this.DataSource = this.bindingSource1;
this.ExportOptions.PrintPreview.DefaultFileName = "Spitzabrechnung";
this.Font = new DevExpress.Drawing.DXFont("Arial", 12F, DevExpress.Drawing.DXFontStyle.Regular, DevExpress.Drawing.DXGraphicsUnit.Point, new DevExpress.Drawing.DXFontAdditionalProperty[] {
@@ -662,10 +613,10 @@ namespace Wabe
this.Version = "23.2";
xrWatermark1.Id = "Watermark1";
this.Watermarks.Add(xrWatermark1);
((System.ComponentModel.ISupportInitialize)(this.xrTable5)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bindingSource1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.xrTable4)).EndInit();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
}
@@ -676,23 +627,9 @@ namespace Wabe
private DevExpress.XtraReports.UI.FormattingRule ruleRateFactorNull;
private DevExpress.XtraReports.UI.TopMarginBand topMarginBand1;
private DevExpress.XtraReports.UI.BottomMarginBand bottomMarginBand1;
private DevExpress.XtraReports.UI.GroupFooterBand GroupFooter;
private DevExpress.XtraReports.UI.GroupHeaderBand Page1;
private DevExpress.XtraReports.UI.DetailReportBand DetailReport;
private DevExpress.XtraReports.UI.DetailBand Detail1;
private DevExpress.XtraReports.UI.XRTable xrTable5;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow23;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell37;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell36;
private DevExpress.XtraReports.UI.DetailReportBand DetailReport2;
private DevExpress.XtraReports.UI.DetailBand Detail3;
private DevExpress.XtraReports.UI.XRLabel lblAdresse;
private DevExpress.XtraReports.UI.FormattingRule ruleNoticeNull;
private DevExpress.XtraReports.UI.GroupFooterBand GroupFooter1;
private DevExpress.XtraReports.UI.XRTable xrTable1;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow6;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell3;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell11;
private DevExpress.XtraReports.UI.XRLabel xrLabel4;
private DevExpress.XtraReports.UI.XRLabel xrLabel7;
private DevExpress.XtraReports.UI.XRLabel xrLabel9;
@@ -705,19 +642,28 @@ namespace Wabe
private DevExpress.XtraReports.UI.XRLabel xrLabel15;
private DevExpress.XtraReports.UI.XRLabel xrLabel18;
private DevExpress.XtraReports.UI.XRLabel xrLabel2;
private DevExpress.XtraReports.UI.XRPictureBox xrPictureBox1;
private DevExpress.XtraReports.UI.XRLabel xrLabel19;
private DevExpress.XtraReports.UI.XRLabel xrLabel3;
private DevExpress.XtraReports.UI.XRLabel xrLabel8;
private DevExpress.XtraReports.UI.XRTable xrTable4;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow5;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell8;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell9;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow7;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell10;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell12;
private DevExpress.XtraReports.UI.XRTable xrTable3;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow10;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell6;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow14;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow4;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell1;
private DevExpress.XtraReports.UI.XRLabel xrLabel5;
private DevExpress.XtraReports.UI.XRLabel xrLabel6;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow1;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell4;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell6;
private DevExpress.XtraReports.UI.ReportFooterBand ReportFooter;
private DevExpress.XtraReports.UI.XRLabel xrLabel1;
private DevExpress.XtraReports.UI.XRLabel xrLabel10;
private DevExpress.XtraReports.UI.XRTable xrTable2;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow2;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell5;
private DevExpress.XtraReports.UI.XRTableRow xrTableRow3;
private DevExpress.XtraReports.UI.XRTableCell xrTableCell7;
private DevExpress.XtraReports.UI.XRLabel xrLabel20;
private DevExpress.XtraReports.UI.XRLabel xrLabel21;
private DevExpress.XtraReports.UI.XRLabel xrLabel22;
private DevExpress.XtraReports.UI.XRPictureBox xrPictureBox2;
}
}

View File

@@ -49,24 +49,6 @@ namespace Wabe
lblAdresse.Text = sb.ToString();
var newSip = new ServiceInvoicePeriodRO();
foreach (var sip in pRO.ServiceInvoicePeriods)
{
var newItem = new ServiceInvoiceItemRO();
foreach (var item in sip.ServiceInvoiceItems)
{
newItem.UnitCount += item.UnitCount;
newItem.NetAmount += item.NetAmount;
newItem.ServiceDescription = item.ServiceDescription;
}
newSip.ServiceInvoiceItems.Add(newItem);
}
pRO.ServiceInvoicePeriods = new List<ServiceInvoicePeriodRO>();
pRO.ServiceInvoicePeriods.Add(newSip);
this.bindingSource1.DataSource = pRO;
}
}

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,11 @@
using System;
using System.Collections.Specialized;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Net;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.Configuration;
using BeWo.Service.Core;
using BeWo.Service.Plugins;
@@ -89,6 +94,102 @@ namespace BeWo.Service.OwnChat
}
}
public static String SendOwnChatMessage(String message, Employee emp)
{
String pin = "";
/*
* Hi,
hier mal die Infos für die 2FA Implementierung.
fwev
Der POST-Request geht an
https://[SERVER-URL]/api/ownchat/sendmessage/user/[API-KEY]/[CUSTOMERID]/[USERID] oder
[SERVER-URL] = Server des Kunden (Zu finden über Dictionary -> siehe z.B. Chat-Code Erstellung im BWP)
[API-KEY] = Der Key, den du immer hinterlegst (siehe z.B. Chat-Code Erstellung im BWP)
[USERID] = interne User-ID des Users, der sich gerade anmeldet. Das ist m.W. bei euch immer "E" (=Employee) oder "C" (=Client) plus OID. Also z.B. "E123" oder "C456". Schau mal in Lyns Code beim Endpunkt [BWP-Server-URL]/Chat/LoginToken/?typ=users
Per POST-Field dann noch "text". Z.B. "Ihre 2FA-Code lautet: xyz" oder halt statt "2FA" der Begriff, der auch in deiner Login-Maske verwendet wird, damit die nicht durcheinander kommen.
Es gibt eine Sache auf die du achten musst: Nicht jeder User muss zwangsläufig ein ownChat-User sein!! Insb. bei den Kunden die pro Lizenz zahlen ist das der Fall, weil die nicht jedem eine Lizenz bezahlen wollen.
Vermutlich ist es am einfachsten, wenn du versuchst einen 2FA-Code an den User zu senden. Dann bekommst du vom ownChat-Backend in einem solchen Fall eine Fehlermeldung zurück, dass der User nicht existiert (s.u.). Außerdem wir der Request immer um 5 sec verzögert um Brute-Force zu verhindern.
Wenn das so ist, schreibst du eine Meldung a la "Eine 2-Faktor-Authentifizierung ist nicht möglich, da Sie kein(e) aktive(r) ownChat-Nutzer(in) sind. Bitte wenden Sie sich an Ihre Administratoren.". Dann lässt du den User ohne 2FA rein. Die Meldung geht denen dann hoffentlich auf den Nerv und die Inhaber/Admin versorgen Ihre Leute mit ownChat.
Als Response kommt immer ein JSON zurück. Wenn success=true, dann ist alles fein. Sonst unterhalb von errors
* error:11 -> Kundennummer unbekannt
* error:12 -> Der API-Key ist falsch -> Auth-Error
* error:13 -> Es existiert kein API-Key für die angegeben Kundennummer
* error:14 -> Ziel-Gruppe/-User existiert nicht
* error:15 -> System-User existiert nicht
LG
*/
string url = ConfigurationManager.AppSettings.Get("OwnChatUrl");
if (String.IsNullOrEmpty(url))
{
url = "[SERVER-URL]/api/ownchat/sendmessage/user/[API-KEY]/[CUSTOMERID]/[USERID]";
}
var tenant = PluginLoader.Tenant;
//#if DEBUG
// tenant = "4368658435";
// var serverUrl = OwnChatHelper.ErmittleServerURL(tenant);
// var apikey = "hNykpBwxE1Y6NmwZBTDQOpPXW6xCgnVHjJ5lh0QDQyCefgcnimC32aZ3CwB4qQl4";
// var userid = "1432790061";
//#else
var m = DAOFactory.GenericDAO.LoadByID<Mandator>(1);
if (m == null || String.IsNullOrEmpty(m.Apikey))
{
return "NO API-KEY";
}
var chatcode = DAOFactory.SearchDAO.FindAllEmployeeAppCodes(emp.Oid.Value).OrderByDescending(c => c.InsTs).FirstOrDefault();
if (chatcode == null || String.IsNullOrEmpty(chatcode.EmployeeCode))
{
return "NO CHAT CODE";
}
var serverUrl = OwnChatHelper.ErmittleServerURL(tenant);
var apikey = m.Apikey;
var userid = String.Format("E{0}", emp.Oid);
//#endif
url = url.Replace("[SERVER-URL]", serverUrl);
url = url.Replace("[API-KEY]", apikey);
url = url.Replace("[CUSTOMERID]", tenant);
url = url.Replace("[USERID]", userid);
using (var client = new WebClient())
{
var nvc = new NameValueCollection();
nvc.Add("text", message);
var definition = new { errors = "", success = true };
var response = client.UploadValues(url, "POST", nvc);
String responseStr = System.Text.Encoding.UTF8.GetString(response);
var json = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(responseStr, definition);
return json.errors;
}
}
private static string GetUrlFromApp6(string tenant)
{
try

View File

@@ -94,7 +94,8 @@ namespace BeWo.Service.Plugins
AddOrReplaceTranslation(dict, "EmployeeSchutzstufe", "Schutzstufe");
AddOrReplaceTranslation(dict, "EmployeeBemerkungenSbd", "Allgemeine Bemerkungen");
AddOrReplaceTranslation(dict, "Zwei Faktor Authentifizierung erforderlich", "Zwei Faktor Authentifizierung erforderlich.\nEs wurde ein Code an ownChat gesendet.\n\nBitte geben Sie hier den Code ein:");
AddOrReplaceTranslation(dict, "Zwei Faktor Authentifizierung erforderlich", "Zwei-Faktor-Authentifizierung erforderlich.\nEs wurde ein Code an ownChat gesendet.\n\nBitte geben Sie hier den Code ein:");
AddOrReplaceTranslation(dict, "Kein Chat Code für die Zwei Faktor Authentifizierung gefunden", "Eine Zwei-Faktor-Authentifizierung ist nicht möglich,\nda Sie kein(e) aktive(r) ownChat-Nutzer(in) sind.\nBitte wenden Sie sich an Ihre Administratoren.");
AddOrReplaceTranslation(dict, "Neue Mitarbeiterlizenz bestellen", "Neue Lizenz bestellen");

View File

@@ -511,10 +511,11 @@ namespace BeWo.Service.ServiceImplementations
if (settings.UseTwoFactorAuth)
{
String tfcode = CreateTwoFactorCode(lUser);
result = UserValidationResult.UserValidTwoFactorAuthenticationNeeded;
if (String.IsNullOrEmpty(twoFactorPin))
{
result = CreateTwoFactorCode(lUser);
}
}
else if (settings.IsPasswordSecurityActiv)
{
@@ -582,77 +583,43 @@ namespace BeWo.Service.ServiceImplementations
}
}
protected virtual String CreateTwoFactorCode(ApplicationUser user)
protected virtual UserValidationResult CreateTwoFactorCode(ApplicationUser user)
{
String pin = "";
var code = CreateTwoFactorCode();
/*
* Hi,
var message = String.Format("Ihr Code für die 2-Faktor Authentifizierung lautet: {0}", code);
hier mal die Infos für die 2FA Implementierung.
fwev
Der POST-Request geht an
https://[SERVER-URL]/api/ownchat/sendmessage/user/[API-KEY]/[CUSTOMERID]/[USERID] oder
[SERVER-URL] = Server des Kunden (Zu finden über Dictionary -> siehe z.B. Chat-Code Erstellung im BWP)
[API-KEY] = Der Key, den du immer hinterlegst (siehe z.B. Chat-Code Erstellung im BWP)
[USERID] = interne User-ID des Users, der sich gerade anmeldet. Das ist m.W. bei euch immer "E" (=Employee) oder "C" (=Client) plus OID. Also z.B. "E123" oder "C456". Schau mal in Lyns Code beim Endpunkt [BWP-Server-URL]/Chat/LoginToken/?typ=users
Per POST-Field dann noch "text". Z.B. "Ihre 2FA-Code lautet: xyz" oder halt statt "2FA" der Begriff, der auch in deiner Login-Maske verwendet wird, damit die nicht durcheinander kommen.
Es gibt eine Sache auf die du achten musst: Nicht jeder User muss zwangsläufig ein ownChat-User sein!! Insb. bei den Kunden die pro Lizenz zahlen ist das der Fall, weil die nicht jedem eine Lizenz bezahlen wollen.
Vermutlich ist es am einfachsten, wenn du versuchst einen 2FA-Code an den User zu senden. Dann bekommst du vom ownChat-Backend in einem solchen Fall eine Fehlermeldung zurück, dass der User nicht existiert (s.u.). Außerdem wir der Request immer um 5 sec verzögert um Brute-Force zu verhindern.
Wenn das so ist, schreibst du eine Meldung a la "Eine 2-Faktor-Authentifizierung ist nicht möglich, da Sie kein(e) aktive(r) ownChat-Nutzer(in) sind. Bitte wenden Sie sich an Ihre Administratoren.". Dann lässt du den User ohne 2FA rein. Die Meldung geht denen dann hoffentlich auf den Nerv und die Inhaber/Admin versorgen Ihre Leute mit ownChat.
Als Response kommt immer ein JSON zurück. Wenn success=true, dann ist alles fein. Sonst unterhalb von errors
* error:11 -> Kundennummer unbekannt
* error:12 -> Der API-Key ist falsch -> Auth-Error
* error:13 -> Es existiert kein API-Key für die angegeben Kundennummer
* error:14 -> Ziel-Gruppe/-User existiert nicht
* error:15 -> System-User existiert nicht
LG
*/
string url = ConfigurationManager.AppSettings.Get("OwnChatUrl");
if (String.IsNullOrEmpty(url))
{
url = "https://[SERVER-URL]/api/ownchat/sendmessage/user/[API-KEY]/[CUSTOMERID]/[USERID]";
}
var m = DAOFactory.GenericDAO.LoadByID<Mandator>(1);
if (m == null || String.IsNullOrEmpty(m.Apikey))
{
return "NO API-KEY";
}
var serverUrl = OwnChatHelper.ErmittleServerURL(MultitenancyOperationContextExt.Current.Tenant);
var chatcode = DAOFactory.SearchDAO.FindAllEmployeeAppCodes(user.Employee.Oid.Value).OrderByDescending(c => c.InsTs).FirstOrDefault();
if (chatcode == null || String.IsNullOrEmpty(chatcode.EmployeeCode))
{
return "NO CHAT CODE";
}
url = url.Replace("[SERVER-URL]", serverUrl);
url = url.Replace("[API-KEY]", m.Apikey);
url = url.Replace("[USERID]", String.Format("E{0}", user.Employee.Oid));
var result = OwnChatHelper.SendOwnChatMessage(message, user.Employee);
if (result == "NO API-KEY" || result == "11" || result == "12" || result == "13")
{
//return UserValidationResult.TwoFactorAuthenticationFailedNoApiKey;
return UserValidationResult.TwoFactorAuthenticationFailedNoChatCodeAllowLogin;
}
else if (result == "NO CHAT CODE" || result == "14" || result == "15")
{
return UserValidationResult.TwoFactorAuthenticationFailedNoChatCodeAllowLogin;
}
var tfc = new TwoFactorCode();
tfc.TFCode = code;
tfc.LoginName = user.LoginName;
tfc.Password = user.BCryptPassword;
tfc.CreateDate = DateTime.Now;
using (var client = new WebClient())
{
var nvc = new NameValueCollection();
nvc.Add("text", "Ihr Code für die 2-Faktor Authentifizierung lautet:");
//var definition = new { mel = "", stm = new { pre = "", post = "" }, pmt = new { pre = "", post = "" } };
var response = client.UploadValues(url, "POST", nvc);
String responseStr = System.Text.Encoding.UTF8.GetString(response);
//var json = JsonConvert.DeserializeAnonymousType(responseStr, definition);
}
DAOFactory.GenericDAO.Insert(tfc);
return pin;
return UserValidationResult.UserValidTwoFactorAuthenticationNeeded;
}
protected virtual String CreateTwoFactorCode()
{
Random generator = new Random();
String code = generator.Next(0, 100000).ToString("D5");
return code;
}
private bool TenantExists()

View File

@@ -726,7 +726,10 @@ namespace BS.Shared
PasswordExpired = 7,
UserValidTwoFactorAuthenticationNeeded = 8,
EmployeeDeleted = 9,
BeWoPasswordNotAllowed = 10
BeWoPasswordNotAllowed = 10,
TwoFactorAuthenticationFailedNoApiKey = 11,
TwoFactorAuthenticationFailedNoChatCodeAllowLogin = 12,
TwoFactorAuthenticationFailedNoChatCodeDontAllowLogin = 13
}
public enum SupportConceptApprovalInterval