rm24430
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| rm24430 [2018/02/07 10:29] – [Testszenario] kalaschnikow | rm24430 [2018/04/23 15:57] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== rm#24430 New Archiving rule - PO SL is set to archivd despite status not correct ====== | ||
| + | [[https:// | ||
| + | |||
| + | Ursprüngliche Tickets :\\ | ||
| + | [[https:// | ||
| + | [[https:// | ||
| + | |||
| + | Ticket: | ||
| + | |||
| + | PO SL should not be marked as archivable if one or more invoices of the belonging PO item do NOT have the cinvoicecustomerstatus pay or rej. | ||
| + | |||
| + | Fragen: | ||
| + | * Soll eine PO SL als " | ||
| + | |||
| + | |||
| + | |||
| + | Lösungsideen: | ||
| + | <code sql> | ||
| + | -- direkt: 2 x zählen und Anzahl der Sätze vergleichen | ||
| + | select invitem2.cLineItemId, | ||
| + | INNER JOIN (select count(*) countAll, cLineItemid | ||
| + | |||
| + | -- angeblich einfachere Lösung, die aber bei < | ||
| + | SELECT posched.CLINEID, | ||
| + | INNER JOIN TAIRPARTNERRELATION pr ON pr.CRELATIONID = posched.CPRELATIONID | ||
| + | INNER JOIN TAIRPOLINEITEM lineitem ON lineitem.CPOSNUM | ||
| + | INNER JOIN TAIRPOINVITEM invitem ON invitem.clineItemID | ||
| + | INNER JOIN TAIRPOINVITEM invitem2 ON invitem2.clineItemID | ||
| + | </ | ||
| + | |||
| + | Was funktioniert: | ||
| + | |||
| + | <code sql> | ||
| + | SELECT posched.CLINEID, | ||
| + | INNER JOIN TAIRPARTNERRELATION pr ON pr.CRELATIONID = posched.CPRELATIONID | ||
| + | INNER JOIN TAIRPOLINEITEM lineitem ON lineitem.CPOSNUM | ||
| + | AND lineitem.CREFHEADERID = posched.CREFHEADERID | ||
| + | INNER JOIN TAIRPOINVITEM invitem ON invitem.clineItemID | ||
| + | WHERE posched.CARCHIVABLE | ||
| + | AND invitem.clineItemID | ||
| + | SELECT invitem2.cLineItemId FROM ( ( | ||
| + | SELECT COUNT(*) countValid, cLineItemId FROM TAIRPOINVITEM WHERE CINVOICECUSTOMERSTATUS IN (' | ||
| + | INNER JOIN (SELECT COUNT(*) countAll, cLineItemid FROM TAIRPOINVITEM GROUP BY cLineItemid ORDER BY CLINEITEMID DESC) invitem3 | ||
| + | WHERE countAll=countValid ) | ||
| + | AND lineitem.CFULLYINVOICED | ||
| + | |||
| + | -- als INNER JOIN: | ||
| + | |||
| + | SELECT posched.CLINEID, | ||
| + | INNER JOIN TAIRPARTNERRELATION pr ON pr.CRELATIONID = posched.CPRELATIONID | ||
| + | INNER JOIN TAIRPOLINEITEM lineitem ON lineitem.CPOSNUM | ||
| + | AND lineitem.CREFHEADERID = posched.CREFHEADERID | ||
| + | INNER JOIN TAIRPOINVITEM invitem ON invitem.clineItemID | ||
| + | INNER JOIN (SELECT invitem2.cLineItemId FROM ( ( | ||
| + | SELECT COUNT(*) countValid, cLineItemId FROM TAIRPOINVITEM WHERE CINVOICECUSTOMERSTATUS IN (' | ||
| + | INNER JOIN (SELECT COUNT(*) countAll, cLineItemid FROM TAIRPOINVITEM GROUP BY cLineItemid ORDER BY CLINEITEMID DESC) invitem3 | ||
| + | WHERE countAll=countValid) | ||
| + | WHERE posched.CARCHIVABLE | ||
| + | AND lineitem.CFULLYINVOICED | ||
| + | |||
| + | -- Lösung(?) | ||
| + | |||
| + | SELECT posched.CLINEID, | ||
| + | INNER JOIN TAIRPARTNERRELATION pr ON pr.CRELATIONID = posched.CPRELATIONID | ||
| + | INNER JOIN TAIRPOLINEITEM lineitem ON lineitem.CPOSNUM | ||
| + | INNER JOIN TAIRPOINVITEM invitem ON invitem.clineItemID | ||
| + | INNER JOIN (SELECT COUNT(*) countValid, cLineItemId FROM TAIRPOINVITEM WHERE CINVOICECUSTOMERSTATUS IN (' | ||
| + | INNER JOIN (SELECT COUNT(*) countAll, cLineItemId FROM TAIRPOINVITEM GROUP BY cLineItemid) invitem3 on lineitem.CPOSNUM = posched.CPOSNUM AND lineitem.CREFHEADERID = posched.CREFHEADERID and invitem.cLineItemId = invitem3.cLineItemId | ||
| + | WHERE posched.CARCHIVABLE | ||
| + | AND lineitem.CFULLYINVOICED | ||
| + | AND pr.CCUSTOMERCGID | ||
| + | AND countValid = countAll | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | Misc: | ||
| + | <code sql> | ||
| + | SELECT posched.CLINEID, | ||
| + | INNER JOIN TAIRPARTNERRELATION pr ON pr.CRELATIONID = posched.CPRELATIONID | ||
| + | INNER JOIN TAIRPOLINEITEM lineitem ON lineitem.CPOSNUM | ||
| + | INNER JOIN TAIRPOINVITEM invitem ON invitem.clineItemID | ||
| + | | ||
| + | WHERE | ||
| + | lineitem.CLINEITEMID = 58250 | ||
| + | -- and posched.CARCHIVABLE | ||
| + | AND | ||
| + | (invitem.CINVOICECUSTOMERSTATUS = ' | ||
| + | </ | ||
| + | |||
| + | Nützliche SQL-Befehle um Flags zurückzusetzen etc. : | ||
| + | |||
| + | <code sql> | ||
| + | SELECT * FROM TAIRPOINVITEM where CLINEITEMID=5755079 | ||
| + | |||
| + | update TAIRPOINVITEM set CINVOICECUSTOMERSTATUS=' | ||
| + | |||
| + | -- oder um nur einen Satz auf ' | ||
| + | update TAIRPOINVITEM set CINVOICECUSTOMERSTATUS=' | ||
| + | |||
| + | |||
| + | SELECT * FROM TAIRPOLINEITEM where CLINEITEMID=5755079 | ||
| + | |||
| + | SELECT CARCHIVABLE FROM TAIRPOSCHEDULE where CREFHEADERID=545126 | ||
| + | |||
| + | update TAIRPOSCHEDULE set cArchivable= null where CREFHEADERID=545126 | ||
| + | </ | ||
| + | |||
| + | ===== Testszenario ===== | ||
| + | Dateien sind im Verzeichnis '' | ||
| + | |||
| + | Bei der Order einfach die PONumber ändern und die Nachricht importieren. | ||
| + | |||
| + | Dann, um eine Invoice zu erstellen, zuerst folgendes SQL ausführen: | ||
| + | <code sql> | ||
| + | SELECT posched.CREFHEADERID, | ||
| + | INNER JOIN TAIRPOLINEITEM poline ON posched.CREFHEADERID = poline.CREFHEADERID | ||
| + | where posched.cLinePONUM like ' | ||
| + | |||
| + | </ | ||
| + | wo ' | ||
| + | Dann bei der BillableObject Nachricht folgende Felder anpassen: | ||
| + | * ObjectId -> muss gleich TAIRPOSCHEDULE.cRefHeaderId sein | ||
| + | * ObjectPositionId -> muss gleich TAIRPOLINEITEM.cLineItemId sein | ||
| + | * MessageReference -> muss gleich der ClinePONUM sein (in unserem Fall '' | ||
| + | |||
| + | Dann die BillableObject Nachricht importieren. | ||
| + | |||
| + | Der Job wird nur solche Nachrichten bearbeiten, deren Datum kleiner als ein bestimmter Wert ist. D.h. wir müssen noch das Datum in der Tabelle prärarieren: | ||
| + | <code sql> | ||
| + | update TAIRCHANGELOG set cActionTime=1217998391734 where CSUBOBJECTREFERENCE=(SELECT cLineId from TAIRPOSCHEDULE where cLinePONUM=' | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Testdaten für SQL Abfragen ===== | ||
| + | |||
| + | INSERT Invoice: | ||
| + | |||
| + | <code sql> | ||
| + | INSERT INTO TAIRPOINVITEM | ||
| + | (CINVOICEITEMID, | ||
| + | (141 , | ||
| + | ; | ||
| + | </ | ||
| + | |||
| + | ===== Lösung ===== | ||
| + | |||
| + | Die gewählte Lösung: | ||
| + | |||
| + | <code sql> | ||
| + | SELECT posched.CLINEID, | ||
| + | INNER JOIN TAIRPARTNERRELATION pr ON pr.CRELATIONID = posched.CPRELATIONID | ||
| + | INNER JOIN TAIRPOLINEITEM lineitem ON lineitem.CPOSNUM | ||
| + | INNER JOIN TAIRPOINVITEM invitem ON invitem.clineItemID | ||
| + | INNER JOIN (SELECT COUNT(*) countValid, cLineItemId FROM TAIRPOINVITEM WHERE CINVOICECUSTOMERSTATUS IN (' | ||
| + | INNER JOIN (SELECT COUNT(*) countAll, cLineItemId FROM TAIRPOINVITEM GROUP BY cLineItemid) invitem3 ON lineitem.CPOSNUM = posched.CPOSNUM AND lineitem.CREFHEADERID = posched.CREFHEADERID AND invitem.cLineItemId = invitem3.cLineItemId | ||
| + | WHERE posched.CARCHIVABLE | ||
| + | AND lineitem.CFULLYINVOICED | ||
| + | AND pr.CCUSTOMERCGID | ||
| + | AND countValid = countAll | ||
| + | </ | ||
