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
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);
|
|
}
|
|
}
|
|
}
|