m-kawato / tabletposapp Goto Github PK
View Code? Open in Web Editor NEWLicense: Apache License 2.0
License: Apache License 2.0
初回起動時に、SDカード上に置いた商品情報ファイル (CSV形式) を商品DBにインポートする。
[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)
Loading画面で選択した商品について、数量を指定するためのStock画面を追加する。
[Order]
Order画面からカテゴリボタンを押した際に、画面遷移を伴わずに商品一覧を表示するようにする。
Confirm←→Stockのような画面遷移手段を設ける必要あり。
案1. Confirm画面に Top Menu に遷移するボタンを追加
案2. Confirm画面に Stock画面に遷移するボタンを追加
案3. 各画面間で任意に遷移するためのナビゲーション領域を追加
仕様追加
・アプリ起動時に、CSVファイル (places.csv) からルート・店情報をロードする。
・Order・Confirm画面で、ルート選択後に、選択したルートに合わせて選択肢の店を切り替える。
[Confirm]
[Receipt画面]
画面のどこかに当日の日付を以下のフォーマットで表示する。
DD-MM-YYYY
[Order画面] 同じ日の注文情報を識別するために "loading sheet number" を入力するためのUIを設ける。
この数値はアプリが終了しても、日が変わらない限りは保存される。
選択した商品カテゴリについて注文情報を入力できるようにする。
(変更前は "wash" カテゴリ決め打ち)
receipt出力ファイルの名前を変更する。
(変更前) receipt_(日付).xls
(変更後) receipt_(日付).csv
(変更前) 商品・店データのSDカードからの読み込み (issue #25) に伴い、商品・店データファイルが存在しない場合にはアプリが異常終了する。
(変更後) エラーの原因をダイアログに出力してから終了する。
画面にリストが入りきらないときにスクロールしない問題。
Confirm, Stock画面において、数量が0の場合には "0" を表示する代わりに空欄とする。
ソフトキーボードからの入力を容易にするため。
(可能であれば、数量欄が選択された時点で空欄にする)
Order←→Confirm←→Receiptの遷移時に、選択済みの店 (place) がリセットされて一番上の店が選択された状態になることがある。
再現条件は不明。
メモリ中の注文状態をどのタイミングで初期化するか。
(選択肢1) アプリ起動時
(選択肢2) アプリ起動時+Confirm画面に初期化ボタン追加
(選択肢3) アプリ起動時+トップ画面からOrder画面への遷移時に初期化
再現手順:
(1) アプリ起動→[Order画面] Route/RRP選択
(2) 戻るボタンを複数回押してホーム画面に戻る
(3) 再度アプリ起動
現象: Route・RRP選択のプルダウンメニュー中に、同じ選択肢が複数回現れる。
原因 (推測):
TabletPOSのプロセスが生きた状態で再起動すると、変数の状態は残ったままで、ルート・店情報のロードが再実行される。このとき、ロード済みのオブジェクト (List) に追記するので同じ情報が二重に入る。
対策:
ルート・店情報のロード時にリストを初期化する。
変更前: 商品画像をassetsから読み込んで表示
変更後: 商品画像をSDカード上の所定のディレクトリから読み込んで表示
変更理由: 再ビルドなしで、ユーザによる商品画像の追加を可能にするため。
暫定仕様: 商品画像ファイルのパス名は以下の規則に従う。
(sdcard)/TabetPOSApp/images/product-.jpg
(例: product-20.jpg)
Confirm, Stock画面において、数値入力後に確定すると、文字入力カーソルを次の行に自動移動させる。
(Order, Confirm, Receipt共通) リスト領域のみスクロールしているのを、画面全体をスクロールするように変更する。
変更前
timestamp, routeName, placeName, amount, credit, (productId, quantity)+
変更後
timestampe, routeName, routeId, placeName, placeId, amount, credit, (productName, productId, quantity)+
変更理由:
・routeName, placeNameは一意でない可能性あり
・typoによる事故防止
[Loading]
SDカード上のファイルを指定してStockデータ (product ID, stock quantity) を読み込む機能を追加する。
[Confirm]
注文の数量入力にダイアログを出す代わりに、Confirm画面上で直接数量を入力するように変更する。
商品カテゴリ選択に使うUI部品を以下のように変更する。
(変更前) ボタン (Button)
(変更後) ドロップダウンメニュー (Spinner)
カテゴリの種類が増えた際の画面崩れを防ぐためと、商品リストからカテゴリ選択メニューを自動生成できるようにすることが目的。
変更対象: Order画面・Confirm画面中のルート・店選択メニューに出てくる選択肢
[変更前]
[変更後]
[Receipt]
[Confirm画面]
以下の仕様変更を加える。
・箱単位の数量入力を廃止して、全体の個数だけを入れるようにする。
・増減ボタン (+, -) を廃止して、ソフトキーボードによる入力のみにする。
・入力された個数に箱あたり個数と箱あたり価格を自動的に適用して合計価格を計算する。
Confirm画面に注文内容修正用ダイアログを追加する。
[Order画面]
以下の仕様変更を行う。
・数量選択を廃止して、注文商品の選択を行うようにする (商品画像+チェックボックス)。
・ここで選択肢として表示される商品は、Loading画面で選択される商品のみ (see issue #29)。
要確認:
・単価の表示も廃止する?
(暫定仕様: 各商品について商品画像、商品名、チェックボックスのみ表示して、単価は表示しない)
Confirm画面からReceipt画面に遷移するタイミングで、注文状態をDBに保存する。
Conform画面でcredit amountが入力された際に、credit amount>total amountの場合に警告のtoastを表示する。
変更前: 商品・店データ (CSVファイル) をassetsから読み込み
変更後: 商品・店データをSDカード上の所定のディレクトリから読み込み
変更理由: 再ビルドなしで、ユーザによる商品・店データの更新を可能にするため。
暫定仕様:
・商品データのパス (sdcard)/TabletPOSApp/products.csv
・ルート・店データのパス (sdcard)/TabetPOSApp/places.csv
[Loading]
商品画像をクリックすると、チェックボックスをクリックしたときと同様にチェック状態をトグルする
各画面にて、数値入力完了後にソフトキーボードを自動的に消す。
具体的には、少なくとも以下のケースが含まれる。
・Order画面で、Loading Sheet Numberの入力確定時
・Confirm画面で数値入力確定時
以下の仕様で "Loading" 画面を新設する。
・DBで定義された商品名と商品画像、それぞれにチェックボックスを表示
・チェックの入った商品のみOrderページに表示
・"Clear All" ボタンで初期状態に戻る
・トップ画面←→Loadingの画面遷移
確認事項
・デフォルトのチェック状態 (暫定仕様: デフォルトOFF)
・入力したチェック状態の有効期間 (暫定仕様: チェック状態をSQLite DBに保存して、手動で更新しない限り無効化しない)
[Receipt画面] 日付ごとに別CSVファイルに出力するように変更する。
(例) "receipt_23_09_2013.csv"
注文状態をJavaオブジェクトに保存し、activity間で受け渡すことで、画面遷移時に注文状態を引き継げるようにする。
[Receipt画面]
注文情報表示のフォーマットを以下のように変更する。
・上部に今回の注文内容 (変更なし)
・その下に間隔を空けて、当日の注文すべてを、店ごとに分けて表示する。ここで表示する注文内容は、"Enter New Order" ボタン押下時に保存されたもの (see issue #32)。
確認事項:
・「当日」の判断基準
(暫定仕様: 同一Loading Sheet Numberに対応した注文情報を当日の注文とみなす)
「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画面に遷移したタイミングで、注文内容はDBに保存されている。この状態からConfirmに戻ったときの動作をどうするか?
(選択肢1) 何もしない (DBに情報を残したまま) → 再度Receiptに行かないままアプリを終了すると、注文情報がそのままDBに残る。
(選択肢2) 現在の注文内容をDBから削除 → 再度Receiptに行かないままアプリを終了すると、その注文はなかったことになる。
[Order][Confirm][Receipt]
プルダウンメニュー中の項目をアルファベット順にソートして表示する。
[変更前]Confirm画面で商品の数量を0に変更したあとでReceiptに進むと、数量が0の商品がReceiptに出力される。
[変更後]Confirmで数量0と入力された商品はReceiptに出力しない。
Order画面で入力したルート・店情報をメモリに保存し、Confirm・Receipt画面との間で共有する。
Receipt画面に遷移したタイミングで、注文情報とともにDBに保存する。
Confirm画面で、1回の注文総額のうちいくらをツケ (credit) で支払うかを指定できるようにする。
Receipt画面に、1回の注文総額に対するツケ金額を表示する。
[Order]商品画像をクリックすると、チェックボックスをクリックしたときと同様にチェック状態をトグルする
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.