Giter Site home page Giter Site logo

tabletposapp's People

Contributors

m-kawato avatar

Watchers

 avatar  avatar

tabletposapp's Issues

商品情報のインポート

初回起動時に、SDカード上に置いた商品情報ファイル (CSV形式) を商品DBにインポートする。

Receipt CSV出力形式の変更

[Receipt画面] "Export" ボタンで出力するCSVファイルの書式を以下のように変更する。

(1) 1行に1商品
(2) フィールドの並びは以下の通り
Sale Date,Route Name,Route code,RRP name,RRP code,Credit amount,Product name,Product Code,Quantity,Loading sheet NO
(3) creditの値は、同一RRPの並びのうち最初の1行に入れる
(4) CSVファイルの1行目にはヘッダ行を入れる ("Sales Data,Route Name,...")
(5) loading sheet numberは、Order画面で入力された、1日の中で共通に使われる番号 (cf. issue #22)

Stock画面の追加

Loading画面で選択した商品について、数量を指定するためのStock画面を追加する。

Order入力におけるStock数の反映

[Order]

  1. Order画面に表示する商品の条件を以下のように変更する。
    変更前: Loading画面で選択された商品
    変更後: Stock数が1以上の商品 (Stock画面またはCSVファイルから入力されたもの)
  2. 各商品画像の下に、現在のStock数を表示する。

画面間動線の変更

Confirm←→Stockのような画面遷移手段を設ける必要あり。

案1. Confirm画面に Top Menu に遷移するボタンを追加
案2. Confirm画面に Stock画面に遷移するボタンを追加
案3. 各画面間で任意に遷移するためのナビゲーション領域を追加

ルート・店情報のCSVからの読み込み

仕様追加
・アプリ起動時に、CSVファイル (places.csv) からルート・店情報をロードする。
・Order・Confirm画面で、ルート選択後に、選択したルートに合わせて選択肢の店を切り替える。

注文数量指定へのStock数の反映

[Confirm]

  1. 各商品について、現在のStock数を表示する。
  2. 数量入力 (Quantity) に、現在のStock数を越えないようにバリデーションを追加する。

loading sheet number入力UIの追加

[Order画面] 同じ日の注文情報を識別するために "loading sheet number" を入力するためのUIを設ける。
この数値はアプリが終了しても、日が変わらない限りは保存される。

商品データ・店データが存在しないときの挙動

(変更前) 商品・店データのSDカードからの読み込み (issue #25) に伴い、商品・店データファイルが存在しない場合にはアプリが異常終了する。
(変更後) エラーの原因をダイアログに出力してから終了する。

数量0の非表示化

Confirm, Stock画面において、数量が0の場合には "0" を表示する代わりに空欄とする。
ソフトキーボードからの入力を容易にするため。
(可能であれば、数量欄が選択された時点で空欄にする)

注文状態の初期化手段

メモリ中の注文状態をどのタイミングで初期化するか。
(選択肢1) アプリ起動時
(選択肢2) アプリ起動時+Confirm画面に初期化ボタン追加
(選択肢3) アプリ起動時+トップ画面からOrder画面への遷移時に初期化

ルート・店情報の二重読み込み

再現手順:
(1) アプリ起動→[Order画面] Route/RRP選択
(2) 戻るボタンを複数回押してホーム画面に戻る
(3) 再度アプリ起動

現象: Route・RRP選択のプルダウンメニュー中に、同じ選択肢が複数回現れる。

原因 (推測):
TabletPOSのプロセスが生きた状態で再起動すると、変数の状態は残ったままで、ルート・店情報のロードが再実行される。このとき、ロード済みのオブジェクト (List) に追記するので同じ情報が二重に入る。

対策:
ルート・店情報のロード時にリストを初期化する。

商品画像のSDカードからの読み込み・表示

変更前: 商品画像をassetsから読み込んで表示
変更後: 商品画像をSDカード上の所定のディレクトリから読み込んで表示
変更理由: 再ビルドなしで、ユーザによる商品画像の追加を可能にするため。

暫定仕様: 商品画像ファイルのパス名は以下の規則に従う。
(sdcard)/TabetPOSApp/images/product-.jpg
(例: product-20.jpg)

CSV出力のフォーマット変更

変更前
timestamp, routeName, placeName, amount, credit, (productId, quantity)+

変更後
timestampe, routeName, routeId, placeName, placeId, amount, credit, (productName, productId, quantity)+

変更理由:
・routeName, placeNameは一意でない可能性あり
・typoによる事故防止

商品カテゴリ選択UIのドロップダウンメニュー (Spinner) への変更

商品カテゴリ選択に使うUI部品を以下のように変更する。
(変更前) ボタン (Button)
(変更後) ドロップダウンメニュー (Spinner)

カテゴリの種類が増えた際の画面崩れを防ぐためと、商品リストからカテゴリ選択メニューを自動生成できるようにすることが目的。

ルート・店選択メニューへのID追加

変更対象: Order画面・Confirm画面中のルート・店選択メニューに出てくる選択肢
[変更前]

  • routeName
  • placeName

[変更後]

  • routeName (routeCode)
  • placeName (placeCode)

Confirm画面の数量入力UIの変更

[Confirm画面]
以下の仕様変更を加える。
・箱単位の数量入力を廃止して、全体の個数だけを入れるようにする。
・増減ボタン (+, -) を廃止して、ソフトキーボードによる入力のみにする。
・入力された個数に箱あたり個数と箱あたり価格を自動的に適用して合計価格を計算する。

Order画面の数量選択の廃止

[Order画面]
以下の仕様変更を行う。
・数量選択を廃止して、注文商品の選択を行うようにする (商品画像+チェックボックス)。
・ここで選択肢として表示される商品は、Loading画面で選択される商品のみ (see issue #29)。

要確認:
・単価の表示も廃止する?
(暫定仕様: 各商品について商品画像、商品名、チェックボックスのみ表示して、単価は表示しない)

商品・店データのSDカードからの読み込み

変更前: 商品・店データ (CSVファイル) をassetsから読み込み
変更後: 商品・店データをSDカード上の所定のディレクトリから読み込み
変更理由: 再ビルドなしで、ユーザによる商品・店データの更新を可能にするため。

暫定仕様:
・商品データのパス (sdcard)/TabletPOSApp/products.csv
・ルート・店データのパス (sdcard)/TabetPOSApp/places.csv

(保留)ソフトキーボードの表示制御

各画面にて、数値入力完了後にソフトキーボードを自動的に消す。
具体的には、少なくとも以下のケースが含まれる。
・Order画面で、Loading Sheet Numberの入力確定時
・Confirm画面で数値入力確定時

Loading画面の追加

以下の仕様で "Loading" 画面を新設する。
・DBで定義された商品名と商品画像、それぞれにチェックボックスを表示
・チェックの入った商品のみOrderページに表示
・"Clear All" ボタンで初期状態に戻る
・トップ画面←→Loadingの画面遷移

確認事項
・デフォルトのチェック状態 (暫定仕様: デフォルトOFF)
・入力したチェック状態の有効期間 (暫定仕様: チェック状態をSQLite DBに保存して、手動で更新しない限り無効化しない)

activity間での注文状態の共有

注文状態をJavaオブジェクトに保存し、activity間で受け渡すことで、画面遷移時に注文状態を引き継げるようにする。

Receipt表示形式の変更

[Receipt画面]
注文情報表示のフォーマットを以下のように変更する。
・上部に今回の注文内容 (変更なし)
・その下に間隔を空けて、当日の注文すべてを、店ごとに分けて表示する。ここで表示する注文内容は、"Enter New Order" ボタン押下時に保存されたもの (see issue #32)。

確認事項:
・「当日」の判断基準
(暫定仕様: 同一Loading Sheet Numberに対応した注文情報を当日の注文とみなす)

ReceiptデータのCSVファイル出力の書式

「credit金額を総額に対して指定」という仕様とどのように整合性を取るか。

[選択肢1] 同じCSVファイル中に商品ごとの売上データとcredit情報を混在させ、どちらかを区別するためのフィールドを追加する。
[選択肢2] 商品ごとの売上データとcredit情報を別のファイルに書き出し、取引IDのようなものを追加して両者を対応づける
[その他]

領収書情報のエクスポート

Receipt画面からExportボタンを押した際に、画面に表示中の領収書情報の内容をCSV形式でSDカード上に出力する。

過去の注文入力状態の保存

[Receipt画面]
変更前: "Enter New Order" で現在の注文内容を削除し、Order画面に遷移
変更後: "Enter New Order" で現在の注文内容を「当日の注文内容」に保存した後で削除し、Order画面に遷移
変更理由: Receipt画面に、当日の過去の注文内容を表示するため。

暫定仕様:
・Receipt画面に遷移したタイミングで、「当日の注文内容」をSQLiteデータベースに保存する。

(保留)未確定の数値入力欄の色を変える

各画面にて、未確定の数値入力欄 (何か数値を入れたり削除した後、EnterやUpdateを押していない状態) の背景色を変えて、決定した時点で通常色 (白) に戻す。

Receipt画面からConfirm画面に戻ったときの動作

Receipt画面に遷移したタイミングで、注文内容はDBに保存されている。この状態からConfirmに戻ったときの動作をどうするか?
(選択肢1) 何もしない (DBに情報を残したまま) → 再度Receiptに行かないままアプリを終了すると、注文情報がそのままDBに残る。
(選択肢2) 現在の注文内容をDBから削除 → 再度Receiptに行かないままアプリを終了すると、その注文はなかったことになる。

Confirmで数量0に変更した場合の挙動

[変更前]Confirm画面で商品の数量を0に変更したあとでReceiptに進むと、数量が0の商品がReceiptに出力される。
[変更後]Confirmで数量0と入力された商品はReceiptに出力しない。

ルート・店情報の保存

Order画面で入力したルート・店情報をメモリに保存し、Confirm・Receipt画面との間で共有する。
Receipt画面に遷移したタイミングで、注文情報とともにDBに保存する。

注文総額に対するツケの指定

Confirm画面で、1回の注文総額のうちいくらをツケ (credit) で支払うかを指定できるようにする。
Receipt画面に、1回の注文総額に対するツケ金額を表示する。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.