You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1097 lines
43 KiB

using Syncfusion.Windows.Forms.Tools;
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 Syncfusion.WinForms.Controls;
using Syncfusion.Windows.Forms.Utils;
using OnDoc.Klassen;
using Syncfusion.Windows.Forms;
using Model;
using OnDoc.DocMgmt;
using System.Xml.Linq;
using Versandstrasse;
using System.IO;
using Syncfusion.Pdf;
using Database;
using System.Net;
using Newtonsoft.Json;
using Windows.Media.Capture;
using Syncfusion.Olap.MDXQueryParser;
namespace OnDoc.Versandstrasse
{
public partial class Versandstrasse : SfForm
{
private List<Versandpaket> pakete = new List<Versandpaket>();
private TreeViewAdvDragHighlightTracker treeViewDragHighlightTracker = null;
private TreeNodeAdv currentSourceNode;
private bool serienbrief = false;
private serienbrief sb;
private bool direktversenden = false;
public Versandstrasse(List<Versandpaket> pakete)
{
InitializeComponent();
this.treeViewAdv1.AutoScrolling = ScrollBars.Both;
this.Style.TitleBar.BackColor = Theaming.Titelbar();
this.Style.TitleBar.ForeColor = Theaming.TitelFontColor();
this.Style.ShadowOpacity = Theaming.ShadowOpacity;
this.Style.InactiveShadowOpacity = Theaming.InactivShadowOpacity;
this.treeViewDragHighlightTracker = new TreeViewAdvDragHighlightTracker(this.treeViewAdv1);
this.treeViewDragHighlightTracker.QueryAllowedPositionsForNode +=
new QueryAllowedPositionsEventHandler(this.TreeDragDrop_QueryAllowedPositionsForNode);
this.treeViewDragHighlightTracker.QueryDragInsertInfo +=
new QueryDragInsertInfoEventHandler(treeViewDragHighlightTracker_QueryDragInsertInfo);
this.pakete = pakete;
this.serienbrief = pakete[0].isSerienbrief;
if (serienbrief)
{
this.tsbtnDruckPaketNew.Enabled = false;
this.TabControlDokuments.TabPages[1].Enabled = false;
this.sb = pakete[0].sb;
this.btnPrepare.Text = "Versand prüfen";
}
else
{
tsbtnDruckPaketNew.Enabled = true;
}
}
private void load_adressen()
{
bool hasprivateaddresses = false;
DB db = new DB(AppParams.connectionstring);
db.Get_Tabledata("Select * from Antwortadresse_mitarbeiter order by reihenfolge", false, true);
if (db.dsdaten.Tables[0].Rows.Count > 0)
{
hasprivateaddresses = true;
foreach (System.Data.DataRow dr in db.dsdaten.Tables[0].Rows)
{
TreeNodeAdv node = new TreeNodeAdv();
node.Text = dr["bezeichnung"].ToString();
node.TagObject = dr;
treeViewAdvAdresse.Nodes.Add(node);
}
TreeNodeAdv stdnode = new TreeNodeAdv();
stdnode.Text = "Standard-Adressen";
treeViewAdvAdresse.Nodes.Add(stdnode);
treeViewAdvAdresse.SelectedNode = stdnode;
}
db.Get_Tabledata("Select * from Antwortadresse order by bezeichnung", false, true);
foreach (System.Data.DataRow dr in db.dsdaten.Tables[0].Rows)
{
TreeNodeAdv node = new TreeNodeAdv();
node.Text = dr["bezeichnung"].ToString();
node.TagObject = dr;
if (hasprivateaddresses) { treeViewAdvAdresse.SelectedNode.Nodes.Add(node); } else { treeViewAdvAdresse.Nodes.Add(node); }
}
treeViewAdvAdresse.SelectedNode = treeViewAdvAdresse.Nodes[0];
treeViewAdvAdresse.Enabled = false;
db = null;
}
private void Versandstrasse_Load(object sender, EventArgs e)
{
Reload_Tree();
load_adressen();
}
private void Reload_Tree()
{
if (serienbrief)
{
TreeNodeAdv DruckJobSB;
DruckJobSB = new TreeNodeAdv();
DruckJobSB.Text = "Serienbrief";
DruckJobSB.Tag = "Druckpaket";
DruckJobSB.TagObject = pakete[0];
treeViewAdv1.Nodes.Add(DruckJobSB);
populate_serienbriefe();
treeViewAdv1.ExpandAll();
return;
}
treeViewAdv1.Nodes.Clear();
TreeNodeAdv DruckJob;
DB db = new DB(AppParams.connectionstring);
for (int i = 0; i < pakete.Count; i++)
{
db.Get_Tabledata("Select bkpar00 from partner where nrpar00=" + pakete[i].partnernr.ToString(), false, true);
DruckJob = new TreeNodeAdv();
DruckJob.Text = "Versand-Couvert - " + db.dsdaten.Tables[0].Rows[0][0].ToString();
DruckJob.Tag = "Druckpaket";
//pakete[i].partnernr = i;
DruckJob.TagObject = pakete[i];
set_nodeimage(DruckJob, 0);
treeViewAdv1.Nodes.Add(DruckJob);
PopulateDocs(pakete[i], ref DruckJob);
}
db.Get_Tabledata("Select * from [applikation] where applikationsnr = 1", false, true);
if (Convert.ToBoolean(db.dsdaten.Tables[0].Rows[0]["Showlogin"]) == true) { button3.Visible = true; } else { button3.Visible = false; }
db = null;
treeViewAdv1.ExpandAll();
foreach (TreeNodeAdv node in treeViewAdv1.Nodes)
{
if (node.Level == 1) { Verify_Couvert(node); }
}
}
private void set_nodeimage(TreeNodeAdv node, int img)
{
node.LeftImageIndices = null;
node.LeftImageIndices = new int[] { img };
}
private void Verify_Couverts()
{
foreach (TreeNodeAdv node in treeViewAdv1.Nodes)
{
if (node.Level == 1) { Verify_Couvert(node); }
}
}
private bool Verify_Couvert(TreeNodeAdv node)
{
Versandpaket vp = node.TagObject as Versandpaket;
if (vp.isSerienbrief)
{
set_nodeimage(node, 1);
return true;
}
DB db = new DB(AppParams.connectionstring);
if (vp.partnernr == 0 && node.Nodes.Count==1)
{
TreeNodeAdv tn = node.Nodes[0];
db.Get_Tabledata("SELECT dbo.Partner.NRPAR00, dbo.Partner.BKPAR00 FROM dbo.dokument INNER JOIN dbo.Partner ON dbo.dokument.nrpar00 = dbo.Partner.NRPAR00 WHERE dbo.dokument.dokumentid='" + tn.Tag + "'", false, true);
node.Text = node.Text + " - " + db.dsdaten.Tables[0].Rows[0][0].ToString() + " " + db.dsdaten.Tables[0].Rows[0][0].ToString();
vp.partnernr = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0][0]);
}
if (chkGAS.Checked && txtadresse.Text == "")
{
return false;
}
int currentbp = vp.partnernr;
//node.LeftImageIndices = new int[] { 0 };
int nodecounter = 0;
int anzbp = 1;
bool versandbereit = true;
foreach (TreeNodeAdv dokumentnode in node.Nodes)
{
//node.LeftImageIndices = new int[] { 0 };
db.Get_Tabledata("SELECT dbo.dokument.nrpar00, dbo.dokument.dokumentid, isnull(dbo.dokumenttyp.Versandstrasse_moeglich,0) as vsm, isnull(dbo.dokumenttyp.versandstrasse_firstdoc,0) as firstdoc FROM dbo.dokument INNER JOIN " +
" dbo.dokumenttyp ON dbo.dokument.dokumenttypnr = dbo.dokumenttyp.dokumenttypnr where dbo.dokument.dokumentid='" + dokumentnode.Tag + "'", false, true);
//BP-Verifikation
if (currentbp != Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["nrpar00"]))
{
currentbp = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["nrpar00"]);
anzbp = anzbp + 1;
}
//Versandstrasse möglich
if (Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["vsm"]) == 0)
{
set_nodeimage(dokumentnode, 0);
versandbereit = false;
}
else
{
if (Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["firstdoc"]) == 0)
{
if (nodecounter == 0) { set_nodeimage(dokumentnode, 4);versandbereit = false; }
else
{
set_nodeimage(dokumentnode, 5);
}
}
}
if (node.Nodes.Count == 0)
{
versandbereit = false;
}
nodecounter++;
}
if (node.Nodes.Count < 1) { versandbereit = false; }
if (anzbp > 1) { versandbereit = false; }
if (versandbereit == true)
{
set_nodeimage(node, 1);
return true;
}
else
{
set_nodeimage(node, 0);
return false;
}
}
private void populate_serienbriefe()
{
foreach (Versanddokument vd in pakete[0].Dokument)
{
TreeNodeAdv tn = new TreeNodeAdv();
tn.Text = vd.DokumentID + " - " + vd.Bezeichnung;
tn.Tag = vd.dokument;
set_nodeimage(tn, 3);
treeViewAdv1.Nodes[0].Nodes.Add(tn);
}
}
private void PopulateDocs(Versandpaket paket, ref TreeNodeAdv parentnode)
{
DB db = new DB(AppParams.connectionstring);
TreeNodeAdv dokumentnode;
for (int i = 0; i < paket.Dokument.Count; i++)
{
dokumentnode = new TreeNodeAdv();
dokumentnode.Text = paket.Dokument[i].Bezeichnung + " (" + paket.Dokument[i].Partnernr + ")";
dokumentnode.Tag = paket.Dokument[i].DokumentID;
dokumentnode.TagObject = paket.Dokument[i];
reserve_vs_dokument(dokumentnode.Tag.ToString(), 3);
db.Get_Tabledata("SELECT dbo.dokument.dokumentid, isnull(dbo.dokumenttyp.Versandstrasse_moeglich,0) as vsm, isnull(dbo.dokumenttyp.versandstrasse_firstdoc,0) as firstdoc FROM dbo.dokument INNER JOIN " +
" dbo.dokumenttyp ON dbo.dokument.dokumenttypnr = dbo.dokumenttyp.dokumenttypnr where dbo.dokument.dokumentid='" + dokumentnode.Tag + "'", false, true);
if (Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["firstdoc"]) == 0)
{
set_nodeimage(dokumentnode, 5);
}
else
{
set_nodeimage(dokumentnode, 3);
}
if (Convert.ToInt32(db.dsdaten.Tables[0].Rows[0]["vsm"]) == 0)
{
set_nodeimage(dokumentnode, 0);
}
else
{
//dokumentnode.LeftImageIndices = new int[] { 3};
}
parentnode.Nodes.Add(dokumentnode);
}
}
#region "Treeview"
private void treeViewAdv1_DragDrop(object sender, DragEventArgs e)
{
try
{
TreeViewAdv treeView = sender as TreeViewAdv;
TreeNodeAdv sourceNode = (TreeNodeAdv)e.Data.GetData(typeof(TreeNodeAdv));
TreeNodeAdv destinationNode = this.treeViewDragHighlightTracker.HighlightNode;
TreeViewDropPositions dropPosition = this.treeViewDragHighlightTracker.DropPosition;
this.treeViewDragHighlightTracker.ClearHighlightNode();
this.currentSourceNode = null;
if (destinationNode != null)
{
switch (dropPosition)
{
case TreeViewDropPositions.AboveNode:
sourceNode.Move(destinationNode, NodePositions.Previous);
break;
case TreeViewDropPositions.BelowNode:
sourceNode.Move(destinationNode, NodePositions.Next);
break;
case TreeViewDropPositions.OnNode:
sourceNode.Move(destinationNode.Nodes);
destinationNode.Expand();
break;
}
}
treeView.SelectedNode = sourceNode;
Verify_Couverts();
}
catch { }
}
private void treeViewAdv1_DragLeave(object sender, EventArgs e)
{
this.treeViewDragHighlightTracker.ClearHighlightNode();
}
private void treeViewAdv1_DragOver(object sender, DragEventArgs e)
{
bool droppable = true;
TreeNodeAdv destinationNode = null;
TreeViewAdv treeView = sender as TreeViewAdv;
Point ptInTree = treeView.PointToClient(new Point(e.X, e.Y));
this.currentSourceNode = null;
if (e.Data.GetDataPresent(typeof(TreeNodeAdv)))
{
destinationNode = treeView.GetNodeAtPoint(ptInTree);
TreeNodeAdv sourceNode = (TreeNodeAdv)e.Data.GetData(typeof(TreeNodeAdv));
this.currentSourceNode = sourceNode;
droppable = this.CanDrop(sourceNode, destinationNode);
//if (droppable == true) { if (destinationNode.Tag.ToString() != "Druckpaket") { droppable = false; } }
}
else
droppable = false;
if (droppable)
e.Effect = DragDropEffects.Move;
else
e.Effect = DragDropEffects.None;
this.treeViewDragHighlightTracker.SetHighlightNode(destinationNode, ptInTree);
}
private bool CanDrop(TreeNodeAdv sourceNode, TreeNodeAdv destinationNode)
{
TreeNodeAdv xdestinationNode = this.treeViewDragHighlightTracker.HighlightNode;
TreeViewDropPositions dropPosition = this.treeViewDragHighlightTracker.DropPosition;
if (destinationNode == null || destinationNode == sourceNode)
return false;
else
{
try
{
if (xdestinationNode.Level == 1 && dropPosition != TreeViewDropPositions.OnNode)
{
return false;
}
if (xdestinationNode.Level == 2) { return true; }
}
catch { }
return true;
}
}
private void treeViewAdv1_ItemDrag(object sender, ItemDragEventArgs e)
{
TreeViewAdv treeViewAdv = sender as TreeViewAdv;
TreeNodeAdv[] nodes = e.Item as TreeNodeAdv[];
TreeNodeAdv node = nodes[0];
{
DragDropEffects result = treeViewAdv.DoDragDrop(node, DragDropEffects.Move);
}
}
private bool IsDruckPaket(TreeNodeAdv node)
{
int i = -1;
bool numeric = int.TryParse(node.Tag.ToString(), out i);
if (node.Tag.ToString() == "Druckpaket") { return true; } else { return false; }
}
private void treeViewDragHighlightTracker_QueryDragInsertInfo(object sender, QueryDragInsertInfoEventArgs args)
{
args.DragInsertColor = Color.Red;
}
private void TreeDragDrop_QueryAllowedPositionsForNode(object sender, QueryAllowedPositionsEventArgs e)
{
if (!this.IsDruckPaket(e.HighlightNode))
{
if (e.HighlightNode != this.currentSourceNode)
e.AllowedPositions = TreeViewDropPositions.AboveNode | TreeViewDropPositions.BelowNode;
else
e.AllowedPositions = TreeViewDropPositions.None;
this.treeViewDragHighlightTracker.EdgeSensitivityOnTop = e.HighlightNode.Bounds.Height / 2;
e.ShowSelectionHighlight = false;
}
else
{
this.treeViewDragHighlightTracker.EdgeSensitivityOnTop = e.HighlightNode.Bounds.Height / 4;
e.ShowSelectionHighlight = false;
}
}
#endregion
private void tsbtnDruckPaketNew_Click(object sender, EventArgs e)
{
Versandpaket newpaket = new Versandpaket();
newpaket.PaketNr = (treeViewAdv1.Nodes.Count + 1).ToString();
newpaket.Versandoption = "B2_POST";
newpaket.GAS = "";
newpaket.GASAdresse = "";
newpaket.Mitteilung = "";
newpaket.Dokument = new List<Versanddokument>();
string NodeText = "Versand-Couvert " + (treeViewAdv1.Nodes.Count + 1).ToString();
TreeNodeAdv drucknode = new TreeNodeAdv();
drucknode.Text = NodeText;
drucknode.Tag = "Druckpaket";
drucknode.TagObject = newpaket;
pakete.Add(newpaket);
treeViewAdv1.Nodes.Add(drucknode);
}
private void treeViewAdv1_NodeMouseClick(object sender, TreeViewAdvMouseClickEventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
Versandpaket paket = treeViewAdv1.SelectedNode.TagObject as Versandpaket;
//if (rbversandoption1.Checked) { paket.Versandoption = "1"; }
//if (rbversandoption2.Checked) { paket.Versandoption = "2"; }
//if (rbversandoption3.Checked) { paket.Versandoption = "3"; }
//if (chkGAS.Checked) { paket.GAS = "1"; } else { paket.GAS = "0"; }
//try { paket.GASAdresse = lbgasadresse.SelectedIndex.ToString(); } catch { paket.GASAdresse= "0"; }
// paket.verified = true;
//treeViewAdv1.SelectedNode.TagObject = paket;
//pakete.paket.Add(paket);
// Reload_Tree();
}
private void btnSend_Click(object sender, EventArgs e)
{
Cursor.Current = Cursors.WaitCursor;
if (serienbrief)
{
clsVersandstrasse vs = new clsVersandstrasse();
foreach (TreeNodeAdv tn in treeViewAdv1.Nodes[0].Nodes)
{
tn.TagObject = vs.Prepare_PDF(tn.Text.ToString(), AppParams.tempdir, AppParams.connectionstring, AppParams.RESTURI, AppParams.apikey, Application.StartupPath, null, sb, tn.Tag.ToString());
}
vs = null;
panelVerify.Visible = false;
panelverifysb.Visible = true;
btnsendserienbrief.Visible = true;
btnSendFinal.Visible = false;
return;
}
panelPrepare.Visible = true;
panelverifysb.Visible = false;
btnsendserienbrief.Visible = false;
btnSendFinal.Visible = true;
Application.DoEvents();
Cursor = Cursors.WaitCursor;
try
{
Versandpaket paket = treeViewAdv1.SelectedNode.TagObject as Versandpaket;
foreach (TreeNodeAdv tn in treeViewAdv1.SelectedNode.Nodes)
{
foreach (Versanddokument vsdok in paket.Dokument)
{
if (vsdok.DokumentID == tn.Tag.ToString())
{
clsVersandstrasse vs = new clsVersandstrasse();
vsdok.dokument = vs.Prepare_PDF(vsdok.DokumentID.ToString(), AppParams.tempdir, AppParams.connectionstring, AppParams.RESTURI, AppParams.apikey, Application.StartupPath);
}
}
}
//foreach (Versanddokument vsdok in paket.Dokument)
//{
// clsVersandstrasse vs = new clsVersandstrasse();
// vsdok.dokument = vs.Prepare_PDF(vsdok.DokumentID.ToString(), AppParams.tempdir, AppParams.connectionstring,AppParams.RESTURI,AppParams.apikey, Application.StartupPath);
// //string dok = vs.Prepare_PDF(vsdok.DokumentID.ToString(), AppParams.tempdir, AppParams.connectionstring);
//}
Stream[] streams = new Stream[paket.Dokument.Count];
int i = 0;
foreach (TreeNodeAdv tn in treeViewAdv1.SelectedNode.Nodes)
{
foreach (Versanddokument vsdok in paket.Dokument)
{
if (vsdok.DokumentID == tn.Tag.ToString())
{
var stream = new MemoryStream(Convert.FromBase64String(vsdok.dokument));
streams[i] = stream;
i++;
}
}
}
//foreach (Versanddokument vsdok in paket.Dokument)
//{
// var stream = new MemoryStream(Convert.FromBase64String(vsdok.dokument));
// streams[i] = stream;
// i++;
//}
string stapel = save_stapel(ref streams);
paket.finaldoc = stapel;
var finalestream = new MemoryStream(Convert.FromBase64String(stapel));
this.pdfViewerControl1.Load(finalestream);
for (int i1 = 0; i1 < streams.Length; i1++)
{
streams[i1].Close();
streams[i1].Dispose();
streams[i1] = null;
}
streams = null;
treeViewAdv1.SelectedNode.TagObject = paket;
panelVerify.Visible = true;
}
catch { }
panelPrepare.Visible = false;
Cursor = Cursors.Default;
Application.DoEvents();
}
private string save_stapel(ref Stream[] streams)
{
try
{
PdfDocument finalDoc = new PdfDocument();
PdfDocumentBase.Merge(finalDoc, streams);
MemoryStream outputStream = new MemoryStream();
finalDoc.Save(outputStream);
byte[] bytes;
bytes = outputStream.ToArray();
return Convert.ToBase64String(bytes);
}
catch { return ""; }
}
private void chkGAS_CheckedChanged(object sender, EventArgs e)
{
if (chkGAS.Checked)
{
treeViewAdvAdresse.Enabled = true;
treeViewAdvAdresse.SelectedNode = treeViewAdvAdresse.Nodes[0];
treeViewAdvAdresse_AfterSelect(sender, e);
Versandpaket vp = treeViewAdv1.SelectedNode.TagObject as Versandpaket;
vp.GAS = "1";
treeViewAdv1.SelectedNode.TagObject = vp;
}
else
{
treeViewAdvAdresse.Enabled = false;
Versandpaket vp = treeViewAdv1.SelectedNode.TagObject as Versandpaket;
vp.GAS = "";
treeViewAdv1.SelectedNode.TagObject = vp;
}
}
private void button3_Click(object sender, EventArgs e)
{
direktversenden = true;
btnSendFinal_Click(sender, e);
direktversenden = false;
this.panelVerify.Visible = false;
}
private void btnSendFinal_Click(object sender, EventArgs e)
{
if (serienbrief)
{
Versandpaket svp = treeViewAdv1.Nodes[0].TagObject as Versandpaket;
foreach (TreeNodeAdv node in treeViewAdv1.Nodes[0].Nodes)
{
svp.finaldoc = node.TagObject.ToString();
svp.send_onbase_doc = true;
string _sqlWhere = @"dokumentid = '" + node.Text.Substring(0,22) + "'";
string dokumentid = node.Text.Substring(0, 22);
DataTable _newDataTable = sb.dsempfaenger.Tables[0].Select(_sqlWhere, "").CopyToDataTable();
svp.partnernr = Convert.ToInt32(_newDataTable.Rows[0]["partnernr"].ToString());
Versanddokument vd = new Versanddokument(dokumentid, "", svp.partnernr.ToString());
vd.dokument = node.TagObject.ToString();
vd.inteintragnr = Convert.ToInt32(_newDataTable.Rows[0]["inteintragnr"].ToString());
svp.Dokument.Add(vd);
DB db = new DB(AppParams.connectionstring);
db.clear_parameter();
db.add_parameter("@tgnummer", AppParams.currenttgnummer);
db.add_parameter("@partnernr", svp.partnernr.ToString());
db.add_parameter("@gasadresse", svp.GASAdresse);
db.add_parameter("@versandoption", svp.Versandoption);
db.add_parameter("@dokumente", node.Text + " / " + sb.serienbriefnr.ToString() + "_" + _newDataTable.Rows[0]["inteintragnr"].ToString());
db.Get_Tabledata("Ondoc_Insert_Versandprotokoll", true, false);
svp.protokollid = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0][0]);
db = null;
send_vs(ref svp, false);
}
pdfViewerControl1.Unload();
return;
}
panelVerify.Visible = false;
Versandpaket vp = treeViewAdv1.SelectedNode.TagObject as Versandpaket;
vp.verified = true;
treeViewAdv1.SelectedNode.TagObject = vp;
panelVerify.Visible = false;
pakete.Remove(vp);
SendTo_Versandstrasse();
pdfViewerControl1.Unload();
}
private void SendTo_Versandstrasse()
{
Versandpaket vp = treeViewAdv1.SelectedNode.TagObject as Versandpaket;
vp.send_onbase_doc = true;
DB db = new DB(AppParams.connectionstring);
string dokumente = "";
if (vp.Dokument.Count > 1) { vp.send_onbase_doc = false; }
else {
foreach (Versanddokument vd in vp.Dokument)
{
dokumente = dokumente + vd.DokumentID + ";";
string sql = "SELECT dbo.dokumenttyp.ErstellungInOffice FROM dbo.dokument INNER JOIN dbo.dokumenttyp ON dbo.dokument.dokumenttypnr = dbo.dokumenttyp.dokumenttypnr WHERE (dbo.dokument.dokumentid = '" + vd.DokumentID + "')";
db.Get_Tabledata(sql, false, true);
if (db.dsdaten.Tables[0].Rows[0][0].ToString() == "True")
{
vd.dokument = "";
vp.send_onbase_doc = false;
}
}
}
db.clear_parameter();
db.add_parameter("@tgnummer", AppParams.currenttgnummer);
db.add_parameter("@partnernr", vp.partnernr.ToString());
db.add_parameter("@gasadresse", vp.GASAdresse);
db.add_parameter("@versandoption", vp.Versandoption);
db.add_parameter("@dokumente", dokumente);
db.Get_Tabledata("Ondoc_Insert_Versandprotokoll", true, false);
vp.protokollid = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0][0]);
db = null;
send_vs(ref vp);
}
private void send_vs(ref Versandpaket vp, bool showmessage = true)
{
string jsonstring = JsonConvert.SerializeObject(vp);
//vp.send_onbase_doc = true;
if (!direktversenden)
{
DB db = new DB(AppParams.connectionstring);
db.clear_parameter();
db.add_parameter("@ersteller", AppParams.CurrentMitarbeiter.ToString());
db.Get_Tabledata("ondoc_create_versandpaket", true, false);
int paketid = Convert.ToInt32(db.dsdaten.Tables[0].Rows[0][0]);
db.Get_Tabledata_for_Update("Select top 1 * from Ondoc_Versandstrasse_Paket where id=" + paketid.ToString(), false, true);
DataRow dr = db.daten.Tables[0].Rows[0];
dr[2] = jsonstring;
dr["aktiv"] = 1;
// db.daten.Tables[0].Rows.Add(dr);
db.Update_Data();
db.daten.Tables.Clear();
db.Get_Tabledata_for_Update("Select * from ondoc_versandstrasse_paket_dokumentid where couvert_id = -1", false, true);
foreach (Versanddokument vd in vp.Dokument)
{
DataRow dr1 = db.daten.Tables[0].NewRow();
dr1[1] = paketid;
dr1[2] = vd.DokumentID;
dr1[3] = 1;
db.daten.Tables[0].Rows.Add(dr1);
}
db.Update_Data();
treeViewAdv1.Nodes.Remove(treeViewAdv1.SelectedNode);
return;
}
string URL = AppParams.RESTURI + "api/Send_Versandstrasse";
panelVerify.Visible = false;
WebRequest request;
var data = Encoding.UTF8.GetBytes(jsonstring);
request = WebRequest.Create(URL);
request.ContentLength = data.Length;
request.ContentType = "application/json";
request.Method = "POST";
request.Headers["Authorization"] = "Bearer " + AppParams.apikey;
string response;
try
{
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(data, 0, data.Length);
requestStream.Close();
using (Stream responseStream = request.GetResponse().GetResponseStream())
{
using (var reader = new StreamReader(responseStream))
{
response = reader.ReadToEnd();
}
if (response.ToString().Contains("*archiviert"))
{
if (showmessage)
{
MessageBox.Show("Paket an Versandstrasse übergeben", "Versandstrasse", MessageBoxButtons.OK, MessageBoxIcon.Information);
treeViewAdv1.SelectedNode.Remove();
}
}
}
}
return;
}
catch { }
}
private void rbapost_CheckedChanged(object sender, EventArgs e)
{
string versandoption = "";
if (rbapost.Checked) { versandoption = "A_POST"; }
if (rbb1post.Checked) { versandoption = "B1_POST"; }
if (rbb2post.Checked) { versandoption = "B2_POST"; }
Versandpaket vp = treeViewAdv1.SelectedNode.TagObject as Versandpaket; ;
vp.Versandoption = versandoption;
treeViewAdv1.SelectedNode.TagObject = vp;
}
private void treeViewAdvAdresse_AfterSelect(object sender, EventArgs e)
{
try
{
Versandpaket vp = treeViewAdv1.SelectedNode.TagObject as Versandpaket;
System.Data.DataRow dr = treeViewAdvAdresse.SelectedNode.TagObject as System.Data.DataRow;
DataRow dr2 = treeViewAdvAdresse.SelectedNode.TagObject as DataRow;
vp.GASAdresse = dr2["einzeilig"].ToString();
treeViewAdv1.SelectedNode.TagObject = vp;
txtadresse.Text = "";
txtadresse.Text = dr["zeile1"].ToString() + Environment.NewLine;
txtadresse.Text = txtadresse.Text + dr["zeile2"].ToString() + Environment.NewLine;
txtadresse.Text = txtadresse.Text + dr["zeile3"].ToString() + Environment.NewLine;
txtadresse.Text = txtadresse.Text + dr["zeile4"].ToString() + Environment.NewLine;
txtadresse.Text = txtadresse.Text + dr["zeile5"].ToString() + Environment.NewLine;
txtadresse.Text = txtadresse.Text + dr["zeile6"].ToString() + Environment.NewLine;
try
{
txtadresse.Text = txtadresse.Text + dr["zeile7"].ToString() + Environment.NewLine;
}
catch { }
}
catch {
txtadresse.Text = "";
}
}
private void treeViewAdvAdresse_NodeMouseClick(object sender, TreeViewAdvMouseClickEventArgs e)
{
try
{
Versandpaket vp = treeViewAdv1.SelectedNode.TagObject as Versandpaket;
System.Data.DataRow dr = treeViewAdvAdresse.SelectedNode.TagObject as System.Data.DataRow;
DataRow dr2 = treeViewAdvAdresse.SelectedNode.TagObject as DataRow;
vp.GASAdresse = dr2["einzeilig"].ToString();
treeViewAdv1.SelectedNode.TagObject = vp;
}
catch { }
}
private void treeViewAdv1_AfterSelect(object sender, EventArgs e)
{
try
{
Cursor.Current = Cursors.WaitCursor;
TreeNodeAdv node = treeViewAdv1.SelectedNode;
if (node.Level == 1)
{
if (Verify_Couvert(node) == false)
{
GrpPaketDetails.Enabled = false;
return;
}
GrpPaketDetails.Enabled = true;
Versandpaket paket = node.TagObject as Versandpaket; ;
switch (paket.Versandoption)
{
case "A_POST":
rbapost.Checked = true; break;
case "B1_POST":
rbb1post.Checked = true; break;
case "B2_POST":
rbb2post.Checked = true; break;
default:
rbb2post.Checked = true; break;
}
if (paket.GAS != "")
{
this.chkGAS.Checked = true;
}
else
{ this.chkGAS.Checked = false; }
if (paket.GASAdresse.ToString() != "")
{
foreach (TreeNodeAdv tn in treeViewAdvAdresse.Nodes)
{
if (tn.Text == paket.GASAdresse) { treeViewAdvAdresse.SelectedNode = tn; }
}
}
}
else
{
if (tscheckboxpreview.Checked)
{
clsVersandstrasse vs = new clsVersandstrasse();
string dok = "";
if (serienbrief)
{
dok = vs.Prepare_PDF(node.Text.ToString(), AppParams.tempdir, AppParams.connectionstring, AppParams.RESTURI, AppParams.apikey, Application.StartupPath, null, sb, node.Tag.ToString(), this.tschkcouvertpos.Checked);
}
else
{
dok = vs.Prepare_PDF(node.Tag.ToString(), AppParams.tempdir, AppParams.connectionstring, AppParams.RESTURI, AppParams.apikey, Application.StartupPath, null,null,"",this.tschkcouvertpos.Checked);
}
var stream = new MemoryStream(Convert.FromBase64String(dok));
this.pdfViewerControl1.Load(stream);
}
GrpPaketDetails.Enabled = false;
}
}
catch { }
finally { Cursor.Current=Cursors.Default; }
}
private void button2_Click(object sender, EventArgs e)
{
panelVerify.Visible = false;
}
private void contextMenuStrip1_Click(object sender, EventArgs e)
{
}
private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
}
private void TabControlDokuments_SelectedIndexChanged(object sender, EventArgs e)
{
if (TabControlDokuments.SelectedIndex == 1)
{
Refresh_VersandCouverts();
}
}
private void Refresh_VersandCouverts()
{
DB db = new DB(AppParams.connectionstring);
DB db2 = new DB(AppParams.connectionstring);
db.Get_Tabledata("Select * from ondoc_versandstrasse_paket where aktiv=1 and ersteller=" + AppParams.CurrentMitarbeiter + " and versendet=0", false, true);
treeViewAdvCouverts.Nodes.Clear();
foreach (DataRow dr in db.dsdaten.Tables[0].Rows)
{
Versandpaket vp = JsonConvert.DeserializeObject<Versandpaket>(dr["paket"].ToString());
TreeNodeAdv tn = new TreeNodeAdv();
db2.Get_Tabledata("Select bkpar00 from partner where nrpar00=" + vp.partnernr.ToString(), false, true);
tn.Text = vp.partnernr.ToString() + " - " + db2.dsdaten.Tables[0].Rows[0][0].ToString();
tn.TagObject = vp.finaldoc;
tn.Tag = dr[0].ToString();
if (vp.Versandoption.ToString() == "A_POST") { set_nodeimage(tn, 0); }
if (vp.Versandoption.ToString() == "B2_POST") { set_nodeimage(tn, 1); }
if (vp.Versandoption.ToString() == "B2_POST") { set_nodeimage(tn, 2); }
treeViewAdvCouverts.Nodes.Add(tn);
foreach (Versanddokument vd in vp.Dokument)
{
TreeNodeAdv tn2 = new TreeNodeAdv();
tn2.Text = vd.Bezeichnung;
tn2.Tag = vd.DokumentID;
tn2.TagObject = vd.dokument;
tn.Nodes.Add(tn2);
}
}
db = null;
db2 = null;
}
private void treeViewAdvCouverts_AfterSelect(object sender, EventArgs e)
{
try
{
TreeNodeAdv node = treeViewAdvCouverts.SelectedNode;
var stream = new MemoryStream(Convert.FromBase64String(node.TagObject.ToString()));
this.pdfViewerControl2.Load(stream);
stream = null;
}
catch { }
}
private void versandCouvertLöschenToolStripMenuItem_Click(object sender, EventArgs e)
{
DB db = new DB(AppParams.connectionstring);
foreach (TreeNodeAdv tn in treeViewAdvCouverts.SelectedNodes)
{
db.Exec_SQL("Update ondoc_versandstrasse_paket set geloescht=getdate(), aktiv=0, geloescht_durch=" + AppParams.CurrentMitarbeiter.ToString() + " where id=" + tn.Tag.ToString());
}
db = null;
pdfViewerControl2.Unload();
Refresh_VersandCouverts();
}
private void versandCouvertÖffnenbearbeitenToolStripMenuItem_Click(object sender, EventArgs e)
{
if (treeViewAdvCouverts.SelectedNode.Level != 1) { return; }
int id = Convert.ToInt32(treeViewAdvCouverts.SelectedNode.Tag);
DB db = new DB(AppParams.connectionstring);
db.Get_Tabledata("Select * from Ondoc_Versandstrasse_Paket where id=" +id.ToString(), false, true);
Versandpaket vp = JsonConvert.DeserializeObject<Versandpaket>(db.dsdaten.Tables[0].Rows[0]["Paket"].ToString());
pakete.Add(vp);
foreach (TreeNodeAdv tn in treeViewAdvCouverts.SelectedNodes)
{
db.Exec_SQL("Update ondoc_versandstrasse_paket set geloescht=getdate(), aktiv=0, geloescht_durch=" + AppParams.CurrentMitarbeiter.ToString() + " where id=" + id.ToString());
}
db = null;
treeViewAdvCouverts.Nodes.Remove(treeViewAdvCouverts.SelectedNode);
pdfViewerControl2.Unload();
Reload_Tree();
this.TabControlDokuments.SelectedIndex = 0;
}
private void löschenToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
TreeNodeAdv node = treeViewAdv1.SelectedNode;
if (node.Level > 1)
{
node = node.Parent;
reserve_vs_dokument(node.Tag.ToString(), 2);
treeViewAdv1.SelectedNode.Remove();
Verify_Couvert(node);
}
else
{
foreach (TreeNodeAdv tn in node.Nodes)
{
reserve_vs_dokument(tn.Tag.ToString(), 2);
}
treeViewAdv1.SelectedNode.Remove();
}
}
catch { }
}
private void reserve_vs_dokument(string dokumentid, int fnkt)
{
DB db = new DB(AppParams.connectionstring);
db.clear_parameter();
db.add_parameter("@dokumentid", dokumentid);
db.add_parameter("@mitarbeiter", AppParams.CurrentMitarbeiter.ToString());
db.add_parameter("@fnkt", fnkt.ToString());
db.Get_Tabledata("Ondoc_Handle_Versandstrasse_Reserved_Dokcuments", true, false);
db = null;
}
private void tschkcouvertpos_CheckedChanged(object sender, EventArgs e)
{
treeViewAdv1_AfterSelect(sender, e);
}
private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
if (treeViewAdv1.SelectedNode.Level>1 && treeViewAdv1.SelectedNode.Parent.Text.Contains("Serienbrief"))
{
löschenToolStripMenuItem.Enabled = false;
}
else
{
löschenToolStripMenuItem.Enabled = true;
}
}
private void btnsendserienbrief_Click(object sender, EventArgs e)
{
direktversenden = true;
btnSendFinal_Click(sender, e);
direktversenden = false;
this.panelverifysb.Visible = false;
}
private void button5_Click(object sender, EventArgs e)
{
this.panelverifysb.Visible = false;
}
private void tsbtnpreviewdoc_Click(object sender, EventArgs e)
{
tscheckboxpreview.Checked=tsbtnpreviewdoc.Checked;
if (tsbtnpreviewdoc.Checked == false)
{
this.pdfViewerControl1.Unload();
}
else
{
treeViewAdv1_AfterSelect(sender, e);
}
}
private void tsbtncheckaddress_Click(object sender, EventArgs e)
{
tschkcouvertpos.Checked=tsbtncheckaddress.Checked;
treeViewAdv1_AfterSelect(sender, e);
}
}
}