Use ATNDBTest
Go
--------------------------------------------------------------------------------------------------------------------
--
-- ابتدا رکوردهای جدیدی از ترکیب جداول (مرتبه) و (دفترمالی) درست کرده و مجددا در جدول (مرتبه) درج میکنیم
--     توجه شود که مقدار ستون رفرنس دفتر مالی برای رکوردهای قدیمی در جدول (مرتبه) برابر نـــــال می باشد
Insert Into Degree

Select 
	(Select Max(Serial) From Degree) + (ROW_NUMBER() Over (Order By OfficeDetail.Serial,Degree.Serial)) As Serial,
	Degree.Serial As Code,
	Degree.FADescription,
	Null As ENDescription,
	Degree.Comment,
	(Select Top(1) RecorderRef From OfficePeriod Where OfficeDetailRef = OfficeDetail.Serial Order By RecorderRef) As RecorderRef,
	OfficeDetail.RecordDate As RecordDate,  
	Null As EditorRef,
	Null As EditDate,
	OfficeDetail.Serial As OfficeDetailRef 
From 
	Degree Cross Join
	OfficeDetail
Where
	Degree.OfficeDetailRef Is Null

--------------------------------------------------------------------------------------------------------------------
--
-- در ادامه تمام رکوردهایی را که در جدول (مشتریان) به رکوردهای قدیم در جدول (مرتبه) وصل
--                                   بودند را به رکوردهای جدید در جدول (مرتبه) وصل می کنم

Update 
	GetterOrPayerFactor
Set 
	DegreeRef = Degree.Serial
From 
	GetterOrPayerFactor Inner Join 
	Degree On GetterOrPayerFactor.DegreeRef = Degree.Code And GetterOrPayerFactor.OfficeDetailRef = Degree.OfficeDetailRef
--------------------------------------------------------------------------------------------------------------------
--
-- در ادامه تمام رکوردهایی را که در جدول (قیمت فروش کالاها) به رکوردهای قدیم در جدول (مرتبه) وصل
--                                            بودند را به رکوردهای جدید در جدول (مرتبه) وصل می کنم

Update 
	PartSalePrice
Set 
	DegreeRef = Degree.Serial
From 
	PartSalePrice Inner Join 
	Part On Part.Serial = PartSalePrice.PartRef Inner Join
	Degree On PartSalePrice.DegreeRef = Degree.Code And Part.OfficeDetailRef = Degree.OfficeDetailRef
--------------------------------------------------------------------------------------------------------------------
--
-- در ادامه تمام رکوردهایی را که در جدول (قیمت فروش کالاها) به رکوردهای قدیم در جدول (مرتبه) وصل
--                                            بودند را به رکوردهای جدید در جدول (مرتبه) وصل می کنم

Update 
	GritSalePrice
Set 
	DegreeRef = Degree.Serial
From 
	GritSalePrice Inner Join 
	GritProduct On GritProduct.Serial = GritSalePrice.GritProductRef Inner Join
	Degree On GritSalePrice.DegreeRef = Degree.Code And GritProduct.OfficeDetailRef = Degree.OfficeDetailRef
--------------------------------------------------------------------------------------------------------------------
--
-- حال رکوردهای قدیمی در جدول (مرتبه) را حذف می کنیم . برای این رکوردها هیچ رفرنسی وجود ندارد
Delete From Degree Where OfficeDetailRef Is Null

