Ausdruck trotz AUFTRAG_JN=N, LIEFERUNG_JN=N (erl.)

Alles über Formulare, deren Erstellung und deren eventueller Austausch

Moderator: SYNERPY

Antworten
Geri12
Beiträge: 589
Registriert: Mi Apr 16, 2008 7:51 am

Ausdruck trotz AUFTRAG_JN=N, LIEFERUNG_JN=N (erl.)

Beitrag von Geri12 »

Hallo

Das System reagiert im Moment folgendermaßen, getestet mit AvERP2008-A.14 und AvERP2009-A.06 ...

Falls beim Kunden eingestellt ist, dass keine Aufträge mehr erstellt werden dürfen (BKUNDE.AUFTRAG_JN = N), dann wird diese Info dem Sachbearbeiter beim Anlegen eines neuen Auftrags angezeigt. :) Nichtsdestotrotz kann ein Auftrag angelegt und im Original ausgedruckt werden. :?

Falls beim Kunden eingestellt ist, dass keine Lieferscheine mehr erstellt werden dürfen (BKUNDE.LIEFERSCHEIN_JN = N), dann wird diese Info dem Sachbearbeiter beim per-Hand-Anlegen eines neuen Lieferscheins angezeigt und das Anlegen des Lieferscheins abgebrochen. :) Nichtsdestotrotz ignoriert das Utility "Lieferschein erzeugen" leider die entsprechende Einstellung und legt unbeirrt Lieferscheine an. :shock:

Zudem kann es passieren, dass ein Kunde keine Lieferungen mehr erhalten darf, aber ein offener Lieferschein im System angelegt ist (z.B. über o.g. Utility). Momentan kann dann ein Original-Lieferschein ausgedruckt werden, und erst nach der Abfrage "War der Ausdruck OK ?" und der Antwort "J" kommt von der Datenbank eine Fehlermeldung :?: Aber dann hält der Sachbearbeiter schon einen Original-Lieferschein in der Hand. Die Fehlermeldung ist dann schnell vergessen ...

Hier wäre es doch wohl besser, den Ausdruck an dieser Stelle z.B. nur als Testdruck zuzulassen. Dann könnte kein Mitarbeiter einen "unerlaubten" Auftrag / Lieferschein ausdrucken, selbst wenn dieser schon im System angelegt ist.

Dafür allerdings eine Nachfrage: Wie / wo kann man in AvERP grundsätzlich eine solche Abfrage vor einem Ausdruck einprogrammieren ?
Zuletzt geändert von Geri12 am Fr Aug 14, 2009 8:58 am, insgesamt 1-mal geändert.
Gruß
Geri12

Software-Version: V4.2.5.2
FDB-Version: AvERP2008-A.14
SYN26

Beitrag von SYN26 »

Guten Morgen,

die Einstellung Auftrag J/N unterbindet den Wechsel vom Angebot zum Auftrag.
In der "Auftragsverwaltung" findet diese Prüfung im Gegensatz zur "Angebots- und Auftragsverwaltung"nicht statt.

Einen Originaldruck ggf. folgendermassen unterbinden:
Auswahl Testdruck J/N im OnFormShow abhängig von BKUNDE.AUFTRAG_JN = 'N' mit 'J' und enabled := false vorbelegen.

Gruß
Geri12
Beiträge: 589
Registriert: Mi Apr 16, 2008 7:51 am

Beitrag von Geri12 »

Hallo SYN26,
vielen Dank für Ihre Antwort.
die Einstellung Auftrag J/N unterbindet den Wechsel vom Angebot zum Auftrag. In der "Auftragsverwaltung" findet diese Prüfung im Gegensatz zur "Angebots- und Auftragsverwaltung"nicht statt.
Und Aufträge per Hand anlegen ? Und ausdrucken ? Hier scheint mir die Logik nicht durchgängig, da sollte in meinen Augen dann wirklich alles geblockt werden.
Einen Originaldruck ggf. folgendermassen unterbinden:
Auswahl Testdruck J/N im OnFormShow abhängig von BKUNDE.AUFTRAG_JN = 'N' mit 'J' und enabled := false vorbelegen.
Genau so würde ich auch vorgehen, wenn ...

... ja wenn ich denn wüsste , wie ich im OnFormShow an die BKUNDE_ID herankomme, um folgende Abfrage zu starten ...

Code: Alles auswählen

  iBKUNDE_ID := ???;   // WIE KOMME ICH AN DIE HERAN ?
  sLIEFERUNG_JN := sNein;
  //
  mySQL := FrmData.Universal;
  mySQL.SQL.Text := 'SELECT LIEFERUNG_JN '+
                    'FROM BKUNDE '+
                    'WHERE ID = :BKUNDE_ID';
  mySQL.ParamByName('BKUNDE_ID',iBKUNDE_ID);
  mySQL.Open();
  sLIEFERUNG_JN := AsString(mySQL.FieldByName('LIEFERUNG_JN'));
  mySQL.Close();
  //
  MASKEDIT_1.Text := sJa;           // Testdruck = J
  MASKEDIT_1.enabled := false;      // Eingabe gesperrt
  //
  if (sLIEFERUNG_JN = sJa) then
    MASKEDIT_1.enabled := true;
Die selbe Art an die BKUNDE_ID heranzukommen wie ich es in einer Maske mache funktioniert beim Ausdruck doch nicht. Oder stehe ich hier nur irgendwo auf dem Schlauch ?
Geht das über die Eigenschft sLoopProcedure ?

Könnten Sie mir hier bitte ein kurzes Beispiel geben, wie das zu lösen ist, in der Programmierdokumentation habe ich leider nichts gefunden ?!
Gruß
Geri12

Software-Version: V4.2.5.2
FDB-Version: AvERP2008-A.14
SYN26

Beitrag von SYN26 »

Hallo

wird im nächsten Release parametrisiert werden müssen.

Den Kunden lesen Sie aus der zugrundeliegenden View aus:

Code: Alles auswählen

  B := lbFormName.Caption;
  Z := Application.FindComponent(B);
  iBKUNDE_ID := AsInteger(z.Q_1.FieldByName('BKUNDE_ID_KUNR'));
   sLIEFERUNG_JN := sNein; 
  // 
  mySQL := FrmData.Universal; 
  mySQL.SQL.Text := 'SELECT LIEFERUNG_JN '+ 
...
Gruß
Geri12
Beiträge: 589
Registriert: Mi Apr 16, 2008 7:51 am

Beitrag von Geri12 »

Vielen Dank, funktioniert tadellos ...

(Wie komme ich nur auf das schmale Brett, dass man das bei Ausdrucken nicht nutzen könne ???)
Gruß
Geri12

Software-Version: V4.2.5.2
FDB-Version: AvERP2008-A.14
SYN26

Beitrag von SYN26 »

Hallo Geri12,

das Brett ist so schmal nicht! Diese Logik unterläuft den Seriendruck (Mehrfachauswahl, Druckserver).

Hierzu muss zusätzlich im Fastreport das Testdruck-Kennzeichen übersteuert werden.

Gruß
Geri12
Beiträge: 589
Registriert: Mi Apr 16, 2008 7:51 am

Beitrag von Geri12 »

Hallo SYN26,
an den Seriendruck habe ich auch schon (mit schlechtem Gewissen) gedacht. Zum Glück macht das bei uns niemand, aber auf jeden Fall wäre es erst dann vollständig, wenn es auch dort abgefangen würde. Aber Sie wissen ja, wie das ist - wenn der Ausdruck ohne vorherige Ankündigung nur als Testdruck erscheint, dann ist die Auftregung wieder mal groß.

Andererseits könnte man in dem Fall ja ein Textobjekt ausdrucken, in dem steht, dass DIESER Ausdruck eigentlich gar nicht laufen dürfte :lol:
Gruß
Geri12

Software-Version: V4.2.5.2
FDB-Version: AvERP2008-A.14
Geri12
Beiträge: 589
Registriert: Mi Apr 16, 2008 7:51 am

Beitrag von Geri12 »

Hallo,
nur der Vollständigkeit halber, falls es jemand einbauen möchte ...

Bei uns habe ich die Abfrage gleich auf das Feld FAKTSPERRE mit ausgedehnt, aber das ist auch schnell wieder rausgestrichen :wink:

Ausdruck FRDCMAUSMB_B, OnFormShow (ganz an den Schluß setzen)

Code: Alles auswählen

  B := lbFormName.Caption; 
  Z := Application.FindComponent(B); 
  iBKUNDE_ID := AsInteger(z.Q_1.FieldByName('BKUNDE_ID_KUNR'));
  sAUFTRAG_JN := sNein;
  sFAKTSPERRE := sJa;
  //
  my2SQL := FrmData.Universal;
  my2SQL.SQL.Text := 'SELECT AUFTRAG_JN, FAKTSPERRE '+
                    'FROM BKUNDE '+
                    'WHERE ID = :BKUNDE_ID';
  my2SQL.ParamByName('BKUNDE_ID',iBKUNDE_ID);
  my2SQL.Open();
  sAUFTRAG_JN := AsString(my2SQL.FieldByName('AUFTRAG_JN'));
  sFAKTSPERRE := AsString(my2SQL.FieldByName('FAKTSPERRE'));
  my2SQL.Close();
  //
  if ((sAUFTRAG_JN = sNein) OR (sFAKTSPERRE = sJa)) then
  begin
    MessageBox('Dieser Kunde ist für Aufträge / Auftragsdrucke gesperrt !',Self.Caption,0+64);
    Self.Close();
  end;
Ausdruck FRDCMLISMB, OnFormShow (ganz an den Schluß setzen)

Code: Alles auswählen

  B := lbFormName.Caption; 
  Z := Application.FindComponent(B); 
  iBKUNDE_ID := AsInteger(z.Q_1.FieldByName('BKUNDE_ID_LINKKEY'));
  sLIEFERUNG_JN := sNein;
  sFAKTSPERRE := sJa;
  //
  my2SQL := FrmData.Universal;
  my2SQL.SQL.Text := 'SELECT LIEFERUNG_JN, FAKTSPERRE '+
                    'FROM BKUNDE '+
                    'WHERE ID = :BKUNDE_ID';
  my2SQL.ParamByName('BKUNDE_ID',iBKUNDE_ID);
  my2SQL.Open();
  sLIEFERUNG_JN := AsString(my2SQL.FieldByName('LIEFERUNG_JN'));
  sFAKTSPERRE := AsString(my2SQL.FieldByName('FAKTSPERRE'));
  my2SQL.Close();
  //
  if ((sLIEFERUNG_JN = sNein) OR (sFAKTSPERRE = sJa)) then
  begin
    MessageBox('Dieser Kunde ist für Lieferscheine / Lieferscheindrucke gesperrt !',Self.Caption,0+64);
    Self.Close();
  end;  
FRUBAUF_NACH_BRLS (= Utility "Lieferschein erstellen")
-> In PROC0001 ist schon alles einprogrammiert, aber ausgeREMt, also die Auskommentierungszeichen einfach entfernen

FRUBAUF_NACH_BRRCP (= Utility "Lieferschein und Rechnung erstellen")
-> dito (entweder ebenfalls freischalten oder den entspr. Block von FRUBAUF_NACH_BRLS hierhin kopieren)

FRUBAUF_ANG_AUFT (= Utility "Angebot -> separater Auftrag")
-> auch hier in PROC0001 entspr. einbauen

FRMV_BAUF_B_ (= Maske "Auftragsverwaltung")
-> in PROC0011 entspr. einbauen

Zu den letzten beiden kann ich Euch leider keinen Quellcode mehr mitgeben, da habe ich schon zu viel erweitert und es wäre sehr mühsam, das alles nochmals auseinander zu klamüsern ...
Gruß
Geri12

Software-Version: V4.2.5.2
FDB-Version: AvERP2008-A.14
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

Hier sollten wir noch einmal tätig werden. Laste ich bei uns ein.
Antworten