Update 20241028

master
Stefan Hutter 1 year ago
parent 5bea1d4535
commit 6da124508d

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -208,6 +208,12 @@
<Compile Include="DocMgmt\frmToApproval.Designer.cs">
<DependentUpon>frmToApproval.cs</DependentUpon>
</Compile>
<Compile Include="DocMgmt\SerienbriefBearbeitung.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="DocMgmt\SerienbriefBearbeitung.Designer.cs">
<DependentUpon>SerienbriefBearbeitung.cs</DependentUpon>
</Compile>
<Compile Include="DocMgmt\Serienbrief_Sheetselect.cs">
<SubType>Form</SubType>
</Compile>
@ -384,6 +390,9 @@
<EmbeddedResource Include="DocMgmt\frmToApproval.resx">
<DependentUpon>frmToApproval.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="DocMgmt\SerienbriefBearbeitung.resx">
<DependentUpon>SerienbriefBearbeitung.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="DocMgmt\Serienbrief_Sheetselect.resx">
<DependentUpon>Serienbrief_Sheetselect.cs</DependentUpon>
</EmbeddedResource>

@ -58,7 +58,6 @@
this.lblVerantwortlich = new System.Windows.Forms.Label();
this.lblPostzustellung = new System.Windows.Forms.Label();
this.lblBezeichnung = new System.Windows.Forms.Label();
this.txtbezeichnung = new System.Windows.Forms.TextBox();
this.GrpEmpfaenger = new System.Windows.Forms.GroupBox();
this.sfDataGridEmpfaenger = new Syncfusion.WinForms.DataGrid.SfDataGrid();
this.treeViewAdv1 = new Syncfusion.Windows.Forms.Tools.TreeViewAdv();
@ -75,6 +74,16 @@
this.ribbonPanel4 = new System.Windows.Forms.RibbonPanel();
this.RibbonButtonEditWord = new System.Windows.Forms.RibbonButton();
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
this.ribbonPanel5 = new System.Windows.Forms.RibbonPanel();
this.ribbonbuttonsave = new System.Windows.Forms.RibbonButton();
this.ribbonPanel6 = new System.Windows.Forms.RibbonPanel();
this.txtbezeichnung = new System.Windows.Forms.TextBox();
this.pnlLoad = new System.Windows.Forms.Panel();
this.btnsbloadok = new System.Windows.Forms.Button();
this.panel1 = new System.Windows.Forms.Panel();
this.label1 = new System.Windows.Forms.Label();
this.btnsbloadcancel = new System.Windows.Forms.Button();
this.sfdatagridsbload = new Syncfusion.WinForms.DataGrid.SfDataGrid();
this.GrpDokumentInhalt.SuspendLayout();
this.groupBox8.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.cbboxteam)).BeginInit();
@ -90,6 +99,9 @@
((System.ComponentModel.ISupportInitialize)(this.sfDataGridEmpfaenger)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.treeViewAdv1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.GridEmpfänger)).BeginInit();
this.pnlLoad.SuspendLayout();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.sfdatagridsbload)).BeginInit();
this.SuspendLayout();
//
// GrpDokumentInhalt
@ -102,7 +114,7 @@
this.GrpDokumentInhalt.Enabled = false;
this.GrpDokumentInhalt.Location = new System.Drawing.Point(2, 101);
this.GrpDokumentInhalt.Name = "GrpDokumentInhalt";
this.GrpDokumentInhalt.Size = new System.Drawing.Size(1106, 254);
this.GrpDokumentInhalt.Size = new System.Drawing.Size(1255, 254);
this.GrpDokumentInhalt.TabIndex = 1;
this.GrpDokumentInhalt.TabStop = false;
this.GrpDokumentInhalt.Text = "Dokument-Inahalt";
@ -358,13 +370,6 @@
this.lblBezeichnung.TabIndex = 8;
this.lblBezeichnung.Text = "Bezeichnung";
//
// txtbezeichnung
//
this.txtbezeichnung.Location = new System.Drawing.Point(120, 20);
this.txtbezeichnung.Name = "txtbezeichnung";
this.txtbezeichnung.Size = new System.Drawing.Size(354, 20);
this.txtbezeichnung.TabIndex = 9;
//
// GrpEmpfaenger
//
this.GrpEmpfaenger.Controls.Add(this.sfDataGridEmpfaenger);
@ -373,7 +378,7 @@
this.GrpEmpfaenger.Dock = System.Windows.Forms.DockStyle.Fill;
this.GrpEmpfaenger.Location = new System.Drawing.Point(2, 355);
this.GrpEmpfaenger.Name = "GrpEmpfaenger";
this.GrpEmpfaenger.Size = new System.Drawing.Size(1106, 598);
this.GrpEmpfaenger.Size = new System.Drawing.Size(1255, 598);
this.GrpEmpfaenger.TabIndex = 2;
this.GrpEmpfaenger.TabStop = false;
this.GrpEmpfaenger.Text = "Empfänger";
@ -384,7 +389,7 @@
this.sfDataGridEmpfaenger.Dock = System.Windows.Forms.DockStyle.Fill;
this.sfDataGridEmpfaenger.Location = new System.Drawing.Point(233, 16);
this.sfDataGridEmpfaenger.Name = "sfDataGridEmpfaenger";
this.sfDataGridEmpfaenger.Size = new System.Drawing.Size(870, 579);
this.sfDataGridEmpfaenger.Size = new System.Drawing.Size(1019, 579);
this.sfDataGridEmpfaenger.TabIndex = 4;
this.sfDataGridEmpfaenger.Text = "sfDataGrid1";
//
@ -474,6 +479,8 @@
this.treeViewAdv1.ToolTipControl.Size = new System.Drawing.Size(392, 112);
this.treeViewAdv1.ToolTipControl.TabIndex = 0;
this.treeViewAdv1.ToolTipControl.Visible = true;
this.treeViewAdv1.AfterSelect += new System.EventHandler(this.treeViewAdv1_AfterSelect);
this.treeViewAdv1.NodeMouseClick += new Syncfusion.Windows.Forms.Tools.TreeNodeAdvMouseClickArgs(this.treeViewAdv1_NodeMouseClick);
//
// GridEmpfänger
//
@ -482,7 +489,7 @@
this.GridEmpfänger.EditMode = Syncfusion.WinForms.DataGrid.Enums.EditMode.SingleClick;
this.GridEmpfänger.Location = new System.Drawing.Point(3, 16);
this.GridEmpfänger.Name = "GridEmpfänger";
this.GridEmpfänger.Size = new System.Drawing.Size(1100, 579);
this.GridEmpfänger.Size = new System.Drawing.Size(1249, 579);
this.GridEmpfänger.TabIndex = 2;
this.GridEmpfänger.Text = "sfDataGrid1";
//
@ -504,7 +511,7 @@
this.ribbon1.OrbStyle = System.Windows.Forms.RibbonOrbStyle.Office_2013;
this.ribbon1.OrbVisible = false;
this.ribbon1.RibbonTabFont = new System.Drawing.Font("Trebuchet MS", 9F);
this.ribbon1.Size = new System.Drawing.Size(1106, 99);
this.ribbon1.Size = new System.Drawing.Size(1255, 99);
this.ribbon1.TabIndex = 3;
this.ribbon1.Tabs.Add(this.ribbonTab1);
this.ribbon1.TabSpacing = 4;
@ -517,6 +524,8 @@
this.ribbonTab1.Panels.Add(this.ribbonPanel2);
this.ribbonTab1.Panels.Add(this.ribbonPanel3);
this.ribbonTab1.Panels.Add(this.ribbonPanel4);
this.ribbonTab1.Panels.Add(this.ribbonPanel5);
this.ribbonTab1.Panels.Add(this.ribbonPanel6);
this.ribbonTab1.Text = "Funktionen";
//
// ribbonPanel1
@ -558,6 +567,7 @@
this.RibbonButtonOpen.Name = "RibbonButtonOpen";
this.RibbonButtonOpen.SmallImage = global::OnDoc.Properties.Resources.EditSerienbrief_16x16_32;
this.RibbonButtonOpen.Text = "Öffnen/bearbeiten";
this.RibbonButtonOpen.Click += new System.EventHandler(this.RibbonButtonOpen_Click);
//
// ribbonPanel3
//
@ -598,11 +608,102 @@
//
this.openFileDialog1.FileName = "openFileDialog1";
//
// ribbonPanel5
//
this.ribbonPanel5.Items.Add(this.ribbonbuttonsave);
this.ribbonPanel5.Name = "ribbonPanel5";
this.ribbonPanel5.Text = "";
//
// ribbonbuttonsave
//
this.ribbonbuttonsave.Image = global::OnDoc.Properties.Resources.save_32x32_32;
this.ribbonbuttonsave.LargeImage = global::OnDoc.Properties.Resources.save_32x32_32;
this.ribbonbuttonsave.Name = "ribbonbuttonsave";
this.ribbonbuttonsave.SmallImage = global::OnDoc.Properties.Resources.save_16x16_32;
this.ribbonbuttonsave.Text = "Speichern";
this.ribbonbuttonsave.Click += new System.EventHandler(this.ribbonbuttonsave_Click);
//
// ribbonPanel6
//
this.ribbonPanel6.Name = "ribbonPanel6";
this.ribbonPanel6.Text = "ribbonPanel6";
//
// txtbezeichnung
//
this.txtbezeichnung.Location = new System.Drawing.Point(120, 20);
this.txtbezeichnung.Name = "txtbezeichnung";
this.txtbezeichnung.Size = new System.Drawing.Size(354, 20);
this.txtbezeichnung.TabIndex = 9;
//
// pnlLoad
//
this.pnlLoad.BackColor = System.Drawing.Color.Silver;
this.pnlLoad.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.pnlLoad.Controls.Add(this.sfdatagridsbload);
this.pnlLoad.Controls.Add(this.btnsbloadcancel);
this.pnlLoad.Controls.Add(this.panel1);
this.pnlLoad.Controls.Add(this.btnsbloadok);
this.pnlLoad.Location = new System.Drawing.Point(117, 52);
this.pnlLoad.Name = "pnlLoad";
this.pnlLoad.Size = new System.Drawing.Size(965, 637);
this.pnlLoad.TabIndex = 4;
this.pnlLoad.Visible = false;
//
// btnsbloadok
//
this.btnsbloadok.Location = new System.Drawing.Point(870, 600);
this.btnsbloadok.Name = "btnsbloadok";
this.btnsbloadok.Size = new System.Drawing.Size(75, 23);
this.btnsbloadok.TabIndex = 0;
this.btnsbloadok.Text = "öffnen";
this.btnsbloadok.UseVisualStyleBackColor = true;
this.btnsbloadok.Click += new System.EventHandler(this.bntsbloadok_Click);
//
// panel1
//
this.panel1.Controls.Add(this.label1);
this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(961, 47);
this.panel1.TabIndex = 1;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label1.Location = new System.Drawing.Point(385, 13);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(154, 20);
this.label1.TabIndex = 0;
this.label1.Text = "Serienbrief öffnen";
//
// btnsbloadcancel
//
this.btnsbloadcancel.Location = new System.Drawing.Point(9, 600);
this.btnsbloadcancel.Name = "btnsbloadcancel";
this.btnsbloadcancel.Size = new System.Drawing.Size(75, 23);
this.btnsbloadcancel.TabIndex = 2;
this.btnsbloadcancel.Text = "abbruch";
this.btnsbloadcancel.UseVisualStyleBackColor = true;
this.btnsbloadcancel.Click += new System.EventHandler(this.btnsbloadcancel_Click);
//
// sfdatagridsbload
//
this.sfdatagridsbload.AccessibleName = "Table";
this.sfdatagridsbload.Dock = System.Windows.Forms.DockStyle.Top;
this.sfdatagridsbload.Location = new System.Drawing.Point(0, 47);
this.sfdatagridsbload.Name = "sfdatagridsbload";
this.sfdatagridsbload.Size = new System.Drawing.Size(961, 489);
this.sfdatagridsbload.TabIndex = 3;
this.sfdatagridsbload.Text = "sfDataGrid1";
//
// Serienbrief
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1110, 955);
this.ClientSize = new System.Drawing.Size(1259, 955);
this.Controls.Add(this.pnlLoad);
this.Controls.Add(this.GrpEmpfaenger);
this.Controls.Add(this.GrpDokumentInhalt);
this.Controls.Add(this.ribbon1);
@ -631,6 +732,10 @@
((System.ComponentModel.ISupportInitialize)(this.sfDataGridEmpfaenger)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.treeViewAdv1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.GridEmpfänger)).EndInit();
this.pnlLoad.ResumeLayout(false);
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.sfdatagridsbload)).EndInit();
this.ResumeLayout(false);
}
@ -639,7 +744,6 @@
private System.Windows.Forms.GroupBox GrpDokumentInhalt;
private System.Windows.Forms.GroupBox GrpEmpfaenger;
private System.Windows.Forms.Label lblBezeichnung;
private System.Windows.Forms.TextBox txtbezeichnung;
private Syncfusion.WinForms.ListView.SfComboBox cbboxverantwortlich;
private System.Windows.Forms.Label lblVerantwortlich;
private System.Windows.Forms.GroupBox groupBox8;
@ -677,5 +781,15 @@
private Syncfusion.Windows.Forms.Tools.TreeViewAdv treeViewAdv1;
private System.Windows.Forms.OpenFileDialog openFileDialog1;
private Syncfusion.WinForms.DataGrid.SfDataGrid sfDataGridEmpfaenger;
private System.Windows.Forms.RibbonPanel ribbonPanel5;
private System.Windows.Forms.RibbonButton ribbonbuttonsave;
private System.Windows.Forms.TextBox txtbezeichnung;
private System.Windows.Forms.RibbonPanel ribbonPanel6;
private System.Windows.Forms.Panel pnlLoad;
private System.Windows.Forms.Button btnsbloadok;
private System.Windows.Forms.Button btnsbloadcancel;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Label label1;
private Syncfusion.WinForms.DataGrid.SfDataGrid sfdatagridsbload;
}
}

@ -3,12 +3,15 @@ using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Runtime.Remoting.Messaging;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Database;
using Helper;
using Model;
using OnDoc.Klassen;
using OnDoc.UIControls.Administrator;
using Syncfusion.Windows.Forms.Tools;
@ -16,6 +19,7 @@ using Syncfusion.WinForms.Controls;
using Syncfusion.WinForms.DataGrid;
using Syncfusion.WinForms.DataGrid.Interactivity;
namespace OnDoc.UIControls
{
public partial class Serienbrief : SfForm
@ -23,6 +27,9 @@ namespace OnDoc.UIControls
private int dokumenttypnr = 0;
private int officevorlagenr = 0;
private int profilnr = 0;
private serienbrief sb = new serienbrief();
private int serienbriefnr = 0;
private DataSet dsempfaenger = new DataSet();
public Serienbrief()
{
InitializeComponent();
@ -42,12 +49,13 @@ namespace OnDoc.UIControls
{
Refresh_Lists();
Refresh_Team();
}
private void Refresh_Lists()
{DB db = new DB(AppParams.connectionstring);
db.Get_Tabledata("Select nreintrag, bezeichnung from Postzustellung where aktiv=1 order by bezeichnung", false, true);
{
DB db = new DB(AppParams.connectionstring);
db.Get_Tabledata("Select nreintrag, bezeichnung from Postzustellung where aktiv=1 order by bezeichnung", false, true);
cbboxpostzustellung.DataSource = db.dsdaten.Tables[0];
cbboxpostzustellung.ValueMember = "nreintrag";
cbboxpostzustellung.DisplayMember = "bezeichnung";
@ -98,7 +106,8 @@ namespace OnDoc.UIControls
string selected_sheetname = "";
var sheets = new List<string>();
sheets = reader.Get_ExcelSheets(openFileDialog1.FileName);
if (sheets.Count > 1) {
if (sheets.Count > 1)
{
DocMgmt.Serienbrief_Sheetselect sheetselect = new DocMgmt.Serienbrief_Sheetselect(sheets);
sheetselect.ShowDialog();
if (sheetselect.DialogResult == DialogResult.OK)
@ -109,12 +118,12 @@ namespace OnDoc.UIControls
}
else { selected_sheetname = sheets[0]; }
reader.Excel_To_Datatabable(openFileDialog1.FileName, selected_sheetname,true, ref importdata);
if (importdata.Rows.Count < 1)
{
MessageBox.Show("Die ausgewählten Daten können nicht verwendet werden.", "Import", MessageBoxButtons.OK, MessageBoxIcon.Error);
reader.Excel_To_Datatabable(openFileDialog1.FileName, selected_sheetname, true, ref importdata);
if (importdata.Rows.Count < 1)
{
MessageBox.Show("Die ausgewählten Daten können nicht verwendet werden.", "Import", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
}
if (importdata.Columns[0].Caption.ToUpper() != "PARTNERNR")
{
MessageBox.Show("Die importierten Daten enthalten keine Spalte 'Partnernr'. Der Vorgang wird abgebrochen.", "Import", MessageBoxButtons.OK, MessageBoxIcon.Error);
@ -122,10 +131,69 @@ namespace OnDoc.UIControls
importdata.Columns.Clear();
return;
}
sfDataGridEmpfaenger.DataSource = importdata;
DB dB = new DB(AppParams.connectionstring);
dsempfaenger.Tables[0].Rows.Clear();
foreach (System.Data.DataRow dr in importdata.Rows)
{
System.Data.DataRow r1 = dsempfaenger.Tables[0].NewRow();
foreach (DataColumn col in importdata.Columns)
{
try
{
r1[col.ColumnName] = dr[col.ColumnName];
}
catch { }
}
r1["Status"] = 0;
r1["Error"] = 0;
dB.Get_Tabledata("Select bkpar00 from partner where nrpar00=" + r1[0].ToString(), false, true);
if (dB.dsdaten.Tables[0].Rows.Count < 1) r1["Error"] = 1; else r1["Error"] = 0;
r1[1] = dB.dsdaten.Tables[0].Rows[0][0].ToString();
dsempfaenger.Tables[0].Rows.Add(r1);
}
dB = null;
refresh_empfaenger(dsempfaenger.Tables[0]);
//sfDataGridEmpfaenger.DataSource = importdata;
}
}
private void refresh_empfaenger(DataTable dt)
{
sfDataGridEmpfaenger.DataSource = null;
sfDataGridEmpfaenger.DataSource = dt;
//sfDataGridEmpfaenger.Columns["STATUS"].Visible = false;
//sfDataGridEmpfaenger.Columns["FEHLERCODE"].Visible = false;
//sfDataGridEmpfaenger.Columns["BLKUNDE"].Visible = false;
//sfDataGridEmpfaenger.Columns["DOKUMENT_GEDRUCKT"].Visible = false;
//sfDataGridEmpfaenger.Columns["DOKUMENTID"].Visible = false;
//sfDataGridEmpfaenger.Columns["DOKUMENTIDBDR"].Visible = false;
//sfDataGridEmpfaenger.Columns["ERSTELLER"].Visible = false;
//sfDataGridEmpfaenger.Columns["DRUCKJOBID"].Visible = false;
//sfDataGridEmpfaenger.Columns["AKTIV"].Visible = false;
//sfDataGridEmpfaenger.Columns["Status"].Visible = false;
//sfDataGridEmpfaenger.Columns["Error"].Visible = false;
update_zahlen();
}
private void init_empfaenger(int serienbriefnr)
{
Database.DB db = new DB(AppParams.connectionstring);
db.Get_Tabledata("Select dbo.BinaryToBase64(xmldata) as Data from edex_sb_empfaenger where serienbriefnr=" + serienbriefnr.ToString(), false, true);
Base64Helper bh = new Base64Helper();
bh.Base64 = db.dsdaten.Tables[0].Rows[0][0].ToString();
string xml = bh.DecodeBase64();
string filename = AppParams.tempdir + @"\tmpsb.xml";
System.IO.File.WriteAllText(filename, xml);
dsempfaenger.Tables.Clear();
dsempfaenger.ReadXml(filename);
dsempfaenger.Tables[0].Columns.Add("Status");
dsempfaenger.Tables[0].Columns.Add("Error");
refresh_empfaenger(dsempfaenger.Tables[0]);
System.IO.File.Delete(filename);
}
private void RibbonButtonNew_Click(object sender, EventArgs e)
{
OnDoc.DocMgmt.DokTypSelect DokTypSelect = new OnDoc.DocMgmt.DokTypSelect();
@ -133,25 +201,201 @@ namespace OnDoc.UIControls
DokTypSelect.ShowDialog(this);
if (DokTypSelect.DialogResult == DialogResult.OK)
{
this.sb = null;
this.sb = new serienbrief();
dokumenttypnr = DokTypSelect.dokumenttypnr;
GrpDokumentInhalt.Enabled=true;
GrpDokumentInhalt.Enabled = true;
update_serienbrief_details(true, dokumenttypnr, 0);
init_empfaenger(0);
vorlagenfelder(dokumenttypnr);
refresh_empfaenger(dsempfaenger.Tables[0]);
update_serienbriefdaten(true);
vorlage_auslesen_und_speichern();
}
else {
else
{
this.GrpDokumentInhalt.Enabled = false;
return; }
return;
}
}
private void vorlage_auslesen_und_speichern()
{
}
private void vorlagenfelder(int dokumenttypnr)
{
DB db = new DB(AppParams.connectionstring);
db.clear_parameter();
db.add_parameter("@dokumenttypnr", dokumenttypnr.ToString());
db.Get_Tabledata("sp_edex_sb_get_vorlagenfelder", true, false);
string s = "";
for (int i = 0, loopTo = db.dsdaten.Tables[0].Rows.Count - 1; i <= loopTo; i++)
{
try
{
string X;
X = this.dsempfaenger.Tables[0].Rows[0][db.dsdaten.Tables[0].Rows[i][0].ToString()].ToString();
}
catch
{
this.dsempfaenger.Tables[0].Columns.Add(db.dsdaten.Tables[0].Rows[i][0].ToString());
this.dsempfaenger.Tables[0].Rows[0][i] = "";
this.dsempfaenger.Tables[1].Columns.Add(db.dsdaten.Tables[0].Rows[i][0].ToString());
try
{
if (Convert.ToBoolean(db.dsdaten.Tables[0].Rows[i][1])==true)
{
this.dsempfaenger.Tables[1].Rows[0][db.dsdaten.Tables[0].Rows[i][0].ToString()] = 1;
}
else
{
this.dsempfaenger.Tables[1].Rows[0][db.dsdaten.Tables[0].Rows[i][0].ToString()] = 0;
}
}
catch
{
this.dsempfaenger.Tables[1].Rows[0][db.dsdaten.Tables[0].Rows[i][0].ToString()] = 0;
}
s = s + "- " + db.dsdaten.Tables[0].Rows[i][0].ToString() + System.Environment.NewLine;
}
}
if (s !="") { MessageBox.Show("Folgende Spalten wurden aufgrund der gewählten Vorlage zur Liste hinzugefügt"+System.Environment.NewLine+ s,"Serienbrief",MessageBoxButtons.OK,MessageBoxIcon.Information); }
//foreach (System.Data.DataRow dr in db.dsdaten.Tables[0].Rows)
//{
// try
// {
// string x;
// x = dsempfaenger.Tables[0].Rows[0][dr[0].ToString()].ToString();
// }
// catch
// {
// }
// dsempfaenger.Tables[0].Columns.Add(dr[0].ToString());
//}
}
private void update_serienbrief_details(bool newsb = false, int dokumenttypnr = 0, int sbnummer = 0)
{
DB db = new DB(AppParams.connectionstring);
if (newsb)
{
db.Get_Tabledata("Select bezeichnung,office_vorlagenr from dokumenttyp where dokumenttypnr=" + dokumenttypnr.ToString(),false,true);
db.Get_Tabledata("Select bezeichnung,office_vorlagenr from dokumenttyp where dokumenttypnr=" + dokumenttypnr.ToString(), false, true);
this.txtbezeichnung.Text = db.dsdaten.Tables[0].Rows[0][0].ToString();
officevorlagenr = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0][1]);
}
}
private void update_serienbriefdaten(bool newsb)
{
sb.bezeichnung=this.txtbezeichnung.Text;
sb.verantwortlich=Convert.ToInt32(this.cbboxverantwortlich.SelectedValue.ToString());
if (newsb) { sb.erstellt_am = DateTime.Now; }
sb.aktiv = true;
sb.mutiert_am = DateTime.Now;
sb.mutierer = AppParams.CurrentMitarbieter;
sb.dokumenttypnr=this.dokumenttypnr;
try {sb.postzustellung = Convert.ToInt32(cbboxpostzustellung.SelectedValue.ToString());} catch { sb.postzustellung = 0; }
try { sb.unterschriftlinks = Convert.ToInt32(cbboxunterschriftlinks.SelectedValue.ToString()); } catch { sb.unterschriftlinks = 0; }
try { sb.unterschriftrechts = Convert.ToInt32(cbboxunterschriftrechts.SelectedValue.ToString()); } catch { sb.unterschriftrechts = 0;}
try { sb.team = Convert.ToInt32(cbboxteam.SelectedValue.ToString()); } catch { sb.team = 0; }
DB db = new DB(AppParams.connectionstring);
this.serienbriefnr=db.Save_Serienbrief(sb);
}
private void treeViewAdv1_NodeMouseClick(object sender, TreeViewAdvMouseClickEventArgs e)
{
}
private void update_zahlen()
{
try
{
DataView dv = new DataView(dsempfaenger.Tables[0]);
dv.RowFilter = "Status = 0";
treeViewAdv1.Nodes[0].Text = "In Bearbeitung (" + dv.Count.ToString() + ")";
dv.RowFilter = "Error <> 0";
treeViewAdv1.Nodes[1].Text = "Fehlerhaft (" + dv.Count.ToString() + ")";
dv.RowFilter = "Status = 1";
treeViewAdv1.Nodes[2].Text = "Generiert (" + dv.Count.ToString() + ")";
dv.RowFilter = "Status = 2";
treeViewAdv1.Nodes[3].Text = "Abgeschlossen (" + dv.Count.ToString() + ")";
}
catch { }
}
private void treeViewAdv1_AfterSelect(object sender, EventArgs e)
{
{
string nodetext = treeViewAdv1.SelectedNode.Text;
DataView dv = new DataView(dsempfaenger.Tables[0]);
switch (nodetext.Substring(0, 5))
{
case "In Be":
dv.RowFilter = "Status = 0";
sfDataGridEmpfaenger.DataSource = null;
sfDataGridEmpfaenger.DataSource = dv;
break;
case "Fehle":
dv.RowFilter = "Error <> 0";
sfDataGridEmpfaenger.DataSource = null;
sfDataGridEmpfaenger.DataSource = dv;
break;
case "Gener":
dv.RowFilter = "Status = 1";
sfDataGridEmpfaenger.DataSource = null;
sfDataGridEmpfaenger.DataSource = dv;
break;
case "Abges":
dv.RowFilter = "Status = 2";
sfDataGridEmpfaenger.DataSource = null;
sfDataGridEmpfaenger.DataSource = dv;
break;
}
}
}
private void ribbonbuttonsave_Click(object sender, EventArgs e)
{
update_serienbriefdaten(false);
}
private void RibbonButtonOpen_Click(object sender, EventArgs e)
{
pnlLoad.Visible = true;
DB db = new DB(AppParams.connectionstring);
db.clear_parameter();
db.add_parameter("@mitarbeiternr",AppParams.CurrentMitarbieter.ToString());
db.Get_Tabledata("dbo.sp_edex_sb_get_serienbriefe", true, false);
sfdatagridsbload.DataSource = null;
sfdatagridsbload.DataSource = db.dsdaten.Tables[0];
this.pnlLoad.Left = this.Left;
this.pnlLoad.Width = this.Width;
}
private void bntsbloadok_Click(object sender, EventArgs e)
{
pnlLoad.Visible = false;
}
private void btnsbloadcancel_Click(object sender, EventArgs e)
{
pnlLoad.Visible = false;
}
}
}

@ -0,0 +1,62 @@
namespace OnDoc.DocMgmt
{
partial class SerienbriefBearbeitung
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SerienbriefBearbeitung));
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
this.SuspendLayout();
//
// toolStrip1
//
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
this.toolStrip1.Name = "toolStrip1";
this.toolStrip1.Size = new System.Drawing.Size(386, 25);
this.toolStrip1.TabIndex = 0;
this.toolStrip1.Text = "toolStrip1";
//
// SerienbriefBearbeitung
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(386, 478);
this.Controls.Add(this.toolStrip1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "SerienbriefBearbeitung";
this.Text = "SerienbriefBearbeitung";
this.Load += new System.EventHandler(this.SerienbriefBearbeitung_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.ToolStrip toolStrip1;
}
}

@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OnDoc.Klassen;
using Syncfusion.Windows.Forms.Tools;
using Syncfusion.WinForms.Controls;
using Syncfusion.WinForms.DataGrid;
using Syncfusion.WinForms.DataGrid.Interactivity;
namespace OnDoc.DocMgmt
{
public partial class SerienbriefBearbeitung : SfForm
{
DataTable StdFelder = new DataTable();
DataTable IDVFelder = new DataTable();
DataTable UsedFelder = new DataTable();
int dokumenttypnr = 0;
public SerienbriefBearbeitung()
{
InitializeComponent();
this.Style.TitleBar.BackColor = Theaming.Titelbar();
this.Style.TitleBar.ForeColor = Theaming.TitelFontColor();
}
private void SerienbriefBearbeitung_Load(object sender, EventArgs e)
{
StdFelder = get_vorlagenfelder(dokumenttypnr, 0);
IDVFelder = get_vorlagenfelder(dokumenttypnr, 1);
}
private DataTable get_vorlagenfelder(int dokumenttypnr, int type) {
Database.DB db = new Database.DB(AppParams.connectionstring);
db.clear_parameter();
db.add_parameter("@dokumenttypnr", dokumenttypnr.ToString());
db.add_parameter("@type", type.ToString());
db.Get_Tabledata("sp_edex_sp_get_standardvorlagenfelder",true,false);
return db.dsdaten.Tables[0];
}
public DataTable init_used_felder()
{ return null; }
}
}

@ -0,0 +1,861 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
//6jdv/+o3b/+6Bw9L9kFAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw2ER
AclqHAzbgD8q44dKUuqNVHnskVmg8JNeyPOYZO7+o3X//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2
//6jdv/+o3b//qN2//6jdv/+o3b/+6Bw9L9kFAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwGQUA8hqHhrcfTw+6I1U
ZeqPVo3uklu08ZZh2vidbPb+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2
//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b/+6Bw9b9kFBa/ZBMMv2QTDL9kEwy/ZBMMv2QT
DL9kEwy/ZBMMv2QTDL9kEwy/ZBMMv2QTDL9kEwy/ZBMMv2QTDL9kEwy/ZBMMv2QTDL9kEwy/YxUD65BY
xvugcfv+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2
//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//ugcPX7oHD1+6Bw
9fugcPX7oHD1+6Bw9fugcPX7oHD1+6Bw9fugcPX7oHD1+6Bw9fugcPX7oHD1+6Bw9fugcPX7oHD1+6Bw
9fugcPXqjlXF/qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2
//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2
//ugcPT7oHD0+6Bw9PugcPT7oHD0+6Bw9PugcPT7oHD0+6Bw9PugcPT7oHD0+6Bw9PugcPT7oHD0+6Bw
9PugcPT7oHD0+6Bw9P6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2
//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2
//6jdv/+o3b/+6Bw9b9lFRS/ZRUKv2UVCr9lFQq/ZRUKv2UVCr9lFQq/ZRUKv2UVCr9lFQq/ZRUKv2UV
Cr9lFQq/ZRUKv2UVCr9lFQq/ZRUKv2UVFPecavX+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2
//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2
//6jdv/+o3b//qN2//6jdv/+o3b/+6Bw9L9kFAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv2QUC/ecavT+o3b//qN2//6jdv/+o3b//qN2
//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2
//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b/+6Bw9L9kFAoAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv2QUC/ecavT+o3b//qN2
//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2
//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b/+6Bw9b9kFBa/ZBMMv2QT
DL9kEwy/ZBMMv2QTDL9kEwy/ZBMMv2QTDL9kEwy/ZBMMv2QTDL9kEwy/ZBMMv2QUDMZeDQMAAAAAv2QU
C/ecavT+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2
//6jdv/+o3b//qN2//6jdv/+o3b//qN2/9qMZv/4n3P//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2
//ugcPX7oHD1+6Bw9fugcPX7oHD1+6Bw9fugcPX7oHD1+6Bw9fugcPX7oHD1+6Bw9fugcPX7oHD1+6Bw
9euNV8LJUhEDv2QUC/ecavT+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2
//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2/zAfFv87JRr/h1Y+/9eKZP/7oXX//qN2
//6jdv/+o3b//qN2//ugcPT7oHD0+6Bw9PugcPT7oHD0+6Bw9PugcPT7oHD0+6Bw9PugcPT7oHD0+6Bw
9PugcPT7oHD0+6Bw9OuQWMG/ZhUDv2QUC/ecavT+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2
//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2/2RALv+oVwr/hEUK
/0EjCv8xHxX/d0w3/8mBXf/7oXX/+6Bw9b9lFRS/ZRUKv2UVCr9lFQq/ZRUKv2UVCr9lFQq/ZRUKv2UV
Cr9lFQq/ZRUKv2UVCr9lFQq/ZRUKv2UVCcBkFAIAAAAAv2QUC/ecavT+o3b//qN2//6jdv/+o3b//qN2
//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//2idP/+o3X//qN2
/5ZgRv+PSgj/y2UA/8llAv9MKxD/XzQO/0QlC/8uHRT/c0gy+C4YBDMAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv2QUC/ecavT+o3b//qN2
//6jdv/+o3b//qN2//6jdv/+o3b//qN2//yidP/x18X/8dfF//yidP/+o3b//qN2//6jdv/+o3b//KN1
//Ldzv/04NP//KFz/8yDX/9lNAf/y2UA/3dBEf9cMw//y2UA/8tlAP/AYQb/gkMJ/gUCAO0AAAArAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv2QU
C/ecavT+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//iuh//5+fj/+fn4//iuhv/+o3b//qN2
//6jdv/+o3b/9quC//n5+f/5+fn/962F//Sccf9IKQ//mlEO/z8kDv/FZAT/y2UA/8tlAP/LZQD/xWIA
/xgMAOgHAwDKSycHGb9kEwy/ZBMMv2QTDL9kEwy/ZBMMv2QTDL9kEwy/ZBMMv2QTDL9kEwy/ZBMMv2QU
DMZeDQMAAAAAv2QUC/ecavT+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//bFqv/5+fn/+fn5
//bFqv/+o3b//qN2//6jdv/+o3b/9cWp//n5+f/5+fn/9cSp//6jdv9GLB//MR0O/7heB//LZQD/y2UA
/8BhA/9pNgX/ajcH/zUdB/6RTQ/9UDIi+Pedb/X7oHD1+6Bw9fugcPX7oHD1+6Bw9fugcPX7oHD1+6Bw
9fugcPX7oHD1+6Bw9euNV8LJUhEDv2QUC/ecavT+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2
//Xf0f/5+fn/+fn5//Xf0P/+o3b//qN2//6jdv/+o3b/8tzM//n5+f/5+fn/9N7P//6jdv9vRzP/kUwM
/8tlAP/LZQD/y2UA/6pXB/84HQT/e0AI/0EjCf6HRQX+bjwR/n5QOv76n3D0+6Bw9PugcPT7oHD0+6Bw
9PugcPT7oHD0+6Bw9PugcPT7oHD0+6Bw9OuQWMG/ZhUDv2QUC/ecavT+o3b//qN2//6jdv/+o3b//qN2
//6jdv/+o3b/+aV4//j18v/49vX/+Pb1//j18v/5pHj//qN2//6jdv/4o3X/+Pf1//j29P/59/b/+PXz
//ikd/+laUz/hEQI/8tlAP/LZQD/y2UA/6xYCf9ZLQD/y2UA/7pdAPUiEADom00A8C4XANokEwRZv2UV
Cr9lFQq/ZRUKv2UVCr9lFQq/ZRUKv2UVCr9lFQq/ZRUKv2UVCcBkFAIAAAAAv2QUC/ecavT+o3b//qN2
//6jdv/+o3b//qN2//6jdv/+o3b/97mY//n5+f/y28v/8tvL//n5+f/2uZf//qN2//6jdv/1uJX/+fn5
//Xe0P/z3c7/+fn5//e6mP/ajGX/WS4H/8tlAP+eUAb/LxsK/y0aDP9HJgj/y2UA/8tlAP+iUQDtIBAA
66FQAOkSCQDXAAAAJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv2QU
C/ecavT+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b/9tK+//n5+f/1xKj/9cWp//n5+f/10r7//qN2
//6jdv/00bz/+fn5//bFqf/1xKj/+fn5//TRu//8onX/QiYS/8tlAP+KRgT/bzkG/69XAf9NKw7/hUcQ
/8tlAP/LZQD/gEAA5jUaAO+VSgDiBAIAxwAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAv2QUC/ecavT+o3b//qN2//6jdv/+o3b//qN2//6jdv/9o3X/9evk//n5+f/2q4L/9quC
//n5+f/16+P//aN1//uic//16uL/+fn4//iuhv/3rYT/+fn5//Xq4v/9o3b/UzQk/7ldBP+HRQb/f0EG
/8tlAP/DYwX/Nh8N/ZNJAOjLZQD/y2UA/lksAORaLQDydToA3AIBAKllNQoPv2QTDL9kEwy/ZBMMv2QT
DL9kEwy/ZBMMv2QUDMZeDQMAAAAAv2QUC/ecavT+o3b//qN2//6jdv/+o3b//qN2//6jdv/3rIT/+fn5
//Xr4//8o3X//KN1//Xr4//5+fn/9qyD//ashP/5+fj/9evi//yidP/8oXP/9ezk//n5+f/2rIP/h1Y+
/w8JBP8eEgr/UywK/8tlAP/LZQD/sVsK/zEdDv67YAj/y2UA/8hkAf5IJwv+ikYF/ms6Ef5/UDf2+6Bw
9fugcPX7oHD1+6Bw9fugcPX7oHD1+6Bw9euNV8LJUhEDv2QUC/ecavT+o3b//qN2//6jdv/+o3b//qN2
//6jdv/2xqr/+fn5//PPuf/+o3b//qN2//PPuf/5+fn/9cWq//XFqf/5+fn/9dK9//6jdv/+o3b/9NC6
//n5+f/2xqv/959z/0ctIP+fVA7/UisG/4BDDP/LZQD/y2UA/5ZPDv8/JA7+xmQC/ctlAP/CYgX/MhwK
/qVUBv5IKA/9sHBR/PugcPT7oHD0+6Bw9PugcPT7oHD0+6Bw9OuQWMG/ZhUDv2QUC/ecavT+o3b//6R3
//+kd///pHf//6R3//+kd//139H/+vr6//W4lf//pHf//6R3//W4lf/6+vr/9d7Q//Tdzv/6+vr/9rmW
//+kd///pHf/9riW//r6+v/z3c7//6R3/+SSav83Ihb/sFsL/zkfCP+gUwn/y2UA/8tlAP9YLADdRiMA
3slkAP3LZQD/oFAA7SMRAOyjUQDqFwsA2DcdBTG/ZRUKv2UVCr9lFQq/ZRUKv2UVCcBkFAIAAAAAv2QU
C/ecavT+o3b//6R3//+kd///pHf//6R3//mleP/49fL/+PXy//ijdv//pHf//6R3//ijdv/49fL/+ff2
//j29P/49/X/+qR3//+kd///pHf/+aV5//j18v/49/X/+aR2//+kd//Fflz/PiQQ/61ZCP8wGwn/ul8G
/8tlAP/HYwD6MhkA3G02AN7LZQD/y2UA/30+AOU3GwDvk0kA4gQCAMUAAAAPAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAv2QUC/ecavT+o3b//6R3//+kd///pHf//6R3//a5mP/6+vr/9N3P//+kd///pHf//6R3
//+kd//03c//+vr6//r6+v/z3c3//6R3//+kd///pHf//qN1//Tez//6+vr/9biV//+kd//+o3b/mWJH
/1szEf+ZTgb/PCEK/sJhAPnLZQD/uFwA8hsNAN6SSQDly2UA/8tlAP9WKwDiWy0A8XI5ANoAAACnAAAA
AgAAAAAAAAAAAAAAAAAAAAAAAAAAv2QUC/ecavT+o3b//6R3//+kd///pHf//6R3//TRvP/6+vr/9MOn
//+kd///pHf//6R3//+kd//0w6f/+vr6//r6+v/2xqr//6R3//+kd///pHf//6R3//TDp//6+vr/9dK9
//+kd//+o3b//aN2/2pEMf+ARRH/djwF/0cjAOTKZQD+y2UA/59PAOgXCwDgsVgA8MtlAP/HYwD7NBkA
5YJBAPJMJQDZBQIAfL5jEwy/ZBMMv2QUDMZeDQMAAAAAv2QUC/ecavT+o3b//6R3//+kd///pHf//aR3
//br4//6+vr/9quC//+kd///pHf//6R3//+kd//2q4L/+vr6//n5+f/2rIT//6R3//+kd///pHf//6R3
//ethf/5+fj/9evj//yidP/+o3b//qN2//aecv9FLB//oFQO/1ApBv6CRAz/y2UA/8tlAP+UTg3+QSQN
/sdkA//LZQD/vmAE/jMcCv6mVAb9RygQ/bBvTfX7oHD1+6Bw9euNV8LJUhEDv2QUC/ecavT+o3b//6R3
//+kd///pHf//aR3//Tg0//x3s///KJ0//+kd///pHf//6R3//+kd//8onT/89nI//HWw//9o3b//6R3
//+kd///pHf//6R3//yidP/z3c7/8tzN//yidP/+o3b//qN2//6jdv/kk2r/NiEV/65aCv02HQf+olMJ
/spkAP/KZAD/cDwP/mE1D/7JZAD+ymQA/6xYCP8xGgf+sVsK/jcgEv3ViGH5+6Bw9OuQWMG/ZhUDv2QU
C/ecavT+o3b//6R3//+kd///pHf//6R3//uidP/8onT//6R3//+kd///pHf//6R3//+kd///pHf//6R3
//+kd///pHf//6R3//+kd///pHf//6R3//+kd//8onT//KJ0//+kd//+o3b//qN2//6jdv/+o3b/wXtZ
/SQSAN2gTwDtIA8A6q5XAPHKZAD/xWIA+jIZAN5uNwDfymQA/8pkAP98PgDmORwA8JFIAOIQCAHJWy8J
F8BkFAIAAAAAv2QUC/ecavT+o3b//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3
//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd//+o3b//qN2
//6jdv/+o3b/+qBw9B8QA3M9HgDYjUYA8ioVAOXBYAD4ymQA/7ZaAPEaDADelEoA5cpkAP/KZAD/UykA
4l4uAPFvNwDZAAAApQAAAAIAAAAAv2QUC/ecavT+o3b//6R3//+kd///pHf//6R3//+kd///pHf//6R3
//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3
//+kd//+o3b//qN2//6jdv/+o3b/+6Bw9H1BDQsAAACYYzEA2Go1APFHIwDiymQA/spkAP+eTgDoFgsA
3q9XAO7KZAD/xWIA+jIZAOR7PQDwEAcA6gAAAHwAAAAAv2QUC/ecavT+o3b//6R3//+kd///pHf//6R3
//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3
//+kd///pHf//6R3//+kd//+o3b//qN2//6jdv/+o3b/+6Bw9b9kFBZjNAkUDwgBw4lEAOFDIQDxcDgA
5cpkAP/KZAD/ej0A4CoVAN/CYAD5ymQA/7NZAPIKBQDxYzEA5xkMAOAAAABKv2QUC/ecavT+o3b//6R3
//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3
//+kd///pHf//6R3//+kd///pHf//6R3//+kd//+o3b//qN2//6jdv/+o3b//qN2//ugcPX7oHD13o5l
+TYgE/2xWwv+NBwH/qRUCf/KZAD/ymQA/206D/5kNg/+ymQA/3g9Bf9RKwj+m1AK/jMaBPgQCADWNhsF
LvecavT+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//6R3
//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd//+o3b//qN2//6jdv/+o3b//qN2
//ugcPT7oHD0+6Bw9L14VPQ+IxD9rFcH/TAbCf64XQX+ymQA/8hkAv9JKA79YjUO/zUcB/6tWQn+LxoJ
/qVTAvIbDQDhDAYAzOuVZ/f+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2
//6jdv/+o3b//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd//+o3b//qN2
//6jdv/+o3b/+6Bw9b9lFRS/ZRUKv2UVCr9lFQoHAwBsQCAA24tFAPEsFgDmwmAA+cpkAP+dTgDsDgcA
855PAOwmEwDnlEkA8TUaANxpNADlbzcA21s6Kf78onX//qN2//6jdv/+o3b//qR2//6kdv/+o3b//qN2
//6jdv/+o3b//qN2//6jdv/+o3b//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3
//+kd//+o3b//qN2//6jdv/+o3b/+6Bw9L9kFAoAAAAAAAAAAAAAAAAAAAABAAAAmmYyANlnMwDxSiQA
48FgAPsqFQDwjEYA7T8fAOJzOQDyWSwA2kIhAOTIYwD9yWQA/mQ3EP6bY0j//qN1//6jdv/+o3b//qN2
//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//6R3//+kd///pHf//6R3//+kd///pHf//6R3
//+kd///pHf//6R3//+kd//+o3b//qN2//6jdv/+o3b/+6Bw9L9kFAoAAAAAAAAAAAAAAAAAAAAAAAAA
CgIBAL2KRADgQSAA8CAPAOppNADsZDIA4k0mAPGAPwDfIxEA5b9fAPjKZAD/ymQA/8NiA/9FKhv/64xU
xv6jdf7+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//6R3//+kd///pHf//6R3
//+kd///pHf//6R3//+kd///pHf//6R3//+kd//+o3b//qN2//6jdv/+o3b/+6Bw9b9kFBa/ZBMMv2QT
DL9kEwy/ZBMMv2QTDD8hBioTCQDVVSoA5kIhAO6LRQDnLRYA75tNAOcXCwDkrFUA8cpkAP/KZAD/ymQA
/8pkAP9BJAz/v2UWBNd7OCXkiEtf75Nem/CUX9X8oXL+/qN2//6jdv/+o3b//qN2//6jdv/+o3b//6R3
//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd//+o3b//qN2//6jdv/+o3b//qN2
//ugcPX7oHD1+6Bw9fugcPX7oHD1+6Bw9fugcPW9eVb8FQ0I/6hXDf4uGQj+rlkI/jYfDf6cUAj+ymQA
/8pkAP/KZAD/ymQA/8pkAP9BJRH/AAAAAAAAAAAAAAAAAAAAAAAAAADCZBAS3oNETOqOVIfxlWHC95xq
8v6jdv/+o3b//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd//+o3b//qN2
//6jdv/+o3b//qN2//ugcPT7oHD0+6Bw9PugcPT7oHD0+6Bw9PugcPT7oHD0i1g89BUNCP6aTgX9Ui0P
/ntAC/7KZAD/ymQA/8pkAP/KZAD/ymQA/59RCP5DJQ7KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAwWQRC9t/Pjjni1Jz7pJbrvWaZ+X9onP+/6R3//+kd///pHf//6R3//+kd///pHf//6R3
//+kd//+o3b//qN2//6jdv/+o3b/+6Bw9b9lFRS/ZRUKv2UVCr9lFQq/ZRUKv2UVCr9lFQq/ZRUKe0EN
CwEAAJ0oFADYQSAA5slkAP3LZQD/y2UA/8tlAP/LZQD/tloA+RcLAN4AAAAeAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMBkEwTVeTMl6Y1VYOyRWZrwlV/V/KFz
/v+kd///pHf//6R3//+kd//+o3b//qN2//6jdv/+o3b/+6Bw9L9kFAoAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAsAAADIhkMA3MtlAP/LZQD/y2UA/8tlAP/HYwD9MBcA7AAAAEEAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAwGQTE9t/PUzskVmH7pNdwveca/L+o3b//qN2//6jdv/+o3b/+6Bw9L9kFAoAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeDgYA06xWAOvLZQD/y2UA/8tlAP9TKQDwAAAA
bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMFnFgvYfDo46YtSdPCTX670l2Tk65BY
wb9kFQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQyQRAN6xWADxw2EA
+GUyAOUBAACdAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAADHVxIEvmQUAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAFMDAQDUCAQA4gAAAJcAAAAJAAAAAAAAAAAAAAAA////z///AAD///AH//8AAP/8AAf//wAA/AAA
B///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/+AAAAAAAB//4AAAAAAAAAAgA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAf/+AAAAAAAA//4AAAAAAAAAAgAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAgAAAAAAAA/+AAAAAAAAB/4AAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgA
AAAAAAAB+AAAAAAAAAD4AAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAA
AAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAB4AAAAAAAAAAAAAA
AAAAAAAAAAAA+AAAAAAAAAD/gAAAAAAAAP/4AAf4AQAA///AB/wDAAD///wH/gMAAP///8//BwAAKAAA
ACAAAABAAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL5iFQHRcysd54pRRNx6PCMAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAwWMTCtt9OzDqjlVX75RefvKXY6bzmGXN+J1s8/+kd///pHf/85hk
pwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AMRhEAHRcysc5IhMRO2RWWvwlF6S9JhlufaaaOD8oXL+/6R3//+kd///pHf//6R3//+kd///pHf//6R3
//+kd//0mWaqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AO2SW5X0mGTN+J1s8/+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3
//+kd///pHf//6R3//mebuP0mWar9Jlmq/SZZqv0mWar9Jlmq/SZZqv0mWar9Jlmq/SZZqv0mWar9Jlm
q/SZZqvskVmS/6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3
//+kd///pHf//6R3//+kd///pHf/+Z5u4vSZZqn0mWap9JlmqfSZZqn0mWap9JlmqfSZZqn0mWap9Jlm
qfSZZqn0mWap9Zpoxv+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3
//+kd///pHf//6R3//+kd///pHf//6R3//+kd//0mWaqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAADqj1ZV/6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3
//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//SZZqoAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOqPVlX/pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3
//+kd///pHf//6R3//+kd///pHf/+aB0//GbcP//pHf//6R3//+kd///pHf/+Z5u4/SZZqv0mWar9Jlm
q/SZZqv0mWar9Jlmq/SZZqv0mWar9Jlmq/OXZKjcej0j6o9WVf+kd///pHf//6R3//+kd///pHf//6R3
//+kd///pHf//6R3//+kd///pHf//6R3//+kd//RhmH/QCUQ/3dMNf+zc1P/959z//+kd//5nm7i9Jlm
qfSZZqn0mWap9JlmqfSZZqn0mWap9JlmqfSZZqn0mWap9Jlmptp/PSLqj1ZV/6R3//+kd///pHf//6R3
//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//qN1//qgdP9yPAr/xmQC/10yDP9MKxD/bEQu
/5JbPLoAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOqPVlX/pHf//6R3
//+kd///pHf//6R3//+kd//1zrf/9c63//+kd///pHf//6R3//e1kP/27eb//KR2/3hGIf+vWQf/ZjcO
/8tlAP/GZAL/azYE/gAAAIYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6o9W
Vf+kd///pHf//6R3//+kd///pHf//aN2//fw6//38Ov//aN2//+kd///pHf/99K+//r6+v/4tZL/g1I5
/1cwDv/HZAL/zGYA/5pOBP9iMgP+XTEK8YBQM7L0mWar9Jlmq/SZZqv0mWar9Jlmq/SZZqv0mWar85dk
qNx6PSPqj1ZV/6R3//+kd///pHf//6R3//+kd//5so3/+vr6//r6+v/5so3//6R3//6jdf/26+P/+vr6
//fOuP+na07/pVQH/8xmAP/MZgD/Wi8H/5JLBv9UKwP2ZzcN9bt2UMv0mWap9JlmqfSZZqn0mWap9Jlm
qfSZZqn0mWam2n89IuqPVlX/pHf//6R3//+kd///pHf//6R3//fKsf/26+P/9uvj//fKsf//pHf/+a2F
//r6+v/03s//9ufd/92OZ/+GRAX/t1wC/2Q0B/9MKAn/y2UA/5dLAPBhMADsLRYAxgAAABEAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA6o9WVf+kd///pHf//6R3//+kd///pHf/9uPX//fSvf/30r3/9uPX
//+kd//3xqv/9/Dr//e0kP/5+fn/+Kh+/3E9D/+gUQP/i0cE/4lHCf+CQwn7zGYA/3I5AOp2OgDrFQoA
qAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADqj1ZV/6R3//+kd///pHf//6R3//qnfP/5+Pj/+LmX
//i5l//5+Pj/+qd8//Xez//31sT//KN2//jz8P/4wqX/Yz0m/0QkCP+ERAb/zGYA/2w5C/miUwb9y2UA
/10wBfaGRAb2WTciwfSZZqv0mWar9Jlmq/SZZqvzl2So3Ho9I+qPVlX/pHf//6R3//+kd///pHf/+b+g
//j29P/6pHf/+qR3//j29P/1v6H/+Pb0//m+n///pHf/9trK//bby//djmf/aDoU/2EzCP+yWgX/ymUB
/1QtCve1WgH3x2QC/1AqBvh6Pwj1lF5B2vSZZqn0mWap9JlmqfSZZqbafz0i6o9WVf+kd///pHf//6R3
//+kd//318T/9d3P//+kd///pHf/9d7P//bu5//5+Pj/+qd8//+kd//3waT/+PTw//ykdv+5d1b/fEIO
/1UtCf/EYgL/uVwA9T0eAN7EYgD5slgA9U0mAO1LJQDXAAAALAAAAAAAAAAAAAAAAAAAAADqj1ZV/6R3
//+kd///pHf//aN2//fw6//3xqr//6R3//+kd//3xqr/+vr6//bj1///pHf//6R3//mpfv/5+fn/+LWS
//+kd/+QXEL/i0kL/1gtBvfKZQD+oFAA708nAN/LZQD/lUoA8GIxAOwsFQDEAAAAEAAAAAAAAAAAAAAA
AOqPVlX/pHf//6R3//+kd//5so3/+vr6//ithP//pHf//6R3//ithP/6+vr/98qx//+kd///pHf//6R3
//bn3f/3zrf//6R3//6jdv9uRS7/iUcJ/3M7BvnLZQD/h0UG94BCB/jLZQD/ej4F930/A/VHKRXR8Zdk
q/OXZKjcej0j6o9WVf+kd///pHf//6R3//uthf/0zbb//qN1//+kd///pHf//qN1//jLsv/6qoH//6R3
//+kd///pHf/97yb//e7m///pHf//6R3//Occf9eOB39bzgE9ZJKBPjLZQD/aTcK955PA/fKZAD/XzEH
+IlGCPpyRzDk9Jlmptp/PSLqj1ZV/6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3
//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3/754UclDIQDTUigA7KpVAPTGYgD7Px8A
3rJZAPTCYAD6RSIA6mg0AOEAAABQAAAAAOqPVlX/pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3
//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf/9JlmqgAAAEhjMQDfRSIA
679fAPm3WwD1PR4A3sRhAPqvVwD1RiMA7RQJAN4AAAAr6o9WVf+kd///pHf//6R3//+kd///pHf//6R3
//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd//5nm7j9Jlm
q3hLM+OHRgj5Wi8H+cpkAP+kUgP3YzQK98ViAf9LJwX6czsG8xoNAMylZDxl/6R3//+kd///pHf//6R3
//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3
//mebuL0mWap85hmqUgqF82AQQT1cjoF9stlAP+HRQf5OR8H+oVEBvhmNAX4QCAA4UorFtz8onX//6R3
//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3
//+kd///pHf/9JlmqgAAAAAAAAAAAAAADCcTAL9mMwDrjUYA73Q5APR0OQDrSSQA7FYrAOCUSgDxn1AE
945bQf/8oXL9/6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3
//+kd///pHf//6R3//+kd//0mWaqAAAAAAAAAAAAAAAAAAAAJUUiANRHIwDuXy8A7EcjAOlvNwDlbjcA
6stlAP/LZQD/bTsQ/+SGS0XvlF2L9JlmxvugcPj/pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3
//+kd///pHf//6R3//+kd///pHf//6R3//mebuP0mWar9Jlmq/SZZqv0mWarnmRE2DkeBvRkNAf3iEYI
/FctBfLKZAD/y2UA/8tlAP9uOgv/AAAAAAAAAAAAAAAAwmQQCOKHSj3vk1138pdjsveca+z/pHf//6R3
//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf/+Z5u4vSZZqn0mWap9JlmqfSZZqn0mWapXDkk
vVotA+5OKgn5xWMC/8tlAP/LZQD/vV4A/EAjC7sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwWMW
Adl9OinqjlVk85hln/SZZtn+o3X+/6R3//+kd///pHf//6R3//+kd//0mWaqAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAABAAAAqpdLAOrMZgD/zGYA/8lkAP48HgDWAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMxxKBbojVJQ75Rei/SZZsb7oHD5/6R3//SZZqcAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAANKBQAwMNhAPnLZQD/Xi8A6QAAADEAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMZeDwjkhEo82n89
IgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJhMAyDcbANwAAABQAAAAAAAAAAD//h///4Af
/8AAH/8AAAAAAAAAAAAAH/wAAB/8AAAAAAAAAAAAAA/8AAAP/AAAAAAAAAAAAAAB/AAAAPwAAAAAAAAA
AAAAADwAAAAcAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAYAAAAHAAAAAAA4AAAAP4AHwD/8B+B//8f
wygAAAAYAAAAMAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAzXEqDuSJTjPvk15a75JcbcNkDQEAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIaBoD4YZJH+yQWEbxlWFu9JlmlfaaaLz4nGvj/aJ0
/f+kd///pHf//aJz+sBlFQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADuk1149ppo
qPebatD6n2/0/6R3//+jd///o3f//6N3//+jd///o3f//6N3//+jd///pHf//aJ1/PGWYoP0mWaA9Jlm
gPSZZoD0mWaA9JlmgPSZZoD0mWaA9JlmgO6TXHL/pHf//6N3//+kd///pHf//6R3//+jd///o3f//qN3
//+jd///o3f//qN3//+jd///pHf//aJ1/PKXY4H1mmd/9Zpnf/WaZ3/1mmd/9Zpnf/WaZ3/1mmd/8phk
gfyhc/z/pHf//6R3//+kd///pHf//6R3//+kd///pHf//qR2//+kd///pHf//qR2//+kd///pHf//aJz
+sBlFQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwGUVBfugcPr/o3f//6N3//+jd///pHf//6R3
//+jd///o3f//6N3//+jd//1nnL//aJ2//+jd///pHf//aJ1/PGWYoP0mWaA9JlmgPSZZoD0mWaA9Jlm
gPSZZoDuklxxwmAUBvugcPr/pHf//6N3//+kd///pHf//6R3//+jd///o3f//qN3//+jd/+kaUz/e0Yb
/5FbPv/PhWD//aJ1/PKXY4H1mmd/9Zpnf/WaZ3/1mmd/9Zpnf/WaZ3/vlF9wwGUVBvugcPr/pHf//6R3
//+kd//+o3b/+L2e//6jdv//pHf//qN2//jBo//XimP/o1IE/3pBDP+OSQb/eEIV/Q4GAFMAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAwGUVBfugcPr/o3f//6N3//+jd//7r4f/+fn5//uvh///o3f/+q6G
//n5+f/4rIX/VzET/6JTBv/JZAD/mU0D/zoeBuuaYD6E9JlmgPSZZoD0mWaA9JlmgPSZZoDuklxxwmAU
BvugcPr/pHf//6N3//+kd//5x6z/+fj3//nHrP//o3f/+Mar//n49//5x6z/ilAl/8xmAP+7XwT/djwD
/2k1A/ZtPBPxxXxTk/WaZ3/1mmd/9Zpnf/WaZ3/vlF9wwGUVBvugcPr/pHf//6R3//+kd//44NL/89C6
//jg0v//pHf/99/R//XRvP/339L/nGE9/7BYAv9fMQf/eT8J/8FgAPpeLwDqNRoAqgAAAAQAAAAAAAAA
AAAAAAAAAAAAwGUVBfugcPr/o3f//6N3//ymef/38u7/+ad8//fy7v/5p3z/9/Lt//qnfP/38u7/s3ZX
/1svBv+aTgT/nVEH/5NLBfmuVwD4aDUE8lczGav0mWaA9JlmgPSZZoDuklxxwmAUBvugcPr+o3b//qN2
//q7mv/33tD//qN2//ff0P/10bz/+N/S//6jdv/339H/+LmZ/4BNLP9vOgn/wWEC/35BB/aoVAD2mE0D
+m04BfSIVTi+9Jlmf/SZZn/vlF5wwGUVBvugcPr+o3b//qN2//jTv//4xqv//qN2//nGq//5+Pf/+ces
//6jdv/5xqz/+NO///CacP94RBz/cDoI/8hkAPxcLgDjvV4A+HU6AO1aLQDcAgAALgAAAAAAAAAAv2QV
BfugcPr+o3b//qR3//fs5f/6rYX//6R3//qthf/5+fn/+q6H//6jdv/6rob/9+zk//6jdv/XimT/d0AR
/3k9BPjAYAD5ZzUG88llAP5qNgP1VSwG1NKDVoDuklxxwmAUBvugcPr+o3b//qR3//fAov/+o3b//qN2
//6jdv/4vZ7//qN2//6jdv/+o3b/97+h//6jdv//pHf/tnVU/mo2BPGPRwL2sloD/nM6A+7DYQL/ZjQE
9Ww/Henbh1ZzwGUVBvugcPr+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2
//6jdv//o3f//aJz+isWAXxhMADop1MA9o5GAO6JRADsq1UA9l8vAOgFAgCDpFYSBfugcPr+o3b//6N3
//6jdv//pHf//6R3//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv//pHf//aJ1/N6KWoVsPx7nZjQE
9cFgAv93PAPvr1gD/WIxA/hSKgPvHQ4CVvugcPr+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2
//6jdv/+o3b//qN2//6jdv//pHf//aJ1/PGWYoHXhll/UisG0Gg1A/XIYwD9Vi0H92o2BPRnNAPwQCAA
29CFX/3+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv//pHf//aJz
+sBlFQUAAAAAAAAAKVgrANpbLQDuYTAA62AvAOlgLwDnymQA/oJJHf/vk1179ptpvvqfcPT/pHf//6R3
//6jdv/+o3b//qN2//6jdv/+o3b//qN2//6jdv//pHf//aJ1/PGWYoP0mWaA9JlmgIxYOrxVLAX0ZTME
9GEyBfLDYQD7y2UA/4VFB/8AAAAAAAAAAMJkEAXliU018ZVgcPWaZ6r4nW3k/qN2//6jdv/+o3b//qN2
//6jdv//pHf//aJ1/PGWYoH0mWZ/9Jlmf/SZZn88JRenVSwF7rZcAv7LZQD/xWIA/U0oBrEAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAC/ZBMB4YZJIe+UXVz0mWaX95xr0v2idPz/pHf//aJz+r9lFQUAAAAAAAAA
AAAAAAAAAAADLxcApsRiAPrLZQD/Wi0A0QAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAANN4MhHtkFpJ7pFca79lFQEAAAAAAAAAAAAAAAAAAAAAAAAAET0eAL5PJwDWAgAA
KgAAAAD/wf9B4AH/QQAAAEEAAABBAAH8QQAAAEEAAABBAAH8QQAAAEEAAABBAAA8QQAAAEEAAABBAAAM
QQAAAEEAAABBAAAAQQAAAEEAAABBAAEAQQAAAEHAAABB/AHAQf/h4UEoAAAAEAAAACAAAAABACAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMFjEwPkh0si8ZVhSfWaZ3D4nWyY7pJc
MwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPGVYFj3m2qE+J1sq/mebtL8oHL3/6R3//+kd///pHf//6R3
//abaY70mWZW9JlmVvSZZlb0mWZW9JlmVvCVYE//pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3
//+kd//2m2mN9JlmVPSZZlT0mWZU9JlmVPSZZlT6n2/G/6R3//+kd///pHf//6R3//+kd///pHf/+qB0
//+kd///pHf/9ptpjvSZZlb0mWZW9JlmVvSZZlbukVwz+Z5uqv+kd///pHf//6R3//+kd///pHf//qN2
/59iPP+TVSb/q2xK/9GEWZL0mWZU9JlmVPSZZlT0mWZU75ReMvmebqr/pHf//6R3//rBo//6waP//6R3
//fby/+8fFj/jUkJ/75fAf9QKQTdt3JLV/SZZlb0mWZW9JlmVu6RXDP5nm6q/6R3//+kd//42Mf/+NjH
//2mev/37+n/3KyS/6tXA/91PAb/kkkC+Wo8FtzfjF5Z9JlmVPSZZlTvlF4y+Z5uqv+kd//9pHj/99rJ
//fayf/5vJv/+Met//jWw/9uPBD/mU4F/5dNBvyEQgHyUy0MmPSZZlb0mWZW7pFcM/mebqr/pHf/+7eU
//rHrP/6x6z/9+fd//yrgv/328r/v3hS/3k/Cf+nVAP6n1AA83I6A/SFUC6h9JlmVO+UXjL5nm6q/6R3
//rQuv/7rof/+66H//jo3///pHf/+suz//uzjf+iYzz/h0UF+5BIAfGrVgH5YjEC54lUNGPukVwz+Z5u
qv+kd//7sIr//qN2//6jdv/8r4j//6R3//2qgP/9qYD//KJ1/3JBG+SWSwH2g0ID8qdUAflqOQ7qm2A9
Rvmebqr/pHf//6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd//Pg1mgajkO6aZTAfmCQQPygkEB
9zEZArLrlWiu/6R3//+kd///pHf//6R3//+kd///pHf//6R3//+kd///pHf/9ptpjYtWN2BhMQLllUoB
918wA/JkMgHrnV409PecarP7oHHv/6R3//+kd///pHf//6R3//+kd///pHf//6R3//abaY70mWZWiFIw
n1EpA/FlMwPvs1kA+pxQBv8AAAAAwmQQAuqPVi30mWZo+J1ro/qfb93+o3b//6R3//+kd//2m2mN9Jlm
VPSZZlQ9IgyWnk8D+MtlAP9lMwOoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4IVGGfKXY1T3m2uP7pRd
MgAAAAAAAAAAAAAAA1UqAKpmMwDFAAAADPA/rEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACs
QQAArEEAAKxBAACsQQAArEEAAKxBgACsQfwwrEE=
</value>
</data>
</root>

@ -22,5 +22,15 @@ namespace OnDoc.Helper
}
}
public Stream GenerateStreamFromString(string s)
{
var stream = new MemoryStream();
var writer = new StreamWriter(stream);
writer.Write(s);
writer.Flush();
stream.Position = 0;
return stream;
}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -1 +1 @@
6d19ef59527180b68da16e17ca121e889b7ca8f0078a8a13a54a1a1868f81e50
814802d754b2128b3f6dad2b8544b2a517e2d5ae467a7e6b9ae6acd890a15d4b

@ -247,3 +247,4 @@ E:\Software-Projekte\OnDoc\OnDoc\Client\obj\Debug\de-DE\OnDoc.resources.dll
E:\Software-Projekte\OnDoc\OnDoc\Client\obj\Debug\Client.csproj.Up2Date
E:\Software-Projekte\OnDoc\OnDoc\Client\obj\Debug\OnDoc.exe
E:\Software-Projekte\OnDoc\OnDoc\Client\obj\Debug\OnDoc.pdb
E:\Software-Projekte\OnDoc\OnDoc\Client\obj\Debug\OnDoc.DocMgmt.SerienbriefBearbeitung.resources

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,765 @@
using System;
using System.Data;
using System.Data.SqlTypes;
using System.Data.SqlClient;
namespace edoka_dms
{
public class clsEdex_sb_serienbrief : clsDBInteractionBase
{
#region Class Member Declarations
private SqlBoolean m_bAktiv;
private SqlDateTime m_daMutiert_am, m_daDokumentdatum, m_daArchivdatum, m_daTermin, m_daErstellt_am;
private SqlInt32 m_iBestaetigt, m_iGedruckt, m_iErstellt, m_iInBearbeitung, m_iFehlerhaft, m_iTreewidth, m_iWindowheight, m_iWindowwidth, m_iDokumenttypnr, m_iStatus, m_iSerienbriefnr, m_iAusgeloest, m_iTeam, m_iUnterschriftrechts, m_iUnterschriftlinks, m_iZustaendig, m_iPostzustellung, m_iVerantwortlich, m_iMutierer, m_iBldossier;
private SqlString m_sBemerkung, m_sBezeichnung;
#endregion
public clsEdex_sb_serienbrief()
{
// Nothing for now.
}
public override bool Insert()
{
SqlCommand scmCmdToExecute = new SqlCommand();
scmCmdToExecute.CommandText = "dbo.[pr_edex_sb_serienbrief_Insert]";
scmCmdToExecute.CommandType = CommandType.StoredProcedure;
// Use base class' connection object
scmCmdToExecute.Connection = m_scoMainConnection;
try
{
scmCmdToExecute.Parameters.Add(new SqlParameter("@sbezeichnung", SqlDbType.VarChar, 255, ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Proposed, m_sBezeichnung));
scmCmdToExecute.Parameters.Add(new SqlParameter("@iverantwortlich", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iVerantwortlich));
scmCmdToExecute.Parameters.Add(new SqlParameter("@ipostzustellung", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iPostzustellung));
scmCmdToExecute.Parameters.Add(new SqlParameter("@dadokumentdatum", SqlDbType.DateTime, 8, ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Proposed, m_daDokumentdatum));
scmCmdToExecute.Parameters.Add(new SqlParameter("@izustaendig", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iZustaendig));
scmCmdToExecute.Parameters.Add(new SqlParameter("@iunterschriftlinks", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iUnterschriftlinks));
scmCmdToExecute.Parameters.Add(new SqlParameter("@iunterschriftrechts", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iUnterschriftrechts));
scmCmdToExecute.Parameters.Add(new SqlParameter("@iteam", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iTeam));
scmCmdToExecute.Parameters.Add(new SqlParameter("@daarchivdatum", SqlDbType.DateTime, 8, ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Proposed, m_daArchivdatum));
scmCmdToExecute.Parameters.Add(new SqlParameter("@datermin", SqlDbType.DateTime, 8, ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Proposed, m_daTermin));
scmCmdToExecute.Parameters.Add(new SqlParameter("@sbemerkung", SqlDbType.VarChar, 1024, ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Proposed, m_sBemerkung));
scmCmdToExecute.Parameters.Add(new SqlParameter("@daerstellt_am", SqlDbType.DateTime, 8, ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Proposed, m_daErstellt_am));
scmCmdToExecute.Parameters.Add(new SqlParameter("@damutiert_am", SqlDbType.DateTime, 8, ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Proposed, m_daMutiert_am));
scmCmdToExecute.Parameters.Add(new SqlParameter("@imutierer", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iMutierer));
scmCmdToExecute.Parameters.Add(new SqlParameter("@baktiv", SqlDbType.Bit, 1, ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Proposed, m_bAktiv));
scmCmdToExecute.Parameters.Add(new SqlParameter("@istatus", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iStatus));
scmCmdToExecute.Parameters.Add(new SqlParameter("@idokumenttypnr", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iDokumenttypnr));
scmCmdToExecute.Parameters.Add(new SqlParameter("@iwindowwidth", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iWindowwidth));
scmCmdToExecute.Parameters.Add(new SqlParameter("@iwindowheight", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iWindowheight));
scmCmdToExecute.Parameters.Add(new SqlParameter("@itreewidth", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iTreewidth));
scmCmdToExecute.Parameters.Add(new SqlParameter("@ifehlerhaft", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iFehlerhaft));
scmCmdToExecute.Parameters.Add(new SqlParameter("@iinBearbeitung", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iInBearbeitung));
scmCmdToExecute.Parameters.Add(new SqlParameter("@ierstellt", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iErstellt));
scmCmdToExecute.Parameters.Add(new SqlParameter("@igedruckt", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iGedruckt));
scmCmdToExecute.Parameters.Add(new SqlParameter("@ibestaetigt", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iBestaetigt));
scmCmdToExecute.Parameters.Add(new SqlParameter("@iausgeloest", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iAusgeloest));
scmCmdToExecute.Parameters.Add(new SqlParameter("@ibldossier", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iBldossier));
scmCmdToExecute.Parameters.Add(new SqlParameter("@iserienbriefnr", SqlDbType.Int, 4, ParameterDirection.Output, true, 10, 0, "", DataRowVersion.Proposed, m_iSerienbriefnr));
scmCmdToExecute.Parameters.Add(new SqlParameter("@iErrorCode", SqlDbType.Int, 4, ParameterDirection.Output, true, 10, 0, "", DataRowVersion.Proposed, m_iErrorCode));
if(m_bMainConnectionIsCreatedLocal)
{
// Open connection.
m_scoMainConnection.Open();
}
else
{
if(m_cpMainConnectionProvider.bIsTransactionPending)
{
scmCmdToExecute.Transaction = m_cpMainConnectionProvider.stCurrentTransaction;
}
}
// Execute query.
m_iRowsAffected = scmCmdToExecute.ExecuteNonQuery();
m_iSerienbriefnr = Convert.ToInt32(scmCmdToExecute.Parameters["@iserienbriefnr"].Value.ToString());
m_iErrorCode = Convert.ToInt32(scmCmdToExecute.Parameters["@iErrorCode"].Value.ToString());
if(m_iErrorCode != (int)LLBLError.AllOk)
{
// Throw error.
throw new Exception("Stored Procedure 'pr_edex_sb_serienbrief_Insert' reported the ErrorCode: " + m_iErrorCode);
}
return true;
}
catch(Exception ex)
{
// some error occured. Bubble it to caller and encapsulate Exception object
throw new Exception("clsEdex_sb_serienbrief::Insert::Error occured.", ex);
}
finally
{
if(m_bMainConnectionIsCreatedLocal)
{
// Close connection.
m_scoMainConnection.Close();
}
scmCmdToExecute.Dispose();
}
}
public override bool Update()
{
SqlCommand scmCmdToExecute = new SqlCommand();
scmCmdToExecute.CommandText = "dbo.[pr_edex_sb_serienbrief_Update]";
scmCmdToExecute.CommandType = CommandType.StoredProcedure;
// Use base class' connection object
scmCmdToExecute.Connection = m_scoMainConnection;
try
{
scmCmdToExecute.Parameters.Add(new SqlParameter("@iserienbriefnr", SqlDbType.Int, 4, ParameterDirection.Input, false, 10, 0, "", DataRowVersion.Proposed, m_iSerienbriefnr));
scmCmdToExecute.Parameters.Add(new SqlParameter("@sbezeichnung", SqlDbType.VarChar, 255, ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Proposed, m_sBezeichnung));
scmCmdToExecute.Parameters.Add(new SqlParameter("@iverantwortlich", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iVerantwortlich));
scmCmdToExecute.Parameters.Add(new SqlParameter("@ipostzustellung", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iPostzustellung));
scmCmdToExecute.Parameters.Add(new SqlParameter("@dadokumentdatum", SqlDbType.DateTime, 8, ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Proposed, m_daDokumentdatum));
scmCmdToExecute.Parameters.Add(new SqlParameter("@izustaendig", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iZustaendig));
scmCmdToExecute.Parameters.Add(new SqlParameter("@iunterschriftlinks", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iUnterschriftlinks));
scmCmdToExecute.Parameters.Add(new SqlParameter("@iunterschriftrechts", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iUnterschriftrechts));
scmCmdToExecute.Parameters.Add(new SqlParameter("@iteam", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iTeam));
scmCmdToExecute.Parameters.Add(new SqlParameter("@daarchivdatum", SqlDbType.DateTime, 8, ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Proposed, m_daArchivdatum));
scmCmdToExecute.Parameters.Add(new SqlParameter("@datermin", SqlDbType.DateTime, 8, ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Proposed, m_daTermin));
scmCmdToExecute.Parameters.Add(new SqlParameter("@sbemerkung", SqlDbType.VarChar, 1024, ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Proposed, m_sBemerkung));
scmCmdToExecute.Parameters.Add(new SqlParameter("@daerstellt_am", SqlDbType.DateTime, 8, ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Proposed, m_daErstellt_am));
scmCmdToExecute.Parameters.Add(new SqlParameter("@damutiert_am", SqlDbType.DateTime, 8, ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Proposed, m_daMutiert_am));
scmCmdToExecute.Parameters.Add(new SqlParameter("@imutierer", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iMutierer));
scmCmdToExecute.Parameters.Add(new SqlParameter("@baktiv", SqlDbType.Bit, 1, ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Proposed, m_bAktiv));
scmCmdToExecute.Parameters.Add(new SqlParameter("@istatus", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iStatus));
scmCmdToExecute.Parameters.Add(new SqlParameter("@idokumenttypnr", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iDokumenttypnr));
scmCmdToExecute.Parameters.Add(new SqlParameter("@iwindowwidth", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iWindowwidth));
scmCmdToExecute.Parameters.Add(new SqlParameter("@iwindowheight", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iWindowheight));
scmCmdToExecute.Parameters.Add(new SqlParameter("@itreewidth", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iTreewidth));
scmCmdToExecute.Parameters.Add(new SqlParameter("@ifehlerhaft", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iFehlerhaft));
scmCmdToExecute.Parameters.Add(new SqlParameter("@iinBearbeitung", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iInBearbeitung));
scmCmdToExecute.Parameters.Add(new SqlParameter("@ierstellt", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iErstellt));
scmCmdToExecute.Parameters.Add(new SqlParameter("@igedruckt", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iGedruckt));
scmCmdToExecute.Parameters.Add(new SqlParameter("@ibestaetigt", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iBestaetigt));
scmCmdToExecute.Parameters.Add(new SqlParameter("@iausgeloest", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iAusgeloest));
scmCmdToExecute.Parameters.Add(new SqlParameter("@ibldossier", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, m_iBldossier));
scmCmdToExecute.Parameters.Add(new SqlParameter("@iErrorCode", SqlDbType.Int, 4, ParameterDirection.Output, true, 10, 0, "", DataRowVersion.Proposed, m_iErrorCode));
if(m_bMainConnectionIsCreatedLocal)
{
// Open connection.
m_scoMainConnection.Open();
}
else
{
if(m_cpMainConnectionProvider.bIsTransactionPending)
{
scmCmdToExecute.Transaction = m_cpMainConnectionProvider.stCurrentTransaction;
}
}
// Execute query.
m_iRowsAffected = scmCmdToExecute.ExecuteNonQuery();
m_iErrorCode = Convert.ToInt32(scmCmdToExecute.Parameters["@iErrorCode"].Value.ToString());
if(m_iErrorCode != (int)LLBLError.AllOk)
{
// Throw error.
throw new Exception("Stored Procedure 'pr_edex_sb_serienbrief_Update' reported the ErrorCode: " + m_iErrorCode);
}
return true;
}
catch(Exception ex)
{
// some error occured. Bubble it to caller and encapsulate Exception object
throw new Exception("clsEdex_sb_serienbrief::Update::Error occured.", ex);
}
finally
{
if(m_bMainConnectionIsCreatedLocal)
{
// Close connection.
m_scoMainConnection.Close();
}
scmCmdToExecute.Dispose();
}
}
public override bool Delete()
{
SqlCommand scmCmdToExecute = new SqlCommand();
scmCmdToExecute.CommandText = "dbo.[pr_edex_sb_serienbrief_Delete]";
scmCmdToExecute.CommandType = CommandType.StoredProcedure;
// Use base class' connection object
scmCmdToExecute.Connection = m_scoMainConnection;
try
{
scmCmdToExecute.Parameters.Add(new SqlParameter("@iserienbriefnr", SqlDbType.Int, 4, ParameterDirection.Input, false, 10, 0, "", DataRowVersion.Proposed, m_iSerienbriefnr));
scmCmdToExecute.Parameters.Add(new SqlParameter("@iErrorCode", SqlDbType.Int, 4, ParameterDirection.Output, true, 10, 0, "", DataRowVersion.Proposed, m_iErrorCode));
if(m_bMainConnectionIsCreatedLocal)
{
// Open connection.
m_scoMainConnection.Open();
}
else
{
if(m_cpMainConnectionProvider.bIsTransactionPending)
{
scmCmdToExecute.Transaction = m_cpMainConnectionProvider.stCurrentTransaction;
}
}
// Execute query.
m_iRowsAffected = scmCmdToExecute.ExecuteNonQuery();
m_iErrorCode = (Int32)scmCmdToExecute.Parameters["@iErrorCode"].Value;
if(m_iErrorCode != (int)LLBLError.AllOk)
{
// Throw error.
throw new Exception("Stored Procedure 'pr_edex_sb_serienbrief_Delete' reported the ErrorCode: " + m_iErrorCode);
}
return true;
}
catch(Exception ex)
{
// some error occured. Bubble it to caller and encapsulate Exception object
throw new Exception("clsEdex_sb_serienbrief::Delete::Error occured.", ex);
}
finally
{
if(m_bMainConnectionIsCreatedLocal)
{
// Close connection.
m_scoMainConnection.Close();
}
scmCmdToExecute.Dispose();
}
}
public override DataTable SelectOne()
{
SqlCommand scmCmdToExecute = new SqlCommand();
scmCmdToExecute.CommandText = "dbo.[pr_edex_sb_serienbrief_SelectOne]";
scmCmdToExecute.CommandType = CommandType.StoredProcedure;
DataTable dtToReturn = new DataTable("edex_sb_serienbrief");
SqlDataAdapter sdaAdapter = new SqlDataAdapter(scmCmdToExecute);
// Use base class' connection object
scmCmdToExecute.Connection = m_scoMainConnection;
try
{
scmCmdToExecute.Parameters.Add(new SqlParameter("@iserienbriefnr", SqlDbType.Int, 4, ParameterDirection.Input, false, 10, 0, "", DataRowVersion.Proposed, m_iSerienbriefnr));
scmCmdToExecute.Parameters.Add(new SqlParameter("@iErrorCode", SqlDbType.Int, 4, ParameterDirection.Output, true, 10, 0, "", DataRowVersion.Proposed, m_iErrorCode));
if(m_bMainConnectionIsCreatedLocal)
{
// Open connection.
m_scoMainConnection.Open();
}
else
{
if(m_cpMainConnectionProvider.bIsTransactionPending)
{
scmCmdToExecute.Transaction = m_cpMainConnectionProvider.stCurrentTransaction;
}
}
// Execute query.
sdaAdapter.Fill(dtToReturn);
m_iErrorCode = Convert.ToInt32(scmCmdToExecute.Parameters["@iErrorCode"].Value.ToString());
if(m_iErrorCode != (int)LLBLError.AllOk)
{
// Throw error.
throw new Exception("Stored Procedure 'pr_edex_sb_serienbrief_SelectOne' reported the ErrorCode: " + m_iErrorCode);
}
if(dtToReturn.Rows.Count > 0)
{
m_iSerienbriefnr = (Int32)dtToReturn.Rows[0]["serienbriefnr"];
m_sBezeichnung = dtToReturn.Rows[0]["bezeichnung"] == System.DBNull.Value ? SqlString.Null : (string)dtToReturn.Rows[0]["bezeichnung"];
m_iVerantwortlich = dtToReturn.Rows[0]["verantwortlich"] == System.DBNull.Value ? SqlInt32.Null : (Int32)dtToReturn.Rows[0]["verantwortlich"];
m_iPostzustellung = dtToReturn.Rows[0]["postzustellung"] == System.DBNull.Value ? SqlInt32.Null : (Int32)dtToReturn.Rows[0]["postzustellung"];
m_daDokumentdatum = dtToReturn.Rows[0]["dokumentdatum"] == System.DBNull.Value ? SqlDateTime.Null : (DateTime)dtToReturn.Rows[0]["dokumentdatum"];
m_iZustaendig = dtToReturn.Rows[0]["zustaendig"] == System.DBNull.Value ? SqlInt32.Null : (Int32)dtToReturn.Rows[0]["zustaendig"];
m_iUnterschriftlinks = dtToReturn.Rows[0]["unterschriftlinks"] == System.DBNull.Value ? SqlInt32.Null : (Int32)dtToReturn.Rows[0]["unterschriftlinks"];
m_iUnterschriftrechts = dtToReturn.Rows[0]["unterschriftrechts"] == System.DBNull.Value ? SqlInt32.Null : (Int32)dtToReturn.Rows[0]["unterschriftrechts"];
m_iTeam = dtToReturn.Rows[0]["team"] == System.DBNull.Value ? SqlInt32.Null : (Int32)dtToReturn.Rows[0]["team"];
m_daArchivdatum = dtToReturn.Rows[0]["archivdatum"] == System.DBNull.Value ? SqlDateTime.Null : (DateTime)dtToReturn.Rows[0]["archivdatum"];
m_daTermin = dtToReturn.Rows[0]["termin"] == System.DBNull.Value ? SqlDateTime.Null : (DateTime)dtToReturn.Rows[0]["termin"];
m_sBemerkung = dtToReturn.Rows[0]["bemerkung"] == System.DBNull.Value ? SqlString.Null : (string)dtToReturn.Rows[0]["bemerkung"];
m_daErstellt_am = dtToReturn.Rows[0]["erstellt_am"] == System.DBNull.Value ? SqlDateTime.Null : (DateTime)dtToReturn.Rows[0]["erstellt_am"];
m_daMutiert_am = dtToReturn.Rows[0]["mutiert_am"] == System.DBNull.Value ? SqlDateTime.Null : (DateTime)dtToReturn.Rows[0]["mutiert_am"];
m_iMutierer = dtToReturn.Rows[0]["mutierer"] == System.DBNull.Value ? SqlInt32.Null : (Int32)dtToReturn.Rows[0]["mutierer"];
m_bAktiv = dtToReturn.Rows[0]["aktiv"] == System.DBNull.Value ? SqlBoolean.Null : (bool)dtToReturn.Rows[0]["aktiv"];
m_iStatus = dtToReturn.Rows[0]["status"] == System.DBNull.Value ? SqlInt32.Null : (Int32)dtToReturn.Rows[0]["status"];
m_iDokumenttypnr = dtToReturn.Rows[0]["dokumenttypnr"] == System.DBNull.Value ? SqlInt32.Null : (Int32)dtToReturn.Rows[0]["dokumenttypnr"];
m_iWindowwidth = dtToReturn.Rows[0]["windowwidth"] == System.DBNull.Value ? SqlInt32.Null : (Int32)dtToReturn.Rows[0]["windowwidth"];
m_iWindowheight = dtToReturn.Rows[0]["windowheight"] == System.DBNull.Value ? SqlInt32.Null : (Int32)dtToReturn.Rows[0]["windowheight"];
m_iTreewidth = dtToReturn.Rows[0]["treewidth"] == System.DBNull.Value ? SqlInt32.Null : (Int32)dtToReturn.Rows[0]["treewidth"];
m_iFehlerhaft = dtToReturn.Rows[0]["fehlerhaft"] == System.DBNull.Value ? SqlInt32.Null : (Int32)dtToReturn.Rows[0]["fehlerhaft"];
m_iInBearbeitung = dtToReturn.Rows[0]["inBearbeitung"] == System.DBNull.Value ? SqlInt32.Null : (Int32)dtToReturn.Rows[0]["inBearbeitung"];
m_iErstellt = dtToReturn.Rows[0]["erstellt"] == System.DBNull.Value ? SqlInt32.Null : (Int32)dtToReturn.Rows[0]["erstellt"];
m_iGedruckt = dtToReturn.Rows[0]["gedruckt"] == System.DBNull.Value ? SqlInt32.Null : (Int32)dtToReturn.Rows[0]["gedruckt"];
m_iBestaetigt = dtToReturn.Rows[0]["bestaetigt"] == System.DBNull.Value ? SqlInt32.Null : (Int32)dtToReturn.Rows[0]["bestaetigt"];
m_iAusgeloest = dtToReturn.Rows[0]["ausgeloest"] == System.DBNull.Value ? SqlInt32.Null : (Int32)dtToReturn.Rows[0]["ausgeloest"];
m_iBldossier = dtToReturn.Rows[0]["bldossier"] == System.DBNull.Value ? SqlInt32.Null : (Int32)dtToReturn.Rows[0]["bldossier"];
}
return dtToReturn;
}
catch(Exception ex)
{
// some error occured. Bubble it to caller and encapsulate Exception object
throw new Exception("clsEdex_sb_serienbrief::SelectOne::Error occured.", ex);
}
finally
{
if(m_bMainConnectionIsCreatedLocal)
{
// Close connection.
m_scoMainConnection.Close();
}
scmCmdToExecute.Dispose();
sdaAdapter.Dispose();
}
}
public override DataTable SelectAll()
{
SqlCommand scmCmdToExecute = new SqlCommand();
scmCmdToExecute.CommandText = "dbo.[pr_edex_sb_serienbrief_SelectAll]";
scmCmdToExecute.CommandType = CommandType.StoredProcedure;
DataTable dtToReturn = new DataTable("edex_sb_serienbrief");
SqlDataAdapter sdaAdapter = new SqlDataAdapter(scmCmdToExecute);
// Use base class' connection object
scmCmdToExecute.Connection = m_scoMainConnection;
try
{
scmCmdToExecute.Parameters.Add(new SqlParameter("@iErrorCode", SqlDbType.Int, 4, ParameterDirection.Output, true, 10, 0, "", DataRowVersion.Proposed, m_iErrorCode));
if(m_bMainConnectionIsCreatedLocal)
{
// Open connection.
m_scoMainConnection.Open();
}
else
{
if(m_cpMainConnectionProvider.bIsTransactionPending)
{
scmCmdToExecute.Transaction = m_cpMainConnectionProvider.stCurrentTransaction;
}
}
// Execute query.
sdaAdapter.Fill(dtToReturn);
m_iErrorCode = (Int32)scmCmdToExecute.Parameters["@iErrorCode"].Value;
if(m_iErrorCode != (int)LLBLError.AllOk)
{
// Throw error.
throw new Exception("Stored Procedure 'pr_edex_sb_serienbrief_SelectAll' reported the ErrorCode: " + m_iErrorCode);
}
return dtToReturn;
}
catch(Exception ex)
{
// some error occured. Bubble it to caller and encapsulate Exception object
throw new Exception("clsEdex_sb_serienbrief::SelectAll::Error occured.", ex);
}
finally
{
if(m_bMainConnectionIsCreatedLocal)
{
// Close connection.
m_scoMainConnection.Close();
}
scmCmdToExecute.Dispose();
sdaAdapter.Dispose();
}
}
#region Class Property Declarations
public SqlInt32 iSerienbriefnr
{
get
{
return m_iSerienbriefnr;
}
set
{
SqlInt32 iSerienbriefnrTmp = (SqlInt32)value;
if(iSerienbriefnrTmp.IsNull)
{
throw new ArgumentOutOfRangeException("iSerienbriefnr", "iSerienbriefnr can't be NULL");
}
m_iSerienbriefnr = value;
}
}
public SqlString sBezeichnung
{
get
{
return m_sBezeichnung;
}
set
{
m_sBezeichnung = value;
}
}
public SqlInt32 iVerantwortlich
{
get
{
return m_iVerantwortlich;
}
set
{
m_iVerantwortlich = value;
}
}
public SqlInt32 iPostzustellung
{
get
{
return m_iPostzustellung;
}
set
{
m_iPostzustellung = value;
}
}
public SqlDateTime daDokumentdatum
{
get
{
return m_daDokumentdatum;
}
set
{
m_daDokumentdatum = value;
}
}
public SqlInt32 iZustaendig
{
get
{
return m_iZustaendig;
}
set
{
m_iZustaendig = value;
}
}
public SqlInt32 iUnterschriftlinks
{
get
{
return m_iUnterschriftlinks;
}
set
{
m_iUnterschriftlinks = value;
}
}
public SqlInt32 iUnterschriftrechts
{
get
{
return m_iUnterschriftrechts;
}
set
{
m_iUnterschriftrechts = value;
}
}
public SqlInt32 iTeam
{
get
{
return m_iTeam;
}
set
{
m_iTeam = value;
}
}
public SqlDateTime daArchivdatum
{
get
{
return m_daArchivdatum;
}
set
{
m_daArchivdatum = value;
}
}
public SqlDateTime daTermin
{
get
{
return m_daTermin;
}
set
{
m_daTermin = value;
}
}
public SqlString sBemerkung
{
get
{
return m_sBemerkung;
}
set
{
m_sBemerkung = value;
}
}
public SqlDateTime daErstellt_am
{
get
{
return m_daErstellt_am;
}
set
{
m_daErstellt_am = value;
}
}
public SqlDateTime daMutiert_am
{
get
{
return m_daMutiert_am;
}
set
{
m_daMutiert_am = value;
}
}
public SqlInt32 iMutierer
{
get
{
return m_iMutierer;
}
set
{
m_iMutierer = value;
}
}
public SqlBoolean bAktiv
{
get
{
return m_bAktiv;
}
set
{
m_bAktiv = value;
}
}
public SqlInt32 iStatus
{
get
{
return m_iStatus;
}
set
{
m_iStatus = value;
}
}
public SqlInt32 iDokumenttypnr
{
get
{
return m_iDokumenttypnr;
}
set
{
m_iDokumenttypnr = value;
}
}
public SqlInt32 iWindowwidth
{
get
{
return m_iWindowwidth;
}
set
{
m_iWindowwidth = value;
}
}
public SqlInt32 iWindowheight
{
get
{
return m_iWindowheight;
}
set
{
m_iWindowheight = value;
}
}
public SqlInt32 iTreewidth
{
get
{
return m_iTreewidth;
}
set
{
m_iTreewidth = value;
}
}
public SqlInt32 iFehlerhaft
{
get
{
return m_iFehlerhaft;
}
set
{
m_iFehlerhaft = value;
}
}
public SqlInt32 iInBearbeitung
{
get
{
return m_iInBearbeitung;
}
set
{
m_iInBearbeitung = value;
}
}
public SqlInt32 iErstellt
{
get
{
return m_iErstellt;
}
set
{
m_iErstellt = value;
}
}
public SqlInt32 iGedruckt
{
get
{
return m_iGedruckt;
}
set
{
m_iGedruckt = value;
}
}
public SqlInt32 iBestaetigt
{
get
{
return m_iBestaetigt;
}
set
{
m_iBestaetigt = value;
}
}
public SqlInt32 iAusgeloest
{
get
{
return m_iAusgeloest;
}
set
{
m_iAusgeloest = value;
}
}
public SqlInt32 iBldossier
{
get
{
return m_iBldossier;
}
set
{
m_iBldossier = value;
}
}
#endregion
}
}

@ -60,6 +60,7 @@
<Compile Include="DB\clsDokumentstatus.cs" />
<Compile Include="DB\clsDokumenttyp.cs" />
<Compile Include="DB\clsDokument_status.cs" />
<Compile Include="DB\clsEdex_sb_serienbrief.cs" />
<Compile Include="DB\clsKey_tabelle.cs" />
<Compile Include="DB\clsMitarbeiter.cs" />
<Compile Include="DB\clsMyKey_Tabelle.cs" />

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -17,6 +17,7 @@ using System.Runtime.CompilerServices;
namespace Database
{
public class DB
@ -1182,6 +1183,66 @@ namespace Database
}
scmCmdToExecute.Dispose();
}
public int Save_Serienbrief(serienbrief sb)
{
clsEdex_sb_serienbrief dbsb = new clsEdex_sb_serienbrief();
clsConnectionProvider edoka_conn = new clsConnectionProvider();
edoka_conn.sConnectionString = this.connectionstring;
dbsb.cpMainConnectionProvider = edoka_conn;
if (sb.serienbriefnr != 0)
{
dbsb.iSerienbriefnr = sb.serienbriefnr;
dbsb.SelectOne();
}
dbsb.sBezeichnung = sb.bezeichnung;
dbsb.iSerienbriefnr = sb.serienbriefnr;
dbsb.iVerantwortlich = sb.verantwortlich;
dbsb.iPostzustellung = sb.postzustellung;
dbsb.daDokumentdatum = sb.dokumentdatum;
dbsb.iZustaendig = sb.zustaendig;
dbsb.iUnterschriftlinks = sb.unterschriftlinks;
dbsb.iUnterschriftrechts = sb.unterschriftrechts;
dbsb.iTeam = sb.team;
dbsb.daArchivdatum=sb.archivdatum;
dbsb.daTermin = sb.termin;
dbsb.sBemerkung = sb.bemerkung;
dbsb.daErstellt_am = sb.erstellt_am;
dbsb.daMutiert_am = sb.mutiert_am;
dbsb.iMutierer = sb.mutierer;
dbsb.bAktiv = sb.aktiv;
dbsb.iStatus = sb.status;
dbsb.iDokumenttypnr = sb.dokumenttypnr;
dbsb.iWindowwidth = sb.windowwidth;
dbsb.iWindowheight = sb.windowwidth;
dbsb.iTreewidth = sb.treewidth;
dbsb.iInBearbeitung = sb.inBearbeitung;
dbsb.iFehlerhaft = sb.fehlerhaft;
dbsb.iErstellt = sb.erstellt;
dbsb.iGedruckt = sb.gedruckt;
dbsb.iBestaetigt = sb.bestaetigt;
dbsb.iAusgeloest = sb.ausgeloest;
dbsb.iBldossier = sb.bldossier;
edoka_conn.OpenConnection();
if (sb.serienbriefnr == 0)
{
dbsb.Insert();
sb.serienbriefnr = Convert.ToInt32(dbsb.iSerienbriefnr.ToString());
}
else
{
dbsb.Update();
}
edoka_conn.CloseConnection(true);
return sb.serienbriefnr;
}
}
}

@ -1 +1 @@
219844af4b60f39689eba9c54a9ead08897ab32e2a1ed311a4f3958e327ba450
ed5653783e13798ca2360f697ff55f1898ab7aa636a114d66b4bb1a604035ce9

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -1,6 +1,7 @@
using NLog.LayoutRenderers;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@ -37,5 +38,14 @@ namespace Helper
}
}
public Stream GenerateStreamFromString(string s)
{
var stream = new MemoryStream();
var writer = new StreamWriter(stream);
writer.Write(s);
writer.Flush();
stream.Position = 0;
return stream;
}
}
}

Binary file not shown.

Binary file not shown.

@ -46,6 +46,7 @@
<Compile Include="clsDocData.cs" />
<Compile Include="clsdocgendata.cs" />
<Compile Include="clsdok.cs" />
<Compile Include="clsSerienbrief.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="VersandstrassePaket.cs" />
</ItemGroup>

Binary file not shown.

Binary file not shown.

@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Model
{
public class serienbrief
{
public int serienbriefnr { get; set; } = 0;
public string bezeichnung { get; set; } = "";
public int verantwortlich { get; set; } = 0;
public int postzustellung { get; set; } = 0;
public DateTime dokumentdatum { get; set; } = DateTime.Now;
public int zustaendig { get; set; } = 0;
public int unterschriftlinks { get; set; } = 0;
public int unterschriftrechts { get; set; } = 0;
public int team { get; set; } = 0;
public DateTime archivdatum { get; set; } = DateTime.Now;
public DateTime termin { get; set; } = DateTime.Now;
public string bemerkung { get; set; } = "";
public DateTime erstellt_am { get; set; } = DateTime.Now;
public DateTime mutiert_am { get; set; } = DateTime.Now;
public int mutierer { get; set; } = 0;
public bool aktiv { get; set; } = true;
public int status { get; set; } = 0;
public int dokumenttypnr { get; set; } = 0;
public int windowwidth { get; set; } = 0;
public int windowheight { get; set; } = 0;
public int treewidth { get; set; } = 0;
public int fehlerhaft { get; set; } = 0;
public int inBearbeitung { get; set; } = 0;
public int erstellt { get; set; } = 0;
public int gedruckt { get; set; } = 0;
public int bestaetigt { get; set; } = 0;
public int ausgeloest { get; set; } = 0;
public int bldossier { get; set; } = 0;
}
}

@ -1 +1 @@
57ab2ec78deebc61353d3ea8926b1991db41a4c8d288afce107b55baa70cb5fa
360cbe71b183e2000d2a6e9a40a1eec981199b034a930103ec6ff55518a1d358

Binary file not shown.

Binary file not shown.
Loading…
Cancel
Save