User Tools

Site Tools


airsupply_allgemeine_informationen

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
airsupply_allgemeine_informationen [2019/09/04 16:02] – [POEMA / OSP / Unreg] kalaschnikowairsupply_allgemeine_informationen [2020/05/14 15:10] (current) – [POEMA / OSP / Unreg] kalaschnikow
Line 1: Line 1:
 +====== Airsupply Allgemeine Informationen ======
  
 +
 +===== Specs =====
 +
 +https://ext.supplyon.de/service/airsupply/SitePages/Home.aspx - in SupplyOn Confluence
 +
 +===== ASN aka DA (Despatch Advice) =====
 +
 +Advanced Shipping Notification aka Despatch Advice
 +
 +==== Misc ====
 +=== Create a new UX / UE number for import. ===
 +Create a new ASN on the UI, then add 1 to the second to last place of generated UX/UE number (the last place is the checksum). Then try to import the ASN. It won't work because of wrong checksum, but the importer will calculate the right checksum and it will write it in the error message.
 +
 +
 +===== PO (Purchase Order) =====
 +
 +The invoice information is held in the table ''TAIRPOLINEITEM'' (''cInvoice*'' columns) and seems to be written in the database with the help of BillableObject import ( see ''BillableObjectStatusInboundXMLHandler.processRootElement()'').
 +
 +==== PO Status ====
 +  * NOP -> New Order Published
 +  * SAWC -> Supplier Accepted With Changes
 +  * OPEN
 +  * CANREQ -> Cancellation Request
 +  * CANCELLED
 +  * PARTSHIP -> Partially Shipped
 +  * SHIPPED
 +  * PARTREC -> Partially Received
 +  * RECEIVED
 +  * CCOR -> Customer Changed Order Request
 +  * SCOR -> Supplier Changed Order Request
 +  * REJECTED
 +
 +==== Testing PO "Send Mail" ====
 +Mit der "Send Mail" Funktionalität kann man dem anderen Benutzer eine bestimmte PO "zeigen". Der Benutzer muss im 
 + System existieren. Testen kann man diese Funktionalität auf folgende Weise:
 +  * Eine PO in der PO Overview maske selektieren und auf "Send Mail" Button klicken
 +  * Es soll ein Fenster vom Mail-Client aufgehen in dem ein Link drinnen ist.
 +  * Link kopieren
 +  * In dem Browser abmelden (wichtig, da sonst die alte Session bleibt, wir brauchen aber eine neue)
 +  * Link in die Adresszeile reinkopieren 
 +  * Den Rechnernamen in dem Link anpassen ("localhost" mit "kalaschnikowv01" ersetzen) und "Enter" drücken. Auf einem nicht-Lokalen System ist die Anpassung nicht notwendig.
 +  * Login-Maske wird angezeigt. Dort anmelden.
 +  * Der Browser soll nun die gewählte PO anzeigen.
 +
 +==== POEMA / OSP / Unreg ====
 +
 +=== Variante 1 ===
 +
 +//Diese Beschreibung ist leider unvollständig, da ich grad jetzt das auf diese Art nicht hinbekomme.//
 +
 +Als Voraussetzung müssen im SOAPUI 2 Services laufen:
 +  * Business Directory
 +  * Api_Sopi_Mockservice
 +
 +Um die POEMA (aka OSP aka One Shot POs) POs testen zu können muss man sich auf der folgenden Seite anmelden:
 +  * http://kalaschnikowv01:8380/idp-sig-unreg oder http://kalaschnikowv01:8380/unreg
 +
 +Daraufhin wird die Seite mit den ganzen Benutzern angezeigt, sowie mit einem Feld wo man ein Token eingeben muss. Das Token bekommt man aus der Tabelle TPORTALACL. Ungefähr so: 
 +<code sql>
 +SELECT * FROM TPORTALACL where CEMAIL like '%kalaschnikow%' order by cCreationDate desc
 +</code>
 +
 +Dann das Token von der notwendigen cBOID (Business Object ID, z.B. PO header Id) eingeben und als entsprechende Supplier User anmelden. Die User Id sollte dabei stehen (CSMAID?).
 +
 +(Wie oben erwähnt hat diese Art leider nicht funktioniert. Grundsätzlich müsste es aber auf diese Art klappen. Und es hat schon mal bei mir geklappt.)
 +
 +=== Variante 2 ===
 +
 +//Das war ein Tipp von Burkhard. Für meine Zwecke hat es erstmal ausgereicht.//
 +
 +Die Ansicht bekommt man den Code manipiluert. 
 +SASUserContext:
 +<code java>
 +    public boolean isUnregSupplier() {
 +        return true;
 +//        return this.unregisteredSupplier;
 +    }
 +</code>
 +
 +Evtl. muss man auch die ''checkForSessionBlockingPage()'' null liefern lassen.
 +
 +Dann sich als Supplier anmelden. Die Sicht sollte der eines unregistrierten Suppliers entsprechen.
 +
 +=== Mails testen ===
 +
 +Als Mailserver kann man ''Smtp4dev'' verwenden. Um dies zu tun: 
 +  * Server starten (z.B. per TypeAndRun)
 +  * http://localhost:5000 aufrufen
 +
 +== First OSP ==
 +
 +''Api_Sopi_Mockservice'' should deliver as response to “createBOAccessTokensSCD” ''<userRegistered>**false**</userRegistered>'' for your user.
 +
 +== New OSP ==
 +
 +''Api_Sopi_Mockservice'' should deliver as response to “createBOAccessTokensSCD” ''<userRegistered>**true**</userRegistered>'' for your user. 
 +
 +== MAJOR ==
 +
 +  * First import a OSP (''<SO-Order type="CREATE"...'')
 +  * After that change the content of an important field of this OSP and import it again (''<SO-Order type="CHANGE"''). Important field is for example field ''CollabRequestedQuantity'' or ''CollabPromisedQuantity''.
 +
 +== MINOR ==
 +
 +===== OTD (On Time Delivery) =====
 +
 +Dieser "Mini-Prozess" (eigentlich ein Teil des PO-Prozesses) ist dafür gedacht um dem Kunden die Information zu liefern, die ihm hilft über die "Qualität" eines Lieferanten zu urteilen.
 +
 +Für jede PO, die an diesem Prozess teilnimmt (die Konfiguration hängt an dem Kunden), wird beim Übergang in den finalen Status (RECEIVED) eine OTD-Line erstellt. Und beim Rückkehr aus diesem Status wird diese OTD Line wieder gelöscht.
 +
 +Für die einfachen Tests (und wenn es passend ist) kann man OTD-Lines auf folgende Weise erzeugen:
 +  - eine Order raussuchen, die bereits eine OTD-Line hat
 +  - Status dieser Order auf RECEIVED setzen. Wenn er bereits auf RECEIVED steht, muss man ihn erstmal auf was anderes setzen.
 +  - Dann erscheint der OTD-Satz in der OTD-Übersicht. Der Customer kann dann aber keine Aktionen darauf ausführen. D.h. man muss sich als Lieferant anmelden und erst dann gehen die Buttons "Accept" oder "Reject".
 +
 +
 +Die "Cause"-Listen werden aus der Tabelle TOTD_CAUSES erzeugt. Dabei werden die Daten für die Corporate Group Id (NICHT OrgId!) ausgesucht. Die Id einer Corporate Group ist in der Tabelle TORGANIZATION_SCD bei der jeweiligen Organization in der Spate CParentId eingetragen.
 +
 +Die PO, die im OTD Prozess teilnehmen soll, muss Flag "OTDRelevant" auf "true" stehen haben. Außerdem die Organization muss für das Prozess OTD freigeschaltet sein. Das wird in der Tabelle tOTD_OrgConfig gemacht (1=freigeschaltet).
 +
 +See also:\\ 
 +[[https://ext.supplyon.de/service/airsupply/Shared Runmode Documents/OTD|OTD Spezifikationen bei SupplyOn]]\\ 
 +[[https://cust-projects.seeburger.de/redmine/projects/supplyon-common-otd/wiki|Seeburger Wikipage über OTD]]\\ 
 +
 +Meine Testdaten / User / etc. kann man u.a. im Ticket [[rm29905]] abgucken.
 +
 +==== Organizations with Enabled OTD ====
 +
 +To see the table open the following as source code!
 +
 +
 +id      |   name                      | name3           otd enabled     buyer/seller        group id
 +==================================================================================================================
 +2017484 |   TST_GBU_BCG1       |      GBU_BCG1     1               buyer               group (of 2017488)
 +2017488 |   TST_GBU_B11               |  GBU_CG1_B1     1               buyer               2017484
 +101700 |   Airbus France       |      AFR1         1               buyer               100011
 +101659 |   Airbus Deutschland       |  AGE             1               buyer               100011
 +101715 |   Goodrich Actuation Systems| GOODR         1               seller              100027
 +2017479 |   PO Buyer Industrial       | PO Buyer Indust 1               buyer               group (of 2017480)
 +2017480 |   PO Buyer Industrial France| POFR         1               buyer               2017480
 +
 +===== NCR aka Concession =====
 +NCR ist eine Nachricht, die vom Lieferanten geschickt wird, wenn der Lieferant irgendwas nicht garantieren kann (Qualität?/Liefermenge?). Dann muss der Kunde diese NCR akzeptieren oder ablehnen.
 +
 +==== Cancellation request ====
 +
 +To send a cancellation request supplier must click on "Cancel NCR" button. But this button should be first enabled. And it will be enabled only if the NCR is status INCOMPLETE. So before we need to set the status to INCOMPLETE. To do it we need to send a NCR Response message (with JMS client). The message can be found under ''D:\development\testdata\ncr'' . 
 +
 +
 +==== Testing NCR Upload ====
 +There are 2 upload scenarios: creation and update.
 +To test both at first send a NCR and download it. Then:
 +  * for Create: change the value Supplier Ref.No. (first column in CSV)
 +  * for Update: don't change (!) the value Supplier Ref.No., but change something different (E.g. affected quantity). It is also no good idea to change relation fields (customer/supplier group, orgname, CPs etc.) or material reference fields. 
 +
 +
 +==== Processes and Definitions ====
 +
 +There are the following processes and their process definion builders:
 +  * NCR -> //ConcessionProcessDefinition//
 +    * Concession -> //ConcessionProcessDefinition//
 +      * Airbus -> //AirbusProcessDefinition//
 +        * Equipment (POE) -> //EquipmentProcessDefinition//
 +        * StandardPart (POM) -> //StandardPartProcessDefinition//
 +      * NonAirbus -> //NonAirbusProcessDefinition//
 +    * NOE -> //NoeProcessDefinition//
 +
 +The process definition builders are used to **manage fields**, their visibility and "mandatoriness".
 +
 +To **manage buttons** visibility and "mandatoriness" the following schema will be used:
 +  * on the server side we define it in the screen (e.g. ''NCRDetailsScreen.getButtonSpec()''). We define there the json, which will be sent to the client. Then the client (our JavaScript code) decides if the button should be visible or not, mandatory or optional. 
 +
 +
 +==== Status changes ====
 +
 +=== All status ===
 +
 +**//getAllCustomerStatus()//**: [OPEN, WIP, APCA, REFUSED, REWORK, REPAIR, ACCEPTED, SCRAP/REJECTED, CANCELLATION REQUEST, CANCELLED, PREVALIDATION, INACTIVE]
 +
 +**//getAllSupplierStatus()//**: [DRAFT, INCOMPLETE, REVISION, SPSA, CID]
 +
 +**//getAllStatus()//**: [DRAFT, INCOMPLETE, REVISION, SPSA, CID, OPEN, WIP, APCA, REFUSED, REWORK, REPAIR, ACCEPTED, SCRAP/REJECTED, CANCELLATION REQUEST, CANCELLED, PREVALIDATION, INACTIVE]
 +
 +=== Allowed status changes ===
 +
 +Allowed status changes are sketched in the following document: https://doc.supplyon.de/pages/viewpage.action?pageId=64588194
 +
 +The implementation is in the following classes:
 +
 +  * ''AirbusConcessionStatusModel'' for Concession Airbus
 +  * ''ConcessionStatusModel'' for Concession Non Airbus
 +  * ''NOEStatusModel'' for NOE
 +
 +See also the class hierarchy of ''*StatusModel'' classes.
 +
 +**Important:** The checks whether a status change is allowed or not are made in ''NCRStateEngine''. After that every field will be checked in ''NCRVerifier''.
 +
 +=== Prevalidation status ===
 +
 +The status PREVALIDATION can be enabled for Buyer organization in ''tOrganization_SCD.cPrevalidation''. To enable it following values are possible:
 +  * POM - enable only for "Material and Part" (aka POM) concessions
 +  * 1 - enable for all concessions
 +
 +===== NoE (Notification of Escape) =====
 +NoE has been started as a "copy" of NCR process.
 +
 +NoE does not have M2M interface. 
 +
 +To set status of a NoE to 'INCOMPLETE' login as Buyer and ...
 +===== VMI (Vendor Managed Inventory) =====
 +
 +Der Prozess besteht aus folgenden Screens:
 +  * VMI summary -> Übersicht aller VMI Sätze, in der man sie filtern und sortieren kann.
 +  * Inventory projection -> Übersicht des Zustands des Lagers aufgeteilt nach Tagen. Dort werden Lieferungen und Bedarfe grafisch und tabellarisch angezeigt.
 +  * ...
 +==== Misc ====
 +  * Beim Erstellen von einer ASN aus einer VMI wird die Liefermenge (Shipped Quantity) auf ''null'' gesetzt.
 +  * Auf dem Screen "VMI Summary" ist es möglich als Buyer "Planned Receipts" zu uploaden. Um diese Funktionalität zu testen kann man die Daten vorher downloaden. Der Knopf heißt "Download > Planned Receipt full (CSV)"
 +  * Einen Bedarf (Demand) kann man generieren, wenn man eine DELFORV(?) Nachricht importiert. Oder (Udo: wenn das genauso wie beim SCM ist) kann man Bedarfe als Buyer auch über GUI eingeben.
 +
 +
 +===== Excursions =====
 +
 +Excursions sind Anleitungen für den Benutzer, die man auf einem bestimmten Screen anschauen kann. Die Excursions werden mit dem Excursion Editor manipuliert. Der Link zum Editor befindet sich oben rechts (funktioniert als Toggle).
 +Eine bestimmte Excursion für einen bestimmten Screen wird geladen, wenn der aktuelle Benutzer die ensprechende Rechte hat.
 +
 +===== Jobs =====
 +
 +==== Id für einen neuen Job finden ====
 +
 +  * Auf PRD nachschauen, was die höchste Id ist, die unter 500000 liegt (die über 500000 sind die, die händisch vom Smartiadmin angelegt wurden)
 +  * Dann in den aktuellen SQL-Skripten schauen, welche JobId die höchste ist.
 +  * Stand 19.02.2020 -> 185000
 +
 +
 +===== Nachrichten exportieren =====
 +
 +Export an sich wird über einen Custom Job angestoßen (s. Smartiadmin). Normalerweise heißen solche Jobs "Scheduler". Außerdem muss eine entsprechende Nachrichtenart registriert werden. Diese Nachrichtenart muss im Scheduler-Job angegeben werden. Die Nachrichtenarten sind aber kodiert. Momentan weiß ich nur, dass 20 - Order bedeutet.
 +
 +===== Z_Misc =====
 +
 +==== /airsupply/src/resources/airsupply.war/jsp/base/md/oo/spinplugin.jsp ====
 +
 +This are only temporary changes for local testing. (I have them from Volker Hanf)
 +
 +Line 158
 +<code>
 +//req.setRequestHeader("X-IAM-Call-Back-Ctx-Path", "<%=request.getContextPath() + "/base/md/oo/OrderingOfficerServlet/store"%>");
 +</code>
 +Line 362
 +
 +<code>
 +return postData("<%=context.getConfig().getString("OOC_IAM_CALLBACK_URL", "/base/md/oo/spinplugin/store")%>", data);
 +</code>
 +
 +Line 421 (button to test -> click on it)
 +<code>
 +<input type="button" value="save" onclick="saveData();"/>
 +</code>
 +
 + 
 +
 + 
 +
 +Link to open the JSP page
 +
 +http://localhost:8380/base/md/oo/spinplugin?ObjUserID=SMA0000N0N1A&ObjCompanyID=101700&userID=SMA0000N0N1A&mode=EDIT&randomKey=99000184422086538