200 ZDok Zentraldokument+Belege » Historie » Revision 88
Revision 87 ([Y] Andreas F, 15.09.2021 08:27) → Revision 88/110 ([X] Marcus F, 24.11.2021 12:17)
h1. Zentraldokument (ZDOK) {{toc}} h2. *FAQ* Anpassungswünsche * Warum ist die Dokumentnummer 2 mal: oben rechts im Block und als Überschrift + Weil sonst beim Abheften im Ordner und Durchblättern nicht mehr zu sehen ist, was für ein Dokument es ist. * Warum ist der Rabatt nicht als Spalte + Weil er sich dynamisch ein- und ausblendet und sonst bei 0 der Kunde fragt: wieso kein Rabatt * Warum kommen bei Sammelrechnungen die Lieferscheine über die Position und nicht im Kopf + Weil es mehrere geben kann. Ist das änderbar: NEIN. (nur dahingehend, das die Nummern immer über den Positionen stehen und nie im Kopf) * Warum steht U-Pice und T-Price und was heißt das: + Genau wie im Deutschen E-Preis und G-Preis. Ist das änderbar: NEIN, man kann aber englisch lernen - dann weiß man genau wie im Deutschen auch wofür die Abkürzungen stehen. (alternativ Kundenübersetzung - entsprechender Aufwand) * Warum steht vor EMail nicht EMail: + Weil die meistens zu lang sind, dann nicht mehr aufs papier passen und wer nicht erkennen kann - das eine EMail eine EMail ist - sollte besser einen anderen Job annehmen. Ist das änderbar: NEIN (oder gegen Aufwand eine Sonderlösung) h2. Feature-Überblick, implementierte Funktionen # Nachkommastellen vorher ermittelt # *Standardtexte* für Kopf, Fuß pro Dokument über Bemerkungsverwaltung möglich; *StandardTexte für Exportkennung* ** Auftrag : DOKVERK_TXT_KOPF_AN / DOKVERK_TXT_KOPF_AG ; DOKVERK_TXT_FUSS_AN / DOKVERK_TXT_FUSS_AG (AN=Angebot, AG=Auftrag ** Lieferschein : DOKLIEFSCH_TXT_KOPF; DOKLIEFSCH_TXT_FUSS ** Rechnung : DOKFAKT_TXT_KOPF; DOKFAKT_TXT_FUSS ** Anfrage (Einkauf) : DOKANFRAGE_TXT_KOPF; DOKANFRAGE_TXT_FUSS ** Bestellung : DOKEINK_TXT_KOPF_RBE / DOKEINK_TXT_KOPF_BE; DOKEINK_TXT_FUSS_RBE / DOKEINK_TXT_FUSS_BE ** ExportKennung: EXPORT-INT; EXPORT-EU, wird anhand des Status in den Debitorendaten ermittelt # Momentan fixe Texte für Referenzen, müssten noch erweitert werden: # Ermittlung, ob mehrere Auftragsnummern im Dokument, wenn nicht, wird Auftragsnummer=Dokumentnummer, ansonsten wird Dokumentnummer als Ident verwendet # Referenzen; Felder im View: ** Eigene Nummer (Auftragsnummer, Rechnungsnummer) *position_status*, *position_identnummer*, *position_identpos* ** Vorgegange IdentNummer *position_identnummer1*, *position_identpos1* (siehe folgende Bsp) *Grundfunktionen auf DB-Ebene* * Schema "treporting" * Funktion zum Dropen aller Views, um z.B. Datentypen zu ändern: treporting.DropView() * Funktion zum Erstellen aller Views: treporting.RecreateViews() *Hintergrund* * Hintergrund wird per Standard aus "Prodat\System\BB-DE.emf" geladen * Über das Bankkontenverzeichnis kann pro Kunde/Lieferant/Rechnung eine Bank ausgewählt werden, welche wiederrum unterschiedliche Briefbogen haben kann * Im Bankkontenverzeichnis (Faktura=>Stammdaten) kann eine Bankverbindung als "Standard" hinterlegt werden, welche wiederrum auch einen abweichenden Briefbogen benennen kann. * In den Spracheinstellungen (Stammdaten=>Sprachen) kann pro Sprache ein unterschiedlicher Briefbogen hinterlegt werden. Somit würde der Hintergrund in Abhängigkeit der in den Adressdaten hinterlegten Sprache umschalten. * Bei Neuinstallation vom Kunde Folgendes verlangen ~ INFO [[EMF]] ** PDF oder Word des (kompletten) Briefbogens ** Einzelvektordateien der Logos, falls es kein PDF gibt, in das alle Vektordateien eingebettet sind, inklusive Schriften! ** Vektorformate sind typischerweise PDF (falls das nicht einfach nur gescannt ist), EPS, AI *Sonstiges* *Vorgaben für das DruckVorlaufFormular: http://www.prodat-sql.de/redmine/issues/4669* * Ansprechpartner werden über 'Automatische Anrede' aus den Stammdaten der Adresse gezogen, dabei muss der Kurzname vorhanden sein Ist korrekt Herr und Frau in der Anrede hinterlegt, kann das Dokument 'Sehr geehrter Herr', 'Sehr geehrte Frau' drucken, ansonsten 'Damen und Herren' Im Englischen gibt es Ms. als Anrede, wenn nicht klar ist ob verheiratet oder nicht (der Punkt wird eigentlich im britischen Englisch nicht gesetzt) *Folgedokumente* * Betrifft z.B. Zeichnungen oder anderweitige Konstruktionsdokumente (aus Artikelstamm), die beim Versenden von Externdokumenten per Email angehangen werden sollen. * Muss pro Kunde eingestellt werden. * http://redmine.prodat-sql.de/projects/prodat-v-x/wiki/Folgedokument * Spezielles SQL bzgl. Folgedokumente anhand Stücklistenauflösung siehe unten. h1. Aufbau der Views *An Kunde* * Auftrag: ## *position_identnummer* = AuftragsNr (ag_nr) ## *position_identpos* = ag_pos ## *position_identnummer1* = Eigene AnfrageNr (ag_kanf_nr) ## *position_identpos1* = NULL ## *referenz* = ag_bda; *referenz_pos* = ag_bdapos; *referenz_vondatum* = ag_bdat * Lieferschein: ## *position_identnummer* = Unser Auftrag (ag_nr) ## *identnummer1/pos1* = NULL => könnte man interne AnfrageNr machen ## *referenz* = belp_referenz=ag_bda; *referenz_pos* = ag_bdapos * Rechnung: ## *position_identnummer* = Lieferschein-Nr ## *position_identnummer1* = Auftrags-Nr (ag_nr) ## *referenz* = Referenz (ag_bda) *An Lieferant* * Bestellung: ## *position_identnummer* = Bestellung normal: Bestellnummer; Auswärtsbearbeitung: Fertigungsauftragsnr (nicht die ld_auftg der Bestellung, sondern der des Auslösenden Produktionsauftrags) ## *position_identpos* = ld_pos, wie oben Unterscheidung normale Bestellung, Externbearbeitung ## *position_identnummer1, pos1* = NULL h2. Aufbau Views # Immer gleicher Aufbau: Kopfview, Positionenview, AbzuschlägePosition, Abzuschläge Gesamt # *dokument_id* = DokumentId, Dokumentnummer, ACHTUNG: Dokumentnummer auf Ausdruck kann abweichen, wenn die Auftragsnummer als Dokumentnummer genommen wird! (mehrere Auftragsnummern auf einem Dokument) # *dokument_join_id* = Join schlüssel für Views: Dokumentnummer bei Auftg/Ldsdok, Belegnummer bei Rechnung * Beachte Belegviews: *beld_dokunr=dokument_id ABER beld_id=dokument_join_id*, siehe Aufbau Belegview, JoinSchlüssel=BelegId und nicht die Dokumentnummer! # *dokument_nummer* = Ausgewiesene Dokumentnummer auf Liste: Rechnungsnummer, bei Auftrag/Bestellung Bestellnummer, ausser es sind mehrere auf Dokument, dann Dokumentnummer # *doktype_force* = interne DokumentId für DMS, da nur ein Dokument muß anhand des Statement ermittelt werden, wie es archiviert wird! h2. Doktypes # Auftrag: auftg_dok # Lieferschein: lfs # Rechnung: rechnung # Bestellanfrage: bestanf # Bestellung: ldsdok_bestdok # Auswärtsbestellung: awd # Terminmahnung: ldsdok_bestdok_mahn h2. Bekannte Probleme und Besonderheiten * Windows-Anzeigeoption zur Textgröße (Erhöhung der DPI) skalliert PDF-Export. ** Wenn Option _DPI-Skalierung im Stil von Windows XP verwenden_ wird der Report auf dem PDF zu klein dargestellt. Sollte in dem Fall 100% betragen. + Windows > Anzeigeeinstellungen (dort wo Auflösung) h2. Konfigurierbare Einstellungen * ReportSettings.Ini steuert Randeinstellungen des Dokuments und des Hintergrund EMFs im Ordner /System * Für mehrere Mandanten können mehrere ReportSettings.INI angelegt werden, indem der DatenbankName verschlüsselt wird. zB ReportSettings.CIMPCS.Ini. Beim Programmstart wird immer zuerst geprüft, ob es eine ReportSettings.DatenbankName.Ini gibt. * Barcodes für jede Adresse individuell: [[Barcode-Zentraldokument]] h3. Hintergrund EMF BB.LogoFileName (Default='BB-DE.emf') BB.Top BB.Left BB.Width //Skalierung, Original A4 ist 794 x 1123px BB.Height //Größe der EMF kann aber abweichen, dann Skalierung an EMF anpassen h3. Seiteneinstellung Page.TopMargin Page.LeftMargin Page.RightMargin Page.BottomMargin h3. Kopfdaten Page.AdressLine //Eigene Anschrift über Adresse Page.AdressRight //Adresse rechts (Schweiz) Page.AnrGruss=True (default False) // default werden für Lieferschein und Rechnung Anrede und Grußzeile nicht gedruckt (auch wenn im Formular angehakt) -- Adress.AllPages=True (default False) // Adresse und Belegdetails auf allen Seiten Adress.Blankline=True (default False) // macht eine Leerzeile vor dem Ort Adress.Fax (default True) // druckt Fax des Adressaten und Leerzeile nach Plz Ort (Bestellung) > DEFAULT true für Bestellung und Anfrage (Einkauf) Adress.'+<r_dokutype>+'.Fax (default False) //bei beliebigen Dokumenttyp die Faxnummer der Zieladresse ausgeben KontaktKopf.Adresse.Top (default KontaktKopf.Top) // Verschiebt Kontaktdaten nach oben bzw. unten (AdressFeld) KontaktKopf.Top (default 170) // Verschiebt Kontaktdaten nach oben bzw. unten (AnsprechpartnerFeld) Header.ShowProv=True //Zeigt "Provisorisch" an, wenn belege nicht definitiv sind Header.ShowKundAnf=False // default true, Ausblenden der Kundenanfrage-Nummer im Verkauf Header.ShowKopie=True //Zeigt "Kopie" bei Kopiedruck an Header.ShowDokuNr=False //Zeigt die Dokumentnummer bevorzugt an (Bestellung: normal wird die Bestellnummer angezeigt, hier kann gesagt werden, das doch die Dokumentnummer bevorzugt wird) Header.ReferenzInKopf=True //Zieht die Referenzen (z. B. Bestell-Nr.) in den Kopf, wenn für alle Positionen gleich. Header.ReferenzInKopf.awd=False //Pro Dokumenttyp einstellbar, ob HeaderImKopf (<r_dokutype>) Header.BarcodeExprLifsch= //Barcode für Lieferschein anzeigen und zuweisen (Wenn Option gesetzt, dann wird Barcode angezeigt) //für Verschlüsselungsfeld auch Konkatenation möglich + Header.BarcodeExprAuftg='-AUF'+<WorkSQL."dokument_status">+'DOK-'+<WorkSQL."dokument_id"> + Header.BarcodeExprLifsch='-LFS-'+<WorkSql."dokument_nummer"> + Header.BarcodeExprLdsdok='-AWD-'+<WorkSql."dokument_nummer"> + Header.BarcodeExprBelkopf='-RECHNUNG-'+<WorkSql."dokument_nummer"> > ACHTUNG: Barcode immer Großschreibung + Header.BarcodeShowText=False //Text unter dem BarCode; zum Testen, ob der richtige Wert drin steht, sinnvoll Header.BarcodeExprLifsch steuert ebenfalls Anzeige des Barcodes der Gelangensbestätigung default Header.BarcodeExprGbstg='-GBSTG-'+<WorkSql."dokument_nummer"> ist als Vorgabe bereits enthalten, kann aber überschrieben werden Kopf.AdressatDebinr=False //Anzeige der DebitorenNr, wenn vorhanden Kopf.AdressatFax=False //Anzeige der FaxNr, wenn vorhanden Kopf.AdressatUstID=True Kopf.K_UstID=False //Anzeige der eigenen UstID h3. Preise auswdok_preise=True //Preise für Auswärtsbearbeitung anzeigen (ansonsten wie Lieferschein->ohne Preise); setzt man True, kann man über das Vorsatzformular die Preise ausschalten; False deaktiviert die Preise generell ShowNurTotalNetto=True(default false) // Zeige für Einkaufsdokumente (auch Auswärtsbestellung) nur Total Netto Summe an (keine MwSt und Brutto) ShowNurTotalNetto.<r_dokutype>=False (default true) // Zeige getrennt für Einkauf, Anfrage, Auswärts Position.OptionPriceColor=$C0C0C0 //Den Preis der Optionalpositionen in einer anderen Farbe darstellen; default ist clBlack; $C0C0C0 entspricht clSilver * Farbliste: http://docwiki.embarcadero.com/RADStudio/XE8/en/Colors_in_VCL * Konvertierung hex<>rgb https://www.rapidtables.com/convert/color/hex-to-rgb.html ** diesen Wert dann folgendermaßen anpassen: zB 0E5389 (aus dem Konverter) zu $89530E h3. Position Position.ForceGroupHeaderRef=False // Zeigt für jede Position den Gruppenkopf, jedes Dokument Position.ShowAnNr=True //Anzeige Projektnummer Position.'+<r_dokutype>+'.ForceGroupHeaderRef=False // Zeigt für jede Position den Gruppenkopf, je nach doktype Position.UseKundLiefArtNo=True //Bevorzugt wird die Kunden/Lieferantenartikelnummer (artzuo, ld_bem) als Artikelnummer angezeigt. Position.'+<r_dokutype>+'.UseKundLiefArtNo=True //Einstellung von oben pro Dokument, damit anderes Verhalten von Einkauf&Verkauf möglich UseKundLiefArtNo:=GetReportSettings_B('Position.'+<r_dokutype>+'.UseKundLiefArtNo', GetReportSettings_B('Position.UseKundLiefArtNo', True)); Position.LabelReferenzArtNo="Referenz" //Anschrift vor dem Referenzartikel Position.ReferenzPos=False //default true; Zeigt beide Positionsnummern an: die eigene, fortlaufend und die Bezugsposition. Position.'+<r_dokutype>+'.ReferenzPos=False //default true; Zeigt beide Positionsnummern an: die eigene, fortlaufend und die Bezugsposition. kann pro Dokumenttyp abgeschalten werden Position.ReferenzPosFull //Bestellnummer Kunde + Positionsnummer Kunde in Zeile! => ACHTUNG - blendet die eigene Auftragsnummer, sowie das Bestelldatum Kunde aus!!!! Position.APext=True // Kurzname des externen Ansprechpartner zeigen (Referenz im Verkauf mit Ansprechpartner) > DS bewusst auf true gesetzt. in reportsettings deaktivieren, wenn nicht gewünscht. 2017-11-07 Eigenes Reportdataset, das die Rahmen für Aufträge, Lieferscheinen und Bestellungen holt. Es werden, wenn aktiviert die letzten 5 Rahmenabrufe mit dem neuesten zuerst angezeigt. Position.Rahmengesamt=True // Anstatt sämtliche Rahmenabrufe wird in einer Zeile die Gesamtmenge, Geliefert und Rest zusammengefasst Position.'+<r_dokutype>+'.RahmenAbrufInfo=False (default true) // auch ohne dokutype zu verwenden // Zeigt unter der Position die Information zum Rahmenabruf in Einkauf und Verkauf (kann im PosTxt.Script überschrieben werden) Position.AnzAngezRahmAbrufe = 5 // Anzahl der Angezeigten Rahmenabrufe bei im RTF aktivierter Anzeige, Default ist 5. Position.'+<r_dokutype>+'.UseZeichnungAsArtNo=False // ZeichnungsNr wird als ArtikelNr gedruckt, je nach doktype Position.UseZeichnungAsArtNo=False // ZeichnungsNr wird als ArtikelNr gedruckt, wenn keine KundenartikelNr vergeben ist Position.ShowWaehrung=True (default false) //Die Währung anzeigen erzwingen (Bestellung und Auswärtsbestellung, AN/AG, Rechnung) - Währung wird normalerweise wegen Redundanz nicht angezeigt (ausser GesamtsummeAnzeigen ist nicht aktiv im Einkauf und AN/AG) Position.'+<r_dokutype>+'.BarcodeExpr1 //Barcode pro Position ausgeben, zB Kundenbestellnummer als Barcode zB Lieferschein => Position.lfs.BarcodeExpr1=<position."referenz"> Position.AbZuNachPosZusTxt=True (default false) // Zuschläge nach dem Positionstext anzeigen, zB Loll Position.StaffelVorPosZusTxt=True (default false) // Staffelpreise vor dem Positionstext anzeigen ! Überschneidung mit AbZuNachPosZusTxt; beide gleichzeitig true, ist bisher nicht beachtet ! Position.StorniertFarbe=red (default gray) // Kennzeichnung stornierter Positionen mit dieser Farbe; alle HTML Farben verwendbar auch "#000000" Position.LieferTerminInPos=False //Lieferdatum in den Positionstext verschieben Position.ShowZgnrTrans=True // Bezeichnung bzw. Übersetzung für Zeichnungsnummer ein-/ausblenden Position.ShowZgidTrans=True // Bezeichnung bzw. Übersetzung für Zeichnungsindex ein-/ausblenden Position.ShowMatTrans=True // Bezeichnung bzw. Übersetzung für Material ein-/ausblenden Position.ShowMatNormTrans=True // Bezeichnung bzw. Übersetzung für Materialnorm ein-/ausblenden Position.ShowDimTrans=True // Bezeichnung bzw. Übersetzung für Dimension ein-/ausblenden Position.ShowProjBez=True // default False Anzeige der Projektbezeichung h3. Lieferschein Position.MengeRestMenge=True //Zeigt die Ausgangsmenge und die noch offene Menge an (zB Lieferschein - Bestellt .... Geliefert ...) Footer.LFS.WareErhalten=True //Unterschrift-Feld für Ware erhalten unter Lieferschein Footer.LFS.ShowVerpackungsmittel=True // default true Verpackungsmittel anzeigen LFS.TitelLieferTerm=True // default False Zeigt im Titel von Kopie die Spanne des Auslieferungstermins, sowie in der Position den Lagerort Position.ChargeDrucken=True //default True Chargen zur LieferscheinPosition drucken Position.SerNrDrucken=True //default True Seriennummern zur LieferscheinPosition drucken h3. Lieferkonditionen, Zahlungskonditionen, Export Footer.Lieferkond.OhneVersand=False //Keine Versandart Zahlung.OhneZahlBed=False //Keine Zahlungsbedingungen Zahlung.OhneZahlBedIf00=False //Wenn 0/0 (Zahlung/Skonto) kommt "gem. Vereinbarung" (ausser es gibt Sonderkonditionen, diese überdecken dies dann) Zahlung.OhneZahlungsZielTxt="Gemäß Vereinbarungen" //Zahlungskonditionen, wenn keine Zahlungsbedingungen Zahlung.OhneZahlungsZielTxtRechnung="Gemäß Vereinbarungen" //zB Mattis: Sofort Netto;;; wenn nichts angegeben: => Zahlung.OhneZahlungsZielTxt Export.doktype.Hinweise=true // default false, keine Anzeige zB Export.aufedok.Hinweise=true ... für Rechnung sind die Hinweis und Ursprung aktiv und können nicht mit dem Setting ausgeschalten werden Export.doktype.Ursprung=true // default false, keine Anzeige zB Export.lfs.Ursprung=true h3. Fuß Footer.SpaceMFG //Default 0 erstellt einen Abstand zwischen 'Mit freundl Grüßen' und AP Footer.Print=True //eigener Brieffuß mit Bankdaten Footer.Height (default 110) // Angabe in Px; höherer Wert rückt den Footer nach oben; relevant, wenn Inhalt des Footers bereits auf KundenEMF vorhanden und Footer.Print=false Footer.Width.Anschrift (default 140)//Gruppe1 Postanschrift Footer.Width.Kontaktdaten (default 178) //Gruppe2 Kontaktdaten Footer.Width.GF (default 174) //Gruppe4 Geschäftsführer Footer.Firma1 //default False (Inhalt von ad_fa1) Footer.TitelGF //default Geschäftsführer ~ nur Standarsprache; für Übersetzungen das Setting nicht verwenden und nur in den Übersetzungsvariablen für die gewünschten Sprachen führen Footer.Amtsgericht //String- Name des Amtsgerichts für Brieffuß (Ort), wenn abweichend des Ort der Firma (Felder werden in Einstellungen später nachgesetzt) Footer.HRB //String- Handelsregister (Nummer) Footer.LiefDatumLeistDatum = 1 [0,1,-1] + =1 //Text "Lieferdatum entspricht Leistungsdatum" wenn Lieferschein vorhanden, ohne Lieferschein automatisch "Rechnugnsdatum ist Leistungsdatum" + =0 //immer "Rechnugnsdatum ist Leistungsdatum" + =-1 //Keine Angabe zu Leistungsdatum Email.StdBelegtext //default true #8255 Prozess\Ablauf: 1. Bemerkungsverwaltungstext (DOKU_EMAILTXT); 2. Bemerkungsverwaltungstext ist leer, dann wird der Email Text aus den Variablen des Z-Doks generiert und beachtet auch Anprechpartner und so weiter 3. Wenn Setting Email.StdBelegtext=false: dann wird nichts angezeigt h2. Allgemeine Settings * GetBoolSetting('ZDok.full.stvtrs') #7265: Bestelldokument, Option Baugruppen auflösen - Alle Ebenen h2. Kundenscripts https://redmine.prodat-sql.de/projects/prodat-v-x/wiki/ZDok_Kundenspezifische_Abl%C3%A4ufe # Initiales Script : Report.Init.Script.pas // Ausführung im begin end für allgemeine Zusatzanforderungen (Ende des begin/end Blocks) # Positionszusatztext : Report.PosTxt.Script.pas => Addiert Variable "" an den Zusatztext der Position. zB EDI-IDENT-NR # Footer Script : Report.Footer.Script.pas => Breiteneinstellungen und Texte der einzelnen Box können überschrieben werden (CNC eigenes Footer Script als Bsp.) h2. Gelangensbestätigung* (siehe #4512) # Stammdaten: ## System-Einstellung: Verkauf > Gelangensbestätigung überwachen ## Zentraldokument Reportsettings: ### Gelangenbestg.Print=True // default false ### Header.BarcodeExprLifsch=<WorkSql."dokument_nummer"> ## Recnogroup-Eintrag: 'System.Gelangensbestätigung' muss vorhanden sein ~ über Erstellungsscript und DBUpdt ## Euexport-Haken des Debitors ist aktiv # Setzen des Parameters ## Parameter 'System.Gelangensbestätigung' wird beim Drucken des LFS auf False gesetzt (Gelangensbestätigung: Unterschrift erhalten) über belegdokument__a_u__lfs_beld_print # Überwachung ## Liste: Lagerverwaltung > Auswertung > Statistik > Überwachung Gelangensbestätigung # Zurücksetzen des Parameters ## Scannen Lieferschein (zurück vom Kunde) über Dokumentverwaltung (Achtung nicht über Dokumentablage) ## Dokument enthält Barcode picndoku__a_iud__set_recno setzt 'System.Gelangensbestätigung' auf 'Unterschrift erhalten' wahr ## wird nicht mehr in der Liste 'Überwachung Gelangensbestätigung' angezeigt h2. HTML für Memos @<b> - bold text <i> - text in italic <u> - underlined text <sub> - subscript <sup> - superscript <font color> - font color@ Beispiele: text <b>bold text</b> <i>text in italic</i> <b><i>bold and in italic</b></i> E = mc<sup>2</sup> A<sub>1</sub> = B<sup>2</sup> this is a usual text, <font color=red>and this is a red one</font> this is a usual text, <font color="#FF8030">and this is an orange one</font> h2. Sonstiges * Auf dem Dokument kann ein konfigurierbarer Text zur Qualitäts-Norm angedruckt werden ** Zugriff im Reporting-View erfolgt über ' GetStandardTxtBemerkungsV('DOKEINKAUF_QHINT ... ' ** Anpassbar über Bemerkungsverwaltung, in dem Text mit dem Bezeichner 'DOKEINKAUF_QHINT-NORMBEZEICHNUNG' angegeben wird. Ist der Bezeichner nur 'DOKEINKAUF_QHINT', wird der Text bei jeder Norm ausgegeben * Folgedokumente ** spezielles SQL (Dokumentendruck, _Dokumenten-Such-SQL_ @report_afterdokument.rad_PDID_SQL@) zur Ermittlung der Folgedokumente anhand Stücklistenauflösung. ** Dokumenttypen müssen gesetzt werden in _Bei Listen drucken_ @report_afterdokument.rad_r_dokutypes@ Derzeit implementierte Dokumenttypen: @bestanf;ldsdok_bestdok;awd@ (Anfragen, Bestellungen, AW-Bestellungen) ** {{collapse(SQL) * Subquery _dokument_positionen_ holt Artikel der Dokumentpositionen je nach Dokumenttyp (Bestellung oder Anfrage). Muss erneut auf die Views gehen, da Statement nicht auf Positionsebene ausgeführt wird, sondern einmal am Ende. * Subquery _sub_ holt ggf. Stücklistenauflösung (per Option _Baugruppen auflösen_) (Performance). Bereitet außerdem Sortierung (SortID) je nach Stücklistenreihenfolge vor. Diese erfolgt innerhalb jeweiliger Dokumentposition. Damit kommen erst alle Anhänge der Dokumentposition 1 gemäß Stücklistenauflösung, dann Pos 2 usw.. * Ausgegeben werden ** nur Dokumente direkt im Artikelstamm (art.dbrid) ** alle Dokumente, die direkt (pd_parentnodeident) im Ordner _Zeichnungen_ (ID 15) sind ** oder definiert durch den Dokumenttyp im Ordner 15 sind <pre><code class="sql"> SELECT DISTINCT pd_id, position_identpos, sortid, pd_path FROM ( SELECT row_number() OVER (PARTITION BY position_identpos) AS SortID, -- Sortierung der Stücklistenauflösung innerhalb der Dokumentpositionen COALESCE(stn, artikelnummer) AS stn, -- Artikel aus Stücklistenauflösung oder des Dokuments ebene, position_identpos -- Dokumentposition FROM ( -- je nach Dokument die Dokumentpositionen sammeln. -- Muss erneut auf ReportingViews gehen, da Statement nicht dynamisch pro Position ausgeführt wird, sonder 1mal am Ende -- Bestellpositionen aus entspr. View SELECT position_identpos, artikelnummer, menge FROM treporting.ldsdok_beleg_positionen WHERE position_dokument_id = :ld_dokunr -- UNION -- Anfragepositionen aus entspr. View SELECT position_identpos, artikelnummer, menge FROM treporting.anfrage_anfart_positionen WHERE position_dokument_id = :anf_krz -- ) AS dokument_positionen -- Stücklistenauflösung der Artikel im Dokument, wenn Option Baugruppen auflösen aktiv (Performance) -- Ansonsten nur Artikel des Dokuments LEFT JOIN LATERAL tartikel.stueckl__do_stueckl_list(artikelnummer, artikelnummer, menge) ON :cbShowBG ) AS sub JOIN art ON ak_nr = stn JOIN picndoku ON pd_tablename = 'art' AND pd_dbrid = art.dbrid -- Dokumente der Artikel LEFT JOIN dokutypes ON dt_id = pd_doktype WHERE COALESCE(pd_parentnodeident, dt_parentnodeid) = 15 -- direkt im Ordner Zeichnungen hinterlegt, oder Ordner per Dokumenttyp definiert -- optionale Bedingungen: -- AND pd_doktype = 'zeichnung' -- Einschränkung auf Dokumenttyp -- AND COALESCE(ebene, '-1') IN ('-1', '0') -- nur Baugruppenartikel selbst und 1. Ebene ORDER BY position_identpos, SortID, pd_path, pd_id </code></pre> }}