Gelöst EK Belegübernahme: DLL mit Dialog in neuer Belegerfassung?

Dieses Thema im Forum "AppDesigner" wurde erstellt von LFranz, 24. Januar 2020.

  1. LFranz

    LFranz Mitglied

    Hallo zusammen,

    bei der Übernahme von Belegen zeigen wir (abhängig von Belegarten) einen Dialog an, bei dem Benutzer auswählen können, ob Sie Kopf- und/oder Fußtext des Vorgänger Beleges übernehmen möchten.

    Das hat mit der alten Belegerfassung (unter der OL 2016) und den DCMs EK-/VKBelegTransform problemlos funktioniert. Die DCMs werden aber mittlerweile auf dem ApplicationServer ausgeführt, wodurch ein Userinput an der Stelle nicht mehr möglich ist.

    Für die VK Belegerfassung ist das auch kein Problem, weil wir uns an das Element "ediVKBelegerfassung" anhängen können, dort im Makro das Feld "IstBeleguebernahme" abfragen und per "AufrufenKontextmenü" + "AppLibraryCall" die gleiche Funktionalität wie zuvor realisieren können.

    Das Feld ist jedoch leider in der EK Belegerfassung nicht vorhanden.

    Wie löst man das Problem für Einkaufsbelege?
     
  2. ALangmaack-Sage

    ALangmaack-Sage Aktives Mitglied Mitglieder

    Das klingt jetzt komisch, aber wenn es früher nicht gegangen wäre, dann hätten wir eine BeforeTransform-CM für die alte Erfassung und hätten diese dann auch in der neue Erfassung integriert. Das Flag, welches Sie ansprechen ist eine internes Flag. Verwenden Sie es bitte nicht.
    Der richtige Weg wäre über das Developer Programm eine Schnittstelle zu beantragen: eine Schnittstelle , um vor der Belegübernahme auf dem Client einzugreifen.
     
  3. LFranz

    LFranz Mitglied

    Aktuell sieht das bei uns so aus (mit den o. g. DCMs):
    [​IMG]


    Im Sage 100 Entwicklerhandbuch finde ich nur bei der frmAbfMainErfassung die CMs BeforeTransform/AfterTransform. Dort gab es für die EK Belegerfassung wohl auch keine CM.

    Sie schlagen vor, dafür eine Schnittstelle zu beantragen. Das dauert aber logischerweile, bis zur Implementierung (sollte dies geschehen), eine ganze Weile. Gibt es denn aktuell eine andere Möglichkeit (als Workaround), um die gleiche Funktionalität mit der neuen Belegerfassung abzubilden?
     
  4. bbusch

    bbusch Neues Mitglied

    Hallo,

    Sie können bei Anzeige des Belegs prüfen, ob der Beleg neu ist (BelID = 0) aber einem Vorgang zugeordnet ist (VorID <> 0).
     
    LFranz gefällt das.
  5. LFranz

    LFranz Mitglied

    Danke für den Tipp!

    Wäre es auf diesem Wege auch möglich, die vorherige Belegart zu ermitteln?
    Aktuell ist nämlich die Vorbelegung (Kopftext übernehmen: Ja/Nein, Fußtext übernehmen: Ja/Nein) abhängig von den beteiligten Belegarten.
    Bspw. kann sich die Vorbelegung bei der Übernahme einer Bestellung in eine Bestellung unterscheiden zu der Übernahme einer Preisanfrage in eine Bestellung.
     
  6. ALangmaack-Sage

    ALangmaack-Sage Aktives Mitglied Mitglieder

    Ich will mich nicht 100% festlegen, aber ich meine es gab auch in der alten Erfassung immer nur eine CM/DCM nach dem Transform. Wie auch immer. Aktuell kommen Sie nicht "vor" dem Transform in den Geschäftsprozess, da mit der Belegauswahl direkt der Daten-Service (Serverseite) zur Belegübernahme ausgeführt wird.
    Wie Herr @bbusch schon angedeutet hat, muss es ohne neue Schnittstelle nach der Belegübernahme erfolgen. Und auch das Ereignis OnCurrent wäre richtig. Nur die Abfrage VorID<>0 funktioniert zumindest bei Angebot in Auftrag nicht.

    Sie brauchen:
    ein Feld (boolsches Flag, z.B. IstTransform) an die jeweilige Struktur, Data-Edit anhängen
    ein Feld (String, z.B. QuellKennzeichen) an die jeweilige Struktur, Data-Edit anhängen
    Transfer der Felder zwischen Client und Server sicherstellen (Beispiel im Wiki, Belegerfassung Zusatzdaten)
    In der DCM EK/VKBelegProxyAfterTransform IstTransform=True und QuellKennzeichen = QuellBeleg.Kennzeichen (bitte genaue Syntax im Developer Handbuch nachschauen) setzen.
    Flag in OnCurrent abfragen (anhängen an Data-Edit) und Formular anzeigen
    Sollen andere Texte genommen werden, dann einen Daten-Service aufrufen und an die entsprechende DCM (Developer Handbuch) anhängen und dort die Text ändern/anpassen.

    Eventuell könnten Sie sogar den AppLibraryCall durch ein Selektionselement und Makro AufrufenDll ersetzten, hängt aber natürlich davon ab, wie komplex das Formular werden kann.
     
    LFranz gefällt das.
  7. esc_hein

    esc_hein Mitglied Mitglieder

    Hallo,

    evtl. hilft auch die ReferenzBelId in Kombination mit BelID = 0
     
    LFranz gefällt das.
  8. LFranz

    LFranz Mitglied

    Danke für die Antworten und möglichen Lösungen!
    Ich probiere mal ein bisschen rum und melde mich dazu noch einmal.
     
  9. LFranz

    LFranz Mitglied

    Funktioniert einwandfrei und benötigt keine Codeänderungen, von daher haben wir das jetzt vorerst so implementiert. Danke allerseits!
     

Diese Seite empfehlen