====== 12.10.2017 Mittwoch ======
===== rm#21018 !AIRS_PRD: DA remains in Status "Partially received", although all connected PO´s Status "Received" =====
https://cust-projects.seeburger.de/redmine/issues/21018
==== TODO ====
* **+** Commit
===== rm#20874 CONCESSION - System error (S/N exceeding 4.000 characters) =====
https://cust-projects.seeburger.de/redmine/issues/20874
* **+** SQL erstellen
* ''SUM(Quantity) OVER (PARTITION BY AccountID ORDER BY ID)'' würde wahrscheinlich tun ([[https://brainfizzle.wordpress.com/2014/09/15/oracle-listagg-ora-01489-result-of-string-concatenation-is-too-long/|Link]])
SELECT
CNCRHEADERID,
CSNOPOSNR,
cSERIALNO,
SUM( LENGTH(cSERIALNO) + 1 ) OVER ( partition by CNCRHEADERID ORDER BY CSNOPOSNR ASC ) cTotalLen
FROM TAIRNCR_SERIALNO
Mein jetziges SQL:
SELECT tAirPartnerRelation.*, tAirOrderingOfficer.*, TAIRMATERIAL.*, TAIRNCRHEADER.*, serial.*
FROM TAIRNCRHEADER
INNER JOIN tAirPartnerRelation ON TAIRNCRHEADER.CREFRELATIONID = tAirPartnerRelation.CRELATIONID
INNER JOIN tAirOrderingOfficer ON TAIRNCRHEADER.CREFOFFICERID = tAirOrderingOfficer.CORDERINGOFFICERID
INNER JOIN TAIRMATERIAL ON TAIRNCRHEADER.CREFMATID = TAIRMATERIAL.CMATERIALID
LEFT JOIN (SELECT CNCRHEADERID serialHeaderId, CSERIALNO CSERIALNUM FROM (SELECT CNCRHEADERID, CASE WHEN CNT <= 100 THEN cSERIALNO ELSE (CASE WHEN CSERIALNO IS NOT NULL THEN CSERIALNO||'...' ELSE CSERIALNO END) END cSerialNo FROM
(SELECT COUNT(*) as cnt, CNCRHEADERID, LISTAGG(CASE WHEN ROWNUM <= 100 THEN CSERIALNO END, ';') within group (order by CSNOPOSNR) AS CSERIALNO FROM TAIRNCR_SERIALNO group by CNCRHEADERID)))
serial on TAIRNCRHEADER.CNCRHEADERID=serial.serialHeaderId
WHERE 1 = 1 AND ROWNUM <= 5000 AND (cCustomerPortalGroup IN (1)) AND (cSupplierCPId IN (-1000002,10006106,10006107)) AND cSupplierCGId = 100027 AND CISUNREGSUPPLIER = 0 AND CNCRHEADERID = 1604
Problem ist, dass die folgende Abfrage für RowNums > 100 falsche Werte liefert:
SELECT COUNT(*) as cnt, CNCRHEADERID, LISTAGG(CASE WHEN ROWNUM <= 100 THEN CSERIALNO END, ';') within group (order by CSNOPOSNR) AS CSERIALNO FROM TAIRNCR_SERIALNO group by CNCRHEADERID
=== Lösung ===
SELECT
CNCRHEADERID,
MAX (cTotalLen) AS cTotalLenMax,
CASE WHEN MAX(cTotalLen) > 4000 THEN listAgg(cSERIALNO,',') within group (order by CSNOPOSNR)||'...' ELSE listAgg(cSERIALNO,',') within group (order by CSNOPOSNR) END as cSerialNoAgg
FROM
(
select
cNCRHEADERID,
cSNOPOSNR,
CASE WHEN cTotalLen > 3997 THEN SUBSTR(cSERIALNO, 1, LENGTH(cSerialNo) - (cTotalLen - 3997)) ELSE cSerialNo END AS cSerialNo,
cTotalLen
from
(
SELECT
CNCRHEADERID,
CSNOPOSNR,
cSERIALNO,
SUM( LENGTH(cSERIALNO) + 1 ) OVER ( partition by CNCRHEADERID ORDER BY CSNOPOSNR ASC ) cTotalLen
FROM TAIRNCR_SERIALNO
)
) group by cNCRHEADERID
=== Notes ===
* Folgende Fälle speziell prüfen:
* KEINE serielle Nummern
* 1 serielle Nummer
* Mehrere serielle Nummern, deren Gesamtlänge über 3997 Zeichen liegt
* Mehrere serielle Nummern, deren Gesamtlänge unter 3997 Zeichen liegt
===== rm#22382 CR 22025: Concession - Integration of "Spot-It" application (Airbus Proof of Concept) =====
https://cust-projects.seeburger.de/redmine/issues/22382
* **-** Implementieren
* **-** Meinen Stash anwenden
* **-** Testen
* **-** Commiten
* **-** Harazim im Redmine antworten
===== rm#21582 EDI Scheduler does not remove cascade ID in parallel scenarios =====
https://cust-projects.seeburger.de/redmine/issues/21582
Das Ticket steht momentan auf "ON HOLD" (inoffiziell). Ich konnte es leider nicht nachvollziehen, der Burkhard hat aber keine Zeit, um mit mir das noch ein Mal durchzuspielen. **Upd.**: Er hat es alleine versucht und es hat auch nicht geklappt.
Notizen siehe [[http://vwiki.wialon-consulting.de/doku.php?id=09.10.2017_montag#rm_21582_edi_scheduler_does_not_remove_cascade_id_in_parallel_scenarios|09.10.2017]].
===== Abend =====
----
==== Steuervoranmeldung ====
* **-** Rechnungen abschicken
==== DiBa Konto prüfen ====
* **-** Gucken wie die Überweisung möglich ist
==== Wiatrack ====
* **-** Log von gestern und heute anschauen (sind Lücken vorhanden?)
==== Bauer Gear Motor ====
* **-** mit der eigenen App versuchen sich mit dem Board zu verbinden und Tastendrücke abzufangen