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
Next revision
Previous revision
materialstammhistory [2023/02/14 09:16] – [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