الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

فلترة ديون خلال 30 يوم

بدأه king_baghdad في 13 مايو 2010 · 6 رد · 993 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم :

تحية طيبة لكل اعضاء المنتدى .. اود ان اطرح مشكلتي واتمنى التجاوب لانها دوختني وفيها عدة قيود طلب مني اخيراً في برنامجي تصميم واجهة خاصة بديون الزبائن وهذه الطريقة كالآتي :

عندما يتخطى الدين ال 30 يوماً يتم فصل الدين في سجل او في جدول ثاني ويبدأ في العمليات التالية من مبيعات وسندات قبضل على هذا الدين لغاية تصفيره مثلاً

الزبون 1 لديه الدين الحالي 2500 دينار وبعد 30 يوم اصبح 3000 فبدأ في ال 30 يوم الجديدة يجب ان يبقى الدين 3000 لغاية تصفيره فهي فيها عملية ترجيل وتبديل ويجب عرض الديون المتأخرة في واجهة خاصة او بالاحرى واجهة تنبيهية .. أتمنى من الاخوة الخبراء الذين جاءتهم مثل هذه الحالة ان لا يبخلوا علينا في طريقة برمجة هذه الدوخة في المرفق تجدون جدول ممكن ان يساعدكم وهو جدول العمليات بشكل بسيط .. أتمنى التجاوب والردود ولكل الشكر والاحترام

#2

السلام عليكم

أخي الكريم

احاول ان اساعد لكن المشكل غير واضح أو غير محدد بالضبط

المرفقات غير موجودة :blink:

أرجوا ان تطرح المشكل الذي وجدته لأن الطرح السابق يحتوي على الحل؟

1
#3

السلام عليكم ورحمة الله وبركاته

اتمنى منك ان تبحث اولا قبل ان تطرح السؤال الموضوع موجود من قبل

/index.php?showtopic=170913

وفقنا الله واياكم

1

اللهم علمنا ما ينفعنا وانفعنا بما علمتنا وانفع الناس بنا واغفر لنا وارحمنا

#4

السلام عليكم :

شكراً على الاستجابة ، اخي علي بالنسبة للبحث بحثت والرابط الذي وضعته هو فلترة اقساط يختلف اختلاف كلي لمطلبي ، في المرفق يمكن ان تلاحظ مثال لعمليات بيع وقبض ، ما اريده هو مثلاً

زبون 1 عندما يتجاوز دينه 30 يوماً يحول هذا الدين في مكان ثاني وبعد ال 30 يوم عندما يدخل في ال 30 يوم الثانية يبدأ بالتجميع من جديد ولكن ال 30 يوم الاولى في حالة ما اذا سدد سند

قبض يخصم من ال 30 يوم الاولى لغاية تصفيرها ومن ثم يكمل ال 30 يوم الثانية .. انا عارف ان هذا شويه يدوخ ولكن يجب انجازه واتمنى من الاخوة المساعدة لاتمام هذا المطلوب وايضاً المطلوب في حالة تم تجاوز اي 30 يوم وبدون تصفير الرصيد يظهر في قائمة بالزبائن المتأخرين .. اتمنى ان اكون قد اوضحت واتمنى التجاوب من الاخوة ولكم جزيل الشكر والاحترام ..

op_clients.rar

#5

السلام عليكم

أخي الكريم ما فهمنه منك هو التالي

- كل زبون له فترة سماح استدانة اجمالية شهران بعدها يعتبر متأخرا عن السداد حيث/

. يبدء عد الديون من أقدم عملية تداين

. بجمع الشهر الأول من الديون في جدول ثاني .. يبقي الزبون يسدد فيه حتى تصفيره .. ومن ثم ينتقل الى الشهر الذي بعده.

لكي لا أذهب بعيدا أرجو ان تأكد لي صحة هذا الفهم

#6

السلام عليكم :

شكراً اخي خليفة على التجاوب ، فترة السماح للدين 30 يوماً وبعدها يعتبر تأخير لغاية تسديد دين ال 30 يوم الاولى وبعدها يبدأ 30 يوم ثانية يعني مثال

زبون واحد الدين خلال 30 يوماً 5000 دينار

عندما يكمل 30 يوم يخزن المبلغ الذي هو على سبيل المثال 7000 دينار على ان يتم سداد الدين ما بعد 30 يوم بواسطة سندات قبض من 7000 دينار لغاية تصفيرها وتظهر 7000 في خانة مخصصة

بالزبائن المتأخرين عن السداد .

وعندما يبدأ في 30 يوم جديدة يبدأ من الصفر

اتمنى ان اكون اوضحت الفكرة الآن .ولكم الشكر

#7

السلام عليكم

أخي مرحبا بك, مما فهمت

في نظام بيع تحديدا في معالجة ديون الزبائن القوانين التالية

1. كل زبون له الحق في الاستدانة لمدة 30 يوم

2. كل زبون يعتبر متأخرا عن السداد اذا تجاوز دينه 30 يوم.

3. كل زبون متاخر يحرم من التداين حتى يسدد دينه السابق ل 30 يوم

أ / يمكن افتراض الهيكل الخاص بقاعدة البيانات كما يلي

جدول الزبائن
CREATE TABLE CLIENTS (
    ID           INTEGER NOT NULL, // معرف الزبون
    FIRSTNAME    VARCHAR(40), 
    LASTNAME     VARCHAR(40), 
    ACCOUNT      FLOAT, // مجموع الديون
    ACCOUNT_Payed      FLOAT, // مجموع ما سدد من ديون
    ACOUNT_DATE  DATE // تاريخ أول عملية تداين غير مسددة
);

2.جدول المعاملات
CREATE TABLE CLIENTS_TRANSACTIONS (
    ID              INTEGER NOT NULL, // معرف المعاملة
    ID_CLIENT       INTEGER NOT NULL,// معرف الزبون
    LABEL           VARCHAR(40),//عنوان المعاملة يفضل تحويله الى معرف من جدول آخر
    VALUE_OP         FLOAT,// القيمة النقدية للمعاملة
    OPERATION_DATE  DATE,//تاريخ اجراء المعاملة
    IsPAyed VARCHAR(1) // هل المعاملة مدفوعة 1= نعم 0= لا
);

ب /عملية حساب دين كل الزبائن

Procedure CalcUserCredit ;
//Clients From Ttable for Clients db Table
//Query1 From Tquery
begin
{ 1.
البحث عن أول عملية تداين غير مدفوعة للزبون
ووضعها في جدول الزبائن
}
  Query1.Close;
  Query1.sql.text :=
    'Select ID_CLIENT, Min(OPERATION_DATE) as DateBeginCredit where(IsPAyed = 0)Group by ID_CLIENT';
  Query1.open;

  Clients.open;
  while (not Query1.eof) do
  begin
    if Clients.Locate('id', Query1.FieldByName('ID_CLIENT').AsString, []) then
    begin
      Clients.Edit;
      Clients.FieldByName('ACOUNT_DATE').AsDateTime := Query1.FieldByName
        ('DateBeginCredit ').AsDateTime;
      Clients.FieldByName('ACCOUNT_Payed').AsInteger := 0;
      Clients.FieldByName('ACOUNT').AsInteger := 0;
      Clients.Post;
    end;
    Query1.Next;
  end;

  { 2.
 حساب مجموع الديون غير المسددة
  }
  Query1.Close;
  Query1.sql.text :=
    'Select Sum(VALUE_OP) as TOTALé where(IsPAyed = 0)and(OPERATION_DATE>=' +
    Clients.FieldByName('ACOUNT_DATE').AsString + ')and(ID_CLIENT=:ID)';
  Query1.open;

  Clients.First;
  while (not Clients.eof) do
  begin
    Query1.ParamByName('ID').AsString := Clients.FieldByName('ID').AsString;
    Clients.Edit;
    Clients.FieldByName('ACCOUNT').AsString := Query1.FieldByName('TOTAL')
      .AsString;
    Clients.Post;
    Clients.Next;
  end
{
عندما تريد اظهار الزبائن المتأخرين
Date - ACOUNT_DATE >= 30 يوم
عندما تريد انقاص قيمة الدين
ACCOUNT_Payed := ACCOUNT_Payed+NewValue;
وعندما 
ACCOUNT_Payed =ACCOUNT
قم بتصفير كل المعطيات في الجدول Clients 
ولا تنسى  IsPAyed:=1 في الجدول CLIENTS_TRANSACTIONS

}
end;

أرجو ان يكون هذا المطلوب

والله اعلم

تم تعديل هذه المشاركة بواسطة KhelifaAdm في 17 مايو 2010 في 20:42

مواضيع مشابهة