Lieferschein
Franz Leu
HalloIch möchte in einem Lieferschein nicht nur die aktuelle Menge sondern auch die totale Menge des Auftrages, die bereits gelieferte sowie die Restmenge ausgeben.
Die aktuelle Menge habe ich ja. Nun müsste ich noch mindestens zB. die totale Menge des Auftrages haben um den Rest zu rechnen.
Gibt's das in den Datenquellen irgendwie schon oder muss ich das per SQL selber 'holen'?
Danke
Franz
Philipp Knecht
HalloHab ne Query gemacht:
http://www.coresystems.ch/forum.html?&L=&tx_mmforum_pi1[action]=list_post&tx_mmforum_pi1[tid]=2934
fyi: Diese Information bauen wir auch in die zukünftigen DIN Layouts ein
hth
Franz Leu
:oCool, ist ja ein "Riesending". Muss ich wohl als Abfrage in B1 speichern und dann beim Layout mitgeben, richtig?
Könnte ich auch direkt im Report mit einzelenen Teilen aus sowas die Werte holen:
SELECT T0.DocNum, T1.Quantity, T1.OpenQty, T1.UseBaseUn, T1.PackQty, T1.ReleasQtty, T1.QtyToShip, T1.DelivrdQty, T1.OrderedQty FROM ODLN T0 INNER JOIN DLN1 T1 ON T0.DocEntry = T1.DocEntry
Müsste noch auf die aktuelle Docnum referenzieren, oder was spricht dagegen?
Irgendwie so ... gibt mir aber noch einen String zu Double Fehler:
LD.QueryData("SELECT T1.OrderedQty FROM ODLN T0 INNER JOIN DLN1 T1 ON T0.DocEntry = T1.DocEntry WHERE T0.DocNum ='"+ Document("DocNum") +"'")
Vielen Dank
Franz
Franz Leu
HalloHab das immer noch nicht gemacht da was anderes wieder mal dringender war :oops:
In der Version 1.93 ist das ja nun im DIN Layout drin und ich kann das da auch finden.
Wie kriege ich die Datenquelle OpenOrders nun auch in mein Layout rein, die kann ich da nicht finden?
Gefunden habe ich die Felder eigentlich ... aber muss das in ein eigenes DataBand wie im Muster oder kann ich die Felder auch in einem anderen Detail direkt innerhalb B1_Data.Document.DocumentRow verwenden?
Danke
Franz
Habe noch eine Ergänzung die mein Problem erklärt:
OpenOrders("Quantity") gibt die totale menge einer Position zurück, aber leider nur bis die Position 'erfüllt' ist, also keine OpenQty mehr hat und wechselt dann auf 0 als Rückgabewert.
IMHO ist das falsch und der Value sollte immer auf der totalen Zeilenmenge aus dem Auftrag bleiben.
Philipp Knecht
Hallo FranzDie Datensource ist soweit vorbereitet dass du diese auch direkt auf der Row benutzen kannst. Folge einfach der Struktur und du wirst die Quelle finden.
Prinzipiell geben wir dalle 3 Quantities ja mit (Original auf Auftrag, OpenQty auf Auftrag und die Liefermenge) desshalb verstehe ich nicht ganz was da noch fehlen soll.
hth
Franz Leu
Hallo Philipp,Wie ich in der Ergänzung geschrieben habe. Ja es sind alle drei Quantities da, aber nur solange eine Position nicht vollständig geliefert/erfüllt ist. Wenn im Auftrag OpenQty auf 0 steht, dann liefert euer 'Original auf Auftrag' 0 zurück anstelle der Auftragsmenge.
Franz
Philipp Knecht
Hallo FranzKann ich hier nicht nachvollziehen mit 2007A PL45.
Hab keinen Fall wo die Auftragsmenge mit '0' angezeigt wird.
Kann eigentlich gar nicht sein weil wir für die Auftragsmenge immer das Originalmengenfeld aus dem Auftrag referenzieren.
hth
Franz Leu
Habe hier 2005A SP01 PL48.Habe hier ein jpg angehängt mit einmal IO und einmal nicht IO.
Das Feld in der Spalte Auftragsmenge ist DocumentRow("RowOpenOrderQuantities.Quantity")
Weiss nicht was ich da falsch machen könnte.
Franz
Attachment
[url=http://www.coresystems.ch/wp-content/../wp-content/forum-image-uploads/mclion/LS.jpg]LS.jpg[/url]
Philipp Knecht
Hallo FranzDanke für deine Feststellung.
Falls eine Pos erledigt ist kommt sie auch nicht in die Datasource rein.
Das gibt dann 0 beim Zugriff (Zahlen wenn keine Daten Standardwert -> 0)
Dieses Verhalten kann nicht immer erwünscht sein deshalb:
Speichere folgende Query in B1 und hinterleg sie dem Layout dann klappt es auch mit erledigten Mengen.
Wir überlegen uns dies auch später in den Standard zu übernehmen und die erledigten Positionen erst im Layout rauszufiltern.
/* @@Overwrite
@@Name=[OpenOrderQuantities]
*/
SELECT T0.DocEntry AS ThisEntry, T0.LineNum AS ThisLine,T1.DocEntry,T1.LineNum,T1.OpenQty,T0.Quantity As Qty INTO #SWA_LD_PartialPositions FROM DLN1 T0
INNER JOIN RDR1 T1 ON T0.BaseEntry = T1.DocEntry AND T0.BaseLine = T1.LineNum AND T0.BaseType = '17'
WHERE T0.DocEntry = [%DocEntry]
SELECT * INTO #SWA_LD_PartialPositions1 FROM #SWA_LD_PartialPositions
UNION SELECT ALL [%DocEntry] AS ThisEntry, 0 AS ThisLine,T1.DocEntry,T1.LineNum,T1.OpenQty ,0 As Qty FROM #SWA_LD_PartialPositions T0
INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry
LEFT OUTER JOIN DLN1 T2 ON T1.DocEntry = T2.BaseEntry AND T1.LineNum = T2.BaseLine AND T2.BaseType = '17'
WHERE T2.DocEntry IS NULL
/* Save all foreign translations for a given DocNum and LangCode */
SELECT T1.PK AS ItemCode,CAST(T0.Trans AS NVARCHAR(4000)) AS MLDesc INTO #SWA_LD_OPENORDERITEMTRANS FROM MLT1 T0
INNER JOIN OMLT T1 ON T0.TranEntry = T1.TranEntry
INNER JOIN RDR1 T2 ON T1.PK = T2.ItemCode
INNER JOIN #SWA_LD_PartialPositions1 T3 ON T2.DocEntry = T3.DocEntry
WHERE T1.TableName='OITM' AND T1.FieldAlias = 'ItemName' AND T0.LangCode='[%LangCode]' GROUP BY T1.PK,CAST(T0.Trans AS NVARCHAR(4000))
SELECT T0.*, T1.ItemCode, CASE WHEN T3.MLDesc IS NOT NULL THEN T3.MLDesc ELSE T1.Dscription END AS DescML, T1.Quantity,T1.unitMsr, T1.LineStatus, T1.Text,T1.FreeTxt, T2.DocDueDate,T2.DocNum, T2.DocDate, T2.DocTotal, T2.CardCode, T2.CardName FROM #SWA_LD_PartialPositions1 T0
INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry AND T0.LineNum = T1.LineNum
INNER JOIN ORDR T2 ON T0.DocEntry = T2.DocEntry
LEFT OUTER JOIN #SWA_LD_OPENORDERITEMTRANS T3 ON T1.ItemCode = T3.ItemCode
hth
Franz Leu
Hallo PhilippHabe ich so gemacht und nun zeigt mein Report das gewünschte an. :D
IMHO sollte das schon im Standard so sein. RowOpenOrderQuantities.Quantity liefert sonst eine 'Unwahrheit' zurück, denn auch bei erledigter Position ist die Positionsmenge im Auftrag immer noch dieselbe, und nicht null. Und im Layout zu filtern ist ja auch keine grosse Sache.
Vielen Dank für die schnelle Hilfe!
Franz
Daniel Ebi
Hallo Philipp,ich muss Dir mal ein riesen Kompliment machen, das funktioniert wunderbar und einige unserer Kunden möchten das unbedingt nutzen.
Echt super Eure/Deine Unterstützung.
Liebe Grüsse
Daniel
Franz Leu
Hallo PhilipEs gibt da noch ein generelles Problem das gerade erst aufgetaucht ist.
Ich vermute mal die Referenzierung zurück zum Auftrag geschieht über die 'visuelle' Zeilenreferenz anstelle der internen Zeilennummer. Das ergibt folgendes Problem:
Auftrag hat 3 Zeilen. Für Zeile 3 wird ein Teil-Lieferschein erstellt, mit einer Zeile (Kopieren nach ... Zeile 1+2 löschen). Alle Felder wie OpenQty usw. beziehen sich nun auf die Zeile 1 des Auftrags, was natürlich falsche Werte liefert.
Könnt ihr das bitte möglichst dringend mal prüfen?
Vielen Dank
Franz
Franz Leu
Hierzu niemand von der coresuite crew eine Idee?Es bleibt mir sonst nicht anders übrig als die Infos wieder aus den Lieferpapieren 'auszubauen' :cry:
Danke
Franz
Daniel Ebi
Hallo Franz,habe das gleiche Problem! Wenn man es über "Kopieren von" und "Konfigurieren" macht, funktioniert es auch nicht.
Gruss
Daniel
Franz Leu
*remind*Gibts hierzu Lösungsvorschläge?
Meine Lieferscheine sind immer noch falsch.
Danke
Franz
Philipp Knecht
Hallo zusammenHabs hier mal genau so gemacht mit 3 Zeilen.
Resultat ist ok?
Habe 2007A PL47
hth
Attachment
[url=http://www.coresystems.ch/wp-content/../wp-content/forum-image-uploads/philipp/rückstände.JPG]rückstände.JPG[/url]
Franz Leu
Kann (darf) den printscreen leider hier nicht posten.Sende Dir per email.
Franz
Philipp Knecht
Hallo FranzHabe bei mir nochmals mit der gleichen Situation getestet und auch die OpenQty auf Zeilenebene angedruckt.
Und es stimmt...
Verwendest du ne eigene Query?
hth
Franz Leu
Hallo PhilipDa ich das Feld auch bei voll erledigten Zeilen des Auftrags mitandrucke hat mir das 0 zurück gegeben. Du hast mir dann eine query geschrieben die das ändert und die ich hinzugefügt habe.
/* @@Overwrite
@@Name=[OpenOrderQuantities]
*/
SELECT T0.DocEntry AS ThisEntry, T0.LineNum AS ThisLine,T1.DocEntry,T1.LineNum,T1.OpenQty,T0.Quantity AS Qty INTO #SWA_LD_PartialPositions FROM DLN1 T0
INNER JOIN RDR1 T1 ON T0.BaseEntry = T1.DocEntry AND T0.BaseLine = T1.LineNum AND T0.BaseType = '17'
WHERE T0.DocEntry = [%DocEntry]
SELECT * INTO #SWA_LD_PartialPositions1 FROM #SWA_LD_PartialPositions
UNION SELECT ALL [%DocEntry] AS ThisEntry, 0 AS ThisLine,T1.DocEntry,T1.LineNum,T1.OpenQty ,0 AS Qty FROM #SWA_LD_PartialPositions T0
INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry
LEFT OUTER JOIN DLN1 T2 ON T1.DocEntry = T2.BaseEntry AND T1.LineNum = T2.BaseLine AND T2.BaseType = '17'
WHERE T2.DocEntry IS NULL
/* Save all foreign translations for a given DocNum and LangCode */
SELECT T1.PK AS ItemCode,CAST(T0.Trans AS NVARCHAR(4000)) AS MLDesc INTO #SWA_LD_OPENORDERITEMTRANS FROM MLT1 T0
INNER JOIN OMLT T1 ON T0.TranEntry = T1.TranEntry
INNER JOIN RDR1 T2 ON T1.PK = T2.ItemCode
INNER JOIN #SWA_LD_PartialPositions1 T3 ON T2.DocEntry = T3.DocEntry
WHERE T1.TableName='OITM' AND T1.FieldAlias = 'ItemName' AND T0.LangCode='[%LangCode]' GROUP BY T1.PK,CAST(T0.Trans AS NVARCHAR(4000))
SELECT T0.*, T1.ItemCode, CASE WHEN T3.MLDesc IS NOT NULL THEN T3.MLDesc ELSE T1.Dscription END AS DescML, T1.Quantity,T1.unitMsr, T1.LineStatus, T1.Text,T1.FreeTxt, T2.DocDueDate,T2.DocNum, T2.DocDate, T2.DocTotal, T2.CardCode, T2.CardName FROM #SWA_LD_PartialPositions1 T0
INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry AND T0.LineNum = T1.LineNum
INNER JOIN ORDR T2 ON T0.DocEntry = T2.DocEntry
LEFT OUTER JOIN #SWA_LD_OPENORDERITEMTRANS T3 ON T1.ItemCode = T3.ItemCode
Philipp Knecht
Hi FranzHabe ne Vermutung.
Hier aber nur zur Sicherheit die Query die wir verwenden:
SELECT T0.DocEntry AS ThisEntry, T0.LineNum AS ThisLine,T1.DocEntry,T1.LineNum,T1.OpenQty,T0.Quantity As Qty INTO #SWA_LD_PartialPositions FROM DLN1 T0
INNER JOIN RDR1 T1 ON T0.BaseEntry = T1.DocEntry AND T0.BaseLine = T1.LineNum AND T0.BaseType = '17'
WHERE T0.DocEntry = [%DocEntry]
SELECT * INTO #SWA_LD_PartialPositions1 FROM #SWA_LD_PartialPositions
UNION SELECT ALL [%DocEntry] AS ThisEntry, 0 AS ThisLine,T1.DocEntry,T1.LineNum,T1.OpenQty ,0 As Qty FROM #SWA_LD_PartialPositions T0
INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry
LEFT OUTER JOIN DLN1 T2 ON T1.DocEntry = T2.BaseEntry AND T1.LineNum = T2.BaseLine AND T2.BaseType = '17'
WHERE T2.DocEntry IS NULL
/* Save all foreign translations for a given DocNum and LangCode */
SELECT T1.PK AS ItemCode,CAST(T0.Trans AS NVARCHAR(4000)) AS MLDesc INTO #SWA_LD_OPENORDERITEMTRANS FROM MLT1 T0
INNER JOIN OMLT T1 ON T0.TranEntry = T1.TranEntry
INNER JOIN RDR1 T2 ON T1.PK = T2.ItemCode
INNER JOIN #SWA_LD_PartialPositions1 T3 ON T2.DocEntry = T3.DocEntry
WHERE T1.TableName='OITM' AND T1.FieldAlias = 'ItemName' AND T0.LangCode='[%LangCode]' GROUP BY T1.PK,CAST(T0.Trans AS NVARCHAR(4000))
SELECT T0.*, T1.ItemCode, CASE WHEN T3.MLDesc IS NOT NULL THEN T3.MLDesc ELSE T1.Dscription END AS DescML, T1.Quantity,T1.unitMsr, T1.LineStatus, T1.Text,T1.FreeTxt, T2.DocDueDate,T2.DocNum, T2.DocDate, T2.DocTotal, T2.CardCode, T2.CardName FROM #SWA_LD_PartialPositions1 T0
INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry AND T0.LineNum = T1.LineNum
INNER JOIN ORDR T2 ON T0.DocEntry = T2.DocEntry
LEFT OUTER JOIN #SWA_LD_OPENORDERITEMTRANS T3 ON T1.ItemCode = T3.ItemCode
Hast du auch die Verlinkung:
In deiner Layoutdef drin (unter Abfragen Query1 Row (in der Grp Document) Query2 OpenOrderQuantities und die obige Verlinkung) ?
hth
Franz Leu
Nö ... versuch ich ..Ich bin zu doof :bang:
Wie kommt das hier rein?
Muss ich die overwritwe query ersetzen?
Philipp Knecht
Hallo FranzNein Links Document:Row auswählen
Recht Deine Query
LinkField1 "ThisLine" LinkField2 LineNum
Oder einfach Deine Query löschen dann verwendet er den Standard welcher unterdessen ja auch funktioniert.
hth
Franz Leu
Hallo PhilipDas mit dem Query löschen funktioniert leider nicht, da dann für erfüllte Positionen 0 zurück kommt.
Ausgefüllt gemäss Deinem Vorschlag bekomme ich wieder die Auftragsmenge aus der Zeile 1 anstelle der Menge aus der Zeile 3.
Geht also leider nocht nicht.
Franz
Philipp Knecht
Hallo FranzSchick mir mal das .rst File (template)
Ev. sehe ich da was.
hth
Franz Leu
PhilippKonntest Du das in der Zwischenzeit mal anschauen?
Danke
Franz
Franz Leu
.. ich komme nochmal damit ... :oops:Habe eben das update auf V2 gemacht. Nun funktioniert es "teilweise". Mehrere Auftragszeilen -> Teillieferung irgend einer Zeile: Alles OK.
Wenn zwischen den Auftragszeilen aber Textzeilen existieren funktioniert die Referenzierung nicht mehr.
Kannst Du das bitte mal simulieren?
Vielen Dank
Franz
Philipp Knecht
Wir haben den Fehler gefunden.War ne falsche Verlinkung auf Positionsebene.
Für den GEsamtzusammenzug hat dies keinen Einfluss und ist in der nächsten Version gefixt.
hth
0
Please sign in to leave a comment.
Comments
0 comments