{"id":19376,"date":"2025-12-19T06:31:34","date_gmt":"2025-12-19T05:31:34","guid":{"rendered":"https:\/\/www.q-software-solutions.de\/blog\/?p=19376"},"modified":"2025-12-19T06:31:35","modified_gmt":"2025-12-19T05:31:35","slug":"fuer-etwaige-programmierer-unter-ihnen","status":"publish","type":"post","link":"https:\/\/www.q-software-solutions.de\/blog\/2025\/12\/fuer-etwaige-programmierer-unter-ihnen\/","title":{"rendered":"F\u00fcr etwaige Programmierer unter Ihnen"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Hier ein Beispiel zu meinem vorletzten Eintrag.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wieder nur f\u00fcr Programmierer:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Schauen Sie sich das mal an (chatgtp generierter Code)<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">using System;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a><\/a>using System.Data;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">using System.Linq;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">using Dapper;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">using QSS.Contfakt.Data;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">public sealed class XInvoiceSellerWriter {<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">private readonly IDbConnection _db;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">public XInvoiceSellerWriter(IDbConnection db) {<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">_db = db;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">public void Write(int documentId, string documentType, int mandantId) {<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">var fields = _db.Query&lt;XInvoiceFieldMap&gt;(<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">@&#8220;SELECT *<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">FROM dbo.xinvoice_field_map<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">WHERE section = &#8218;SELLER'&#8220;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">).ToList();<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">_db.Execute(@&#8220;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DELETE FROM dbo.xinvoice_data<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">WHERE document_id = @DocId<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AND document_type = @DocType<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AND party_role = &#8218;SELLER'&#8220;,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">new { DocId = documentId, DocType = documentType });<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">foreach (var f in fields) {<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">if (string.IsNullOrWhiteSpace(f.SourceTable) ||<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">string.IsNullOrWhiteSpace(f.SourceField) ||<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">string.IsNullOrWhiteSpace(f.BtCode))<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">throw new InvalidOperationException(<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$&#8220;Invalid mapping row for BT {f.BtCode}&#8220;);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">var sql = $@&#8220;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">SELECT [{f.SourceField}]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">FROM tv.[{f.SourceTable}]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">WHERE MandantenNummer = @MandantID&#8220;;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">var value = _db.ExecuteScalar(sql, new { MandantID = mandantId });<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">InsertValue(documentId, documentType, f, value);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">private void InsertValue(<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">int documentId,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">string documentType,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">XInvoiceFieldMap f,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">object value) {<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">const string sql = @&#8220;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">INSERT INTO dbo.xinvoice_data<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(document_id, document_type, party_role, bt_code,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">value_text, value_number, value_date)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">VALUES<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(@DocId, @DocType, &#8218;SELLER&#8216;, @Bt,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">@Text, @Number, @Date)&#8220;;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">_db.Execute(sql, new {<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DocId = documentId,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">DocType = documentType,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bt = f.BtCode,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Text = f.ValueType == &#8222;text&#8220; ? value : null,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Number = f.ValueType == &#8222;number&#8220; ? value : null,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Date = f.ValueType == &#8222;date&#8220; ? value : null<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">});<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Hey, was hast Du, alter Mann, es l\u00e4uft doch &#8230;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">100:1 das wird Code mit dem wir Alten uns in naher Zukunft rum\u00e4ergern m\u00fcssen\/d\u00fcrfen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wirklich?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hier ein Beispiel zu meinem vorletzten Eintrag. Wieder nur f\u00fcr Programmierer: Schauen Sie sich das mal an (chatgtp generierter Code) using System; using System.Data; using System.Linq; using Dapper; using QSS.Contfakt.Data; public sealed class XInvoiceSellerWriter { private readonly IDbConnection _db; public XInvoiceSellerWriter(IDbConnection db) { _db = db; } public void Write(int documentId, string documentType, int mandantId) [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7995],"tags":[],"class_list":["post-19376","post","type-post","status-publish","format-standard","hentry","category-information"],"_links":{"self":[{"href":"https:\/\/www.q-software-solutions.de\/blog\/wp-json\/wp\/v2\/posts\/19376","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.q-software-solutions.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.q-software-solutions.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.q-software-solutions.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.q-software-solutions.de\/blog\/wp-json\/wp\/v2\/comments?post=19376"}],"version-history":[{"count":1,"href":"https:\/\/www.q-software-solutions.de\/blog\/wp-json\/wp\/v2\/posts\/19376\/revisions"}],"predecessor-version":[{"id":19377,"href":"https:\/\/www.q-software-solutions.de\/blog\/wp-json\/wp\/v2\/posts\/19376\/revisions\/19377"}],"wp:attachment":[{"href":"https:\/\/www.q-software-solutions.de\/blog\/wp-json\/wp\/v2\/media?parent=19376"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.q-software-solutions.de\/blog\/wp-json\/wp\/v2\/categories?post=19376"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.q-software-solutions.de\/blog\/wp-json\/wp\/v2\/tags?post=19376"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}