{"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>Hier ein Beispiel zu meinem vorletzten Eintrag.<\/p>\n\n\n\n<p>Wieder nur f\u00fcr Programmierer:<\/p>\n\n\n\n<p>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>using System;<\/p>\n\n\n\n<p><a><\/a>using System.Data;<\/p>\n\n\n\n<p>using System.Linq;<\/p>\n\n\n\n<p>using Dapper;<\/p>\n\n\n\n<p>using QSS.Contfakt.Data;<\/p>\n\n\n\n<p>public sealed class XInvoiceSellerWriter {<\/p>\n\n\n\n<p>private readonly IDbConnection _db;<\/p>\n\n\n\n<p>public XInvoiceSellerWriter(IDbConnection db) {<\/p>\n\n\n\n<p>_db = db;<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>public void Write(int documentId, string documentType, int mandantId) {<\/p>\n\n\n\n<p>var fields = _db.Query&lt;XInvoiceFieldMap&gt;(<\/p>\n\n\n\n<p>@&#8220;SELECT *<\/p>\n\n\n\n<p>FROM dbo.xinvoice_field_map<\/p>\n\n\n\n<p>WHERE section = &#8218;SELLER'&#8220;<\/p>\n\n\n\n<p>).ToList();<\/p>\n\n\n\n<p>_db.Execute(@&#8220;<\/p>\n\n\n\n<p>DELETE FROM dbo.xinvoice_data<\/p>\n\n\n\n<p>WHERE document_id = @DocId<\/p>\n\n\n\n<p>AND document_type = @DocType<\/p>\n\n\n\n<p>AND party_role = &#8218;SELLER'&#8220;,<\/p>\n\n\n\n<p>new { DocId = documentId, DocType = documentType });<\/p>\n\n\n\n<p>foreach (var f in fields) {<\/p>\n\n\n\n<p>if (string.IsNullOrWhiteSpace(f.SourceTable) ||<\/p>\n\n\n\n<p>string.IsNullOrWhiteSpace(f.SourceField) ||<\/p>\n\n\n\n<p>string.IsNullOrWhiteSpace(f.BtCode))<\/p>\n\n\n\n<p>throw new InvalidOperationException(<\/p>\n\n\n\n<p>$&#8220;Invalid mapping row for BT {f.BtCode}&#8220;);<\/p>\n\n\n\n<p>var sql = $@&#8220;<\/p>\n\n\n\n<p>SELECT [{f.SourceField}]<\/p>\n\n\n\n<p>FROM tv.[{f.SourceTable}]<\/p>\n\n\n\n<p>WHERE MandantenNummer = @MandantID&#8220;;<\/p>\n\n\n\n<p>var value = _db.ExecuteScalar(sql, new { MandantID = mandantId });<\/p>\n\n\n\n<p>InsertValue(documentId, documentType, f, value);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>private void InsertValue(<\/p>\n\n\n\n<p>int documentId,<\/p>\n\n\n\n<p>string documentType,<\/p>\n\n\n\n<p>XInvoiceFieldMap f,<\/p>\n\n\n\n<p>object value) {<\/p>\n\n\n\n<p>const string sql = @&#8220;<\/p>\n\n\n\n<p>INSERT INTO dbo.xinvoice_data<\/p>\n\n\n\n<p>(document_id, document_type, party_role, bt_code,<\/p>\n\n\n\n<p>value_text, value_number, value_date)<\/p>\n\n\n\n<p>VALUES<\/p>\n\n\n\n<p>(@DocId, @DocType, &#8218;SELLER&#8216;, @Bt,<\/p>\n\n\n\n<p>@Text, @Number, @Date)&#8220;;<\/p>\n\n\n\n<p>_db.Execute(sql, new {<\/p>\n\n\n\n<p>DocId = documentId,<\/p>\n\n\n\n<p>DocType = documentType,<\/p>\n\n\n\n<p>Bt = f.BtCode,<\/p>\n\n\n\n<p>Text = f.ValueType == &#8222;text&#8220; ? value : null,<\/p>\n\n\n\n<p>Number = f.ValueType == &#8222;number&#8220; ? value : null,<\/p>\n\n\n\n<p>Date = f.ValueType == &#8222;date&#8220; ? value : null<\/p>\n\n\n\n<p>});<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>}<\/p>\n<\/blockquote>\n\n\n\n<p>Hey, was hast Du, alter Mann, es l\u00e4uft doch &#8230;.<\/p>\n\n\n\n<p>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>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}]}}