TRS中如何使用後端來編明細表的自動序號?
自動序號通常在前端使用 AutoSeq組件來處理,如果要在TRS中使用自動序號的功能,需要在TRS中設定onBeforeTrans事件,如先在TRS設定好來源是"銷貨單明細.序號",目的是"庫存進出明細表.序號"(Replace模式),其實並要真正讀取來源的序號,而是利用這個機制,透過onBeforeTrans事件來動態替換來源數據來達到目的,如下:
exports.trs銷貨單明細_庫存進出明細表_onBeforeTrans = function(row, oldRow, fields,callback)
{
    var dm = this.dataModule;
    if (oldRow==null) {  // 新增的狀態才處理
        var clientInfo = dm.clientInfo;
        var sql = "SELECT MAX(序號) AS 序號 from 庫存進出明細表 Where 單據號碼='"+row.銷貨單號+"'"; // 取出對應的最大序號
        dm.queryRaw(clientInfo, clientInfo.database, sql, {}, function(err,datas) {
            if (err) callback(err);
            else if (datas.length==0 || (! datas[0].序號)) row.序號='001';  // 第一筆明細為 '001'
            else if (datas.length>0)  row.序號= ((parseInt(datas[0].序號)+1001).toString()).substring(1); // 序號+1
            callback(null, true); // callback要return true讓TRS繼續交易
        });
    }
    else {
        fields.splice(5,1); //刪除 '序號' 過帳欄位, 避免被覆蓋
        return true; // 沒有使用 callback請return true;
    }
};