User Tools

Site Tools


materialstammhistory

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
materialstammhistory [2023/02/21 13:46] – [Code] kalaschnikowmaterialstammhistory [2023/04/13 11:11] (current) – [ToDo] kalaschnikow
Line 1: Line 1:
 +====== Materialstamm History ======
  
 +My first productive task by W & G for [[efc ERP]].
 +
 +  * Implement the History functionality for "Materialstamm" in [[efc ERP]] (Klaus: Anzeige einer Änderungshistorie für MATBAS, MATSAL, MATPUR, MATFIN (diese HIST-Repositories gibt es schon))
 +      * ***** MATBAS (Materialbasisdaten)
 +        * the solution already exists => I can copy it for others
 +      * **-** MATSAL (Materialvertriebsdaten)
 +        * is the repository existing?
 +      * **-** MATPUR (Einkaufsdaten)
 +        * is the repository existing?
 +      * **-** MATFIN (Finanzdaten)
 +        * is the repository existing?
 +  * This functionality exists now for :
 +    * Materialstamm "Historie Basisdaten" (can I can "copy" it from there?)
 +    * "Vertrieb / Aufträge" (can I "copy" it from there?)
 +
 +
 +===== Materialstamm =====
 +At the moment Materialstamm contains the History functionality for "Materialstamm Basisdaten".
 +
 +    * Business Object: ''app.mat.BoMat'' contained in ''appBoMat.efcbl''
 +      * ''MdMatBas'' contained in ''mat.efcbl''
 +    * The layout is contained in ''efc_client_java\efc_runner\src\resources\forms\mat\BoMat.xml''
 +
 +===== Materialstammbasisdaten (MatBas) =====
 +
 +  * Database tables:
 +    * EFC_MATBAS
 +    * EFC_MATBAS_HIST
 +
 +  * Repository
 +    * ''SoLiMatBasHistRepository'' declared in ''appSstMat.efcbl''
 +    * The implementation is in ''SoLiMatBasHistRepositoryImpl''
 +
 +  * Service
 +    * ''SvSoMatHist'' declared in ''appSstMat.efcbl''
 +      * contains 
 +        * ''SoLiMatBasRepository''
 +        * ''SoLiMatBasHistRepository''
 +        * method ''getDcMatBasHist''
 +===== Vertriebsdaten (MatSal) =====
 +
 +==== Code ====
 +
 +  * Database tables:
 +    * EFC_MATSAL
 +    * EFC_MATSAL_HIST
 +
 +  * efcbl
 +    * ''/efc_server/src/efcbl/sst/appSstMat.efcbl''
 +
 +  * Data structures
 +    * ''ValueObject SoLiMatSal''
 +      * Listenelement für verdichtete Vertriebs-Stammdaten
 +    * ''ValueObject SoLiMatSalHist''
 +      * ''extends SoLiMatSal''
 +      * Listenelement Material-Vertriebsdaten
 +      * Anzeige von Daten aus HIST-Tabelle.
 +    * ''ValueObject DcMatSalHist'' (added by me)
 +      * Data container(?) for the history view(window?)
 +    * ''SfDcMatSalHist'' (added by me)
 +      * SuBdata-frame to show ''DcMatSalHist''
 +
 +  * ''/efc_runner/src/resources/forms/mat/DcMatSalHist.xml''
 +    * XML description to show table with ''DcMatSalHist'' object
 +
 +==== ToDo ====
 +
 +  * Service ''SvSoMatHist'' should contain all necessary Repositories and methods for history implementation
 +    * **-** add repositories to ''Service SvSoMatHist'' in ''appSstMat.efcbl''
 +      * **+** ''SoLiMatSalRepository''
 +      * **+** ''SoLiMatSalHistRepository''
 +
 +    * **-** add methods
 +
 +  * add the menu point
 +    * Menus for "Materialstamm" window are declared in ''FrBoMat.groovy''
 +<code>
 +  private EFCAdditionalAction aaInfoMatSalHist
 +//... initialize the action
 + aaInfoMatSalHist = new EFCAdditionalAction(tr("AA_MAT_INFOMATSALHIST"), "aaInfoMatSalHist", tr("AA_MAT_INFOMATSALHIST_DESC"))
 +//... add action to the menu
 +  viewManager.addToMenuInfo(tr("AM_MAT_HISTINFO"),
 + (ArrayList) [aaInfoMatBasHist, aaInfoMatSalHist])
 +//... do something if the action was selected
 + public void handleAction(String ident, Object param) {
 +//... 
 + switch (ident.toString()) {
 +//...
 + case aaInfoMatSalHist.getIdent():
 +                                // do something... (at the moment it is the copy from aaInfoMatBasHist)
 + setSysParamBaseKey()
 + openChildWindow(SfDcMatBasHist.class)
 + break
 +//...
 +
 +</code>
 +
 +
 +
 +  * **-** translate wordings -> should be done by Klaus
 +
 +
 +===== Einkaufsdaten (MatPur) =====
 +
 +==== Code ====
 +
 +  * Database tables:
 +    * EFC_MATPUR
 +    * EFC_MATPUR_HIST
 +
 +  * efcbl
 +    * ''/efc_server/src/efcbl/sst/appSstMat.efcbl''
 +
 +  * Data structures 
 +    * data structures are declared in 
 +      * ''appBoMat.efcbl'' -> data structures for material data objects
 +      * ''sst/appSstMat.efcbl'' -> material history data structures and data containers for UI
 +    * ''ValueObject SoLiMatPur''
 +      * Listenelement Material-Einkaufsdaten
 +    * ''ValueObject SoLiMatPurHist''
 +      * ''extends SoLiMatPur''
 +      * Listenelement Material-Einkaufsdaten
 +      * Anzeige von Daten aus HIST-Tabelle.
 +    * ''ValueObject DcMatPurHist'' (added by me)
 +      * Data container(?) for the history view(window?)
 +    * ''SfDcMatPurHist'' (added by me)
 +      * SuBdata-frame to show ''DcMatPurHist''
 +
 +  * ''/efc_runner/src/resources/forms/mat/DcMatPurHist.xml''
 +    * XML description to show table with ''DcMatPurHist'' object
 +
 +
 +===== Finanzdaten (MatFin) =====
 +
 +  * Database tables:
 +    * EFC_MATFIN
 +    * EFC_MATFIN_HIST
 +
 +
 +
 +
 +----
 +
 +===== Samples =====
 +
 +==== Vertrieb/Aufträge ====
 +
 +Sample data containing history:
 +
 +  * Belegnr.: 00189448 (Belegart: AB, Belegnr.: 00189448, Kunde: 5010000)
 +
 +
 +Here is described how this functionality is implemented for "Vertrieb/Aufträge":
 +
 +  * SoLiDocHist
 +
 +  * **-** Data objects (in ''appSstDoc.efcbl'')
 +    * ''ValueObject DcDocHistForQty'' -> ''ValueObject DcMatSalHist''
 +      * contains:
 +        * key fields
 +          * company
 +          * docKey
 +          * docNum
 +        * ''List<#DcLiDocItemHistForQty> qtydocitemList''
 +    * ''ValueObject DcLiDocItemHistForQty'' -> at the moment ''SoLiMatSalHist'' (maybe I should create a new data container explicitely used for displaying)
 +      * is a data container object representing one position in the LEFT table "aktuelle Positionen" 
 +      * contains:
 +        * position key fields
 +          * dockey
 +          * docnum
 +          * docitem
 +          * docitemkey
 +          * ...
 +          * ''ref     List<#DcLiQtyHist>       qtyhistList;''
 +    * ''ValueObject DcLiQtyHist'' -> ''...''
 +      * is a data container representing one item in the RIGHT table "Änderungshistorie Positionen"
 +      * contains:
 +        * quantity
 +        * createdBy
 +        * createdAt
 +        * editedBy
 +        * editedAt
 +
 +  * **-** Important methods
 +    * ''SoLiDocItemHistRepositoryImpl.getListDocItemHistForDocObj()'' -> ''SoLiMatSalHistRepositoryImpl.getListMatSalHistForMatObj()''
 +      * fetches the complete history for DocObj
 +        * this means the history of all positions
 +
 +  * **-** Database
 +    * DB table: [EFCOZ].[dbo].[EFC_DOCITEM_HIST]
 +  
 +  * **-** Service
 +    * ''SvSoDocHist'' is declared in ''appSstDoc.efcbl''
 +    * The implementation is in ''SvSoDocHistImpl''
 +  
 +  * **-** Repository
 +
 +==== Materialstammdaten ====
 +
 +  * Sample data containing history: 
 +    * Mat.-Nr.: 110.2207.20
 +
 +
 +  * At the moment it is important to have the proper "Mat.-Status" (NOT 'X', but '*'!)
 +
 +
 +==== Vertrieb/Lieferscheine ====
 +
 +  * Sample data containing history: 
 +    * Belegnummer: 00252275
 +
 +
 +  * the functionality can be seen at "Vertrieb / Lieferscheine"
 +    * choose "Positionen" tab, then select menu "Info / Historie / Historie Mengenänderung"
 +
 +
 +  * fetching data for compare can be viewed at: ''SvSoDocHistImpl.getDcDocHistForQty()''
 +
 +  
 +
 +===== Misc =====
 +
 +==== ''@CompileStatic'' in ''SvSoMatHistImpl'' ====
 +
 +  * After adding of ''@CompileStatic'' to ''SvSoMatHistImpl'' the line 33 in ''SvSoMatHistImpl'' does not work any more:
 +<code>
 +  matHist.matbashistList = soLiMatBasHistRepository.getListMatBasHistForMat(company, matnum)
 +</code>
 +   * the cause is the method delivers ''EFCList<SoLiMatBasHist>'' instead of ''EFCList<SoLiMatBas>''
 +     * to fix it: copy the objects