dbo.MG_MS_ITEM_ADD

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_ITEM_ADD
@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)
,@ms_type_id int
,@ms_item_custom_no varchar(50)
,@base_no varchar(50)
,@part_no varchar(50)
,@part_name varchar(255)
,@rack_no varchar(255)
,@uom varchar(3)
,@consumable bit

DECLARE  
 @qty_minimum decimal(38,4)
,@end_qty decimal(38,4)
,@end_price_usd decimal(38,4)
,@service_level decimal(18,4)


SELECT 
 @data_by=left(ltrim(rtrim(isnull(tempTable.item.value('data_by[1]', 'varchar(100)'),''))),50)
,@ms_type_id=isnull(tempTable.item.value('ms_type_id[1]', 'int'),-1)
,@ms_item_custom_no=left(ltrim(rtrim(isnull(tempTable.item.value('ms_item_custom_no[1]', 'varchar(100)'),''))),50)
,@base_no=left(ltrim(rtrim(isnull(tempTable.item.value('base_no[1]', 'varchar(100)'),''))),50)
,@part_no=left(ltrim(rtrim(isnull(tempTable.item.value('part_no[1]', 'varchar(100)'),''))),50)
,@part_name=left(ltrim(rtrim(isnull(tempTable.item.value('part_name[1]', 'varchar(305)'),''))),255)
,@rack_no=left(ltrim(rtrim(isnull(tempTable.item.value('rack_no[1]', 'varchar(305)'),''))),255)
,@uom=left(ltrim(rtrim(isnull(tempTable.item.value('uom[1]', 'varchar(53)'),''))),3)
,@consumable=isnull(tempTable.item.value('consumable[1]', 'bit'),0)
,@qty_minimum=dbo.StrToDec4(isnull( tempTable.item.value('qty_minimum[1]', 'decimal(38,4)'),'0'))
,@end_qty=dbo.StrToDec4(isnull( tempTable.item.value('end_qty[1]', 'decimal(38,4)'),'0'))
,@end_price_usd=dbo.StrToDec4(isnull( tempTable.item.value('end_price[1]', 'decimal(38,4)'),'0'))
,@service_level=dbo.StrToDec4(isnull( tempTable.item.value('service_level[1]', 'decimal(38,4)'),'80'))
FROM @PARAMETER.nodes('param/field')  tempTable(item)

if @ms_type_id=-1 
begin
 set @xStsno='02';
 set @xStsdes='Gagal, Type barang tidak terdaftar' ;
goto f
end

if (SELECT        COUNT(*) AS Expr1
FROM            enum_ms_type 
WHERE        (ms_type_id = @ms_type_id))=0
begin
 set @xStsno='02';
 set @xStsdes='Gagal, Type barang tidak terdaftar' ;
goto f
end
if @part_no=''
begin
 set @xStsno='02';
 set @xStsdes='Gagal, Part No tidak boleh kosong' ;
goto f
end

if @part_name=''
begin
 set @xStsno='02';
 set @xStsdes='Gagal, Part Name tidak boleh kosong' ;
goto f
end


if @ms_item_custom_no=''
begin
 set @xStsno='02';
 set @xStsdes='Gagal, Part Custom tidak boleh kosong' ;
goto f
end 

if (SELECT        COUNT(*) AS Expr1
FROM            dt_ms_item_custom
WHERE        (ms_item_custom_no = @ms_item_custom_no))=0
begin
 set @xStsno='02';
 set @xStsdes='Gagal, Part Custom ' + @ms_item_custom_no +' tidak terdaftar, gunakan part custom yang terdaftar dalam data part custom' ;
goto f
end
 
if not(@base_no='') and ( SELECT        COUNT(*) AS Expr1
FROM            dt_ms_item_base
WHERE        (ms_item_base_no = @base_no))=0 
begin 
 set @xStsno='02';
 set @xStsdes='Gagal, Base Part No ' + @base_no +' tidak terdaftar ' ;
goto f
end 

if @uom=''
begin
 set @xStsno='02';
 set @xStsdes='Gagal, Satuan tidak boleh kosong' ;
goto f
end 
if (SELECT        COUNT(*) AS Expr1
FROM            tblSatuan 
WHERE        (KdEdi  = @uom))=0
begin
 set @xStsno='02';
 set @xStsdes='Gagal, Kode Satuan' + @ms_item_custom_no +' tidak terdaftar, gunakan Kode satuan yang terdaftar';
goto f
end


--- CHECK APAKAH SUDAH ADA POSTING FINAL AVG
if (SELECT        COUNT(*) AS Expr1
FROM            vw_ms_item_final_avg
WHERE        (NOT (ms_cost_final_avg_status_id = - 1)) AND (NOT (ms_cost_final_avg_id = 0))
)>0
begin 
 if @end_qty>0
 begin
  set @xStsno='02';
  set @xStsdes='Gagal, Apabila Ada POSTING FINAL AVG maka nilai Quantity Awal harus =0';
 goto f
 end 
 if @end_price_usd>0
 begin
  set @xStsno='02';
  set @xStsdes='Gagal, Apabila Ada POSTING FINAL AVG maka nilai Price Awal harus =0';
 goto f
 end 
end




declare @check_ms_item_id bigint
,@check_ms_type_id int
,@check_ms_type_name varchar(255)
,@check_part_no varchar(255)
,@check_part_name varchar(255)

SELECT TOP (1)       
 @check_ms_item_id=dt_ms_item.ms_item_id
, @check_ms_type_id=dt_ms_item.ms_type_id
, @check_ms_type_name=enum_ms_type.ms_type_name
, @check_part_no=dt_ms_item.part_no
, @check_part_name=dt_ms_item.part_name
FROM            dt_ms_item INNER JOIN
                         enum_ms_type ON dt_ms_item.ms_type_id = enum_ms_type.ms_type_id
WHERE        (dt_ms_item.part_no = @part_no)
 
if @check_ms_item_id is not null
begin
 set @xStsno='02';
 set @xStsdes='Gagal, Part no ' + @part_no +' sudah ada dalam data barang '+ @check_ms_type_name +' dengan part name '+ @check_part_name +', gunakan part no lainnya' ;
goto f
end
 
 
declare @date_end_sta date, @ms_date_business_id_sta bigint
SELECT     @date_end_sta=   end_date
,@ms_date_business_id_sta=        dt_ms_date_business.ms_date_business_id
FROM            dt_ms_cost_final_avg INNER JOIN
                         dt_ms_date_business ON dt_ms_cost_final_avg.end_date = dt_ms_date_business.ms_date_business
WHERE        (dt_ms_cost_final_avg.ms_cost_final_avg_id = 0)

declare @ms_item_id bigint,@ms_item_h_status_id bigint
declare @ms_item_list_price_id bigint
BEGIN TRANSACTION;    
 

INSERT INTO dt_ms_item
                         (ms_type_id, ms_item_custom_no, ms_item_base_no, part_no, part_name, uom, consumable, create_date, create_by, modify_date, modify_by, qty_minimum,service_level,rack_no )
VALUES        (@ms_type_id,@ms_item_custom_no,@base_no,@part_no,@part_name,@uom,@consumable,@now,@data_by,@now,@data_by,@qty_minimum,@service_level,@rack_no )
set @ms_item_id=SCOPE_IDENTITY();

INSERT INTO dt_ms_item_h_status
                         (ms_item_id, ms_item_status_id, status_info, create_date, create_by)
VALUES        (@ms_item_id, 1, N'',@now,@data_by)
set @ms_item_h_status_id=SCOPE_IDENTITY();
 

 --- MASUKAN STA AWAL----
INSERT INTO dt_ms_item_list_price
                         (ms_cost_final_avg_id, ms_item_id, end_qty, end_price_usd , end_price, create_date, create_by, modify_date, modify_by)

VALUES        (0,@ms_item_id,@end_qty,@end_price_usd, case when @end_price_usd =0  then 0 else @end_price_usd/dbo.get_rate_valuta(@date_end_sta,'USD') end,@now,@data_by,@now,@data_by)
set @ms_item_list_price_id= SCOPE_IDENTITY();
 
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)
VALUES        (@ms_date_business_id_sta,@ms_item_id,@end_qty,case when @end_price_usd =0  then 0 else @end_price_usd*dbo.get_rate_valuta(@date_end_sta,'USD') end,@end_price_usd,@ms_item_list_price_id,0)


INSERT INTO dt_ms_mutasi_item
                         (ms_cost_final_avg_id, ms_item_id, qty_end, qty_adjutment)
values(0, @ms_item_id, @end_qty, 0)
 
update dt_ms_item
set ms_item_h_status_id=@ms_item_h_status_id
where ms_item_id=@ms_item_id

COMMIT TRANSACTION;
  
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 ,'')   for xml path ('result')
)  as XML)  as dt

--GO

--EXEC MG_MS_ITEM_ADD
--'12json2::1ABA0127810007'
GO

Used By

No items found