[Logo]  E3系統 開發.操作.問題 討論區 
[Search] 搜尋主題 [Recent Topics] 最新主題 [Hottest Topics] 熱門主題 [Members] 會員列表 [Groups] E3首頁
[Register] 會員註冊 [Login] 會員登入
出貨單簽單, 加入樣式: 印公司logo圖片~  XML
討論區首頁 » Java程式分析與設計
發表人 內容
e3Admin

[Avatar]

註冊時間: 2011-06-09 18:31:13
文章: 73
離線

這裡再標準程式中, 直接加入一種新的出貨簽單,
這裡會在原來的出貨簽單程式, 用重載的方式做
加入程式. 我們加入到SDK的示範專案.

直接下載文章後的附檔.


A. 主選單項目
src/com/dasam/e3010001/client/SystemDataCmz.java
        x.setExtendId(data, new String[]{
            "rpt.OutStkSign",    //加入這一行,重載原程式設定
            "edit.Item",
            "edit.Member",
        }, "_2");


B. Client程式
src/com/dasam/e3010001/client/rpt/OutStkSign_2.java
會在畫面多出一個樣式選項: 標準樣式, 客制樣式.
public class OutStkSign_2 extends OutStkSign {


    public OutStkSign_2() throws Exception {
        this.reportFormats = new String[]{"標準樣式","","客制樣式","_2"};
        this.serviceClassId = "rpt.OutStkSign_2";
    }

    //==========================================================================
    //<重載>
    public void doWorkInit(HashMap map) throws Exception {
        super.doWorkInit(map);
        getXEdit("reportFormats").setStatic(true);
    }

    //==========================================================================
    public void doMakeReportExtParam() throws Exception {
        super.doMakeReportExtParam();
        if (isOutStk){//改變子報表名稱,只有出貨單,
            String fmt = getXEdit("reportFormats").getValue().toString();
            addReportExtParam("#subreport",  "sys.OutStkDetail2"+fmt); //subreport檔名,
        }
    }

    //==========================================================================
    //報表資料加工,
    public void doAdjustReportRs(XProgressWork xpw, XRowSet rs, HashMap rptParam) throws Exception {
        super.doAdjustReportRs(xpw, rs, rptParam);
        //2009.10.20改為只有在客制樣式時.
        if (this.getReportFormatEditor().getSelectedIndex()==0) return;
        rs.getField("tsDate").setLen(100);
        for (rs.beforeFirst(); rs.next();){
            XRowSet d = rs.getRs("detail_item");
            //明細自動補足7的倍數.
            int ar = d.getRowCount() % 7;
            if (ar>0){ ar=7-ar; for(int i=0; i<ar; i++) d.insertRow(); }
            //加入明細備註
            d.insertField(new XField("cmzMemo",XField.TYPE_STRING,100)); 
            String[] m = XLet.getStringArray(rs.getString("memo"),12);
            for (int i=0; i><m.length; i++) if (d.setRowIndex(i)) d.setString("cmzMemo",m[i]);
            //加入判斷是否結束欄位
            d.insertField(new XField("isEnding",XField.TYPE_STRING,5));
            d.last();
            d.setString("isEnding","1");//不為null表示為ending,
            //日期字串轉換
            String[] dt = rs.getString("tsDate").split("[-]");
            rs.setString("tsDate", dt[0]+" 年 "+dt[1]+" 月 "+dt[2]+" 日");
        }
        //表尾條文轉為字串,
        com.dasam.work.XArrayReport xa = (com.dasam.work.XArrayReport)rptParam.get("ending");
        rptParam.put("ending",xa.getDataString());
        //加入logo圖形
        byte[] logo = com.dasam.work.XFio.readData(XSystem.getSysResource(XSystem.getResourceName("res/logo/logo.jpg")).openStream());
        rptParam.put("logo_img", logo);
    }

}


C. Server程式
src/com/dasam/e3010001/server/rpt/OutStkSign_2.java
加入select欄位.
public class OutStkSign_2 extends OutStkSign {

    public OutStkSign_2(){
        this.adjustMainField = ",d.unitTitle 'cust_unitTitle'";
        this.adjustDetailField = ",b.specif 'itemSpec'";
    }
}


D. copy公司logo圖片
放到
resource/com/dasam/e3010001/client/res/logo/logo.jpg


E. 編譯報表format檔
resource/com/dasam/e3010001/client/rpt/fmt/sub/OutStkDetail2_2.xml
開啟ireport後, 按[File] / [Open], 讀取xml後, 再按 [Build] / [Compile]
表頭的公司資料要改成你們公司的名稱跟地址.



       OutStkSign_2.java 243 B 下載 3 次

       OutStkSign_2.java 3 KB 下載 2 次

       OutStkDetail2_2.xml 44 KB 下載 2 次

修改7次,最後2011-06-25 18:34:34  

輕輕敲醒沈睡的心靈~  企鵝的初章 ^^
 
討論區首頁 » Java程式分析與設計
前往:   

2011 DASAMX GROUP.    Powered by JForum 2.1.9©    建議使用Firefox瀏覽