123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- -- truncate table zzz_log;
- truncate table dbt_list_type1;
- truncate table dbt_list_sum;
- drop procedure if exists pl1_credit_bd_ledger_detail;
- create procedure pl1_credit_bd_ledger_detail( _listToken varchar(21), _sdate varchar(8), _edate varchar(8),
- _s1 varchar(32), _e1 varchar(32), _s2 varchar(32), _e2 varchar(32),
- _s3 varchar(32), _e3 varchar(32), _s4 varchar(32), _e4 varchar(32),
- _where varchar(386), _having varchar(386), _orderby varchar(64),
- _branch int, _storage int, _target int)
- BEGIN
- Declare _sbal_date varchar(8);
- Declare _ebal_date varchar(8);
- Declare _first_bal decimal(20,4);
- Declare _first_bad_bal decimal(20,4);
- Declare _first_bal_caption varchar(20);
- Declare _first_id int;
- Declare _last_id int;
- Declare _line_id int;
- Declare _line_badcrd_status varchar(64);
- Declare _line_in decimal(20,4) default "0.0000";
- Declare _line_out decimal(20,4) default "0.0000";
- Declare _line_bal decimal(20,4) default "0.0000";
- Declare _line_bad_bal decimal(20,4) default "0.0000";
- Declare _in_sum decimal(20,4) default "0.0000";
- Declare _out_sum decimal(20,4) default "0.0000";
- Declare _company_name varchar(64);
- Declare _full_name varchar(96);
- Declare _item_code varchar(21);
- Declare _item_sub_name varchar(128);
- Declare _not_found boolean;
- Declare _line_cur cursor for -- c5:badcrd_status
- select t_id, d3, d4 from dbt_list_type1 where list_token = _listToken
- order by order_by asc;
- Declare continue handler for
- not found set _not_found = true;
- if _is_first_date(_sdate) then
- set _sbal_date = '19000101';
- set _ebal_date = '19000101';
- else
- set _sbal_date = _sdate;
- set _ebal_date = _edate;
- end if;
- -- insert for first_bal
- select ifnull(last_mbal.bal_amt,0) + ifnull(crd_bal.credit_amt,0) ,'--이월잔액--'
- into _first_bal, _first_bal_caption
- from
- dbr_company as mxv
- left join
- ( select buyer_id, bal_amt
- from dbr_bal_credit
- where yyyy_mm = _prev_month(_sdate) and branch_id = _branch
- ) as last_mbal
- on mxv.id = last_mbal.buyer_id
- left join
- ( select crd.buyer_id, sum(credit_amt*credit_status) AS credit_amt
- from dbr_credit_bd as crd
- inner join dbr_deal_type as deal on deal.id = crd.deal_type_id
- where avail_date between _first_date(_sbal_date) and _prev_date(_ebal_date)
- and branch_id = _branch
- group by crd.buyer_id
- ) as crd_bal
- on mxv.id = crd_bal.buyer_id
- where mxv.id = _target;
- insert into dbt_list_type1 ( created_on, list_token, c3, d5, order_by)
- values ( unix_timestamp(), _listToken, _first_bal_caption, _first_bal, '19000101');
- -- insert for credit_bd
- insert into dbt_list_type1
- ( created_on, list_token, c1, c2, c3, d1, d2, d3, d4, order_by )
- select unix_timestamp(), _listToken, avail_date, deal_code,
- concat( add_msg,' / ', item_name ),
- sobd.sorder_qty, sobd.sorder_sum, crd.credit_amt*cast((credit_status+1)/2 as int),
- crd.credit_amt*cast(-1*(credit_status-1)/2 as int),
- concat( avail_date, '-', -1*credit_status,'-', bd_id)
- from dbr_credit_bd as crd
- inner join dbr_deal_type as deal on deal.id = crd.deal_type_id
- left join dbr_sorder_bd as sobd on sobd.id = crd.bd_id
- left join dbr_item as itm on sobd.item_id = itm.id
- where avail_date between _sdate and _edate and branch_id = _branch and crd.buyer_id = _target;
- -- compute line_bal
- set _line_bal = _first_bal;
- set _line_bad_bal = _first_bad_bal;
- open _line_cur;
- loop1: loop
- fetch _line_cur into _line_id, _line_in, _line_out;
- if _not_found then leave loop1; end if;
- set _in_sum = _in_sum + ifnull(_line_in,0);
- set _out_sum = _out_sum + ifnull(_line_out,0);
- set _line_bal = ifnull(_line_bal,0) + ifnull(_line_in,0) - ifnull(_line_out,0);
- update dbt_list_type1 set d5 = _line_bal where t_id = _line_id;
- end loop loop1;
- close _line_cur;
- -- write list_sum
- select company_name, full_name into _company_name, _full_name from dbr_company where id = _target;
- insert into dbt_list_sum
- ( created_on, list_token, c1, c2, c3, c4, d1, d2, d3, d4)
- values (unix_timestamp(), _listToken, _company_name, _full_name, _sdate, _edate,
- _first_bal, _in_sum, _out_sum, _line_bal);
- END;
|