프론트에서 크리스탈레포트 연동방법
Crystal
쿼리작성Report + Front 연동방법
1. 아래와 같이 이미 작업된 양식의 rpt파일이 존재한다면 해당 rpt파일에서 필요한 필드들을 확인합니다.
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 변수를 확인합니다.