Teillieferungen

7. November 2006 16:21

Hallo zusammen

Ich habe ein Problem mit dem Lieferschein bzw. Teillieferungen
Hat ein Auftrag z.B 10 Positionen aber nur 3 werden geliefert will ich nur die 3 gelieferten Positionen auf dem Lieferschein andrucken.

Ich habe eine Lösung aber ich hätte noch gerne ein Feedback von euch ob es so keine Probleme gibt.

Code:
Sales Shipment Line - OnAfterGetRecord()
IF Quantity = 0 THEN
  CurrReport.SKIP;


Danke für euere Hilfe

Gruss
mada

7. November 2006 16:26

Hi Mada,

ich komm jetzt nicht ganz mit. Wenn du einen Auftrags teillieferst und dann den Lieferschein ausdruckst, erscheinen doch so oder so nur die Lieferzeilen mit der Menge, die wirklich nur geliefert wurden.

Gruß, Marc

7. November 2006 16:38

Hallo Marc

Nein wenn ich "zu liefern = 0" auf einer Position eingebe und den Auftrag dan verbuche (liefere) druckt es mir alle Positionen vom Auftrag aus. Bei der Menge steht dann einfach 0.

7. November 2006 16:38

Dem kann ich nur zustimmen.

Könnte es sein, dass du versuchst, aus dem VK-Auftrag heraus zu drucken?
Falls ja, wechsle doch in den Lieferschein und drucke dort.

7. November 2006 16:45

Hallo Natalie

Ich kann aus dem Auftrag kein Lieferschein drucken. Ich verbuche den den Auftrag und im Programm "Geb. Verkaufslieferungen" habe ich dann den Lieferschein. Da sind dann alle Positionen aufgelistet.

7. November 2006 16:55

Eine Möglichkeit wäre dann in den jeweiligen Zeilen "Druck Zeile" auf "Nein" zu stellen

7. November 2006 16:56

Ach so. Ich dachte eine Teillieferung innerhalb einer VK-Zeile...

Okay, dann müsste dein o. g. Code funktionieren. Hast du es schon ausprobiert?

Gruß, Marc

7. November 2006 17:02

Noch besser als im OnAfterGetRecord etwas zu bestimmen ist die vorherige Filterung.

Ich würde einfach in den Report Designer gehen,
DataItem "Sales Shipment Line",
Properties
unter DataItemTableView Table Filter wie von dir vorgeschlagen ändern.

7. November 2006 17:03

@Max
Wäre eine Möglichkeit. Aber wenn ich den Auftrag "buche & liefere" wäre es ein zu grosser Aufwand. Ein Auftrag kann ja x-Positionen haben.

@Marc
Ja ich habe es getestet. Es funktioniert.
Da es irgendwie zu einfach aussah wollte ich mich noch vergewissern. Vielleicht hat jemand im Forum das schon mal gelöst.

Gruss
mada

7. November 2006 17:06

@Natalie

Diese Lösung gefällt mir besser. Habe es schon getestet und es funktioniert.
Danke

Gruss
mada

7. November 2006 17:11

Ich würde aber noch folgendes hinzufügen:
Code:
IF (Type <> Type::" ") AND (Quantity = 0) THEN
  CurrReport.SKIP;


So werden wenigsten noch die Texte, die frei in der Spalte "Beschreibung" eingegeben worden sind, gedruckt.

7. November 2006 19:48

@Marc:
dann werden aber auch die Texte mit ausgedruckt, die als Autotext von einem nicht gelieferten Artikel erzeugt wurden.
Ich habe das Problem auch schon mal gehabt und die Lösung ist etwas aufwendiger....
ich such's mal raus....

so, hier ist die Lösung:
Im Requestform habe ich eine Checkbox mit Namen "Lieferzeilen mit Menge 0 drucken" eingefügt, die Source Expression zeigt auf die neue boolsche Variable Qty0Lines.
Ausserdem habe ich noch eine Integervariable HiddenLine angelegt.

Im OnAfterGetRecord-Trigger des DataItems "Sales Shipment Line" habe ich folgende Änderungen vorgenommen:

Gleich zu Beginn folgende Zeile eingefügt, um bei der nächsten Zeile, die keine Textzeile ist, die Variable HiddenLine zurückzusetzen:
Code:
IF Type <> 0 THEN HiddenLine:=-1;

-1 deswegen, weil eine solche Zeilennummer nicht vorkommt.

weiter unten, wo die Anzahl Lieferpositionen gezählt wird:
Code:
IF (Type <>Type::" ") AND (Quantity<>0) THEN LieferPos+=1
//MSm Change for Qty0Lines Start
ELSE BEGIN
  IF (Type <>Type::" ") AND NOT Qty0Lines THEN
    HiddenLine:="Sales Shipment Line"."Line No.";
END
//MSm Change for Qty0Lines End
;

damit setze ich Hiddenline auf die aktuelle Zeilennummer, wenn es eine Zeile mit Liefermenge 0 ist und das Häkchen auf der Requestform nicht gesetzt ist.
Achso, ich seh gerade, das Zählen der Lieferpositionen ist auch kein Standard (hätte mir an der deutschen Variable aber auffallen sollen :oops: ). Diese Zeilen hatte ich nach den Setrange Zeilen für die Dokumentdimensionen eingefügt.

Im OnPreSection-Trigger der Section, die die reinen Textzeilen ausdruckt:
Code:
CurrReport.SHOWOUTPUT((Type = 0) AND ("Attached to Line No."<>HiddenLine));

Das sorgt dafür, dass Textzeilen, die zu einer versteckten Zeile gehören, nicht gedruckt werden.
In den Sections, die die Daten aller anderen Zeilen ausgeben, habe ich die Folgende Bedingung in den vorhandenen Showoutput hinzugefügt:
Code:
 AND ("Line No."<> HiddenLine)

das verhindert den Ausdruck der versteckten Zeile selbst.
Zuletzt geändert von Michael Schumacher am 7. November 2006 20:44, insgesamt 1-mal geändert.

7. November 2006 20:35

Wenn bei "Gehört zu Zeilennr." ein Wert steht, muss geprüft werden, ob die Zeile mit dieser Zeilennr. in der aktuellen Lieferung eine Nullmenge hat. Dann muss diese auch noch unterdrückt werden.

7. November 2006 20:43

@Kowa:
genau das hab ich doch gerade beschrieben ;-)

7. November 2006 20:52

Michael Schumacher hat geschrieben:@Kowa:
genau das hab ich doch gerade beschrieben ;-)

Als ich mein Posting geschrieben habe, hörte deiner noch bei "ich such's mal raus...." auf :wink:

8. November 2006 10:44

OK, ich seh's gerade an der Uhrzeit, du könntest tatsächlich mit dem Schreiben Deiner Antwort begonnen haben, bevor ich um 19:33 gespeichert hatte, der Edit von 19:44 war nur die Beseitigung eines Fipptehlers äh Tippfehlers :-D
macht ja nix, ich musste halt nur erst mal die Kundendatenbank raussuchen, wo ich diesen angepassten Lieferschein gemacht hatte....