Вы находитесь на странице: 1из 21

1 .

Procedure structure for adjusmentonhand

CREATE PROCEDURE `adjusmentonhand`(IN idoutlet varchar(10), IN tglopname date, I


N tglajusment date)
begin
DECLARE finished integer default 0;
DECLARE pkdbrg varchar(15);
DECLARE qtyFK,qtyRM,qtySR,qtyRG,qtySales,qtyRK,qtyJualPiutang,qtyReturPi
utang integer;
DECLARE qtyopname integer;
DECLARE qtyopname_1,qtyFK_1,qtyRM_1,qtySR_1,qtyRG_1,qtySales_1,qtyRK_1,q
tyakhir,qtyJualPiutang_1,qtyReturPiutang_1 integer;
DECLARE mb_cur CURSOR FOR
select distinct kdbarang from opname whe
re idoutlet=idoutlet and tanggal=tglopname union
select distinct
kdbarang from vw_fakturkirim where idoutlet=idoutlet and tgltrans >=tglopname un
ion
select distinct
kdbarang from vw_rollingmasuk where idoutlet=idoutlet and tgltrans >=tglopname u
nion
select distinct
kdbarang from vw_rollingkeluar where idoutlet=idoutlet and tgltrans >=tglopname
union
select distinct
kdbarang from vw_returgudang where idoutlet=idoutlet and tgltrans >=tglopname un
ion
select distinct
kdbarang from vw_sales where idoutlet=idoutlet and tgltrans >=tglopname union
select distinct
kdbarang from vw_salesretur where idoutlet=idoutlet and tgltrans >=tglopname uni
on
select distinct
kdbarang from vw_penjualankredit where idoutlet=idoutlet and tgltrans >=tglopnam
e union
select distinct
kdbarang from vw_returpenjualankredit where idoutlet=idoutlet and tgltrans >=tgl
opname order by kdbarang;

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET finished = 1;

update masterbarang set qtyonhand=0 where idoutlet=idoutlet;

OPEN mb_cur;

REPEAT

FETCH mb_cur INTO pkdbrg;

/*IF finished THEN


LEAVE get_mb;
END IF;
*/
IF NOT finished THEN
/*CALL getOpname(idoutlet,pkdbrg,tglopname,qtyopnam
e);
CALL getMutasi(idoutlet,pkdbrg,tglopname,tglajusmen
t,qtyFK,qtyRM,qtySR,qtyRG,qtySales,qtyRK,qtyReturPiutang,qtyJualPiutang);*/
select
sum(coalesce(b.qty,0)) as qtyFK,
sum(coalesce(c.qty,0)) as qtyRM,
sum(coalesce(d.qty,0)) as qtySR,
sum(coalesce(e.qty,0)) as qtySales,
sum(coalesce(f.qty,0)) as qtyRG,
sum(coalesce(g.qty,0)) as qtyRK
from vw_transpos as a
left join vw_transpos as b on b.notrans=a.notran
s and b.kdbarang=a.kdbarang and b.idtypetrans='1'
left join vw_transpos as c on c.notrans=a.notran
s and c.kdbarang=a.kdbarang and c.idtypetrans='3'
left join vw_transpos as d on d.notrans=a.notran
s and d.kdbarang=a.kdbarang and d.idtypetrans='6'
left join vw_transpos as e on e.notrans=a.notran
s and e.kdbarang=a.kdbarang and e.idtypetrans='5'
left join vw_transpos as f on f.notrans=a.notran
s and f.kdbarang=a.kdbarang and f.idtypetrans='2'
left join vw_transpos as g on f.notrans=a.notran
s and g.kdbarang=a.kdbarang and g.idtypetrans='4'
where a.kdbarang=pkdbrg and a.idoutlet=idoutlet
and date_format(a.tgltrans,'%Y-%m-%d')>=tglopname and date_format(a.tgltrans,'%
Y-%m-%d')<=tglajusment;
select sum(qty) into qtyopname from opname where
(idoutlet=idoutlet) and (kdbarang=pkdbrg) and (date_format(tanggal,'%Y-%m-%d')

=tglopname);
select sum(qty) from vw_returpenjualankredit whe
re (idoutlet=idoutlet) and (kdbarang=pkdbrg) and ((date_format(tgltrans,'%Y-%m-%
d')>=tglopname) and (date_format(tgltrans,'%Y-%m-%d')<=tglajusment)) into qtyRet
urPiutang;
select sum(qty) from vw_penjualankredit where (i
doutlet=idoutlet) and (kdbarang=pkdbrg) and ((date_format(tgltrans,'%Y-%m-%d')>=
tglopname) and (date_format(tgltrans,'%Y-%m-%d')<=tglajusment)) into qtyJualPiut
ang;
set qtyopname_1=case when qtyopname is null then 0
else qtyopname end ;
set qtyFK_1=case when qtyFK is null then 0 else qty
FK end;
set qtyRM_1=case when qtyRM is null then 0 else qty
RM end;
set qtySR_1=case when qtySR is null then 0 else qty
SR end;
set qtyRG_1=case when qtyRG is null then 0 else qty
RG end;
set qtySales_1=case when qtySales is null then 0 el
se qtySales end;
set qtyRK_1=case when qtyRK is null then 0 else qty
RK end;
set qtyReturPiutang_1=case when qtyReturPiutang is
null then 0 else qtyReturPiutang end;
set qtyJualPiutang_1=case when qtyJualPiutang is nu
ll then 0 else qtyJualPiutang end;

set qtyakhir=(qtyopname_1+qtyFK_1 + qtyRM_1 + qtySR


_1 + qtyReturPiutang_1) - (qtyRG_1 + qtySales_1 + qtyRK_1 + qtyJualPiutang_1);

update masterbarang set qtyonhand=qtyakhir where kd


barang=pkdbrg and idoutlet=idoutlet;
set qtyopname_1=0 ;
set qtyFK_1=0;
set qtyRM_1=0;
set qtySR_1=0;
set qtyRG_1=0;

set qtySales_1=0;
set qtyRK_1=0;
set qtyReturPiutang_1=0;
set qtyJualPiutang_1=0;
set qtyakhir=0;

END IF;

UNTIL finished END REPEAT ;

CLOSE mb_cur;

end;;

2. Procedure structure for createBrgTidakBergerak

CREATE PROCEDURE `createBrgTidakBergerak`(IN pidoutlet varchar(10),IN pkdbarang


varchar(15),IN ptglawal date,IN ptglakhir date,IN ptglmasuk date )
begin
declare qtyjual,qtyonhand int;
declare nqtyjual,nqtyonhand int;

set nqtyjual=0;
set qtyjual=0;
select sum(qty - case when qtyretur is null then 0 else qtyretur end) fr
om vw_penjualanvsretur
where idoutlet=pidoutlet and kdbarang=pkdbarang and date_format(tgltrans
,'%Y-%m-%d')>=ptglawal and date_format(tgltrans,'%Y-%m-%d')<=ptglakhir into qtyj
ual;

set nqtyjual=qtyjual;
if nqtyjual=0 OR nqtyjual is null then
select qtyakhir from temp_mutasi where idoutlet=pidoutlet and kd
barang=pkdbarang into qtyonhand;
set nqtyonhand=case when qtyonhand is null then 0 else qtyonhand
end;
insert into temp_brgtidakbergerak(kdbarang,tglmasuk,qtyonhand) v
alues(pkdbarang,ptglmasuk,nqtyonhand);
end if;
end;;

3. Procedure structure for createMutasi


CREATE PROCEDURE `createMutasi`(IN p_idoutlet varchar(10),IN p_kdbarang varchar(
15),IN p_namabarang varchar(50),IN tglawal date,IN tglakhir date,IN p_LastOpname
date)
begin
DECLARE LastOpname date;
DECLARE p_tanggal1 date;
DECLARE p_tanggal2 date;
DECLARE p_qtyFK,p_qtyRM,p_qtySR,p_qtySales,p_qtyRG,p_qtyRK int;
DECLARE p_qtyFK_1,p_qtyRM_1,p_qtySR_1,p_qtySales_1,p_qtyRG_1,p_qtyRK_1 int;
DECLARE p_qtyFK_2,p_qtyRM_2,p_qtySR_2,p_qtySales_2,p_qtyRG_2,p_qtyRK_2 int;
DECLARE p_qtyOpname,p_qtyAwal,p_qtyAkhir int;
DECLARE p_qtyJualKredit,p_qtyReturJualKredit int;
DECLARE p_qtyJualKredit_1,p_qtyReturJualKredit_1 int;
DECLARE p_qtyJualKredit_2,p_qtyReturJualKredit_2 int;

/*call getLastOpname(p_idoutlet,p_LastOpname);*/
CALL getOpname(p_idoutlet,p_kdbarang,p_LastOpname,p_qtyOpname);

set p_tanggal1=p_LastOpname;

set p_tanggal2=tglawal;

select sum(qty) from vw_fakturkirim where (idoutlet=p_idoutlet) and (kdbara


ng=p_kdbarang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (date_for
mat(tgltrans,'%Y-%m-%d')<p_tanggal2)) into p_qtyFK;
select sum(qty) from vw_rollingmasuk where (idoutlet=p_idoutlet) and (kdbar
ang=p_kdbarang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (date_fo
rmat(tgltrans,'%Y-%m-%d')<p_tanggal2)) into p_qtyRM;
select sum(qty) from vw_salesretur where (idoutlet=p_idoutlet) and (kdbaran
g=p_kdbarang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (date_form
at(tgltrans,'%Y-%m-%d')<p_tanggal2)) into p_qtySR;

select sum(qty) from vw_sales where (idoutlet=p_idoutlet) and (kdbarang=p_kd


barang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (date_format(tgl
trans,'%Y-%m-%d')<p_tanggal2)) into p_qtySales;
select sum(qty) from vw_returgudang where (idoutlet=p_idoutlet) and (kdbaran
g=p_kdbarang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (date_form
at(tgltrans,'%Y-%m-%d')<p_tanggal2)) into p_qtyRG;
select sum(qty) from vw_rollingkeluar where (idoutlet=p_idoutlet) and (kdbar
ang=p_kdbarang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (date_fo
rmat(tgltrans,'%Y-%m-%d')<p_tanggal2)) into p_qtyRK;

select sum(qty) from vw_penjualankredit where (idoutlet=p_idoutlet) and (kdb


arang=p_kdbarang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (date_
format(tgltrans,'%Y-%m-%d')<p_tanggal2)) into p_qtyJualKredit;
select sum(qty) from vw_returpenjualankredit where (idoutlet=p_idoutlet) and
(kdbarang=p_kdbarang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (
date_format(tgltrans,'%Y-%m-%d')<p_tanggal2)) into p_qtyReturJualKredit;

set p_qtyFK_1=case when p_qtyFK is null then 0 else p_qtyFK end;


set p_qtyRM_1=case when p_qtyRM is null then 0 else p_qtyRM end;
set p_qtySR_1=case when p_qtySR is null then 0 else p_qtySR end;
set p_qtySales_1=case when p_qtySales is null then 0 else p_qtySales end;
set p_qtyRG_1=case when p_qtyRG is null then 0 else p_qtyRG end;
set p_qtyRK_1=case when p_qtyRK is null then 0 else p_qtyRK end;
set p_qtyJualKredit_1=case when p_qtyJualKredit is null then 0 else p_qtyJua
lKredit end;
set p_qtyReturJualKredit_1=case when p_qtyReturJualKredit is null then 0 els

e p_qtyReturJualKredit end;

set p_qtyAwal=(case when p_qtyOpname is null then 0 else p_qtyOpname end +p_
qtyFK_1+p_qtyRM_1+p_qtySR_1+p_qtyReturJualKredit_1)-(p_qtySales_1+p_qtyRG_1+p_qt
yRK_1+p_qtyJualKredit_1) ;

set p_tanggal1=tglawal;
set p_tanggal2=tglakhir;

select sum(qty) from vw_fakturkirim where (idoutlet=p_idoutlet) and (kdbara


ng=p_kdbarang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (date_for
mat(tgltrans,'%Y-%m-%d')<=p_tanggal2)) into p_qtyFK;
select sum(qty) from vw_rollingmasuk where (idoutlet=p_idoutlet) and (kdbar
ang=p_kdbarang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (date_fo
rmat(tgltrans,'%Y-%m-%d')<=p_tanggal2)) into p_qtyRM;
select sum(qty) from vw_salesretur where (idoutlet=p_idoutlet) and (kdbaran
g=p_kdbarang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (date_form
at(tgltrans,'%Y-%m-%d')<=p_tanggal2)) into p_qtySR;

select sum(qty) from vw_sales where (idoutlet=p_idoutlet) and (kdbarang=p_kd


barang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (date_format(tgl
trans,'%Y-%m-%d')<=p_tanggal2)) into p_qtySales;
select sum(qty) from vw_returgudang where (idoutlet=p_idoutlet) and (kdbaran
g=p_kdbarang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (date_form
at(tgltrans,'%Y-%m-%d')<=p_tanggal2)) into p_qtyRG;
select sum(qty) from vw_rollingkeluar where (idoutlet=p_idoutlet) and (kdbar
ang=p_kdbarang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (date_fo
rmat(tgltrans,'%Y-%m-%d')<=p_tanggal2)) into p_qtyRK;

select sum(qty) from vw_penjualankredit where (idoutlet=p_idoutlet) and (kdb


arang=p_kdbarang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (date_
format(tgltrans,'%Y-%m-%d')<=p_tanggal2)) into p_qtyJualKredit;
select sum(qty) from vw_returpenjualankredit where (idoutlet=p_idoutlet) and
(kdbarang=p_kdbarang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (
date_format(tgltrans,'%Y-%m-%d')<=p_tanggal2)) into p_qtyReturJualKredit;

set p_qtyFK_2=case when p_qtyFK is null then 0 else p_qtyFK end;


set p_qtyRM_2=case when p_qtyRM is null then 0 else p_qtyRM end;
set p_qtySR_2=case when p_qtySR is null then 0 else p_qtySR end;

set p_qtySales_2=case when p_qtySales is null then 0 else p_qtySales end;


set p_qtyRG_2=case when p_qtyRG is null then 0 else p_qtyRG end;
set p_qtyRK_2=case when p_qtyRK is null then 0 else p_qtyRK end;
set p_qtyJualKredit_2=case when p_qtyJualKredit is null then 0 else p_qtyJua
lKredit end;
set p_qtyReturJualKredit_2=case when p_qtyReturJualKredit is null then 0 els
e p_qtyReturJualKredit end;

set p_qtyAkhir=(p_qtyAwal+p_qtyFK_2+p_qtyRM_2+p_qtySR_2+p_qtyReturJualKredit
_2)-(p_qtySales_2+p_qtyRG_2+p_qtyRK_2+p_qtyJualKredit_2);

INSERT INTO temp_mutasi(idOutlet,kdbarang,namabarang,qtyawal,qtyfk,qtysr,qty


rm,qtyrk,qtyrg,qtysales,qtyakhir,qtyjualkredit,qtyreturjualkredit)
VALUES(p_idoutlet,p_kdbarang,p_namabarang,p_qtyAwal,p_qtyFK_2,p_qtySR_2,p_qt
yRM_2,p_qtyRK_2,p_qtyRG_2,p_qtySales_2,p_qtyAkhir,p_qtyJualKredit_2,p_qtyReturJu
alKredit_2);

end;;

4. Procedure structure for createOnhand

CREATE PROCEDURE `createOnhand`(IN pidoutlet varchar(10),IN pkdbarang varchar(15


),IN pTanggal date)
begin
declare qty,nourut int;
declare harga double;
declare namabrg varchar(50);

select max(nouruttgl) from vw_historisstok where kdbarang=pkdbarang and


date_format(tgltrans,'%Y-%m-%d')=pTanggal into nourut;
select qtyakhir from vw_historisstok where kdbarang=pkdbarang and date_f
ormat(tgltrans,'%Y-%m-%d')=pTanggal and nouruttgl=nourut into qty;

/*select max(nouruttgl),qtyakhir from vw_historisstok where kdbarang=pkdb


arang and date_format(tgltrans,'%Y-%m-%d')=pTanggal group by nouruttgl into nou

rut,qty;*/

select namabarang,hpj from masterbarang where kdbarang=pkdbarang into nam


abrg,harga;

insert into temp_mutasi(idoutlet,kdbarang,namabarang,qtyakhir,hpj) values


(pidoutlet,pkdbarang,namabrg,qty,harga);

end;;

5. Procedure structure for createOpname


CREATE PROCEDURE `createOpname`(IN idoutlet varchar(10), IN tglopname date,IN tg
lawal date,IN tglakhir date)
READS SQL DATA
begin
DECLARE qtyopname,qtyFK,qtyRM,qtySR,qtyRG,qtySales,qtyRK integer;
DECLARE qtyopname_1,qtyFK_1,qtyRM_1,qtySR_1,qtyRG_1,qtySales_1,qtyRK_1
integer;
DECLARE qtyakhir integer;
DECLARE finished integer default 0;
DECLARE pkdbrg varchar(15);
DECLARE mb_cur CURSOR FOR select kdbarang from masterbarang;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET finished = 1;

delete from opname where date_format(tanggal,'%Y-%m-%d')=tglopname;

OPEN mb_cur;

REPEAT

FETCH mb_cur INTO pkdbrg;

/*IF finished THEN


LEAVE get_mb;
END IF;
*/
IF NOT finished THEN
CALL getOpname(idoutlet,pkdbrg,tglopname,qtyopname);
CALL getMutasi(idoutlet,pkdbrg,tglawal,tglakhir,qtyFK,qtyRM
,qtySR,qtyRG,qtySales,qtyRK);

set qtyopname_1=case when qtyopname is null then 0 else qtyo


pname end ;
set qtyFK_1=case when qtyFK is null then 0 else qtyFK end;
set qtyRM_1=case when qtyRM is null then 0 else qtyRM end ;
set qtySR_1=case when qtySR is null then 0 else qtySR end;
set qtyRG_1=case when qtyRG is null then 0 else qtyRG end;
set qtySales_1=case when qtySales is null then 0 else qtySal
es end;
set qtyRK_1=case when qtyRK is null then 0 else qtyRK end;

set qtyakhir=(qtyopname_1+qtyFK_1 + qtyRM_1 + qtySR_1) - (qt


yRG_1 + qtySales_1 + qtyRK_1);

INSERT INTO opname(kdbarang,tanggal,idoutlet,qty,qtyfisik) V


ALUES(pkdbrg,tglopname,idoutlet,qtyakhir,qtyakhir);
END IF;

UNTIL finished END REPEAT ;

CLOSE mb_cur;
end;;

6. Procedure structure for createOverStok

CREATE PROCEDURE `createOverStok`(IN pJenis varchar(2),IN pQtyBuffer int, IN pPe


rsen int)
begin
declare qtyonhand int;
declare nPrsn double;
select sum(case when qtyakhir is null then 0 else qtyakhir end) from tem
p_mutasi where substring(kdbarang,6,2)=pJenis into qtyonhand;
set nPrsn = (qtyonhand/pQtyBuffer)*100;
if (nPrsn>pPersen) then
insert into temp_to(jenis,sales,avgopname,turnover) values(pJeni
s,qtyonhand,pQtyBuffer,nPrsn);
end if;
end;;

7. Procedure structure for getInfoJual


CREATE PROCEDURE `getInfoJual`(IN pNoFaktur varchar(15), IN pKdBarang varchar(15
), OUT p_jenisrabat varchar(10) ,OUT p_prsnrabat double, OUT p_idmember varchar
(15), OUT p_hpj double, OUT p_prsndisshf double, OUT p_prsndisdept double)
begin
select jenisrabat from vw_sales where notrans=pNoFaktur and kdbarang=pKd
Barang into p_jenisrabat;
select prsnrabat from vw_sales where notrans=pNoFaktur and kdbarang=pKdB
arang into p_prsnrabat;
select Idmember from vw_sales where notrans=pNoFaktur and kdbarang=pKdBa
rang into p_idmember;
select hpj from vw_sales where notrans=pNoFaktur and kdbarang=pKdBarang
into p_hpj;
select prsnDiskon1 from vw_sales where notrans=pNoFaktur and kdbarang=pK
dBarang into p_prsndisshf;
select persendisdept from vw_sales where notrans=pNoFaktur and kdbarang=
pKdBarang into p_prsndisdept;
end;;

8. Procedure structure for getInsertOpname


CREATE PROCEDURE `getInsertOpname`(IN idoutlet varchar(10), IN pkdbrg varchar(15

),IN LastOpname date,IN tglopname date,IN tglawal date,IN tglakhir date)


begin
DECLARE qtyopname,qtyFK,qtyRM,qtySR,qtyRG,qtySales,qtyRK,qtyReturPiutan
g,qtyJualPiutang integer;
DECLARE qtyopname_1,qtyFK_1,qtyRM_1,qtySR_1,qtyRG_1,qtySales_1,qtyRK_1,
qtyReturPiutang_1,qtyJualPiutang_1 integer;
DECLARE qtyakhir integer;

CALL getOpname(idoutlet,pkdbrg,LastOpname,qtyopname);
CALL getMutasi(idoutlet,pkdbrg,tglawal,tglakhir,qtyFK,qtyRM,qtySR,qtyRG,qt
ySales,qtyRK,qtyReturPiutang,qtyJualPiutang);

set qtyopname_1=case when qtyopname is null then 0 else qtyopname end ;


set qtyFK_1=case when qtyFK is null then 0 else qtyFK end;
set qtyRM_1=case when qtyRM is null then 0 else qtyRM end ;
set qtySR_1=case when qtySR is null then 0 else qtySR end;
set qtyRG_1=case when qtyRG is null then 0 else qtyRG end;
set qtySales_1=case when qtySales is null then 0 else qtySales end;
set qtyRK_1=case when qtyRK is null then 0 else qtyRK end;
set qtyReturPiutang_1=case when qtyReturPiutang is null then 0 else qtyRet
urPiutang end;
set qtyJualPiutang_1=case when qtyJualPiutang is null then 0 else qtyJualP
iutang end;

set qtyakhir=(qtyopname_1+qtyFK_1 + qtyRM_1 + qtySR_1 + qtyReturPiutang_1)


- (qtyRG_1 + qtySales_1 + qtyRK_1 + qtyJualPiutang_1);

INSERT INTO opname(kdbarang,tanggal,idoutlet,qty,qtyfisik) VALUES(pkdbrg,t


glopname,idoutlet,qtyakhir,qtyakhir);

end;;

9. Procedure structure for getLastOpname


CREATE PROCEDURE `getLastOpname`(IN pidoutlet varchar(10),OUT pLastOpname date,O

UT pStsAmbilData int)
begin
declare dLastOpname date;
declare dDateMinFK date;
select max(tanggal) from opname where idoutlet=pidoutlet into dLastOpnam
e;
select min(tgltrans) tgl from vw_fakturkirim where idoutlet=pidoutlet in
to dDateMinFK;
if dLastOpname is null then
set pLastOpname=dDateMinFK;
set pStsAmbilData=2;
else
set pLastOpname=dLastOpname;
set pStsAmbilData=1;
end if;
end;;

10. Procedure structure for getMutasi


CREATE PROCEDURE `getMutasi`(IN p_idoutlet varchar(10),IN p_kdbarang varchar(15
),IN p_tanggal1 date,IN p_tanggal2 date,OUT p_qtyFK INT,OUT p_qtyRM INT,OUT p_qt
ySR INT,OUT p_qtyRG INT,OUT p_qtySales INT,OUT p_qtyRK INT, OUT p_qtyReturPiutan
g INT, OUT p_qtyJualPiutang INT)
begin
/*DECLARE qtyFK,qtyRM,qtySR INT;
DECLARE qtyRG,qtySales,qtyRK INT;
DECLARE qtyAkhir INT;*/
select sum(qty) from vw_fakturkirim where (idoutlet=p_idoutlet) and (kdbara
ng=p_kdbarang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (date_for
mat(tgltrans,'%Y-%m-%d')<=p_tanggal2)) into p_qtyFK;
select sum(qty) from vw_rollingmasuk where (idoutlet=p_idoutlet) and (kdbar
ang=p_kdbarang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (date_fo
rmat(tgltrans,'%Y-%m-%d')<=p_tanggal2)) into p_qtyRM;
select sum(qty) from vw_salesretur where (idoutlet=p_idoutlet) and (kdbaran
g=p_kdbarang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (date_form
at(tgltrans,'%Y-%m-%d')<=p_tanggal2)) into p_qtySR;
select sum(qty) from vw_returpenjualankredit where (idoutlet=p_idoutlet) an

d (kdbarang=p_kdbarang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and


(date_format(tgltrans,'%Y-%m-%d')<=p_tanggal2)) into p_qtyReturPiutang;

select sum(qty) from vw_sales where (idoutlet=p_idoutlet) and (kdbarang=p_kd


barang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (date_format(tgl
trans,'%Y-%m-%d')<=p_tanggal2)) into p_qtySales;
select sum(qty) from vw_returgudang where (idoutlet=p_idoutlet) and (kdbaran
g=p_kdbarang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (date_form
at(tgltrans,'%Y-%m-%d')<=p_tanggal2)) into p_qtyRG;
select sum(qty) from vw_rollingkeluar where (idoutlet=p_idoutlet) and (kdbar
ang=p_kdbarang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (date_fo
rmat(tgltrans,'%Y-%m-%d')<=p_tanggal2)) into p_qtyRK;
select sum(qty) from vw_penjualankredit where (idoutlet=p_idoutlet) and (kdb
arang=p_kdbarang) and ((date_format(tgltrans,'%Y-%m-%d')>=p_tanggal1) and (date_
format(tgltrans,'%Y-%m-%d')<=p_tanggal2)) into p_qtyJualPiutang;
/*set qtyAkhir=(qtyFK+qtyRM+qtySR)-(qtyRG+qtySales+qtyRK);
select qtyAkhir into p_qty;*/
end;;

11. Procedure structure for getOpname


CREATE PROCEDURE `getOpname`( IN p_idoutlet varchar(10),IN p_kdbarang varchar(15
),IN p_tanggal date, OUT p_qty INT )
begin
select sum(qty) into p_qty from opname where (idoutlet=p_idoutlet) and
(kdbarang=p_kdbarang) and (date_format(tanggal,'%Y-%m-%d')=p_tanggal);
end;;

12. Procedure structure for getQtySalesAndRetur


CREATE PROCEDURE `getQtySalesAndRetur`(IN pKodeBarang varchar(15),IN pNoFakturJu
al varchar(15),OUT qtyJual int,OUT QtyRetur int)
begin
select sum(qty) from vw_sales where NoTrans=pNoFakturJual and kdbarang=p
KodeBarang into qtyJual;
select sum(qty) from vw_salesretur where NoTransJLRev=pNoFakturJual and
kdbarang=pKodeBarang into QtyRetur;
end;;

13. Procedure structure for getTO


CREATE PROCEDURE `getTO`(IN pidoutlet varchar(10),IN pjenis varchar(2),IN pbulan
int,IN ptahun int)
begin
declare qtyjual,qtyretur int;
declare bulannext int;
declare qtyopname1,qtyopname2 int;
declare tahun int;
declare nsales,navgopname,nTO double;
declare nsales_1,navgopname_1,nTO_1 double;
declare njual,nretur int;
declare qtyopname_1,qtyopname_2 int;

select sum(qty) from vw_sales where idoutlet=pidoutlet and month(tgltra


ns)=pbulan and year(tgltrans)=ptahun and idgroupjenis=pjenis into qtyjual;
select sum(qty) from vw_salesretur where idoutlet=pidoutlet and month(t
gltrans)=pbulan and year(tgltrans)=ptahun and idgroupjenis=pjenis into qtyretur;

select sum(qty) from vw_opname where idoutlet=pidoutlet and month(tangg


al)=pbulan and year(tanggal)=ptahun and substring(kdbarang,6,2)=pjenis into qtyo
pname1;

if (pbulan=12) then
set bulannext=1;
set tahun=ptahun+1;
else
set bulannext=pbulan+1;
set tahun=ptahun;
end if;

select sum(qty) from vw_opname where idoutlet=pidoutlet and month(tangg


al)=bulannext and year(tanggal)=tahun and substring(kdbarang,6,2)=pjenis into qt
yopname2;

set njual=case when qtyjual is null then 0 else qtyjual end;


set nretur=case when qtyretur is null then 0 else qtyretur end;
set qtyopname_1=case when qtyopname1 is null then 0 else qtyopname1 end;
set qtyopname_2=case when qtyopname2 is null then 0 else qtyopname2 end;

set nsales=njual-nretur;
set navgopname=(qtyopname_1+qtyopname_2)/2;
if navgopname>0 then
set nTO=nsales/navgopname;
else
set nTO=0;
end if;

insert into temp_to(idoutlet,jenis,sales,avgopname,TurnOver) values(pido


utlet,pjenis,nsales,navgopname,nTO);

end;;

14. Procedure structure for sp_adjusmentstok


CREATE PROCEDURE `sp_adjusmentstok`(IN p_IdOutlet varchar(10),IN p_Tanggal Date,
IN p_lastopname Date)
begin
#loop dari hasil opname terakhir
DECLARE finished integer default 0;
Declare p_status int;
Declare p_kodebarang varchar(15);
Declare p_namabarang varchar(150);

DECLARE m_ctabel CURSOR FOR select distinct kdbarang,namabaran


g from vw_opname where idoutlet=p_IdOutlet and tanggal=p_lastopname union

select distinct kdbarang,namabarang from vw_fakturkirim w


here idoutlet=p_IdOutlet and tgltrans >=p_lastopname union
select distinct kdbarang,namabarang from vw_rollingmasuk
where idoutlet=p_IdOutlet and tgltrans >=p_lastopname union
select distinct kdbarang,namabarang from vw_rollingkeluar
where idoutlet=p_IdOutlet and tgltrans >=p_lastopname union
select distinct kdbarang,namabarang from vw_returgudang w
here idoutlet=p_IdOutlet and tgltrans >=p_lastopname union
select distinct kdbarang,namabarang from vw_sales where i
doutlet=p_IdOutlet and tgltrans >=p_lastopname union
select distinct kdbarang,namabarang from vw_salesretur wh
ere idoutlet=p_IdOutlet and tgltrans >=p_lastopname union
select distinct kdbarang,namabarang from vw_penjualankred
it where idoutlet=p_IdOutlet and tgltrans >=p_lastopname union
select distinct kdbarang,namabarang from vw_returpenjuala
nkredit where idoutlet=p_IdOutlet and tgltrans >=p_lastopname;

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET finished = 1;

open m_ctabel;

REPEAT
fetch m_ctabel into p_kodebarang,p_namabarang;
call createmutasi(p_IdOutlet,p_kodebarang,p_namabarang,p_lastop
name,p_Tanggal,p_lastopname);

UNTIL finished END REPEAT ;

close m_ctabel;

end;;

14. Procedure structure for sp_adjusmentstok_00


CREATE PROCEDURE `sp_adjusmentstok_00`(IN p_IdOutlet varchar(10),IN p_Tanggal Da
te,IN p_lastopname Date)
begin
#loop dari hasil opname terakhir
DECLARE finished integer default 0;
DECLARE finished_1 integer default 0;
Declare p_status int;
Declare p_kodebarang varchar(15);
Declare p_namabarang varchar(150);
Declare p_qty int;

DECLARE m_ctabel CURSOR FOR select distinct kdbarang,namabaran


g from vw_opname where idoutlet=p_IdOutlet and tanggal=p_lastopname union
select distinct kdbarang,namabarang from vw_fakturkirim w
here idoutlet=p_IdOutlet and tgltrans >=p_lastopname union
select distinct kdbarang,namabarang from vw_rollingmasuk
where idoutlet=p_IdOutlet and tgltrans >=p_lastopname union
select distinct kdbarang,namabarang from vw_rollingkeluar
where idoutlet=p_IdOutlet and tgltrans >=p_lastopname union
select distinct kdbarang,namabarang from vw_returgudang w
here idoutlet=p_IdOutlet and tgltrans >=p_lastopname union
select distinct kdbarang,namabarang from vw_sales where i
doutlet=p_IdOutlet and tgltrans >=p_lastopname union
select distinct kdbarang,namabarang from vw_salesretur wh
ere idoutlet=p_IdOutlet and tgltrans >=p_lastopname union
select distinct kdbarang,namabarang from vw_penjualankred
it where idoutlet=p_IdOutlet and tgltrans >=p_lastopname union
select distinct kdbarang,namabarang from vw_returpenjuala
nkredit where idoutlet=p_IdOutlet and tgltrans >=p_lastopname;

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET finished = 1;

open m_ctabel;

REPEAT
fetch m_ctabel into p_kodebarang,p_namabarang;
call createmutasi(p_IdOutlet,p_kodebarang,p_namabarang,p_lastop
name,p_Tanggal,p_lastopname);
UNTIL finished END REPEAT ;
close m_ctabel;

end;;

15. Procedure structure for sp_adjusmentstok_01


CREATE PROCEDURE `sp_adjusmentstok_01`(IN p_IdOutlet varchar(10),IN p_Tanggal Da
te,IN p_lastopname Date)
begin
#loop dari masterbarang
DECLARE finished integer default 0;
Declare p_status int;
Declare p_kodebarang varchar(15);
Declare p_namabarang varchar(150);

DECLARE m_ctabel CURSOR FOR select distinct kdbarang,namabarang from ma


sterbarang where idoutlet=p_IdOutlet;

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET finished = 1;

open m_ctabel;

REPEAT
fetch m_ctabel into p_kodebarang,p_namabarang;
call createmutasi(p_IdOutlet,p_kodebarang,p_namabarang,p_lastop

name,p_Tanggal,p_lastopname);

UNTIL finished END REPEAT ;

close m_ctabel;

end;;

16. Procedure structure for sp_updateonhand


CREATE PROCEDURE `sp_updateonhand`(IN p_IdOutlet varchar(10))
begin
DECLARE finished integer default 0;
Declare p_kodebarang varchar(15);
Declare p_qty int;
DECLARE m_ctabel1 CURSOR FOR select kdbarang,qtyakhir from temp_mutasi w
here idoutlet=p_IdOutlet;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET finished = 1;
open m_ctabel1;
REPEAT
fetch m_ctabel1 into p_kodebarang,p_qty;
update masterbarang set qtyonhand=p_qty where kdbarang=p_kodeb
arang and idoutlet=p_IdOutlet;
UNTIL finished END REPEAT;
close m_ctabel1;

end;;
17. Update Opname
drop procedure getLastOpname;
CREATE PROCEDURE `getLastOpname`(IN pidoutlet varchar(10),OUT pLastOpname date,O
UT pStsAmbilData int)
begin

declare dLastOpname date;


declare dDateMinFK date;
select max(tanggal) from opname where idoutlet=pidoutlet and isactive=1
into dLastOpname;
select min(tgltrans) tgl from vw_fakturkirim where idoutlet=pidoutlet in
to dDateMinFK;
if dLastOpname is null then
set pLastOpname=dDateMinFK;
set pStsAmbilData=2;
else
set pLastOpname=dLastOpname;
set pStsAmbilData=1;
end if;
end;;

Вам также может понравиться