Advertisement
Guest User

Untitled

a guest
Sep 18th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 3.28 KB | None | 0 0
  1.  
  2. declare @Site varchar(50), @PartNumber varchar(20),
  3.     @MaterialName varchar(200), @ComponentMaterialName varchar(200),
  4.     @ComponentLotNumber varchar(20), @ComponentSerialNumber varchar(20),
  5.     @UsageDate datetime, @ExpirationDate datetime, @SubAssemblyExpirationDate datetime, @SubSerialNumber varchar(20)
  6.    
  7. declare @refid uniqueidentifier
  8. set @refid=null
  9. declare getRef cursor for select top 1000 refid from tempSourcerefId
  10. where processed=0
  11. open getRef
  12. fetch next from getRef into @refid
  13. while @@fetch_status = 0 begin
  14.     set @Site=''
  15.     set @PartNumber =''
  16.     set @MaterialName =''
  17.     set @SubAssemblyExpirationDate = null
  18.     set @SubSerialNumber=''
  19.     --get subassembly info
  20.     select @Site=s.Name, @PartNumber=m.PartNumber, @materialName=m.MaterialName, @SubSerialNumber =sl.SerialNumber,
  21.         @SubAssemblyExpirationDate= coalesce(l.ExpirationDate, sl.ExpirationDate)
  22.         from material m join lot l on m.materialid=l.materialid
  23.         join sublot sl on l.lotid=sl.lotid
  24.         join site s on s.siteid=sl.siteid
  25.         where sl.sublotid=@refid
  26.    
  27.     --get subassembly usage dates
  28.     declare @subUsageTbl table (UsageDate datetime)
  29.     insert into @subUsageTbl select consumedate from itemconsumption where sublotid=@refid
  30.    
  31.     --get component    
  32.     declare @componentTbl table (Componentid uniqueidentifier)
  33.     insert into @componentTbl select sublotid from itemconsumption where referenceid=@refid
  34.    
  35.     declare @sublotid uniqueidentifier
  36.     set @sublotid=null
  37.     declare getCom cursor for select distinct componentid from @componentTbl
  38.     open getCom
  39.     fetch next from getCom into @sublotid
  40.     while @@fetch_status=0 begin
  41.         set @ExpirationDate = null
  42.         select @ExpirationDate = coalesce(l.ExpirationDate, sl.ExpirationDate)
  43.             from lot l join sublot sl on l.lotid =sl.lotid
  44.             where sl.sublotid =@sublotid
  45.         if @ExpirationDate is not null begin
  46.             if exists(select * from @subUsageTbl where
  47.                 dateadd(dd, datediff(dd, 0, UsageDate)+0, 0) > @ExpirationDate)
  48.             begin
  49.                 set @ComponentMaterialName =''
  50.                 set @ComponentLotNumber =''
  51.                 set @ComponentSerialNumber =''
  52.                
  53.                 select @ComponentMaterialName = m.MaterialName,
  54.                     @ComponentLotNumber =l.LotNumber, @ComponentSerialNumber =sl.SerialNumber
  55.                     from Material m join lot l on m.materialid=l.materialid
  56.                     join sublot sl on l.lotid =sl.lotid
  57.                     where sl.sublotid =@sublotid
  58.                
  59.                 set @UsageDate = null
  60.                 declare getUsageDates cursor for select UsageDate from @subUsageTbl
  61.                     where dateadd(dd, datediff(dd, 0, UsageDate)+0, 0) > @ExpirationDate
  62.                 open getUsageDates
  63.                 fetch next from getUsageDates into @UsageDate
  64.                 while @@fetch_status=0 begin
  65.                     insert into tempOutputSubs values (@Site, @PartNumber,
  66.                         @MaterialName, @SubSerialNumber, @ComponentMaterialName,
  67.                         @ComponentLotNumber, @ComponentSerialNumber,
  68.                         @UsageDate, @SubAssemblyExpirationDate, @ExpirationDate)
  69.            
  70.                     set @UsageDate = null
  71.                     fetch next from getUsageDates into @UsageDate
  72.                 end
  73.                 close getUsageDates
  74.                 deallocate getUsageDates
  75.             end    
  76.         end
  77.         set @sublotid=null
  78.         fetch next from getCom into @sublotid
  79.     end
  80.     close getCom
  81.     deallocate getCom
  82.    
  83.     delete @subUsageTbl
  84.     delete @componentTbl
  85.    
  86.     update tempSourceRefid set processed=1 where refid=@refid
  87.     set @refid=null
  88.     fetch next from getRef into @refid
  89. end
  90. close getRef
  91. deallocate getRef
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement