Exemplo n.º 1
0
        private void JANCODE_TEXT_KeyDown(object sender, KeyRoutedEventArgs e)
        {
            //Encoding Enc = Encoding.GetEncoding("");
            //if (Enc.GetByteCount(JANCODE_TEXT.Text) == JANCODE_TEXT.Text.Length * 2
            //JANCODE_TEXT.Text = Regex.Replace(JANCODE_TEXT.Text, "[0-9]", p => ((char)(p.Value[0] - '0' + '0')).ToString());
            if (e.Key == Windows.System.VirtualKey.Enter)
            {
                JANCODE_TEXT.IsReadOnly = true;
                if (!CheckFunction.JANCODE_Integrity_Check(JANCODE_TEXT.Text))
                {
                    JANCODE_TEXT.IsReadOnly = false;
                    CheckFunction.Message_Show("Error", "JANコードが正しくありません");
                    JANCODE_TEXT.Text = "";
                    return;
                }

                // 謎ポイント
                // 初回、if (Items.First(x => x._janCode == last_jan)._janCode == JANCODE_TEXT.Text)でマッチするレコードがなかった場合例外発生、2回目以降は例外は発生せずelseに飛ぶ
                // 応急措置として同じコードを書いています
                // いろいろおかしい
                try
                {
                    // リスト上に存在する場合
                    if (Items.First(x => x._janCode == JANCODE_TEXT.Text)._janCode == JANCODE_TEXT.Text)
                    {
                        last_jan = JANCODE_TEXT.Text;
                        Items.First(x => x._janCode == JANCODE_TEXT.Text)._num += 1;
                    }
                    else
                    {
                        // リスト上に存在しない場合
                        DatabaseAccess db = new DatabaseAccess();
                        if (db.Search_Item(JANCODE_TEXT.Text))
                        {
                            // DB既登録の場合
                            Item item = db.Get_Item(JANCODE_TEXT.Text);
                            item._num = 1;
                            last_jan  = JANCODE_TEXT.Text;
                            Items.Add(item);
                        }
                        else
                        {
                            // DB未登録の場合
                            CheckFunction.Message_Show("Error", "データベースに存在しない商品です。");
                        }
                    }
                }
                catch
                {
                    // リスト上に存在しない場合
                    DatabaseAccess db = new DatabaseAccess();
                    if (db.Search_Item(JANCODE_TEXT.Text))
                    {
                        // DB既登録の場合
                        Item item = db.Get_Item(JANCODE_TEXT.Text);
                        item._num = 1;
                        last_jan  = JANCODE_TEXT.Text;
                        Items.Add(item);
                    }
                    else
                    {
                        // DB未登録の場合
                        CheckFunction.Message_Show("Error", "データベースに存在しない商品です。");
                    }
                }


                // 処理完了後
                JANCODE_TEXT.Text       = "";
                JANCODE_TEXT.IsReadOnly = false;
            }
        }
        private void Registration_Decide_Button_Click(object sender, RoutedEventArgs e)
        {
            Enable_Toggle();
            if (!int.TryParse(Use_Price.Text, out StaticParam._usePrice) || Use_Price.Text == "")
            {
                CheckFunction.Message_Show("Error", "正しい仕入れ額を入力して下さい");
                Enable_Toggle();
                return;
            }
            if (Items.Count <= 0)
            {
                CheckFunction.Message_Show("Error", "商品が入力されていません");
                Enable_Toggle();
                return;
            }
            // Items整合性チェック
            foreach (Item item in Items)
            {
                // 入力パラメータチェック
                if (item._janCode == "")
                {
                    // JANコードが未入力です。
                    CheckFunction.Message_Show("Error", item._janCode + "\nJANコードが未入力です。");
                    Enable_Toggle();
                    return;
                }
                else if (item._itemName == "")
                {
                    // 商品名が未入力です。
                    CheckFunction.Message_Show("Error", item._janCode + "\n商品名が未入力です。");
                    Enable_Toggle();
                    return;
                }
                else if (item._price.ToString() == "")
                {
                    // 価格が未入力です。
                    CheckFunction.Message_Show("Error", item._janCode + "\n価格が未入力です。");
                    Enable_Toggle();
                    return;
                }
                else if (item._num.ToString() == "")
                {
                    // 在庫が未選択です。
                    CheckFunction.Message_Show("Error", item._janCode + "\n在庫が未入力です。");
                    Enable_Toggle();
                    return;
                }
                else if (item._categoryId == 0)
                {
                    // カテゴリが未選択です。
                    CheckFunction.Message_Show("Error", item._janCode + "\nカテゴリが未選択です。");
                    Enable_Toggle();
                    return;
                }

                // フォーマットチェック
                if (!CheckFunction.JANCODE_Integrity_Check(item._janCode))
                {
                    CheckFunction.Message_Show("Error", item._janCode + "\nJANコードのフォーマットが間違っています。なんでこのエラー出たの?");
                    Enable_Toggle();
                    return;
                }
                else if (!CheckFunction.itemName_Integrity_Check(item._itemName))
                {
                    CheckFunction.Message_Show("Error", item._janCode + "\n登録できる商品名は50文字以下です。");
                    Enable_Toggle();
                    return;
                }
                else if (!CheckFunction.price_Integrity_Check(item._price.ToString()))
                {
                    CheckFunction.Message_Show("Error", item._janCode + "\n登録できる価格は1~5000の値です。");
                    Enable_Toggle();
                    return;
                }
                else if (!CheckFunction.num_Integrity_Check(item._num.ToString()))
                {
                    CheckFunction.Message_Show("Error", item._janCode + "\n登録できる在庫数は0~200の値です。");
                    Enable_Toggle();
                    return;
                }
            }
            Frame.Navigate(typeof(ProductRegistrationConfirmationScreen), Items);
        }
        private void Edit_Decide_Button_Click(object sender, RoutedEventArgs e)
        {
            // 入力パラメータチェック
            if (janCode_TEXT.Text == "")
            {
                // JANコードが未入力です。
                CheckFunction.Message_Show("Error", "JANコードが未入力です。");
                return;
            }
            else if (itemName_TEXT.Text == "")
            {
                // 商品名が未入力です。
                CheckFunction.Message_Show("Error", "商品名が未入力です。");
                return;
            }
            else if (price_TEXT.Text == "")
            {
                // 価格が未入力です。
                CheckFunction.Message_Show("Error", "価格が未入力です。");
                return;
            }
            else if (num_TEXT.Text == "")
            {
                // 在庫が未選択です。
                CheckFunction.Message_Show("Error", "在庫が未入力です。");
                return;
            }
            else if (category_TEXT.SelectedIndex == 0)
            {
                // カテゴリが未選択です。
                CheckFunction.Message_Show("Error", "カテゴリが未選択です。");
                return;
            }

            // フォーマットチェック
            if (!CheckFunction.JANCODE_Integrity_Check(janCode_TEXT.Text))
            {
                CheckFunction.Message_Show("Error", "JANコードのフォーマットが間違っています。なんでこのエラー出たの?");
                return;
            }
            else if (!CheckFunction.itemName_Integrity_Check(itemName_TEXT.Text))
            {
                CheckFunction.Message_Show("Error", "登録できる商品名は50文字以下です。");
                return;
            }
            else if (!CheckFunction.price_Integrity_Check(price_TEXT.Text))
            {
                CheckFunction.Message_Show("Error", "登録できる価格は0~5000の値です。");
                return;
            }
            else if (!CheckFunction.num_Integrity_Check(num_TEXT.Text))
            {
                CheckFunction.Message_Show("Error", "登録できる在庫数は0~200の値です。");
                return;
            }

            Enable_Toggle();
            DatabaseAccess db = new DatabaseAccess();

            if (db.Search_Item(item._janCode))
            {
                db.Delete_Item(item._janCode);
                Item add_item = new Item(janCode_TEXT.Text, itemName_TEXT.Text, category_TEXT.SelectedIndex, int.Parse(price_TEXT.Text), int.Parse(num_TEXT.Text));
                db.Insert_Item(add_item);
                db.Insert_Operation_Log(StaticParam._mID, "商品情報更新(JANコード = " + add_item._janCode + ", 商品名 = " + item._itemName + "→" + add_item._itemName + ", 価格 = " + item._price + "→" + add_item._price + ", 在庫数 = " + item._num + "→" + add_item._num + ")");
                CheckFunction.Message_Show(add_item._itemName + " の情報を更新しました。", "");
                Frame.Navigate(typeof(ProductListEditScreen));
            }
            else
            {
                CheckFunction.Message_Show("Error", "DB上に対象となるJANコードが存在しません。");
                Enable_Toggle();
                return;
            }
        }
        private async void JANCODE_TEXT_KeyDown(object sender, KeyRoutedEventArgs e)
        {
            if (e.Key == Windows.System.VirtualKey.Enter)
            {
                JANCODE_TEXT.IsReadOnly = true;
                if (!CheckFunction.JANCODE_Integrity_Check(JANCODE_TEXT.Text))
                {
                    JANCODE_TEXT.IsReadOnly = false;
                    CheckFunction.Message_Show("Error", "JANコードが正しくありません");
                    JANCODE_TEXT.Text = "";
                    return;
                }

                try
                {
                    string s = await RakutenSearchAPI.JAN_Search(JANCODE_TEXT.Text);

                    Candidate_Set(s);
                }
                catch {
                    JANCODE_TEXT.Text = "";
                    return;
                }
                finally{
                }

                // 謎ポイント
                // 初回、if (Items.First(x => x._janCode == last_jan)._janCode == JANCODE_TEXT.Text)でマッチするレコードがなかった場合例外発生、2回目以降は例外は発生せずelseに飛ぶ
                // 応急措置として同じコードを書いています
                // いろいろおかしい
                try
                {
                    // リスト上に存在する場合
                    if (Items.First(x => x._janCode == JANCODE_TEXT.Text)._janCode == JANCODE_TEXT.Text)
                    {
                        last_jan = JANCODE_TEXT.Text;
                        Items.First(x => x._janCode == JANCODE_TEXT.Text)._num += 1;
                    }
                    else
                    {
                        DatabaseAccess db = new DatabaseAccess();
                        if (db.Search_Item(JANCODE_TEXT.Text))
                        {
                            // DB既登録の場合
                            Item item = db.Get_Item(JANCODE_TEXT.Text);
                            item._num = 1;
                            last_jan  = JANCODE_TEXT.Text;
                            Items.Add(item);
                        }
                        else
                        {
                            // DB未登録の場合
                            Item item = new Item(JANCODE_TEXT.Text, "", 0, 0, 1);
                            last_jan = JANCODE_TEXT.Text;
                            Items.Add(item);
                        }
                    }
                }catch {
                    DatabaseAccess db = new DatabaseAccess();
                    if (db.Search_Item(JANCODE_TEXT.Text))
                    {
                        // DB既登録の場合
                        Item item = db.Get_Item(JANCODE_TEXT.Text);
                        item._num = 1;
                        last_jan  = JANCODE_TEXT.Text;
                        Items.Add(item);
                    }
                    else
                    {
                        // DB未登録の場合
                        Item item = new Item(JANCODE_TEXT.Text, "", 0, 0, 1);
                        last_jan = JANCODE_TEXT.Text;
                        Items.Add(item);
                    }
                }

                //DatabaseAccess db = new DatabaseAccess();
                //db.Insert_Item(item);

                // 処理完了後
                JANCODE_TEXT.Text       = "";
                JANCODE_TEXT.IsReadOnly = false;
            }
        }