Merge branch 'Kuljetusrivin-nollaus-oletuskuljetusmäärien-palautus'
Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com> # Conflicts: # .idea/dataSources.xml # TODO.txt
This commit is contained in:
Generated
+12
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||
<data-source source="LOCAL" name="testikanta.db" uuid="99c09b65-0631-4e8f-9a1e-89c4fd901b4e">
|
||||
<driver-ref>sqlite.xerial</driver-ref>
|
||||
<synchronize>true</synchronize>
|
||||
<jdbc-driver>org.sqlite.JDBC</jdbc-driver>
|
||||
<jdbc-url>jdbc:sqlite:C:\Users\TheHy\Ohjelmointi\Ruokamanageri\testikanta.db</jdbc-url>
|
||||
<working-dir>$ProjectFileDir$</working-dir>
|
||||
</data-source>
|
||||
</component>
|
||||
</project>
|
||||
Generated
-10
@@ -1,10 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="db-forest-configuration">
|
||||
<data version="2">.
|
||||
----------------------------------------
|
||||
1:0:8c9f99af-23ef-4827-90d5-7f18c4b74bec
|
||||
2:0:c8259506-eca1-4fc2-b380-a099ca4c8bb4
|
||||
.</data>
|
||||
</component>
|
||||
</project>
|
||||
@@ -1,5 +1 @@
|
||||
TODO Kuljetuslistalle lisää tilaa vasemmalle, jotta voi rei'ittää kansioon
|
||||
|
||||
TODO kierroshallinnassa asiakasta raahattaessa placeholderin fiksaus
|
||||
|
||||
TODO Asiakkaalle laskutusosoite
|
||||
TODO Kuljetuslistan luontiin riville nappi, josta nollata rivi/palauttaa oletuskuljetusmäärät
|
||||
|
||||
@@ -16,6 +16,21 @@ public class Kuljetus implements TietokantaOlio {
|
||||
private int salaatit, pääruoat, jälkiruoat;
|
||||
private String osoite, lisätieto, avainTieto, ruokarajoite;
|
||||
|
||||
public Kuljetus(Kuljetus vanha) {
|
||||
this.id = vanha.id;
|
||||
this.asiakasID = vanha.asiakasID;
|
||||
this.nimi = vanha.nimi;
|
||||
this.kuljetusPäivämäärä = vanha.kuljetusPäivämäärä;
|
||||
this.kuljetusKierros = vanha.kuljetusKierros;
|
||||
this.salaatit = vanha.salaatit;
|
||||
this.pääruoat = vanha.pääruoat;
|
||||
this.jälkiruoat = vanha.jälkiruoat;
|
||||
this.osoite = vanha.osoite;
|
||||
this.lisätieto = vanha.lisätieto;
|
||||
this.avainTieto = vanha.avainTieto;
|
||||
this.ruokarajoite = vanha.ruokarajoite;
|
||||
}
|
||||
|
||||
public Kuljetus(Asiakas asiakas, LocalDate pvm, int kuljetusKierros) {
|
||||
this.asiakasID = asiakas.getId();
|
||||
this.nimi = asiakas.getNimi();
|
||||
@@ -268,6 +283,31 @@ public class Kuljetus implements TietokantaOlio {
|
||||
'}';
|
||||
}
|
||||
|
||||
public void nollaa() {
|
||||
setSalaatit(0);
|
||||
setPääruoat(0);
|
||||
setJälkiruoat(0);
|
||||
setLisätieto("");
|
||||
}
|
||||
|
||||
public void palautaMäärät(Asiakas asiakas) {
|
||||
int kuljetusKerroin = switch (kuljetusPäivämäärä.getDayOfWeek()) {
|
||||
case MONDAY -> asiakas.getMaanantaiKpl();
|
||||
case TUESDAY -> asiakas.getTiistaiKpl();
|
||||
case WEDNESDAY -> asiakas.getKeskiviikkoKpl();
|
||||
case THURSDAY -> asiakas.getTorstaiKpl();
|
||||
case FRIDAY -> asiakas.getPerjantaiKpl();
|
||||
default -> 0;
|
||||
};
|
||||
setSalaatit(asiakas.getSalaatit() * kuljetusKerroin);
|
||||
setPääruoat(asiakas.getPääruoat() * kuljetusKerroin);
|
||||
setJälkiruoat(asiakas.getJälkiruoat() * kuljetusKerroin);
|
||||
setLisätieto(asiakas.getLisätiedot());
|
||||
}
|
||||
|
||||
public boolean kuljetetaan() {
|
||||
return salaatit > 0 || pääruoat > 0 || jälkiruoat > 0 || !lisätieto.isEmpty();
|
||||
}
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
@@ -141,7 +141,7 @@ public class Asiakashallinta extends TabPohja {
|
||||
if (valittuAsiakas != null) {
|
||||
Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
|
||||
alert.setTitle("Oletko varma?");
|
||||
alert.setHeaderText("Poistetaanko valittu valittu asiakas?");
|
||||
alert.setHeaderText("Poistetaanko valittu asiakas?");
|
||||
alert.setContentText(valittuAsiakas.getNimi());
|
||||
Optional<ButtonType> result = alert.showAndWait();
|
||||
if (result.isPresent() && result.get() == ButtonType.OK) {
|
||||
|
||||
@@ -3,10 +3,12 @@ package fi.lpam.gui;
|
||||
import fi.lpam.dataluokat.Asiakas;
|
||||
import fi.lpam.dataluokat.Kierros;
|
||||
import fi.lpam.dataluokat.Kuljetus;
|
||||
import fi.lpam.gui.elementit.KuljetaTableCell;
|
||||
import fi.lpam.tulostajat.KuljetusListaTulostaja;
|
||||
import fi.lpam.gui.elementit.MaaraTableColumn;
|
||||
import fi.lpam.gui.elementit.TabPohja;
|
||||
|
||||
import javafx.beans.property.SimpleBooleanProperty;
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ObservableList;
|
||||
import javafx.geometry.Pos;
|
||||
@@ -19,6 +21,7 @@ import javafx.scene.layout.HBox;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Objects;
|
||||
|
||||
@@ -28,14 +31,19 @@ public class KuljetusListat extends TabPohja {
|
||||
private final TableView<Kuljetus> tableView = new TableView<>();
|
||||
private final DatePicker datePicker = new DatePicker(LocalDate.now());
|
||||
private final ComboBox<Integer> kierrosValinta = new ComboBox<>(FXCollections.observableArrayList(Kierros.haeKierrosNumerot()));
|
||||
private final Label tallennusStatus;
|
||||
public static Label tallennusStatus;
|
||||
private final Button btnTulosta;
|
||||
private final HashMap<Integer, Asiakas> asiakkaat = new HashMap<>();
|
||||
|
||||
public KuljetusListat() {
|
||||
ObservableList<Integer> määräVaihtoehdot = FXCollections.observableArrayList();
|
||||
for (int i = 0; i <= 10; i++) {
|
||||
määräVaihtoehdot.add(i);}
|
||||
|
||||
for (Asiakas asiakas : Objects.requireNonNull(Asiakas.haeKaikki())) {
|
||||
asiakkaat.put(asiakas.getId(), asiakas);
|
||||
}
|
||||
|
||||
BorderPane root = new BorderPane();
|
||||
root.setPadding(oletusInsets);
|
||||
this.getChildren().add(root);
|
||||
@@ -83,6 +91,11 @@ public class KuljetusListat extends TabPohja {
|
||||
tableView.setPlaceholder(new Label("Valitse kierros aloittaaksesi"));
|
||||
root.setCenter(tableView);
|
||||
|
||||
TableColumn<Kuljetus, Boolean> tcNappi = new TableColumn<>("Kuljeta");
|
||||
tcNappi.setMinWidth(100);
|
||||
tcNappi.setCellFactory(_ -> new KuljetaTableCell(asiakkaat));
|
||||
tcNappi.setCellValueFactory(features -> new SimpleBooleanProperty(features.getValue() != null));
|
||||
|
||||
TableColumn<Kuljetus, String> tcNimi = new TableColumn<>("Nimi");
|
||||
tcNimi.setMinWidth(150);
|
||||
tcNimi.setCellFactory(TextFieldTableCell.forTableColumn());
|
||||
@@ -128,7 +141,7 @@ public class KuljetusListat extends TabPohja {
|
||||
tcAvainTieto.setCellValueFactory(new PropertyValueFactory<>("avainTieto"));
|
||||
tcAvainTieto.setOnEditCommit((TableColumn.CellEditEvent<Kuljetus, String> event) -> {event.getTableView().getItems().get(event.getTablePosition().getRow()).setAvainTieto(event.getNewValue()); tallennusStatus.setText("Tallennettu: Ei");});
|
||||
|
||||
tableView.getColumns().addAll(tcNimi, tcOsoite, tcSalaatit, tcPääruoat, tcJälkiruoat, tcRuokarajoite, tcLisätieto, tcAvainTieto);
|
||||
tableView.getColumns().addAll(tcNappi, tcNimi, tcOsoite, tcSalaatit, tcPääruoat, tcJälkiruoat, tcRuokarajoite, tcLisätieto, tcAvainTieto);
|
||||
|
||||
for (TableColumn<Kuljetus, ?> sarake : tableView.getColumns()) {
|
||||
sarake.setSortable(false);
|
||||
@@ -136,6 +149,8 @@ public class KuljetusListat extends TabPohja {
|
||||
sarake.setResizable(true);
|
||||
sarake.setStyle("-fx-alignment: CENTER; -fx-font-size: 16px;");
|
||||
}
|
||||
tcNimi.setEditable(false);
|
||||
tcNimi.setResizable(false);
|
||||
}
|
||||
|
||||
private void päivitäListanäkymä() {
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
package fi.lpam.gui.elementit;
|
||||
|
||||
import fi.lpam.dataluokat.Asiakas;
|
||||
import fi.lpam.dataluokat.Kuljetus;
|
||||
import fi.lpam.gui.KuljetusListat;
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.ContentDisplay;
|
||||
import javafx.scene.control.TableCell;
|
||||
import javafx.scene.layout.StackPane;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
public class KuljetaTableCell extends TableCell<Kuljetus, Boolean> {
|
||||
private final StackPane paddedNappi = new StackPane();
|
||||
|
||||
public KuljetaTableCell(HashMap<Integer, Asiakas> asiakkaat) {
|
||||
paddedNappi.setPadding(new Insets(3));
|
||||
Button nappi = new Button("Muuta");
|
||||
paddedNappi.getChildren().add(nappi);
|
||||
nappi.setOnMouseClicked(_ -> {
|
||||
getTableView().getSelectionModel().select(getIndex());
|
||||
Kuljetus kuljetus = getTableRow().getItem();
|
||||
|
||||
if (kuljetus == null) return;
|
||||
if (kuljetus.kuljetetaan()) {
|
||||
kuljetus.nollaa();
|
||||
} else {
|
||||
kuljetus.palautaMäärät(asiakkaat.get(kuljetus.getAsiakasID()));
|
||||
}
|
||||
getTableRow().setItem(new Kuljetus(kuljetus));
|
||||
KuljetusListat.tallennusStatus.setText("Tallennettu: Ei");
|
||||
});
|
||||
}
|
||||
|
||||
@Override protected void updateItem(Boolean item, boolean empty) {
|
||||
super.updateItem(item, empty);
|
||||
if (!empty) {
|
||||
setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
|
||||
setGraphic(paddedNappi);
|
||||
} else {
|
||||
setGraphic(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user