ProTech's home page

ProTech-Online.com

Microsoft SQL code example to pull Syteline invoice data.

USE [Testsite_live_App]
GO
/****** Object:  StoredProcedure [MYSCHEMA].[_chad_Excel_Addin_Executive_Invoices_Export]    Script Date: 06/17/2013 21:06:39 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [MYSCHEMA].[_chad_Excel_Addin_Executive_Invoices_Export]
AS
BEGIN
      DECLARE
            @StartDate DateTime
            ,@EndDate DateTime
      SET NOCOUNT ON;
      SET @EndDate = DATEADD(d,1,(CONVERT(DATE,GETDATE())))
      SET @StartDate = DATEADD(yy,-02,@EndDate)
      CREATE TABLE #chad_inv_all(
                  inv_site nvarchar(20)
                  ,inv_type nvarchar(20)
                  ,item nvarchar(30)
                  ,description nvarchar(40)
                  ,inv_qty decimal(19,3)
                  ,unit_price decimal(18,3)
                  ,ext_price decimal(21,3)
                  ,state nvarchar(5)
                  ,country nvarchar(30)
                  ,billto_name nvarchar(60)
                  ,inv_date nvarchar(20)
                  ,inv_num nvarchar(12)
                  ,slsman nvarchar(8))
      --SRO TESTSITE
      INSERT INTO #chad_inv_all
      SELECT 'Testsite'
            ,'SRO'
            ,itm.item
            ,itm.description
            ,itm.qty_to_bill
            ,itm.price
            ,Case When itm.bill_type = 'P'  then itm.price else( itm.qty_to_bill * itm.price) End
            ,addr.state
            ,addr.country
            ,addrb.name
            ,convert(char,hdr.inv_date,101)
            ,itm.inv_num
            ,hdr.slsman
      FROM [Testsite_Live_App].[dbo].fs_sro_inv_item AS itm
                  LEFT OUTER JOIN [Testsite_Live_App].[dbo].fs_sro_inv_hdr AS hdr
                        ON itm.inv_num = hdr.inv_num
                  LEFT OUTER JOIN [Testsite_Live_App].[dbo].fs_sro_matl AS mtl
                        ON itm.inv_num= mtl.inv_num
                              AND itm.inv_line = mtl.inv_line
                              AND itm.sro_oper = mtl.sro_oper
                              AND itm.trans_num = mtl.trans_num
                              AND mtl.type = 'A'
                              AND itm.trans_type = 'M'
                  LEFT OUTER JOIN [Testsite_Live_App].[dbo].custaddr AS addr
                        ON hdr.cust_num = addr.cust_num
                              AND hdr.cust_seq = addr.cust_seq
                  LEFT OUTER JOIN [Testsite_Live_App].[dbo].custaddr AS addrb
                        ON hdr.cust_num = addrb.cust_num
                              AND addrb.cust_seq = 0
                  LEFT OUTER JOIN [Testsite_Live_App].[dbo].item AS item
                        ON itm.item = item.item
                  LEFT OUTER JOIN [Testsite_Live_App].[dbo].fs_sro AS sro
                        ON hdr.sro_num = sro.sro_num
                  LEFT OUTER JOIN [Testsite_Live_App].[dbo].fs_sro_labor AS SROLabor
                        ON itm.inv_num = SROLabor.inv_num
                              AND itm.inv_line = SROLabor.inv_line
                              AND itm.sro_oper = SROLabor.sro_oper
                              AND itm.trans_num = SROLabor.trans_num
                              AND SROLabor.type = 'A'
                              AND itm.trans_type = 'L'
                  LEFT OUTER JOIN [Testsite_Live_App].[dbo].fs_sro_misc AS SROMisc
                        ON itm.inv_num = SROMisc.inv_num
                              AND itm.inv_line = SROMisc.inv_line
                              AND itm.sro_oper = SROMisc.sro_oper
                              AND itm.trans_num = SROMisc.trans_num
                              AND SROMisc.type = 'A'
                              AND itm.trans_type = 'C'
      --WHERE itm.inv_num = '300000022'
      --itm.qty <> itm.qty_to_bill
      ORDER BY itm.sro_num, itm.sro_line, itm.sro_oper, itm.trans_num
      --SRO TESTSITE2
      INSERT INTO #chad_inv_all
      SELECT 'Testsite2'
            ,'SRO'
            ,itm.item
            ,itm.description
            ,itm.qty_to_bill
            ,itm.price
            ,Case When itm.bill_type = 'P'  then itm.price else( itm.qty_to_bill * itm.price) End
            ,addr.state
            ,addr.country
            ,addrb.name
            ,convert(char,hdr.inv_date,101)
            ,itm.inv_num
            ,hdr.slsman
      FROM [Testsite2_Live_App].[dbo].fs_sro_inv_item AS itm
                  LEFT OUTER JOIN [Testsite2_Live_App].[dbo].fs_sro_inv_hdr AS hdr
                        ON hdr.inv_num = itm.inv_num
                  LEFT OUTER JOIN [Testsite2_Live_App].[dbo].fs_sro_matl AS mtl
                        ON itm.inv_num= mtl.inv_num
                              AND itm.inv_line = mtl.inv_line
                              AND itm.sro_oper = mtl.sro_oper
                              AND itm.trans_num = mtl.trans_num
                              AND mtl.type = 'A'
                              AND itm.trans_type = 'M'
                  LEFT OUTER JOIN [Testsite2_Live_App].[dbo].custaddr AS addr
                        ON hdr.cust_num = addr.cust_num
                              AND hdr.cust_seq = addr.cust_seq
                  LEFT OUTER JOIN [Testsite2_Live_App].[dbo].custaddr AS addrb
                        ON hdr.cust_num = addrb.cust_num
                              AND addrb.cust_seq = 0
                  LEFT OUTER JOIN [Testsite2_Live_App].[dbo].item AS item
                        ON itm.item = item.item
                  LEFT OUTER JOIN [Testsite2_Live_App].[dbo].fs_sro AS sro
                        ON hdr.sro_num = sro.sro_num
                  LEFT OUTER JOIN [Testsite2_Live_App].[dbo].fs_sro_labor AS SROLabor
                        ON itm.inv_num = SROLabor.inv_num
                              AND itm.inv_line = SROLabor.inv_line
                              AND itm.sro_oper = SROLabor.sro_oper
                              AND itm.trans_num = SROLabor.trans_num
                              AND SROLabor.type = 'A'
                              AND itm.trans_type = 'L'
                  LEFT OUTER JOIN [Testsite2_Live_App].[dbo].fs_sro_misc AS SROMisc
                        ON itm.inv_num = SROMisc.inv_num
                              AND itm.inv_line = SROMisc.inv_line
                              AND itm.sro_oper = SROMisc.sro_oper
                              AND itm.trans_num = SROMisc.trans_num
                              AND SROMisc.type = 'A'
                              AND itm.trans_type = 'C'
      --WHERE itm.inv_num = '300000022'
      --itm.qty <> itm.qty_to_bill
      ORDER BY itm.sro_num, itm.sro_line, itm.sro_oper, itm.trans_num
      --SRO TESTSITE3
      INSERT INTO #chad_inv_all
      SELECT 'TESTSITE3'
            ,'SRO'
            ,itm.item
            ,itm.description
            ,itm.qty_to_bill
            ,itm.price
            ,Case When itm.bill_type = 'P'  then itm.price else( itm.qty_to_bill * itm.price) End
            ,addr.state
            ,addr.country
            ,addrb.name
            ,convert(char,hdr.inv_date,101)
            ,itm.inv_num
            ,hdr.slsman
      FROM [TESTSITE3_Live_App].[dbo].fs_sro_inv_item AS itm
                  LEFT OUTER JOIN [TESTSITE3_Live_App].[dbo].fs_sro_inv_hdr AS hdr
                        ON hdr.inv_num = itm.inv_num
                  LEFT OUTER JOIN [TESTSITE3_Live_App].[dbo].fs_sro_matl AS mtl
                        ON itm.inv_num= mtl.inv_num
                              AND itm.inv_line = mtl.inv_line
                              AND itm.sro_oper = mtl.sro_oper
                              AND itm.trans_num = mtl.trans_num
                              AND mtl.type = 'A'
                              AND itm.trans_type = 'M'
                  LEFT OUTER JOIN [TESTSITE3_Live_App].[dbo].custaddr AS addr
                        ON hdr.cust_num = addr.cust_num
                              AND hdr.cust_seq = addr.cust_seq
                  LEFT OUTER JOIN [TESTSITE3_Live_App].[dbo].custaddr AS addrb
                        ON hdr.cust_num = addrb.cust_num
                              AND addrb.cust_seq = 0
                  LEFT OUTER JOIN [TESTSITE3_Live_App].[dbo].item AS item
                        ON itm.item = item.item
                  LEFT OUTER JOIN [TESTSITE3_Live_App].[dbo].fs_sro AS sro
                        ON hdr.sro_num = sro.sro_num
                  LEFT OUTER JOIN [TESTSITE3_Live_App].[dbo].fs_sro_labor AS SROLabor
                        ON itm.inv_num = SROLabor.inv_num
                              AND itm.inv_line = SROLabor.inv_line
                              AND itm.sro_oper = SROLabor.sro_oper
                              AND itm.trans_num = SROLabor.trans_num
                              AND SROLabor.type = 'A'
                              AND itm.trans_type = 'L'
                  LEFT OUTER JOIN [TESTSITE3_Live_App].[dbo].fs_sro_misc AS SROMisc
                        ON itm.inv_num = SROMisc.inv_num
                              AND itm.inv_line = SROMisc.inv_line
                              AND itm.sro_oper = SROMisc.sro_oper
                              AND itm.trans_num = SROMisc.trans_num
                              AND SROMisc.type = 'A'
                              AND itm.trans_type = 'C'
      --WHERE itm.inv_num = '300000022'
      --itm.qty <> itm.qty_to_bill
      ORDER BY itm.sro_num, itm.sro_line, itm.sro_oper, itm.trans_num
      --CO Testsite
      INSERT INTO #chad_inv_all
      SELECT invhdr.site_ref
            ,'CO'
            ,Case
                  WHEN invhdr.co_num is null  then 'Manual Invoice'
                  ELSE invitm.item
            End
            ,CASE
                  WHEN coi.item = 'MI' THEN coi.description
                  ELSE item.description
            END
            ,invitm.qty_invoiced
            ,invitm.price
            ,Case
                  WHEN invhdr.bill_type = 'P'  then invitm.price
                  WHEN invhdr.co_num is null  then invhdr.price
                  ELSE( invitm.qty_invoiced * invitm.price)
            End
            ,CASE
                  WHEN coi.cust_num IS NULL
                  THEN staddr.state
                  ELSE dsaddr.state
            END
            ,CASE
                  WHEN coi.cust_num IS NULL
                  THEN staddr.country
                  ELSE dsaddr.country
            END
            ,custaddr.name
            ,convert(char,invhdr.inv_date,101)
            ,invhdr.inv_num
            ,invhdr.slsman
      FROM [Testsite_Live_App].[dbo].inv_hdr_all AS invhdr
                  LEFT OUTER JOIN [Testsite_Live_App].[dbo].inv_item_all AS invitm
                        ON invhdr.inv_num = invitm.inv_num
                              AND invhdr.site_ref = invitm.site_ref
                              AND invhdr.inv_seq = invitm.inv_seq
                  LEFT OUTER JOIN [Testsite_Live_App].[dbo].custaddr AS custaddr
                        ON invhdr.cust_num = custaddr.cust_num
                              AND custaddr.cust_seq = 0
                  LEFT OUTER JOIN [Testsite_Live_App].[dbo].item AS item
                        ON invitm.item = item.item
                  LEFT OUTER JOIN [Testsite_Live_App].[dbo].coitem AS coi
                        ON invitm.co_num = coi.co_num
                              AND invitm.co_line = coi.co_line
                              AND invitm.co_release = coi.co_release
                  LEFT OUTER JOIN [Testsite_Live_App].[dbo].custaddr AS dsaddr
                        ON coi.cust_num = dsaddr.cust_num
                              AND coi.cust_seq = dsaddr.cust_seq
                  LEFT OUTER JOIN [Testsite_Live_App].[dbo].custaddr AS staddr
                        ON invhdr.cust_num = staddr.cust_num
                              AND invhdr.cust_seq = staddr.cust_seq
                  LEFT OUTER JOIN [Testsite_Live_App].[dbo].co AS co
                        ON invhdr.co_num = co.co_num
      WHERE invhdr.site_ref = 'Testsite'
            AND invhdr.inv_date > '2012-06-01 00:00:00'
            AND (invitm.co_num NOT IN(SELECT sro_hdr.sro_num
                  FROM [Testsite_Live_App].[dbo].fs_sro_inv_hdr AS sro_hdr)
                  OR invhdr.co_num is null)
      ORDER BY invhdr.site_ref, invitm.co_num, invitm.co_line, invitm.co_release
      --CO Testsite2
      INSERT INTO #chad_inv_all
      SELECT invhdr.site_ref
            ,'CO'
            ,Case
                  WHEN invhdr.co_num is null  then 'Manual Invoice'
                  ELSE invitm.item
            End
            ,CASE
                  WHEN coi.item = 'MI' THEN coi.description
                  ELSE item.description
            END
            ,invitm.qty_invoiced
            ,invitm.price
            ,Case
                  WHEN invhdr.bill_type = 'P'  then invitm.price
                  WHEN invhdr.co_num is null  then invhdr.price
                  ELSE( invitm.qty_invoiced * invitm.price)
            End
            ,CASE
                  WHEN coi.cust_num IS NULL
                  THEN staddr.state
                  ELSE dsaddr.state
            END
            ,CASE
                  WHEN coi.cust_num IS NULL
                  THEN staddr.country
                  ELSE dsaddr.country
            END
            ,custaddr.name
            ,convert(char,invhdr.inv_date,101)
            ,invhdr.inv_num
            ,invhdr.slsman
      FROM [Testsite2_Live_App].[dbo].inv_hdr_all AS invhdr
                  LEFT OUTER JOIN [Testsite2_Live_App].[dbo].inv_item_all AS invitm
                        ON invhdr.inv_num = invitm.inv_num
                              AND invhdr.site_ref = invitm.site_ref
                              AND invhdr.inv_seq = invitm.inv_seq
                  LEFT OUTER JOIN [Testsite2_Live_App].[dbo].custaddr AS custaddr
                        ON invhdr.cust_num = custaddr.cust_num
                              AND custaddr.cust_seq = 0
                  LEFT OUTER JOIN [Testsite2_Live_App].[dbo].item AS item
                        ON invitm.item = item.item
                  LEFT OUTER JOIN [Testsite2_Live_App].[dbo].coitem AS coi
                        ON invitm.co_num = coi.co_num
                              AND invitm.co_line = coi.co_line
                              AND invitm.co_release = coi.co_release
                  LEFT OUTER JOIN [Testsite2_Live_App].[dbo].custaddr AS dsaddr
                        ON coi.cust_num = dsaddr.cust_num
                              AND coi.cust_seq = dsaddr.cust_seq
                  LEFT OUTER JOIN [Testsite2_Live_App].[dbo].custaddr AS staddr
                        ON invhdr.cust_num = staddr.cust_num
                              AND invhdr.cust_seq = staddr.cust_seq
                  LEFT OUTER JOIN [Testsite2_Live_App].[dbo].co AS co
                        ON invhdr.co_num = co.co_num
      WHERE invhdr.site_ref = 'Testsite2' 
            AND invhdr.inv_date > '2012-06-01 00:00:00'
            AND (invitm.co_num NOT IN(SELECT sro_hdr.sro_num
                  FROM [Testsite2_Live_App].[dbo].fs_sro_inv_hdr AS sro_hdr)
                  OR invhdr.co_num is null)
      ORDER BY invhdr.site_ref, invitm.co_num, invitm.co_line, invitm.co_release
      --CO TESTSITE3
      INSERT INTO #chad_inv_all
      SELECT invhdr.site_ref
            ,'CO'
            ,Case
                  WHEN invhdr.co_num is null  then 'Manual Invoice'
                  ELSE invitm.item
            End
            ,CASE
                  WHEN coi.item = 'MI' THEN coi.description
                  ELSE item.description
            END
            ,invitm.qty_invoiced
            ,invitm.price
            ,Case
                  WHEN invhdr.bill_type = 'P'  then invitm.price
                  WHEN invhdr.co_num is null  then invhdr.price
                  ELSE( invitm.qty_invoiced * invitm.price)
            End
            ,CASE
                  WHEN coi.cust_num IS NULL
                  THEN staddr.state
                  ELSE dsaddr.state
            END
            ,CASE
                  WHEN coi.cust_num IS NULL
                  THEN staddr.country
                  ELSE dsaddr.country
            END
            ,custaddr.name
            ,convert(char,invhdr.inv_date,101)
            ,invhdr.inv_num
            ,invhdr.slsman
      FROM [TESTSITE3_Live_App].[dbo].inv_hdr_all AS invhdr
                  LEFT OUTER JOIN [TESTSITE3_Live_App].[dbo].inv_item_all AS invitm
                        ON invhdr.inv_num = invitm.inv_num
                              AND invhdr.site_ref = invitm.site_ref
                              AND invhdr.inv_seq = invitm.inv_seq
                  LEFT OUTER JOIN [TESTSITE3_Live_App].[dbo].custaddr AS custaddr
                        ON invhdr.cust_num = custaddr.cust_num
                              AND custaddr.cust_seq = 0
                  LEFT OUTER JOIN [TESTSITE3_Live_App].[dbo].item AS item
                        ON invitm.item = item.item
                  LEFT OUTER JOIN [TESTSITE3_Live_App].[dbo].coitem AS coi
                        ON invitm.co_num = coi.co_num
                              AND invitm.co_line = coi.co_line
                              AND invitm.co_release = coi.co_release
                  LEFT OUTER JOIN [TESTSITE3_Live_App].[dbo].custaddr AS dsaddr
                        ON coi.cust_num = dsaddr.cust_num
                              AND coi.cust_seq = dsaddr.cust_seq
                  LEFT OUTER JOIN [TESTSITE3_Live_App].[dbo].custaddr AS staddr
                        ON invhdr.cust_num = staddr.cust_num
                              AND invhdr.cust_seq = staddr.cust_seq
                  LEFT OUTER JOIN [TESTSITE3_Live_App].[dbo].co AS co
                        ON invhdr.co_num = co.co_num
      WHERE invhdr.site_ref = 'TESTSITE3'
            AND invhdr.inv_date > '2012-06-01 00:00:00'
            AND (invitm.co_num NOT IN(SELECT sro_hdr.sro_num
                  FROM [TESTSITE3_Live_App].[dbo].fs_sro_inv_hdr AS sro_hdr)
                  OR invhdr.co_num is null)
      ORDER BY invhdr.site_ref, invitm.co_num, invitm.co_line, invitm.co_release
      IF OBJECT_ID('[MYSCHEMA].chad_inv_all_export') IS NOT NULL
      BEGIN
            DROP TABLE [MYSCHEMA].chad_inv_all_export
      END
      SELECT * INTO [MYSCHEMA].chad_inv_all_export FROM #chad_inv_all
      WHERE inv_date >= @StartDate AND  inv_date < @EndDate
      --ORDER BY order_num, order_line, order_rel, oper, trans_num
END


Copyright © 2013 ProTechs-Online.com; All rights reserved.