Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
| Name | Data Type | Length | Description |
|---|---|---|---|
| @PARAMETER | xml | -1 |
SQL Script
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
CREATE procedure dbo.MG_MS_BC_IN_FINISH
@PARAMETER xml=''
---XencX---with encryption
as
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
declare @pemisah varchar(255)
declare @pemisah_replace varchar(255)
set @pemisah_replace='<br />'
--set @pemisah=CHAR(13) + CHAR(10) + '
'
set @pemisah = '
'
declare @resultX varchar(max)
declare @resultX2 varchar(max)
declare @XmlSts xml
declare @raw xml
declare @xStsnoheader varchar(2),
@xStsno varchar(2),
@xStsdes varchar(max)
set @xStsnoheader='07'
set @xStsno='00';
set @xStsdes='sukses'
BEGIN TRY
SET NOCOUNT ON
DECLARE @NOW datetime
set @NOW =GETDATE()
DECLARE
@data_by varchar(50)
,@ID_HEADER bigint
,@receive_no varchar(50)
,@receive_date date
,@finish_date date
,@finish_date_str varchar(8)
,@finish_time varchar(5)
,@ndpbm_usd decimal(38,4)
,@ndpbm_hdr decimal(38,4)
,@allow_move_ms_date_business bit
SELECT
@data_by=left(ltrim(rtrim(isnull(tempTable.item.value('data_by[1]', 'varchar(100)'),''))),50)
, @ID_HEADER=isnull(tempTable.item.value('ID_HEADER[1]', 'bigint'),-1)
, @receive_no=left(ltrim(rtrim(isnull(tempTable.item.value('receive_no[1]', 'varchar(100)'),''))),50)
, @receive_date=dbo.str_to_date(isnull(tempTable.item.value('receive_date[1]', 'varchar(255)'),''))
, @finish_date=dbo.str_to_date(isnull(tempTable.item.value('finish_date[1]', 'varchar(255)'),''))
, @finish_date_str=left(ltrim(rtrim(isnull(tempTable.item.value('finish_date[1]', 'varchar(100)'),''))),8)
, @finish_time=left(ltrim(rtrim(isnull(tempTable.item.value('finish_time[1]', 'varchar(100)'),''))),5)
, @allow_move_ms_date_business =isnull(tempTable.item.value('move_business_date[1]', 'bit'),0)
, @ndpbm_usd=dbo.StrToDec4(isnull( tempTable.item.value('ndpbm_usd[1]', 'varchar(255)'),'0'))
, @ndpbm_hdr=dbo.StrToDec4(isnull( tempTable.item.value('ndpbm_hdr[1]', 'varchar(255)'),'0'))
FROM @PARAMETER.nodes('param/field') tempTable(item)
exec MG_CHECK_USER @data_by, 0, @xStsno output,@xStsdes output;
if @xStsno <>'00'
goto f ;
if @receive_no=''
begin
set @xStsno='02';
set @xStsdes='Gagal, Isi Nomor Penerimaan' ;
goto f
end
if @receive_date is null
begin
set @xStsno='02';
set @xStsdes='Gagal, Isi Tanggal Penerimaan' ;
goto f
end
if @finish_date is null
begin
set @xStsno='02';
set @xStsdes='Gagal, Isi Tanggal Selesai' ;
goto f
end
if @finish_time =''
begin
set @xStsno='02';
set @xStsdes='Gagal, Isi Jam Selesai' ;
goto f
end
declare
@check_ID_HEADER bigint
,@check_status_tpb_in_name varchar(255)
,@check_is_get bit
,@check_status_tpb_in_id int
,@check_mode_source varchar(255)
,@check_ID_HEADER_ORI bigint
,@check_KODE_STATUS varchar(255)
,@check_mapping_supplier_id bigint
,@check_NOMOR_AJU varchar(255)
,@check_NOMOR_DAFTAR varchar(255)
,@check_TANGGAL_DAFTAR date
,@check_NDPBM decimal(38, 4)
,@check_KODE_VALUTA varchar(255)
,@check_KODE_DOKUMEN_PABEAN varchar(255)
SELECT top(1)
@check_ID_HEADER=ID_HEADER
, @check_status_tpb_in_name=status_tpb_in_name
, @check_is_get=is_get
, @check_status_tpb_in_id=status_tpb_in_id
, @check_mode_source=mode_source_ID
, @check_ID_HEADER_ORI=ID_HEADER_ORI
, @check_KODE_STATUS=KODE_STATUS
, @check_mapping_supplier_id=nullif(mapping_supplier_id,-1)
, @check_NOMOR_AJU= isnull(NOMOR_AJU ,'')
, @check_NOMOR_DAFTAR= isnull( NOMOR_DAFTAR,'')
, @check_TANGGAL_DAFTAR=TANGGAL_DAFTAR
--, @check_KODE_VALUTA=(case when KODE_DOKUMEN_PABEAN = 40 and mode_source_id = 6 then 'IDR' else KODE_VALUTA end)
, @check_KODE_VALUTA=(case when KODE_DOKUMEN_PABEAN = 40 then 'IDR' else KODE_VALUTA end)
, @check_NDPBM=NDPBM
, @check_KODE_DOKUMEN_PABEAN=KODE_DOKUMEN_PABEAN
FROM vw_ms_header_bc_in
WHERE (ID_HEADER = @ID_HEADER)
if @check_ID_HEADER is null
begin
set @xStsno='02';
set @xStsdes='Gagal, Pilih Dokumen yang akan di Finish' ;
goto f
end
if @check_status_tpb_in_id=-1
begin
set @xStsno='02';
set @xStsdes='Gagal, Dokumen dengan status ' + @check_status_tpb_in_name + ' tidak bisa di Finish';
goto f
end
if @check_status_tpb_in_id=3
begin
set @xStsno='02';
set @xStsdes='Gagal, Dokumen dengan status ' + @check_status_tpb_in_name + ' tidak bisa di Finish Lagi';
goto f
end
if @check_NOMOR_AJU =''
begin
set @xStsno='02';
set @xStsdes='Gagal, Isi Nomor aju terlebih dahulu' ;
goto f
end
if @check_NOMOR_DAFTAR =''
begin
set @xStsno='02';
set @xStsdes='Gagal, Isi Nomor daftar terlebih dahulu' ;
goto f
end
if @check_TANGGAL_DAFTAR is null
begin
set @xStsno='02';
set @xStsdes='Gagal, Isi Tanggal daftar terlebih dahulu' ;
goto f
end
if @check_mapping_supplier_id is null or @check_mapping_supplier_id=-1
begin
set @xStsno='02';
set @xStsdes='Gagal, Mapping Supplier Terlebih dahulu';
goto f
end
if nullif(@check_KODE_VALUTA,'') is null
begin
set @xStsno='02';
set @xStsdes='Gagal, Kode Valuta tidak boleh kosong ya';
goto f
end
if (
SELECT count(*)
FROM dt_currencies_master
WHERE (currenciescode = @check_KODE_VALUTA)
)=0
begin
set @xStsno='02';
set @xStsdes='Gagal, Kode Valuta ' + isnull(@check_KODE_VALUTA,'') +' tidak terdaftar';
goto f
end
if @check_KODE_VALUTA='IDR'
begin
set @ndpbm_hdr=1
end
if @check_KODE_VALUTA='USD'
begin
set @ndpbm_hdr=@ndpbm_usd
end
if @ndpbm_hdr=0
begin
set @xStsno='02';
set @xStsdes='Gagal, Isi Nilai tukar ' + @check_KODE_VALUTA + ' Penerimaan' ;
goto f
end
if @ndpbm_usd=0
begin
set @xStsno='02';
set @xStsdes='Gagal, Isi Nilai tukar USD Penerimaan' ;
goto f
end
if @check_NDPBM=0
begin
set @xStsno='02';
set @xStsdes='Gagal, isi Nilai tukar ' + @check_KODE_VALUTA + ' Dokumen';
goto f
end
if cast(@receive_date as date) < cast(@check_TANGGAL_DAFTAR as date)
begin
set @xStsno='02';
set @xStsdes='Gagal, Tanggal penerimaan harus lebih besar atau sama dengan tanggal dokumen';
goto f
end
declare @count_item_unmap int=(
SELECT COUNT(*) AS Expr1
FROM dt_ms_tpb_in_barang
WHERE (ID_HEADER = @ID_HEADER) AND (mapping_ms_item_id = - 1 OR
mapping_ms_item_id IS NULL)
)
if @count_item_unmap>0
begin
set @xStsno='02';
set @xStsdes='Gagal, Ada '+ cast(@count_item_unmap as varchar(255))+' item yang belum terdefinisi';
goto f
end
---- CHECK LAST POSTING AVG
declare @result_date_business_id bigint,
@result_date_business date,
@result_date_business_id_from bigint,
@result_date_business_from date,
@is_move_date_business bit,
@business_date date=@receive_date
EXEC [dbo].[MG_MS_CHECK_BUSINESS_DATE_AND_AVG]
@business_date = @business_date,
@allow_move_ms_date_business = @allow_move_ms_date_business,
@result_date_business_id = @result_date_business_id OUTPUT,
@result_date_business = @result_date_business OUTPUT,
@result_date_business_id_from = @result_date_business_id_from OUTPUT,
@result_date_business_from = @result_date_business_from OUTPUT,
@is_move_date_business = @is_move_date_business OUTPUT,
@xStsno = @xStsno OUTPUT,
@xStsdes = @xStsdes OUTPUT
if not(@xStsno='00')
begin
goto f
end
declare @ms_item_in_detail table(
ms_in_item_detail_id bigint primary key
, ms_item_id bigint
, ms_item_in_move_avg_id bigint)
declare @new_daily_in_item table (
ms_item_in_move_avg_id bigint
,ms_date_business_id int
,ms_item_id bigint
)
declare @WAKTU_BONGKAR datetime2
set @finish_time=REPLACE(@finish_time,':','')
if len(@finish_time)<4
begin
set @WAKTU_BONGKAR=SUBSTRING(@finish_date_str,1,4)
+ '-'
+ SUBSTRING(@finish_date_str,5,2)
+ '-'
+ SUBSTRING(@finish_date_str,7,2)
end
else
begin
set @WAKTU_BONGKAR=SUBSTRING(@finish_date_str,1,4)
+ '-'
+ SUBSTRING(@finish_date_str,5,2)
+ '-'
+ SUBSTRING(@finish_date_str,7,2)
+ ' '
+ SUBSTRING(@finish_time,1,2)
+ ':'
+ SUBSTRING(@finish_time,3,2)
+ ':00'
end
declare @ID_HEADER_STATUS bigint
BEGIN TRANSACTION;
---KALKULASI HARGA HARGA
INSERT INTO dt_ms_tpb_in_header_h_status
(ID_HEADER, status_tpb_in_id, status_info, create_date, create_by)
VALUES (@ID_HEADER,3, '',@now,@data_by)
set @ID_HEADER_STATUS=SCOPE_IDENTITY();
UPDATE dt_ms_tpb_in_header
SET CIF=sum_detail.CIF
,FOB=sum_detail.FOB
,HARGA_INVOICE =sum_detail.HARGA_INVOICE
,CIF_RUPIAH=sum_detail.CIF_RUPIAH
,HARGA_PENYERAHAN=sum_detail.HARGA_PENYERAHAN
,NETTO=sum_detail.NETTO
,JUMLAH_BARANG=sum_detail.JUMLAH_BARANG
,dt_ms_tpb_in_header_h_status_id =@ID_HEADER_STATUS
,receive_no =@receive_no
,receive_date =@receive_date
,receive_ndpbm =@ndpbm_hdr
,receive_ndpbm_usd =@ndpbm_usd
,ms_date_business_id_from =@result_date_business_id_from
,is_move_business_date =@is_move_date_business
,ms_date_business_id=@result_date_business_id
,WAKTU_BONGKAR=@WAKTU_BONGKAR
FROM dt_ms_tpb_in_header INNER JOIN
(
SELECT ID_HEADER
, SUM(isnull(FOB,0)) AS FOB
, SUM(isnull(CIF,0)) AS CIF
, SUM(isnull(HARGA_INVOICE,0)) AS HARGA_INVOICE
, SUM(isnull(CIF_RUPIAH,0)) AS CIF_RUPIAH
, SUM(isnull(HARGA_PENYERAHAN,0)) AS HARGA_PENYERAHAN
, SUM(isnull(NETTO,0)) AS NETTO
, COUNT(*) as JUMLAH_BARANG
FROM dt_ms_tpb_in_barang
GROUP BY ID_HEADER ) AS sum_detail ON dt_ms_tpb_in_header.ID_HEADER = sum_detail.ID_HEADER
where dt_ms_tpb_in_header.ID_HEADER =@ID_HEADER
--- CHECK APAKAH ADA DATE BUSINESS_DATE
update dt_ms_tpb_in_barang
set receive_amount=case when @check_KODE_DOKUMEN_PABEAN='40' then HARGA_PENYERAHAN else CIF end
, receive_total_idr=(case when @check_KODE_DOKUMEN_PABEAN='40' then HARGA_PENYERAHAN else CIF end ) * @ndpbm_hdr
, receive_total_usd= (case when @check_KODE_DOKUMEN_PABEAN='40' then HARGA_PENYERAHAN else CIF end ) * @ndpbm_hdr / @ndpbm_usd
where ID_HEADER =@ID_HEADER
INSERT INTO dt_ms_item_in_detail
(
mode_source
, id_source_header
, id_source
, quantity
, quantity_source
, ms_item_id
, quantity_pakai
, create_date
, create_by
, modify_date
, modify_by
, total_amont
, total_amont_idr
, total_amont_usd
, ms_date_business_id_from
, is_move_business_date
, is_adjustment
, ms_date_business_id
)
output inserted.ms_in_item_detail_id,inserted.ms_item_id,-1 into @ms_item_in_detail
select
2--mode_source
, @ID_HEADER--id_source_header
, ID -- id_source
, qty_pakai -- quantity
, qty_pakai-- quantity_source
, mapping_ms_item_id -- ms_item_id
, qty_pakai-- quantity_pakai
, @now
, @data_by
, @now
, @data_by
, receive_amount --total_amont
, receive_total_idr
, receive_total_usd
, @result_date_business_id_from
, @is_move_date_business
, @is_move_date_business
, @result_date_business_id
--total_amont_usd
from
dt_ms_tpb_in_barang
where ID_HEADER =@ID_HEADER
---CHECK DAILY AVG IN
update @ms_item_in_detail
set ms_item_in_move_avg_id=isnull((SELECT top(1) dt_ms_item_daily_in_move_avg.ms_item_in_move_avg_id
FROM dt_ms_item_daily_in_move_avg INNER JOIN
dt_ms_date_business ON dt_ms_item_daily_in_move_avg.ms_date_business_id = dt_ms_date_business.ms_date_business_id
WHERE (dt_ms_date_business.ms_date_business = @result_date_business) AND (dt_ms_item_daily_in_move_avg.ms_item_id = [@ms_item_in_detail].ms_item_id)
) ,-1)
where ms_item_in_move_avg_id= -1 or ms_item_in_move_avg_id is null
INSERT INTO dt_ms_item_daily_in_move_avg
(ms_date_business_id, ms_item_id, total_qty_avg_move, price_avg_move_idr, price_avg_move_usd, ms_item_h_price_id,ms_cost_final_avg_id)
output inserted.ms_item_in_move_avg_id,inserted.ms_date_business_id,inserted.ms_item_id into @new_daily_in_item
select @result_date_business_id,ms_item_id , 0, 0, 0, - 1, - 1 from @ms_item_in_detail
where ms_item_in_move_avg_id=-1 or ms_item_in_move_avg_id is null
group by ms_item_id
update @ms_item_in_detail
set ms_item_in_move_avg_id=isnull((SELECT top(1) xnew.ms_item_in_move_avg_id from @new_daily_in_item as xnew where xnew.ms_item_id = [@ms_item_in_detail].ms_item_id)
,-1)
where ms_item_in_move_avg_id= -1 or ms_item_in_move_avg_id is null
UPDATE dt_ms_item_in_detail
SET ori_ms_in_item_detail_id = data_detail.ms_in_item_detail_id
,ms_item_in_move_avg_id= data_detail.ms_item_in_move_avg_id
,is_move_business_date=@is_move_date_business
,is_adjustment=@is_move_date_business
,ms_date_business_id=@result_date_business_id
,ms_date_business_id_from=@result_date_business_id_from
FROM dt_ms_item_in_detail INNER JOIN
@ms_item_in_detail AS data_detail ON dt_ms_item_in_detail.ms_in_item_detail_id = data_detail.ms_in_item_detail_id
where exists(
select * from @ms_item_in_detail as xfilter
where dt_ms_item_in_detail.ms_in_item_detail_id=xfilter.ms_in_item_detail_id
)
COMMIT TRANSACTION;
declare @ms_item xml
,@last_final_avg bigint
set @ms_item=(select ms_item_id as 'row/@id' from @ms_item_in_detail
group by ms_item_id for xml path('item')
)
EXEC MG_CALCULATE_AVG_MOVE_BY_BUSINESS_DATE @ms_item,@result_date_business,@last_final_avg
declare @detail xml
set @detail =(
select
ID_HEADER AS rID
, status_tpb_in_id AS r1
, status_tpb_in_name AS r2
, mode_source_id AS r3
, mode_source_name AS r4
, is_get AS r5
, KODE_DOKUMEN_PABEAN AS r6
, NOMOR_AJU AS r7
, PJT AS r8
, dbo.date_to_str(TANGGAL_DAFTAR ) AS r9
, NOMOR_DAFTAR AS r10
, KODE_STATUS AS r11
, URAIAN_STATUS AS r12
, KODE_TUJUAN_IN_OUT AS r13
, URAINAN_TUJUAN_IN_OUT AS r14
, MODULE_ID_PENGIRIM AS r15
, MODULE_NAMA_PENGIRIM AS r16
, MODULE_KODE_ID_PENGIRIM AS r17
, MODULE_ALAMAT_PENGIRIM AS r18
, MODULE_KODE_NEGARA_PENGIRIM AS r19
, MODULE_NAMA_NEGARA_PENGIRIM AS r20
, id_type AS r21
, INTERNAL_ID_PENGIRIM AS r22
, INTERNAL_KODE_PENGIRIM AS r23
, INTERNAL_NAMA_PENGIRIM AS r24
, INTERNAL_ALAMAT_PENGIRIM AS r25
, INTERNAL_KODE_NEGARA_PENGIRIM AS r26
, INTERNAL_NAMA_NEGARA_PENGIRIM AS r27
, api_type_id AS r28
, api_no AS r29
, skep_no AS r30
, dbo.date_to_str(skep_date ) AS r31
, KODE_VALUTA AS r32
, cast(NDPBM AS decimal(18,4)) AS r33
, KODE_HARGA AS r34
, cast(HARGA_TOTAL AS decimal(18,2)) AS r35
, KODE_ASURANSI AS r36
, cast(ASURANSI AS decimal(18,2)) AS r37
, cast(BIAYA_TAMBAHAN AS decimal(18,2)) AS r38
, cast(DISKON AS decimal(18,2)) AS r39
, cast(FREIGHT AS decimal(18,2)) AS r40
, cast(BRUTO AS decimal(18,2)) AS r41
, cast(NETTO AS decimal(18,2)) AS r42
, JUMLAH_BARANG AS r43
, JUMLAH_KEMASAN AS r44
, JUMLAH_KONTAINER AS r45
, KODE_KANTOR_BONGKAR AS r46
, KODE_KANTOR_BONGKAR_NAME AS r47
, KODE_PEL_BONGKAR AS r48
, KODE_PEL_BONGKAR_NAME AS r49
, receive_no AS r50
, dbo.date_to_str(receive_date ) AS r51
, WAKTU_BONGKAR AS r52
, WAKTU_STUFFING AS r53
, status_info AS r54
, dbo.date_to_str2(status_date ) AS r55
, status_by AS r56
, dbo.date_to_str2(create_date ) AS r57
, create_by AS r58
, dbo.date_to_str2(modify_date ) AS r59
, modify_by AS r60
, ID_HEADER_ORI AS r61
from vw_ms_header_bc_in
where ID_HEADER=@ID_HEADER
for xml path ('detail')
)
f:
set nocount off
END TRY
BEGIN CATCH
IF (@@TRANCOUNT > 0) ROLLBACK TRAN;
set @xStsno='88'
set @xStsdes= ERROR_MESSAGE()
END CATCH
g:
set @XmlSts=(select @xStsnoheader + @xStsno as 'no', @xStsdes as 'des' for xml path('sts'))
select CAST( (select @XmlSts,isnull(@raw ,'') ,isnull(@detail ,'') for xml path ('result')
) as XML) as dt
--GO
--EXEC MG_MS_BC_IN_FINISH
--'1 2 json 2 ::1 ABA01 27 8 10007 '
GO
GO
CREATE procedure dbo.MG_MS_BC_IN_FINISH
@PARAMETER xml=''
---XencX---with encryption
as
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
declare @pemisah varchar(255)
declare @pemisah_replace varchar(255)
set @pemisah_replace='<br />'
--set @pemisah=CHAR(13) + CHAR(10) + '
'
set @pemisah = '
'
declare @resultX varchar(max)
declare @resultX2 varchar(max)
declare @XmlSts xml
declare @raw xml
declare @xStsnoheader varchar(2),
@xStsno varchar(2),
@xStsdes varchar(max)
set @xStsnoheader='07'
set @xStsno='00';
set @xStsdes='sukses'
BEGIN TRY
SET NOCOUNT ON
DECLARE @NOW datetime
set @NOW =GETDATE()
DECLARE
@data_by varchar(50)
,@ID_HEADER bigint
,@receive_no varchar(50)
,@receive_date date
,@finish_date date
,@finish_date_str varchar(8)
,@finish_time varchar(5)
,@ndpbm_usd decimal(38,4)
,@ndpbm_hdr decimal(38,4)
,@allow_move_ms_date_business bit
SELECT
@data_by=left(ltrim(rtrim(isnull(tempTable.item.value('data_by[1]', 'varchar(100)'),''))),50)
, @ID_HEADER=isnull(tempTable.item.value('ID_HEADER[1]', 'bigint'),-1)
, @receive_no=left(ltrim(rtrim(isnull(tempTable.item.value('receive_no[1]', 'varchar(100)'),''))),50)
, @receive_date=dbo.str_to_date(isnull(tempTable.item.value('receive_date[1]', 'varchar(255)'),''))
, @finish_date=dbo.str_to_date(isnull(tempTable.item.value('finish_date[1]', 'varchar(255)'),''))
, @finish_date_str=left(ltrim(rtrim(isnull(tempTable.item.value('finish_date[1]', 'varchar(100)'),''))),8)
, @finish_time=left(ltrim(rtrim(isnull(tempTable.item.value('finish_time[1]', 'varchar(100)'),''))),5)
, @allow_move_ms_date_business =isnull(tempTable.item.value('move_business_date[1]', 'bit'),0)
, @ndpbm_usd=dbo.StrToDec4(isnull( tempTable.item.value('ndpbm_usd[1]', 'varchar(255)'),'0'))
, @ndpbm_hdr=dbo.StrToDec4(isnull( tempTable.item.value('ndpbm_hdr[1]', 'varchar(255)'),'0'))
FROM @PARAMETER.nodes('param/field') tempTable(item)
exec MG_CHECK_USER @data_by, 0, @xStsno output,@xStsdes output;
if @xStsno <>'00'
goto f ;
if @receive_no=''
begin
set @xStsno='02';
set @xStsdes='Gagal, Isi Nomor Penerimaan' ;
goto f
end
if @receive_date is null
begin
set @xStsno='02';
set @xStsdes='Gagal, Isi Tanggal Penerimaan' ;
goto f
end
if @finish_date is null
begin
set @xStsno='02';
set @xStsdes='Gagal, Isi Tanggal Selesai' ;
goto f
end
if @finish_time =''
begin
set @xStsno='02';
set @xStsdes='Gagal, Isi Jam Selesai' ;
goto f
end
declare
@check_ID_HEADER bigint
,@check_status_tpb_in_name varchar(255)
,@check_is_get bit
,@check_status_tpb_in_id int
,@check_mode_source varchar(255)
,@check_ID_HEADER_ORI bigint
,@check_KODE_STATUS varchar(255)
,@check_mapping_supplier_id bigint
,@check_NOMOR_AJU varchar(255)
,@check_NOMOR_DAFTAR varchar(255)
,@check_TANGGAL_DAFTAR date
,@check_NDPBM decimal(38, 4)
,@check_KODE_VALUTA varchar(255)
,@check_KODE_DOKUMEN_PABEAN varchar(255)
SELECT top(1)
@check_ID_HEADER=ID_HEADER
, @check_status_tpb_in_name=status_tpb_in_name
, @check_is_get=is_get
, @check_status_tpb_in_id=status_tpb_in_id
, @check_mode_source=mode_source_ID
, @check_ID_HEADER_ORI=ID_HEADER_ORI
, @check_KODE_STATUS=KODE_STATUS
, @check_mapping_supplier_id=nullif(mapping_supplier_id,-1)
, @check_NOMOR_AJU= isnull(NOMOR_AJU ,'')
, @check_NOMOR_DAFTAR= isnull( NOMOR_DAFTAR,'')
, @check_TANGGAL_DAFTAR=TANGGAL_DAFTAR
--, @check_KODE_VALUTA=(case when KODE_DOKUMEN_PABEAN = 40 and mode_source_id = 6 then 'IDR' else KODE_VALUTA end)
, @check_KODE_VALUTA=(case when KODE_DOKUMEN_PABEAN = 40 then 'IDR' else KODE_VALUTA end)
, @check_NDPBM=NDPBM
, @check_KODE_DOKUMEN_PABEAN=KODE_DOKUMEN_PABEAN
FROM vw_ms_header_bc_in
WHERE (ID_HEADER = @ID_HEADER)
if @check_ID_HEADER is null
begin
set @xStsno='02';
set @xStsdes='Gagal, Pilih Dokumen yang akan di Finish' ;
goto f
end
if @check_status_tpb_in_id=-1
begin
set @xStsno='02';
set @xStsdes='Gagal, Dokumen dengan status ' + @check_status_tpb_in_name + ' tidak bisa di Finish';
goto f
end
if @check_status_tpb_in_id=3
begin
set @xStsno='02';
set @xStsdes='Gagal, Dokumen dengan status ' + @check_status_tpb_in_name + ' tidak bisa di Finish Lagi';
goto f
end
if @check_NOMOR_AJU =''
begin
set @xStsno='02';
set @xStsdes='Gagal, Isi Nomor aju terlebih dahulu' ;
goto f
end
if @check_NOMOR_DAFTAR =''
begin
set @xStsno='02';
set @xStsdes='Gagal, Isi Nomor daftar terlebih dahulu' ;
goto f
end
if @check_TANGGAL_DAFTAR is null
begin
set @xStsno='02';
set @xStsdes='Gagal, Isi Tanggal daftar terlebih dahulu' ;
goto f
end
if @check_mapping_supplier_id is null or @check_mapping_supplier_id=-1
begin
set @xStsno='02';
set @xStsdes='Gagal, Mapping Supplier Terlebih dahulu';
goto f
end
if nullif(@check_KODE_VALUTA,'') is null
begin
set @xStsno='02';
set @xStsdes='Gagal, Kode Valuta tidak boleh kosong ya';
goto f
end
if (
SELECT count(*)
FROM dt_currencies_master
WHERE (currenciescode = @check_KODE_VALUTA)
)=0
begin
set @xStsno='02';
set @xStsdes='Gagal, Kode Valuta ' + isnull(@check_KODE_VALUTA,'') +' tidak terdaftar';
goto f
end
if @check_KODE_VALUTA='IDR'
begin
set @ndpbm_hdr=1
end
if @check_KODE_VALUTA='USD'
begin
set @ndpbm_hdr=@ndpbm_usd
end
if @ndpbm_hdr=0
begin
set @xStsno='02';
set @xStsdes='Gagal, Isi Nilai tukar ' + @check_KODE_VALUTA + ' Penerimaan' ;
goto f
end
if @ndpbm_usd=0
begin
set @xStsno='02';
set @xStsdes='Gagal, Isi Nilai tukar USD Penerimaan' ;
goto f
end
if @check_NDPBM=0
begin
set @xStsno='02';
set @xStsdes='Gagal, isi Nilai tukar ' + @check_KODE_VALUTA + ' Dokumen';
goto f
end
if cast(@receive_date as date) < cast(@check_TANGGAL_DAFTAR as date)
begin
set @xStsno='02';
set @xStsdes='Gagal, Tanggal penerimaan harus lebih besar atau sama dengan tanggal dokumen';
goto f
end
declare @count_item_unmap int=(
SELECT COUNT(*) AS Expr1
FROM dt_ms_tpb_in_barang
WHERE (ID_HEADER = @ID_HEADER) AND (mapping_ms_item_id = - 1 OR
mapping_ms_item_id IS NULL)
)
if @count_item_unmap>0
begin
set @xStsno='02';
set @xStsdes='Gagal, Ada '+ cast(@count_item_unmap as varchar(255))+' item yang belum terdefinisi';
goto f
end
---- CHECK LAST POSTING AVG
declare @result_date_business_id bigint,
@result_date_business date,
@result_date_business_id_from bigint,
@result_date_business_from date,
@is_move_date_business bit,
@business_date date=@receive_date
EXEC [dbo].[MG_MS_CHECK_BUSINESS_DATE_AND_AVG]
@business_date = @business_date,
@allow_move_ms_date_business = @allow_move_ms_date_business,
@result_date_business_id = @result_date_business_id OUTPUT,
@result_date_business = @result_date_business OUTPUT,
@result_date_business_id_from = @result_date_business_id_from OUTPUT,
@result_date_business_from = @result_date_business_from OUTPUT,
@is_move_date_business = @is_move_date_business OUTPUT,
@xStsno = @xStsno OUTPUT,
@xStsdes = @xStsdes OUTPUT
if not(@xStsno='00')
begin
goto f
end
declare @ms_item_in_detail table(
ms_in_item_detail_id bigint primary key
, ms_item_id bigint
, ms_item_in_move_avg_id bigint)
declare @new_daily_in_item table (
ms_item_in_move_avg_id bigint
,ms_date_business_id int
,ms_item_id bigint
)
declare @WAKTU_BONGKAR datetime2
set @finish_time=REPLACE(@finish_time,':','')
if len(@finish_time)<4
begin
set @WAKTU_BONGKAR=SUBSTRING(@finish_date_str,1,4)
+ '-'
+ SUBSTRING(@finish_date_str,5,2)
+ '-'
+ SUBSTRING(@finish_date_str,7,2)
end
else
begin
set @WAKTU_BONGKAR=SUBSTRING(@finish_date_str,1,4)
+ '-'
+ SUBSTRING(@finish_date_str,5,2)
+ '-'
+ SUBSTRING(@finish_date_str,7,2)
+ ' '
+ SUBSTRING(@finish_time,1,2)
+ ':'
+ SUBSTRING(@finish_time,3,2)
+ ':00'
end
declare @ID_HEADER_STATUS bigint
BEGIN TRANSACTION;
---KALKULASI HARGA HARGA
INSERT INTO dt_ms_tpb_in_header_h_status
(ID_HEADER, status_tpb_in_id, status_info, create_date, create_by)
VALUES (@ID_HEADER,3, '',@now,@data_by)
set @ID_HEADER_STATUS=SCOPE_IDENTITY();
UPDATE dt_ms_tpb_in_header
SET CIF=sum_detail.CIF
,FOB=sum_detail.FOB
,HARGA_INVOICE =sum_detail.HARGA_INVOICE
,CIF_RUPIAH=sum_detail.CIF_RUPIAH
,HARGA_PENYERAHAN=sum_detail.HARGA_PENYERAHAN
,NETTO=sum_detail.NETTO
,JUMLAH_BARANG=sum_detail.JUMLAH_BARANG
,dt_ms_tpb_in_header_h_status_id =@ID_HEADER_STATUS
,receive_no =@receive_no
,receive_date =@receive_date
,receive_ndpbm =@ndpbm_hdr
,receive_ndpbm_usd =@ndpbm_usd
,ms_date_business_id_from =@result_date_business_id_from
,is_move_business_date =@is_move_date_business
,ms_date_business_id=@result_date_business_id
,WAKTU_BONGKAR=@WAKTU_BONGKAR
FROM dt_ms_tpb_in_header INNER JOIN
(
SELECT ID_HEADER
, SUM(isnull(FOB,0)) AS FOB
, SUM(isnull(CIF,0)) AS CIF
, SUM(isnull(HARGA_INVOICE,0)) AS HARGA_INVOICE
, SUM(isnull(CIF_RUPIAH,0)) AS CIF_RUPIAH
, SUM(isnull(HARGA_PENYERAHAN,0)) AS HARGA_PENYERAHAN
, SUM(isnull(NETTO,0)) AS NETTO
, COUNT(*) as JUMLAH_BARANG
FROM dt_ms_tpb_in_barang
GROUP BY ID_HEADER ) AS sum_detail ON dt_ms_tpb_in_header.ID_HEADER = sum_detail.ID_HEADER
where dt_ms_tpb_in_header.ID_HEADER =@ID_HEADER
--- CHECK APAKAH ADA DATE BUSINESS_DATE
update dt_ms_tpb_in_barang
set receive_amount=case when @check_KODE_DOKUMEN_PABEAN='40' then HARGA_PENYERAHAN else CIF end
, receive_total_idr=(case when @check_KODE_DOKUMEN_PABEAN='40' then HARGA_PENYERAHAN else CIF end ) * @ndpbm_hdr
, receive_total_usd= (case when @check_KODE_DOKUMEN_PABEAN='40' then HARGA_PENYERAHAN else CIF end ) * @ndpbm_hdr / @ndpbm_usd
where ID_HEADER =@ID_HEADER
INSERT INTO dt_ms_item_in_detail
(
mode_source
, id_source_header
, id_source
, quantity
, quantity_source
, ms_item_id
, quantity_pakai
, create_date
, create_by
, modify_date
, modify_by
, total_amont
, total_amont_idr
, total_amont_usd
, ms_date_business_id_from
, is_move_business_date
, is_adjustment
, ms_date_business_id
)
output inserted.ms_in_item_detail_id,inserted.ms_item_id,-1 into @ms_item_in_detail
select
2--mode_source
, @ID_HEADER--id_source_header
, ID -- id_source
, qty_pakai -- quantity
, qty_pakai-- quantity_source
, mapping_ms_item_id -- ms_item_id
, qty_pakai-- quantity_pakai
, @now
, @data_by
, @now
, @data_by
, receive_amount --total_amont
, receive_total_idr
, receive_total_usd
, @result_date_business_id_from
, @is_move_date_business
, @is_move_date_business
, @result_date_business_id
--total_amont_usd
from
dt_ms_tpb_in_barang
where ID_HEADER =@ID_HEADER
---CHECK DAILY AVG IN
update @ms_item_in_detail
set ms_item_in_move_avg_id=isnull((SELECT top(1) dt_ms_item_daily_in_move_avg.ms_item_in_move_avg_id
FROM dt_ms_item_daily_in_move_avg INNER JOIN
dt_ms_date_business ON dt_ms_item_daily_in_move_avg.ms_date_business_id = dt_ms_date_business.ms_date_business_id
WHERE (dt_ms_date_business.ms_date_business = @result_date_business) AND (dt_ms_item_daily_in_move_avg.ms_item_id = [@ms_item_in_detail].ms_item_id)
) ,-1)
where ms_item_in_move_avg_id= -1 or ms_item_in_move_avg_id is null
INSERT INTO dt_ms_item_daily_in_move_avg
(ms_date_business_id, ms_item_id, total_qty_avg_move, price_avg_move_idr, price_avg_move_usd, ms_item_h_price_id,ms_cost_final_avg_id)
output inserted.ms_item_in_move_avg_id,inserted.ms_date_business_id,inserted.ms_item_id into @new_daily_in_item
select @result_date_business_id,ms_item_id , 0, 0, 0, - 1, - 1 from @ms_item_in_detail
where ms_item_in_move_avg_id=-1 or ms_item_in_move_avg_id is null
group by ms_item_id
update @ms_item_in_detail
set ms_item_in_move_avg_id=isnull((SELECT top(1) xnew.ms_item_in_move_avg_id from @new_daily_in_item as xnew where xnew.ms_item_id = [@ms_item_in_detail].ms_item_id)
,-1)
where ms_item_in_move_avg_id= -1 or ms_item_in_move_avg_id is null
UPDATE dt_ms_item_in_detail
SET ori_ms_in_item_detail_id = data_detail.ms_in_item_detail_id
,ms_item_in_move_avg_id= data_detail.ms_item_in_move_avg_id
,is_move_business_date=@is_move_date_business
,is_adjustment=@is_move_date_business
,ms_date_business_id=@result_date_business_id
,ms_date_business_id_from=@result_date_business_id_from
FROM dt_ms_item_in_detail INNER JOIN
@ms_item_in_detail AS data_detail ON dt_ms_item_in_detail.ms_in_item_detail_id = data_detail.ms_in_item_detail_id
where exists(
select * from @ms_item_in_detail as xfilter
where dt_ms_item_in_detail.ms_in_item_detail_id=xfilter.ms_in_item_detail_id
)
COMMIT TRANSACTION;
declare @ms_item xml
,@last_final_avg bigint
set @ms_item=(select ms_item_id as 'row/@id' from @ms_item_in_detail
group by ms_item_id for xml path('item')
)
EXEC MG_CALCULATE_AVG_MOVE_BY_BUSINESS_DATE @ms_item,@result_date_business,@last_final_avg
declare @detail xml
set @detail =(
select
ID_HEADER AS rID
, status_tpb_in_id AS r1
, status_tpb_in_name AS r2
, mode_source_id AS r3
, mode_source_name AS r4
, is_get AS r5
, KODE_DOKUMEN_PABEAN AS r6
, NOMOR_AJU AS r7
, PJT AS r8
, dbo.date_to_str(TANGGAL_DAFTAR ) AS r9
, NOMOR_DAFTAR AS r10
, KODE_STATUS AS r11
, URAIAN_STATUS AS r12
, KODE_TUJUAN_IN_OUT AS r13
, URAINAN_TUJUAN_IN_OUT AS r14
, MODULE_ID_PENGIRIM AS r15
, MODULE_NAMA_PENGIRIM AS r16
, MODULE_KODE_ID_PENGIRIM AS r17
, MODULE_ALAMAT_PENGIRIM AS r18
, MODULE_KODE_NEGARA_PENGIRIM AS r19
, MODULE_NAMA_NEGARA_PENGIRIM AS r20
, id_type AS r21
, INTERNAL_ID_PENGIRIM AS r22
, INTERNAL_KODE_PENGIRIM AS r23
, INTERNAL_NAMA_PENGIRIM AS r24
, INTERNAL_ALAMAT_PENGIRIM AS r25
, INTERNAL_KODE_NEGARA_PENGIRIM AS r26
, INTERNAL_NAMA_NEGARA_PENGIRIM AS r27
, api_type_id AS r28
, api_no AS r29
, skep_no AS r30
, dbo.date_to_str(skep_date ) AS r31
, KODE_VALUTA AS r32
, cast(NDPBM AS decimal(18,4)) AS r33
, KODE_HARGA AS r34
, cast(HARGA_TOTAL AS decimal(18,2)) AS r35
, KODE_ASURANSI AS r36
, cast(ASURANSI AS decimal(18,2)) AS r37
, cast(BIAYA_TAMBAHAN AS decimal(18,2)) AS r38
, cast(DISKON AS decimal(18,2)) AS r39
, cast(FREIGHT AS decimal(18,2)) AS r40
, cast(BRUTO AS decimal(18,2)) AS r41
, cast(NETTO AS decimal(18,2)) AS r42
, JUMLAH_BARANG AS r43
, JUMLAH_KEMASAN AS r44
, JUMLAH_KONTAINER AS r45
, KODE_KANTOR_BONGKAR AS r46
, KODE_KANTOR_BONGKAR_NAME AS r47
, KODE_PEL_BONGKAR AS r48
, KODE_PEL_BONGKAR_NAME AS r49
, receive_no AS r50
, dbo.date_to_str(receive_date ) AS r51
, WAKTU_BONGKAR AS r52
, WAKTU_STUFFING AS r53
, status_info AS r54
, dbo.date_to_str2(status_date ) AS r55
, status_by AS r56
, dbo.date_to_str2(create_date ) AS r57
, create_by AS r58
, dbo.date_to_str2(modify_date ) AS r59
, modify_by AS r60
, ID_HEADER_ORI AS r61
from vw_ms_header_bc_in
where ID_HEADER=@ID_HEADER
for xml path ('detail')
)
f:
set nocount off
END TRY
BEGIN CATCH
IF (@@TRANCOUNT > 0) ROLLBACK TRAN;
set @xStsno='88'
set @xStsdes= ERROR_MESSAGE()
END CATCH
g:
set @XmlSts=(select @xStsnoheader + @xStsno as 'no', @xStsdes as 'des' for xml path('sts'))
select CAST( (select @XmlSts,isnull(@raw ,'') ,isnull(@detail ,'') for xml path ('result')
) as XML) as dt
--GO
--EXEC MG_MS_BC_IN_FINISH
--'
GO
Depends On
15- dbo.str_to_date
- dbo.StrToDec4
- dbo.MG_CHECK_USER
- dbo.vw_ms_header_bc_in
- dbo.dt_currencies_master
- dbo.dt_ms_tpb_in_barang
- dbo.MG_MS_CHECK_BUSINESS_DATE_AND_AVG
- dbo.dt_ms_tpb_in_header_h_status
- dbo.dt_ms_tpb_in_header
- dbo.dt_ms_item_in_detail
- dbo.dt_ms_item_daily_in_move_avg
- dbo.dt_ms_date_business
- dbo.MG_CALCULATE_AVG_MOVE_BY_BUSINESS_DATE
- dbo.date_to_str
- dbo.date_to_str2
Used By
No items found