partial void DocumentsSet_Updating(Documents entity) { var desc = DocDescriptor.FromByteArray(entity.Data); if (desc != null) { entity.Bezeichnung = desc.Auftragsnummer + " - " + desc.Titel + " vom " + entity.Datum.ToShortDateString(); entity.GeneratedDocument.Documents = entity; entity.GeneratedDocument.Bytes = DocumentGenerator.DocumentToPdf(desc); } }
public static DocDescriptor CreateRechnung(Rechnungen value) { DocDescriptor result = new DocDescriptor(value.Referenznummer, "Rechnung"); result.Adresse = value.Adresse; if (!String.IsNullOrWhiteSpace(value.Rechnungsnummer)) { result.Rechnungsnummer = value.Rechnungsnummer; } if (value.Rechnungsdatum.HasValue) { result.Rechnungsdatum = value.Rechnungsdatum.Value.ToShortDateString(); } if (value.Versanddatum.HasValue) { result.Versanddatum = value.Versanddatum.Value.ToShortDateString(); } if (!String.IsNullOrWhiteSpace(value.Lieferscheinnummer)) { result.Lieferscheinnummer = value.Lieferscheinnummer; } if (value.Lieferkosten.HasValue) { result.Lieferkosten = value.Lieferkosten.Value.ToString("C"); } if (value.Rechnungsbetrag_Brutto.HasValue) { result.Brutto = value.Rechnungsbetrag_Brutto.Value.ToString("C"); } if (value.Mehrwertsteuer.HasValue) { result.Mehrwertsteuer = value.Mehrwertsteuer.Value.ToString("C"); } if (value.Netto_Gesamtbetrag.HasValue) { result.Netto = value.Netto_Gesamtbetrag.Value.ToString("C"); } if (value.Mahnung.GetValueOrDefault(false)) { result.Mahnkosten = value.Mahnkosten.ToString("C"); } foreach (var art in value.ArtikellisteCollection) { result.Positionen.Add((Position)art); } return(result); }
private void ProcessInRechnung() { var inRechnung = this.AuftragsSammlung1.Where(n => n.Status == (int)Bestellstatus.InRechnung); rechnungen = new List <Documents>(); foreach (var item in inRechnung) { DocDescriptor desc = DocDescriptor.CreateRechnung(item); Documents newItem = DocumentsSet.AddNew(); newItem.RechnungsId = item.Id; newItem.KundenId = item.Kunde.Id; newItem.Bezeichnung = desc.Auftragsnummer + " - " + desc.Titel + " vom " + DateTime.Now.ToShortDateString(); newItem.Datum = DateTime.Now; newItem.Data = desc.ToDictionary().Serialize(); rechnungen.Add(newItem); item.RequiresProcessing = false; } }
public static DocDescriptor CreateLieferschein(Rechnungen value) { DocDescriptor result = new DocDescriptor(value.Auftragsnummer, "Lieferschein"); result.Adresse = value.Lieferadresse == null ? value.Adresse : value.Lieferadresse.ToString(); if (!String.IsNullOrWhiteSpace(value.Kunde.Kundennummer)) { result.Kundennummer = value.Kunde.Kundennummer; } if (value.Rechnungsbetrag_Brutto.HasValue) { result.Brutto = value.Rechnungsbetrag_Brutto.Value.ToString("C"); } if (value.Versanddatum.HasValue) { result.Versanddatum = value.Versanddatum.Value.ToShortDateString(); } if (value.Lieferkosten.HasValue) { result.Lieferkosten = value.Lieferkosten.Value.ToString("C"); } if (!String.IsNullOrWhiteSpace(value.Lieferscheinnummer)) { result.Lieferscheinnummer = value.Lieferscheinnummer; } if (value.Mehrwertsteuer.HasValue) { result.Mehrwertsteuer = value.Mehrwertsteuer.Value.ToString("C"); } if (value.Netto_Gesamtbetrag.HasValue) { result.Netto = value.Netto_Gesamtbetrag.Value.ToString("C"); } foreach (var art in value.ArtikellisteCollection) { result.Positionen.Add((Position)art); } return(result); }
partial void Test_Execute() { Rechnungen tmp = new Rechnungen(); tmp.Kunde = new KundenItem() { Anrede = "Herr", Hausnummer = 1, Land = "Deutschland", Nachnahme = "Mustermann", PLZ = 12345, Stadt = "Musterstadt", Straße = "Musterstraße", Vorname = "Max" }; tmp.GetRechnungsNummer(); tmp.Auftragsnummer = tmp.GetAuftragsNummer(); tmp.Bestelldatum = DateTime.Today; tmp.Rechnungsdatum = DateTime.Today; tmp.Lieferdatum = DateTime.Today; tmp.Lieferscheinnummer = "L-0001"; tmp.Lieferkosten = 6M; tmp.Referenznummer = "R-00001"; tmp.Versanddatum = DateTime.Today; tmp.ArtikellisteCollection.Add(new ArtikellisteItem() { Anzahl = 2, Rabatt = 3, ArtikelstammItem = new ArtikelstammItem() { Artikelnummer = "A00001", Artikelbeschreibung = "Testartikel", Vertriebsname = "Testartikel", VK_pro_PK = 10M } }); tmp.ArtikellisteCollection.Add(new ArtikellisteItem() { Anzahl = 1, Rabatt = 0, ArtikelstammItem = new ArtikelstammItem() { Artikelnummer = "A00002", Artikelbeschreibung = "Testartikel 2", Vertriebsname = "Testartikel 2", VK_pro_PK = 19.9M } }); DocDescriptor test = DocDescriptor.CreateRechnung(tmp); byte[] documentBytes = null; using (var dw = Application.Current.CreateDataWorkspace()) { var newDoc = dw.ApplicationData.DocumentsSet.AddNew(); newDoc.Bezeichnung = "Vorlagentest"; newDoc.Datum = DateTime.Now; newDoc.Data = test.ToByteArray(); dw.ApplicationData.SaveChanges(); documentBytes = newDoc.GeneratedDocument.Bytes; newDoc.Delete(); dw.ApplicationData.SaveChanges(); } Refresh(); if (documentBytes != null) { string file = Helper.GetFreeTempFilename("pdf"); File.WriteAllBytes(file, documentBytes); Helper.ShellExecute(file); } }
public static DocDescriptor CreateRechnung(Rechnungen value) { DocDescriptor result = new DocDescriptor(value.Referenznummer, "Rechnung"); result.Adresse = value.Adresse; if (!String.IsNullOrWhiteSpace(value.Rechnungsnummer)) result.Rechnungsnummer = value.Rechnungsnummer; if (value.Rechnungsdatum.HasValue) result.Rechnungsdatum = value.Rechnungsdatum.Value.ToShortDateString(); if (value.Versanddatum.HasValue) result.Versanddatum = value.Versanddatum.Value.ToShortDateString(); if (!String.IsNullOrWhiteSpace(value.Lieferscheinnummer)) result.Lieferscheinnummer = value.Lieferscheinnummer; if (value.Lieferkosten.HasValue) result.Lieferkosten = value.Lieferkosten.Value.ToString("C"); if (value.Rechnungsbetrag_Brutto.HasValue) result.Brutto = value.Rechnungsbetrag_Brutto.Value.ToString("C"); if (value.Mehrwertsteuer.HasValue) result.Mehrwertsteuer = value.Mehrwertsteuer.Value.ToString("C"); if (value.Netto_Gesamtbetrag.HasValue) result.Netto = value.Netto_Gesamtbetrag.Value.ToString("C"); if (value.Mahnung.GetValueOrDefault(false)) result.Mahnkosten = value.Mahnkosten.ToString("C"); foreach (var art in value.ArtikellisteCollection) result.Positionen.Add((Position)art); return result; }
public static DocDescriptor CreateLieferschein(Rechnungen value) { DocDescriptor result = new DocDescriptor(value.Auftragsnummer, "Lieferschein"); result.Adresse = value.Lieferadresse == null ? value.Adresse : value.Lieferadresse.ToString(); if (!String.IsNullOrWhiteSpace(value.Kunde.Kundennummer)) result.Kundennummer = value.Kunde.Kundennummer; if (value.Rechnungsbetrag_Brutto.HasValue) result.Brutto = value.Rechnungsbetrag_Brutto.Value.ToString("C"); if (value.Versanddatum.HasValue) result.Versanddatum = value.Versanddatum.Value.ToShortDateString(); if (value.Lieferkosten.HasValue) result.Lieferkosten = value.Lieferkosten.Value.ToString("C"); if (!String.IsNullOrWhiteSpace(value.Lieferscheinnummer)) result.Lieferscheinnummer = value.Lieferscheinnummer; if (value.Mehrwertsteuer.HasValue) result.Mehrwertsteuer = value.Mehrwertsteuer.Value.ToString("C"); if (value.Netto_Gesamtbetrag.HasValue) result.Netto = value.Netto_Gesamtbetrag.Value.ToString("C"); foreach (var art in value.ArtikellisteCollection) result.Positionen.Add((Position)art); return result; }
internal static byte[] ProcessDocument(DocDescriptor data) { using (MemoryStream ms = CreateTemplate()) { WordprocessingDocument doc = WordprocessingDocument.Open(ms, true); Body body = doc.MainDocumentPart.Document.Body; #region Positions if (data.Positionen.Count > 0) { var table = body.Elements <Table>().FirstOrDefault(n => n.Any(m => m.OuterXml.Contains("MapTableNoHeading"))); var row = table.ChildElements.OfType <TableRow>().LastOrDefault(); var outerXml = row.OuterXml; var rowParas = FindElements <Paragraph>(row).ToArray(); var first = data.Positionen[0]; InsertTextRun(rowParas[0], "1"); InsertTextRun(rowParas[1], first.Artikelnummer); InsertTextRun(rowParas[2], first.Bezeichnung); InsertTextRun(rowParas[3], first.Anzahl.ToString()); InsertTextRun(rowParas[4], first.PosPreis.ToString("C")); InsertTextRun(rowParas[5], first.Preis.ToString("C")); if (data.Positionen.Count > 1) { OpenXmlElement last = row; for (int i = 1; i < data.Positionen.Count; i++) { var newRow = new TableRow(outerXml); last = last.InsertAfterSelf(newRow); var current = data.Positionen[i]; var paras = FindElements <Paragraph>(newRow).ToArray(); InsertTextRun(paras[0], (i + 1).ToString()); InsertTextRun(paras[1], current.Artikelnummer); InsertTextRun(paras[2], current.Bezeichnung); InsertTextRun(paras[3], current.Anzahl.ToString()); InsertTextRun(paras[4], current.PosPreis.ToString("C")); InsertTextRun(paras[5], current.Preis.ToString("C")); } } } #endregion #region Summary var otherTable = body.Elements <Table>().FirstOrDefault(n => n.Any(m => m.OuterXml.Contains("liste2"))); var lieferKostenRow = otherTable.ChildElements.OfType <TableRow>().FirstOrDefault(n => n.InnerText.Contains(L_AMOUNT_TAG)); var mahnKostenRow = otherTable.ChildElements.OfType <TableRow>().FirstOrDefault(n => n.InnerText.Contains(MAHN_TAG)); if (String.IsNullOrWhiteSpace(data.Lieferkosten) && (lieferKostenRow != null)) { lieferKostenRow.RemoveAllChildren(); lieferKostenRow.Remove(); } if (String.IsNullOrWhiteSpace(data.Mahnkosten) && (mahnKostenRow != null)) { mahnKostenRow.RemoveAllChildren(); mahnKostenRow.Remove(); } #endregion #region Replacements foreach (var item in FindElements <Text>(body, n => !String.IsNullOrWhiteSpace(n.Text))) { #region Adress if (item.Text.Contains(ADDRESS_TAG)) { if (data.Adresse == null) { item.Text = item.Text.Replace(ADDRESS_TAG, String.Empty); } else { string[] parts = data.Adresse.Split(new string[] { Environment.NewLine }, StringSplitOptions.None); if (parts.Length == 0) { parts = new string[] { "" } } ; item.Text = item.Text.Replace(ADDRESS_TAG, String.IsNullOrWhiteSpace(data.Adresse) ? String.Empty : parts[0]); OpenXmlElement last = item; for (int i = 1; i < parts.Length; i++) { last = last.InsertAfterSelf(new Break()); last = last.InsertAfterSelf(new Text(parts[i])); } } } #endregion if (item.Text.Contains(A_NR_TAG)) { item.Text = item.Text.Replace(A_NR_TAG, String.IsNullOrWhiteSpace(data.Auftragsnummer) ? "" : data.Auftragsnummer); } if (item.Text.Contains(BRUTTO_TAG)) { item.Text = item.Text.Replace(BRUTTO_TAG, String.IsNullOrWhiteSpace(data.Brutto) ? "" : data.Brutto); } if (item.Text.Contains(R_DATE_TAG)) { item.Text = item.Text.Replace(R_DATE_TAG, String.IsNullOrWhiteSpace(data.Rechnungsdatum) ? "" : data.Rechnungsdatum); } if (item.Text.Contains(L_DATE_TAG)) { item.Text = item.Text.Replace(L_DATE_TAG, String.IsNullOrWhiteSpace(data.Lieferdatum) ? "" : data.Lieferdatum); } if (item.Text.Contains(L_AMOUNT_TAG)) { item.Text = item.Text.Replace(L_AMOUNT_TAG, String.IsNullOrWhiteSpace(data.Lieferkosten) ? "" : data.Lieferkosten); } if (item.Text.Contains(L_NR_TAG)) { item.Text = item.Text.Replace(L_NR_TAG, String.IsNullOrWhiteSpace(data.Lieferscheinnummer) ? "" : data.Lieferscheinnummer); } if (item.Text.Contains(TAX_TAG)) { item.Text = item.Text.Replace(TAX_TAG, String.IsNullOrWhiteSpace(data.Mehrwertsteuer) ? "" : data.Mehrwertsteuer); } if (item.Text.Contains(NETTO_TAG)) { item.Text = item.Text.Replace(NETTO_TAG, String.IsNullOrWhiteSpace(data.Netto) ? "" : data.Netto); } if (item.Text.Contains(R_NR_TAG)) { item.Text = item.Text.Replace(R_NR_TAG, String.IsNullOrWhiteSpace(data.Rechnungsnummer) ? "" : data.Rechnungsnummer); } if (item.Text.Contains(TITLE_TAG)) { item.Text = item.Text.Replace(TITLE_TAG, String.IsNullOrWhiteSpace(data.Titel) ? "" : data.Titel); } if (item.Text.Contains(V_DATE_TAG)) { item.Text = item.Text.Replace(V_DATE_TAG, String.IsNullOrWhiteSpace(data.Versanddatum) ? "" : data.Versanddatum); } if (item.Text.Contains(K_NR_TAG)) { item.Text = item.Text.Replace(V_DATE_TAG, String.IsNullOrWhiteSpace(data.Kundennummer) ? "" : data.Kundennummer); } if (item.Text.Contains(MAHN_TAG)) { item.Text = item.Text.Replace(MAHN_TAG, String.IsNullOrWhiteSpace(data.Mahnkosten) ? "" : data.Mahnkosten); } if (item.Text.Contains(L_NR_WORD)) { if (String.IsNullOrWhiteSpace(data.Lieferscheinnummer)) { item.Text = item.Text.Replace(L_NR_WORD, ""); } } if (item.Text.Contains(V_DATE_WORD)) { if (String.IsNullOrWhiteSpace(data.Versanddatum)) { item.Text = item.Text.Replace(V_DATE_WORD, ""); } } } #endregion doc.CompressionOption = System.IO.Packaging.CompressionOption.Maximum; doc.Close(); return(ms.ToArray()); } }
internal static byte[] DocumentToPdf(DocDescriptor data) { return(DocumentToPdf(ProcessDocument(data))); }