diff --git a/Ohj2HT/src/Luokat/Kalenteri.java b/Ohj2HT/src/Luokat/Kalenteri.java
index ac0cf8f531bc11ba78f09912b771b3afc1074f61..2e833a684b117aa4da595954069f410024179b94 100644
--- a/Ohj2HT/src/Luokat/Kalenteri.java
+++ b/Ohj2HT/src/Luokat/Kalenteri.java
@@ -111,6 +111,7 @@ public class Kalenteri {
             paivitaTulkit();
             getKalaLaskuri().kasvata(getLajiTulkki().getIdFromValue(s.getLaji()));
             getVieheLaskuri().kasvata(getVieheTulkki().getIdFromValue(s.getViehe().tyyppi()));
+            this.saaliit.lisaa(s);
         }
         getReissut().lisaaListaan(r);
 
diff --git a/Ohj2HT/src/Luokat/Reissu.java b/Ohj2HT/src/Luokat/Reissu.java
index dc0346084cdaaff887ee797a32a607e3d0f3eb89..58651c4fae2b09e04ebd2638b6ce7c57b84380db 100644
--- a/Ohj2HT/src/Luokat/Reissu.java
+++ b/Ohj2HT/src/Luokat/Reissu.java
@@ -32,6 +32,12 @@ public class Reissu {
 		this.saaliit = saaliit;
 		this.poistetaanko = false;
 	}
+    public void asetaKentat(LocalDate Pvm, String sijainti, String keli) {
+        this.Pvm = Pvm;
+        this.sijainti = sijainti;
+        this.keli = keli;
+    }
+
 	 /**
      * get metodit palauttavat halutun asian halutussa muodossa
      * 
@@ -176,7 +182,7 @@ public class Reissu {
         int tagi = Integer.parseInt(t[0]);
     	this.reissunTag = tagi;
         if (reissunTag > SeuraavanReissunTag) {
-            this.reissunTag = SeuraavanReissunTag +1;
+            SeuraavanReissunTag = this.reissunTag + 1;
         }
         else {
             SeuraavanReissunTag++;
diff --git a/Ohj2HT/src/Luokat/Saaliit.java b/Ohj2HT/src/Luokat/Saaliit.java
index 29034946995d25b9dec86632f485cb39c4b63cf6..ace228d90c49635d8f013ec25b73470b16b8375a 100644
--- a/Ohj2HT/src/Luokat/Saaliit.java
+++ b/Ohj2HT/src/Luokat/Saaliit.java
@@ -1,16 +1,13 @@
 package Luokat;
 
-import fi.jyu.mit.fxgui.Dialogs;
-
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 public class Saaliit {
     private Saalis[] saaliit;
     private int koko;
     private int index = 0;
-
+    private List<Integer> poistettavatId = new ArrayList<>();
 
     /**
      * muodostaja tyjhään taulukkoon
@@ -99,12 +96,18 @@ public class Saaliit {
         saaliit.lisaa(s3);
     }
 
-    public void poista(int saaliinId) {
+    public void merkkaaPoistettavaksi(int saaliinId) {
         int poistettava = binHaku(saaliinId);
         if (poistettava == -1) {
             return;
         }
-        saaliit[poistettava] = null;
+        poistettavatId.add(poistettava);
+    }
+
+    public void poista() {
+        for (int i : poistettavatId) {
+            saaliit[i] = null;
+        }
     }
 
     public int binHaku(int key) {
@@ -124,4 +127,12 @@ public class Saaliit {
         }
         return -1;
     }
+
+    public boolean loytyyko(Saalis saalis) {
+        int indeksi = binHaku(saalis.getSaaliinId());
+        if (indeksi == -1) {
+            return false;
+        }
+        return true;
+    }
 }
diff --git a/Ohj2HT/src/Luokat/SaaliitJaReissu.java b/Ohj2HT/src/Luokat/SaaliitJaReissu.java
new file mode 100644
index 0000000000000000000000000000000000000000..df4da9cdf4fd3dea2fc7a43eea64427bd2bec3da
--- /dev/null
+++ b/Ohj2HT/src/Luokat/SaaliitJaReissu.java
@@ -0,0 +1,4 @@
+package Luokat;
+
+public record SaaliitJaReissu(Saaliit saaliit, Reissu reissu) {
+}
diff --git a/Ohj2HT/src/fxKalenteri/KalenteriGUIController.java b/Ohj2HT/src/fxKalenteri/KalenteriGUIController.java
index bab86739766334a77b7dfb4570d4d06e94465e6f..dfa68e27180cede6139d3e564dfa55a22616a532 100644
--- a/Ohj2HT/src/fxKalenteri/KalenteriGUIController.java
+++ b/Ohj2HT/src/fxKalenteri/KalenteriGUIController.java
@@ -11,7 +11,6 @@ import javafx.fxml.FXML;
 import javafx.fxml.Initializable;
 import javafx.scene.control.Label;
 import javafx.scene.control.TextField;
-import javafx.scene.input.KeyEvent;
 
 import java.awt.Desktop;
 import java.io.IOException;
@@ -155,13 +154,10 @@ public class KalenteriGUIController implements Initializable {
                 return;
             }
         }
-        if ( reissumaara.get() - aluksi > 0){
-            if (kalenteri.tallennaTietyt()) {
+        if (kalenteri.tallennaTietyt()) {
             Dialogs.showMessageDialog("Tallennus onnistui!");
             aluksi = reissumaara.get();
-            }
         }
-            
     }
 
 
@@ -192,13 +188,11 @@ public class KalenteriGUIController implements Initializable {
         if (reissunNimi == null || reissunNimi.trim().isEmpty()) return;
        
         Reissu valittuReissu = this.reissutLista.getSelectedObject();
-        
+        int saaliitLkm = valittuReissu.getSaaliit().size();
         ModalController.showModal(
             KalenteriMain.class.getResource("/fxReissu/ReissuGUIView.fxml"),
-            "Reissu " + this.reissutLista.getSelectedText(),null, valittuReissu);
+            "Reissu " + this.reissutLista.getSelectedText(),null, new SaaliitJaReissu(kalenteri.getSaaliit(),valittuReissu));
 
-       
-        
         // Poistaminen
         if (valittuReissu.getpoistetaanko()) {
             onkoPoistettu = true;
@@ -207,8 +201,9 @@ public class KalenteriGUIController implements Initializable {
             for (Saalis s: valittuReissu.getSaaliit()){
                 kalenteri.getKalaLaskuri().vahenna(kalenteri.getLajiTulkki().getIdFromValue(s.getLaji()));
                 kalenteri.getVieheLaskuri().vahenna(kalenteri.getVieheTulkki().getIdFromValue(s.getViehe().tyyppi()));
-                kalenteri.getSaaliit().poista(s.getSaaliinId());
+                kalenteri.getSaaliit().merkkaaPoistettavaksi(s.getSaaliinId());
             }
+            kalenteri.getSaaliit().poista();
             kalenteri.getReissut().removeReissu();
             System.out.println("Jälkeen " + kalenteri.getReissut().getReissut().size());
             List<Reissu> r = kalenteri.getReissut().getReissut();
@@ -219,7 +214,13 @@ public class KalenteriGUIController implements Initializable {
                 kirjoitaReissut();
                 tekstienPaivitys();
             }
-        
+            return;
+        }
+        if (saaliitLkm < valittuReissu.getSaaliit().size()) {
+            for (int i = saaliitLkm; i < valittuReissu.getSaaliit().size(); i++) {
+                kalenteri.getKalaLaskuri().kasvata(kalenteri.getLajiTulkki().getIdFromValue(valittuReissu.getSaaliit().get(i).getLaji()));
+            }
+            tekstienPaivitys();
         }
         
         
diff --git a/Ohj2HT/src/fxLisaaReissu/LisaaReissuGUIController.java b/Ohj2HT/src/fxLisaaReissu/LisaaReissuGUIController.java
index 617a821c4422bf22db31eed8690ad28a260d909f..d80953c5d01b2aeafdb49630a4aeb78b1274ab2b 100644
--- a/Ohj2HT/src/fxLisaaReissu/LisaaReissuGUIController.java
+++ b/Ohj2HT/src/fxLisaaReissu/LisaaReissuGUIController.java
@@ -75,9 +75,7 @@ public class LisaaReissuGUIController implements Initializable, ModalControllerI
 		 
 		ModalController.showModal(KalenteriMain.class.getResource("/fxKaljoja/KalojaGUIView.fxml"),
 				 "Lisää saalis",null,saaliit);
-		 for (Saalis saalis : saaliit) {
-			 kale.getSaaliit().lisaa(saalis);
-		 }
+
 		 liitaKaloja();
 	 }
 	 
diff --git a/Ohj2HT/src/fxReissu/ReissuGUIController.java b/Ohj2HT/src/fxReissu/ReissuGUIController.java
index e8aa77f25a5c300834b124e56e72430aee595df3..177b6c6081984878eb8121d308059eaf457c8032 100644
--- a/Ohj2HT/src/fxReissu/ReissuGUIController.java
+++ b/Ohj2HT/src/fxReissu/ReissuGUIController.java
@@ -4,6 +4,8 @@ import java.time.LocalDate;
 import java.util.List;
 
 import Luokat.Reissu;
+import Luokat.Saaliit;
+import Luokat.SaaliitJaReissu;
 import Luokat.Saalis;
 import fi.jyu.mit.fxgui.Dialogs;
 import fi.jyu.mit.fxgui.ModalController;
@@ -21,10 +23,10 @@ import javafx.scene.control.TextField;
  * @version 29.1.2025
  * Controller tietyn reissun näyttämisikkunaa varten
  */
-public class ReissuGUIController implements ModalControllerInterface<Reissu> {
+public class ReissuGUIController implements ModalControllerInterface<SaaliitJaReissu> {
 	private String label;
 	private Reissu r;
-	
+	private Saaliit s;
 	
 	@FXML private Label reissuLabel; 
     
@@ -44,34 +46,63 @@ public class ReissuGUIController implements ModalControllerInterface<Reissu> {
 
 
 
+    @FXML public void handleLisaa() {
+        lisaaSaaliita();
+    }
+
+    @FXML
+    public void handleJatka() {
+        jatka();
+        ModalController.closeStage(jatkaNappi);
+    }
+
+    private void jatka() {
+        LocalDate date = Reissu.sToDate(ReissuPvm.getText());
+        if (date == null) {
+            Dialogs.showMessageDialog("Virheellinen päivämäärämuoto: " + ReissuPvm.getText() + "\nSyötä muodossa pp-kk-vvvv.");
+            return;
+        }
+        String uusPvm = ReissuPvm.getText();
+        r.asetaKentat(Reissu.sToDate(uusPvm), ReissuSijainti.getText(), ReissuKeli.getText());
+        for (Saalis saalis : r.getSaaliit()) {
+            if (!s.loytyyko(saalis)) {
+                s.lisaa(saalis);
+                saalis.setReissunTagi(r.getTag());
+            }
+        }
+
+    }
+
+    @FXML
+    void handlePoista() {
+        r.poistetaan();
+
+        ModalController.closeStage(ReissuSijainti);
+    }
+
     @Override
-    public Reissu getResult() {
+    public SaaliitJaReissu getResult() {
     	String pvm = ReissuPvm.getText();
-		 
-    	 return new Reissu(Reissu.sToDate(pvm),ReissuSijainti.getText(), ReissuKeli.getText(), List.of(), false);
+    	 return new SaaliitJaReissu(s,r);
     }
 
     @Override
-    public void setDefault(Reissu reissu) {
-    	 if (reissu == null) return;
-    
-    	 this.r = reissu;
-    	 
-    	ReissuPvm.appendText(reissu.getPvmString());
-    	ReissuKeli.appendText(reissu.getKeli());
-    	ReissuSijainti.appendText(reissu.getSijainti());
-    	
+    public void setDefault(SaaliitJaReissu sr) {
+    	 if (sr == null) return;
+
+    	 this.r = sr.reissu();
+    	 this.s = sr.saaliit();
+    	ReissuPvm.appendText(r.getPvmString());
+    	ReissuKeli.appendText(r.getKeli());
+    	ReissuSijainti.appendText(r.getSijainti());
+
     	ReissunSaalis.clear();
-		for(Saalis s : reissu.getSaaliit()){
+		for(Saalis s : r.getSaaliit()){
 			 Platform.runLater(()->{ReissunSaalis.appendText( "Sait " + s.getLaji() + " " + s.getKoko()+ ", vieheellä "  +
 		s.getViehe().vari()+ " "  + s.getViehe().tyyppi());ReissunSaalis.appendText("\n");});
 		 }
     }
 
-    @FXML public void handleLisaa() {
-        lisaaSaaliita();
-    }
-
     private void lisaaSaaliita() {
         LocalDate date = Reissu.sToDate(ReissuPvm.getText());
         if (date == null) {
@@ -96,21 +127,12 @@ public class ReissuGUIController implements ModalControllerInterface<Reissu> {
 
     @FXML
     public void initialize() {
-    
+
     }
 
     @Override
     public void handleShown() {
 
     }
-    @FXML
-    void handleJatka() {
-        ModalController.closeStage(jatkaNappi);
-    }
-    @FXML
-    void handlePoista() {
-        r.poistetaan();
-        
-        ModalController.closeStage(ReissuSijainti);
-    }
+
 }
\ No newline at end of file
diff --git a/Ohj2HT/src/fxReissu/ReissuGUIView.fxml b/Ohj2HT/src/fxReissu/ReissuGUIView.fxml
index d2386a8bf55b4d79465fdbc5f2a0e4c9265cfdb8..75d46f204b13f736ebdaa08b1f8e5ac6711995ee 100644
--- a/Ohj2HT/src/fxReissu/ReissuGUIView.fxml
+++ b/Ohj2HT/src/fxReissu/ReissuGUIView.fxml
@@ -25,17 +25,17 @@
             <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
         </rowConstraints>
          <children>
-            <TextField fx:id="ReissuPvm" editable="false" promptText="Syötä pvm" GridPane.columnIndex="1">
+            <TextField fx:id="ReissuPvm" promptText="Syötä pvm" GridPane.columnIndex="1">
                <GridPane.margin>
                   <Insets right="5.0" />
                </GridPane.margin>
             </TextField>
-            <TextField fx:id="ReissuSijainti" editable="false" promptText="Syötä sijainti" GridPane.columnIndex="1" GridPane.rowIndex="1">
+            <TextField fx:id="ReissuSijainti" promptText="Syötä sijainti" GridPane.columnIndex="1" GridPane.rowIndex="1">
                <GridPane.margin>
                   <Insets right="5.0" />
                </GridPane.margin>
             </TextField>
-            <TextField fx:id="ReissuKeli" editable="false" promptText="Syötä keli" GridPane.columnIndex="1" GridPane.rowIndex="2">
+            <TextField fx:id="ReissuKeli" promptText="Syötä keli" GridPane.columnIndex="1" GridPane.rowIndex="2">
                <GridPane.margin>
                   <Insets right="5.0" />
                </GridPane.margin>
diff --git a/kalaLaskuri.dat b/kalaLaskuri.dat
index 0be46e80c22e9d9b071247619529bc36592e1595..7449d4e51ad4d9cacea7b7afe0285ea96f6e7ad8 100644
--- a/kalaLaskuri.dat
+++ b/kalaLaskuri.dat
@@ -1,6 +1,6 @@
-1|2
+1|3
 2|2
 3|1
 4|1
 5|1
-6|0
+6|1
diff --git a/reissut.dat b/reissut.dat
index 03715b05fe873521a5ca9dc5b5e11e85c3641ab3..d51a09f74f81a68dada4091fe19caee4a9d761e5 100644
--- a/reissut.dat
+++ b/reissut.dat
@@ -1,5 +1,5 @@
 1|17.11.2025|Vuontee|aurinkoinen
 2|16.11.2025|Tikkakoski|sateinen
-3|11.05.2025|Laukaa|aurinkoinen
-5|19.03.2025|Rovaniemi|Aurinkoinen
-7|12.03.2024|Laukaa|Pilvinen
+3|18.05.2025|Laukaa|aurinkoinen
+7|30.03.2025|Rovaniemi|aurinkoinen
+6|12.03.2024|Laukaa|Pilvinen
diff --git a/saaliit.dat b/saaliit.dat
index 1c6ca5c50e3815a1e1772717cd5773f2fef5d6d3..9c94054d2ff30934c5f02d1ea0612fa0b632dc42 100644
--- a/saaliit.dat
+++ b/saaliit.dat
@@ -2,8 +2,8 @@
 3|2|1|2|1|hopea
 4|4|1|3|1|vihreä
 6|2|1|1|1|hopea
-7|5|1|5|1|kupari
 8|3|2|6|1|hopeinen
-9|1|2|7|1|sininen
-10|3|3|7|2|keltainen
 11|1|3|1|3|sininen
+12|6|2|7|2|sininen
+13|5|1|3|1|sininen
+14|1|3|6|2|punainen
diff --git a/vieheLaskuri.dat b/vieheLaskuri.dat
index 6d7f15d982010b7689b01b205fc7b9976d375fe6..edf95a18857b2e60d3d3dd14559a7d4f145a61ce 100644
--- a/vieheLaskuri.dat
+++ b/vieheLaskuri.dat
@@ -1,3 +1,3 @@
-1|5
-2|1
+1|4
+2|2
 3|1