bluebunny72 icon

ILC_GetBillList table valued function

bluebunny72 | PRO | 09/25/20 11:33:47 PM UTC | 0 ⭐ | 8826 👁️ | Never ⏰ | []
T-SQL |

2.72 KB

|

None

|

0 👍

/

0 👎

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ILC_GetBillList]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
    DROP FUNCTION [dbo].[ILC_GetBillList]
GO
 
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 
CREATE FUNCTION [dbo].[ILC_GetBillList] (
    @AnchorItem ItemType=NULL
)
RETURNS TABLE
RETURN (
   WITH BOM (
         job
        ,suffix
        ,opernum
        ,[sequence]
        ,anchoritem
        ,item
        ,component      
        ,[level]
        ,SortPath
        ,total_matl_qty
        ,total_matl_qty_conv
        ,matl_qty
        ,u_m
        ,units --U = per unit L = per lot (Basically if U then you need that matl_qty for every 1 unit you make.  If L then it doesn't matter how many you make it will always cost the same on time qty of matl_qty)
  )
  AS (
        SELECT 
             i.job--job
            ,i.suffix--suffix
            ,jr.oper_num--opernum
            ,jm.[Sequence]--sequence
            ,i.item--anchoritem
            ,i.item--item
            ,jm.item--component     
            ,0 AS [level]--level
            ,CAST('\' + RIGHT('000'+CONVERT(VARCHAR(3),jm.[sequence]),3) AS NVARCHAR(254)) --sortpath
            ,jm.matl_qty as total_matl_qty
            ,jm.matl_qty_conv as total_matl_qty_conv
            ,jm.matl_qty
            ,jm.u_m
            ,jm.units
        FROM dbo.item i
        JOIN dbo.jobmatl jm ON jm.job = i.job
            AND jm.suffix = i.suffix
        JOIN dbo.job j ON j.job = jm.job
            AND j.suffix = jm.suffix
            AND j.[type] = 'S'
        JOIN dbo.jobroute jr ON jr.job = j.job
            AND jr.suffix = j.suffix
            AND jr.oper_num = jm.oper_num
 
        WHERE i.item=ISNULL(@AnchorItem,i.item)
 
        UNION ALL
    
        SELECT 
             jm.job--job
            ,jm.suffix--suffix
            ,jr.oper_num--opernum
            ,jm.[Sequence]--sequence
            ,b.anchoritem--anchoritem
            ,i.item--item
            ,jm.item--component
            ,(b.[level] + 1) AS [level]--level
            ,CAST(b.SortPath + '\' + RIGHT('000'+CONVERT(VARCHAR(3),jm.[sequence]),3) AS NVARCHAR(254))--sortpath
            ,CAST((b.total_matl_qty * jm.matl_qty) as decimal(18,8)) as total_matl_qty
            ,CAST((b.total_matl_qty_conv * jm.matl_qty) as decimal(18,8)) as total_matl_qty_conv
            ,jm.matl_qty
            ,jm.u_m
            ,jm.units
        FROM BOM b
        JOIN dbo.item i ON i.item = b.component
        JOIN dbo.jobmatl jm ON jm.job = i.job
            AND jm.suffix = i.suffix
        JOIN dbo.job j ON j.job = jm.job
            AND j.suffix = jm.suffix
            AND j.[type] = 'S'
        JOIN dbo.jobroute jr ON jr.job = j.job
            AND jr.suffix = j.suffix
            AND jr.oper_num = jm.oper_num   
    )
    SELECT
         b.job AS component_job
        ,b.suffix AS component_suffix
        ,b.opernum AS component_opernum
        ,b.[sequence] AS component_sequence
        ,b.anchoritem
        ,b.item
        ,b.component    
        ,b.[level]
        ,b.SortPath
        ,b.total_matl_qty
        ,b.total_matl_qty_conv
        ,b.matl_qty
        ,b.u_m
        ,b.units
    FROM 
        BOM b
);
 
GO

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎