أخواني
رأيت أكثر من سؤال على هذا الموضوع فأحببت أن أوردالحل
طبعا هنا وضعت جداول تمثيلية وليست حقيقية
فقد جمعت جداول السندات في جدول واحد
كما يجب الإنتباه في المحاسبة لايتم تحريك إلا الحسابات الفرعي - يعني جدول السندات لايحوي أرقام حسابات إلاا الفرعية
Create Table Acc_Acc -- دليل الحسابات
( Acc_Id Number(10) NOT NULL, -- مفتاح رئيسي
Acc_Num Varchar2(15 Char) NOT NULL, -- رقم الحساب
Acc_Name Varchar2(100 Char) NOT NULL, -- اسم الحساب
Acc_Type Number(1) Default 2 -- نوع الحساب - 1رئيسي/2فرعي
)
/
Create Table Acc_Vchrs AS -- سندات القيد
( Mst_Id Number(10) Not NULL, -- مفتاح رئيسي
Mst_Num Number(5) Not NULL, -- رقم السند
Mst_Date Dat Not NULL, -- تاريخ السند
Mst_Rem Varchar2(100 Char), -- ملاحظات السند
Acc_Id Number(10) Not NULL, -- الحساب في السند
Trn_Deb Number(17,3) Default 0, -- المبلغ مدين
Trn_Crd Number(17,3) Default 0, -- المبلغ دائن
Trn_Rem Varchar2(100 Char) -- ملاحظات بند السند
)
/
Create OR Replace View Acc_ActiveAccountsBalances AS -- أرصدة الحسابات الفرعية فقط
Select A.Acc_Num, A.Acc_Name, Sum(V.Trn_Dbt) Dbt, Sum(V.Trn_Crd) Crd
From Acc_Acc A, Acc_Vhrs V
Where V.Acc_Id=A.Acc_Id
Group By A.Acc_Id, A.Acc_Num, A.Acc_Name
/
Create OR Replace View Acc_HeadAccountsBalances AS -- أرصدة الحسابات الرئيسية فقط
Select A.Acc_Num, A.Acc_Name, Sum(V.Dbt) Dbt, Sum(V.Crd) Crd
From Acc_Acc A, Acc_ActiveAccountsBalances V
Where A.Acc_Type=1
And V.Acc_Num Like A.Acc_Num||'%'
/
Create OR Replace View Acc_AuditBalance AS -- ميزان المراجعة كاملا
Select Acc_Num, Acc_Name, Sum(Dbt) Dbt, Sum(Crd) Crd
From (Select Acc_Num, Acc_Name, Dbt, Crd
From Acc_HeadAccountsBalances
UNION ALL
Select Acc_Num, Acc_Name, Dbt, Crd
From Acc_ActiveAccountsBalances
)
Group By Acc_Num, Acc_Name
/كما أرفقت الكود كملف
أرجو عدم التردد في أي استفسار
أرجو أن أكون قد أفدتكم
و الله من وراء القصد