dbo.MG_MS_BC_IN_ITEM_EDIT

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_ITEM_EDIT
@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) 
,@HARGA_PENYERAHAN decimal(38,2)
,@JUMLAH_KEMASAN bigint
,@JUMLAH_SATUAN decimal(38,4)
,@KODE_KEMASAN varchar(255)
,@KODE_SATUAN varchar(255)
,@KODE_STATUS varchar(255)
,@NETTO decimal(38,4)
,@POS_TARIF varchar(255)
,@SERI_BARANG bigint
,@URAIAN varchar(500)
,@UKURAN varchar(255)
,@TIPE varchar(255)
,@VOLUME decimal(38,4)
,@ms_item_id bigint
,@KODE_NEGARA_ASAL varchar(255)
,@MERK varchar(255)
,@ID_HEADER bigint
,@ID_BARANG bigint

,@BM_ID bigint
,@BM decimal(38,2)

,@PPNBM_ID bigint
,@PPNBM decimal(38,2)

,@PPH_ID bigint
,@PPH decimal(38,2)

,@PPN_ID bigint
,@PPN decimal(38,2)

,@series varchar(255)
,@TAHUN_PEMBUATAN date
,@po_no varchar(255)
,@po_date date

SELECT 
@data_by=left(ltrim(rtrim(isnull(tempTable.item.value('data_by[1]', 'varchar(100)'),''))),50)
,@HARGA_PENYERAHAN=dbo.StrToDec2(isnull( tempTable.item.value('HARGA_PENYERAHAN[1]', 'varchar(255)'),'0'))
,@JUMLAH_KEMASAN=isnull(tempTable.item.value('JUMLAH_KEMASAN[1]', 'bigint'),-1)
,@JUMLAH_SATUAN=dbo.StrToDec4(isnull( tempTable.item.value('JUMLAH_SATUAN[1]', 'varchar(255)'),'0'))
,@KODE_KEMASAN=left(ltrim(rtrim(isnull(tempTable.item.value('KODE_KEMASAN[1]', 'varchar(305)'),''))),255)
,@KODE_STATUS=left(ltrim(rtrim(isnull(tempTable.item.value('KODE_STATUS[1]', 'varchar(305)'),''))),255)
,@NETTO=dbo.StrToDec4(isnull( tempTable.item.value('NETTO[1]', 'varchar(255)'),'0'))
,@POS_TARIF=left(ltrim(rtrim(isnull(tempTable.item.value('POS_TARIF[1]', 'varchar(305)'),''))),255)
,@SERI_BARANG=isnull(tempTable.item.value('SERI_BARANG[1]', 'bigint'),-1)
,@UKURAN=left(ltrim(rtrim(isnull(tempTable.item.value('UKURAN[1]', 'varchar(305)'),''))),255)
,@TIPE=left(ltrim(rtrim(isnull(tempTable.item.value('TIPE[1]', 'varchar(305)'),''))),255)
,@VOLUME=dbo.StrToDec4(isnull( tempTable.item.value('VOLUME[1]', 'varchar(255)'),'0'))
,@ms_item_id=isnull(tempTable.item.value('ms_item_id[1]', 'bigint'),-1)
,@KODE_NEGARA_ASAL=left(ltrim(rtrim(isnull(tempTable.item.value('KODE_NEGARA_ASAL[1]', 'varchar(305)'),''))),255)
,@MERK=left(ltrim(rtrim(isnull(tempTable.item.value('MERK[1]', 'varchar(305)'),''))),255)
,@ID_HEADER=isnull(tempTable.item.value('ID_HEADER[1]', 'bigint'),-1)
,@ID_BARANG=isnull(tempTable.item.value('ID_BARANG[1]', 'bigint'),-1)
,@BM_ID=isnull(tempTable.item.value('BM_ID[1]', 'bigint'),-1)
,@BM=dbo.StrToDec2(isnull( tempTable.item.value('BM[1]', 'varchar(255)'),'0'))
,@PPNBM_ID=isnull(tempTable.item.value('PPNBM_ID[1]', 'bigint'),-1)
,@PPNBM=dbo.StrToDec2(isnull( tempTable.item.value('PPNBM[1]', 'varchar(255)'),'0'))
,@PPH_ID=isnull(tempTable.item.value('PPH_ID[1]', 'bigint'),-1)
,@PPH=dbo.StrToDec2(isnull( tempTable.item.value('PPH[1]', 'varchar(255)'),'0'))
,@PPN_ID=isnull(tempTable.item.value('PPN_ID[1]', 'bigint'),-1)
,@PPN=dbo.StrToDec2(isnull( tempTable.item.value('PPN[1]', 'varchar(255)'),'0'))
,@series=left(ltrim(rtrim(isnull(tempTable.item.value('series[1]', 'varchar(305)'),''))),255)
,@TAHUN_PEMBUATAN=dbo.str_to_date(isnull(tempTable.item.value('TAHUN_PEMBUATAN[1]', 'varchar(255)'),''))
,@po_no=left(ltrim(rtrim(isnull(tempTable.item.value('po_no[1]', 'varchar(305)'),''))),255)
,@po_date=dbo.str_to_date(isnull(tempTable.item.value('po_date[1]', 'varchar(255)'),''))
FROM @PARAMETER.nodes('param/field')  tempTable(item)
 

exec  MG_CHECK_USER @data_by, 0, @xStsno output,@xStsdes output; 
if @xStsno <>'00' 
goto f ;

--- CHECK HEADER

declare @h_ID_HEADER bigint
,@h_status_tpb_in_id int
,@h_status_tpb_in_name varchar(255)
,@h_mode_source int
,@h_KODE_DOKUMEN_PABEAN varchar(255)
,@h_NDPBM decimal(18,4)
SELECT  TOP(1)      
  @h_ID_HEADER=dt_ms_tpb_in_header.ID_HEADER
, @h_status_tpb_in_id=dt_ms_tpb_in_header_h_status.status_tpb_in_id
, @h_status_tpb_in_name=enum_ms_status_tpb_in.status_tpb_in_name
, @h_mode_source=dt_ms_tpb_in_header.mode_source
, @h_KODE_DOKUMEN_PABEAN=dt_ms_tpb_in_header.KODE_DOKUMEN_PABEAN
, @h_NDPBM=isnull(dt_ms_tpb_in_header.NDPBM ,1)
FROM            dt_ms_tpb_in_header INNER JOIN
                         dt_ms_tpb_in_header_h_status ON dt_ms_tpb_in_header.dt_ms_tpb_in_header_h_status_id = dt_ms_tpb_in_header_h_status.dt_ms_tpb_in_header_h_status_id INNER JOIN
                         enum_ms_status_tpb_in ON dt_ms_tpb_in_header_h_status.status_tpb_in_id = enum_ms_status_tpb_in.status_tpb_in_id
WHERE        (dt_ms_tpb_in_header.ID_HEADER = @ID_HEADER)

if @h_ID_HEADER is null
begin
 set @xStsno='02';
 set @xStsdes='Gagal, Pilih Dokumen' ;
goto f
end


if not(@h_status_tpb_in_id=0 or @h_status_tpb_in_id=2)
begin
 set @xStsno='02';
 set @xStsdes='Gagal, Dokumen dengan status ' + @h_status_tpb_in_name + ' tidak bisa di edit' ;
goto f
end

--- CHECK BARANG
declare @i_ms_item_id bigint
,@i_ms_type_id int
,@i_ms_item_custom_no varchar(255)
,@i_ms_item_custom_name varchar(255)
,@i_base_no varchar(255)
,@i_part_no varchar(255)
,@i_part_name varchar(255)
,@i_uom varchar(255)

SELECT  TOP (1)      
@i_ms_item_id=dt_ms_item.ms_item_id
,@i_ms_type_id= dt_ms_item.ms_type_id
,@i_ms_item_custom_no= dt_ms_item.ms_item_custom_no
,@i_ms_item_custom_name= dt_ms_item_custom.ms_item_custom_name
,@i_base_no= dt_ms_item.ms_item_base_no
,@i_part_no= dt_ms_item.part_no
,@i_part_name= dt_ms_item.part_name
,@i_uom= dt_ms_item.uom
FROM            dt_ms_item INNER JOIN
                         dt_ms_item_custom ON dt_ms_item.ms_item_custom_no = dt_ms_item_custom.ms_item_custom_no
WHERE        (dt_ms_item.ms_item_id = @ms_item_id)
 
--- CHECK KEMASAN
  
if @i_ms_item_id is null
begin
 set @xStsno='02';
 set @xStsdes='Gagal, Item tidak di temukan' ;
goto f
end

 
if @i_ms_item_id is null
begin
 set @xStsno='02';
 set @xStsdes='Gagal, Item tidak di temukan' ;
goto f
end


if @KODE_KEMASAN =''
begin
 set @xStsno='02';
 set @xStsdes='Gagal, Kode kemasan tidak boleh kosong' ;
goto f
end



if (SELECT        COUNT(*) AS Expr1
FROM            tblKemasan
WHERE        (KDEDI = @KODE_KEMASAN))=0
begin
 set @xStsno='02';
 set @xStsdes='Gagal, Kode kemasan ' +@KODE_KEMASAN+ ' tidak terdaftar' ;
goto f
end


--if @JUMLAH_KEMASAN <=0
--begin
-- set @xStsno='02';
-- set @xStsdes='Gagal, Jumlah Kemasan harus lebih besar dari 0' ;
--goto f
--end


if @HARGA_PENYERAHAN <=0
begin
 set @xStsno='02';
 set @xStsdes='Gagal, Total Harga harus lebih besar dari 0' ;
goto f
end



if @JUMLAH_SATUAN <=0
begin
 set @xStsno='02';
 set @xStsdes='Gagal, Jumlah Barang harus lebih besar dari 0' ;
goto f
end


if @POS_TARIF ='' and not(@h_KODE_DOKUMEN_PABEAN='40')
begin
 set @xStsno='02';
 set @xStsdes='Gagal, HS tidak boleh kosong' ;
goto f
end

 
 
 declare @ms_tpb_in_barang_id bigint

 declare @check_BM decimal(18,2)
,@check_BM_ID bigint
,@check_PPNBM decimal(18,2)
,@check_PPNBM_ID bigint
,@check_PPH decimal(18,2)
,@check_PPH_ID bigint
,@check_PPN decimal(18,2)
,@check_PPN_ID bigint
,@check_is_get bit
,@check_mode_source int
,@check_mode_source_name varchar(255)
,@check_header_mode_source  int


SELECT top (1)  @check_BM=     BM
,@check_BM_ID= BM_ID
,@check_PPNBM= PPNBM
,@check_PPNBM_ID= PPNBM_ID
,@check_PPH= PPH
,@check_PPH_ID= PPH_ID
,@check_PPN= PPN
,@check_PPN_ID= PPN_ID
,@check_is_get= is_get
,@check_mode_source= mode_source
,@check_mode_source_name= mode_source_name
,@check_header_mode_source= header_mode_source
FROM            vw_ms_header_bc_in_item
WHERE        (ms_tpb_in_barang_id = @ID_BARANG)
 
 if @SERI_BARANG =-1
 begin
 set @SERI_BARANG = isnull((select max(SERI_BARANG) from dt_ms_tpb_in_barang where ID_HEADER=@ID_HEADER),0) +1
 end

BEGIN TRANSACTION;    

if @check_is_get=0 
begin 
 UPDATE dt_ms_tpb_in_barang
 set  
   CIF= case when @h_KODE_DOKUMEN_PABEAN ='23' or  @h_KODE_DOKUMEN_PABEAN ='262' or  @h_KODE_DOKUMEN_PABEAN ='271' then @HARGA_PENYERAHAN else 0 end --CIF
    , CIF_RUPIAH= case when @h_KODE_DOKUMEN_PABEAN ='23' or  @h_KODE_DOKUMEN_PABEAN ='262' or  @h_KODE_DOKUMEN_PABEAN ='271'  then @HARGA_PENYERAHAN * @h_NDPBM else null end --CIF_RUPIAH
 , HARGA_PENYERAHAN= case when @h_KODE_DOKUMEN_PABEAN ='40' then @HARGA_PENYERAHAN  else 0 end-- HARGA_PENYERAHAN
 , FOB= case when @h_KODE_DOKUMEN_PABEAN ='23' then @HARGA_PENYERAHAN else 0 end ---FOB
 , HARGA_INVOICE= case when @h_KODE_DOKUMEN_PABEAN ='23' then @HARGA_PENYERAHAN else 0 end ---HARGA_INVOICE
 , JUMLAH_KEMASAN= @JUMLAH_KEMASAN--JUMLAH_KEMASAN
 , JUMLAH_SATUAN= @JUMLAH_SATUAN--JUMLAH_SATUAN
 , HARGA_SATUAN= @HARGA_PENYERAHAN/@JUMLAH_SATUAN--HARGA_SATUAN
 , KODE_BARANG=@i_part_no--KODE_BARANG
 , KODE_KEMASAN= @KODE_KEMASAN--KODE_KEMASAN
 , KODE_SATUAN=@i_uom  --KODE_SATUAN
 , NETTO= @NETTO --NETTO
 , POS_TARIF=@POS_TARIF
 , SERI_BARANG=@SERI_BARANG
 , URAIAN= @i_part_name  --URAIAN
 , VOLUME=@VOLUME
 , mapping_ms_item_id=@ms_item_id
 , qty_pakai=@JUMLAH_SATUAN--qty_pakai
 , TIPE=@i_ms_item_custom_no  --TIPE
 , modify_date=@now
 , modify_by=@data_by 
 , series =@series
 , po_no =@po_no 
 , po_date =@po_date
  ,TAHUN_PEMBUATAN =@TAHUN_PEMBUATAN
 , mapping_date=case when mapping_ms_item_id=@ms_item_id then mapping_date else @now end 
 , mapping_by =case when mapping_ms_item_id=@ms_item_id then mapping_by else @data_by end 
 where ID=@ID_BARANG
 

  
  if (@h_KODE_DOKUMEN_PABEAN='23')
  begin 
  
    declare @HARGA_PENYERAHAN_RUPIAH decimal(38,4)= (@HARGA_PENYERAHAN * @h_NDPBM) 
    declare @nilai_BM decimal(38,4)=0

    if (@BM>0)
   set @nilai_BM=((@HARGA_PENYERAHAN * @h_NDPBM) * @BM )/100

    

   if (@BM>0)
   begin 
    if @check_BM_ID=-1
     INSERT INTO dt_ms_tpb_in_barang_tarif
         (JENIS_TARIF  
         , KODE_FASILITAS
          , KODE_SATUAN
         , KODE_TARIF
         , NILAI_BAYAR
         , NILAI_FASILITAS
         , NILAI_SUDAH_DILUNASI 
         , TARIF
         , TARIF_FASILITAS 
         , ID_BARANG
         , ID_HEADER
         )
      values(  'BM'     -- JENIS_TARIF
       ,  2      --KODE_FASILITAS
       , null      --KODE_SATUAN
       ,1--KODE_TARIF
       ,((@HARGA_PENYERAHAN * @h_NDPBM) * @BM )/100  --NILAI_BAYAR
       ,0        --NILAI_FASILITAS
       ,0        --NILAI_SUDAH_DILUNASI
       ,@BM    --TARIF
       ,100        --TARIF_FASILITAS
       ,@ID_BARANG  --ID_BARANG
       ,@ID_HEADER     --ID_HEADER
      )  
    else 
     UPDATE       dt_ms_tpb_in_barang_tarif
     SET                NILAI_BAYAR = @HARGA_PENYERAHAN * @h_NDPBM * @BM / 100, TARIF = @BM
     WHERE        (ID = @check_BM_ID)

   end
   else
   begin
    if not(@check_BM_ID=-1)
    delete from dt_ms_tpb_in_barang_tarif where ID =@check_BM_ID

   end 

   if (@PPNBM>0)
   begin 
    if @check_PPNBM_ID=-1
     INSERT INTO dt_ms_tpb_in_barang_tarif
      (JENIS_TARIF  
      , KODE_FASILITAS
       , KODE_SATUAN
      , KODE_TARIF
      , NILAI_BAYAR
      , NILAI_FASILITAS
      , NILAI_SUDAH_DILUNASI 
      , TARIF
      , TARIF_FASILITAS 
      , ID_BARANG
      , ID_HEADER
      )
     values(  'PPNBM'     -- JENIS_TARIF
      , 5         --KODE_FASILITAS
       ,null       --KODE_SATUAN
      ,null       --KODE_TARIF
      ,((@HARGA_PENYERAHAN_RUPIAH +@nilai_BM) * @PPNBM)/100  --NILAI_BAYAR
      ,0        --NILAI_FASILITAS
      ,0        --NILAI_SUDAH_DILUNASI
      ,@PPNBM     --TARIF
      ,100        --TARIF_FASILITAS
      ,@ID_BARANG  --ID_BARANG
      ,@ID_HEADER     --ID_HEADER
     )   ;
    else 
     UPDATE       dt_ms_tpb_in_barang_tarif
     SET                NILAI_BAYAR = (@HARGA_PENYERAHAN_RUPIAH +@nilai_BM) * @PPNBM / 100, TARIF = @PPNBM
     WHERE        (ID = @check_PPNBM_ID)

   end
   else
   begin
    if not(@check_PPNBM_ID=-1)
    delete from dt_ms_tpb_in_barang_tarif where ID =@check_PPNBM_ID 
   end

   if (@PPN>0)
   begin 
    if @check_PPN_ID=-1
     INSERT INTO dt_ms_tpb_in_barang_tarif
      (JENIS_TARIF  
      , KODE_FASILITAS
       , KODE_SATUAN
      , KODE_TARIF
      , NILAI_BAYAR
      , NILAI_FASILITAS
      , NILAI_SUDAH_DILUNASI 
      , TARIF
      , TARIF_FASILITAS 
      , ID_BARANG
      , ID_HEADER
      )
     values(  'PPN'     -- JENIS_TARIF
      , 5         --KODE_FASILITAS
       ,null       --KODE_SATUAN
      ,null       --KODE_TARIF
      ,((@HARGA_PENYERAHAN_RUPIAH +@nilai_BM) * @PPN)/100  --NILAI_BAYAR
      ,0        --NILAI_FASILITAS
      ,0        --NILAI_SUDAH_DILUNASI
      ,@PPN     --TARIF
      ,100        --TARIF_FASILITAS
      ,@ID_BARANG  --ID_BARANG
      ,@ID_HEADER     --ID_HEADER
     )   ;
    else 
     UPDATE       dt_ms_tpb_in_barang_tarif
     SET                NILAI_BAYAR = (@HARGA_PENYERAHAN_RUPIAH +@nilai_BM) * @PPN / 100, TARIF = @PPN
     WHERE        (ID = @check_PPN_ID)

   end
   else
   begin
    if not(@check_PPN_ID=-1)
    delete from dt_ms_tpb_in_barang_tarif where ID =@check_PPN_ID 
   end
    
   
   if (@PPH>0)
   begin 
    if @check_PPN_ID=-1
     INSERT INTO dt_ms_tpb_in_barang_tarif
      (JENIS_TARIF  
      , KODE_FASILITAS
       , KODE_SATUAN
      , KODE_TARIF
      , NILAI_BAYAR
      , NILAI_FASILITAS
      , NILAI_SUDAH_DILUNASI 
      , TARIF
      , TARIF_FASILITAS 
      , ID_BARANG
      , ID_HEADER
      )
     values(  'PPH'     -- JENIS_TARIF
      , 5         --KODE_FASILITAS
       ,null       --KODE_SATUAN
      ,null--KODE_TARIF
      ,((@HARGA_PENYERAHAN_RUPIAH +@nilai_BM) * @PPH)/100  --NILAI_BAYAR
      ,0        --NILAI_FASILITAS
      ,0        --NILAI_SUDAH_DILUNASI
      ,@PPH     --TARIF
      ,100        --TARIF_FASILITAS
      ,@ID_BARANG  --ID_BARANG
      ,@ID_HEADER     --ID_HEADER
     )   ;
    else 
     UPDATE       dt_ms_tpb_in_barang_tarif
     SET                NILAI_BAYAR = (@HARGA_PENYERAHAN_RUPIAH +@nilai_BM) * @PPH / 100, TARIF = @PPH
     WHERE        (ID = @check_PPH_ID)

   end
   else
   begin
    if not(@check_PPH_ID=-1)
    delete from dt_ms_tpb_in_barang_tarif where ID =@check_PPH_ID 
   end
     
   

  end

end
else
begin
 UPDATE dt_ms_tpb_in_barang
 set  mapping_ms_item_id=@ms_item_id
 , qty_pakai=@JUMLAH_SATUAN--qty_pakai
 ,series =@series
 ,TAHUN_PEMBUATAN =@TAHUN_PEMBUATAN
 ,po_no =@po_no 
 ,po_date =@po_date
 , modify_date=@now
 , modify_by=@data_by
 , mapping_date=case when mapping_ms_item_id=@ms_item_id then mapping_date else @now end 
 , mapping_by =case when mapping_ms_item_id=@ms_item_id then mapping_by else @data_by end 
 where ID=@ID_BARANG 
end





COMMIT TRANSACTION;
  declare @detail xml
-- set @detail =(
-- select
-- ID_HEADER AS rID
--, status_tpb_in_name AS r1
--, mode_source_name AS r2
--, CUST_CODE AS r26
--, mode_source AS r27
--, status_tpb_in_id AS r30
--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_ITEM_EDIT
--'12json2::163375562.3816.0000ZZ0.52508466940012JP10.000.002.5010.00
--'
GO

Used By

No items found