using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using System.Reflection; using FastReport.Barcode.QRCode; using FastReport.Data; using FastReport.Code; using FastReport.Controls; using FastReport.Utils; using FastReport.Barcode; using System.Text.RegularExpressions; using System.Globalization; namespace FastReport.Forms { /// /// Form for barcode editor /// public partial class BarcodeEditorForm : BaseDialogForm { /// /// Generated text for barcode object /// public string result; private Report report; private static List expandedNodes; private string brackets; private TextBox prevFocus; /// /// Initializes a new instance of the class. /// /// Text data for parsing /// Report object for nodes /// Brackets symbols /// Editor for rich barcode? public BarcodeEditorForm(string data, Report report, string Brackets, bool isRichBarcode) { this.report = report; InitializeComponent(); Localize(); qrWifiEncryption.SelectedIndex = 0; qrSwissIbanType.SelectedIndex = 0; qrSwissRefType.SelectedIndex = 2; tvData.CreateNodes(report.Dictionary); brackets = Brackets; if (expandedNodes != null) tvData.ExpandedNodes = expandedNodes; foreach (Control control in GetAllControls(Controls)) { if (control is TextBox tb) { tb.AllowDrop = true; tb.GotFocus += prevFocus_GotFocus; tb.DragOver += prevFocus_DragOver; tb.DragDrop += prevFocus_DragDrop; } } if (isRichBarcode) { parse(data); if (qrTabs.ActivePage != qrTypeSberbank && Res.Get("Forms,BarcodeEditor,SberbankQr,Enable") != "True") qrTypeSberbank.Dispose(); } else { qrText.Text = data; qrTabs.ActivePage = qrTypeText; while (qrTabs.Pages.Count > 1) qrTabs.Pages[1].Dispose(); } UIUtils.CheckRTL(this); UpdateDpiDependencies(); } /// public override void Localize() { base.Localize(); MyRes res = new MyRes("Forms,BarcodeEditor"); Text = res.Get(""); qrTypeText.Text = res.Get("Text"); qrTypeVcard.Text = res.Get("vCard"); qrTypeURI.Text = res.Get("URI"); qrTypeEmailAddress.Text = res.Get("EmailAddress"); qrTypeEmailMessage.Text = res.Get("EmailMessage"); qrTypeGeo.Text = res.Get("Geolocation"); qrTypeSMS.Text = res.Get("SMS"); qrTypeCall.Text = res.Get("Call"); qrTypeEvent.Text = res.Get("Event"); qrTypeWifi.Text = res.Get("Wifi"); qrTypeSwiss.Text = res.Get("Swiss"); qrTypeSberbank.Text = res.Get("SberbankQr"); label16.Text = res.Get("FirstName"); label17.Text = res.Get("LastName"); label18.Text = res.Get("Title"); label20.Text = res.Get("Company"); label21.Text = res.Get("Website"); label25.Text = res.Get("EmailPersonal"); label26.Text = res.Get("EmailBusiness"); label19.Text = res.Get("PhoneMobile"); label27.Text = res.Get("PhonePersonal"); label28.Text = res.Get("PhoneBusiness"); label31.Text = res.Get("Street"); label22.Text = res.Get("ZipCode"); label23.Text = res.Get("City"); label24.Text = res.Get("Country"); label30.Text = res.Get("URI"); label29.Text = res.Get("Email"); label1.Text = res.Get("Email"); label2.Text = res.Get("Subject"); label3.Text = res.Get("Text"); label5.Text = res.Get("Latitude"); label4.Text = res.Get("Longitude"); label6.Text = res.Get("Height"); label7.Text = res.Get("PhoneNumber"); label8.Text = res.Get("Text"); label9.Text = res.Get("PhoneNumber"); label10.Text = res.Get("Description"); label11.Text = res.Get("From"); label12.Text = res.Get("To"); label13.Text = res.Get("Encryption"); label14.Text = res.Get("NetworkName"); label15.Text = res.Get("Password"); qrWifiHidden.Text = res.Get("WifiHidden"); res = new MyRes("Forms,BarcodeEditor,Swiss"); lblSwissIban.Text = res.Get("Iban"); lblSwissIbanType.Text = res.Get("IbanType"); lblSwissAmount.Text = res.Get("Amount"); lblSwissCurrency.Text = res.Get("Currency"); gbSwissCreditor.Text = res.Get("Creditor"); gbSwissDebitor.Text = res.Get("Debitor"); lblSwissName1.Text = lblSwissName2.Text = res.Get("Name"); lblSwissStreet1.Text = lblSwissStreet2.Text = res.Get("StreetNr"); lblSwissZip1.Text = lblSwissZip2.Text = res.Get("ZipCityCountry"); gbSwissAddInformation.Text = res.Get("AdditionalInformation"); lblSwissRefText.Text = res.Get("Reference"); lblSwissRefType.Text = res.Get("Type"); lblSwissRefTextType.Text = res.Get("TextType"); lblSwissAddMessage.Text = res.Get("Message"); lblSwissAddBillInfo.Text = res.Get("BillInformation"); lblSwissAddProcedure1.Text = res.Get("AlternativeProcedure") + " 1"; lblSwissAddProcedure2.Text = res.Get("AlternativeProcedure") + " 2"; res = new MyRes("Forms,BarcodeEditor,SberbankQr"); sberQrName.Text = res.Get("Name"); label41.Text = res.Get("PersonalAcc"); label59.Text = res.Get("CorrespAcc"); label52.Text = res.Get("BIC"); label45.Text = res.Get("BankName"); label66.Text = res.Get("KPP"); label64.Text = res.Get("PayerINN"); label69.Text = res.Get("TaxPeriod"); label72.Text = res.Get("DocNo"); label65.Text = res.Get("Purpose"); label68.Text = res.Get("OKTMO"); label63.Text = res.Get("PayeeINN"); label62.Text = res.Get("Sum"); label74.Text = res.Get("DocDate"); label70.Text = res.Get("PayReason"); label73.Text = res.Get("TaxPaytKind"); label67.Text = res.Get("CBC"); label71.Text = res.Get("DrawerStatus"); label104.Text = res.Get("TechCode"); label103.Text = res.Get("UIN"); label102.Text = res.Get("RegType"); label101.Text = res.Get("ExecId"); label100.Text = res.Get("RuleId"); label99.Text = res.Get("AddAmount"); label98.Text = res.Get("SpecFio"); label97.Text = res.Get("ClassNum"); label96.Text = res.Get("InstNum"); label95.Text = res.Get("QuittDate"); label94.Text = res.Get("QuittId"); label91.Text = res.Get("CounterVal"); label92.Text = res.Get("ServiceName"); label93.Text = res.Get("CounterId"); label90.Text = res.Get("Category"); label89.Text = res.Get("PaymTerm"); label88.Text = res.Get("BirthDate"); label87.Text = res.Get("ChildFio"); label86.Text = res.Get("PayerIdType"); label85.Text = res.Get("PayerIdNum"); label83.Text = res.Get("Flat"); label84.Text = res.Get("Phone"); label81.Text = res.Get("PersAcc"); label80.Text = res.Get("PensAcc"); label79.Text = res.Get("DocIdx"); label78.Text = res.Get("Contract"); label77.Text = res.Get("PersonalAccount"); label76.Text = res.Get("PayerAdress"); label75.Text = res.Get("MiddleName"); label61.Text = res.Get("FirstName"); label60.Text = res.Get("LastName"); tabPage2.Text = res.Get("ObligatoryProps"); tabPage3.Text = res.Get("AdditionalProps"); tabPage4.Text = res.Get("AnotherProps"); QuittDateCheckBox.Text = res.Get("NotEnterDate"); BirthDateCheckBox.Text = res.Get("NotEnterDate"); PaymTermCheckBox.Text = res.Get("NotEnterDate"); DocDateCheckBox.Text = res.Get("NotEnterDate"); } /// public override void UpdateDpiDependencies() { base.UpdateDpiDependencies(); tvData.ImageList = GetImages(); } private void QREdit_FormClosed(object sender, FormClosedEventArgs e) { expandedNodes = tvData.ExpandedNodes; } private void tvData_ItemDrag(object sender, ItemDragEventArgs e) { tvData.SelectedNode = e.Item as TreeNode; if (tvData.SelectedItem != "") tvData.DoDragDrop(e.Item, DragDropEffects.Move); else tvData.DoDragDrop(e.Item, DragDropEffects.None); } private void prevFocus_DragOver(object sender, DragEventArgs e) { TextBox tb = sender as TextBox; int index = tb.GetCharIndexFromPosition(tb.PointToClient(new Point(e.X, e.Y))); if (index == tb.Text.Length - 1) index++; tb.Focus(); tb.Select(index, 0); e.Effect = e.AllowedEffect; } private void prevFocus_DragDrop(object sender, DragEventArgs e) { TextBox tb = sender as TextBox; tb.SelectedText = GetTextWithBrackets(); tb.Focus(); } List GetAllControls(Control.ControlCollection collection) { List result = new List(); foreach (Control control in collection) { result.Add(control); result.AddRange(GetAllControls(control.Controls)); } return result; } private void prevFocus_GotFocus(object sender, EventArgs e) { prevFocus = sender as TextBox; } private void tvData_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) { if (tvData.SelectedItem != "" && prevFocus != null) { prevFocus.SelectedText = GetTextWithBrackets(); prevFocus.Focus(); } } private string GetTextWithBrackets() { string text = tvData.SelectedItem; string[] _brackets = brackets.Split(','); // this check is needed if Brackets property is not "[,]" if (InsideBrackets(prevFocus.SelectionStart)) { if (tvData.SelectedItemType == DataTreeSelectedItemType.Function || tvData.SelectedItemType == DataTreeSelectedItemType.CustomItem) return text; return "[" + text + "]"; } return _brackets[0] + text + _brackets[1]; } private bool InsideBrackets(int pos) { string[] _brackets = brackets.Split(','); FindTextArgs args = new FindTextArgs(); args.Text = new FastString(prevFocus.Text); args.OpenBracket = _brackets[0]; args.CloseBracket = _brackets[1]; args.StartIndex = pos; return CodeUtils.IndexInsideBrackets(args); } private void parse(string data) { QRData qr = null; try { qr = QRData.Parse(data); } catch { try { qr = new QRText(data); } catch { MessageBox.Show("Can't parse", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); Close(); return; } } if (qr is QRText) { qrText.Text = qr.data; qrTabs.ActivePage = qrTypeText; } else if (qr is QRvCard) { QRvCard _qr = qr as QRvCard; qrVcFN.Text = _qr.firstName; qrVcLN.Text = _qr.lastName; qrVcTitle.Text = _qr.title; qrVcCompany.Text = _qr.org; qrVcWebsite.Text = _qr.url; qrVcEmailHome.Text = _qr.email_home_internet; qrVcEmailWork.Text = _qr.email_work_internet; qrVcPhone.Text = _qr.tel_cell; qrVcPhoneHome.Text = _qr.tel_home_voice; qrVcPhoneWork.Text = _qr.tel_work_voice; qrVcStreet.Text = _qr.street; qrVcZip.Text = _qr.zipCode; qrVcCity.Text = _qr.city; qrVcCountry.Text = _qr.country; qrTabs.ActivePage = qrTypeVcard; } else if (qr is QRURI) { qrURI.Text = qr.data; qrTabs.ActivePage = qrTypeURI; } else if (qr is QREmailAddress) { qrEmail.Text = qr.data; qrTabs.ActivePage = qrTypeEmailAddress; } else if (qr is QREmailMessage) { QREmailMessage _qr = qr as QREmailMessage; qrEmailTo.Text = _qr.msg_to; qrEmailSub.Text = _qr.msg_sub; qrEmailText.Text = _qr.msg_body; qrTabs.ActivePage = qrTypeEmailMessage; } else if (qr is QRGeo) { QRGeo _qr = qr as QRGeo; qrGeoLatitude.Text = _qr.latitude; qrGeoLongitude.Text = _qr.longitude; qrGeoMeters.Text = _qr.meters; qrTabs.ActivePage = qrTypeGeo; } else if (qr is QRSMS) { QRSMS _qr = qr as QRSMS; qrSMSTo.Text = _qr.sms_to; qrSMSText.Text = _qr.sms_text; qrTabs.ActivePage = qrTypeSMS; } else if (qr is QRCall) { QRCall _qr = qr as QRCall; qrCall.Text = _qr.tel; qrTabs.ActivePage = qrTypeCall; } else if (qr is QREvent) { QREvent _qr = qr as QREvent; qrEventDesc.Text = _qr.summary; qrEventFrom.Value = _qr.dtStart; qrEventTo.Value = _qr.dtEnd; qrTabs.ActivePage = qrTypeEvent; } else if (qr is QRWifi) { QRWifi _qr = qr as QRWifi; qrWifiEncryption.Text = _qr.encryption; qrWifiName.Text = _qr.networkName; qrWifiPass.Text = _qr.password; qrWifiHidden.Checked = _qr.hidden; qrTabs.ActivePage = qrTypeWifi; } else if (qr is QRSberBank) { QRSberBank _qr = qr as QRSberBank; NameTextBox.Text = _qr.Name; PersonalAccTextBox.Text = _qr.PersonalAcc; BankNameTextBox.Text = _qr.BankName; BICTextBox.Text = _qr.BIC; CorrespAccTextBox.Text = _qr.CorrespAcc; sumTextBox.Text = _qr.Sum; PaymentPurpose.Text = _qr.Purpose; PayerInnTextBox.Text = _qr.PayerINN; ReceiverIINTextBox.Text = _qr.PayeeINNB; DrawerStatusTextBox.Text = _qr.DrawerStatus; ReceiverKPPTextBox.Text = _qr.KPP; OKTMOTextBox.Text = _qr.OKTMO; PayReasonTextBox.Text = _qr.PaytReason; TaxPeriodTextBox.Text = _qr.TaxPeriod; DocumentNumberTextBox.Text = _qr.DocNo; CBCTextBox.Text = _qr.CBC; if (_qr.DocDate != DateTime.MinValue) { DocumentDatePicker.Value = _qr.DocDate; DocDateCheckBox.Checked = false; } else { DocumentDatePicker.Enabled = false; DocDateCheckBox.Checked = true; } TaxPayKindTextBox.Text = _qr.TaxPaytKind; LastNameTextBox.Text = _qr.LastName; FirstNameTextBox.Text = _qr.FirstName; MiddleNameTextBox.Text = _qr.MiddleName; PayerAdressTextBox.Text = _qr.PayerAddress; PersonalAccoutTextBox.Text = _qr.PersonalAccount; DocIdxTextBox.Text = _qr.DocIdx; PensAccTextBox.Text = _qr.PensAcc; ContractTextBox.Text = _qr.Contract; PersAccTextBox.Text = _qr.PersAccp; FlatTextBox.Text = _qr.Flat; PhoneTextBox.Text = _qr.Phone; PayerIdTypeTextBox.Text = _qr.PayerIdType; PayerIdNumTextBox.Text = _qr.PayerIdNum; ChildFioTextBox.Text = _qr.ChildFio; if (_qr.BirthDate != DateTime.MinValue) { BirthDatePicker.Value = _qr.BirthDate; BirthDateCheckBox.Checked = false; } else { BirthDateCheckBox.Checked = true; BirthDatePicker.Enabled = false; } if (_qr.PaymTerm != DateTime.MinValue) { PaymTermPicker.Value = _qr.PaymTerm; PaymTermCheckBox.Checked = false; } else { PaymTermPicker.Enabled = false; PaymTermCheckBox.Checked = true; } CategoryTextBox.Text = _qr.Category; ServiceNameTextBox.Text = _qr.ServiceName; CounterIdValTextBox.Text = _qr.CounterId; CounterValTextBox.Text = _qr.CounterVal; QuittIdTextBox.Text = _qr.QuittId; if (_qr.QuittDate != DateTime.MinValue) { QuittDateDatePicker.Value = _qr.QuittDate; QuittDateCheckBox.Checked = false; } else { QuittDateDatePicker.Enabled = false; QuittDateCheckBox.Checked = true; } InstNumTextBox.Text = _qr.InstNum; ClassNumTextBox.Text = _qr.ClassNum; SpecFioTextBox.Text = _qr.SpecFio; AddAmountTextBox.Text = _qr.AddAmount; RuleIdTextBox.Text = _qr.RuleId; ExecId.Text = _qr.ExecId; RegType.Text = _qr.RegType; UINTextBox.Text = _qr.UIN; TechCodeTextBox.Text = _qr.TechCode; qrTabs.ActivePage = qrTypeSberbank; } else if (qr is QRSwiss) { QRSwiss _qr = qr as QRSwiss; qrSwissIban.Text = _qr._Iban._Iban; if (_qr._Iban.TypeIban == Iban.IbanType.Iban) qrSwissIbanType.SelectedIndex = 0; else qrSwissIbanType.SelectedIndex = 1; qrSwissCreditorName.Text = _qr.Creditor.Name; qrSwissCreditorCity.Text = _qr.Creditor.City; qrSwissCreditorCountry.Text = _qr.Creditor.Country; qrSwissCreditorHNumber.Text = _qr.Creditor.HouseNumberOrAddressline; qrSwissCreditorStreet.Text = _qr.Creditor.StreetOrAddressline; qrSwissCreditorZipCode.Text = _qr.Creditor.ZipCode; qrSwissRefText.Text = _qr._Reference.ReferenceText; switch (_qr._Reference.RefType) { case Reference.ReferenceType.QRR: qrSwissRefType.SelectedIndex = 0; break; case Reference.ReferenceType.SCOR: qrSwissRefType.SelectedIndex = 1; break; case Reference.ReferenceType.NON: qrSwissRefType.SelectedIndex = 2; break; } switch (_qr._Reference._ReferenceTextType) { case Reference.ReferenceTextType.QrReference: qrSwissRefTextType.SelectedIndex = 0; break; case Reference.ReferenceTextType.CreditorReferenceIso11649: qrSwissRefTextType.SelectedIndex = 1; break; } if (_qr.Debitor != null) { qrSwissDebitorName.Text = _qr.Debitor.Name.ToString(); qrSwissDebitorCity.Text = _qr.Debitor.City.ToString(); qrSwissDebitorCountry.Text = _qr.Debitor.Country.ToString(); qrSwissDebitorHNumber.Text = _qr.Debitor.HouseNumberOrAddressline.ToString(); qrSwissDebitorStreet.Text = _qr.Debitor.StreetOrAddressline.ToString(); qrSwissDebitorZipCode.Text = _qr.Debitor.ZipCode.ToString(); } qrSwissUnstructMessage.Text = _qr._AdditionalInformation.UnstructureMessage != null ? _qr._AdditionalInformation.UnstructureMessage : ""; qrSwissBillInfo.Text = _qr._AdditionalInformation.BillInformation != null ? _qr._AdditionalInformation.BillInformation : ""; qrSwissAlt1.Text = _qr.AlternativeProcedure1 != null ? _qr.AlternativeProcedure1 : ""; qrSwissAlt2.Text = _qr.AlternativeProcedure2 != null ? _qr.AlternativeProcedure2 : ""; switch (_qr._Currency) { case nameof(Currency.EUR): tbQrSwissCurrency.Text = _qr._Currency.ToString(); break; case nameof(Currency.CHF): tbQrSwissCurrency.Text = _qr._Currency.ToString(); break; default: if (_qr._Currency.StartsWith("[") && _qr._Currency.EndsWith("]")) tbQrSwissCurrency.Text = _qr._Currency.ToString(); else tbQrSwissCurrency.Text = Currency.EUR.ToString(); break; } qrSwissAmount.Text = _qr.Amount?.ToString(); qrTabs.ActivePage = qrTypeSwiss; } } private void btnOk_Click(object sender, EventArgs e) { try { if (qrTabs.ActivePage == qrTypeText) { QRText qr = new QRText(); qr.data = qrText.Text; result = qr.Pack(); } else if (qrTabs.ActivePage == qrTypeVcard) { QRvCard qr = new QRvCard(); qr.firstName = qrVcFN.Text; qr.lastName = qrVcLN.Text; qr.title = qrVcTitle.Text; qr.org = qrVcCompany.Text; qr.url = qrVcWebsite.Text; qr.email_home_internet = qrVcEmailHome.Text; qr.email_work_internet = qrVcEmailWork.Text; qr.tel_cell = qrVcPhone.Text; qr.tel_home_voice = qrVcPhoneHome.Text; qr.tel_work_voice = qrVcPhoneWork.Text; qr.street = qrVcStreet.Text; qr.zipCode = qrVcZip.Text; qr.city = qrVcCity.Text; qr.country = qrVcCountry.Text; result = qr.Pack(); } else if (qrTabs.ActivePage == qrTypeURI) { QRURI qr = new QRURI(); qr.data = qrURI.Text; result = qr.Pack(); } else if (qrTabs.ActivePage == qrTypeEmailAddress) { QREmailAddress qr = new QREmailAddress(); qr.data = qrEmail.Text; result = qr.Pack(); } else if (qrTabs.ActivePage == qrTypeEmailMessage) { QREmailMessage qr = new QREmailMessage(); qr.msg_to = qrEmailTo.Text; qr.msg_sub = qrEmailSub.Text; qr.msg_body = qrEmailText.Text; result = qr.Pack(); } else if (qrTabs.ActivePage == qrTypeGeo) { QRGeo qr = new QRGeo(); qr.latitude = qrGeoLatitude.Text; qr.longitude = qrGeoLongitude.Text; qr.meters = qrGeoMeters.Text; result = qr.Pack(); } else if (qrTabs.ActivePage == qrTypeSMS) { QRSMS qr = new QRSMS(); qr.sms_to = qrSMSTo.Text; qr.sms_text = qrSMSText.Text; result = qr.Pack(); } else if (qrTabs.ActivePage == qrTypeCall) { QRCall qr = new QRCall(); qr.tel = qrCall.Text; result = qr.Pack(); } else if (qrTabs.ActivePage == qrTypeEvent) { QREvent qr = new QREvent(); qr.summary = qrEventDesc.Text; qr.dtStart = qrEventFrom.Value; qr.dtEnd = qrEventTo.Value; result = qr.Pack(); } else if (qrTabs.ActivePage == qrTypeSberbank) { if (String.IsNullOrWhiteSpace(PersonalAccTextBox.Text) || String.IsNullOrWhiteSpace(BankNameTextBox.Text) || String.IsNullOrWhiteSpace(NameTextBox.Text) || String.IsNullOrWhiteSpace(BICTextBox.Text) || String.IsNullOrWhiteSpace(CorrespAccTextBox.Text)) { throw new Exception(Res.Get("Forms,BarcodeEditor,SberbankQr,Error")); } else { string[] brackets = this.brackets.Split(','); string messege = Res.Get("Forms,BarcodeEditor,SberbankQr,Warning"); bool error = true; if ((Regex.IsMatch(PersonalAccTextBox.Text, "[A-z ]") || PersonalAccTextBox.Text.Length != 20) && !(PersonalAccTextBox.Text.StartsWith(brackets[0]) && PersonalAccTextBox.Text.EndsWith(brackets[1]))) { messege += " " + Res.Get("Forms,BarcodeEditor,SberbankQr,PersonalAcc"); error = false; } if ((Regex.IsMatch(BICTextBox.Text, "[A-z ]") || BICTextBox.Text.Length != 9) && !(BICTextBox.Text.StartsWith(brackets[0]) && BICTextBox.Text.EndsWith(brackets[1]))) { messege += " " + Res.Get("Forms,BarcodeEditor,SberbankQr,BIC"); error = false; } if ((Regex.IsMatch(CorrespAccTextBox.Text, "[A-z ]")) && !(CorrespAccTextBox.Text.StartsWith(brackets[0]) && CorrespAccTextBox.Text.EndsWith(brackets[1]))) { messege += " " + Res.Get("Forms,BarcodeEditor,SberbankQr,CorrespAcc"); error = false; } if (!error) throw new Exception(messege + "."); } QRSberBank qe = new QRSberBank(); qe.PersonalAcc = PersonalAccTextBox.Text; qe.BankName = BankNameTextBox.Text; qe.Name = NameTextBox.Text; qe.BIC = BICTextBox.Text; qe.CorrespAcc = CorrespAccTextBox.Text; qe.Sum = sumTextBox.Text; qe.PayeeINNB = ReceiverIINTextBox.Text; qe.PayerINN = PayerInnTextBox.Text; qe.CBC = CBCTextBox.Text; qe.Purpose = PaymentPurpose.Text; qe.DrawerStatus = DrawerStatusTextBox.Text; qe.KPP = ReceiverKPPTextBox.Text; qe.OKTMO = OKTMOTextBox.Text; qe.PaytReason = PayReasonTextBox.Text; qe.DocNo = DocumentNumberTextBox.Text; qe.TaxPaytKind = TaxPayKindTextBox.Text; qe.TaxPeriod = TaxPeriodTextBox.Text; qe.DocDate = DocDateCheckBox.Checked ? DateTime.MinValue : DocumentDatePicker.Value; qe.LastName = LastNameTextBox.Text; qe.FirstName = FirstNameTextBox.Text; qe.MiddleName = MiddleNameTextBox.Text; qe.PayerAddress = PayerAdressTextBox.Text; qe.PersonalAccount = PersonalAccoutTextBox.Text; qe.DocIdx = DocIdxTextBox.Text; qe.PensAcc = PensAccTextBox.Text; qe.Contract = ContractTextBox.Text; qe.PersAccp = PersAccTextBox.Text; qe.Flat = FlatTextBox.Text; qe.Phone = PhoneTextBox.Text; qe.PayerIdType = PayerIdTypeTextBox.Text; qe.PayerIdNum = PayerIdNumTextBox.Text; qe.ChildFio = ChildFioTextBox.Text; qe.BirthDate = BirthDateCheckBox.Checked ? DateTime.MinValue : BirthDatePicker.Value; qe.PaymTerm = PaymTermCheckBox.Checked ? DateTime.MinValue : PaymTermPicker.Value; /* * payment period */ qe.Category = CategoryTextBox.Text; qe.ServiceName = ServiceNameTextBox.Text; qe.CounterId = CounterIdValTextBox.Text; qe.CounterVal = CounterValTextBox.Text; qe.QuittId = QuittIdTextBox.Text; qe.QuittDate = QuittDateCheckBox.Checked ? DateTime.MinValue : QuittDateDatePicker.Value; qe.InstNum = InstNumTextBox.Text; qe.ClassNum = ClassNumTextBox.Text; qe.SpecFio = SpecFioTextBox.Text; qe.AddAmount = AddAmountTextBox.Text; qe.RuleId = RuleIdTextBox.Text; qe.ExecId = ExecId.Text; qe.RegType = RegType.Text; qe.UIN = UINTextBox.Text; qe.TechCode = TechCodeTextBox.Text; result = qe.Pack(); } else if (qrTabs.ActivePage == qrTypeWifi) { QRWifi qr = new QRWifi(); qr.encryption = qrWifiEncryption.Text; qr.networkName = qrWifiName.Text; qr.password = qrWifiPass.Text; qr.hidden = qrWifiHidden.Checked; result = qr.Pack(); } else if (qrTabs.ActivePage == qrTypeSwiss) { MyRes res = new MyRes("Messages,Swiss"); string[] brackets = this.brackets.Split(','); string ibanText = qrSwissIban.Text; Iban.IbanType? ibanType = null; switch (qrSwissIbanType.SelectedIndex) { case 0: ibanType = Iban.IbanType.Iban; break; case 1: ibanType = Iban.IbanType.QrIban; break; } if (ibanType == null || ibanText == "") throw new SwissQrCodeException(res.Get("SwissNullIban")); Iban iban = null; // if the ibanText text is a field from the database, then we simply assign a value without checking it if (ibanText.StartsWith(brackets[0].ToString()) && ibanText.EndsWith(brackets[1])) { iban = new Iban(ibanText); iban.TypeIban = (Iban.IbanType)ibanType; } else iban = new Iban(ibanText, ibanType.Value); string creditorName = qrSwissCreditorName.Text; string creditorZipCode = qrSwissCreditorZipCode.Text; string creditorCity = qrSwissCreditorCity.Text; string creditorCountry = qrSwissCreditorCountry.Text; string creditorHouseNumberOrAddressline = qrSwissCreditorHNumber.Text; string creditorStreetOrAddressline = qrSwissCreditorStreet.Text; Contact creditor = new Contact(creditorName, creditorZipCode, creditorCity, creditorCountry, creditorStreetOrAddressline, creditorHouseNumberOrAddressline); string referenceText = qrSwissRefText.Text; Reference.ReferenceType? referenceType = null; Reference.ReferenceTextType? referenceTextType = null; switch (qrSwissRefTextType.SelectedIndex) { case 0: referenceTextType = Reference.ReferenceTextType.QrReference; break; case 1: referenceTextType = Reference.ReferenceTextType.CreditorReferenceIso11649; break; } switch (qrSwissRefType.SelectedIndex) { case 0: referenceType = Reference.ReferenceType.QRR; break; case 1: referenceType = Reference.ReferenceType.SCOR; break; case 2: referenceType = Reference.ReferenceType.NON; break; } Reference reference = null; if (!String.IsNullOrWhiteSpace(referenceText)) reference = new Reference(referenceType.Value, referenceText, referenceTextType); else reference = new Reference(referenceType.Value, null, null); string debitorName = qrSwissDebitorName.Text; string debitorZipCode = qrSwissDebitorZipCode.Text; string debitorCity = qrSwissDebitorCity.Text; string debitorCountry = qrSwissDebitorCountry.Text; string debitorHouseNumberOrAddressline = qrSwissDebitorHNumber.Text; string debitorStreetOrAddressline = qrSwissDebitorStreet.Text; Contact debitor = null; if (debitorName + debitorCity + debitorZipCode + debitorCountry + debitorStreetOrAddressline + debitorHouseNumberOrAddressline != "") debitor = new Contact(debitorName, debitorZipCode, debitorCity, debitorCountry, debitorStreetOrAddressline, debitorHouseNumberOrAddressline); string addInfoBillInformation = qrSwissBillInfo.Text; string addInfoUnstructureMessage = qrSwissUnstructMessage.Text; AdditionalInformation additionalInformation = new AdditionalInformation(addInfoUnstructureMessage, addInfoBillInformation); string currency = null; switch (tbQrSwissCurrency.Text) { case nameof(Currency.EUR): currency = Currency.EUR.ToString(); break; case nameof(Currency.CHF): currency = Currency.CHF.ToString(); break; default: if (tbQrSwissCurrency.Text.StartsWith("[") && tbQrSwissCurrency.Text.EndsWith("]")) currency = tbQrSwissCurrency.Text; else currency = Currency.EUR.ToString(); break; } string amountValue = null; if (!qrSwissAmount.Text.StartsWith(brackets[0]) || !qrSwissAmount.Text.EndsWith(brackets[1])) { //Amount has to use . as decimal separator in any case. See https://www.paymentstandards.ch/dam/downloads/ig-qr-bill-en.pdf page 27. string invariantSeparator = CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator; string clearQRSwissAmount = qrSwissAmount.Text.Replace(",", invariantSeparator).Replace("/", invariantSeparator); if (!string.IsNullOrWhiteSpace(clearQRSwissAmount)) { if (decimal.TryParse(clearQRSwissAmount, NumberStyles.Number, CultureInfo.InvariantCulture, out decimal amount)) amountValue = amount.ToString(CultureInfo.InvariantCulture); } } else amountValue = qrSwissAmount.Text; QRSwissParameters parameters = new QRSwissParameters(); parameters.Iban = iban; parameters.Creditor = creditor; parameters.Reference = reference; parameters.AlternativeProcedure1 = qrSwissAlt1.Text; parameters.AlternativeProcedure2 = qrSwissAlt2.Text; parameters.AdditionalInformation = additionalInformation; parameters.Amount = amountValue; parameters.Currency = currency; parameters.Debitor = debitor; QRSwiss qr = new QRSwiss(parameters); result = qr.Pack(); } DialogResult = DialogResult.OK; Close(); } catch (Exception ex) { FRMessageBox.Error(ex.Message); } } private void tvData_AfterSelect(object sender, TreeViewEventArgs e) { bool descrVisible = tvData.SelectedNode != null && (tvData.SelectedNode.Tag is MethodInfo || tvData.SelectedNode.Tag is SystemVariable); expandableSplitter1.Visible = descrVisible; lblDescription.Visible = descrVisible; if (descrVisible) lblDescription.ShowDescription(report, tvData.SelectedNode.Tag); } private void PaymTermCheckBox_CheckedChanged(object sender, EventArgs e) { if (PaymTermCheckBox.Checked) { PaymTermPicker.Enabled = false; } else { PaymTermPicker.Enabled = true; } } private void BirthDateCheckBox_CheckedChanged(object sender, EventArgs e) { if (BirthDateCheckBox.Checked) { BirthDatePicker.Enabled = false; } else { BirthDatePicker.Enabled = true; } } private void DocDateCheckBox_CheckedChanged(object sender, EventArgs e) { if (DocDateCheckBox.Checked) { DocumentDatePicker.Enabled = false; } else { DocumentDatePicker.Enabled = true; } } private void QuittDateCheckBox_CheckedChanged(object sender, EventArgs e) { if (QuittDateCheckBox.Checked) { QuittDateDatePicker.Enabled = false; } else { QuittDateDatePicker.Enabled = true; } } } }