Compare commits
No commits in common. "main" and "feature/yann" have entirely different histories.
main
...
feature/ya
@ -3,8 +3,14 @@
|
||||
x:Class="MauiAppStock.AppShell"
|
||||
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
xmlns:local="clr-namespace:MauiAppStock"
|
||||
xmlns:views="clr-namespace:MauiAppStock.Views"
|
||||
Shell.FlyoutBehavior="Disabled"
|
||||
Title="MauiAppStock">
|
||||
|
||||
<ShellContent
|
||||
Title="Home"
|
||||
ContentTemplate="{DataTemplate views:MainPage}"
|
||||
Route="MainPage" />
|
||||
|
||||
</Shell>
|
||||
|
@ -1,19 +1,9 @@
|
||||
using MauiAppStock.Views;
|
||||
|
||||
namespace MauiAppStock;
|
||||
namespace MauiAppStock;
|
||||
|
||||
public partial class AppShell : Shell
|
||||
{
|
||||
public AppShell()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
}
|
||||
protected override void OnNavigating(ShellNavigatingEventArgs args)
|
||||
{
|
||||
base.OnNavigating(args);
|
||||
|
||||
bool isMainPage = args.Target?.Location?.OriginalString == "//MainPage";
|
||||
Shell.SetBackButtonBehavior(this, new BackButtonBehavior { IsVisible = !isMainPage });
|
||||
}
|
||||
}
|
@ -20,8 +20,7 @@ namespace MauiAppStock.Data
|
||||
await db.CreateTableAsync<Appareil>();
|
||||
await db.CreateTableAsync<Piece>();
|
||||
await db.CreateTableAsync<AppareilPiece>(); // Table de liaison
|
||||
await db.CreateTableAsync<MouvementStock>();
|
||||
await db.CreateTableAsync<Fournisseur>();
|
||||
await db.CreateTableAsync<MouvementStock>(); // Table des mouvements de stock
|
||||
}
|
||||
}
|
||||
|
||||
@ -67,64 +66,12 @@ namespace MauiAppStock.Data
|
||||
return db.DeleteAsync(piece);
|
||||
}
|
||||
|
||||
|
||||
// CRUD pour Fournisseur
|
||||
public static Task<int> AddFournisseurAsync(Fournisseur fournisseur)
|
||||
{
|
||||
return db.InsertAsync(fournisseur);
|
||||
}
|
||||
|
||||
public static Task<List<Fournisseur>> GetFournisseursAsync()
|
||||
{
|
||||
return db.Table<Fournisseur>().ToListAsync();
|
||||
}
|
||||
|
||||
public static Task<int> UpdateFournisseursync(Fournisseur fournisseur)
|
||||
{
|
||||
return db.UpdateAsync(fournisseur);
|
||||
}
|
||||
|
||||
public static Task<int> DeleteFournisseurAsync(Fournisseur fournisseur)
|
||||
{
|
||||
return db.DeleteAsync(fournisseur);
|
||||
}
|
||||
|
||||
|
||||
// Liaison entre Appareil et Piece
|
||||
public static Task<int> AddAppareilPieceAsync(AppareilPiece appareilPiece)
|
||||
{
|
||||
return db.InsertAsync(appareilPiece);
|
||||
}
|
||||
|
||||
// CRUD pour MouvementStock
|
||||
public static Task<int> AddMouvementStockAsync(MouvementStock mouvement)
|
||||
{
|
||||
return db.InsertAsync(mouvement);
|
||||
}
|
||||
|
||||
public static Task<List<MouvementStock>> GetMouvementsStockAsync()
|
||||
{
|
||||
return db.Table<MouvementStock>().OrderByDescending(m => m.DateMouvement).ToListAsync();
|
||||
}
|
||||
|
||||
public static async Task<List<MouvementStock>> GetMouvementsStockForPieceAsync(int pieceId)
|
||||
{
|
||||
return await db.Table<MouvementStock>()
|
||||
.Where(m => m.PieceId == pieceId)
|
||||
.OrderByDescending(m => m.DateMouvement)
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
public static Task<int> UpdateMouvementStockAsync(MouvementStock mouvement)
|
||||
{
|
||||
return db.UpdateAsync(mouvement);
|
||||
}
|
||||
|
||||
public static Task<int> DeleteMouvementStockAsync(MouvementStock mouvement)
|
||||
{
|
||||
return db.DeleteAsync(mouvement);
|
||||
}
|
||||
|
||||
// Met à jour une association existante
|
||||
public static Task<int> UpdateAppareilPieceAsync(AppareilPiece appareilPiece)
|
||||
{
|
||||
@ -193,5 +140,34 @@ namespace MauiAppStock.Data
|
||||
.Where(ap => ap.AppareilId == appareilId && ap.PieceId == pieceId)
|
||||
.FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
// CRUD pour MouvementStock
|
||||
public static Task<int> AddMouvementStockAsync(MouvementStock mouvement)
|
||||
{
|
||||
return db.InsertAsync(mouvement);
|
||||
}
|
||||
|
||||
public static Task<List<MouvementStock>> GetMouvementsStockAsync()
|
||||
{
|
||||
return db.Table<MouvementStock>().OrderByDescending(m => m.DateMouvement).ToListAsync();
|
||||
}
|
||||
|
||||
public static async Task<List<MouvementStock>> GetMouvementsStockForPieceAsync(int pieceId)
|
||||
{
|
||||
return await db.Table<MouvementStock>()
|
||||
.Where(m => m.PieceId == pieceId)
|
||||
.OrderByDescending(m => m.DateMouvement)
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
public static Task<int> UpdateMouvementStockAsync(MouvementStock mouvement)
|
||||
{
|
||||
return db.UpdateAsync(mouvement);
|
||||
}
|
||||
|
||||
public static Task<int> DeleteMouvementStockAsync(MouvementStock mouvement)
|
||||
{
|
||||
return db.DeleteAsync(mouvement);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -63,17 +63,4 @@
|
||||
<PackageReference Include="sqlite-net-pcl" Version="1.10.196-beta" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<MauiXaml Update="Views\EditFournisseurPage.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
</MauiXaml>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Update="Views\EditFournisseurPage.xaml.cs">
|
||||
<DependentUpon>EditFournisseurPage.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
@ -1,13 +0,0 @@
|
||||
using SQLite;
|
||||
|
||||
namespace MauiAppStock.Models
|
||||
{
|
||||
public class Fournisseur
|
||||
{
|
||||
[PrimaryKey, AutoIncrement]
|
||||
public int Id { get; set; }
|
||||
public string Nom { get; set; }
|
||||
public string Numtel { get; set; }
|
||||
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<application android:allowBackup="true" android:icon="@mipmap/image" android:roundIcon="@mipmap/image" android:supportsRtl="true"></application>
|
||||
<application android:allowBackup="true" android:icon="@mipmap/appicon" android:roundIcon="@mipmap/appicon_round" android:supportsRtl="true"></application>
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
</manifest>
|
Binary file not shown.
Before Width: | Height: | Size: 98 KiB |
Binary file not shown.
Before Width: | Height: | Size: 98 KiB |
@ -1,42 +0,0 @@
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Input;
|
||||
using MauiAppStock.Models;
|
||||
using MauiAppStock.Data;
|
||||
using MauiAppStock.Helpers;
|
||||
|
||||
namespace MauiAppStock.ViewModels
|
||||
{
|
||||
public class FournisseursViewModel : BaseViewModel
|
||||
{
|
||||
public ObservableCollection<Fournisseur> Fournisseurs { get; set; }
|
||||
public ICommand LoadFournisseursCommand { get; }
|
||||
public ICommand DeleteFournisseurCommand { get; }
|
||||
|
||||
public FournisseursViewModel()
|
||||
{
|
||||
Fournisseurs = new ObservableCollection<Fournisseur>();
|
||||
LoadFournisseursCommand = new AsyncCommand(LoadFournisseurs);
|
||||
DeleteFournisseurCommand = new AsyncCommand<Fournisseur>(DeleteFournisseur);
|
||||
}
|
||||
|
||||
private async Task LoadFournisseurs()
|
||||
{
|
||||
Fournisseurs.Clear();
|
||||
var fournisseursList = await Database.GetFournisseursAsync();
|
||||
foreach (var fournisseur in fournisseursList)
|
||||
{
|
||||
Fournisseurs.Add(fournisseur);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task DeleteFournisseur(Fournisseur fournisseur)
|
||||
{
|
||||
if (fournisseur != null)
|
||||
{
|
||||
await Database.DeleteFournisseurAsync(fournisseur);
|
||||
Fournisseurs.Remove(fournisseur);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<ContentPage x:Class="MauiAppStock.Views.AddFournisseurPage"
|
||||
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
|
||||
<StackLayout Padding="10">
|
||||
<Label Text="Ajouter un Fournisseur" FontSize="24" HorizontalOptions="Center"/>
|
||||
<Entry x:Name="NomEntry" Placeholder="Nom"/>
|
||||
<Entry x:Name="NumEntry" Placeholder="NumTel" Keyboard="Numeric"/>
|
||||
<Button Text="Enregistrer" Clicked="OnSaveClicked"/>
|
||||
</StackLayout>
|
||||
</ContentPage>
|
@ -1,29 +0,0 @@
|
||||
using MauiAppStock.Models;
|
||||
using MauiAppStock.Data;
|
||||
|
||||
namespace MauiAppStock.Views
|
||||
{
|
||||
public partial class AddFournisseurPage : ContentPage
|
||||
{
|
||||
public AddFournisseurPage()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private async void OnSaveClicked(object sender, EventArgs e)
|
||||
{
|
||||
{
|
||||
var fournisseur = new Fournisseur
|
||||
{
|
||||
Nom = NomEntry.Text,
|
||||
Numtel = NumEntry.Text
|
||||
|
||||
}
|
||||
;
|
||||
await Database.AddFournisseurAsync(fournisseur);
|
||||
await Navigation.PopAsync();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@ -4,15 +4,14 @@
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
|
||||
<StackLayout Padding="10">
|
||||
<Label Text="Ajouter une Pièce" FontSize="24" HorizontalOptions="Center"/>
|
||||
|
||||
<Entry x:Name="NomEntry" Placeholder="Nom"/>
|
||||
<Editor x:Name="DescriptionEditor" Placeholder="Description" HeightRequest="100"/>
|
||||
<Entry x:Name="PrixEntry" Placeholder="Prix" Keyboard="Numeric"/>
|
||||
<Entry x:Name="StockEntry" Placeholder="Stock" Keyboard="Numeric"/>
|
||||
|
||||
<Label Text="Sélectionnez un fournisseur:"/>
|
||||
<Picker x:Name="FournisseurPicker" Title="Fournisseurs"/>
|
||||
|
||||
<!-- <Picker x:Name="FournisseurPicker"
|
||||
Title="Choisissez un Fournisseur">
|
||||
</Picker> !-->
|
||||
<Entry x:Name="FournisseurEntry" Placeholder="Fournisseur"/>
|
||||
<Button Text="Enregistrer" Clicked="OnSaveClicked"/>
|
||||
</StackLayout>
|
||||
</ContentPage>
|
@ -1,42 +1,44 @@
|
||||
using MauiAppStock.Models;
|
||||
using MauiAppStock.Data;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Microsoft.Maui.Controls.Internals;
|
||||
|
||||
namespace MauiAppStock.Views
|
||||
{
|
||||
public partial class AddPiecePage : ContentPage
|
||||
{
|
||||
private List<Fournisseur> _fournisseurs;
|
||||
|
||||
public AddPiecePage()
|
||||
{
|
||||
InitializeComponent();
|
||||
LoadFournisseurs();
|
||||
LoadAppareils();
|
||||
}
|
||||
|
||||
private async void LoadFournisseurs()
|
||||
private async void LoadAppareils()
|
||||
{
|
||||
_fournisseurs = await Database.GetFournisseursAsync();
|
||||
FournisseurPicker.ItemsSource = _fournisseurs;
|
||||
FournisseurPicker.ItemDisplayBinding = new Binding("Nom");
|
||||
// FournisseurPicker.ItemsSource = await Database.GetAppareilsAsync();
|
||||
}
|
||||
|
||||
private async void OnSaveClicked(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
if (double.TryParse(PrixEntry.Text, out double prix) && int.TryParse(StockEntry.Text, out int stock))
|
||||
{
|
||||
var selectedFournisseur = FournisseurPicker.SelectedItem as Fournisseur;
|
||||
// Appareil appareilPicked = AppareilPicker.SelectedItem as Appareil;
|
||||
|
||||
// if (appareilPicked == null)
|
||||
//{
|
||||
// await DisplayAlert("ERREUR", "L'appareil n'est pas un valide", "OK");
|
||||
// return;
|
||||
//}
|
||||
|
||||
var piece = new Piece
|
||||
{
|
||||
Nom = NomEntry.Text,
|
||||
Description = DescriptionEditor.Text,
|
||||
Prix = prix,
|
||||
Stock = stock,
|
||||
Fournisseur = selectedFournisseur?.Nom
|
||||
Stock = 0
|
||||
// Appareil = appareilPicked.Id, Exemple pour fournisseur
|
||||
//Fournisseur = FournisseurEntry.Text
|
||||
};
|
||||
|
||||
await Database.AddPieceAsync(piece);
|
||||
await Navigation.PopAsync();
|
||||
}
|
||||
|
@ -15,9 +15,7 @@
|
||||
<ListView x:Name="AssociationsListView" ItemsSource="{Binding AppareilPieces}"
|
||||
IsPullToRefreshEnabled="True"
|
||||
RefreshCommand="{Binding LoadAssociationsCommand}"
|
||||
ItemTapped="OnAssociationTapped"
|
||||
HasUnevenRows="True"
|
||||
HeightRequest="500">
|
||||
ItemTapped="OnAssociationTapped">
|
||||
<ListView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<ViewCell>
|
||||
|
@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<ContentPage
|
||||
x:Class="MauiAppStock.Views.EditFournisseurPage"
|
||||
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
|
||||
|
||||
<StackLayout Padding="10">
|
||||
<Label Text="Modifier l'Appareil" FontSize="24" HorizontalOptions="Center"/>
|
||||
<Entry x:Name="NomEntry" Placeholder="Nom"/>
|
||||
<Entry x:Name="NumEntry" Placeholder="NumTel" Keyboard="Numeric"/>
|
||||
<Button Text="Enregistrer" Clicked="OnSaveClicked"/>
|
||||
<Button Text="Supprimer" Clicked="OnDeleteClicked" TextColor="Red"/>
|
||||
</StackLayout>
|
||||
</ContentPage>
|
@ -1,35 +0,0 @@
|
||||
using MauiAppStock.Models;
|
||||
using MauiAppStock.Data;
|
||||
|
||||
namespace MauiAppStock.Views
|
||||
{
|
||||
public partial class EditFournisseurPage : ContentPage
|
||||
{
|
||||
private Fournisseur _fournisseur;
|
||||
public EditFournisseurPage(Fournisseur fournisseur)
|
||||
{
|
||||
InitializeComponent();
|
||||
_fournisseur = fournisseur;
|
||||
NomEntry.Text = fournisseur.Nom;
|
||||
NumEntry.Text = fournisseur.Numtel;
|
||||
}
|
||||
|
||||
private async void OnSaveClicked(object sender, EventArgs e)
|
||||
{
|
||||
_fournisseur.Nom = NomEntry.Text;
|
||||
_fournisseur.Numtel = NumEntry.Text;
|
||||
await Database.UpdateFournisseursync(_fournisseur);
|
||||
await Navigation.PopAsync();
|
||||
}
|
||||
|
||||
private async void OnDeleteClicked(object sender, EventArgs e)
|
||||
{
|
||||
bool confirm = await DisplayAlert("Confirmation", "Voulez-vous vraiment supprimer ce fournisseur ?", "Oui", "Non");
|
||||
if (confirm)
|
||||
{
|
||||
await Database.DeleteFournisseurAsync(_fournisseur);
|
||||
await Navigation.PopAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -4,15 +4,14 @@
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
|
||||
<StackLayout Padding="10">
|
||||
<Label Text="Modifier la Pièce" FontSize="24" HorizontalOptions="Center"/>
|
||||
|
||||
<Entry x:Name="NomEntry" Placeholder="Nom"/>
|
||||
<Editor x:Name="DescriptionEditor" Placeholder="Description" HeightRequest="100"/>
|
||||
<Entry x:Name="PrixEntry" Placeholder="Prix" Keyboard="Numeric"/>
|
||||
<Entry x:Name="StockEntry" Placeholder="Stock" Keyboard="Numeric"/>
|
||||
|
||||
<Label Text="Sélectionnez un fournisseur:"/>
|
||||
<Picker x:Name="FournisseurPicker" Title="Fournisseurs"/>
|
||||
|
||||
<Picker x:Name="AppareilPicker"
|
||||
Title="Choisissez un appareil">
|
||||
</Picker>
|
||||
<Entry x:Name="FournisseurEntry" Placeholder="Fournisseur"/>
|
||||
<Button Text="Enregistrer" Clicked="OnSaveClicked"/>
|
||||
<Button Text="Supprimer" Clicked="OnDeleteClicked" TextColor="Red"/>
|
||||
</StackLayout>
|
||||
|
@ -6,53 +6,41 @@ namespace MauiAppStock.Views
|
||||
public partial class EditPiecePage : ContentPage
|
||||
{
|
||||
private Piece _piece;
|
||||
private List<Fournisseur> _fournisseurs;
|
||||
|
||||
|
||||
public EditPiecePage(Piece piece)
|
||||
{
|
||||
InitializeComponent();
|
||||
// LoadAppareils();
|
||||
_piece = piece;
|
||||
|
||||
// Remplir les champs de base
|
||||
NomEntry.Text = piece.Nom;
|
||||
DescriptionEditor.Text = piece.Description;
|
||||
PrixEntry.Text = piece.Prix.ToString();
|
||||
StockEntry.Text = piece.Stock.ToString();
|
||||
}
|
||||
|
||||
protected override async void OnAppearing()
|
||||
{
|
||||
base.OnAppearing();
|
||||
|
||||
// Charger les fournisseurs
|
||||
_fournisseurs = await Database.GetFournisseursAsync();
|
||||
|
||||
FournisseurPicker.ItemsSource = _fournisseurs;
|
||||
FournisseurPicker.ItemDisplayBinding = new Binding("Nom");
|
||||
|
||||
// Sélectionner le fournisseur existant (si défini)
|
||||
if (!string.IsNullOrEmpty(_piece.Fournisseur))
|
||||
{
|
||||
var fournisseurActuel = _fournisseurs.FirstOrDefault(f => f.Nom == _piece.Fournisseur);
|
||||
if (fournisseurActuel != null)
|
||||
{
|
||||
FournisseurPicker.SelectedItem = fournisseurActuel;
|
||||
}
|
||||
}
|
||||
StockEntry.Text = piece.Stock.ToString();
|
||||
FournisseurEntry.Text = piece.Fournisseur; // TODO : Prochainement picker pour fournisseur
|
||||
}
|
||||
|
||||
//private async void LoadAppareils()
|
||||
//{
|
||||
// AppareilPicker.ItemsSource = await Database.GetAppareilsAsync();
|
||||
//}
|
||||
|
||||
private async void OnSaveClicked(object sender, EventArgs e)
|
||||
{
|
||||
// Appareil appareilPicked = AppareilPicker.SelectedItem as Appareil;
|
||||
|
||||
//if (appareilPicked == null)
|
||||
//{
|
||||
// await DisplayAlert("ERREUR", "L'appareil n'est pas un valide", "OK");
|
||||
// return;
|
||||
//}
|
||||
|
||||
if (double.TryParse(PrixEntry.Text, out double prix) && int.TryParse(StockEntry.Text, out int stock))
|
||||
{
|
||||
_piece.Nom = NomEntry.Text;
|
||||
_piece.Description = DescriptionEditor.Text;
|
||||
_piece.Prix = prix;
|
||||
_piece.Stock = stock;
|
||||
|
||||
var fournisseurSelectionne = FournisseurPicker.SelectedItem as Fournisseur;
|
||||
_piece.Fournisseur = fournisseurSelectionne?.Nom;
|
||||
|
||||
_piece.Fournisseur = FournisseurEntry.Text;
|
||||
await Database.UpdatePieceAsync(_piece);
|
||||
await Navigation.PopAsync();
|
||||
}
|
||||
@ -72,4 +60,4 @@ namespace MauiAppStock.Views
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<ContentPage
|
||||
x:Class="MauiAppStock.Views.FournisseursPage"
|
||||
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
xmlns:vm="clr-namespace:MauiAppStock.ViewModels">
|
||||
|
||||
<ContentPage.BindingContext>
|
||||
<vm:FournisseursViewModel/>
|
||||
</ContentPage.BindingContext>
|
||||
|
||||
<ContentPage.ToolbarItems>
|
||||
<ToolbarItem Text="+" Clicked="OnAddFournisseurClicked"/>
|
||||
</ContentPage.ToolbarItems>
|
||||
|
||||
<StackLayout Padding="10">
|
||||
<Label Text="Liste des Fournisseurs" FontSize="24" HorizontalOptions="Center"/>
|
||||
<ListView x:Name="FournisseursListView" ItemsSource="{Binding Fournisseurs}"
|
||||
IsPullToRefreshEnabled="True"
|
||||
RefreshCommand="{Binding LoadFournisseursCommand}"
|
||||
ItemTapped="OnFournisseurTapped">
|
||||
<ListView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<TextCell Text="{Binding Nom}"/>
|
||||
</DataTemplate>
|
||||
</ListView.ItemTemplate>
|
||||
</ListView>
|
||||
</StackLayout>
|
||||
</ContentPage>
|
@ -1,35 +0,0 @@
|
||||
using MauiAppStock.Models;
|
||||
using MauiAppStock.ViewModels;
|
||||
|
||||
namespace MauiAppStock.Views
|
||||
{
|
||||
public partial class FournisseursPage : ContentPage
|
||||
{
|
||||
public FournisseursPage()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
protected override void OnAppearing()
|
||||
{
|
||||
base.OnAppearing();
|
||||
var viewModel = BindingContext as FournisseursViewModel;
|
||||
viewModel.LoadFournisseursCommand.Execute(null);
|
||||
}
|
||||
|
||||
private async void OnAddFournisseurClicked(object sender, EventArgs e)
|
||||
{
|
||||
// Navigation vers la page d'ajout
|
||||
await Navigation.PushAsync(new AddFournisseurPage());
|
||||
}
|
||||
|
||||
private async void OnFournisseurTapped(object sender, ItemTappedEventArgs e)
|
||||
{
|
||||
if (e.Item is Fournisseur selectedFournisseur)
|
||||
{
|
||||
// Navigation vers la page d'édition avec l'appareil sélectionné
|
||||
await Navigation.PushAsync(new EditFournisseurPage(selectedFournisseur));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -4,18 +4,9 @@
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
|
||||
<StackLayout Padding="20" Spacing="20" VerticalOptions="Center">
|
||||
<Label Text="Menu Principal" FontSize="30" HorizontalOptions="Center" />
|
||||
<Button Text="Gestion des Appareils" BackgroundColor="Black" Clicked="OnAppareilsClicked" />
|
||||
<Button Text="Gestion des Pièces" BackgroundColor="Black" Clicked="OnPiecesClicked" />
|
||||
<Button Text="Gestion des Fournisseurs" BackgroundColor="Black" Clicked="OnFournisseursClicked" />
|
||||
<Button Text="Associer une Pièce à un Appareil" BackgroundColor="Black" Clicked="OnAssocierPieceClicked" />
|
||||
<Button Text="Mouvement de stock" BackgroundColor="Black" Clicked="OnMouvementStockClicked" />
|
||||
<VerticalStackLayout Padding="20" Spacing="20">
|
||||
<Image Source="logo.png"
|
||||
HeightRequest="200"
|
||||
Aspect="AspectFit" />
|
||||
</VerticalStackLayout>
|
||||
<Button Text="Gestion des Appareils" Clicked="OnAppareilsClicked" />
|
||||
<Button Text="Gestion des Pièces" Clicked="OnPiecesClicked" />
|
||||
<Button Text="Associer une Pièce à un Appareil" Clicked="OnAssocierPieceClicked" />
|
||||
<Button Text="Mouvement de Stock" Clicked="OnMouvementStockClicked" />
|
||||
</StackLayout>
|
||||
|
||||
|
||||
|
||||
</ContentPage>
|
@ -19,11 +19,6 @@ namespace MauiAppStock.Views
|
||||
{
|
||||
await Navigation.PushAsync(new PiecesPage());
|
||||
}
|
||||
|
||||
private async void OnFournisseursClicked(object sender, EventArgs e)
|
||||
{
|
||||
await Navigation.PushAsync(new FournisseursPage());
|
||||
}
|
||||
|
||||
private async void OnAssocierPieceClicked(object sender, EventArgs e)
|
||||
{
|
||||
|
@ -3,7 +3,6 @@
|
||||
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
|
||||
<StackLayout Padding="10">
|
||||
|
||||
<Label Text="Sélectionnez un Appareil" FontSize="24" HorizontalOptions="Center" />
|
||||
<ListView x:Name="AppareilsListView" ItemTapped="OnAppareilTapped">
|
||||
<ListView.ItemTemplate>
|
||||
|
@ -10,11 +10,7 @@ namespace MauiAppStock.Views
|
||||
InitializeComponent();
|
||||
LoadAppareils();
|
||||
}
|
||||
protected override void OnAppearing()
|
||||
{
|
||||
base.OnAppearing();
|
||||
LoadAppareils(); // Rafraîchit la liste à chaque affichage
|
||||
}
|
||||
|
||||
private async void LoadAppareils()
|
||||
{
|
||||
var appareils = await Database.GetAppareilsAsync();
|
||||
@ -29,7 +25,5 @@ namespace MauiAppStock.Views
|
||||
await Navigation.PushAsync(new AppareilPiecesPage(selectedAppareil));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
99
README.md
99
README.md
@ -1,99 +0,0 @@
|
||||
# 📱 AppSAV – Application de Gestion de Stock SAV
|
||||
|
||||
AppSAV est une application mobile destinée à la gestion du stock de pièces détachées pour une entreprise spécialisée dans la réparation d’appareils. Elle permet à l’utilisateur de gérer efficacement les matériels, les pièces associées, ainsi que le suivi des mouvements de stock.
|
||||
|
||||
---
|
||||
|
||||
## ✨ Fonctionnalités principales
|
||||
|
||||
- 🔧 **Gestion des appareils**
|
||||
- Ajout, modification et suppression d'appareils.
|
||||
- Affectation d’un identifiant unique, d’un nom et d’un état à chaque appareil.
|
||||
|
||||
- 🔗 **Association des pièces détachées aux appareils**
|
||||
- Attribution de pièces à un appareil.
|
||||
- Indication des pièces recommandées.
|
||||
|
||||
- 🔍 **Recherche par appareil**
|
||||
- Trouver rapidement les pièces associées à un appareil.
|
||||
|
||||
- 📄 **Informations détaillées**
|
||||
- Détails sur les appareils (historique d’utilisation des pièces, etc.).
|
||||
- Détails sur les pièces (prix, stock, fournisseur…).
|
||||
|
||||
- 📦 **Gestion des pièces détachées**
|
||||
- Ajout, modification, suppression.
|
||||
- Gestion du stock.
|
||||
|
||||
- 📊 **Suivi des entrées/sorties**
|
||||
- Mouvements de stock avec commentaires (entrée, sortie, quantité, etc.).
|
||||
|
||||
- 🏭 **Gestion des fournisseurs**
|
||||
- Ajout, modification, suppression des fournisseurs.
|
||||
- Coordonnées de contact.
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Technologies utilisées
|
||||
|
||||
- 🧩 **.NET MAUI (.NET 8.0)**
|
||||
- 🗄️ **SQLite** (base de données locale)
|
||||
- 🖥️ **IDE** : Rider / Visual Studio
|
||||
- 🧪 Méthode agile : **Scrum**
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Installation
|
||||
|
||||
### Prérequis
|
||||
|
||||
- [.NET MAUI SDK](https://learn.microsoft.com/en-us/dotnet/maui/overview/) (version 8.0)
|
||||
- Android Emulator ou appareil physique
|
||||
- IDE compatible : JetBrains Rider ou Visual Studio 2022+
|
||||
- Git
|
||||
|
||||
### Instructions
|
||||
|
||||
```bash
|
||||
# Cloner le projet
|
||||
git clone https://gitea.btssio-poitiers.fr/brunetg/AppSAV.git
|
||||
cd AppSAV
|
||||
|
||||
# Restaurer les dépendances
|
||||
dotnet restore
|
||||
|
||||
# Lancer l’application
|
||||
dotnet build
|
||||
dotnet maui run --framework net8.0-android
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📁 Structure de projet
|
||||
|
||||
```
|
||||
/AppSAV
|
||||
├── Data/ # Contient les fichiers relatifs à la base de données
|
||||
├── Helpers/ # Contient une commande asynchrone qui contourne l'installation de CommunityToolKit
|
||||
├── Models/ # Contient les entités de l'application
|
||||
├── ViewModels/ # Contient la gestion de données de l'interface utilisateur
|
||||
└── Views/ # Contient les pages et le Code-Behind associé
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📄 Licence
|
||||
|
||||
Projet pédagogique réalisé dans le cadre de l'AP du S4 de BTS - SIO : SLAM (Lycée Aliénor d'Aquitaine) Session 2025.
|
||||
|
||||
---
|
||||
|
||||
## 👥 Auteurs
|
||||
|
||||
- **Axel BESBOT**
|
||||
- **Yann ASTIER**
|
||||
- **Giovanny BRUNET**
|
||||
- **Kylian BAYARD**
|
||||
- **Lucas RAGUENEAU**
|
||||
|
||||
Encadré par : *Louis BOUSSARIE* – *Romaric THIBAULT FERRAND*
|
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user