صباح النور :
فكرة للحل :
في الحال (id1) هو ترقيم تلقائي متتالي ولا يتكرر.
- أن تجد id1 الـ (id) سجل الحركة الذي تم تعديله للمادة item_1.
- أن تجد id2 الـ (id) السجل للحركة التالية للمادة item_1.
- تعطي أمر تعديل التكلفة للمادة item_1 بشرط : id أكبر من id1 وأصغر من id2
يمكن الاستفادة أيضاً من حقل تاريخ الحركة بشرط أنه يخزن التاريخ و الوقت بالدقيقة والثانية(بنفس الطريقة السابقة بدلاً من id).
(06-11-22, 07:53 AM)Taha Okla كتب : [ -> ]صباح النور :
فكرة للحل :
في الحال (id1) هو ترقيم تلقائي متتالي ولا يتكرر.
- أن تجد id1 الـ (id) سجل الحركة الذي تم تعديله للمادة item_1.
- أن تجد id2 الـ (id) السجل للحركة التالية للمادة item_1.
- تعطي أمر تعديل التكلفة للمادة item_1 بشرط : id أكبر من id1 وأصغر من id2
يمكن الاستفادة أيضاً من حقل تاريخ الحركة بشرط أنه يخزن التاريخ و الوقت بالدقيقة والثانية(بنفس الطريقة السابقة بدلاً من id).
صباح الورد شكرا لك على الرد:
هذا الحل بسيط جدا الأمر معقد أكثر من ذلك
موجود أكثر من 300 ألف سجل والعدد مستمر بالزيادة يوميا بمقدار 2500 - 4000 سجل جديد
والعملية لازم تكون على كل الجدول ولكل الأصناف
الحل يلي انا عملته عن طريق جمل loop لكل صنف ضمن الكود البرمجي VB وليس ضمن الـ SQL
ولكن مع كثرة الأصناف وكثرة السجلات حلقات التكرار أًصبحت بطيئة ومتعبة وغير مجدية
المطلوب هو جملة SQL متقدمة تقوم بعمل التعديل على الجدول بأكمله بوقت قصير جدا
إليك الكود التالي وهو مستخدم لحساب الرصيد النهائي للمادة بعد كل عملية
وعند القيام بأي تعديل بأي مكان في الجدول يقوم باحتساب الرصيد الجديد ويقوم بالتصحيح لكل السجلات بسرعة كبيرة
كود :
UPDATE d
SET net_Inventory_Qty = t.cumqty
FROM tb_Inventory d
JOIN tb_Inventory i ON d.item_GUID = i.item_GUID
JOIN ( SELECT id, item_GUID,SUM(bill_Qty) OVER ( PARTITION BY item_GUID ORDER BY full_date_time ) AS 'cumQty'
FROM tb_Inventory) t ON t.id = d.id;
UPDATE v
SET S_net_Inventory_Qty = t.cumqty
FROM tb_Inventory v
JOIN tb_Inventory i ON v.item_GUID = i.item_GUID and i.store_id = v.store_id
JOIN tb_Inventory iv ON iv.store_id = v.store_id
JOIN ( SELECT id, item_GUID,store_id , SUM(bill_Qty) OVER ( PARTITION BY item_GUID , store_id ORDER BY full_date_time )
AS 'cumQty' FROM tb_Inventory) t ON t.id = v.id and t.store_id = v.store_id
بارك الله فيك .
-------------------
ما أعرفه عن برامج الحسابات - التعديل فيها غير مرغوب لدرجة عدم منح الصلاحيات للمحاسب الرئيسي أو المدير المالي نفسه ().
لأن أي سماح بالتعديل هو سماح بالتلاعب بالحسابات، فأي تجاوز بسبب علاقة أو منصب المدير المسؤول(حتى لو كان المالك نفسه) هو السماح لغيره بالتلاعب.
بالتالي : التعديل المتاح في البرمج المجسابية سيكون عن طريق عمليات رسمية جديدة،
كما أننا نعدل قيد المبيعات بقيد مردودات مبيعات، والمشتريات كذلك،
كذلك يجب ألا يتم تعديل الادخال أو الاخراج على مخازن المواد إلا بقيد مواد رسمي.
وبموجب هذا القيد سيتم تعديل متوسط التكلفة لما بقي من مواد.. ولا علاقة له بما سبق..
أي بموجب هذا القيد سيتم التسجيل (وليس التعديل) بموجب متوسط تكلفة السلعة للعمليات التالية لهذه العملية.
فما مضى على الخطأ السابق يقى على ما هو عليه (كـ إرتفاع متوسط التكلفة أو انخفاضها على قيود المبيعات أو .. غيرها ..).
وقيد التعديل للكمية(أقصد التسجيل للتعديل) في العملية الهدف (يرفق بمذكرة أو ملاحظة توضيحية لسبب التعديل وسبب ارتفاع أو انخفاض متوسط تكلفة السلعة في العمليات التالية).
--
صحيح أن هذا الأمر سيكون مزعج نوعاً ما - ولكن كـ مؤسسة بهذه الطريقة يمنعون أي تلاعب بالحسابات، وتغلق كل ثغرة يمكن الدخول من خلالها..
فكما نقول : دفع الضرر أولى من جلب المنفعة (ينطبق على هذه الحالة بدقة).
(06-11-22, 04:22 PM)Taha Okla كتب : [ -> ]بارك الله فيك .
-------------------
ما أعرفه عن برامج الحسابات - التعديل فيها غير مرغوب لدرجة عدم منح الصلاحيات للمحاسب الرئيسي أو المدير المالي نفسه ().
لأن أي سماح بالتعديل هو سماح بالتلاعب بالحسابات، فأي تجاوز بسبب علاقة أو منصب المدير المسؤول(حتى لو كان المالك نفسه) هو السماح لغيره بالتلاعب.
بالتالي : التعديل المتاح في البرمج المجسابية سيكون عن طريق عمليات رسمية جديدة،
كما أننا نعدل قيد المبيعات بقيد مردودات مبيعات، والمشتريات كذلك،
كذلك يجب ألا يتم تعديل الادخال أو الاخراج على مخازن المواد إلا بقيد مواد رسمي.
وبموجب هذا القيد سيتم تعديل متوسط التكلفة لما بقي من مواد.. ولا علاقة له بما سبق..
أي بموجب هذا القيد سيتم التسجيل (وليس التعديل) بموجب متوسط تكلفة السلعة للعمليات التالية لهذه العملية.
فما مضى على الخطأ السابق يقى على ما هو عليه (كـ إرتفاع متوسط التكلفة أو انخفاضها على قيود المبيعات أو .. غيرها ..).
وقيد التعديل للكمية(أقصد التسجيل للتعديل) في العملية الهدف (يرفق بمذكرة أو ملاحظة توضيحية لسبب التعديل وسبب ارتفاع أو انخفاض متوسط تكلفة السلعة في العمليات التالية).
--
صحيح أن هذا الأمر سيكون مزعج نوعاً ما - ولكن كـ مؤسسة بهذه الطريقة يمنعون أي تلاعب بالحسابات، وتغلق كل ثغرة يمكن الدخول من خلالها..
فكما نقول : دفع الضرر أولى من جلب المنفعة (ينطبق على هذه الحالة بدقة).
كلامك صحيح وسيلم ولكن أتحدث هنا عن وجود خطأ بشري غير مقصود
مثلا قام بإدخال سعر تكلفة 100 بدل من 1000
وتمت عدة عمليات بيع بعدها وتم تسجيل التكلفة بالسعر 100
ثم انتبه المستخدم بأنه قام بإدخال تكلفة خاطئة
فيقوم بتعديل القيمة.
ولا أعتقد بأن عملية المردودات أو عكس القيد سوف تكون مجدية هنا.
وشكرا لك على مشاركتك فيما يخص أدبيات البرامج المحاسبية وبالمناسبة هناك برامج ولها أسمها وشهرتها لا يوجد بها تعديل أبدا
كل قيد يتم معالجته بقيد غكسي. وكل حركة بعكسها.