# پایگاه‌های داده > SQL Server > T-SQL > تحلیل و طراحی بانک اطلاعات >  محاسبه سود فاکتور در برنامه خرید و فروش

## sajjad_kochekian

سلام
اگر بخواهیم یک گزارش داشته باشیم که سود هر فاکتور را محاسبه کند به چه روشی باید اقدام کنیم؟

چون قیمت ها دائم در حال تغییر است و این گزارش باید ثابت باشد و در هر تاریخی این گزارش گرفته می شود نباید اعداد و ارقام تغییر پیدا کند.
به نظر خودم باید قیمت خرید را هنگام ثبت هر رکورد همراه آن ذخیره کنم ولی این کار مشکلاتی دارد.
نظر دوستان چیه؟

----------


## کامروا

میشه یک جدول واسط، واسه قیمت ها قرار داد.
چون در یک سال ممکنه n بار تغییر قیمت داشته باشیم واسه هرکالا.

که توی این جدول کدکالا - قیمت - تاریخ - فعال بودن یا نبودن (مشخص بشه که این کالا درحال حاضر داره بر اساس کدام قیمت محاسبه بشه). که البته با وجود فیلد تاریخ میتوان قیمت آخرین تاریخ رو به عنوان قیمت فعلی کالا در نظر گرفت پس وجود فیلد "IsActive" الزامی نیست.
و توی جدول فاکتور هم کد کالا - کد قیمت ذخیره میشوند. پس دیگه نیازی نیست توی جدول کالا فیلدی به نام قیمت داشته باشیم.



البته باید روش های بهتری هم باشه...

موفق باشید

----------


## Arash_janusV3

یکی از راهها اینه که 
در هنگام فروش می بایست کاربر تعیین کنه اجناس مربوط به کدام اجناس خریداری شده می باشد
و شما اون شناسه را همراه با ثبت فاکتور فروش دارید 
و به راحتی می توانید سود آن را به دست بیارید

----------


## baktash.n81@gmail.com

توی این تاپیک در موردش حسابی بحث شده ... هر روشی که از نظرتون بهتر بود اتخاب کنید ...

اما پیشنهاد من اینهکه قیمت کالا رو به فاکتور اضافه کنید

----------


## sajjad_kochekian

سلام
ممنون از جوابتون
ولی فکر کنم یکم مسئله رو خوب توضیح ندادم.
من در حال حاضر قیمت فروش را دارم ذخیره می کنم.
مشکل من اینکه می خواهم یک گزارش بسازم که سود هر فاکتور را نشان بده و این کار مستلزم اینه که شما قیمت خرید رو داشته باشید.
حالا این کالا را که دارید می فروشید از کدام قیمت خرید هست؟ 
چون این قیمت ها همیشه در حال تغییر هست فکر کنم بهتر باشه قیمت خرید رو ذخیره کنم!
و اما یک مشکل دیگر.
من در ایتدای دوره مالی موجودی کالای A صفر است ولی بعد از یک مدت یک سند برگشت کالا می زنم و وقتی سند برگشتی میزنم و هنوز هیچ خریدی انجام نشده اینجا قیمت خرید باید از کجا آورده شود؟

----------


## baktash.n81@gmail.com

حالا متوجه منظورتون شدم ... منم این سئوال رو اضافه می کنم به سئوال شما ... من 10 تا از کالای A رو توی یه فاکتور می فروشم ... از این 10 تا 5 تاشو با قیمت X خریدم 5 تارو با قیمت Y سودش رو چه جوری حساب می کنیم ؟!

----------


## AMIBCT

قیمت‌گذاری کار سختی است
باید اول روش قیمت‌گذاری را مشخص کنید
FIFO یا LIFO یعنی اول کالاهای قدیمی‌تر فروخته می‌شوند یا کالاهای جدید
و یا یک روش دیگر یعنی «میانگین» قیمت

ممکنه شما در انبار از یک کالا با سه قیمت داشته باشید
و موقع فروش از هر سه قیمت در کنار هم بفروشید
اگر مطلب بالا را برای خودتان مشخص کنید روش محاسبه هم که نسبتا کار پیچیده‌ای است مشخص می‌شود

----------


## sajjad_kochekian

من از قیمت میانگین موزون استفاده می کنم.
ولی اگر منظورتون این باشه سود فاکتور را از قیمت میانگین در بیارم باید بگم که قیمت میانگین همیشه در حال تغییر است.

----------


## AMIBCT

با این روشی که شما کار می‌کنید سود ممکن است متغیر باشد
این ویژگی روشی است که شما انتخاب کرده‌اید و حتی اگر به شکلی در برنامه‌نویسی یک عدد ثابت را همیشه نشان بدهید
این عدد نادرست خواهد بود
اگر می‌خواهید یک عدد ثابت نشان بدهید و درستی آن اهمیتی ندارد
موقع ثبت فاکتور سود آن را هم در یک ستون ذخیره کنید و موقع بازخوانی آن را نشان دهید

----------


## Arash_janusV3

> با این روشی که شما کار می‌کنید سود ممکن است متغیر باشد
> این ویژگی روشی است که شما انتخاب کرده‌اید و حتی اگر به شکلی در برنامه‌نویسی یک عدد ثابت را همیشه نشان بدهید
> این عدد نادرست خواهد بود
> اگر می‌خواهید یک عدد ثابت نشان بدهید و درستی آن اهمیتی ندارد
> موقع ثبت فاکتور سود آن را هم در یک ستون ذخیره کنید و موقع بازخوانی آن را نشان دهید


سود را ذخیره کردن اصلا اصولی نیست
ساده ترین مشکلی که به وجود می یاره اینه که وقتی کاربری فاکتور خریدش را اصلاح می کنه
محاسبه سود ممکنه تغییر کنه و برای به روز رسانی اون با مشکلات زیادی مواجه می شه
بهترین روش و ساده ترین روش اینه کاربر در حین ثبت فاکتور فروش بتواند فاکتور خرید را هم انتخاب کنه
و باید یک شناسه از فاکتور خرید یا کالای خریداری شده در جدول ذخیره نمود

----------


## FastCode

> سود را ذخیره کردن اصلا اصولی نیست
> ساده ترین مشکلی که به وجود می یاره اینه که وقتی کاربری فاکتور خریدش را اصلاح می کنه
> محاسبه سود ممکنه تغییر کنه و برای به روز رسانی اون با مشکلات زیادی مواجه می شه
> بهترین روش و ساده ترین روش اینه کاربر در حین ثبت فاکتور فروش بتواند فاکتور خرید را هم انتخاب کنه
> و باید یک شناسه از فاکتور خرید یا کالای خریداری شده در جدول ذخیره نمود


 به نظر شما در این طراحی که شما گفتید جدول پایینی هم لازمه؟
Screenshot from 2012-09-17 10:56:30_cropped.png

----------


## Arash_janusV3

> به نظر شما در این طراحی که شما گفتید جدول پایینی هم لازمه؟
> Screenshot from 2012-09-17 10:56:30_cropped.png


لطفا یک توضیحی هم بدید

----------


## FastCode

> لطفا یک توضیحی هم بدید


سوال این بود که وقتی قیمت یک تموم میشه خود برنامه قیمت دو رو چطوری در نظر بگیره.(اتوماتیک یا دستی)(تیبل سوم برای حالت دستیه)

به این نتیجه رسیدم که چون تعداد اقلام یک فاکتور زیاد نیست میتونیم برای هر سطر فاکتور یک ستون به اسم مثلاً PriceGroupIndex بزاریم و کالاهایی رو که کاربر یکی انتخاب کرده و برنامه مجبور شده جدا کنه رو تشخیص بده. و در یک گروه قرار بده(در گزارشات در قالب یک سطر به کاربر نمایش بده)خاصیت این روش اینه که میتونیم برای هر سطر از هر گروه Attribute های جدا بزنیم و اگر کد کالایی تغییر کرد, بتونیم با کد قبلی با هم در یک سطر ثبت کنیم.

ولی در این روش اگر فاکتور های قبلی ویرایش بشن و فاکتور جدید طوری برگشت بخوره که اجناس قیمت اول با تعداد محدودی(نه همه) از اجناس قیمت دوم  هم برگشت بخوره قیمت ها جابجا میشه.:wonder:

اگر در این طراحی به هر کالای فاکتور یه سریال یا تاریخ ویرایش اضافه کنیم این مشکل حل میشه ولی سربارش خیلی بالاست.

یا همه ی اینها رو بیخیال بشیم و در یک طراحی LIFO هر ویرایش رو جدا از خود فاکتور ذخیره کنیم تا بعداً قابل رجوع باشه.در طراحی های OOP خیلی خوب میشه ولی در sql خیلی سخته.

یا مثل AdventureWorks هر فاکتور Revision های مختلف داشته باشه.که خیلی سنگین میشه.

راه خیلی زیاده
فکر میکنم بهتر باشه در یک تاپیک دیگه همه شرایط رو بررسی کنیم.شاید بقیه هم علاقه داشته باشند.

----------


## ahsaya

*محاسبه سود فاکتور در برنامه خرید و فروش :*



دوست گرامي 



شما بدون توجه به متغييرهاي ديگري كه در محاسبه سود و زيان نقش دارند ، چطور سود را محاسبه مي كنيد ؟


سود كه از كسر خريد و فروش محاسبه نمي شود . محاسبه سود نياز به رعايت استانداردهاي حسابداري دارد .


لحاظ نمودن مواردي مثل اقلام زير در محاسبه سود به شما كمك خواهد كرد :


-موجودي ابتداي دوره
-خريد طي دوره
-برگشت از خريد وتخفيفات
-هزينه هاي پرداختي بابت خريدها
-هزينه هاي سربار(برق،دستمزد غير مستقيم....)
-....

----------


## sajjad_kochekian

این سود ناخالص است
بله اگر بخواهیم سود خالض را حساب کنیم مواردی که شما گفتید باید لحاظ شود

----------


## hr_3303

> قیمت‌گذاری کار سختی است
> باید اول روش قیمت‌گذاری را مشخص کنید
> FIFO یا LIFO یعنی اول کالاهای قدیمی‌تر فروخته می‌شوند یا کالاهای جدید
> و یا یک روش دیگر یعنی «میانگین» قیمت
> 
> ممکنه شما در انبار از یک کالا با سه قیمت داشته باشید
> و موقع فروش از هر سه قیمت در کنار هم بفروشید
> اگر مطلب بالا را برای خودتان مشخص کنید روش محاسبه هم که نسبتا کار پیچیده‌ای است مشخص می‌شود


سلام.امکان داره راجع به  FIFO یا LIFO یه مقدار توضیح بدین.متشکرم.

----------


## FastCode

http://en.wikipedia.org/wiki/FIFO_and_LIFO_accounting
First In First Out
Last In First Out
اولی یعنی:اجناس قدیمی زودتر خارج میشن.
دومی یعنی:اجناس جدید زودتر خارج میشن.

----------


## khosro_68

> حالا متوجه منظورتون شدم ... منم این سئوال رو اضافه می کنم به سئوال شما ... من 10 تا از کالای A رو توی یه فاکتور می فروشم ... از این 10 تا 5 تاشو با قیمت X خریدم 5 تارو با قیمت Y سودش رو چه جوری حساب می کنیم ؟!


این دقیقا مشکلیه که من الان دارم.
یه راه پیدا کردم که جواب هم میده اینه که با هر رکورد قیمت خرید رو هم ذخیره کنم که مشکلش اینه که خیلی سربارش زیاده و وقتی تعداد اقلام فاکنور زیاد باشه اصلن جواب نمیده . 
کسی راه بهتری سراغ نداره؟

----------


## skflower

سلام دوست عزیز
آیا مشکلتون حل شده یا توضیح بدم؟

----------

