2013年9月25日 星期三

擺攤救星S 付費版功能

擺攤救星S 付費版功能
Google play:
https://play.google.com/store/apps/details?id=com.kagoo.StallSaviorS

付費版功能:
0.沒有廣告。
1.登入密碼(可關閉此功能)。
2.盤點。
3.簡訊、E-mail,通知客戶訂單到貨。
4.統計報表:統計儲位數量、統計每月利潤、統計每月營業額、統計每月採購金額、歷史進貨統計、歷史出貨統計。
5.品號(條碼)長度支援60碼。
6.照片預覽,選擇手機裡的相片匯入。
7.庫存管理目錄新增圖片預覽模式。

登入畫面:第一次登入密碼預設為 0 ,請先修改密碼。

可關閉登入密碼功能

照片預覽,選擇手機裡的相片匯入。

盤點功能:免費版轉付費版用戶請先處理Excel檔,新用戶可直接使用。
註:免費版與付費版共用同一個資料夾。直接匯入免費版資料即可。 
將免費版的Excel:StallSavior.xls等所有資料匯入後,再匯出產生新的Excel格式。
預設進貨數量統計的數量會等於庫存數量。
盤點可手動盤點、掃描盤點,數量確認完畢後按下確定,會顯示盈虧,盤點日期也會更新,如果數量有誤,更新庫存數量後,調整數量日期也會更新。


簡訊、E-mail,通知客戶訂單到貨。


傳送E:mail:收件者與信息會自動帶入,都可進行修改。主旨、序、結尾第一次需手動輸入,會自動記錄輸入的內容。

統計報表


儲位數量:統計各儲位所剩的數量。

1.每月利潤 :訂單+零售利潤。
2.每月訂單利潤:依訂單計算
3.每月零售利潤:依進出貨記錄計算。

1.每月營業額:訂單+零售金額。
2.每月訂單金額:依訂單計算。
3.每月零售金額:依進出貨記錄計算。 

1.每月採購金額:採購計劃+零購金額。
2.每月採購計劃金額:依採購計劃之已採購清單計算。
3.每月零購金額:依進出貨記錄計算。  

歷史進貨統計

歷史出貨統計 


2013年9月1日 星期日

Android Sqlite 版本更新、資料結構更改

Android Sqlite 版本更新

/////////////////////////////////////////////////
//第一個版本
/////////////////////////////////////////////////
private final static String DB_NAME = "kagoo.db3"; // 資料庫名稱;
private final static int VERSION = 1; // 資料庫版本
// 品號資料表
public final static String TABLENAME = "stock"; // 資料表名稱
public final static String PRODUCTNO = "productno"; // 品號
public final static String NAME = "name"; // 品名
public final static String COUNT = "count"; // 數量
public final static String COST = "cost"; // 單位成本
public final static String SPACE = "space"; // 儲位
//建構式
public StockDBHelper(Context context) {
     super(context, DB_NAME, null, VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    // 建立庫存資料表
    String createTable = String.format("Create Table %s(" + // 資料表名稱
    "%s VARCHAR(13) not null primary key," + // 品號-主鍵
    "%s nvarchar(60) not null," + // 品名 nvarchar n代表多號語言
    "%s INTEGER not null," + // 數量
    "%s INTEGER not null," + // 成本
    "%s VARCHAR(10) null)" // 儲位
     , TABLENAME, PRODUCTNO, NAME, COUNT, COST, SPACE);
    db.execSQL(createTable);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}
--------------------------------------------------------------------------------------------------
/////////////////////////////////////////////////
//第二個版本,增加一個資料表
/////////////////////////////////////////////////
private final static String DB_NAME = "kagoo.db3"; // 資料庫名稱;
private final static int VERSION = 2; // 資料庫版本,版本更新為2
// 品號資料表
public final static String TABLENAME = "stock"; // 資料表名稱
public final static String PRODUCTNO = "productno"; // 品號
public final static String NAME = "name"; // 品名
public final static String COUNT = "count"; // 數量
public final static String COST = "cost"; // 單位成本
public final static String SPACE = "space"; // 儲位
// 儲位資料表(新增的資料表)
public final static String SPACENAME = "spacename"; // 儲位資料表名稱
public final static String SPACEMENU = "spacemenu"; // 儲位名稱

//建構式
public StockDBHelper(Context context) {
     super(context, DB_NAME, null, VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
    // 建立庫存資料表
    String createTable = String.format("Create Table %s(" + // 資料表名稱
    "%s VARCHAR(13) not null primary key," + // 品號-主鍵
    "%s nvarchar(60) not null," + // 品名 nvarchar n代表多號語言
    "%s INTEGER not null," + // 數量
    "%s INTEGER not null," + // 成本
    "%s VARCHAR(10) null)" // 儲位
     , TABLENAME, PRODUCTNO, NAME, COUNT, COST, SPACE);
    db.execSQL(createTable);
    // 建立儲位資料表
    createTable = String.format("Create Table %s(" + // 資料表名稱
    "%s VARCHAR(10) PRIMARY KEY)" // 序號-儲位
     , SPACENAME, SPACEMENU);
     db.execSQL(createTable);

}
//如果是新安裝的用戶,會執行上面的onCreate()
//如果先前是已經安裝的用戶,會執行下面的 onUpgrade()
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if (oldVersion == 1) {
          // 建立儲位資料表
          createTable = String.format("Create Table %s(" + // 資料表名稱
          "%s VARCHAR(10) PRIMARY KEY)" // 序號-儲位
          , SPACENAME, SPACEMENU);
          db.execSQL(createTable);

          db.setVersion(newVersion);// 重新設定資料庫版本
    }
}
--------------------------------------------------------------------------------------------------
/////////////////////////////////////////////////
//第三個版本,修改庫存資料表結構
/////////////////////////////////////////////////
private final static String DB_NAME = "kagoo.db3"; // 資料庫名稱;
private final static int VERSION = 3; // 資料庫版本,版本更新為3
// 品號資料表
public final static String TABLENAME = "stock"; // 資料表名稱
public final static String PRODUCTNO = "productno"; // 品號
public final static String NAME = "name"; // 品名
public final static String COUNT = "count"; // 數量
public final static String COST = "cost"; // 單位成本
public final static String SPACE = "space"; // 儲位
// 儲位資料表(新增的資料表)
public final static String SPACENAME = "spacename"; // 儲位資料表名稱
public final static String SPACEMENU = "spacemenu"; // 儲位名稱

//建構式
public StockDBHelper(Context context) {
     super(context, DB_NAME, null, VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
    // 建立庫存資料表
    String createTable = String.format("Create Table %s(" + // 資料表名稱
    "%s VARCHAR(13) not null primary key," + // 品號-主鍵
    "%s nvarchar(60) not null," + // 品名 nvarchar n代表多號語言
    "%s REAL not null," + // 數量,原本為整數,改為浮點數
    "%s REAL not null," + // 成本
    "%s VARCHAR(10) null)" // 儲位
     , TABLENAME, PRODUCTNO, NAME, COUNT, COST, SPACE);
    db.execSQL(createTable);
    // 建立儲位資料表
    createTable = String.format("Create Table %s(" + // 資料表名稱
    "%s VARCHAR(10) PRIMARY KEY)" // 序號-儲位
     , SPACENAME, SPACEMENU);
     db.execSQL(createTable);

}
//如果是新安裝的用戶,會執行上面的onCreate()
//如果先前是已經安裝的用戶,會執行下面的 onUpgrade()
//Android Sqlite 無法直接更改資料表結構,請參考下面的方法。
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if (oldVersion == 1) { //如果舊用戶的版本為1,直接更新到第3版
          // 建立儲位資料表
          createTable = String.format("Create Table %s(" + // 資料表名稱
          "%s VARCHAR(10) PRIMARY KEY)" // 序號-儲位
          , SPACENAME, SPACEMENU);
          db.execSQL(createTable);

          updateStockTable(db);// 更新庫存資料表結構
          db.setVersion(newVersion);// 重新設定資料庫版本   
    }

    if (oldVersion == 2) { //如果舊用戶的版本為2,更新到第3版
          updateStockTable(db);// 更新庫存資料表結構
          db.setVersion(newVersion);// 重新設定資料庫版本
    }
}

private void updateStockTable(SQLiteDatabase db) {
         // 1.將舊的資料表名稱更名
         String updateTable = String.format("ALTER TABLE %s RENAME TO %s",
         TABLENAME, "temptable");
         db.execSQL(updateTable);


         // 2.創建一個新的資料表為舊表的名稱
         String createTable = String.format("Create Table %s(" + // 資料表名稱
           "%s VARCHAR(13) not null primary key," + // 品號-主鍵
           "%s nvarchar(60) not null," + // 品名 nvarchar n代表多號語言
           "%s REAL not null," + // 數量
           "%s REAL not null," + // 成本
           "%s VARCHAR(10) null)" // 儲位
          , TABLENAME, PRODUCTNO, NAME, COUNT, COST, SPACE);
         db.execSQL(createTable);
      

          // 3.將舊表寫入到新表
         updateTable = String.format("INSERT INTO %s SELECT * FROM %s",
           TABLENAME, "temptable");
         db.execSQL(updateTable);


         // 4.刪除舊表
         updateTable = String.format("DROP TABLE %s", "temptable");
         db.execSQL(updateTable);

}
以上方法僅供參考。