Merge branch 'master' of ssh://float.ownsoft.de/git/beyondSoft/BeWo
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
";
|
||||
|
||||
@@ -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();
|
||||
|
||||
1218
ReportImp/SHKService/CollectiveBillingReportTab.Designer.cs
generated
1218
ReportImp/SHKService/CollectiveBillingReportTab.Designer.cs
generated
File diff suppressed because it is too large
Load Diff
@@ -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
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
704
ReportImp/Wabe/RechnungBezirk.Designer.cs
generated
704
ReportImp/Wabe/RechnungBezirk.Designer.cs
generated
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user