Skip to main content

프론트에서 크리스탈레포트 연동방법

 쿼리작성

1. 아래와 같이 이미 작업된 양식의 rpt파일이 존재한다면 해당 rpt파일에서 필요한 필드들을 확인합니다.

image.png

 

1-1 위와 같이 작성된 rpt 파일이 존재하지 않는다면 C:\ReCrystallizeServer\Reports\standard 경로로 이동후 필요한 양식과 가장 흡사한 양식을 찾아 복사해줍니다.

 

2.  확인한 필드를 토대로 쿼리를 작성합니다.

-- opticalpos::federated/crystal/adjustment/subqry/insert1.sql

SELECT
    UNIX_TIMESTAMP() as created_on,
    2 as list_token,
    'head-foot' as position,
    -- 발행매장
    tax_no as c1,             -- 사업자등록번호
    tel_no as c2,             -- 전화번호
    branch_name as c3,        -- 상호명
    branch_manager as c4,     -- 대표자
    -- 고객정보
    company_no as c5,         -- 고객번호
    company_name as c6,       -- 고객명


    0 as d1,  -- dummy
    0 as d2,  -- dummy
    0 as d3,  -- dummy
    0 as d4,  -- dummy
    0 as d5,  -- dummy
    0 as d6,  -- dummy
    0 as d7,  -- dummy
    0 as d8,  -- dummy
    0 as d9,  -- dummy
    0 as d10  -- dummy


from dbr_company as mx
inner join dbr_sorder on mx.id = dbr_sorder.buyer_id
inner join dbr_branch on dbr_sorder.branch_id = dbr_branch.id


-- @where
group by mx.id
-- @order



-- opticalpos::federated/crystal/adjustment/subqry/insert2.sql

SELECT
    UNIX_TIMESTAMP() as created_on,
	2 as list_token,
	'body' as position,
	sorder_date as c1,                      -- 주문일자
    ccard_amt as c2,                        -- 카드 사용금액
    cash_amt as c3,                         -- 현금 사용금액
    coupon_amt as c4,                       -- 쿠폰 사용금액
    reward_use_amt as c5,                   -- 적립금 사용금액
    discount_amt as c6,                     -- 할인금 사용금액
    sum(sorder_sum) - ccard_amt - cash_amt - coupon_amt - reward_use_amt as c7, -- 외상 금액
    sum(ccard_amt) as c8,                   -- 해당일의 총 카드 사용금액
    sum(cash_amt) as c9,                    -- 해당일의 총 현금 사용금액
    sum(sorder_sum) as c10,                  -- 해당일의 총 사용금액
    sum(sum(sorder_sum)) OVER () as c11,     -- 해당고객의 토탈 사용금액
	0 as d1,  -- dummy
    0 as d2,  -- dummy
    0 as d3,  -- dummy
    0 as d4,  -- dummy
    0 as d5,  -- dummy
    0 as d6,  -- dummy
    0 as d7,  -- dummy
    0 as d8,  -- dummy
    0 as d9,  -- dummy
    0 as d10  -- dummy

from
	dbr_sorder
	inner join
		( select
	    buyer_id, dbr_company.id as id
    from
	    dbr_company
	    inner join dbr_sorder on dbr_company.id = dbr_sorder.buyer_id
    group by buyer_id
	 ) as mx
	on mx.buyer_id = dbr_sorder.buyer_id

inner join dbr_sorder_bd on dbr_sorder.id = dbr_sorder_bd.sorder_id

-- @where
group by sorder_no
-- HAVING SUM(sorder_sum) - ccard_amt - cash_amt - coupon_amt - reward_use_amt <> SUM(sorder_sum)
-- @order
list-token :
position : rpt 파일에서 사용할  데이터필드의 섹션을 명시합니다.
c1 ~ c6  : head-foot section에 치환될 데이터들을 차례대로 작성합니다.
d1~d10 : 필요하다면 d1~d10까지 사용하여 데이터 필드를 채워줍니다.


3. crystal report를 사용하는 메뉴의 파라메터에 PrintVars를 추가합니다.

"PrintVars": {
        "QueryName": "opticalpos::federated/crystal/adjustment",
        "ReportPath": "standard/adjustment/adjustment.rpt",
        "ExportFmt": "PDF",
        "ServerPrinter": "",
        "CustomCode": "adjustment"
    },

QueryName : 위에서 작성했던 query를 입력해줍니다.

ReportPath :  winodw server에서 rpt 파일을 저장했던 위치입니다.

ExportFmt : 레포트 출력시 파일의 형식입니다.

ServerPrinter : ""

CustomCode : 해당 커스텀을 구분할 수 있는 code입니다.

4. env(설정파일)에 REPORT_SERVER_URL 변수를 확인합니다.