14-02-18, 11:58 PM
تفضل أخي هي هادا مجرب وكل شي تمام
بس صديقي جرب وشوف وانا جربت كل شي تمام
طبعا
الآفتتاحي اذا كان المدين اكبر من الدائن بحط المدين القيمة والدائن 0
والعكس كذالك جرب صديقي طبعا انا جربت وزبط معي
بس انت جرب وشوف ازا كل شي تمام علشان نكمل التطوير
طبعا ركز اهم شي على الآخر لانو التعديل بلآخر زبط الآقواس
وفي اهم شي نهاية If
علامة ;
زبطها اوك صديققي بستنى ردك حتى نكمل تطوير
DECLARE @SEARSH_BD decimal(18,3)
SET @SEARSH_BD=(SELECT ISNULL( SUM(DEBIT) ,0) FROM dbo.DAY1 INNER JOIN dbo.DAY2 ON dbo.DAY1.GUID = dbo.DAY2.PAENT_GUID WHERE (DAY2.ACCOUNT_GUID = @GUID) AND (DAY1.DATE < CONVERT(DATE, @B_DATE, 102)))
DECLARE @SEARSH_BC decimal(18,3)
SET @SEARSH_BC=(SELECT ISNULL( SUM(CREDIT) ,0) FROM dbo.DAY1 INNER JOIN dbo.DAY2 ON dbo.DAY1.GUID = dbo.DAY2.PAENT_GUID WHERE (DAY2.ACCOUNT_GUID = @GUID) AND (DAY1.DATE < CONVERT(DATE, @B_DATE, 102)))
DECLARE @SEARSH_D decimal(18,3)
SET @SEARSH_D=(SELECT ISNULL( SUM(DEBIT) ,0) FROM dbo.DAY1 INNER JOIN dbo.DAY2 ON dbo.DAY1.GUID = dbo.DAY2.PAENT_GUID WHERE (day2.ACCOUNT_GUID = @GUID) AND (day1.DATE BETWEEN CONVERT(DATE, @B_DATE, 102) AND CONVERT(DATE, @E_DATE, 102)))
DECLARE @SEARSH_C decimal(18,3)
SET @SEARSH_C=(SELECT ISNULL( SUM(CREDIT) ,0) FROM dbo.DAY1 INNER JOIN dbo.DAY2 ON dbo.DAY1.GUID = dbo.DAY2.PAENT_GUID WHERE (day2.ACCOUNT_GUID = @GUID) AND (day1.DATE BETWEEN CONVERT(DATE, @B_DATE, 102) AND CONVERT(DATE, @E_DATE, 102)))
delete from ggg
insert into ggg select @GUID from ACCOUNT where GUID = @GUID
declare @result1 bit
set @result1 = (SELECT CAST(CASE WHEN EXISTS(select ParentGUID from ACCOUNT where GUID in (select GUID from ggg) and ParentGUID not in (select GUID from ggg)) THEN 1 ELSE 0 END AS BIT ))
print @result1
while(@result1 = 1)
begin
insert into ggg select ParentGUID from ACCOUNT where GUID in (select GUID from ggg) and ParentGUID not in (select guid from ggg)
set @result1 = (SELECT CAST(CASE WHEN EXISTS(select ParentGUID from ACCOUNT where GUID in (select GUID from ggg) and ParentGUID not in (select GUID from ggg)) THEN 1 ELSE 0 END AS BIT ))
IF @result1 = 0
BREAK;
end
if @SEARSH_Bd > @SEARSH_Bc
update MIZAN set BD=@SEARSH_BD-@SEARSH_BC, BC=0,D=D+@SEARSH_D,C=C+@SEARSH_C ,TD=TD+@SEARSH_BD + @SEARSH_D,TC=TC+@SEARSH_BC + @SEARSH_C where GUID in (select GUID from ggg) ;
if @SEARSH_Bd < @SEARSH_Bc
update MIZAN set BD=0, BC=@SEARSH_BC-@SEARSH_BD,D=D+@SEARSH_D,C=C+@SEARSH_C ,TD=TD+@SEARSH_BD + @SEARSH_D,TC=TC+@SEARSH_BC + @SEARSH_C where GUID in (select GUID from ggg) ;

