مستندات نرم افزار مدیریت مالی تره بار فروشی تحت شبکه

چکیدههر برنامه ای قبل از نوشته شدن نیاز به طراحی و مهندسی دارد، هیچ برنامه نویسی نمی‌تواند بدون طراحی برنامه شروع به نوشتن آن بکندطراحی برنامه میتواند ذهنی باشد ، و میتواند برای تسلط بیشتر بر روی ورق یا برنامه های مربوطه طراحی شودطراحی گرافیکی برنامه نیز می‌تواند از طریق طراح با نظارت مدیر پروژه طراحی شود.در طراحی نرم افزار، اولین مرحله مشخص کردن نیاز مشتری و نحوه برطرف کردن نیاز مشتری است.فصل اولمقدمهنرم افزار های مالی و اداری اصولا برای حل و راحت تر کردن مسائل مالی تشکیل می‌شوندسامانه مدیریت مالی تره بار فروشی راه حلی برای مشکل های مالی یک تره بار فروشی سنتی است.بیان مسالهدر مراحل اولیه بایستی مشکلات مدیریت یک فروشگاه میوه سنتی بررسی شود ، به همین دلیل برای چند هفته در کنار برادرم که یک میوه فروشی را اداره میکند بودم و او اشکالات و خلاء های مدیریت مالی را با من به اشتراک گذاشت.اهداف تحقیقهمانطور که در بالا اشاره شد ، هدف از ساخت نرم افزار های حسابداری و نرم افزار های عمومی راحت تر کردن و اتوماسیون در کار ها می‌باشد ، که هم ضریب خطا را کاهش دهد و هم کاربر به رفاهی بیشتر برسد .اهمیت و ضرورت ساخت این برنامهخیلی مواقع در حسابداری دستی و سنتی فاکتور ها گم میشوند و دسترسی به فاکتور های قدیمی امکان پذیر نمی‌باشد اما با ساخت نرم افزار از خطا های انسانی در حسابداری دور می‌شویم.و همچنین در بعضی مواقع پیگیری یک فاکتور قدیمی ، پیگیری بدهکاری یا بستانکاری بصورت دستی مساله را پیچیده می‌کند.ارائه پرسش های اصلی تحقیق- در طراحی برنامه داده های اولیه یا پی ریزی برنامه چگونه وارد نرم افزار می‌شوند؟- برای ایجاد فاکتور بایستی از چه روشی استفاده کنیم؟- وقتی یک فروشگاه بزرگ داشته باشیم چگونه همزمان چندین کاربر به این سیستم دسترسی داشته باشند؟- در هنگام ایجاد فاکتور مبلغی پرداخت نمی‌شود ، چگونه این مساله مالی قابل حل است؟- یکسری از کاربران نمی‌بایست به قسمت های حساس برنامه دسترسی داشته باشند ، این مورد چگونه قابل حل است؟- تاریخ فارسی در SQLقبل از ویندوز 10 پشتیبانی نمی‌شود برای این مساله چه راه حلی پیش روست؟جواب همه ی این سوالات در فصل های بعدی پاسخ داده خواهد شد .فصل دومهمانطور که پیش از این اشاره شد برای اطلاع کامل از سیستم میوه فروشی ، ابتدا باید سیستم سنتی آن را بطور کامل دانست که بر روی آن سیستمی جدید ایجاد کرد که ایراد های روش قبلی را برطرف کندبه همین علت علاوه بر مغازه های میوه فروشی ، از حجره های میدان بار هم دیدن کردم که آن طرف قضیه (خرید میوه) هم برایمان روشن گردد.نکته مهم آن است که خرید های انجام شده در میدان بار ، در همان روز پرداخت نمی‌شوند و بصورت قسط گونه می‌باشند. پس به همین روال برنامه ما بعد از ایجاد فاکتور بایستی بصورت اتوماتیک یک قسط برای همان فاکتور نیز ایجاد کند .فصل سومگام اول ساخت یک نرم افزار- باید نیاز های مشتری بررسی شوند و چارت نیاز ها بر روی کاغذ یا ... یاد داشت شوند- سیستم سنتی بصورت کامل توسط مشتری تشریح شود- ایرادات سیستم قدیمی یافته شوند و سعی شوند برای آنها راه حلی پیدا شوند- بایستی سوال ها درباره برنامه مطرح شوند ، هر مساله ای یک سوال است که بایستی جوابی برای آن پیدا کنیمگام دوم ساخت یک نرم افزار- بررسی ایده ها و راه های رسیدن به جواب- بعد از بررسی راه حل های پیشنهادی برای سیستم جدید ، آنها را با مشتری در میان میگذاریم- بعد از کامل شدن و مشخص شدن راه ها و رویکرد ها شروع به تحلیل نرم افزار (روش نوشتن یک برنامه میکنیم) .· نکته مهم : 70 در صد برنامه نویسی بخش تحلیل نرم افزار است ، بنابراین اگر تحلیل دقیق و درستی نداشته باشیم در قسمت ها بعدی به مشکلات بزرگی بر می‌خوریم.گام سوم ساخت یک نرم افزار- بعد از تحلیل نحوه ایجاد برنامه و هدف از سیستم جدید ، بایستی جدول ها و پیش نمایش جدول ها ایجاد شوند- رابطه استاندارد بین جدول ها برقرار شود- پیش نمایش پوسته برنامه طراحی شود (wireframe)گام چهارم ساخت یک نرم افزار- حال می‌توانید کامپیوتر خود را برای شروع نوشتن برنامه مورد نظر روشن کنید ، اما عجله نکنید ، هنوز ممکن است تحلیل های اضافی انجام شود و یا نیاز باشد به مراحل قبل سرک بکشید- از ابزار مورد نظر خودتان برای نوشتن برنامه استفاده کنید ، اما نباید خودتان را با ابزار محدود کنید ، انتخاب زبان های مختلف برای یک برنامه نویس محدودیت نیست ( یک برنامه نویس می‌تواند هر زبانی که بخواهد را شروع کند ، مهم منطق برنامه نویسی است)فصل چهارمتحلیل اولیه برنامه تره بار فروشیهمان طور که می‌دانید وظیفه میوه فروش رساندن میوه از کشاورز / میدان بار ، به مشتری استیک میوه فروش بایستی میوه های خود را از یکی ازین دو روش تامین کند که اکثرا از میدان بار استپس اولین جدولی که به آن نیاز داریم جدول فروشنده ها است.در شکل زیر جزییات جدول فروشنده را مشاهده می‌کنید.جدول 1 فروشنده هااولین فیلد : فیلد کلید است که بصورت اتوماتیک عدد رکورد بعدی را ایجاد می‌کند ، وجه تمایز رکورد ها با رکورد های دیگر است.همه ی جدول ها بایستی فیلدی بعنوان کلید داشته باشند.دومین فیلد : نام است که نام فروشنده در آن ذخیره می‌شودسومین فیلد : در صورت خرید از حجره ، شماره حجره در این فیلد ذخیره می‌شودچهارمین فیلد : شماره تلفن یا شماره همراه فروشنده در آن ذخیره می‌شود.جدول 2 لیست میوه هااولین فیلد : کلید این جدول استدومین فیلد : نام میوه را ذخیره می‌کندسومین فیلد : فیلدی اختیاری است و می‌توان اندازه میوه را در آن ذخیره کرد جدول 3 عضو فاکتورفیلد اول : فیلد کلید می‌باشدفیلد دوم : نام کالا برای نمایش در دیتاگرید در این مکان هم ذخیره می‌شودفیلد سوم : تعداد یک سفارش در آن ذخیره می‌شودفیلد چهارم : قیمت کالای خریداری شده در آن ذخیره می‌شودفیلد پنجم : وزن کالای خریداری شده در آن ذخیره می‌شودفلید ششم : فیلدی برای محاسبات داخلی نرم افزار استفیلد هفتم : کاربر میتواند شماره دستی فاکتور خودش را نیز وارد کندفیلد هشتم : کلید خارجی برای اتصال بین جدول میوه و این جدول استاتصال بین عضو فاکتور و لیست میوهبرای اینکه در عضو فاکتور مان یک نوع از میوه در لیست میوه داشته باشیم بایستی این دو جدول به هم متصل شوند .· نکته : برای اینکه هر فاکتور را بتوان از فاکتور های دیگر مجزا کرد باید یک جدول به نام فاکتور اصلی ایجاد کرد که زیر فاکتور را در نهایت به آن متصل کنیم. جدول 4 فاکتور اصلیاولین فیلد : کلید این جدول است .دومین فیلد : شماره دستی فاکتور می‌باشد .سومین فیلد : تاریخ فاکتور در این فیلد ذخیره می‌شودچهارمین فیلد : مبلغ کل اغلام زیر فاکتور به این فیلد انتقال می‌یابندپنجمین فیلد : نام فروشنده در این فیلد بصورت متن ذخیره می‌شود که در زمان نمایش در دیتاگرید کارمان راحت شود.ششمین فیلد : آی دی تاریخ می‌باشد که در فاصل پنجم بصورت مفصل توضیح داده خواهد شد.هفتمین فیلد : کلید خارجی برای اتصال به جدول فروشنده است ، هر فروشنده برابر یک رکورد در جدول فروشنده است.اتصال بین جدول فاکتور اصلی و زیر فاکتوربرای اینکه هر فاکتور بتواند اجزایی داشته باشد ، نیاز به دو جدول است که فاکتور اصلی نشانگر یک فاکتور است و زیر فاکتور نشانگر اغلام موجود در آن فاکتور است· نکته : هر فاکتور می‌تواند چندین زیر فاکتور داشته باشد ، اما هر زیر فاکتور فقط می‌تواند یک فاکتور اصلی داشته باشد.اتصال بین جدول فروشنده و فاکتور اصلیبرای اینکه هر فاکتور فقط به یک فروشنده اختصاص پیدا کند نیاز داریم جدول فروشنده را که حاوی فروشنده هایمان است به جدول فاکتور متصل کنیم· نکته : هر فروشنده میتواند چندین بار در جدول فاکتور تکرار شود اما هر فاکتور فقط می‌تواند به یک فروشنده اختصاص پیدا کند.جدول 5 جدول تراکنش مالیهر فاکتوری که ایجاد شده قطعا یک تراکنش مالی ای هم همان لحظه انجام می‌شود که در ادامه توضیح خواهیم دادفیلد اول : کد کلید این جدول استفیلد دوم : کل مبلغ آن فاکتور استفیلد سوم : پرداختی های انجام شده در این فیلد ذخیره می‌شودفیلد چهارم : مانده حساب در این فیلد ذخیره می‌شودفیلد پنجم : تاریخ ایجاد این تراکنش یا هر تراکنش پرداختی جداگانه در این فیلد ذخیره می‌شودفیلد ششم : کلید خارجی به جدول فاکتور می‌باشداتصال جدول تراکنش مالی به جدول فاکتورجدول 6 فروش روزبرای اینکه برای هر فاکتور اصلی یک تراکنش ایجاد شود بایستی این دو جدول به هم متصل شوند.فیلد اول : کلید این جدول استفیلد دوم : تاریخ ایجاد فروش استفیلد سوم : مبلغ فروش شیفت مورد نظر استفیلد چهارم : کلید خارجی شیفت مورد نظر ( در ادامه به ان می‌رسیم)فیلد پنجم : کلید تاریخ است ( در فصل های بعدی توضیح داده خواهد شد)جدول 7 شیفت های فروش این جدول برای جدا سازی شیفت های فروش ایجاد شده است (صبح ، ظهر ، عصر).فیلد اول : کلید استفیلد دوم : زمان آن شیفت اتصال بین جدول فروش روز و شیفت ها : هر فروش روز شامل یک شیفت می‌باشد پس بایستی بین این دو جدول رابطه برقرار شود.جدول 8 تاریخ ها این جدول برای حساب تاریخ شمسی ایجاد شده است ، در فصل های بعدی توضیح داده خواهد شد .اولین فیلد : کلید استدومین فیلد : تاریخ تبدیلی می‌باشدجدول 9 : ورود و خروج : این جدول برای ورود و خروج کاربران تعبیه شده است.فیلد اول : کلید این جدول است.فیلد دوم : نام کاربری کاربر مورد نظر در این فیلد ذخیره می‌شودفیلد سوم : پسورد کاربر در این فیلد ذخیره می‌شودفیلد چهارم : نوع کاربر در این فیلد ذخیره می‌شود (ادمین / کاربر عادی)نتیجه گیری این فصل : در این فصل کلیه جدول ها و فیلد ها توضیح داده شد در فصل بعدی می‌خواهیم از لحاظ منطقی برنامه را بصورت کامل بررسی کنیم.فصل پنجمبررسی ریز به ریز برنامهبررسی اولیههمانطور که پیش از این گفتیم در یک میوه فروشی میوه ها بایستی از میدان بار یا کشاورز تهیه شونددر میدان بار میوه خریداری می‌شود و هر فروشنده یک فاکتور به ما می‌دهد ، از لحاظ مالی ممکن است مبلغ فاکتور همان لحظه پرداخت نشود ، پس به همین دلیل برنامه مان نیاز به بخش قسط بندی دارد ، جدول تراکنش مالی به همین منظور تعبیه شده است.ایجاد فاکتورپیش از اینکه میوه خریداری شود قطعا برای آن محصول فاکتور صادر می‌گردداز انجایی که یک فاکتور نیاز به زیر مجموعه دارد ، پس برای ایجاد یک فاکتور در برنامه مان به دو جدول نیاز داریم که پیش از این گفتیم (فاکتور اصلی ، زیر فاکتور)فاکتور اصلی را میتوان به کاغذی که شامل فاکتور است و زیر فاکتور را به اجزای ثبت شده در آن فاکتور تشبیه کرد .برای ایجاد فاکتور ابتدا بایستی فاکتور اصلی آن ایجاد شود و سپس زیر فاکتور به آن اضافه گردد ، اگر زیر فاکتوری به فاکتور مان اضافه نشود فاکتور مورد نظر بصورت اتوماتیک ثبت نمیشود و همچنین تراکنش مالی ای برای آن فاکتور ایجاد نمی‌شود.تبدیل تاریخ و بحث شمسی سازی تاریخدر SQLهای قدیمی تر و در ویندوز های قبل از ویندوز 10 ، تاریخ شمسی بصورت پیشفرض توسط سیستم تشخیص داده نمیشد .ما در این برنامه رویکردی را پیش گرفتیم که برای همیشه میتواند بر روی همه ی سیستم ها اجرا شود .چونکه تبدیل تاریخ میلادی به شمسی مشکل است و در نهایت برای جستجو در بین تاریخ ها به مشکل بر می‌خوریم سیستمی برای کد گذاری تاریخ ایجاد کردیمکه برای تاریخ شمسی یک کد شناسه در تقویم میلادی ایجاد می‌کند ، به همین علت دیگر در بحث تاریخ و در بخش جستجو در بین تاریخ ها مشکلی نخواهیم داشت.بخش فروش روزدر هر شیفت کاری مقدار فروشی که انجام می‌شود ثبت می‌شود که در نهایت در بخش گزارش گیری بتوان مقدار فروش های صبح یا ظهر یا عصر را با هم مقایسه نمود .· نکته : پایه ی عملیات مقایسه ی تاریخ در این برنامه از طریق فانشن و جدول اختصاصی ای که نوشته شده انجام می‌شود .بخش کاربرانیکی از بخش های مهم برنامه که سطح دسترسی را مشخص می‌کند .کاربر های ادمین به بخش های اصلی برنامه مانند گزارش گیری ماهانه و مدیریت کاربران دسترسی دارند ، اما کاربران عادی بدالی امنیتی از بخش های مدیریتی محرومند .نکته مهم در مورد این برنامه این است که در ابتدای نصب برنامه مسلما هیچ جدولی بر روی سیستم کاربر وجود ندارد ، این برنامه در ابتدای اجرا در صورتی که کاربر پیشفرض وجود نداشته باشد آنرا ایجاد می‌کند.شبکه سازی برنامهاین برنامه دارای قابلیت شبکه سازی می‌باشد و چندین کاربر از روی چند سیستم مجزا می‌توانند به نرم افزار دسترسی داشته باشند .در فصل ششم نحوه پیاده سازی این قابلیت را کامل توضیح خواهیم داد.همچنین به این نکته توجه داشته باشید که می‌توانید برنامه تان را تحت اینترنت نیز به اشتراک بگذارید ، پیشنیاز چنین قابلیتی ip اختصاصی می‌باشد که بایستی از سرویس دهنده اینترنت درخواست و دریافت شود.فصل ششمتوضیح اجمالی برنامهدر این فصل می‌خواهیم بخش های مختلف برنامه را به تصویر بکشیم و کمی از کد های بخش های حساس بگوییم.در گام اول با بخش ورود کاربران مواجه می‌شویددر زیر کلید ورود کد ها به شکل زیر می‌باشندابتدا یوزرنیم و پسورد را از ورودی میگیرد و سپس در دیتابیس برای آن جستجو می‌کند ، اگر جوابی وجود داشت طبق نوع کاربر فرم اصلی برنامه باز خواهد شد در غیر این صورت کاربر با خطا مواجه خواهد شد.فرم اصلی برنامه به شکل زیر است ، تمام امکانات در دسترس کاربر قرار دارند ، از لحاظ UI(ظاهر برنامه) و UX(تجربه کاربری) تایید شده می‌باشد.همچنین در نوشتار برنامه از فونت "یکان" استفاده شده است.در این بخش میتوانیم میوه هایمان را اضافه کنیم ، این یکی از ریشه های اصلی برنامه است به این معنا که ساختار اصلی برنامه مان را شکل می‌دهد (داده های اصلی برنامه که کاربر وظیفه وارد کردن آنها را دارد).در زیر دکمه های این فرم کدی است که ما را به فرم مربوطه برای حذف جدید یا ویرایش می‌بردبعد از کلیک کردن بر روی جدید به فرم دیگری ارجاع داده می‌شویمدر این قسمت بعد از کلیک کردن بر روی ثبت کد های زیر اجرا خواهند شداگر ما کلید ویرایش را زده بودیم اطلاعات بر روی فرم دوباره پیاده سازی می‌شوند و قابل ویرایش هستندو اگر هم کلید ثبت را بزنیم یک فرمی خالی نمایش داده می‌شود که میتوانیم داده خود را در آن وارد کنیم.بخش افزودن فروشنده نیز که از قبل جدول این بخش را توضیح داده ایم ، یکی از بخش های ورود داده های اولیه برنامه است. و روند کار آن همانند افزودن میوه می‌باشدیکی از بخش های اصلی برنامه ایجاد فاکتور است که با کلید های ثبت ، ویرایش و حذف مجهز شده است.در هنگام کلیک بر روی دکمه ی ثبت به فرمی جدید ارجاع داده می‌شویدو اگر قصد ویرایش داشته باشید اطلاعات فیلد مورد نظر نیز به فرم جدید ارسال می‌شود.برای ایجاد یک فاکتور ابتدا بایستی فاکتور اصلی برای آن ایجاد کنیم و شماره فاکتور که معمولا در بالای فاکتور می‌نویسند در شناسه دستی وارد کنیم (نمیتواند تکراری باشد)نام فروشنده هم که از قبل وارد کرده ایم در بخش فروشنده پدیدار خواهد شد ، بعد از انتخاب تاریخ بر روی فاکتور جدید کلیک می‌کنیمهمانطور که از پیش گفتیم در صورتی که تا همینجا به عقب بازگردیم بصورت اتوماتیک هیچ فاکتوری ثبت نخواهد شدبعد از ایجاد فاکتور می‌توانیم به فاکتور مان زیر فاکتور اضافه کنیمو در صورت کلیک بر روی ثبت به صورت زیر اطلاعات ثبت خواهد شدبعد از بستن صفحه ی فاکتور ، همانطور که مشاهده میکنید فاکتور ایجاد شده است.در همین لحظه در پس زمینه یک قسط برای این فاکتور ایجاد می‌شود ، چونکه همانطور که در ابتدا بررسی کردیم تمام مبلغ در همان ابتدا پرداخت نمی‌شوددر شکل پایین، نمایی از بخش فروش را مشاهده می‌کنید که شیفت های فروش هم در آن مشخص هستند.کاربر در این بخش می‌تواند فروش های روزانه خود را ثبت نماید.این بخش تراکنش های مالی می‌باشدتاریخ را بصورت کد گذاری شده تشخیص میدهد و حتی می‌توان خرید ها را بر اساس فروشنده نیز فیلتر نمود.یکی از بخش های مهم آن است که تمام مبالغ را از تاریخ های مشخص شده در پایین فرم جمع می‌کند.قبل از شروع گزارش گیری برنامه ابتدا تاریخ شروع و تاریخ پایان را دریافت می‌کندتکه کد زیر در صورتی که تیک فروشنده مخصوص را زده باشیم عمل میکندو تکه کد زیر در صورتی که بصورت عادی فقط از تاریخی به تاریخی دیگر جستجو کنیم عمل می‌کند ( بدون یک مشتری خاص)و خط اخر نیز کل فیلد هایی که مورد نظرمان بود را با هم جمع میکندبرای بخش فروش روز نیز میتوان گزارش گیری نمود، و هر شیفت را بصورت جداگانه فیلتر نمود.عمل گزارش گیری برای فروش روز نیز دقیقا همانند خرید روز می‌باشددر بخش خرید و فروش روز چاپ فاکتور نیز اضافه کردیماز انجایی که عمل چاپ بصورت دستی عملی بسیار پیچیده می‌باشد از افزونه ی DGV Printerاستفاده کردیم به شکل زیر چنین خروجی ای به ما خواهد داد .در کد های زیر در بخش اول افزونه ی مورد نظر را ارجاع میدهد و نوعی جدید از آن می‌سازد ، سپس هدر و فوتر آنرا تشکیل می‌دهدبخش زیر مربوط به قسط بندی است (بصورت اتوماتیک بعد از ایجاد فاکتور ایجاد می‌شود) میتوان هر فاکتور را قسط بندی نمود.در بخش مدیریت کاربران نیز می‌توان کاربر های جدید اضافه نمود و کاربر های قبلی را ویرایش کرد.حال پس از توضیح کامل در مورد ویژگی های برنامه می‌خواهیم سفری به زیر پوسته ی برنامه مان بکنیمنکته ای مهم: همیشه در برنامه نویسی یکی از اهداف یک برنامه نویس آن است که از دوباره نویسی جلوگیری شود ، به همین علت اکستنشن ها قابل توسعه هستند ، ما می‌توانیم برای برنامه مان اکستنشن بنویسیم که در هر جایی از برنامه چندین بار از آن تکه کد استفاده کنیم و همچنین کد هایمان مرتب و تمیز تر جلوه دهند.حال چندین اکستنشن نوشته شده در برنامه را بررسی می‌کنیمتبدیل تاریخ شمسی به میلادیهمانطور که مشاهده میکنید وظیفه ی تکه کد بالا تبدیل کد میلادی به شمسی است ، خروجی این تابع یک متن که خروجی تاریخ شمسی شده را برمیگرداندو بخش refrencesنمایانگر آن است که این تکه کد در 3 جای این برنامه استفاده شده است.کد گذاری تاریخهمانطور که پیش از این گفتیم ، خروجی تبدیل به شمسی بصورت متن می‌باشد ، ما در بخش گزارش گیری و قسمت های دیگر برای Query گرفتن از تاریخ های موجود به مشکل بر میخوریم ، برای مثال اگر بخواهیم تاریخ های بین 1/2/1397 تا 1/10/1397 را بدست آوریم یا چیزی را بین این تاریخ ها محاسبه کنیم با یک تاریخ شمسی شده و بصورت متن کاری نمیتوانیم بکنیم ( بین آن دو تاریخ را نمیتوانیم پیدا کنیم)در بخش گزارش گیری و در بخش های دیگر نرم افزار از این اکستنشن استفاده شده است.پس جدولی جداگانه ایجاد کردیم که در هر روزی که چیزی خواست ثبت شود شناسه ی آن تاریخ را برگرداند ، اگر هم تا به امروز برای آن روز شناسه ای ثبت نشده بود یک شناسه برای آن روز میسازدهمانطور که در بخش رفرنس ها مشاهده می‌کنید از این تکه کد 9 بار در برنامه استفاده شده.فصل هفتمنتیجه گیریدر این مقاله سعی شد به از تمامی زوایا به برنامه پرداخته شود و از تمام تکنولوژی ها و ویژگی های برنامه رونمایی شودتا جایی که توانستم بر روی ظاهر کاربری این برنامه کار کرده ام و در آینده نسخه های بعدی این برنامه نیز نوشته خواهد شد.همچنین از آنجایی که این برنامه قابلیت شبکه را نیز داراست پس می‌توان نرم افزار مالی خود را هم از طریق اینترنت و هم از طریق شبکه داخلی ویرایش و مدیریت نمود ، ازین رو دسترسی به اطلاعات فوق العاده اسان تر و ساده تر شده است.منابع فروشگاه میوه مختاریمیدان بارتجربه های افراد در این حوزهویدیو های آموزشی فارسی و انگلیسیتاریخ ساخت : زمستان 1397ارتباط با سازنده : www.MtiApps.irلینک دانلود و فعال سازی برنامه:https://github.com/mamadmti/Fruitshop-accounting-sofware.git