Handhabung Sachmerkmale Artikel-Angebot bedienerunfreundlich

Allgemeine Diskussionen um die ERP Software AvERP

Moderator: SYNERPY

Antworten
Thomas Rogge
Beiträge: 159
Registriert: Mi Mär 04, 2009 10:45 am

Handhabung Sachmerkmale Artikel-Angebot bedienerunfreundlich

Beitrag von Thomas Rogge »

Moin zusammen,

wir arbeiten sehr viel mit Auswahllisten in den Artikelsachmerkmalen, eigentlich eine tolle Sache, aber meine Kollegen bemängeln die sehr umständliche Handhabung in Angeboten. Ich beschreibe mal nachfolgend anhand der neuesten Demo-DB, was damit gemeint ist:

Bild
Im Artikelstamm sind im Register 6 die Sachmerkmale definiert (Farbe,Motor, PS als Auswahlfelder sowie sonstige Informationen als Textfeld). Diese Sachmerkmale sollen in Angebotspositionen evtl. angepasst werden., also Angebot erstellt und nun befinden wir uns im Einfügemodus der ersten Position:

Bild
ich habe die Artikelnummer (AU01) ins Feld ArtikelNr. eingegeben und das Feld mit Tab verlassen, Menge 1 und der Preis wird vorgeschlagen, soweit gut. Allerdings werden im Register 2 keine Sachmerkmale angezeigt. Die sollte aber jetzt hier schon vorgeschlagen werden, damit ich diese im Einfügemodus bereits anpassen kann.
Es ist aber so, dass ich die Position erst speichern muss:

Bild
Mit dem Speichern werden nun die Sachmerkmale angezeigt, jetzt kann ich sie anpassen. Aber: Klicke ich nun in ein Sachmerkmalfeld, passiert rein garnichts, die Auswahlliste wird nicht aktiviert. Ich muss also entweder doppelt in ein Feld klicken, um den Bearbeitungsmodus zu aktivieren (oder den Bleistift anklicken), um dann endlich die Anpassung in den Auswahllisten durchführen zu können. Also zusammengefasst: Position anlegen, abspeichern, nochmal in den Bearbeitungsmodus schalten und dann Sachmerkmale anpassen. Das ist auch nach meiner Meinung sehr umständlich und könnte besser sein.

Ich habe mir also das OnExit-Script des Feldes ArtikelNr. im Designer mal angesehen (FRMV_BAUF_A_PO) und war erstaunt, dort wurde bereits eine Vorbelegung der Sachmerkmale angedacht und programmiert:

Code: Alles auswählen

Begin
  // Feldvorbelegung Sachmerkmale
  // LS 28.01.2008 RW
  // Wenn Insert or Edit ,
  // dann prüf BSAKUNDE nach BPROPT ID als Vorlage für Sachmerkmale
  // DebugOn := True;
  wo := 'Proc00036';

  iBSA_ID := AsInteger(q_1.FieldByName('BSA_ID_ARTNR'));
  iBKUNDE_ID := AsInteger(q_1.FieldByName('BAUF_BKUNDE_ID_KUNR'));

  if (((q_1.state = dssInsert) or (q_1.state = dssEdit)) and
      (iBSA_ID > 0) and (iBKUNDE_ID > 0)) then
  begin
    MySQL := frmData.Universal;
    MySQL.SQL.Text := 'SELECT B.BPROPT_ID '+
                      'FROM BSAKUNDE B '+
                      'WHERE B.BKUNDE_ID = :BKUNDE_ID AND ' +
                      '      B.BSA_ID_LINKKEY = :BSA_ID ';
    MySQL.ParamByName('BKUNDE_ID',iBKUNDE_ID);
    MySQL.ParamByName('BSA_ID',iBSA_ID);
    MySQL.open();
    iBPROPT_ID := AsInteger(MySQL.FieldByName('BPROPT_ID'));
    MySQL.close();
    
    // Wenn BPROPT_ID gefunden dann die Feldvorbelegung machen
    if (iBPROPT_ID > 0) then
    begin
      M := q_1.FieldByName('BPROPT_ID');
      M.AsInteger := iBPROPT_ID;
      q_1.RelationIDFeld('BPROPT_ID');

      Sachmerkmale('R','TabSheet_2',LB_ParaSachmerkmale.Caption);   
    end;
  end;
End;
Also kurz übersetzt: befinde ich mich im Einfüge- oder Editmodus einer Angebotsposition und ist ein Artikel und Kunde ausgewählt dann nimm die Vorlage der Sachmerkmale. Aber: Nicht das Template, welches im Artikelstamm hinterlegt ist, sondern das Template, welches im Unterprogramm des Artikelstammes (BSAKUNDE) hinterlegt ist.
Ich muss also im Artikelstamm Unterprogramm "Kundenartikel.Nr.Bez" einen Datensatz anlegen, den Kunden zuweisen und das Template (welches ja im Artikelstamm schon hinterlegt ist) nochmals zuweisen.

Das macht nach meinem Verständnis dann Sinn, wenn ich für unterschiedliche Kunden, unterschiedliche Sachmerkmale vordefiniert habe.

Nun habe ich den Code soweit ergänzt, dass -wenn im besagten Unterprogramm ein Template für einen Kunden eingetragen wurde- dann dieses genommen wird und ansonsten die Templatevorlage im Artikelstamm gezogen wird, so macht das die Sache rund wir ich finde:

Code: Alles auswählen

Begin
  // Feldvorbelegung Sachmerkmale
  // LS 28.01.2008 RW
  // Wenn Insert or Edit ,
  // dann prüf BSAKUNDE nach BPROPT ID als Vorlage für Sachmerkmale
  // DebugOn := True;
  wo := 'Proc00036';

  iBSA_ID := AsInteger(q_1.FieldByName('BSA_ID_ARTNR'));
  iBKUNDE_ID := AsInteger(q_1.FieldByName('BAUF_BKUNDE_ID_KUNR'));

  if (((q_1.state = dssInsert) or (q_1.state = dssEdit)) and
      (iBSA_ID > 0) and (iBKUNDE_ID > 0)) then
  begin
    MySQL := frmData.Universal;
    MySQL.SQL.Text := 'SELECT B.BPROPT_ID '+
                      'FROM BSAKUNDE B '+
                      'WHERE B.BKUNDE_ID = :BKUNDE_ID AND ' +
                      '      B.BSA_ID_LINKKEY = :BSA_ID ';
    MySQL.ParamByName('BKUNDE_ID',iBKUNDE_ID);
    MySQL.ParamByName('BSA_ID',iBSA_ID);
    MySQL.open();
    iBPROPT_ID := AsInteger(MySQL.FieldByName('BPROPT_ID'));
    MySQL.close();
    if (iBPROPT_ID = 0) then
    begin
      MySQL :=frmData.Universal;
      MySQL.SQL.Text := 'SELECT C.BPROPT_ID '+
                        'FROM BSA C '+
                        'WHERE C.ID = :BSA_ID ';
      MySQL.ParamByName('BSA_ID',iBSA_ID);
      MySQL.open();
      iBPROPT_ID := AsInteger(MySQL.FieldByName('BPROPT_ID'));
      MySQL.close();                    
		end;

    // Wenn BPROPT_ID gefunden dann die Feldvorbelegung machen
    if (iBPROPT_ID > 0) then
    begin
      M := q_1.FieldByName('BPROPT_ID');
      M.AsInteger := iBPROPT_ID;
      q_1.RelationIDFeld('BPROPT_ID');

      Sachmerkmale('R','TabSheet_2',LB_ParaSachmerkmale.Caption);   
    end;
  end;
End;
Befinde ich mich nun im Einfügemodus einer Angebotsposition und verlasse das Feld Artikelnummer, dann wird die Sachmerkmalvorbelegung angezeigt:

Bild

Dies ist aber noch nicht ganz perfekt: es werden nur die Merkmalsbezeichnungen eingefügt, nicht aber die Vorbelegung der Inhalte.
Aber genau die möchte ich vorgeschlagen bekommen, also genauso, als wenn ich den Datensatz speichern würde.
Also im Einfügemodus nach dem Verlassen des Artikelnummernfeldes die Sachmerkmale mit Inhalte wie im Artikelstamm hinterlegt.
Warum : Weil es ja sein kann, dass ich mich für die Standardvorbelegung entscheide und nicht anpassen muss und außerdem weiss ich so ja nicht, was im Textfeld des Artikelstammes vorbelegt wurde.

Ich hoffe , ich habe unsere Problematik ausführlich beschrieben, ich benötige also nur noch eine Lösung, wie die Vorbelegung der Sachmerkmale komplett beim OnExit durchgeführt wird.

Besten Dank und
viele Grüße
Thomas
Software-Version: 6.6.10.0
DB-Version: AVERP2018.03
Server: Windows 10 Pro Intel Xeon E3-1230v6 - 16GB RAM
50 User
SYN42
Beiträge: 99
Registriert: Mo Mär 05, 2012 1:58 pm

Beitrag von SYN42 »

Guten Tag!

Die Sachmerkmale aus dem Artikelstamm werden derzeit nicht in die Projektposition übernommen. Dies wäre allerdings möglich, indem man eine Prozedur schreibt, die die Daten aus der Tabelle BPROPBSA zum entsprechenden Artikel in die BPROJPOSM übertragen werden und diese im Trigger der Kundenauftragsposition einbindet. Für die Vorbelegung der Sachmerkmale direkt im Einfügemodus ist derzeit keine Möglichkeit vorhanden.

Schöne Grüße
SYN42
Antworten