2016/12/30

Asp.net MVC call Jasper report via REST v2 service

Author: Willie Chou
Date: 2016/12/30


Directly call jasper report via http request.
Please see below scripts.
Hope this is help for you ! Happy New Year !

Please note! the variable _ReportURL format
  _ReportURL  = http://<web url>/jasperserver/rest_v2/reports

  public  ActionResult PrintPO(string POEntry)
        {

           
            //_ReportURL = System.Web.Configuration.WebConfigurationManager.AppSettings["ReportURL"];

            //_ReportUser = System.Web.Configuration.WebConfigurationManager.AppSettings["ReportUser"];

            //_ReportUserPWD = System.Web.Configuration.WebConfigurationManager.AppSettings["ReportUserPWD"];


            String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(_ReportUser + ":" + _ReportUserPWD));

            string URL = _ReportURL + "/report.pdf?po=" + POEntry;



            CookieContainer myContainer = new CookieContainer();

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);

          

            request.CookieContainer = myContainer;

            request.PreAuthenticate = true;                       

            request.Headers.Add("Authorization", "Basic " + encoded);

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();



            var fileBytes = response.GetResponseStream();

            string filename = String.Format("PO{0}_{1}.pdf", POEntry, DateTime.UtcNow.ToString("yyyMMddHHmmssfff"));

            return File(fileBytes, response.ContentType,filename); //preview in browser please remove filename

        }



Result as below pix.

2016/12/27

Jasper Server site email 設定

Configure JasperReports Server to send e-mails

Author: WillieChou
Date: 2016/12/27

請留意,更改設定前備份好相關檔案,以利回溯復原!


Step 1. 設定參數 js.quartz.base.properties


檔案路徑 : \jasperserver\WEB-INF\js.quartz.base.properties
加入參數 : 

report.scheduler.mail.sender.host=您的主機 
report.schedulers.mail.sender.protocol=您的協定
report.schedler.mail.sender.port=您的Port
report.scheduler.mail.sender.username=您的帳號
report.scheduler.mail.sender.password=您的密碼


Step 2. 設定參數 applicationContext-report-scheduling.xml


檔案路徑 : \jasperserver\WEB-INF\applicationContext-report-scheduling.xml
我的Host 是利用o365來寄信,並有SSL的安全機制,因此請留意 mail.smtps.auth 要設為 true
參數確認如下: 


 ....


 Step 3.重啟Jasper Server 後大功告成


Reference:

[1] http://community.jaspersoft.com/wiki/how-configure-jasperreports-server-send-e-mails-gmail-mail-account

[2]http://community.jaspersoft.com/wiki/quartz-scheduling-properties

2016/11/1

二樓浴廁修繕紀錄


Date: 2016/10/31 

由於要將原來的二樓廁所恢復使用,因此需要做預防撞壞工程,由我自已開始施作佈置
首先先將會影響的物品利用大型塑膠袋打包及拉力膜包好,然後地方鋪上防撞隔離,再用膠帶貼上








 預計施工會行經的通道再鋪上木板,並再用膠帶粘上!






大致完成後準備等待施工!

HTTP Error 401.3 - Unauthorized

HTTP Error 401.3 - Unauthorized


You do not have permission to view this directory or page because of the access control list (ACL) configuration or encryption settings for this resource on the Web server.



Date: 2016/11/01
Author: Willie
Type: IIS Configuration
-----------------------------------------------------------------------------------------------

Description:

Above is the error message i got when i deployed my web page in local machine.
My Application pool name is RASAPWEB. 



Solution: 

   Add IUSER & IIS AppPool\RASAPWEB permission into web folder. Then issue is solved.

  

2016/10/3

Enable SAPB1 SSO


How to Enable SAPB1 SSO

Willie
2016/10/03

SAPB1 v9.2


Step 1 Service Manager > License Manager > Configure Security




Step 2 System Landscape Directory > Security & Logging > Enable Single Sign On





Result 

   

Please remember bind user's AD acount in User Setting




~ Thank you ~

2016/8/26

Veeam 9 restore 異機還原

Veeam 異機還原

Author: Willie
Date:2016/08/26

-------

今天用了Veeam 9將Hyper-V主機 A 上的機器還原至 B地 ,以下簡稱 HOST-A, HOST-B為二部Hyper-V主機。同時也保有了UUID 一致性及Downtime最小的目的。且看下面的操作步驟。


準備動作
    
    先做好備份。這裡的範例是以 HOST-A上的 RA-VM-SECOM為範例




STEP 1

   開始步驟前,我們已經由HOST-B操作備份 HOST-A上的VM: RA-SECOM,然後直接開始選取 HOST-B >> Restore 出現如下視窗,選取Entire VM.


STEP 2

   接著   ADD VM >> From Backup

STEP 3

   接著   Select 來源Source 為 RA-VM-SECOM

STEP 4

   接著出現如下畫面按下 Next

STEP 5

   接著   Select 來源Restore to new location, or with different settings

STEP 6

   接著 記得切換Host為Host B. 這個步驟是還原指定的HOST

STEP 7

   接著 出現還原的檔案位址及目的位址,如欲更改位置必須先在Hype-V的設定改變Virtural Machine及 Virtual Disk的位址



STEP 8

   接著   Select 網路,設定 Not Connected 表示選擇稍後再設定網路。



STEP 9

   因為要保留UUID一致性以利VM的設定與HOST-A完全一致,Veeam提供了保留原機ID的選項,這讓我們移機的作業更保持穩定,因為 UUID一變動將會影響硬體甚致原生安裝軟體的一致性;最明顯的例子就是如果利用產生新ID則將要重新變更網卡設定。
 
   因此,在這裡我們選擇Preserve virtual machine ID



STEP 9

   接著按下 Finish


STEP 9

   開始執行Restore


STEP 10

   Restore 完成,你可以在Host-B 的 Hyper-V上找到 RA-SECOM


相關的影片紀錄如下



2016/8/23

Jasper- Set Date Picker

Jasper Date Picker Setting

Date: 2016/08/23
Author:Willie

---------

 紀錄一下在設定Jasper的參數時使用Date Picker 如何實作


 STEP 1 

登入Web , 選擇某支報表按下 Edit


STEP 2

選擇 Controls 7 Resources 裡的 Input Controls 的參數,如本例是選擇  `SADate`





















STEP 3
選擇Single Value 一直下一步到 Set Dataype ,選擇Date 便可以產生如下結果



























Others

如果想要帶入預設值是今日,則在Jasper Studio 裡指定一下預設值 TODAY(),
如此就會如上圖在開啟時有預設的日期值


~ THANK YOU , THE END ~

2016/6/6

免費的報表工具 - Jasper Report 報表平台工具

Jasper Report 的動心起念

Author: Willie Chou

-----------------------

最近導入了Jasper Report 做為本司的一個報表平台工具,做為與ERP系統搭配的Report平台,取代了ERP原生系統的Report 工具,更彈性的快速達成用戶需求。此平台是我用過這類產品的第三套工具,我認為優點大於缺點,以下是我預計撰文的結構。



  • Jasper 介紹
  • 使用目的
  • Server 安裝
  • Client 安裝
  • 我的第一支Jasper Report
  • 結論

相關文章:
Jasper Date Picker Link
Jasper Server site email 設定 Link
Asp.net MVC call Jasper report via REST v2 service  Link


2016/06/06  此文至此只有第(1)篇,請再靜待我準備好素材後再更新,感謝
2016/08/23  新增 Date Picker 設定
2016/12/27  新增一篇 Email 設定
2016/12/30 新增一篇利用Jasper Rest v2 service call report

2016/6/2

Skype MSI installer

Skype MSI installer

Author: willie
Date:2016/06/02

-------

一般來說利用AD GPO的軟體安裝套用需利用.msi 的檔案進行deploy.
常遇見的是有些軟體只提供.exe 的安裝檔,然而,Skype很好心的提供了官方的msi 安裝檔案

http://www.skype.com/go/getskype-msi

目前Skype 版本 7.24



如此,MIS就不用煩惱該如何部署Skype給AD users了。

~ Thank You ~

2016/5/12

SyncToy Setting

Free File sync tool : SyncToy + Schedule 設定
Author: Willie
Date: 2016/05/12
---------

SyncToy 版本 2.1
快速的Memo一下,以利未來要用時的參考!

本次目的是為了要將shippingmark 以http的方式共享,透過使用者的上傳到某資料夾後安排5分鐘同步到網站目錄shippingmark

Step1. Create IIS folder



Step2. 設定好同步資料夾 
設定屬性:單向 (Echo)
檔案屬性:*.jpg; *.gif
不含系統檔案
不含子目錄



Step3.安排排程
利用Server原生的排程工具設定每5分鐘排程一次




完畢 ! Thank you

2016/4/14

SAPB1 Get Working Day Difference 計算工作日

SAPB1 Get Working Day Difference 計算工作日

Author : Willie
Date: 2016/04/14
----------------------------------------------------------------------

由於工作上要用到計算SAPB1裡的工作日以推估交期,因此做了底下的Function
利用傳入二個參數(啟始日,結束日) 來回傳工作天數。

結果加下圖,有正向及反向的輸入會呈現正數/負數的回傳值。
整個程式的大方向是利用DateDiff計算日期區間的天數後再跑迴圈逐一判斷是否為假日,
最後的回傳值利用DateDiff結果+-假日天數。

其中引用了Will 保哥的SQL技巧來設計此Function。





1:  CREATE FUNCTION [dbo].[My_GetWorkingDayDiff_F]  
2:  (  
3:      -- Add the parameters for the function here  
4:     @p_StartDate datetime,  
5:     @p_EndDate datetime  
6:  )  
7:  RETURNS int  
8:  /************************************************************  
9:  * 程式名稱: My_GetWorkingDayDiff_F  
10:  * 報表名稱:  
11:  * 目  的: 判斷 B1年度假日和周末, 回傳工作天  
12:  * 作  者: Willie  
13:  * 撰寫日期: 2016/04/13  
14:  * 參數說明: @p_StartDate=起始日期, @p_EndDate=結束日期  
15:  * 回  傳: Days (int)  
16:   SELECT dbo.[RA_GetWorkingDayDiff_F]('2015-04-29', '2014-05-03') --輸入日期, 也可以用getdate()  
17:   (4/29~5/2 Labor Day, RA Office is closed)  
18:  ************************************************************/  
19:  AS  
20:  BEGIN  
21:      -- Declare the return variable here  
22:      declare @intCount int, @intDayOff int,@resultDay int ----計算指日期指標  
23:      declare @date datetime ---- 計算中日期  
24:      Declare @DayDiff int;  
25:      Declare @flagPositive BIT;  
26:      -- --------------------------------------------------  
27:      -- Init  
28:      SET @DayDiff = DATEDIFF(day,@p_StartDate,@p_EndDate);  
29:      SET @flagPositive = 1;  
30:      IF @DayDiff < 0  
31:    SET @flagPositive = 0;  
32:      IF @p_EndDate < @p_StartDate  
33:    set @date = @p_EndDate  
34:      ELSE  
35:    set @date = @p_StartDate  
36:     SET @intCount = 0;    
37:     SET @intDayOff = 0;  
38:     -- --------------------------------------------------  
39:      WHILE ( @intCount <ABS(@DayDiff) AND @p_StartDate<>@p_EndDate )-------------- loop begin  
40:      BEGIN  
41:    SET @date = DATEADD(DAY, 1, @date) ---- @p_StartDate 開始日期  
42:    --Is Weekend  
43:    IF (DATEDIFF( DAY, '17530101', @date )% 7/5 ) = 1 -- If begin  
44:     SET @intDayOff = @intDayOff+1  
45:    ELSE  
46:    BEGIN  
47:     -- 取得SAPB1裡的假日設定  
48:     IF ( SELECT COUNT(EndDate)  
49:      FROM HLD1  
50:      WHERE HldCode = YEAR(@date)  
51:      AND (CAST(@date As datetime) BETWEEN StrDate AND EndDate) ) >= 1  
52:     BEGIN  
53:     SET @intDayOff = @intDayOff+1  
54:     END  
55:    END  
56:    -- endif  
57:    set @intCount = @intCount+1  
58:       END -------------- loop end  
59:       If @flagPositive =1  
60:    SET @resultDay = ( @DayDiff - @intDayOff );  
61:    ELSE  
62:    SET @resultDay = ( @DayDiff +@intDayOff );  
63:   -------------------------------------------------   
64:   RETURN @resultDay;  
65:  END  

~ Thank You ~

Update:
2017/01/03 修正第51行,當>= 1時即為在SAP上設定的假日

Reference:
[1]  Will 保哥, 如何用簡單的 SQL 技巧取得特定日期是否為週末假日 http://blog.miniasp.com/post/2009/01/20/How-to-use-simple-T-SQL-to-get-weekend-status-in-date.aspx



2016/4/3

SAPB1 Rounding in price list not working 無法四捨五入

Rounding in price list not working

Date: 2016/04/04
SAPB1 version: 8.82

Issues

On of price list rounding method set to `Round to Full Amount` in our system. 
But it still exists decimal rows in that price list (Currency is NTD).
近日由於接觸了SAPB1,這中間其實遇上了不少的奇妙現象,其中這個問題是Price List 即便設了`Round to Full Amount`但仍有小數位存在!

Solutions

This is a SAP problem, and a possible solution (tested locally) is to change the field Decimal of Currency NTD (administration -> Setup -> Financial -> Currency) from value 2 to Default

Default will take the value set into General Setting -> Display (in which there is value 2), but in this way the field Rounding under pricelist will be used, that is will be used the Rounding to Full Amount

To change this, it’s necessary that

•         anyone in SAP will be disconnected
•         change that value Decimal
•         change the field Rounding to No Rounding into target pricelist , and then change again the field in “Rounding to full amount”

SAPB1 編號 2033997 - Rounding in price list not working after decimal changes in “Currency - Setup” window
正是描寫了這個問題確實存在,是一個系統的Bug ,上述的做法與原廠的並不相同,而利用變更原來的設定再重新使它生效的方式。有興趣的人可以找找看上述的文件。