internal static int GetToShoppingListQuantity(int articleId, int?minQuantity = null, int?prefQuantity = null) { if ((minQuantity == null) || (prefQuantity == null)) { ArticleData article = Database.GetArticleData(articleId); // Artikle ist noch (gar) nicht angelegt? // (Laut Absturzbericht ist so ein Fall vorhanden, konnte aber nicht reproduziert werden.) if (article == null) { return(-1); } minQuantity = article.MinQuantity.HasValue ? article.MinQuantity.Value : 0; prefQuantity = article.PrefQuantity.HasValue ? article.PrefQuantity.Value : 0; } int isQuantityInStorage = (int)Database.GetArticleQuantityInStorage(articleId); int toBuyQuantity = ShoppingListHelper.GetToBuyQuantity(minQuantity.Value, prefQuantity.Value, isQuantityInStorage); int shoppingListQuantiy = (int)Database.GetShoppingListQuantiy(articleId); toBuyQuantity = toBuyQuantity - shoppingListQuantiy; if (toBuyQuantity < 0) // Mehr auf der Einkaufsliste als berechnet? { return(0); } return(toBuyQuantity); }
internal static int GetToShoppingListQuantity(int articleId, int minQuantity, int prefQuantity) { int isQuantity = (int)Database.GetArticleQuantityInStorage(articleId); int toBuyQuantity = ShoppingListHelper.GetToBuyQuantity(minQuantity, prefQuantity, isQuantity); int shoppingListQuantiy = (int)Database.GetShoppingListQuantiy(articleId); toBuyQuantity = toBuyQuantity - shoppingListQuantiy; if (toBuyQuantity < 0) // Mehr auf der Einkaufsliste als berechnet? { return(0); } return(toBuyQuantity); }
public static void UnitTest() { // MinQuantity PrefQuantity IsQuantity ToBuy Trace.Assert(ShoppingListHelper.GetToBuyQuantity(0, 0, 4) == 0); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(0, 0, 3) == 0); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(0, 0, 2) == 0); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(0, 0, 1) == 0); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(0, 0, 0) == 0); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(5, 0, 6) == 0); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(5, 0, 5) == 0); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(5, 0, 4) == 1); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(5, 0, 3) == 2); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(5, 0, 2) == 3); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(5, 0, 1) == 4); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(5, 0, 0) == 5); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(0, 8, 9) == 0); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(0, 8, 8) == 0); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(0, 8, 7) == 1); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(0, 8, 6) == 2); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(0, 8, 5) == 3); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(0, 8, 4) == 4); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(0, 8, 3) == 5); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(0, 8, 2) == 6); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(0, 8, 1) == 7); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(0, 8, 0) == 8); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(5, 8, 9) == 0); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(5, 8, 8) == 0); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(5, 8, 7) == 0); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(5, 8, 6) == 0); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(5, 8, 5) == 0); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(5, 8, 4) == 4); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(5, 8, 3) == 5); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(5, 8, 2) == 6); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(5, 8, 1) == 7); Trace.Assert(ShoppingListHelper.GetToBuyQuantity(5, 8, 0) == 8); }
protected override void OnCreate(Bundle bundle) { MainActivity.Strings_Manufacturer = Resources.GetString(Resource.String.ArticleDetails_Manufacturer); MainActivity.Strings_Size = Resources.GetString(Resource.String.ArticleDetails_Size); MainActivity.Strings_WarnenInTagen = Resources.GetString(Resource.String.ArticleDetails_WarningInDays); MainActivity.Strings_Calories = Resources.GetString(Resource.String.ArticleDetails_Calories); MainActivity.Strings_Category = Resources.GetString(Resource.String.ArticleDetails_Category); MainActivity.Strings_SubCategory = Resources.GetString(Resource.String.ArticleDetails_SubCategory); MainActivity.Strings_Supermarket = Resources.GetString(Resource.String.ArticleDetails_SupermarketLabel); MainActivity.Strings_Price = Resources.GetString(Resource.String.ArticleDetails_Price); MainActivity.Strings_Storage = Resources.GetString(Resource.String.ArticleDetails_StorageLabel); MainActivity.Strings_MinQuantity = Resources.GetString(Resource.String.ArticleDetails_MinQuantityLabel); MainActivity.Strings_PrefQuantity = Resources.GetString(Resource.String.ArticleDetails_PrefQuantityLabel); MainActivity.Strings_EANCode = Resources.GetString(Resource.String.ArticleDetails_EANCode); MainActivity.Strings_Amount = Resources.GetString(Resource.String.ArticleDetails_Amount); MainActivity.Strings_Notes = Resources.GetString(Resource.String.ArticleDetails_Notes); // Damit Pre-Launch von Google Play Store nicht immer wieder // in die EAN Scan "Falle" tappt und da nicht wieder rauskommt. // (meistens nächster Tag) MainActivity.preLaunchTestEndDay = new DateTime(2020, 12, 21); base.OnCreate(bundle); if (Debugger.IsAttached) { ShoppingListHelper.UnitTest(); } // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); // ActionBar Hintergrund Farbe setzen var backgroundPaint = ContextCompat.GetDrawable(this, Resource.Color.Application_ActionBar_Background); backgroundPaint.SetBounds(0, 0, 10, 10); ActionBar.SetBackgroundDrawable(backgroundPaint); ActionBar.SetDisplayShowHomeEnabled(true); string storageDir = this.GetExternalFilesDir(null).AbsolutePath; //File.WriteAllText(storageDir + "/Test.txt", "Das ist ein Test."); // Datenbanken erstellen Android_Database.Instance.RestoreSampleDatabaseFromResources(); // Initialisierung für EAN Scanner ZXing.Mobile.MobileBarcodeScanner.Initialize(Application); // Zugriff auf die SD Karte anfordern new SdCardAccess().Grand(this); // Klick auf den "abgelaufen" Text bringt die Liste der (bald) abgelaufender Artieln. FindViewById <TextView>(Resource.Id.Main_Text).Click += ArticlesNearExpiryDate_Click; FindViewById <TextView>(Resource.Id.Main_Text1).Click += ArticlesNearExpiryDate_Click; FindViewById <TextView>(Resource.Id.Main_Text2).Click += ArticlesNearExpiryDate_Click; // Auswahl nach Kategorien Button buttonKategorie = FindViewById <Button>(Resource.Id.MainButton_Kategorie); buttonKategorie.Click += delegate { this.ShowCategoriesSelection(); }; // Lagerbestand Button buttonLagerbestand = FindViewById <Button>(Resource.Id.MainButton_Lagerbestand); buttonLagerbestand.Click += delegate { StartActivityForResult(new Intent(this, typeof(StorageItemListActivity)), EditStorageItemQuantityId); }; // Artikeldaten Button buttonArticle = FindViewById <Button>(Resource.Id.MainButton_Artikeldaten); buttonArticle.Click += delegate { StartActivityForResult(new Intent(this, typeof(ArticleListActivity)), ArticleListId); }; // Einkaufsliste Button buttonShoppingList = FindViewById <Button>(Resource.Id.MainButton_ShoppingList); buttonShoppingList.Click += delegate { StartActivity(new Intent(this, typeof(ShoppingListActivity))); }; // Barcode scannen Button buttonBarcode = FindViewById <Button>(Resource.Id.MainButton_Barcode); buttonBarcode.Click += ButtonBarcode_Click; // Einstellungen für Warnhinweis beim OpenFoodFacts.org ArticleDetailsActivity.showCostMessage = Settings.GetBoolean("ShowOpenFoodFactsInternetCostsMessage", true); StorageItemQuantityActivity.UseAltDatePicker = Settings.GetBoolean("UseAltDatePicker", false); // DatePicker-DEBUG if (debug_date_picker) { Android_Database.UseTestDatabase = true; Button b = new Button(this.ApplicationContext); b.Text = "Test DP"; b.Click += delegate { AltDatePickerFragment frag = AltDatePickerFragment.NewInstance(delegate(DateTime? time) { b.Text = time != null ? time.Value.ToShortDateString() : "Kein Datum"; }, DateTime.Today); frag.ShowsDialog = true; frag.Show(this.FragmentManager, AltDatePickerFragment.TAG); }; FindViewById <LinearLayout>(Resource.Id.Main_LinearLayout).AddView(b); AltDatePickerFragment frag2 = AltDatePickerFragment.NewInstance(delegate(DateTime? time) { b.Text = time != null ? time.Value.ToShortDateString() : "Kein Datum"; }, DateTime.Today); frag2.ShowsDialog = true; frag2.Show(this.FragmentManager, AltDatePickerFragment.TAG); } if (MainActivity.IsGooglePlayPreLaunchTestMode) { Android_Database.UseTestDatabase = true; } else { this.ShowInfoAufTestdatenbank(); } // Datenbankverbindung initialisieren this.InitializeDatabase(); // Hinweis bei Pre-Launch Untersuchung this.ShowInfoAufTestversion(); }