NJC__Documentation::DB

dbo.MS_MS_ITEM_FINAL_AVG_REPORT_ALL

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.MS_MS_ITEM_FINAL_AVG_REPORT_ALL
@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 @DocHandle int; 
declare @xml_tmp xml

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)
,@business_date date  
,@header_id bigint
,@with_detail_daily bit

SELECT 
 @data_by=left(ltrim(rtrim(isnull(tempTable.item.value('data_by[1]', 'varchar(100)'),''))),50) 
,@header_id=isnull(tempTable.item.value('header_id[1]', 'bigint'),-1) 
,@business_date =dbo.str_to_date( isnull(tempTable.item.value('end_date[1]', 'varchar(305)'),'20170808'))
,@with_detail_daily = isnull(tempTable.item.value('with_detail_daily[1]', 'bit'),'0')
 FROM @PARAMETER.nodes('param/field')  tempTable(item)   
 
declare @data_in_from_retur xml
declare @data_in_from_bc xml 
declare @data_in_from_adjustment xml 
declare @data_in_from_sto xml
declare @data_out_carline xml
declare @data_out_memo xml
--declare @data_out_adjustment xml
--declare @data_out_sto xml
declare @data_category xml 
declare @raw_io_item xml  
declare @data_in_supplier_local xml  
declare @data_in_supplier_import xml  
declare @data_item_moving xml
declare @data_month_moving xml


declare @tp_ms_item_avg_pre as tp_ms_item_avg_pre     
declare @tp_ms_item_moving as tp_ms_item_moving      
declare @tp_month_moving as tp_month_moving      
declare @tp_ms_avg_to_sto tp_ms_avg_to_sto
declare @tp_ms_avg_to_adjustment tp_ms_avg_to_adjustment
declare @tp_ms_avg_stock_to_memo tp_ms_avg_stock_to_memo 
declare @tp_ms_item_out_to_carline tp_ms_item_out_to_carline 

declare @tp_ms_avg_in_from_sto tp_ms_avg_in_from_sto
declare @tp_ms_avg_in_from_adjustment tp_ms_avg_in_from_adjustment
declare @tp_ms_avg_in_from_retur tp_ms_avg_in_from_retur
declare @tp_ms_avg_in_from_bc tp_ms_avg_in_from_bc 

declare @tp_ms_in_by_supplier_local tp_ms_in_by_supplier_local 
declare @tp_ms_in_by_supplier_import tp_ms_in_by_supplier_import 
  
declare @tp_ms_avg_catergory_detail_in_out tp_ms_avg_catergory_detail_in_out

declare @REPORT_NAME varchar(255)
declare @REPORT_START date
declare @REPORT_STOP date=@business_date

declare @end_date_sta date 
declare @ms_date_business_id_sta bigint

if @header_id=-1
begin   
  SELECT  top 1 
   @end_date_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 INNER JOIN
        dt_ms_cost_final_avg_h_status ON dt_ms_cost_final_avg.ms_cost_final_avg_h_status_id = dt_ms_cost_final_avg_h_status.ms_cost_final_avg_h_status_id
  WHERE        (NOT (dt_ms_cost_final_avg.ms_cost_final_avg_id = 0)) AND (NOT (dt_ms_cost_final_avg_h_status.ms_cost_final_avg_status_id = - 1))
  ORDER BY dt_ms_cost_final_avg.end_date DESC
   
  if @end_date_sta is null
  begin  
   SELECT  top 1 
    @end_date_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) 
   ORDER BY dt_ms_cost_final_avg.end_date DESC  
  end

 set @REPORT_START= dateadd(day,1,@end_date_sta ) 
    set @REPORT_NAME='Draft ' + dbo.dateToIndStr(@REPORT_START) + ' until ' + dbo.dateToIndStr(@REPORT_STOP)
   
   
 --- LIST DETAIL IN DARI RETUR

 insert into @tp_ms_avg_in_from_retur (
   ms_in_item_detail_id   
   , category_id  
   , category_name  
   , ms_date_business_id  
   , ms_date_business_id_from  
   , ms_item_id  
   , part_no 
   , part_name  
   , qty_pakai   
   , UOM    
   ,retur_no   
   ,retur_date   
   ,retur_info   
   ,is_adjustment     
 )
  SELECT  
   dt_ms_item_in_detail.ms_in_item_detail_id 
   ,isnull( dt_ms_item_base_h_report_car_line_sum.ms_report_car_line_sum_id,-1) as category_id
   , isnull(dt_ms_report_car_line_sum.ms_report_car_line_sum_name     ,'') as  category_name  
   ,dt_ms_item_in_detail.ms_date_business_id
   ,dt_ms_item_in_detail.ms_date_business_id_from 
   ,dt_ms_item_in_detail.ms_item_id
   ,dt_ms_item.part_no
   ,dt_ms_item.part_name
   ,dt_ms_item_in_detail.quantity_pakai as  qty_pakai
   ,dt_ms_item.uom
   --,dt_ms_item_in_detail.total_amont_idr as ori_amount_idr
   --,dt_ms_item_in_detail.total_amont_usd as ori_amount_usd
    ,dt_ms_production_retur.retur_no 
   ,dt_ms_production_retur.retur_date  
   ,dt_ms_production_retur_detail.retur_info 
   ,dt_ms_item_in_detail.is_adjustment  
  FROM            dt_ms_item_base_h_report_car_line_sum INNER JOIN
                         dt_ms_report_car_line_sum ON dt_ms_item_base_h_report_car_line_sum.ms_report_car_line_sum_id = dt_ms_report_car_line_sum.ms_report_car_line_sum_id RIGHT OUTER JOIN
                         dt_ms_item_base ON dt_ms_item_base_h_report_car_line_sum.ms_item_base_h_report_car_line_sum_id = dt_ms_item_base.ms_item_base_h_report_car_line_sum_id RIGHT OUTER JOIN
                         dt_ms_production_retur_h_status INNER JOIN
                         dt_ms_production_retur ON dt_ms_production_retur_h_status.ms_production_retur_h_status_id = dt_ms_production_retur.ms_production_retur_h_status_id INNER JOIN
                         dt_ms_production_retur_detail ON dt_ms_production_retur.ms_production_retur_id = dt_ms_production_retur_detail.ms_production_retur_id INNER JOIN
                         dt_ms_item_daily_in_move_avg INNER JOIN
                         dt_ms_item_in_detail ON dt_ms_item_daily_in_move_avg.ms_item_in_move_avg_id = dt_ms_item_in_detail.ms_item_in_move_avg_id ON 
                         dt_ms_production_retur_detail.ms_production_retur_detail_id = dt_ms_item_in_detail.id_source 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 INNER JOIN
                         dt_ms_item ON dt_ms_item_in_detail.ms_item_id = dt_ms_item.ms_item_id ON dt_ms_item_base.ms_item_base_no = dt_ms_item.ms_item_base_no AND dt_ms_item_base.ms_item_base_no = dt_ms_item.ms_item_base_no
         WHERE        
  (dt_ms_production_retur_h_status.status_production_retur_id = 1) 
  AND ((dt_ms_item_in_detail.mode_source =5 )) 
  AND (dt_ms_item_in_detail.is_adjustment=1) 
  AND (dt_ms_item_daily_in_move_avg.ms_item_h_price_id = - 1 OR dt_ms_item_daily_in_move_avg.ms_item_h_price_id IS NULL)
  AND (dt_ms_date_business.ms_date_business <= @business_date and dt_ms_date_business.ms_date_business >@end_date_sta) 
  AND (( NULLIF (dt_ms_item_daily_in_move_avg.price_avg_move_idr, 0) IS NOT NULL AND dt_ms_item_daily_in_move_avg.ms_cost_final_avg_id <>0) )
  AND (( NULLIF (dt_ms_item_daily_in_move_avg.price_avg_move_usd, 0) IS NOT NULL AND dt_ms_item_daily_in_move_avg.ms_cost_final_avg_id <>0))
  AND (( NULLIF (dt_ms_item_daily_in_move_avg.total_qty_avg_move, 0) IS NOT NULL AND dt_ms_item_daily_in_move_avg.ms_cost_final_avg_id <>0)   )
  AND (dt_ms_item_daily_in_move_avg.ms_cost_final_avg_id=-1 or dt_ms_item_daily_in_move_avg.ms_cost_final_avg_id is null)

 ---DATA DATA OUTGOING
 
 ---- LIST ITEM OUT TO CAR LINE
 insert into @tp_ms_item_out_to_carline   (  
   category_id 
 , category_name   
 , doc_no 
 , doc_date  
 , doc_info  
 , ms_type_prosses_id  
  ,ms_type_prosses_name  
 , ms_car_line_no  
 , ms_car_line_name   
 , ms_item_id 
 , part_no   
 , part_name      
 , ms_car_line_group_id 
 , ms_car_line_group  
 , remark   
 , is_adjustment 
 , qty_total    
 , ms_date_business_id
 , ms_date_business_id_from
 , teknisi_code
 , teknisi_name
 )  


 ---- RUMUS PENGELUARAN KE CAR LINE
 SELECT         
      isnull(dt_ms_item_base_h_report_car_line_sum.ms_report_car_line_sum_id,-1) as category_id
 , isnull(dt_ms_report_car_line_sum.ms_report_car_line_sum_name,'')  as category_name 
  , dt_ms_car_line_out_header.doc_no
 , dt_ms_car_line_out_header.doc_date
 , dt_ms_car_line_out_header.doc_info
 , isnull(dt_ms_type_prosses.ms_type_prosses_id,-1) as ms_type_prosses_id
 , isnull(dt_ms_type_prosses.ms_type_prosses_name ,'OTHERS') as ms_type_prosses_name
 , dt_ms_car_line.ms_car_line_no
 , dt_ms_car_line.ms_car_line_name 
 , dt_ms_item.ms_item_id  
 , dt_ms_item.part_no 
 , dt_ms_item.part_name 
 , dt_ms_car_line.ms_car_line_group_id 
 , dt_ms_car_line_group.ms_car_line_group
 , dt_ms_car_line_out_detail.info 
 , isnull(dt_ms_car_line_out_header.is_move_business_date ,0) 
 , vw_ms_out_car_line_detail_sum_supply.total_supply as qty_total 
 , dt_ms_car_line_out_header.ms_date_business_id  
 , dt_ms_car_line_out_header.ms_date_business_id_from 
 , isnull(dt_ms_teknisi.teknisi_code,dt_ms_car_line_out_header.teknisi) as teknisi_code
 , isnull(dt_ms_teknisi.teknisi_name,dt_ms_car_line_out_header.teknisi) as teknisi_name
FROM            dt_ms_car_line INNER JOIN
                         dt_ms_date_business INNER JOIN
                         dt_ms_car_line_out_header INNER JOIN
                         dt_ms_car_line_out_header_h_status ON dt_ms_car_line_out_header.ms_car_line_out_header_h_status_id = dt_ms_car_line_out_header_h_status.ms_car_line_out_header_h_status_id INNER JOIN
                         dt_ms_car_line_out_detail ON dt_ms_car_line_out_header.ms_car_line_out_header_id = dt_ms_car_line_out_detail.ms_car_line_out_header_id INNER JOIN
                         dt_ms_item_daily_out_move_avg ON dt_ms_car_line_out_detail.ms_item_out_move_avg_id = dt_ms_item_daily_out_move_avg.ms_item_out_move_avg_id ON 
                         dt_ms_date_business.ms_date_business_id = dt_ms_item_daily_out_move_avg.ms_date_business_id INNER JOIN
                         vw_ms_out_car_line_detail_sum_supply ON dt_ms_car_line_out_detail.ms_car_line_out_detail_id = vw_ms_out_car_line_detail_sum_supply.ms_car_line_out_detail_id INNER JOIN
                         dt_ms_item ON dt_ms_car_line_out_detail.ms_item_id = dt_ms_item.ms_item_id ON dt_ms_car_line.ms_car_line_no = dt_ms_car_line_out_header.ms_car_line_no INNER JOIN
                         dt_ms_car_line_group ON dt_ms_car_line.ms_car_line_group_id = dt_ms_car_line_group.ms_car_line_group_id LEFT OUTER JOIN
                         dt_ms_teknisi ON dt_ms_car_line_out_header.teknisi_id = dt_ms_teknisi.teknisi_id LEFT OUTER JOIN
                         dt_ms_item_base_h_report_car_line_sum INNER JOIN
                         dt_ms_item_base ON dt_ms_item_base_h_report_car_line_sum.ms_item_base_h_report_car_line_sum_id = dt_ms_item_base.ms_item_base_h_report_car_line_sum_id INNER JOIN
                         dt_ms_report_car_line_sum ON dt_ms_item_base_h_report_car_line_sum.ms_report_car_line_sum_id = dt_ms_report_car_line_sum.ms_report_car_line_sum_id ON 
                         dt_ms_item.ms_item_base_no = dt_ms_item_base.ms_item_base_no AND dt_ms_item.ms_item_base_no = dt_ms_item_base.ms_item_base_no LEFT OUTER JOIN
                         dt_ms_type_prosses ON dt_ms_car_line_out_header.ms_type_prosses_id = dt_ms_type_prosses.ms_type_prosses_id

           
  WHERE        
 (dt_ms_car_line_out_header_h_status.ms_car_line_out_header_status_id = 1) 
 AND (dt_ms_date_business.ms_date_business <= @business_date) and dt_ms_date_business.ms_date_business >@end_date_sta
 AND (dt_ms_item_daily_out_move_avg.ms_cost_final_avg_id=-1)
 ORDER BY 
 dt_ms_item_base_h_report_car_line_sum.ms_report_car_line_sum_id
 ,  dt_ms_car_line.ms_car_line_group_id
   
 ---- RUMUS PENGELUARAN KE MEMO

 insert into @tp_ms_avg_stock_to_memo (
   ms_memo_type_id 
  ,ms_memo_type_name 
  ,memo_code 
  ,memo_date 
  ,category_id 
  ,category_name 
  ,ms_item_id  
  ,part_no
  ,part_name 
  ,total_out 
  ,supplier_customer_id
  ,supplier_customer_code
  ,supplier_customer_name 
  ,is_affilete
  ,is_adjustment
 , ms_date_business_id
 , ms_date_business_id_from
  )

 SELECT  
   dt_ms_memo_header.ms_memo_type_id
 , enum_ms_memo_type.ms_memo_type_name
 , dt_ms_memo_header.doc_no 
 , dt_ms_memo_header.doc_date   
 , isnull(dt_ms_item_base_h_report_car_line_sum.ms_report_car_line_sum_id,-1) as category_id
 , isnull(dt_ms_report_car_line_sum.ms_report_car_line_sum_name,'')  as category_name 
 , dt_ms_item_in_detail.ms_item_id
 , dt_ms_item.part_no
 , dt_ms_item.part_name
 , SUM(dt_ms_memo_detail_supply.quantity) AS total_supply 
 , isnull(dt_ms_memo_header.ms_supplier_customer_id,-1) as ms_supplier_customer_id
 , isnull(dt_ms_supplier_customer.supplier_customer_code,'') as supplier_customer_code
 , isnull(dt_ms_supplier_customer.supplier_customer_name,'') as supplier_customer_name
 , isnull(dt_ms_supplier_customer.is_affilete,0) as is_affilete
 , isnull(dt_ms_memo_header.is_move_business_date ,0)
 , dt_ms_memo_header.ms_date_business_id  
 , dt_ms_memo_header.ms_date_business_id_from    

     FROM            enum_ms_memo_type INNER JOIN
                         dt_ms_item INNER JOIN
                         dt_ms_memo_detail_supply INNER JOIN
                         dt_ms_memo_detail ON dt_ms_memo_detail_supply.ms_memo_detail_id = dt_ms_memo_detail.ms_memo_detail_id INNER JOIN
                         dt_ms_memo_header ON dt_ms_memo_detail.ms_memo_header_id = dt_ms_memo_header.ms_memo_header_id INNER JOIN
                         dt_ms_memo_header_h_status ON dt_ms_memo_header.ms_memo_header_h_status_id = dt_ms_memo_header_h_status.ms_memo_header_h_status_id INNER JOIN
                         dt_ms_item_in_detail ON dt_ms_memo_detail_supply.supply_id_source = dt_ms_item_in_detail.ms_in_item_detail_id ON dt_ms_item.ms_item_id = dt_ms_item_in_detail.ms_item_id ON 
                         enum_ms_memo_type.ms_memo_type_id = dt_ms_memo_header.ms_memo_type_id INNER JOIN
                         dt_ms_item_daily_out_move_avg ON dt_ms_memo_detail.ms_item_out_move_avg_id = dt_ms_item_daily_out_move_avg.ms_item_out_move_avg_id INNER JOIN
                         dt_ms_date_business ON dt_ms_item_daily_out_move_avg.ms_date_business_id = dt_ms_date_business.ms_date_business_id INNER JOIN
                         dt_ms_item_base ON dt_ms_item.ms_item_base_no = dt_ms_item_base.ms_item_base_no AND dt_ms_item.ms_item_base_no = dt_ms_item_base.ms_item_base_no INNER JOIN
                         dt_ms_item_base_h_report_car_line_sum ON dt_ms_item_base.ms_item_base_h_report_car_line_sum_id = dt_ms_item_base_h_report_car_line_sum.ms_item_base_h_report_car_line_sum_id INNER JOIN
                         dt_ms_report_car_line_sum ON dt_ms_item_base_h_report_car_line_sum.ms_report_car_line_sum_id = dt_ms_report_car_line_sum.ms_report_car_line_sum_id LEFT OUTER JOIN
                         dt_ms_supplier_customer ON dt_ms_memo_header.ms_supplier_customer_id = dt_ms_supplier_customer.ms_supplier_customer_id
        WHERE        
  (dt_ms_memo_detail_supply.supply_mode_source = 0) 
  AND (dt_ms_memo_header_h_status.ms_memo_header_status_id = 1)
  AND (dt_ms_date_business.ms_date_business <= @business_date) and dt_ms_date_business.ms_date_business >@end_date_sta
     AND (dt_ms_item_daily_out_move_avg.ms_item_h_price_id IS NULL OR dt_ms_item_daily_out_move_avg.ms_item_h_price_id = - 1) 
  AND (dt_ms_item_daily_out_move_avg.ms_cost_final_avg_id IS NULL OR dt_ms_item_daily_out_move_avg.ms_cost_final_avg_id = - 1) 
 
 GROUP BY    dt_ms_memo_header.ms_memo_type_id
 , enum_ms_memo_type.ms_memo_type_name
 , dt_ms_memo_header.doc_no 
 , dt_ms_memo_header.doc_date   
 , isnull(dt_ms_item_base_h_report_car_line_sum.ms_report_car_line_sum_id,-1)  
 , isnull(dt_ms_report_car_line_sum.ms_report_car_line_sum_name,'')  
 , dt_ms_item_in_detail.ms_item_id
 , dt_ms_item.part_no
 , dt_ms_item.part_name 
 , isnull(dt_ms_memo_header.ms_supplier_customer_id,-1) 
 , isnull(dt_ms_supplier_customer.supplier_customer_code,'')  
 , isnull(dt_ms_supplier_customer.supplier_customer_name,'') 
 , isnull(dt_ms_supplier_customer.is_affilete,0)
 , isnull(dt_ms_memo_header.is_move_business_date ,0)
 , dt_ms_memo_header.ms_date_business_id  
 , dt_ms_memo_header.ms_date_business_id_from    
  
   
 --- AJUSTMENT
 insert into @tp_ms_avg_to_adjustment(
 ms_item_id   
 ,part_no 
 ,part_name  
 ,category_id  
 ,category_name  
 ,total
 ) 

 SELECT        
   dt_ms_item_in_detail.ms_item_id
 , dt_ms_item.part_no
 , dt_ms_item.part_name 
 , isnull(dt_ms_item_base_h_report_car_line_sum.ms_report_car_line_sum_id,-1) as category_id
 , dt_ms_report_car_line_sum.ms_report_car_line_sum_name   as category_name
 , SUM(dt_ms_item_in_detail.quantity_pakai) AS total_supply 
        
 FROM            dt_ms_item_base_h_report_car_line_sum INNER JOIN
                         dt_ms_report_car_line_sum ON dt_ms_item_base_h_report_car_line_sum.ms_report_car_line_sum_id = dt_ms_report_car_line_sum.ms_report_car_line_sum_id RIGHT OUTER JOIN
                         dt_ms_item_base ON dt_ms_item_base_h_report_car_line_sum.ms_item_base_h_report_car_line_sum_id = dt_ms_item_base.ms_item_base_h_report_car_line_sum_id RIGHT OUTER JOIN
                         dt_ms_item_in_detail INNER JOIN
                         dt_ms_adj_sto ON dt_ms_item_in_detail.id_source_header = dt_ms_adj_sto.ms_adj_sto_id INNER JOIN
                         dt_ms_adj_sto_h_status ON dt_ms_adj_sto.ms_adj_sto_h_status_id = dt_ms_adj_sto_h_status.ms_adj_sto_h_status_id INNER JOIN
                         dt_ms_item ON dt_ms_item_in_detail.ms_item_id = dt_ms_item.ms_item_id INNER JOIN
                         dt_ms_item_daily_out_move_avg ON dt_ms_item_in_detail.ms_item_out_move_avg_id = dt_ms_item_daily_out_move_avg.ms_item_out_move_avg_id INNER JOIN
                         dt_ms_date_business ON dt_ms_item_daily_out_move_avg.ms_date_business_id = dt_ms_date_business.ms_date_business_id ON dt_ms_item_base.ms_item_base_no = dt_ms_item.ms_item_base_no AND 
                         dt_ms_item_base.ms_item_base_no = dt_ms_item.ms_item_base_no
  WHERE        
 (dt_ms_adj_sto_h_status.status_adj_sto_id = 1) 
 --AND (dt_ms_item_in_detail.quantity_pakai < 0)
 AND (dt_ms_item_in_detail.mode_source = 3) 
 AND (dt_ms_adj_sto.adj_sto_mode_id = 0)
  AND (dt_ms_date_business.ms_date_business <= @business_date) and dt_ms_date_business.ms_date_business >@end_date_sta
   AND (dt_ms_item_daily_out_move_avg.ms_item_h_price_id IS NULL OR dt_ms_item_daily_out_move_avg.ms_item_h_price_id = - 1) 
 AND (dt_ms_item_daily_out_move_avg.ms_cost_final_avg_id IS NULL OR dt_ms_item_daily_out_move_avg.ms_cost_final_avg_id = - 1) 
 group by dt_ms_item_in_detail.ms_item_id
 , dt_ms_item.part_no
 , dt_ms_item.part_name 
 , isnull(dt_ms_item_base_h_report_car_line_sum.ms_report_car_line_sum_id,-1) 
 , dt_ms_report_car_line_sum.ms_report_car_line_sum_name  


 --- STO
 insert into @tp_ms_avg_to_sto(
  ms_item_id   
 ,part_no 
 ,part_name  
 ,category_id  
 ,category_name  
 ,total
 )

 SELECT        
 dt_ms_item_in_detail.ms_item_id
 , dt_ms_item.part_no
 , dt_ms_item.part_name 
 , isnull(dt_ms_item_base_h_report_car_line_sum.ms_report_car_line_sum_id,-1) as category_id
 , dt_ms_report_car_line_sum.ms_report_car_line_sum_name   as category_name
 , SUM(abs(dt_ms_item_in_detail.quantity_pakai) ) AS total_supply 
 FROM            dt_ms_item_base_h_report_car_line_sum INNER JOIN
                         dt_ms_report_car_line_sum ON dt_ms_item_base_h_report_car_line_sum.ms_report_car_line_sum_id = dt_ms_report_car_line_sum.ms_report_car_line_sum_id RIGHT OUTER JOIN
                         dt_ms_item_base ON dt_ms_item_base_h_report_car_line_sum.ms_item_base_h_report_car_line_sum_id = dt_ms_item_base.ms_item_base_h_report_car_line_sum_id RIGHT OUTER JOIN
                         dt_ms_item_in_detail INNER JOIN
                         dt_ms_adj_sto ON dt_ms_item_in_detail.id_source_header = dt_ms_adj_sto.ms_adj_sto_id INNER JOIN
                         dt_ms_adj_sto_h_status ON dt_ms_adj_sto.ms_adj_sto_h_status_id = dt_ms_adj_sto_h_status.ms_adj_sto_h_status_id INNER JOIN
                         dt_ms_item ON dt_ms_item_in_detail.ms_item_id = dt_ms_item.ms_item_id INNER JOIN
                         dt_ms_item_daily_out_move_avg ON dt_ms_item_in_detail.ms_item_out_move_avg_id = dt_ms_item_daily_out_move_avg.ms_item_out_move_avg_id INNER JOIN
                         dt_ms_date_business ON dt_ms_item_daily_out_move_avg.ms_date_business_id = dt_ms_date_business.ms_date_business_id ON dt_ms_item_base.ms_item_base_no = dt_ms_item.ms_item_base_no AND 
                         dt_ms_item_base.ms_item_base_no = dt_ms_item.ms_item_base_no
  WHERE        
 (dt_ms_adj_sto_h_status.status_adj_sto_id = 1) 
 --AND (dt_ms_item_in_detail.quantity_pakai < 0)
 AND (dt_ms_item_in_detail.mode_source = 4) 
 AND (dt_ms_adj_sto.adj_sto_mode_id = 1)
 AND (dt_ms_date_business.ms_date_business <= @business_date) and dt_ms_date_business.ms_date_business >@end_date_sta
 AND (dt_ms_item_daily_out_move_avg.ms_item_h_price_id IS NULL OR dt_ms_item_daily_out_move_avg.ms_item_h_price_id = - 1) 
 AND (dt_ms_item_daily_out_move_avg.ms_cost_final_avg_id IS NULL OR dt_ms_item_daily_out_move_avg.ms_cost_final_avg_id = - 1) 
 group by dt_ms_item_in_detail.ms_item_id
 , dt_ms_item.part_no
 , dt_ms_item.part_name 
 , isnull(dt_ms_item_base_h_report_car_line_sum.ms_report_car_line_sum_id,-1)  
 , dt_ms_report_car_line_sum.ms_report_car_line_sum_name    


 ;WITH data_item (ms_item_id, part_no, part_name,uom,ms_item_status_id,ms_item_custom_no
     ,ms_item_custom_name,base_no,base_name,category_id,category_name
     ,sta_qty,sta_price_idr,sta_price_usd,service_level,rack_no)  
 AS  
 -- Define the CTE query.
 (  
  SELECT        
  dt_ms_item.ms_item_id
  , dt_ms_item.part_no
  , dt_ms_item.part_name
  , dt_ms_item.uom
  , dt_ms_item_h_status.ms_item_status_id
  , dt_ms_item.ms_item_custom_no
  , dt_ms_item_custom.ms_item_custom_name
  , dt_ms_item.ms_item_base_no
  , dt_ms_item_base.ms_item_base_name
 , isnull(dt_ms_item_base_h_report_car_line_sum.ms_report_car_line_sum_id,-1) as category_id
 , isnull(dt_ms_report_car_line_sum.ms_report_car_line_sum_name,'')  as category_name 
  , COALESCE(vw_ms_item_final_cost_last.end_qty,vw_ms_item_beginning_balance.end_qty ,0) as sta_qty
  ,case when COALESCE(vw_ms_item_final_cost_last.end_qty,vw_ms_item_beginning_balance.end_qty ,0) =0 then 0 else  COALESCE(vw_ms_item_final_cost_last.end_price,vw_ms_item_beginning_balance.end_price ,0)end  as sta_price_idr-- as sta_price_idr
  ,case when COALESCE(vw_ms_item_final_cost_last.end_qty,vw_ms_item_beginning_balance.end_qty ,0) =0 then 0 else  COALESCE(vw_ms_item_final_cost_last.end_price_usd,vw_ms_item_beginning_balance.end_price_usd ,0) end as sta_price_usd--sta_price_usd
  ,dt_ms_item.service_level 
 ,dt_ms_item.rack_no
 FROM            dt_ms_item_h_status INNER JOIN
                         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 ON dt_ms_item_h_status.ms_item_h_status_id = dt_ms_item.ms_item_h_status_id LEFT OUTER JOIN
                         vw_ms_item_final_cost_last ON dt_ms_item.ms_item_id = vw_ms_item_final_cost_last.ms_item_id LEFT OUTER JOIN
                         vw_ms_item_beginning_balance ON dt_ms_item.ms_item_id = vw_ms_item_beginning_balance.ms_item_id LEFT OUTER JOIN
                         dt_ms_item_base ON dt_ms_item.ms_item_base_no = dt_ms_item_base.ms_item_base_no AND dt_ms_item.ms_item_base_no = dt_ms_item_base.ms_item_base_no LEFT OUTER JOIN
                         dt_ms_report_car_line_sum INNER JOIN
                         dt_ms_item_base_h_report_car_line_sum ON dt_ms_report_car_line_sum.ms_report_car_line_sum_id = dt_ms_item_base_h_report_car_line_sum.ms_report_car_line_sum_id ON 
                         dt_ms_item_base.ms_item_base_h_report_car_line_sum_id = dt_ms_item_base_h_report_car_line_sum.ms_item_base_h_report_car_line_sum_id

 )  , data_in (ms_item_id, in_qty, in_amount_idr,in_amount_usd)  
 AS   
 (   
  SELECT        vw_business_date_item_in_sum_bc_in.ms_item_id
  , SUM(vw_business_date_item_in_sum_bc_in.total_qty_pakai) AS total_qty_avg_move
  , SUM(vw_business_date_item_in_sum_bc_in.total_amont_idr) AS price_avg_move_idr
  , SUM(vw_business_date_item_in_sum_bc_in.total_amont_usd) AS price_avg_move_usd
  FROM            vw_business_date_item_in_sum_bc_in INNER JOIN
       dt_ms_date_business ON vw_business_date_item_in_sum_bc_in.ms_date_business_id = dt_ms_date_business.ms_date_business_id
  WHERE        (vw_business_date_item_in_sum_bc_in.ms_item_h_price_id = - 1 OR vw_business_date_item_in_sum_bc_in.ms_item_h_price_id IS NULL)
   AND (dt_ms_date_business.ms_date_business <= @business_date) and dt_ms_date_business.ms_date_business >@end_date_sta
       --AND (NULLIF (vw_business_date_item_in_sum_bc_in.total_amont_usd, 0) IS NOT NULL)
  GROUP BY vw_business_date_item_in_sum_bc_in.ms_item_id  
 )  
 , out_carline (ms_item_id, total)  
 AS   
 (  select ms_item_id, sum(qty_total) as total  from  @tp_ms_item_out_to_carline
  group by ms_item_id
 )  
 , out_memo (ms_item_id, total)  
 AS  
 -- Define the CTE query.
 (   
  select ms_item_id, sum(total_out) as total  from  @tp_ms_avg_stock_to_memo 
  group by ms_item_id
 )  

 , ajustment (ms_item_id, total)  
 AS  
 -- Define the CTE query.
 (   
  select ms_item_id, sum(total) as total  from  @tp_ms_avg_to_adjustment 
  group by ms_item_id
 )  
 , sto (ms_item_id, total)  
 AS  
 -- Define the CTE query.
 (   
  select ms_item_id, sum(total) as total  from  @tp_ms_avg_to_sto 
  group by ms_item_id
 )  
 , retur (ms_item_id, total)  
 AS  
 -- Define the CTE query.
 (   
  select ms_item_id, sum(qty_pakai) as total  from  @tp_ms_avg_in_from_retur 
  group by ms_item_id
 )  
   
 insert into  @tp_ms_item_avg_pre (
   ms_item_id 
 , part_no  
 , part_name 
 , uom  
 , base_no  
 , base_name
 , category_id  
 , category_name 
 , sta_qty  
 , sta_amount_idr   
 , sta_amount_usd   
 , in_qty  
 , in_amount_idr   
 , in_amount_usd   
 , final_avg_price   
 , final_avg_price_usd  
 , out_carline_qty 
 , out_carline_amount      
 , out_memo_qty  
 , out_memo_amount     
 , adj_qty  
 , adj_amount     
 , sto_qty  
 , sto_amount 
 , retur_qty  
 , retur_amount 
 , service_level
 , rack_no
 )
 
 SELECT 
   data_item.ms_item_id 
 , data_item.part_no  
 , data_item.part_name 
 , data_item.uom  
 , data_item.base_no  
 , data_item.base_name 
 , data_item.category_id  
 , data_item.category_name 
 , data_item.sta_qty  
 , data_item.sta_price_idr   
 , data_item.sta_price_usd   
 , isnull(data_in.in_qty,0)
 , isnull(data_in.in_amount_idr,0)
 , isnull(data_in.in_amount_usd ,0)
 , case when data_item.sta_qty  + isnull(data_in.in_qty,0) =0 then 0 else (data_item.sta_price_idr + isnull(data_in.in_amount_idr,0))/(data_item.sta_qty  + isnull(data_in.in_qty,0))  end    final_avg_price   
 , case when data_item.sta_qty  + isnull(data_in.in_qty,0) =0 then 0 else (data_item.sta_price_usd + isnull(data_in.in_amount_usd,0))/(data_item.sta_qty  + isnull(data_in.in_qty,0))  end    final_avg_price_usd   
   
  ,  isnull(out_carline.total,0)  as out_carline_qty
 , case when isnull(out_carline.total,0) =0 then 0 else isnull(out_carline.total,0)    * (case when data_item.sta_qty  + isnull(data_in.in_qty,0) =0 then 0 else (data_item.sta_price_usd + isnull(data_in.in_amount_usd,0))/(data_item.sta_qty  + isnull(data_in.in_qty,0))  end) end as out_carline_amount  
 
 ,  isnull(out_memo.total,0)  as out_memo_qty
 , case when isnull(out_memo.total,0) =0 then 0 else isnull(out_memo.total,0)    * (case when data_item.sta_qty  + isnull(data_in.in_qty,0) =0 then 0 else (data_item.sta_price_usd + isnull(data_in.in_amount_usd,0))/(data_item.sta_qty  + isnull(data_in.in_qty,0))  end) end as out_memo_amount  
 
 ,  isnull(ajustment.total,0)  as adj_qty
 , case when isnull(ajustment.total,0) =0 then 0 else isnull(ajustment.total,0)    * (case when data_item.sta_qty  + isnull(data_in.in_qty,0) =0 then 0 else (data_item.sta_price_usd + isnull(data_in.in_amount_usd,0))/(data_item.sta_qty  + isnull(data_in.in_qty,0))  end) end as adj_amount  
 
 ,  isnull(sto.total,0)   as sto_qty
 , case when isnull(sto.total,0) =0 then 0 else isnull(sto.total,0)    * (case when data_item.sta_qty  + isnull(data_in.in_qty,0) =0 then 0 else (data_item.sta_price_usd + isnull(data_in.in_amount_usd,0))/(data_item.sta_qty  + isnull(data_in.in_qty,0))  end) end as sto_amount  
 
 ,  isnull(retur.total,0)   as retur_qty
 , case when isnull(retur.total,0) =0 then 0 else isnull(retur.total,0)    * (case when data_item.sta_qty  + isnull(data_in.in_qty,0) =0 then 0 else (data_item.sta_price_usd + isnull(data_in.in_amount_usd,0))/(data_item.sta_qty  + isnull(data_in.in_qty,0))  end) end as retur_amount  
 ,data_item.service_level
 , isnull(data_item.rack_no,'') as rack_no
    FROM            data_item LEFT OUTER JOIN
        sto ON data_item.ms_item_id = sto.ms_item_id LEFT OUTER JOIN
        ajustment ON data_item.ms_item_id = ajustment.ms_item_id LEFT OUTER JOIN
        out_carline ON data_item.ms_item_id = out_carline.ms_item_id LEFT OUTER JOIN
        out_memo ON data_item.ms_item_id = out_memo.ms_item_id LEFT OUTER JOIN
        retur ON data_item.ms_item_id = retur.ms_item_id LEFT OUTER JOIN
        data_in ON data_item.ms_item_id = data_in.ms_item_id
 
 --- LIST DETAIL IN DARI BC
  insert into @tp_ms_avg_in_from_bc (
    ms_in_item_detail_id
    ,category_id  
    ,category_name 
    ,ms_date_business_id  
    ,ms_date_business_id_from  
    ,ms_item_id  
    ,part_no 
    ,part_name  
    ,qty_pakai  
    ,uom  
    ,ori_amount_idr  
    ,ori_amount_usd  
    ,bc_type
    ,car 
    ,bc_no 
    ,bc_date 
    ,receive_no  
    ,receive_date   
    ,po_no  
    ,po_date   
    ,supplier_customer_id  
    ,supplier_customer_code  
    ,supplier_customer_name  
    ,is_affilete  
    ,invoice_no
    ,invoice_date
    ,seri  
    ,is_adjustment 
    ,is_molts  
    ,is_import  
    ,is_40   
    ) 
  SELECT  
   dt_ms_item_in_detail.ms_in_item_detail_id       
   ,data_price_item.category_id
   ,data_price_item.category_name
   ,dt_ms_item_in_detail.ms_date_business_id
   ,dt_ms_item_in_detail.ms_date_business_id_from
   ,dt_ms_item_daily_in_move_avg.ms_item_id
   ,data_price_item.part_no
   ,data_price_item.part_name
   ,dt_ms_item_in_detail.quantity_pakai as  qty_pakai
   ,data_price_item.uom
   ,dt_ms_item_in_detail.total_amont_idr as  ori_amount_idr
   ,dt_ms_item_in_detail.total_amont_usd as ori_amount_usd
    ,dt_ms_tpb_in_header.KODE_DOKUMEN_PABEAN 
   ,dt_ms_tpb_in_header.NOMOR_AJU  
   ,dt_ms_tpb_in_header.NOMOR_DAFTAR 
   ,dt_ms_tpb_in_header.TANGGAL_DAFTAR 
   ,dt_ms_tpb_in_header.receive_no
   ,dt_ms_tpb_in_header.receive_date  
   , case when  dt_ms_tpb_in_header.KODE_DOKUMEN_PABEAN='40' then  
        (SELECT        TOP (1) NOMOR_DOKUMEN
      FROM            dt_ms_tpb_in_dokumen
      WHERE        (KODE_JENIS_DOKUMEN = '380') AND (dt_ms_tpb_in_dokumen.ID_HEADER =dt_ms_tpb_in_header.ID_HEADER )
      ORDER BY ID
      )
    else  dt_ms_tpb_in_barang.po_no end  as po_no
   , case when  dt_ms_tpb_in_header.KODE_DOKUMEN_PABEAN='40' then  
        (SELECT        TOP (1) TANGGAL_DOKUMEN
      FROM            dt_ms_tpb_in_dokumen
      WHERE        (KODE_JENIS_DOKUMEN = '380') AND (dt_ms_tpb_in_dokumen.ID_HEADER =dt_ms_tpb_in_header.ID_HEADER )
      ORDER BY ID
      )
    else  dt_ms_tpb_in_barang.po_date end as po_date 
   
   ,dt_ms_tpb_in_header.mapping_supplier_id 
   ,dt_ms_supplier_customer.supplier_customer_code
   ,dt_ms_supplier_customer.supplier_customer_name
   ,dt_ms_supplier_customer.is_affilete
   ,      case when dt_ms_tpb_in_header.mode_source =5 then  -- manual invoice
       dt_ms_manual_invoice.invoice_no
     when dt_ms_tpb_in_header.mode_source =3 then -- molts
       dt_ms_molts_invoice.invoice_no 
     --when dt_ms_tpb_in_header.mode_source =1 then -- ceisa
     --''
     else (SELECT        TOP (1) NOMOR_DOKUMEN
      FROM            dt_ms_tpb_in_dokumen
      WHERE        (KODE_JENIS_DOKUMEN = '380') AND (dt_ms_tpb_in_dokumen.ID_HEADER =dt_ms_tpb_in_header.ID_HEADER )
      ORDER BY ID
      )
   
     end  as invoice_no

   ,      case when dt_ms_tpb_in_header.mode_source =5 then  -- manual invoice
       dt_ms_manual_invoice.invoice_date
     when dt_ms_tpb_in_header.mode_source =3 then -- molts
       dt_ms_molts_invoice.invoice_date 
     --when dt_ms_tpb_in_header.mode_source =1 then -- ceisa
     --null
     else 
     (SELECT        TOP (1) TANGGAL_DOKUMEN
     FROM            dt_ms_tpb_in_dokumen
     WHERE        (KODE_JENIS_DOKUMEN = '380') AND (dt_ms_tpb_in_dokumen.ID_HEADER =dt_ms_tpb_in_header.ID_HEADER )
     ORDER BY ID
     )
     end  as invoice_date
     ,dt_ms_tpb_in_barang.SERI_BARANG 
     ,dt_ms_item_in_detail.is_adjustment 
     
   ,      case  when not(dt_ms_tpb_in_header.mode_source =3) and  (dt_ms_tpb_in_header.KODE_DOKUMEN_PABEAN='23' or  dt_ms_tpb_in_header.KODE_DOKUMEN_PABEAN='27'  or  dt_ms_tpb_in_header.KODE_DOKUMEN_PABEAN='271') then 0
     else  1
     end  as is_molts
  
     
   ,      case  when dt_ms_tpb_in_header.KODE_DOKUMEN_PABEAN='23' or  dt_ms_tpb_in_header.KODE_DOKUMEN_PABEAN='27'  or  dt_ms_tpb_in_header.KODE_DOKUMEN_PABEAN='271'  then 1 
     else  0
     end  as is_import
     
   ,      case  when dt_ms_tpb_in_header.KODE_DOKUMEN_PABEAN='40' then 1 
     else  0
     end  as is_40
      
   FROM            dt_ms_molts_invoice_detail INNER JOIN
                         dt_ms_molts_invoice ON dt_ms_molts_invoice_detail.ms_molts_invoice_id = dt_ms_molts_invoice.ms_molts_invoice_id RIGHT OUTER JOIN
                         dt_ms_tpb_in_header_h_status INNER JOIN
                         dt_ms_tpb_in_header ON dt_ms_tpb_in_header_h_status.dt_ms_tpb_in_header_h_status_id = dt_ms_tpb_in_header.dt_ms_tpb_in_header_h_status_id INNER JOIN
                         dt_ms_tpb_in_barang ON dt_ms_tpb_in_header.ID_HEADER = dt_ms_tpb_in_barang.ID_HEADER INNER JOIN
                         dt_ms_item_daily_in_move_avg INNER JOIN
                         dt_ms_item_in_detail ON dt_ms_item_daily_in_move_avg.ms_item_in_move_avg_id = dt_ms_item_in_detail.ms_item_in_move_avg_id ON dt_ms_tpb_in_barang.ID = dt_ms_item_in_detail.id_source 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 INNER JOIN
                         dt_ms_supplier_customer ON dt_ms_tpb_in_header.mapping_supplier_id = dt_ms_supplier_customer.ms_supplier_customer_id INNER JOIN
                         @tp_ms_item_avg_pre AS data_price_item ON dt_ms_item_in_detail.ms_item_id = data_price_item.ms_item_id ON 
                         dt_ms_molts_invoice_detail.ms_molts_invoice_detail_id  = dt_ms_tpb_in_barang.id_source  LEFT OUTER JOIN
                         dt_ms_manual_invoice INNER JOIN
                         dt_ms_manual_invoice_detail ON dt_ms_manual_invoice.ms_manual_invoice_id = dt_ms_manual_invoice_detail.ms_manual_invoice_id ON dt_ms_tpb_in_barang.id_source = dt_ms_manual_invoice_detail.ms_manual_invoice_detail_id
        WHERE        
      (dt_ms_tpb_in_header_h_status.status_tpb_in_id = 3) 
      AND ((dt_ms_item_in_detail.mode_source = 2)) 
      AND (dt_ms_item_daily_in_move_avg.ms_item_h_price_id = - 1 OR dt_ms_item_daily_in_move_avg.ms_item_h_price_id IS NULL)
       AND (dt_ms_date_business.ms_date_business <= @business_date) and dt_ms_date_business.ms_date_business >@end_date_sta
        --AND (( NULLIF (dt_ms_item_daily_in_move_avg.price_avg_move_idr, 0) IS NOT NULL AND dt_ms_item_daily_in_move_avg.ms_cost_final_avg_id <>0) )
      -- AND (( NULLIF (dt_ms_item_daily_in_move_avg.price_avg_move_usd, 0) IS NOT NULL AND dt_ms_item_daily_in_move_avg.ms_cost_final_avg_id <>0))
      --AND (( NULLIF (dt_ms_item_daily_in_move_avg.total_qty_avg_move, 0) IS NOT NULL AND dt_ms_item_daily_in_move_avg.ms_cost_final_avg_id <>0) )
      AND (dt_ms_item_daily_in_move_avg.ms_cost_final_avg_id=-1 or dt_ms_item_daily_in_move_avg.ms_cost_final_avg_id is null)
      order by dt_ms_tpb_in_header.ID_HEADER ,dt_ms_tpb_in_header.TANGGAL_DAFTAR ,dt_ms_tpb_in_header.NOMOR_DAFTAR ,dt_ms_tpb_in_barang.SERI_BARANG 
 
  
 

  insert into @tp_ms_avg_catergory_detail_in_out
  (
    category_id  
  , category_name   
  , category_initial  
  , category_color 
  , show   

  , order_by   
  , sta_qty  
  , sta_amount_usd   
  , in_qty  
  , in_amount_usd  
    
  , out_qty      
  , out_amount    
  , adj_qty    
  , adj_amount    
  , end_qty  

  , end_amount  
 )
  select 
  xsource.category_id 
    ,xsource.category_name  
    ,dt_ms_report_car_line_sum.code_sheet 
    ,dt_ms_report_car_line_sum.ms_report_car_line_sum_color
 ,dt_ms_report_car_line_sum.show_on_report

 ,dt_ms_report_car_line_sum.order_column  
 ,sum(isnull(xsource.sta_qty ,0))
 ,sum(isnull(xsource.sta_amount_usd ,0))

 ,sum(isnull(xsource.in_qty  ,0) )
 ,sum(isnull(xsource.in_amount_usd  ,0)) 


 ,sum(isnull(xsource.out_carline_qty ,0) + isnull(xsource.out_memo_qty ,0))
 ,sum(isnull(xsource.out_carline_amount ,0) + isnull(xsource.out_memo_amount ,0)) 

 ,sum(isnull(xsource.adj_qty  ,0)+isnull(xsource.sto_qty  ,0)+isnull(xsource.retur_qty  ,0) )
 ,sum(isnull(xsource.adj_amount  ,0)+isnull(xsource.sto_amount  ,0)+isnull(xsource.retur_amount  ,0) ) 
   
 ,sum( (isnull(xsource.sta_qty  ,0)  + isnull(xsource.in_qty ,0)  + isnull(xsource.adj_qty  ,0)+isnull(xsource.sto_qty  ,0)+isnull(xsource.retur_qty  ,0) )
    - (isnull(xsource.out_carline_qty ,0) + isnull(xsource.out_memo_qty ,0)) ) 

 ,sum( ((isnull(xsource.sta_qty  ,0)  + isnull(xsource.in_qty ,0)  + isnull(xsource.adj_qty  ,0)+isnull(xsource.sto_qty  ,0)+isnull(xsource.retur_qty  ,0) )
    - (isnull(xsource.out_carline_qty ,0) + isnull(xsource.out_memo_qty ,0))) * isnull(final_avg_price_usd,0)) 

 from @tp_ms_item_avg_pre as xsource  INNER JOIN
     dt_ms_report_car_line_sum ON xsource.category_id = dt_ms_report_car_line_sum.ms_report_car_line_sum_id 
 where not(xsource.category_id =-1) 
 and dt_ms_report_car_line_sum.show_on_report =1  
 group by  
  xsource.category_id 
    ,xsource.category_name  
     ,dt_ms_report_car_line_sum.code_sheet 
    ,dt_ms_report_car_line_sum.ms_report_car_line_sum_color
 ,dt_ms_report_car_line_sum.show_on_report
 ,dt_ms_report_car_line_sum.order_column  
 order by xsource.category_id
     

  ---- 2020 MOVING
 
;declare @lookdata int =12 

 
BEGIN TRY
DROP TABLE #data_mth
END TRY
BEGIN CATCH  END CATCH 
CREATE  TABLE #data_mth 
(ms_cost_final_avg_id bigint primary key
, avg_out_to_carline xml
, item_moving varbinary(max)
, end_date date 
, urut int 
) 

insert into #data_mth(ms_cost_final_avg_id,avg_out_to_carline,item_moving,end_date,urut)
select 
ms_cost_final_avg_id
,avg_out_to_carline
,item_moving
,end_date
,ROW_NUMBER() OVER(ORDER BY end_date asc)  as urut
from (
SELECT  top (@lookdata)      
dt_ms_cost_final_avg.ms_cost_final_avg_id
, cast(dbo.DecompressToString(dt_ms_cost_final_avg.avg_out_to_carline,9) as xml) avg_out_to_carline
, dt_ms_cost_final_avg.item_moving  item_moving
, dt_ms_cost_final_avg.end_date
FROM            dt_ms_cost_final_avg INNER JOIN
                         dt_ms_cost_final_avg_h_status ON dt_ms_cost_final_avg.ms_cost_final_avg_h_status_id = dt_ms_cost_final_avg_h_status.ms_cost_final_avg_h_status_id
WHERE        (dt_ms_cost_final_avg.ms_cost_final_avg_id > 0) 
AND (dt_ms_cost_final_avg_h_status.ms_cost_final_avg_status_id = 1) 
ORDER BY dt_ms_cost_final_avg.end_date desc
)xdara

declare @pakai_min_ms_cost_final_avg_id bigint
, @pakai_max_ms_cost_final_avg_id bigint
,@pakai_total_month int

select @pakai_min_ms_cost_final_avg_id= min(ms_cost_final_avg_id) 
,@pakai_max_ms_cost_final_avg_id= max(ms_cost_final_avg_id) 
,@pakai_total_month=count(*) 
 from #data_mth where urut is not null
 

if @pakai_total_month<@lookdata
begin
update #data_mth
set urut=urut + (@lookdata-@pakai_total_month) 
end 

insert into @tp_month_moving (ms_cost_final_avg_id 
, end_date  
, urut)
select ms_cost_final_avg_id 
, end_date  
, urut from #data_mth

--BEGIN TRY
--DROP TABLE #min_mth
--END TRY
--BEGIN CATCH END CATCH
--CREATE TABLE #min_mth
--(min_ms_cost_final_avg_id bigint primary key
--, total_month int
--)
--insert into #min_mth(min_ms_cost_final_avg_id,total_month)

BEGIN TRY
DROP TABLE #datamth_2
END TRY
BEGIN CATCH  END CATCH 
CREATE  TABLE #datamth_2 
(ms_cost_final_avg_id bigint 
, end_date  date
, urut int
, ms_item_id bigint
, qty_total decimal(24,8)
, primary key (ms_cost_final_avg_id,ms_item_id)
)  
insert into #datamth_2 (ms_cost_final_avg_id,end_date,urut,ms_item_id,qty_total)
select ms_cost_final_avg_id,end_date,urut,ms_item_id, sum(isnull(qty_total,0)) as qty_total from (
SELECT 
  e.ms_cost_final_avg_id
, e.end_date
, e.urut
, X.Y.value('(ms_item_id)[1]', 'VARCHAR(255)') as ms_item_id
--, X.Y.value('(part_no)[1]', 'VARCHAR(255)') as part_no
--, X.Y.value('(part_name)[1]', 'VARCHAR(255)') as part_name
, isnull(X.Y.value('(qty_total)[1]', 'decimal(24,8)'),0) as qty_total
FROM #data_mth e
OUTER APPLY e.avg_out_to_carline.nodes('root/r') as X(Y)
)xdata
group by ms_cost_final_avg_id,end_date,urut,ms_item_id


BEGIN TRY
DROP TABLE #old_data_item_info
END TRY
BEGIN CATCH  END CATCH 
CREATE  TABLE #old_data_item_info 
(ms_item_id bigint  primary key
,qty_min decimal(18,8)
,qty_max decimal(18,8) 
)  

declare @XML_OLD_MOVING xml 
,@old_item_moving varbinary(max)
select top 1 @old_item_moving =item_moving from #data_mth
where ms_cost_final_avg_id=@pakai_max_ms_cost_final_avg_id

if @old_item_moving is not null and DATALENGTH(@old_item_moving)>0
begin 
set @XML_OLD_MOVING=dbo.DecompressToString(@old_item_moving,9)

    EXEC sp_xml_preparedocument @DocHandle OUTPUT, @XML_OLD_MOVING; 
 INSERT into #old_data_item_info 
 SELECT  *
 FROM OPENXML (@DocHandle, '//root/r'  )
 WITH (    
   ms_item_id bigint 'ms_item_id'   
 , after_min  decimal(18,8) 'after_min' 
 , after_max decimal(18,8) 'after_max'  
 );
 EXEC sp_xml_removedocument @DocHandle; 
end




BEGIN TRY
DROP TABLE #data_item_info
END TRY
BEGIN CATCH  END CATCH 
CREATE  TABLE #data_item_info 
(ms_item_id bigint  primary key,
min_ms_cost_final_avg_id bigint,
start_month int
,before_min int
,before_max int 
--total_month int
)  


insert into #data_item_info (ms_item_id,min_ms_cost_final_avg_id) 
select 
 dt_ms_item_in_detail.ms_item_id 
,min(dt_ms_date_business.ms_cost_final_avg_id)   as min_ms_cost_final_avg_id 
 FROM            dt_ms_item_out_detail INNER JOIN
       dt_ms_car_line_out_detail ON dt_ms_item_out_detail.id_source = dt_ms_car_line_out_detail.ms_car_line_out_detail_id INNER JOIN
       dt_ms_car_line_out_header ON dt_ms_car_line_out_detail.ms_car_line_out_header_id = dt_ms_car_line_out_header.ms_car_line_out_header_id INNER JOIN
       dt_ms_car_line_out_header_h_status ON dt_ms_car_line_out_header.ms_car_line_out_header_h_status_id = dt_ms_car_line_out_header_h_status.ms_car_line_out_header_h_status_id INNER JOIN
       dt_ms_item_in_detail ON dt_ms_item_out_detail.ms_in_item_detail_id = dt_ms_item_in_detail.ms_in_item_detail_id INNER JOIN
       dt_ms_date_business ON dt_ms_car_line_out_detail.ms_date_business_id = dt_ms_date_business.ms_date_business_id
       --OUTER APPLY #min_mth
where dt_ms_car_line_out_header_h_status.ms_car_line_out_header_status_id=1
and  dt_ms_date_business.ms_cost_final_avg_id<>-1
and abs(dt_ms_item_out_detail.quantity)>0
group by dt_ms_item_in_detail.ms_item_id  
 
update #data_item_info
set start_month = case 
when z.min_ms_cost_final_avg_id<=@pakai_min_ms_cost_final_avg_id then 1 
else
x.urut 
end 
,before_min=isnull(o.qty_min,0)
,before_max=isnull(o.qty_max,0)
from #data_item_info  as z left outer join #data_mth as x
on z.min_ms_cost_final_avg_id=x.ms_cost_final_avg_id
 left outer join #old_data_item_info as o
on z.ms_item_id=o.ms_item_id
--select @pakai_min_ms_cost_final_avg_id
--select * from #data_item_info
--select * from #data_item_info
--where ms_item_id=71922



BEGIN TRY
DROP TABLE #datamth_3
END TRY
BEGIN CATCH  END CATCH 
CREATE  TABLE #datamth_3 
 (ms_item_id bigint  primary key,
 --start_month int,
 [qty_1] [decimal](38, 8) NULL,
 [qty_2] [decimal](38, 8) NULL,
 [qty_3] [decimal](38, 8) NULL,
 [qty_4] [decimal](38, 8) NULL,
 [qty_5] [decimal](38, 8) NULL,
 [qty_6] [decimal](38, 8) NULL,
 [qty_7] [decimal](38, 8) NULL,
 [qty_8] [decimal](38, 8) NULL,
 [qty_9] [decimal](38, 8) NULL,
 [qty_10] [decimal](38, 8) NULL,
 [qty_11] [decimal](38, 8) NULL,
 [qty_12] [decimal](38, 8) NULL
) 

insert into #datamth_3
select _data_avg.ms_item_id 
--, _data_avg.part_no
--, _data_avg.part_name
--,min(master_mth.urut )
,sum( isnull(case when _data_avg.urut=1 then _data_avg.qty_total else 0  end  ,0)) as qty_1
,sum( isnull(case when _data_avg.urut=2 then _data_avg.qty_total else 0  end  ,0)) as qty_2
,sum( isnull(case when _data_avg.urut=3 then _data_avg.qty_total else 0  end  ,0)) as qty_3
,sum( isnull(case when _data_avg.urut=4 then _data_avg.qty_total else 0  end  ,0)) as qty_4
,sum( isnull(case when _data_avg.urut=5 then _data_avg.qty_total else 0  end  ,0)) as qty_5
,sum( isnull(case when _data_avg.urut=6 then _data_avg.qty_total else 0  end  ,0)) as qty_6
,sum( isnull(case when _data_avg.urut=7 then _data_avg.qty_total else 0  end  ,0)) as qty_7
,sum( isnull(case when _data_avg.urut=8 then _data_avg.qty_total else 0  end  ,0)) as qty_8
,sum( isnull(case when _data_avg.urut=9 then _data_avg.qty_total else 0  end  ,0)) as qty_9
,sum( isnull(case when _data_avg.urut=10 then _data_avg.qty_total else 0  end  ,0)) as qty_10
,sum( isnull(case when _data_avg.urut=11 then _data_avg.qty_total else 0  end  ,0)) as qty_11
,sum( isnull(case when _data_avg.urut=12 then _data_avg.qty_total else 0  end  ,0)) as qty_12
from #datamth_2 as  _data_avg 
--right outer join #data_mth as master_mth
--on _data_avg.ms_cost_final_avg_id=master_mth.ms_cost_final_avg_id
 where _data_avg.urut is not null
group by _data_avg.ms_item_id


BEGIN TRY
DROP TABLE #datamth_max
END TRY
BEGIN CATCH  END CATCH 
CREATE  TABLE #datamth_max 
 (ms_item_id bigint  primary key,
 [max_qty] [decimal](38, 8) NULL,
 [sum_qty] [decimal](38, 8) NULL
) 
insert into #datamth_max
select _data_avg.ms_item_id  
 ,max(_data_avg.qty_total ) as max_qty
 ,sum(isnull(_data_avg.qty_total ,0)) as sum_qty
 from #datamth_2 as  _data_avg 
 where urut is not null
 group by _data_avg.ms_item_id


BEGIN TRY
DROP TABLE #datamth_moving2
END TRY
BEGIN CATCH  END CATCH 
CREATE  TABLE #datamth_moving2 
 (ms_item_id bigint  ,
 ms_cost_final_avg_id bigint ,
 [sum_qty] [decimal](38, 8) NULL,
 primary key(ms_item_id,ms_cost_final_avg_id)
) 

insert into #datamth_moving2
select _data_avg.ms_item_id  
, _data_avg.ms_cost_final_avg_id  
,sum(isnull(_data_avg.qty_total ,0)) as sum_qty
from #datamth_2 as  _data_avg 
where _data_avg.urut is not null and _data_avg.qty_total>0
group by _data_avg.ms_item_id,_data_avg.ms_cost_final_avg_id 


BEGIN TRY
DROP TABLE #datamth_moving
END TRY
BEGIN CATCH  END CATCH 
CREATE  TABLE #datamth_moving 
 (ms_item_id bigint  ,
 count_moving int,
 fast_moving bit NULL,
 primary key(ms_item_id)
) 

insert into #datamth_moving
select _data_avg.ms_item_id  
 , count(*) count_moving 
 ,case when count(*)>1 then 1 else 0 end fast_moving 
 from #datamth_moving2 as  _data_avg 
 group by _data_avg.ms_item_id

 
BEGIN TRY
DROP TABLE #datamth_unvipot
END TRY
BEGIN CATCH  END CATCH 
CREATE  TABLE #datamth_unvipot 
 (ms_item_id bigint  ,
 urut varchar(255),
 qty int,
 primary key(ms_item_id,urut)
) 

insert into #datamth_unvipot
SELECT ms_item_id,urut,  qty  
FROM   
   (SELECT ms_item_id, qty_1, qty_2, qty_3, qty_4, qty_5,qty_6,qty_7,qty_8,qty_9,qty_10,qty_11,qty_12  
   FROM #datamth_3) p  
UNPIVOT  
   (qty FOR urut IN   
      (qty_1, qty_2, qty_3, qty_4, qty_5,qty_6,qty_7,qty_8,qty_9,qty_10,qty_11,qty_12  )  
)AS unpvt 


BEGIN TRY
DROP TABLE #datamth_stdev
END TRY
BEGIN CATCH  END CATCH 
CREATE  TABLE #datamth_stdev 
 (ms_item_id bigint  ,
 stdev_qty float,
 primary key(ms_item_id)
) 

insert into #datamth_stdev
select _data_avg.ms_item_id  
,STDEV(qty) as stdev_qty
from #datamth_unvipot as  _data_avg 
group by _data_avg.ms_item_id
 

 insert into @tp_ms_item_moving (
  ms_item_id,
 part_no ,
 part_name ,
 uom ,
 base_no,
 base_name  ,
 category_id,
 category_name  ,
 qty_1 ,
 qty_2 ,
 qty_3 ,
 qty_4 ,
 qty_5 ,
 qty_6 ,
 qty_7 ,
 qty_8 ,
 qty_9 ,
 qty_10 ,
 qty_11 ,
 qty_12 ,
 qty_avg,
 stdev_qty ,
 service_level ,
 service_factor ,
 safty_stock ,
 before_min ,
 before_max ,
 after_min ,
 after_max ,
 actual_qty ,
 start_month ,
 count_moving ,
 fast_moving ,
 sum_qty ,
 max_qty
 )
 
 SELECT  
  #datamth_3.ms_item_id 
 ,dt_ms_item.part_no 
 ,dt_ms_item.part_name
 , dt_ms_item.uom 
 , dt_ms_item.base_no
 , dt_ms_item.base_name 
 , dt_ms_item.category_id  
 , dt_ms_item.category_name 
 ,#datamth_3.qty_1
 ,#datamth_3.qty_2
 ,#datamth_3.qty_3
 ,#datamth_3.qty_4
 ,#datamth_3.qty_5
 ,#datamth_3.qty_6
 ,#datamth_3.qty_7
 ,#datamth_3.qty_8
 ,#datamth_3.qty_9
 ,#datamth_3.qty_10
 ,#datamth_3.qty_11
 ,#datamth_3.qty_12
 , case when #data_item_info.start_month=1 then  case when #datamth_max.sum_qty=0 then 0 else #datamth_max.sum_qty/12 end else #datamth_max.max_qty end  as qty_avg
 ,#datamth_stdev.stdev_qty 
 ,dt_ms_item.service_level
 ,dbo.NORMSINV(cast(dt_ms_item.service_level as float)/100) as service_factor
 ,round(#datamth_stdev.stdev_qty  * dbo.NORMSINV(cast(dt_ms_item.service_level as float)/100),0)  as safty_stock
 ,#data_item_info.before_min
 ,#data_item_info.before_max
 ,dbo.TOUP( case when #data_item_info.start_month=1 then  case when #datamth_max.sum_qty=0 then 0 else #datamth_max.sum_qty/12 end else #datamth_max.max_qty end,0)  
  as after_min
 ,dbo.TOUP( case when #data_item_info.start_month=1 then  case when #datamth_max.sum_qty=0 then 0 else #datamth_max.sum_qty/12 end else #datamth_max.max_qty end,0) 
  + round(#datamth_stdev.stdev_qty  * dbo.NORMSINV(cast(dt_ms_item.service_level as float)/100),0) 
   as after_max 
 ,(isnull(dt_ms_item.sta_qty,0) + isnull(dt_ms_item.in_qty,0)  + isnull(dt_ms_item.retur_qty,0) )  - (isnull(dt_ms_item.out_carline_qty,0) + isnull(dt_ms_item.out_memo_qty,0) + isnull(dt_ms_item.adj_qty,0) + isnull(dt_ms_item.sto_qty,0)) as actual_qty
 ,#data_item_info.start_month   
 ,#datamth_moving.count_moving
 ,#datamth_moving.fast_moving
 ,#datamth_max.sum_qty
 ,#datamth_max.max_qty
--,case when #data_item_info.total_month =0 then #datamth_max.max_qty else #datamth_max.sum_qty/@lookdata end as avg_qty
 --, #data_item_info.*
 --,#data_mth.urut
 --,_datamth_stdev.stdev_qty
 --,#datamth_moving.count_moving
        
FROM            #data_item_info LEFT OUTER JOIN
                         #data_mth ON #data_item_info.min_ms_cost_final_avg_id = #data_mth.ms_cost_final_avg_id RIGHT OUTER JOIN
                         #datamth_3 ON #data_item_info.ms_item_id = #datamth_3.ms_item_id LEFT OUTER JOIN
                         #datamth_max ON #datamth_max.ms_item_id = #datamth_3.ms_item_id LEFT OUTER JOIN
                         #datamth_stdev ON #datamth_stdev.ms_item_id = #datamth_3.ms_item_id LEFT OUTER JOIN
                         #datamth_moving ON #datamth_moving.ms_item_id = #datamth_3.ms_item_id INNER JOIN
       @tp_ms_item_avg_pre as dt_ms_item  on dt_ms_item.ms_item_id=#datamth_3.ms_item_id INNER JOIN
     dt_ms_report_car_line_sum ON dt_ms_item.category_id = dt_ms_report_car_line_sum.ms_report_car_line_sum_id 
 where not(dt_ms_item.category_id =-1) 
 and dt_ms_report_car_line_sum.show_on_report =1  
order by dt_ms_item.part_no  
       --order by #datamth_3.part_no

  --@tp_ms_item_avg_pre

end
else
begin
  
declare  @check_ms_cost_final_avg_id bigint
, @check_final_avg_name varchar(255)
, @check_start_date date 
, @check_end_date date
, @check_info varchar(1000)
, @bin_item_avg_pre varbinary(MAX)  
,@bin_avg_to_sto varbinary(MAX)  
,@bin_avg_to_adjustment varbinary(MAX)  
,@bin_avg_stock_to_memo varbinary(MAX)  
,@bin_avg_out_to_carline varbinary(MAX)  
,@bin_avg_in_from_sto varbinary(MAX)  
,@bin_avg_in_from_adjustment varbinary(MAX)  
,@bin_avg_in_from_retur varbinary(MAX)  
,@bin_avg_in_from_bc varbinary(MAX)  
,@bin_avg_catergory_detail_in_out varbinary(MAX)  
    
,@bin_item_moving varbinary(MAX)  
,@bin_month_moving varbinary(MAX)  
--declare @rsx varbinary(max)=dbo.CompressXmlToByte(@kk,9)
--select @rsx
--declare @kk2 xml =dbo.DecompressToString(@rsx,9)
--select @kk2


SELECT        TOP (1) 
 @check_ms_cost_final_avg_id=ms_cost_final_avg_id
, @check_final_avg_name=final_avg_name
, @check_start_date=start_date
, @check_end_date=end_date
, @check_info=info
, @bin_item_avg_pre=item_avg_pre 
, @bin_avg_to_sto=avg_to_sto 
, @bin_avg_to_adjustment=avg_to_adjustment 
, @bin_avg_stock_to_memo=avg_stock_to_memo 
, @bin_avg_out_to_carline=avg_out_to_carline 
, @bin_avg_in_from_sto=avg_in_from_sto 
, @bin_avg_in_from_adjustment=avg_in_from_adjustment 
, @bin_avg_in_from_retur=avg_in_from_retur 
, @bin_avg_in_from_bc=avg_in_from_bc
, @bin_avg_catergory_detail_in_out=avg_catergory_detail_in_out
, @bin_item_moving=item_moving
, @bin_month_moving=month_moving
FROM            dt_ms_cost_final_avg
WHERE        (ms_cost_final_avg_id = @header_id)
 
set  @REPORT_NAME=@check_final_avg_name
set  @REPORT_START =@check_start_date
set @REPORT_STOP =@check_end_date

if @check_ms_cost_final_avg_id is not null
begin


if @bin_item_avg_pre is not null and DATALENGTH(@bin_item_avg_pre)>0
begin 
set @xml_tmp=dbo.DecompressToString(@bin_item_avg_pre,9)

EXEC sp_xml_preparedocument @DocHandle OUTPUT, @xml_tmp;

 INSERT into @tp_ms_item_avg_pre 
 SELECT  *
 FROM OPENXML (@DocHandle, '//root/r'  )
 WITH (    
   ms_item_id bigint 'ms_item_id'    
 , part_no varchar(255) 'part_no'
 , part_name varchar(255) 'part_name'
 , uom varchar(255) 'uom'
 , base_no varchar(255) 'base_no'
 , base_name varchar(255)  'base_name'
 , category_id bigint 'category_id'
 , category_name varchar(255)  'category_name'
 , sta_qty decimal(38,5) 'sta_qty'
 , sta_amount_idr decimal(38,5) 'sta_amount_idr'
 , sta_amount_usd decimal(38,5) 'sta_amount_usd'
 , in_qty decimal(38,5) 'in_qty'
 , in_amount_idr decimal(38,5) 'in_amount_idr'
 , in_amount_usd decimal(38,5) 'in_amount_usd'
 , final_avg_price decimal(38,5) 'final_avg_price'
 , final_avg_price_usd decimal(38,5) 'final_avg_price_usd'
 , out_carline_qty decimal(38,5) 'out_carline_qty'  
 , out_carline_amount decimal(38,5) 'out_carline_amount'   
 , out_memo_qty decimal(38,5) 'out_memo_qty'  
 , out_memo_amount decimal(38,5) 'out_memo_amount' 
 , adj_qty decimal(38,5)'adj_qty'
 , adj_amount decimal(38,5) 'adj_amount'   
 , sto_qty decimal(38,5) 'sto_qty'  
 , sto_amount decimal(38,5) 'sto_amount'    
 , retur_qty decimal(38,5) 'retur_qty'  
 , retur_amount decimal(38,5) 'retur_amount' 
 , service_level decimal(38,5) 'service_level'
 , rack_no varchar(255) 'rack_no'  
 );

 EXEC sp_xml_removedocument @DocHandle; 

end

 
if @bin_avg_to_sto is not null and DATALENGTH(@bin_avg_to_sto)>0
begin 
set @xml_tmp=dbo.DecompressToString(@bin_avg_to_sto,9)

EXEC sp_xml_preparedocument @DocHandle OUTPUT, @xml_tmp; ; 
 INSERT into @tp_ms_avg_to_sto ( 
   ms_item_id 
  ,part_no 
  ,part_name 
  ,category_id
  ,category_name
  ,total 
 )
 SELECT  *
 FROM OPENXML (@DocHandle, '//root/r'  )
 WITH (     
   ms_item_id bigint 'ms_item_id'
  ,part_no varchar(255) 'part_no'
  ,part_name varchar(255) 'part_name'
  ,category_id int 'category_id'
  ,category_name varchar(255)'category_name'
  ,total decimal(38,5)  'total'
 ); 
 EXEC sp_xml_removedocument @DocHandle; 
end
 
 
if @bin_avg_to_adjustment is not null and DATALENGTH(@bin_avg_to_adjustment)>0
begin 
set @xml_tmp=dbo.DecompressToString(@bin_avg_to_adjustment,9)
EXEC sp_xml_preparedocument @DocHandle OUTPUT, @xml_tmp; ;
 
  INSERT into @tp_ms_avg_to_adjustment ( 
  ms_item_id 
  ,part_no 
  ,part_name 
  ,category_id
  ,category_name
  ,total 
 )
 SELECT  *
 FROM OPENXML (@DocHandle, '//root/r'  )
 WITH (     ms_item_id bigint 'ms_item_id'
  ,part_no varchar(255) 'part_no'
  ,part_name varchar(255) 'part_name'
  ,category_id int 'category_id'
  ,category_name varchar(255)'category_name'
  ,total decimal(38,5)  'total'
 );
  EXEC sp_xml_removedocument @DocHandle; 
end
   
if @bin_avg_stock_to_memo is not null and DATALENGTH(@bin_avg_stock_to_memo)>0
begin 

set @xml_tmp=dbo.DecompressToString(@bin_avg_stock_to_memo,9)
EXEC sp_xml_preparedocument @DocHandle OUTPUT, @xml_tmp; 
 INSERT into @tp_ms_avg_stock_to_memo ( 
  ms_memo_type_id  
  ,ms_memo_type_name  
  ,memo_code  
  ,memo_date  
  ,ms_item_id  
  ,part_no  
  ,part_name  
  , uom  
  ,category_id  
  ,category_name  
  ,total_out  
  ,supplier_customer_id  
  ,supplier_customer_code 
  ,supplier_customer_name  
  ,is_affilete  
  ,is_adjustment 
  , ms_date_business_id  
  , ms_date_business_id_from  
 )
 SELECT  *
 FROM OPENXML (@DocHandle, '//root/r'  )
 WITH (    
   ms_memo_type_id int 'ms_memo_type_id'
  ,ms_memo_type_name varchar(255) 'ms_memo_type_name'
  ,memo_code varchar(255) 'memo_code'
  ,memo_date date 'memo_date'
  ,ms_item_id bigint  'ms_item_id'
  ,part_no varchar(255) 'part_no'
  ,part_name varchar(255)  'part_name'
  , uom varchar(255) 'uom'
  ,category_id int 'category_id'
  ,category_name varchar(255) 'category_name'
  ,total_out decimal(38,5)  'total_out'
  ,supplier_customer_id varchar(255)  'supplier_customer_id'
  ,supplier_customer_code varchar(255)  'supplier_customer_code'
  ,supplier_customer_name varchar(255)  'supplier_customer_name'
  ,is_affilete bit 'is_affilete'
  ,is_adjustment bit 'is_adjustment'
  , ms_date_business_id bigint 'ms_date_business_id'
  , ms_date_business_id_from bigint 'ms_date_business_id_from'
 ); 
 EXEC sp_xml_removedocument @DocHandle; 
end


if @bin_avg_out_to_carline is not null and DATALENGTH(@bin_avg_out_to_carline)>0
begin 

set @xml_tmp=dbo.DecompressToString(@bin_avg_out_to_carline,9)
EXEC sp_xml_preparedocument @DocHandle OUTPUT, @xml_tmp ;

 INSERT into @tp_ms_item_out_to_carline ( 
    category_id  
  , category_name  
  , doc_no  
  , doc_date 
  , doc_info  
  , ms_type_prosses_id  
  , ms_type_prosses_name  
  , ms_car_line_no   
  , ms_car_line_name   
  , part_no    
  , part_name    
  , qty_total   
  , ms_car_line_group_id  
  , ms_car_line_group   
  , remark    
  , is_adjustment  
  , ms_date_business_id  
  , ms_date_business_id_from  
  , ms_item_id  
  , uom  
  , teknisi_code
  , teknisi_name
 )
 SELECT  *
 FROM OPENXML (@DocHandle, '//root/r'  )
 WITH (    
    category_id bigint 'category_id'
  , category_name varchar(255) 'category_name'
  , doc_no varchar(255) 'doc_no'
  , doc_date date  'doc_date'
  , doc_info  varchar(1000) 'doc_info'
  , ms_type_prosses_id int  'ms_type_prosses_id'
  , ms_type_prosses_name  varchar(255) 'ms_type_prosses_name'
  , ms_car_line_no  varchar(255) 'ms_car_line_no'
  , ms_car_line_name   varchar(255) 'ms_car_line_name'
  , part_no   varchar(255) 'part_no'
  , part_name   varchar(255) 'part_name'
  , qty_total  decimal(38,5)    'qty_total'
  , ms_car_line_group_id bigint 'ms_car_line_group_id'
  , ms_car_line_group  varchar(255)  'ms_car_line_group'
  , remark   varchar(1000) 'remark'
  ,is_adjustment bit 'is_adjustment'
  , ms_date_business_id bigint 'ms_date_business_id'
  , ms_date_business_id_from bigint 'ms_date_business_id_from'
  , ms_item_id bigint 'ms_item_id'
  , uom varchar(255) 'uom'
  , teknisi_code varchar(255) 'teknisi_code'
  , teknisi_name varchar(255) 'teknisi_name'
 ); 
 EXEC sp_xml_removedocument @DocHandle; 
end 

if @bin_avg_in_from_sto is not null and DATALENGTH(@bin_avg_in_from_sto)>0
begin 

set @xml_tmp=dbo.DecompressToString(@bin_avg_in_from_sto,9)
EXEC sp_xml_preparedocument @DocHandle OUTPUT, @xml_tmp;  

 INSERT into @tp_ms_avg_in_from_sto 
 SELECT  *
 FROM OPENXML (@DocHandle, '//root/r'  )
 WITH (    
   ms_in_item_detail_id  bigint 'ms_in_item_detail_id'
  , category_id bigint 'category_id'
  , category_name varchar(255) 'category_name'
  , ms_date_business_id bigint 'ms_date_business_id'
  , ms_date_business_id_from bigint 'ms_date_business_id_from'
  , ms_item_id bigint 'ms_item_id'
  , part_no varchar(255) 'part_no'
  , part_name varchar(255)  'part_name'
  , qty_pakai decimal(38,5) 'qty_pakai'
  , uom  varchar(255) 'uom'
  , ori_amount_idr decimal(38,5) 'ori_amount_idr'
  , ori_amount_usd decimal(38,5)  'ori_amount_usd'
  , doc_code  varchar(255) 'doc_code'
  , doc_date  date 'doc_date'
  , info   varchar(1000) 'info'
  , bc_type  varchar(255) 'bc_type'
  , car   varchar(255) 'car'
  , bc_no  varchar(255) 'bc_no'
  , bc_date date 'bc_date'
  , seri int 'seri'
  , is_adjustment bit 'is_adjustment'
 ); 
 EXEC sp_xml_removedocument @DocHandle; 
end 


 if @bin_avg_in_from_adjustment is not null and DATALENGTH(@bin_avg_in_from_adjustment)>0
 begin 

 set @xml_tmp=dbo.DecompressToString(@bin_avg_in_from_adjustment,9)
 EXEC sp_xml_preparedocument @DocHandle OUTPUT, @xml_tmp;   

  INSERT into @tp_ms_avg_in_from_adjustment 
  SELECT  *
  FROM OPENXML (@DocHandle, '//root/r'  )
  WITH (    
    ms_in_item_detail_id        bigint 'ms_in_item_detail_id'
   , category_id bigint 'category_id'
   , category_name varchar(255) 'category_name'
   , ms_date_business_id bigint 'ms_date_business_id'
   , ms_date_business_id_from bigint 'ms_date_business_id_from'
   , ms_item_id bigint 'ms_item_id'
   , part_no varchar(255) 'part_no'
   , part_name varchar(255)  'part_name'
   , qty_pakai decimal(38,5) 'qty_pakai'
   , uom  varchar(255) 'uom'
   , ori_amount_idr decimal(38,5) 'ori_amount_idr'
   , ori_amount_usd decimal(38,5)  'ori_amount_usd'
   , doc_code  varchar(255) 'doc_code'
   , doc_date  date 'doc_date'
   , info   varchar(1000) 'info'
   , bc_type  varchar(255) 'bc_type'
   , car   varchar(255) 'car'
   , bc_no  varchar(255) 'bc_no'
   , bc_date date 'bc_date'
   , seri int 'seri'
   , is_adjustment bit    'is_adjustment'
  ); 
  EXEC sp_xml_removedocument @DocHandle; 
 end 


 
 if @bin_avg_in_from_retur is not null and DATALENGTH(@bin_avg_in_from_retur)>0
 begin 

 set @xml_tmp=dbo.DecompressToString(@bin_avg_in_from_retur,9)
 EXEC sp_xml_preparedocument @DocHandle OUTPUT, @xml_tmp;   
 
  INSERT into @tp_ms_avg_in_from_retur 
  SELECT  *
  FROM OPENXML (@DocHandle, '//root/r'  )
  WITH (    
    ms_in_item_detail_id       bigint 'ms_in_item_detail_id'
   ,category_id bigint 'category_id'
   ,category_name varchar(255) 'category_name'
   ,ms_date_business_id bigint 'ms_date_business_id'
   ,ms_date_business_id_from bigint 'ms_date_business_id_from'
   ,ms_item_id bigint 'ms_item_id'
   ,part_no varchar(255) 'part_no'
   ,part_name varchar(255)  'part_name'
   ,uom  varchar(255) 'uom'
   ,qty_pakai  decimal(38,5) 'qty_pakai'
   ,retur_no  varchar(255) 'retur_no'
   ,retur_date  date 'retur_date'
   ,retur_info  varchar(1000) 'retur_info'
   ,is_adjustment bit    'is_adjustment'
  ); 
  EXEC sp_xml_removedocument @DocHandle; 
 end 

 
 if @bin_avg_in_from_bc is not null and DATALENGTH(@bin_avg_in_from_bc)>0
 begin 
 set @xml_tmp=dbo.DecompressToString(@bin_avg_in_from_bc,9)
 EXEC sp_xml_preparedocument @DocHandle OUTPUT, @xml_tmp;   
  
  INSERT into @tp_ms_avg_in_from_bc 
  SELECT  *
  FROM OPENXML (@DocHandle, '//root/r'  )
  WITH (    
    ms_in_item_detail_id bigint  'ms_in_item_detail_id'
   ,category_id bigint 'category_id'
   ,category_name varchar(255) 'category_name'
   ,ms_date_business_id bigint 'ms_date_business_id'
   ,ms_date_business_id_from bigint 'ms_date_business_id_from'
   ,ms_item_id bigint 'ms_item_id'
   ,part_no varchar(255) 'part_no'
   ,part_name varchar(255)  'part_name'
   ,uom  varchar(255) 'uom'
   ,qty_pakai decimal(38,5) 'qty_pakai'
   ,ori_amount_idr decimal(38,5) 'ori_amount_idr'
   ,ori_amount_usd decimal(38,5) 'ori_amount_usd'
   ,bc_type  varchar(255) 'bc_type'
   ,car   varchar(255) 'car'
   ,bc_no  varchar(255) 'bc_no'
   ,bc_date date 'bc_date'
   ,receive_no varchar(255) 'receive_no'
   ,receive_date  date 'receive_date'
   ,po_no varchar(255) 'po_no'
   ,po_date  date 'po_date'
   ,supplier_customer_id bigint 'supplier_customer_id'
   ,supplier_customer_code varchar(255) 'supplier_customer_code'
   ,supplier_customer_name varchar(255) 'supplier_customer_name'
   ,is_affilete int  'is_affilete'
   ,invoice_no varchar(1000) 'invoice_no'
   ,invoice_date date 'invoice_date'
   ,seri int 'seri'
   ,is_adjustment bit   'is_adjustment'
   ,is_molts bit 'is_molts'
   ,is_import bit 'is_import'
   ,is_40 bit 'is_40'
  ); 
  EXEC sp_xml_removedocument @DocHandle; 
 end 

 if @bin_avg_catergory_detail_in_out is not null and DATALENGTH(@bin_avg_catergory_detail_in_out)>0
 begin 
 set @xml_tmp=dbo.DecompressToString(@bin_avg_catergory_detail_in_out,9)
 EXEC sp_xml_preparedocument @DocHandle OUTPUT, @xml_tmp;   
  
    INSERT into @tp_ms_avg_catergory_detail_in_out 
  SELECT  *
  FROM OPENXML (@DocHandle, '//root/r'  )
  WITH (    
   category_id bigint 'category_id'
   , category_name  varchar(255)  'category_name'
   , category_initial  varchar(255)  'category_initial'
   , category_color  varchar(255)  'category_color'
   , show bit  'show'
   , order_by int  'order_by'
   , sta_qty decimal(38,5)    'sta_qty'
   , sta_amount_usd decimal(38,5)   'sta_amount_usd'
   , in_qty decimal(38,5) 'in_qty'   
   , in_amount_usd decimal(38,5)  'in_amount_usd' 
   , out_qty decimal(38,5)   'out_qty'  
   , out_amount decimal(38,5)  'out_amount'   
   , adj_qty decimal(38,5)   'adj_qty' 
   , adj_amount decimal(38,5)  'adj_amount'   
   , end_qty decimal(38,5) 'end_qty'
   , end_amount decimal(38,5) 'end_amount'
  ); 
  EXEC sp_xml_removedocument @DocHandle; 
 end 
 
     
 if @bin_item_moving is not null and DATALENGTH(@bin_item_moving)>0
 begin 
 set @xml_tmp=dbo.DecompressToString(@bin_item_moving,9)
 --select cast(dbo.DecompressToString(@bin_item_moving,9) as xml)
 EXEC sp_xml_preparedocument @DocHandle OUTPUT, @xml_tmp;    
    INSERT into @tp_ms_item_moving 
  SELECT  *
  FROM OPENXML (@DocHandle, '//root/r'  )
  WITH (     
  ms_item_id bigint   'ms_item_id',  
  part_no varchar(255)  'part_no' ,
  part_name varchar(255) 'part_name' ,
  uom varchar(3) 'uom' ,
  base_no varchar(50) 'base_no' ,
  base_name varchar(255) 'base_name' ,
  category_id int 'category_id' ,
  category_name varchar(255) 'category_name',
  qty_1 decimal(38, 8)  'qty_1',
  qty_2 decimal(38, 8)  'qty_2',
  qty_3 decimal(38, 8)  'qty_3',
  qty_4 decimal(38, 8)  'qty_4',
  qty_5 decimal(38, 8)  'qty_5',
  qty_6 decimal(38, 8) 'qty_6' ,
  qty_7 decimal(38, 8) 'qty_7',
  qty_8 decimal(38, 8) 'qty_8',
  qty_9 decimal(38, 8) 'qty_9',
  qty_10 decimal(38, 8) 'qty_10',
  qty_11 decimal(38, 8) 'qty_11',
  qty_12 decimal(38, 8) 'qty_12',
  qty_avg decimal(18, 8) 'qty_avg',
  stdev_qty decimal(18, 8) 'stdev_qty',
  service_level decimal(18, 8) 'service_level',
  service_factor decimal(18, 4) 'service_factor',
  safty_stock decimal(18, 4) 'safty_stock',
  before_min decimal(18, 4) 'before_min',
  before_max decimal(18, 4) 'before_max',
  after_min decimal(18, 4) 'after_min',
  after_max decimal(18, 4) 'after_max',
  actual_qty decimal(18, 4) 'actual_qty',
  start_month bigint 'start_month',
  count_moving int 'count_moving',
  fast_moving int 'fast_moving',
  sum_qty decimal(38, 4) 'sum_qty',
  max_qty decimal(38, 4) 'max_qty' 
  ); 
  EXEC sp_xml_removedocument @DocHandle; 
 end 
 
 if @bin_month_moving is not null and DATALENGTH(@bin_month_moving)>0
 begin 
 set @xml_tmp=dbo.DecompressToString(@bin_month_moving,9)
 EXEC sp_xml_preparedocument @DocHandle OUTPUT, @xml_tmp;    
    INSERT into @tp_month_moving 
  SELECT  *
  FROM OPENXML (@DocHandle, '//root/r'  )
  WITH (     
   ms_cost_final_avg_id bigint 'ms_cost_final_avg_id'
  , end_date date 'end_date'
  , urut int 'urut'
  ); 
  EXEC sp_xml_removedocument @DocHandle; 
 end 
 
end 

end

  --- GROUPING BY SUPPLIER
 insert into @tp_ms_in_by_supplier_local(
  supplier_customer_id
    ,supplier_customer_code
    ,supplier_customer_name 
 ,category_id 
 ,in_qty
 ,in_amount
 ) 

 select   
   xsource.supplier_customer_id  
  ,xsource.supplier_customer_code  
  ,xsource.supplier_customer_name   
  ,isnull(xsource.category_id,-1)  
  ,sum(isnull(xsource.qty_pakai,0)) 
  ,sum(isnull(xsource.ori_amount_usd,0))  
 from @tp_ms_avg_in_from_bc as xsource   
 where  
   xsource.is_import=0 and isnull(xsource.is_affilete,0) =0
  and exists (
  select category_id from(select * FROM   @tp_ms_avg_catergory_detail_in_out
  where show =1
 )xfillcategory where xsource.category_id=xfillcategory.category_id)
 and not isnull(xsource.category_id,-1) =-1 
 group by xsource.supplier_customer_id  
  ,xsource.supplier_customer_code  
  ,xsource.supplier_customer_name   
  ,isnull(xsource.category_id,-1)  
 order by isnull(xsource.category_id,-1) , xsource.supplier_customer_code
  
  
insert into @tp_ms_in_by_supplier_import(
  supplier_customer_id
    ,supplier_customer_code
    ,supplier_customer_name  
 ,is_affilete 
 ,in_qty
 ,in_amount
 )  

select   
  xsource.supplier_customer_id  
 ,xsource.supplier_customer_code  
 ,xsource.supplier_customer_name     
 ,isnull(xsource.is_affilete,0)  
 ,sum(isnull(xsource.qty_pakai,0)) 
 ,sum(isnull(xsource.ori_amount_usd,0)) 
from @tp_ms_avg_in_from_bc  as xsource
where   ((xsource.is_import)=1 or (xsource.is_import=0 and isnull(xsource.is_affilete,0) =1))
 and exists (
  select category_id from(select * FROM   @tp_ms_avg_catergory_detail_in_out
  where show =1
 )xfillcategory where xsource.category_id=xfillcategory.category_id)
 and not isnull(xsource.category_id,-1) =-1 
group by 
  xsource.supplier_customer_id  
 ,xsource.supplier_customer_code  
 ,xsource.supplier_customer_name     
 ,isnull(xsource.is_affilete,0)  
order by isnull(xsource.is_affilete,0) , xsource.supplier_customer_code
 
   
declare @format_col xml=(
SELECT         
category_id as '@cid'
, replace(category_name ,' ', '_') as '@rName'
,category_name  as '@rNameOri'
, category_color as '@rColor'
, isnull(nullif(category_initial,''''),lower(dbo.CombineFirstWord( category_name,4))) as '@ri'
, isnull(sta_qty,0) as '@sta_qty'
, isnull(sta_amount_usd,0) as '@sta_amount'
, isnull(in_qty,0) as '@in_qty'
, isnull(in_amount_usd ,0) as '@in_amount'
, isnull(out_qty,0) as '@out_qty'
, isnull(out_amount ,0) as '@out_amount'
, isnull(adj_qty,0) as '@adj_qty'
, isnull(adj_amount ,0) as '@adj_amount' 
, isnull(end_qty,0) as '@end_qty'
, isnull(end_amount ,0) as '@end_amount'
FROM            @tp_ms_avg_catergory_detail_in_out  
where show =1
order by order_by
for xml path ('xformat'), type 
) 

set  @data_in_from_bc  =(
SELECT       
 category_id as '@cid'   
,is_molts   as '@is_molt'  
,is_import   as '@is_import'  
,is_40     as '@is_40'  
,ms_item_id as 'id'
,part_no   as 'p_no'
,part_name   as 'p_na'
,uom    as 'p_u'
,isnull(qty_pakai,0) as 'qty' 
,isnull(ori_amount_usd,0)  as 'amt' 
,bc_type as 'bc_i'
,car   as 'bc_a'
,bc_no   as 'bc_d'
,bc_date  as 'bc_t'
,receive_no   as 'rc_n'
,receive_date    as 'rc_d'
,po_no   as 'po_n'
,po_date   as 'po_d'
,supplier_customer_id as 's_id'
,supplier_customer_code  as 's_n'
,supplier_customer_name  as 's_c' 
,invoice_no as 'inv_n'
,invoice_date   as 'inv_d'  
FROM            @tp_ms_avg_in_from_bc as dt    
where    exists (
  select category_id from(select * FROM   @tp_ms_avg_catergory_detail_in_out
  where show =1
 )xfillcategory where dt.category_id=xfillcategory.category_id) 
order by dt.receive_date ,dt.receive_no ,dt.part_no
for xml path ('i_bc'), type 
) 

set  @data_in_supplier_local  =(
SELECT       
 category_id as '@cid'    
,supplier_customer_id as 's_id'
,supplier_customer_code  as 's_n'
,supplier_customer_name  as 's_c' 
,is_affilete   as 'aff' 
,isnull(in_qty,0)  as 'qty'
,isnull(in_amount,0)   as 'amt'
FROM            @tp_ms_in_by_supplier_local as dt   
order by dt.category_id 
for xml path ('i_sl'), type 
) 

set  @data_in_supplier_import  =(
SELECT       
 is_affilete as '@af' 
,supplier_customer_id as 's_id'
,supplier_customer_code  as 's_n'
,supplier_customer_name  as 's_c'  
, isnull(in_qty,0)  as 'qty'
, isnull(in_amount,0)  as 'amt'
FROM            @tp_ms_in_by_supplier_import as dt    
order by dt.is_affilete 
for xml path ('i_si'), type 
)  

set @data_in_from_retur=(
SELECT       
 dt.category_id as '@cid' 
,dt.ms_item_id as 'id'
,dt.part_no   as 'p_no'
,dt.part_name   as 'p_na'
,dt.uom    as 'p_u'
,dt.qty_pakai as 'qty' 
,dt.retur_no  as 'rt_n'
,dt.retur_date  as 'rt_d'
,dt.retur_info  as 'rt_i'
FROM            @tp_ms_avg_in_from_retur  as dt    
where    exists (
  select category_id from(select * FROM   @tp_ms_avg_catergory_detail_in_out
  where show =1
 )xfillcategory where dt.category_id=xfillcategory.category_id) 

order by dt.category_id
for xml path ('i_r'), type 
)

set  @data_in_from_adjustment  =(
SELECT       
 dt.category_id as '@cid'   
, dt.ms_item_id as 'id'
, dt.part_no   as 'p_no'
, dt.part_name   as 'p_na'
, dt.uom    as 'p_u'
, isnull(dt.qty_pakai,0) as 'qty'  
, isnull(dt.ori_amount_usd,0) as 'amt'
, dt.doc_code  'd_c'
, dt.doc_date  'd_d'
, dt.info    'd_i'
, dt.bc_type as 'bc_i'
, dt.car   as 'bc_a'
, dt.bc_no   as 'bc_d'
, dt.bc_date  as 'bc_t'  
FROM            @tp_ms_avg_in_from_adjustment   as dt 
where    exists (
  select category_id from(select * FROM   @tp_ms_avg_catergory_detail_in_out
  where show =1
 )xfillcategory where dt.category_id=xfillcategory.category_id) 

order by dt.category_id
for xml path ('i_adj'), type 
)


set  @data_in_from_sto  =(
SELECT       
 dt.category_id as '@cid'   
, dt.ms_item_id as 'id'
, dt.part_no   as 'p_no'
, dt.part_name   as 'p_na'
, dt.uom    as 'p_u'
, isnull(dt.qty_pakai,0) as 'qty'  
, isnull(dt.ori_amount_usd,0) as 'amt'
, dt.doc_code  'd_c'
, dt.doc_date  'd_d'
, dt.info    'd_i'
, dt.bc_type as 'bc_i'
, dt.car   as 'bc_a'
, dt.bc_no   as 'bc_d'
, dt.bc_date  as 'bc_t'  
FROM            @tp_ms_avg_in_from_sto   as dt    
where    exists (
  select category_id from(select * FROM   @tp_ms_avg_catergory_detail_in_out
  where show =1
 )xfillcategory where dt.category_id=xfillcategory.category_id) 

order by dt.category_id
for xml path ('i_sto'), type 
) 

set  @data_out_carline  =(
SELECT       
  xdata.category_id as '@cid'   
, xdata.doc_no as 'd_n'
, xdata.doc_date as 'd_d' 
, xdata.doc_info  as 'd_i'
, xdata.ms_type_prosses_id as 'cl_no'
, xdata.ms_type_prosses_name   as 'cl_name'
, xdata.ms_car_line_no  as 'p_id' 
, xdata.ms_car_line_name   as 'p_n'
--, xdata.ms_type_prosses_id as 'p_id'
--, xdata.ms_type_prosses_name as 'p_n'
--, xdata.ms_car_line_no as 'cl_no'
--, xdata.ms_car_line_name as 'cl_name'
, xdata.ms_car_line_group_id as 'cl_gid'
, xdata.ms_car_line_group  as 'cl_gn'
, xdata.ms_item_id as 'id'
, xdata.part_no   as 'p_no'
, xdata.part_name   as 'p_na'
, xdata.uom    as 'p_u' 
, isnull(xdata.qty_total,0)  as 'qty'
, isnull(data_item.final_avg_price_usd,0) as 'price'
, isnull(xdata.qty_total * data_item.final_avg_price_usd,0) as 'amt'
, xdata.remark    as 'rm' 
, xdata.teknisi_code    as 'tc' 
, xdata.teknisi_name    as 'tn' 
FROM            @tp_ms_item_out_to_carline   as xdata INNER JOIN 
@tp_ms_item_avg_pre as data_item  ON xdata.ms_item_id = data_item.ms_item_id 
where    exists (
  select category_id from(select * FROM   @tp_ms_avg_catergory_detail_in_out
  where show =1
 )xfillcategory where data_item.category_id=xfillcategory.category_id) 

order by xdata.category_id,xdata.ms_car_line_group_id
for xml path ('o_cl'), type 
) 

set  @data_out_memo  =(
SELECT         
  xdata.category_id as '@cid'  
 ,xdata.ms_memo_type_id as 'mt_id'
 ,xdata.ms_memo_type_name  as 'm_tn'
 ,xdata.memo_code  as 'm_c'
 ,xdata.memo_date  as 'm_d'
, xdata.ms_item_id as 'id'
, xdata.part_no   as 'p_no'
, xdata.part_name   as 'p_na'
, xdata.uom    as 'p_u'  
, isnull(xdata.total_out,0) as 'qty'
, isnull(xdata.total_out * data_item.final_avg_price_usd,0) as 'amt'
, xdata.supplier_customer_id as 's_id'
, xdata.supplier_customer_code  as 's_c'
, xdata.supplier_customer_name  as 's_n' 
 ,xdata.is_affilete 'aff' 
FROM            @tp_ms_avg_stock_to_memo  as xdata INNER JOIN 
@tp_ms_item_avg_pre as data_item  ON xdata.ms_item_id = data_item.ms_item_id 
where    exists (
  select category_id from(select * FROM   @tp_ms_avg_catergory_detail_in_out
  where show =1
 )xfillcategory where data_item.category_id=xfillcategory.category_id) 
order by xdata.category_id,xdata.memo_date,xdata.memo_code
for xml path ('o_m'), type
) 
 
/* set @data_out_adjustment =( SELECT category_id as '@cid' ,* FROM @tp_ms_avg_to_adjustment order by category_id for xml path ('o_adj'), type ) set @data_out_sto =( SELECT category_id as '@cid' ,* FROM @tp_ms_avg_to_sto --where exists ( --select category_id from(select * FROM @tp_ms_avg_catergory_detail_in_out --where show =1 --)xdata where [@tp_ms_avg_to_sto].category_id=xdata.category_id) order by category_id for xml path ('o_sto'), type ) */
declare @item_in_pivot xml
declare @item_out_pivot xml  
declare @raw_pivot_out_hdr xml  

declare @item_data xml
if @with_detail_daily=1
begin 
 
 declare @format_bc_in table( ms_date_business_id int)
 insert into @format_bc_in
 SELECT    xsource.ms_date_business_id '@dt' 
 FROM            @tp_ms_avg_in_from_bc as xsource 
 where    exists (
  select category_id from(select * FROM   @tp_ms_avg_catergory_detail_in_out
  where show =1
 )xfillcategory where xsource.category_id=xfillcategory.category_id) 
 group by xsource.ms_date_business_id
 order by xsource.ms_date_business_id

 declare @raw_pivot_bc_in_hdr xml  
 set  @raw_pivot_bc_in_hdr =(
 SELECT    ms_date_business_id '@dt' 
 from @format_bc_in
 for xml path('format_bc_in')
 )
 
 declare @format_bc_out table( ms_date_business_id int)
 insert into @format_bc_out
 SELECT    ms_date_business_id '@dt' from ( 
  SELECT xsource.ms_date_business_id
  FROM            @tp_ms_item_out_to_carline  as xsource 
  where    exists (
   select category_id from(select * FROM   @tp_ms_avg_catergory_detail_in_out
   where show =1
  )xfillcategory where xsource.category_id=xfillcategory.category_id) 

 union all 
  SELECT xsource.ms_date_business_id
  FROM            @tp_ms_avg_stock_to_memo  as xsource 
  where    exists (
   select category_id from(select * FROM   @tp_ms_avg_catergory_detail_in_out
   where show =1
  )xfillcategory where xsource.category_id=xfillcategory.category_id) 

 )xgab
 group by ms_date_business_id
 order by ms_date_business_id
  
  

 set  @raw_pivot_out_hdr =(
  SELECT    ms_date_business_id '@dt' 
  from @format_bc_out
  for xml path('format_out')
 )

 set @item_in_pivot=(   
      select 
       xsource.ms_item_id   as '@id'
      ,xsource.ms_date_business_id   as '@bid'
      ,sum(isnull(xsource.qty_pakai,0))    as '@qty'
      ,sum(isnull(xsource.ori_amount_usd,0)) as '@usd'
       ,(STUFF(( 
      SELECT     ','+  isnull(xinvoice.invoice_no,'') 
      FROM           @tp_ms_avg_in_from_bc as xinvoice   
      where    exists (
       select category_id from(select * FROM   @tp_ms_avg_catergory_detail_in_out
       where show =1
      )xfillcategory where xinvoice.category_id=xfillcategory.category_id)  
      and   xinvoice.ms_date_business_id=xinvoice.ms_date_business_id
      and xinvoice.ms_item_id=xsource.ms_item_id  
      for xml  PATH(''), type 
      ).value('.', 'varchar(max)'), 1, 1, '')  
      ) as  '@inv'
      from @tp_ms_avg_in_from_bc as xsource  
      GROUP BY  
      ms_item_id, ms_date_business_id
      for xml path ('i_in') , root ('list_in')
      ) 

 set @item_out_pivot=(   
 select 
  ms_item_id   as '@id'
 ,ms_date_business_id   as '@bid'
 ,sum(isnull(qty_total,0))    as '@qty' 
 from ( 
  SELECT
   xsource.ms_date_business_id
  ,xsource.ms_item_id
  ,xsource.qty_total 
  FROM            @tp_ms_item_out_to_carline as xsource    
   where    exists (
       select category_id from(select * FROM   @tp_ms_avg_catergory_detail_in_out
       where show =1
      )xfillcategory where xsource.category_id=xfillcategory.category_id)  
      

  union all 
  SELECT ms_date_business_id
  ,xsource.ms_item_id
  ,xsource.total_out as qty_total
  FROM            @tp_ms_avg_stock_to_memo as xsource   
  where    exists (
       select category_id from(select * FROM   @tp_ms_avg_catergory_detail_in_out
       where show =1
      )xfillcategory where xsource.category_id=xfillcategory.category_id)  
      
 
 ) xdata_out_pre 
 group by ms_item_id 
 ,ms_date_business_id 
 
      for xml path ('i_out') , root ('list_out')
 )
  
 
declare @RUMUS_SELECT_PIVOT_BC_IN_2 nvarchar(max) =
cast(STUFF(( 

SELECT  N', isnull( data_in.inv' + cast(ms_date_business_id as nvarchar(max)) + ','''') as inv' + cast(ms_date_business_id as nvarchar(max))  + char(13) +
 N', isnull( data_in.it' + cast(ms_date_business_id as nvarchar(max)) + ',0) as it' + cast(ms_date_business_id as nvarchar(max))  + char(13) +
 N', isnull( data_in.ip' + cast(ms_date_business_id as nvarchar(max)) + ',0) as ip' + cast(ms_date_business_id as nvarchar(max))  + char(13)  
from @format_bc_in

 
 for xml  PATH(''), type
).value('.', 'nvarchar(max)'), 1, 0, '') 
 as  nvarchar(max)) 
 



 
declare @RUMUS_VIPOT_BC_IN_2 nvarchar(max) =
cast(STUFF(( 
SELECT
N', sum(case when xdata_in_pre.ms_date_business_id='+    cast(xsource.ms_date_business_id  as nvarchar(max)) + N' then isnull(xdata_in_pre.qty_pakai ,0) else 0 end ) as it' +  cast(ms_date_business_id  as nvarchar(max))  + char(13) +
N', sum(case when xdata_in_pre.ms_date_business_id='+    cast(xsource.ms_date_business_id  as nvarchar(max)) + N' then isnull(xdata_in_pre.ori_price_total_usd,0) else 0 end ) as ip' +  cast(ms_date_business_id  as nvarchar(max))  + char(13) 
   AS [text()]   
FROM            @tp_ms_avg_in_from_bc as  xsource
where    exists (
       select category_id from(select * FROM   @tp_ms_avg_catergory_detail_in_out
       where show =1
      )xfillcategory where xsource.category_id=xfillcategory.category_id)  
    
group by xsource.ms_date_business_id
order by xsource.ms_date_business_id
 for xml  PATH(''), type
).value('.', 'nvarchar(max)'), 1, 0, '') 
 as  nvarchar(max)) 
  

declare @RUMUS_VIPOT_BC_IN_3 nvarchar(max) =
cast(STUFF(( 
SELECT  
N', (STUFF(( SELECT '',''+ isnull(xinvoice.invoice_no,'''') FROM @tp_ms_avg_in_from_bc as xinvoice where xinvoice.ms_date_business_id=' +  cast(ms_date_business_id  as nvarchar(max)) +
' and exists ( select category_id from(select * FROM @tp_ms_avg_catergory_detail_in_out where show =1 )xfillcategory where xinvoice.category_id=xfillcategory.category_id) and xinvoice.ms_item_id=xgab1.ms_item_id for xml PATH(''''), type ).value(''.'', ''varchar(max)''), 1, 1, '''') ) as inv' +  cast(xsource.ms_date_business_id  as nvarchar(max))   + char(13) +
N', sum(it'+    cast(xsource.ms_date_business_id  as nvarchar(max)) + N') as it' +  cast(xsource.ms_date_business_id  as nvarchar(max))  + char(13) +
N', sum(ip'+    cast(xsource.ms_date_business_id  as nvarchar(max)) + N') as ip' +  cast(xsource.ms_date_business_id  as nvarchar(max))  + char(13) 
   AS [text()]   
FROM            @tp_ms_avg_in_from_bc as  xsource
 where    exists (
       select category_id from(select * FROM   @tp_ms_avg_catergory_detail_in_out
       where show =1
      )xfillcategory where xsource.category_id=xfillcategory.category_id)  
    
group by xsource.ms_date_business_id
order by xsource.ms_date_business_id
 for xml  PATH(''), type
).value('.', 'nvarchar(max)'), 1,0, '') 
 as  nvarchar(max)) 
  

declare @raw_pivot_item xml 

declare @RUMUS_SELECT_PIVOT_OUT_2 nvarchar(max) =
cast(STUFF(( 

SELECT  N', isnull( data_out.ot' + cast(ms_date_business_id as nvarchar(max)) + ',0) as ot' + cast(ms_date_business_id as nvarchar(max))  + char(13)  
from @format_bc_out
 for xml  PATH(''), type
).value('.', 'nvarchar(max)'), 1, 0, '') 
 as  nvarchar(max)) 
 
declare @RUMUS_VIPOT_OUT_2 nvarchar(max) =
cast(STUFF(( 
SELECT      N', sum(case when ms_date_business_id='+    cast(ms_date_business_id  as nvarchar(max)) + N' then isnull(qty_total ,0) else 0 end ) as ot' +  cast(ms_date_business_id  as nvarchar(max))   + char(13) 
   AS [text()] 
 from ( 
 SELECT xsource.ms_date_business_id
 FROM            @tp_ms_item_out_to_carline  as  xsource 
 where    exists (
       select category_id from(select * FROM   @tp_ms_avg_catergory_detail_in_out
       where show =1
      )xfillcategory where xsource.category_id=xfillcategory.category_id)  
    
union all 
 SELECT xsource.ms_date_business_id
 FROM            @tp_ms_avg_stock_to_memo as xsource
 where    exists (
       select category_id from(select * FROM   @tp_ms_avg_catergory_detail_in_out
       where show =1
      )xfillcategory where xsource.category_id=xfillcategory.category_id)  
    

)xgab
group by ms_date_business_id
order by ms_date_business_id
    
 for xml  PATH(''), type
).value('.', 'nvarchar(max)'), 1, 0, '') 
 as  nvarchar(max))
  
   
declare @RUMUS_VIPOT_OUT_3 nvarchar(max) =
cast(STUFF(( 
SELECT      N', sum(ot'+    cast(ms_date_business_id  as nvarchar(max)) + N') as ot' +  cast(ms_date_business_id  as nvarchar(max))   + char(13) 
   AS [text()] 
 from ( 
 SELECT xsource.ms_date_business_id
 FROM            @tp_ms_item_out_to_carline as xsource
 where    exists (
       select category_id from(select * FROM   @tp_ms_avg_catergory_detail_in_out
       where show =1
      )xfillcategory where xsource.category_id=xfillcategory.category_id)  
    
union all 
 SELECT xsource.ms_date_business_id
 FROM            @tp_ms_avg_stock_to_memo as xsource 
 where    exists (
       select category_id from(select * FROM   @tp_ms_avg_catergory_detail_in_out
       where show =1
      )xfillcategory where xsource.category_id=xfillcategory.category_id)  
    

)xgab
group by ms_date_business_id
order by ms_date_business_id
    
 for xml  PATH(''), type
).value('.', 'nvarchar(max)'), 1,0, '') 
 as  nvarchar(max))
   
declare @RUMUS_SELECT_ITEM_IN_OUT_VIPOT nvarchar(max)= 
 
N' set @item_data=( select category_id as ''@cid'' , category_id as ''cid2'' , data_item.ms_item_id as ''id'' , data_item.part_no as ''p_no'' , data_item.part_name as ''p_na'' , data_item.uom as ''p_u'' , data_item.rack_no as ''rc_n'' , data_item.sta_qty as ''a_q'' , data_item.sta_amount_usd as ''a_a'' , data_item.in_qty as ''i_q'' , data_item.in_amount_usd as ''i_a'' , data_item.out_carline_qty + data_item.out_memo_qty as ''o_q'' , data_item.adj_qty + data_item.sto_qty + data_item.retur_qty as ''j_q'' , data_item.final_avg_price_usd as ''f_p'' , (data_item.sta_qty + data_item.in_qty + data_item.adj_qty + data_item.sto_qty + data_item.retur_qty)-(data_item.out_carline_qty + data_item.out_memo_qty) as ''e_q'' ' +
 case when @RUMUS_SELECT_PIVOT_BC_IN_2 is null then '' else   @RUMUS_SELECT_PIVOT_BC_IN_2  end +
 case when @RUMUS_SELECT_PIVOT_OUT_2 is null then '' else   @RUMUS_SELECT_PIVOT_OUT_2  end +
' FROM @tp_ms_item_avg_pre AS data_item '
 +
 case when @RUMUS_VIPOT_OUT_2 is null then '' else  
' LEFT OUTER JOIN ( SELECT ms_item_id '+ cast(@RUMUS_VIPOT_OUT_3  as  nvarchar(max)) +  
N'FROM (SELECT xdata_out_pre.ms_item_id '+ cast(@RUMUS_VIPOT_OUT_2  as  nvarchar(max)) + 
N' from ( SELECT ms_date_business_id ,ms_item_id ,qty_total FROM @tp_ms_item_out_to_carline as xsource where exists ( select category_id from(select * FROM @tp_ms_avg_catergory_detail_in_out where show =1 )xfillcategory where xsource.category_id=xfillcategory.category_id) union all SELECT ms_date_business_id ,ms_item_id ,total_out as qty_total FROM @tp_ms_avg_stock_to_memo as xsource where exists ( select category_id from(select * FROM @tp_ms_avg_catergory_detail_in_out where show =1 )xfillcategory where xsource.category_id=xfillcategory.category_id) ) xdata_out_pre group by ms_item_id ,ms_date_business_id )xgabout group by ms_item_id ) AS data_out ON data_item.ms_item_id = data_out.ms_item_id ' 
end 
+
case when @RUMUS_VIPOT_BC_IN_2 is null then '' else  

' LEFT OUTER JOIN ( select ms_item_id ' + cast(@RUMUS_VIPOT_BC_IN_3  as  nvarchar(max)) + 
' FROM ( SELECT xdata_in_pre.ms_item_id ' + cast(@RUMUS_VIPOT_BC_IN_2  as  nvarchar(max)) + 
  
N' from ( select ms_date_business_id ,ms_item_id ,sum(isnull(qty_pakai,0)) as qty_pakai ,sum(isnull(ori_amount_usd,0)) as ori_price_total_usd from @tp_ms_avg_in_from_bc as xsource where exists ( select category_id from(select * FROM @tp_ms_avg_catergory_detail_in_out where show =1 )xfillcategory where xsource.category_id=xfillcategory.category_id) GROUP BY ms_date_business_id ,ms_item_id ) as xdata_in_pre GROUP BY ms_item_id,ms_date_business_id )xgab1 group by ms_item_id ) AS data_in ON data_item.ms_item_id = data_in.ms_item_id '
end 
+
' where exists ( select category_id from(select * FROM @tp_ms_avg_catergory_detail_in_out where show =1 )xfillcategory where data_item.category_id=xfillcategory.category_id) order by data_item.part_no for xml path (''r''),root(''d_i'')) ' 
declare  @ParmDefinition_out nvarchar(max) = N'@tp_ms_item_avg_pre tp_ms_item_avg_pre READONLY, @tp_ms_avg_in_from_bc tp_ms_avg_in_from_bc READONLY ,@tp_ms_item_out_to_carline tp_ms_item_out_to_carline READONLY ,@tp_ms_avg_stock_to_memo tp_ms_avg_stock_to_memo READONLY ,@tp_ms_avg_catergory_detail_in_out tp_ms_avg_catergory_detail_in_out READONLY , @item_data xml output';
EXECUTE sp_executesql  @RUMUS_SELECT_ITEM_IN_OUT_VIPOT, @ParmDefinition_out
 ,@tp_ms_item_avg_pre = @tp_ms_item_avg_pre
 ,@tp_ms_avg_in_from_bc = @tp_ms_avg_in_from_bc
 ,@tp_ms_avg_catergory_detail_in_out=@tp_ms_avg_catergory_detail_in_out
 ,@tp_ms_item_out_to_carline = @tp_ms_item_out_to_carline
 ,@tp_ms_avg_stock_to_memo = @tp_ms_avg_stock_to_memo
 ,@item_data=@item_data output  

end
else
begin
set @item_data=(   
select  
  xsource.category_id  as '@cid'
,  xsource.category_id  as 'cid2'
, xsource.ms_item_id as 'id'
, xsource.part_no   as 'p_no'
, xsource.part_name   as 'p_na'
, xsource.uom    as 'p_u'
, xsource.rack_no    as 'rc_n'
, xsource.sta_qty as 'a_q' 
, xsource.sta_amount_usd as 'a_a'
, xsource.in_qty  as 'i_q' 
, xsource.in_amount_usd as 'i_a'
, xsource.out_carline_qty + xsource.out_memo_qty as 'o_q'   
, xsource.adj_qty + xsource.sto_qty + xsource.retur_qty as 'j_q'  
, xsource.final_avg_price_usd as 'f_p'
, (xsource.sta_qty + xsource.in_qty + xsource.adj_qty + xsource.sto_qty + xsource.retur_qty)-(xsource.out_carline_qty + xsource.out_memo_qty) as 'e_q'
from @tp_ms_item_avg_pre xsource  

where    exists (
       select category_id from(select * FROM   @tp_ms_avg_catergory_detail_in_out
       where show =1
      )xfillcategory where xsource.category_id=xfillcategory.category_id)  
    
order by xsource.ms_item_id
for xml path ('r'),root('d_i')
)

end

  

 
---REPORT SUM
declare @RUMUS_VIPOT varchar(max)= (
STUFF(( 
SELECT      ', [HDR_' +    cast( category_id as varchar(255)) + ']' 
FROM            @tp_ms_avg_catergory_detail_in_out
where show =1
 for xml  PATH(''), type
).value('.', 'varchar(max)'), 1, 1, '') 
) 


declare @RUMUS_SELECT nvarchar(max)= 
'set @raw=( SELECT group_id as ''@gid'' ,mid as ''@mid'' , PROCESS ,CAR_LINE_NAME, '''' as MH, ' +
(
STUFF(( 
SELECT      ', ISNULL(HDR_' +    cast( ms_report_car_line_sum_id as varchar(255)) + ',0) AS '  + replace(ms_report_car_line_sum_name ,' ', '_')
FROM            dt_ms_report_car_line_sum
where show_on_report =1
order by order_column asc
 for xml  PATH(''), type
).value('.', 'varchar(max)'), 1, 1, '') 
)  + + 
' FROM ( select 1 as group_id , 1 as mid , data_carline.ms_type_prosses_name as PROCESS , data_carline.ms_car_line_no as CAR_LINE_NO , data_carline.ms_car_line_name as CAR_LINE_NAME , ''HDR_'' + cast(data_carline.category_id as varchar(255)) as HDR , sum(data_carline.qty_total * data_item.final_avg_price_usd) as price_total_usd from @tp_ms_item_out_to_carline as data_carline INNER JOIN @tp_ms_item_avg_pre as data_item ON data_carline.ms_item_id = data_item.ms_item_id where exists ( select category_id from(select * FROM @tp_ms_avg_catergory_detail_in_out where show =1 )xdata where data_carline.category_id=xdata.category_id ) GROUP BY data_carline.ms_type_prosses_name , data_carline.ms_car_line_no , data_carline.ms_car_line_name , ''HDR_'' + cast(data_carline.category_id as varchar(255)) union all select 2 as group_id , data_memo.ms_memo_type_id as mid , isnull(data_memo.ms_memo_type_name,'''') as PROCESS , isnull(data_memo.supplier_customer_code,'''') as CAR_LINE_NO , isnull(data_memo.supplier_customer_code,'''') as CAR_LINE_NAME , ''HDR_'' + cast(data_memo.category_id as varchar(255)) as HDR , sum(data_memo.total_out * data_item.final_avg_price_usd) as price_total_usd from @tp_ms_avg_stock_to_memo as data_memo INNER JOIN @tp_ms_item_avg_pre as data_item ON data_memo.ms_item_id = data_item.ms_item_id where exists ( select category_id from(select * FROM @tp_ms_avg_catergory_detail_in_out where show =1 )xdata where data_memo.category_id=xdata.category_id ) GROUP BY data_memo.ms_memo_type_id , isnull(data_memo.ms_memo_type_name,'''') , isnull(data_memo.supplier_customer_code,'''') , isnull(data_memo.supplier_customer_code,'''') , ''HDR_'' + cast(data_memo.category_id as varchar(255)) )XDATA PIVOT ( SUM([price_total_usd]) FOR HDR IN (' + @RUMUS_VIPOT +
') ) AS pv1 order by group_id,mid desc ,PROCESS for xml path(''xrow''),TYPE) --'
 
declare @ParmDefinition nvarchar(max)
SET @ParmDefinition = N'@tp_ms_item_avg_pre tp_ms_item_avg_pre readonly, @tp_ms_item_out_to_carline tp_ms_item_out_to_carline READONLY ,@tp_ms_avg_stock_to_memo tp_ms_avg_stock_to_memo READONLY ,@tp_ms_avg_catergory_detail_in_out tp_ms_avg_catergory_detail_in_out READONLY , @raw xml output';
EXECUTE sp_executesql  @RUMUS_SELECT, @ParmDefinition
 ,@tp_ms_item_avg_pre=@tp_ms_item_avg_pre
 ,@tp_ms_item_out_to_carline = @tp_ms_item_out_to_carline
 ,@tp_ms_avg_stock_to_memo = @tp_ms_avg_stock_to_memo
 ,@tp_ms_avg_catergory_detail_in_out=@tp_ms_avg_catergory_detail_in_out
 ,@raw=@raw output 
  
 
set @data_item_moving=(   
select  
  xsource.category_id  as '@cid'
,  xsource.fast_moving  as '@fm'
,  xsource.category_id  as 'cid2'
, xsource.fast_moving as 'fm2' 
, xsource.ms_item_id as 'id'
, xsource.part_no   as 'p_no'
, xsource.part_name   as 'p_na'
, xsource.uom    as 'p_u' 
, xsource.qty_1 as 'q1' 
, xsource.qty_2 as 'q2' 
, xsource.qty_3 as 'q3' 
, xsource.qty_4 as 'q4' 
, xsource.qty_5 as 'q5' 
, xsource.qty_6 as 'q6' 
, xsource.qty_7 as 'q7' 
, xsource.qty_8 as 'q8' 
, xsource.qty_9 as 'q9' 
, xsource.qty_10 as 'q10' 
, xsource.qty_11 as 'q11' 
, xsource.qty_12 as 'q12' 
, xsource.qty_avg as 'qv' 
, xsource.stdev_qty as 'qst' 
, xsource.service_level as 'sl' 
, xsource.service_factor as 'sf' 
, xsource.safty_stock as 'ss' 
, xsource.before_min as 'qbn' 
, xsource.before_max as 'qbx'  
, xsource.after_min as 'qan' 
, xsource.after_max as 'qax' 
, xsource.actual_qty as 'qa' 
, xsource.start_month as 'sm' 
, xsource.count_moving as 'cm' 
, xsource.sum_qty as 'qs' 
, xsource.max_qty as 'qm'  
, case when xsource.actual_qty=0 then -1
   when xsource.actual_qty < xsource.after_min then 1
   when xsource.actual_qty > xsource.after_max then 2
   else 0
   end as 'rc'
 
from @tp_ms_item_moving xsource  
where    exists (
       select category_id from(select * FROM   @tp_ms_avg_catergory_detail_in_out
       where show =1
      )xfillcategory where xsource.category_id=xfillcategory.category_id)  
    
order by xsource.part_no
for xml path ('r'),root('d_mv')
)
set @data_month_moving=(   
select  
 urut
 , month(end_date) as mth 
 , year(end_date) as yr
 , day(end_date) as dy
 , ms_cost_final_avg_id as avg_id
  from @tp_month_moving
  order by urut 
for xml path ('r'),root('d_mvn')
) 
--select @data_item_moving

f:

set nocount off

END TRY  
BEGIN CATCH
 IF (@@TRANCOUNT > 0)  ROLLBACK TRAN;
 
 set @xStsno='88'
 set @xStsdes= ERROR_MESSAGE() 
END CATCH 
g:

 --select
 -- isnull(@data_in_supplier_local ,'')
 -- ,isnull(@data_in_supplier_import ,'')

set @XmlSts=(select @xStsnoheader + @xStsno as 'no', @xStsdes as 'des' for xml path('sts'))
 select  CAST( (select @XmlSts,isnull(@raw ,'')
, @REPORT_NAME as report_name
, @REPORT_START as report_start
, @REPORT_STOP as report_end
, @with_detail_daily as 'with_daily'
,isnull(@format_col ,'')   
,isnull(@raw_pivot_out_hdr ,'')  
,isnull(@raw_pivot_bc_in_hdr ,'')  
,isnull(@item_data ,'')   

,isnull(@data_in_supplier_local ,'')   
,isnull(@data_in_supplier_import ,'') 

,isnull(@item_in_pivot ,'')  
,isnull(@item_out_pivot ,'')  
   
,isnull(@data_out_memo ,'') 
,isnull(@data_out_carline ,'') 

,isnull(@data_in_from_bc ,'') 
,isnull(@data_in_from_retur ,'') 
,isnull(@data_in_from_adjustment ,'') 
,isnull(@data_in_from_sto ,'')    
,isnull(@data_item_moving ,'')    
,isnull(@data_month_moving ,'')    

    for xml path ('result')
)  as XML)  as dt
 
GO

Used By

No items found