Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
| Name | Data Type | Length | Description |
|---|---|---|---|
| @id_sa_hdr | bigint | 8 | |
| @current_urut | int | 4 |
SQL Script
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
CREATE PROCEDURE dbo.sp_bahan_baku_asal
(@id_sa_hdr bigint
,@current_urut int=0 OUTPUT
)
AS
BEGIN
SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_PADDING ON
declare @ASSY_CODE varchar(255)
, @id_sa bigint
, @TOTAL_SET float
, @Tgl_keluar date
, @SA_NO varchar(255)
, @ASSY_NO varchar(255)
, @PARTNO2 varchar(255)
, @QTY_BOM float
, @QUANTITY float
, @SISA_QTY float
, @KODE_BARANG varchar(255)
, @URAIAN varchar(255)
, @JENIS_SATUAN varchar(255)
, @CURR varchar(255)
, @PRICE float
, @NDPMB float
, @NOMOR_DAFTAR_DOK_ASAL varchar(255)
, @TANGGAL_DAFTAR_DOK_ASAL date
, @KODE_JENIS_DOK_ASAL varchar(255)
, @KODE_KANTOR varchar(255)
, @NOMOR_AJU_DOK_ASAL varchar(255)
, @KODE_ASAL_BAHAN_BAKU int
, @id_bc_in_hdr bigint
, @id_bc_in_dtl bigint
, @id_data_in_hdr bigint
, @id_data_in_dtl bigint
, @HS varchar(255)
, @BM float
, @CIF float
, @HARGA_PABEAN float
, @BM_RP float
, @PPN_RP float
, @PPH_RP float
declare @tmp_bom table(
id bigint identity(1,1)
, id_sa bigint
, id_sa_hdr bigint
, ASSY_CODE varchar(255)
, ASSY_NO varchar(255)
, SA_NO varchar(255)
, Tgl_keluar date
, Quantity float
)
Declare @tmp_bom_dtl TABLE(
ASSY_CODE varchar(255),
PART_NO varchar(255) NULL,
QTY decimal(38,4) NULL,
PARTNO2 varchar(255) ,
ASSY_NO varchar(255) NULL,
FLAG varchar(255) NULL,
STATUS varchar(255) NULL,
primary key(ASSY_CODE,PARTNO2)
)
DECLARE @TSQL varchar(8000)
, @itemcount int
, @TSQL2 varchar(8000)
set @Tgl_keluar = getdate()
select Top 1 @Tgl_keluar = TgDok from tbl_sa_dok where id_sa_hdr = @id_sa_hdr order by TgDok ASC
IF CURSOR_STATUS('global','loopchecking')>=-1
BEGIN
DEALLOCATE loopchecking
END
declare @total_ASSY_CODE int
Declare loopchecking CURSOR FOR
select id_sa, a.id_sa_hdr,a.ASSY_CODE, a.TOTAL_SET, b.SA_NO,isnull(c.total,0) as total from tbl_sa a
left outer join vw_tbl_bom_hdr_check as c on a.ASSY_CODE=c.ASSY_CODE
Left Join tbl_sa_hdr b ON a.id_sa_hdr = b.id_sa_hdr
where b.id_sa_hdr = @id_sa_hdr
OPEN loopchecking
FETCH NEXT FROM loopchecking INTO @id_sa, @id_sa_hdr,@ASSY_CODE, @TOTAL_SET, @SA_NO,@total_ASSY_CODE
WHILE @@FETCH_STATUS = 0
BEGIN
if(@total_ASSY_CODE) = 0
begin
Delete From @tmp_bom_dtl
SELECT @TSQL = 'SELECT ASSY_CODE, NULL, ''FROMORACC'', 0, GETDATE() FROM OPENQUERY(ORACC,''SELECT * FROM PARTLIST_VIEW WHERE ASSY_CODE = ''''' + @ASSY_CODE + ''''''') GROUP BY ASSY_CODE'
insert into dbo.tbl_bom_hdr ( ASSY_CODE, ASSY_NO, filename, itemcount, dateexec)
EXEC (@TSQL)
SELECT @TSQL2 = 'SELECT *, replace(PART_NO,'' '','''') AS PART_NO2 FROM OPENQUERY(ORACC,''SELECT * FROM PARTLIST_VIEW WHERE PART_NO is not null and ASSY_CODE = ''''' + @ASSY_CODE + ''''''')'
insert into @tmp_bom_dtl ( ASSY_CODE, PART_NO, QTY, PARTNO2)
EXEC (@TSQL2)
MERGE dbo.tbl_bom_dtl AS TARGET
USING @tmp_bom_dtl AS SOURCE
ON ( SOURCE.ASSY_CODE = TARGET.ASSY_CODE and SOURCE.PARTNO2 = TARGET.PARTNO2 )
WHEN MATCHED
THEN
UPDATE set
TARGET.QTY = SOURCE.QTY
,TARGET.status_bom = (case when (select count(*) from dbo.tbl_data_part_hs where part_no2=SOURCE.PARTNO2 ) = 0 then 'not found part no' else 'ok' end)
WHEN NOT MATCHED BY TARGET THEN
INSERT (
ASSY_CODE, ASSY_NO,PART_NO, QTY, PARTNO2, FLAG, STATUS
,status_bom
) VALUES (
SOURCE.ASSY_CODE, SOURCE.ASSY_NO,SOURCE.PART_NO, SOURCE.QTY, SOURCE.PARTNO2, SOURCE.FLAG, SOURCE.STATUS
, (case when (select count(*) from dbo.tbl_data_part_hs where part_no2=SOURCE.PARTNO2 ) = 0 then 'not found part no' else 'ok' end)
);
select @itemcount = count(*) from tbl_bom_dtl where ASSY_CODE = @ASSY_CODE
update tbl_bom_hdr set itemcount = @itemcount where ASSY_CODE = @ASSY_CODE
end
/* IF CURSOR_STATUS('global','cari_bom')>=-1 BEGIN DEALLOCATE cari_bom END Declare cari_bom CURSOR FOR select ASSY_NO, PARTNO2, QTY from tbl_bom_dtl where ASSY_CODE = @ASSY_CODE ORDER BY PARTNO2 OPEN cari_bom FETCH NEXT FROM cari_bom INTO @ASSY_NO, @PARTNO2, @QTY_BOM WHILE @@FETCH_STATUS = 0 BEGIN set @QUANTITY = @TOTAL_SET * @QTY_BOM insert into @tmp_bom (id_sa,id_sa_hdr, ASSY_CODE, ASSY_NO, SA_NO ,Tgl_keluar, Quantity) Values (@id_sa, @id_sa_hdr,@PARTNO2,@ASSY_NO, @SA_NO, @Tgl_keluar, @QUANTITY) FETCH NEXT FROM cari_bom INTO @ASSY_NO, @PARTNO2, @QTY_BOM END CLOSE cari_bom DEALLOCATE cari_bom */
insert into @tmp_bom (id_sa,id_sa_hdr, ASSY_CODE, ASSY_NO, SA_NO ,Tgl_keluar, Quantity)
select @id_sa, @id_sa_hdr, PARTNO2, ASSY_NO, @SA_NO, @Tgl_keluar ,@TOTAL_SET * QTY from tbl_bom_dtl where ASSY_CODE = @ASSY_CODE ORDER BY PARTNO2
--Values (@id_sa, @id_sa_hdr,@PARTNO2,@ASSY_NO, @SA_NO, @Tgl_keluar, @QUANTITY)
FETCH NEXT FROM loopchecking INTO @id_sa, @id_sa_hdr,@ASSY_CODE, @TOTAL_SET, @SA_NO,@total_ASSY_CODE
END
CLOSE loopchecking
DEALLOCATE loopchecking
IF CURSOR_STATUS('global','loopchecking2')>=-1
BEGIN
DEALLOCATE loopchecking2
END
Declare loopchecking2 CURSOR FOR select id_sa, id_sa_hdr , ASSY_CODE,ASSY_NO, SA_NO,Tgl_keluar, Quantity from @tmp_bom
OPEN loopchecking2
FETCH NEXT FROM loopchecking2 INTO @id_sa,@id_sa_hdr,@ASSY_CODE,@ASSY_NO,@SA_NO, @Tgl_keluar, @Quantity
WHILE @@FETCH_STATUS = 0
BEGIN
insert into tbl_sa_bom (id_bc_in_hdr, id_bc_in_dtl, id_data_in_hdr ,id_data_in_dtl,id_sa,id_sa_hdr,SA_NO,KODE_BARANG,URAIAN,JUMLAH_SATUAN,JENIS_SATUAN,CURR,PRICE,NDPMB,NOMOR_DAFTAR_DOK_ASAL,TANGGAL_DAFTAR_DOK_ASAL,ASSY_NO,KODE_JENIS_DOK_ASAL,KODE_KANTOR,NOMOR_AJU_DOK_ASAL,KODE_ASAL_BAHAN_BAKU, HS, BM, PPN, PPH, CIF, HARGA_PABEAN, BM_RP, PPN_RP, PPH_RP, SERI_BAHAN_BAKU_ASAL,PART_NO)
select id_bc_in_hdr, id_bc_in_dtl, id_data_in_hdr ,id_data_in_dtl,@id_sa,@id_sa_hdr,@SA_NO,KODE_BARANG,part_name_customs,pakai,satuan,kdval,harga,Ndpbm,BC23No,BC23Tg,@ASSY_NO,typedok,Kdkpbc,CAR,KODE_ASAL_BAHAN_BAKU, hs_code, bm, PPN, PPH, CIF, HARGA_PABEAN, BM_RP, PPN_RP, PPH_RP, Serial,@ASSY_CODE from dbo.fn_data_bahan_baku(@ASSY_CODE,@Tgl_keluar,@Quantity)
MERGE tbl_sa_bom AS target
USING (
select id_sa_bom, id_sa,id_sa_hdr
,ROW_NUMBER() OVER(PARTITION BY id_sa
ORDER BY id_sa_bom) AS rownum
from tbl_sa_bom
where id_sa=@id_sa
) AS source (id_sa_bom, id_sa,id_sa_hdr,rownum)
ON (target.id_sa_bom = source.id_sa_bom) AND (target.id_sa = source.id_sa)
WHEN MATCHED THEN
UPDATE SET SERI_BAHAN_BAKU = source.rownum ;
insert into tbl_bc_in_pakai (id_bc_in_dtl, qty_pakai, id_sa, id_sa_hdr)
select id_bc_in_dtl, JUMLAH_SATUAN, @id_sa, @id_sa_hdr from tbl_sa_bom Where id_sa = @id_sa
--VALUES (@id_bc_in_hdr, @id_bc_in_dtl, @id_data_in_hdr ,@id_data_in_dtl,@id_sa,@id_sa_hdr,@SA_NO,@KODE_BARANG,@URAIAN,@QUANTITY,@JENIS_SATUAN,@CURR,@PRICE,@NDPMB,@NOMOR_DAFTAR_DOK_ASAL,@TANGGAL_DAFTAR_DOK_ASAL,@ASSY_NO,@KODE_JENIS_DOK_ASAL,@KODE_KANTOR,@NOMOR_AJU_DOK_ASAL,@KODE_ASAL_BAHAN_BAKU, ltrim(rtrim(replace(replace(@HS,' ',''),'.',''))), @BM, 10, 2.5, @CIF, @HARGA_PABEAN, @BM_RP, @PPN_RP, @PPH_RP)
FETCH NEXT FROM loopchecking2 INTO @id_sa,@id_sa_hdr,@ASSY_CODE,@ASSY_NO,@SA_NO, @Tgl_keluar, @Quantity
END
CLOSE loopchecking2
DEALLOCATE loopchecking2
set @current_urut= 1
END
--go
--exec('[spuload_bc25] @filepath=''C:/wamp/www/pemi/loaderfiles/exim/bc25/'', @filename=''PIB_BERKALA_242_1.csv'', @username=''admin'', @tipe=''bc25'', @trx=''add'', @id=0 ')
GO
GO
CREATE PROCEDURE dbo.sp_bahan_baku_asal
(@id_sa_hdr bigint
,@current_urut int=0 OUTPUT
)
AS
BEGIN
SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_PADDING ON
declare @ASSY_CODE varchar(255)
, @id_sa bigint
, @TOTAL_SET float
, @Tgl_keluar date
, @SA_NO varchar(255)
, @ASSY_NO varchar(255)
, @PARTNO2 varchar(255)
, @QTY_BOM float
, @QUANTITY float
, @SISA_QTY float
, @KODE_BARANG varchar(255)
, @URAIAN varchar(255)
, @JENIS_SATUAN varchar(255)
, @CURR varchar(255)
, @PRICE float
, @NDPMB float
, @NOMOR_DAFTAR_DOK_ASAL varchar(255)
, @TANGGAL_DAFTAR_DOK_ASAL date
, @KODE_JENIS_DOK_ASAL varchar(255)
, @KODE_KANTOR varchar(255)
, @NOMOR_AJU_DOK_ASAL varchar(255)
, @KODE_ASAL_BAHAN_BAKU int
, @id_bc_in_hdr bigint
, @id_bc_in_dtl bigint
, @id_data_in_hdr bigint
, @id_data_in_dtl bigint
, @HS varchar(255)
, @BM float
, @CIF float
, @HARGA_PABEAN float
, @BM_RP float
, @PPN_RP float
, @PPH_RP float
declare @tmp_bom table(
id bigint identity(1,1)
, id_sa bigint
, id_sa_hdr bigint
, ASSY_CODE varchar(255)
, ASSY_NO varchar(255)
, SA_NO varchar(255)
, Tgl_keluar date
, Quantity float
)
Declare @tmp_bom_dtl TABLE(
ASSY_CODE varchar(255),
PART_NO varchar(255) NULL,
QTY decimal(38,4) NULL,
PARTNO2 varchar(255) ,
ASSY_NO varchar(255) NULL,
FLAG varchar(255) NULL,
STATUS varchar(255) NULL,
primary key(ASSY_CODE,PARTNO2)
)
DECLARE @TSQL varchar(8000)
, @itemcount int
, @TSQL2 varchar(8000)
set @Tgl_keluar = getdate()
select Top 1 @Tgl_keluar = TgDok from tbl_sa_dok where id_sa_hdr = @id_sa_hdr order by TgDok ASC
IF CURSOR_STATUS('global','loopchecking')>=-1
BEGIN
DEALLOCATE loopchecking
END
declare @total_ASSY_CODE int
Declare loopchecking CURSOR FOR
select id_sa, a.id_sa_hdr,a.ASSY_CODE, a.TOTAL_SET, b.SA_NO,isnull(c.total,0) as total from tbl_sa a
left outer join vw_tbl_bom_hdr_check as c on a.ASSY_CODE=c.ASSY_CODE
Left Join tbl_sa_hdr b ON a.id_sa_hdr = b.id_sa_hdr
where b.id_sa_hdr = @id_sa_hdr
OPEN loopchecking
FETCH NEXT FROM loopchecking INTO @id_sa, @id_sa_hdr,@ASSY_CODE, @TOTAL_SET, @SA_NO,@total_ASSY_CODE
WHILE @@FETCH_STATUS = 0
BEGIN
if(@total_ASSY_CODE) = 0
begin
Delete From @tmp_bom_dtl
SELECT @TSQL = 'SELECT ASSY_CODE, NULL, ''FROMORACC'', 0, GETDATE() FROM OPENQUERY(ORACC,''SELECT * FROM PARTLIST_VIEW WHERE ASSY_CODE = ''''' + @ASSY_CODE + ''''''') GROUP BY ASSY_CODE'
insert into dbo.tbl_bom_hdr ( ASSY_CODE, ASSY_NO, filename, itemcount, dateexec)
EXEC (@TSQL)
SELECT @TSQL2 = 'SELECT *, replace(PART_NO,'' '','''') AS PART_NO2 FROM OPENQUERY(ORACC,''SELECT * FROM PARTLIST_VIEW WHERE PART_NO is not null and ASSY_CODE = ''''' + @ASSY_CODE + ''''''')'
insert into @tmp_bom_dtl ( ASSY_CODE, PART_NO, QTY, PARTNO2)
EXEC (@TSQL2)
MERGE dbo.tbl_bom_dtl AS TARGET
USING @tmp_bom_dtl AS SOURCE
ON ( SOURCE.ASSY_CODE = TARGET.ASSY_CODE and SOURCE.PARTNO2 = TARGET.PARTNO2 )
WHEN MATCHED
THEN
UPDATE set
TARGET.QTY = SOURCE.QTY
,TARGET.status_bom = (case when (select count(*) from dbo.tbl_data_part_hs where part_no2=SOURCE.PARTNO2 ) = 0 then 'not found part no' else 'ok' end)
WHEN NOT MATCHED BY TARGET THEN
INSERT (
ASSY_CODE, ASSY_NO,PART_NO, QTY, PARTNO2, FLAG, STATUS
,status_bom
) VALUES (
SOURCE.ASSY_CODE, SOURCE.ASSY_NO,SOURCE.PART_NO, SOURCE.QTY, SOURCE.PARTNO2, SOURCE.FLAG, SOURCE.STATUS
, (case when (select count(*) from dbo.tbl_data_part_hs where part_no2=SOURCE.PARTNO2 ) = 0 then 'not found part no' else 'ok' end)
);
select @itemcount = count(*) from tbl_bom_dtl where ASSY_CODE = @ASSY_CODE
update tbl_bom_hdr set itemcount = @itemcount where ASSY_CODE = @ASSY_CODE
end
/* IF CURSOR_STATUS('global','cari_bom')>=-1 BEGIN DEALLOCATE cari_bom END Declare cari_bom CURSOR FOR select ASSY_NO, PARTNO2, QTY from tbl_bom_dtl where ASSY_CODE = @ASSY_CODE ORDER BY PARTNO2 OPEN cari_bom FETCH NEXT FROM cari_bom INTO @ASSY_NO, @PARTNO2, @QTY_BOM WHILE @@FETCH_STATUS = 0 BEGIN set @QUANTITY = @TOTAL_SET * @QTY_BOM insert into @tmp_bom (id_sa,id_sa_hdr, ASSY_CODE, ASSY_NO, SA_NO ,Tgl_keluar, Quantity) Values (@id_sa, @id_sa_hdr,@PARTNO2,@ASSY_NO, @SA_NO, @Tgl_keluar, @QUANTITY) FETCH NEXT FROM cari_bom INTO @ASSY_NO, @PARTNO2, @QTY_BOM END CLOSE cari_bom DEALLOCATE cari_bom */
insert into @tmp_bom (id_sa,id_sa_hdr, ASSY_CODE, ASSY_NO, SA_NO ,Tgl_keluar, Quantity)
select @id_sa, @id_sa_hdr, PARTNO2, ASSY_NO, @SA_NO, @Tgl_keluar ,@TOTAL_SET * QTY from tbl_bom_dtl where ASSY_CODE = @ASSY_CODE ORDER BY PARTNO2
--Values (@id_sa, @id_sa_hdr,@PARTNO2,@ASSY_NO, @SA_NO, @Tgl_keluar, @QUANTITY)
FETCH NEXT FROM loopchecking INTO @id_sa, @id_sa_hdr,@ASSY_CODE, @TOTAL_SET, @SA_NO,@total_ASSY_CODE
END
CLOSE loopchecking
DEALLOCATE loopchecking
IF CURSOR_STATUS('global','loopchecking2')>=-1
BEGIN
DEALLOCATE loopchecking2
END
Declare loopchecking2 CURSOR FOR select id_sa, id_sa_hdr , ASSY_CODE,ASSY_NO, SA_NO,Tgl_keluar, Quantity from @tmp_bom
OPEN loopchecking2
FETCH NEXT FROM loopchecking2 INTO @id_sa,@id_sa_hdr,@ASSY_CODE,@ASSY_NO,@SA_NO, @Tgl_keluar, @Quantity
WHILE @@FETCH_STATUS = 0
BEGIN
insert into tbl_sa_bom (id_bc_in_hdr, id_bc_in_dtl, id_data_in_hdr ,id_data_in_dtl,id_sa,id_sa_hdr,SA_NO,KODE_BARANG,URAIAN,JUMLAH_SATUAN,JENIS_SATUAN,CURR,PRICE,NDPMB,NOMOR_DAFTAR_DOK_ASAL,TANGGAL_DAFTAR_DOK_ASAL,ASSY_NO,KODE_JENIS_DOK_ASAL,KODE_KANTOR,NOMOR_AJU_DOK_ASAL,KODE_ASAL_BAHAN_BAKU, HS, BM, PPN, PPH, CIF, HARGA_PABEAN, BM_RP, PPN_RP, PPH_RP, SERI_BAHAN_BAKU_ASAL,PART_NO)
select id_bc_in_hdr, id_bc_in_dtl, id_data_in_hdr ,id_data_in_dtl,@id_sa,@id_sa_hdr,@SA_NO,KODE_BARANG,part_name_customs,pakai,satuan,kdval,harga,Ndpbm,BC23No,BC23Tg,@ASSY_NO,typedok,Kdkpbc,CAR,KODE_ASAL_BAHAN_BAKU, hs_code, bm, PPN, PPH, CIF, HARGA_PABEAN, BM_RP, PPN_RP, PPH_RP, Serial,@ASSY_CODE from dbo.fn_data_bahan_baku(@ASSY_CODE,@Tgl_keluar,@Quantity)
MERGE tbl_sa_bom AS target
USING (
select id_sa_bom, id_sa,id_sa_hdr
,ROW_NUMBER() OVER(PARTITION BY id_sa
ORDER BY id_sa_bom) AS rownum
from tbl_sa_bom
where id_sa=@id_sa
) AS source (id_sa_bom, id_sa,id_sa_hdr,rownum)
ON (target.id_sa_bom = source.id_sa_bom) AND (target.id_sa = source.id_sa)
WHEN MATCHED THEN
UPDATE SET SERI_BAHAN_BAKU = source.rownum ;
insert into tbl_bc_in_pakai (id_bc_in_dtl, qty_pakai, id_sa, id_sa_hdr)
select id_bc_in_dtl, JUMLAH_SATUAN, @id_sa, @id_sa_hdr from tbl_sa_bom Where id_sa = @id_sa
--VALUES (@id_bc_in_hdr, @id_bc_in_dtl, @id_data_in_hdr ,@id_data_in_dtl,@id_sa,@id_sa_hdr,@SA_NO,@KODE_BARANG,@URAIAN,@QUANTITY,@JENIS_SATUAN,@CURR,@PRICE,@NDPMB,@NOMOR_DAFTAR_DOK_ASAL,@TANGGAL_DAFTAR_DOK_ASAL,@ASSY_NO,@KODE_JENIS_DOK_ASAL,@KODE_KANTOR,@NOMOR_AJU_DOK_ASAL,@KODE_ASAL_BAHAN_BAKU, ltrim(rtrim(replace(replace(@HS,' ',''),'.',''))), @BM, 10, 2.5, @CIF, @HARGA_PABEAN, @BM_RP, @PPN_RP, @PPH_RP)
FETCH NEXT FROM loopchecking2 INTO @id_sa,@id_sa_hdr,@ASSY_CODE,@ASSY_NO,@SA_NO, @Tgl_keluar, @Quantity
END
CLOSE loopchecking2
DEALLOCATE loopchecking2
set @current_urut= 1
END
--go
--exec('[spuload_bc25] @filepath=''C:/wamp/www/pemi/loaderfiles/exim/bc25/'', @filename=''PIB_BERKALA_242_1.csv'', @username=''admin'', @tipe=''bc25'', @trx=''add'', @id=0 ')
GO
Depends On
10Used By
No items found