/sales/create পেজটি ডেভেলপ ও কাস্টমাইজেশনের জন্য প্রয়োজনীয় সমস্ত ফাইল, ফাংশন, ডাটাবেজ মডেল এবং লজিকের সম্পূর্ণ হ্যান্ডবুক।
ব্রাউজারে যখন ইউজার http://localhost:81/seml/public/sales/create হিট করে, তখন ব্যাকএন্ডে নিচের সিকোয়েন্সে ডাটা প্রসেস হয়ে পেজটি লোড হয় এবং ফর্ম সাবমিট করার পর ইনভয়েস সেভ হয়:
routes/web.php ফাইলের resource route sales.create রিকোয়েস্ট গ্রহণ করে।
SalesController@create ব্রাঞ্চ, স্টোর, লেজার, ডিলার ডিসকাউন্ট ও ফর্ম সেটিংস লোড করে।
backend.sales.create ভিউটি layouts.app এর ভেতরে রেন্ডার হয়ে ব্রাউজারে দৃশ্যমান হয়।
বারকোড সার্চ, রিয়েলটাইম স্টক চেক ও ডিলার ডিসকাউন্ট পলিসি AJAX এর মাধ্যমে অটো হিসাব হয়।
ফর্ম সাবমিট হলে SalesController@store সেলস, আইটেম স্টক ও ভাউচার লেজার সেভ করে।
SalesController@create() মেথড ডাটাবেজ থেকে Branch, CostCenter, StoreHouse, AccountHead, SalesFormSetting, ItemCategory, Units, TransectionTerms এবং DealerInfo থেকে অ্যাক্টিভ ডিসকাউন্ট পলিসি ফেচ করে ভিউতে পাঠায়।
SalesController@store() মেথডে রিকোয়েস্ট যায়। এটি মাস্টার তথ্য Sales টেবিলে, পণ্যসমূহ SalesDetail টেবিলে, পেমেন্ট অ্যাকাউন্ট SalesAccount টেবিলে সেভ করে, ItemInventory থেকে স্টক কমায় এবং স্বয়ংক্রিয়ভাবে অ্যাকাউন্টিং জার্নাল ভাউচার (VoucherMaster) জেনারেট করে।
routes/web.php
সেলস পেজের মূল এন্ট্রি পয়েন্ট এবং এই পেজের ভেতরে ব্যবহৃত সমস্ত AJAX কলের রাউট নিচে তালিকাভুক্ত করা হলো:
| HTTP Method | Route URL | Controller Method | ব্যবহার / কাজের বিবরণ |
|---|---|---|---|
| GET | /sales/create |
SalesController@create |
মূল সেলস ক্রিয়েট ফর্ম পেজ ওপেন করে। |
| POST | /sales |
SalesController@store |
নতুন সেলস ইনভয়েস ডাটাবেজে সাবমিট / সেভ করে। |
| GET | /sales-setting-modal |
SalesController@formSettingAjax |
ফর্মের কোন কলামগুলো হাইড/শো হবে তার সেটিংস মোডাল লোড করে। |
| POST | /sales-settings |
SalesController@Settings |
সেলস ফর্ম সেটিংস আপডেট সেভ করে। |
| GET | /item-sales-search |
SalesController@itemSalesSearch |
ইনভয়েস টেবিলে আইটেমের নাম লিখে সার্চ করলে অটোসাজেশন দেয়। |
| GET | /item-sales-barcode-search |
SalesController@itemSalesBarcodeSearch |
বারকোড স্ক্যানার দিয়ে স্ক্যান করা পণ্যটি সরাসরি টেবিলে আনে। |
| GET | /check-available-qty |
SalesController@checkAvailableQty |
সিলেক্টেড স্টোরে উক্ত আইটেমের পর্যাপ্ত স্টক আছে কিনা ভ্যালিডেট করে। |
| GET | /discount-rate-setup/applicable |
DiscountRateSetupController@getApplicableDiscount |
সিলেক্টেড ডিলার এবং ইনভয়েস তারিখ অনুযায়ী ডিসকাউন্ট রেট ক্যালকুলেট করে। |
| GET | /sales-order-lookup-search |
SalesController@salesOrderLookupSearch |
আগে থেকে থাকা সেলস অর্ডার (SO) রেফারেন্স হিসেবে সার্চ করার সুবিধা। |
app/Http/Controllers/SalesController.php
লাইন নম্বর: SalesController.php-এর ১১৩০ নম্বর লাইন।
এই মেথডটি পেজটি রেন্ডার করতে প্রয়োজনীয় সকল ডাটা ডাটাবেজ থেকে নিয়ে আসে:
Auth::user() হতে ইউজারের পারমিটেড ব্রাঞ্চ ও স্টোর ফিল্টার করে।AccountHead এবং Branch তালিকা তৈরি করে।SalesFormSetting::first() দ্বারা ফর্মের ফিল্ড ভিজিবিলিটি আনে।DealerInfo এবং DiscountRateSetup হতে ডিলারের জন্য নির্ধারিত ডিসকাউন্ট পলিসি রেট ক্যালকুলেট করে।return view('backend.sales.create', compact(...)) রিটার্ন করে।
লাইন নম্বর: SalesController.php-এর ১৪১৮ নম্বর লাইন।
ইউজার ফর্ম সাবমিট করার পর এই মেথডটি চূড়ান্ত সেভ ও ট্রানজেকশন সম্পন্ন করে:
_cash_customer_check)।Sales মডেলে সেভ করে।SalesDetail মডেলে লাইন আইটেম সেভ করে।ItemInventory আপডেট করে।VoucherMaster ও VoucherMasterDetail এন্ট্রি দেয়।resources/views/backend/sales/create.blade.php
resources/views/backend/layouts/app.blade.php
মেইন সাইডবার, নেভিগেশন বার, সিএসএস ও জেকোয়েরি প্লাগইন লোড করার প্যারেন্ট লেআউট।
resources/views/backend/sales/form_setting_modal.blade.php
সেলস ফর্মের কলাম প্রদর্শন/লুকানোর চেকসবক্স কনফিগারেশন মোডাল।
resources/views/backend/common-modal/item_ledger_modal.blade.php
পেজ রিফ্রেশ না করেই দ্রুত নতুন পণ্য বা নতুন একাউন্ট লেজার খোলার কুইক মোডাল।
resources/views/backend/message/message.blade.php
ফর্ম সাবমিটের পরে এরর বা সাকসেস নোটিফিকেশন প্রদর্শনকারী পারশিয়াল ফাইল।
সেলস ইনভয়েস ক্রিয়েট ও সেভ করার ক্ষেত্রে নিচের মডেল ও ডাটাবেজ টেবিলগুলো ব্যবহৃত হয়:
| Model Name & Path | Database Table | কাজের উদ্দেশ্য / Data Description |
|---|---|---|
Salesapp/Models/Sales.php
|
sales |
মাস্টার ইনভয়েস রেকর্ড (ইনভয়েস নং, তারিখ, কাস্টমার আইডি, গ্র্যান্ড টোটাল, ইত্যাদি)। |
SalesDetailapp/Models/SalesDetail.php
|
sales_details |
প্রতিটি পণ্যের লাইন আইটেম (আইটেম আইডি, পরিমাণ, রেট, ভ্যাট, ডিলার ডিসকাউন্ট, লাইন টোটাল)। |
SalesAccountapp/Models/SalesAccount.php
|
sales_accounts |
কাস্টমার লেজার এবং ক্যাশ/ব্যাংক পেমেন্টের সমন্বিত ডেবিট-ক্রেডিট হিসাব। |
SalesFormSettingapp/Models/SalesFormSetting.php
|
sales_form_settings |
ফর্মে বারকোড, ভ্যাট, ডিসকাউন্ট ইত্যাদি কলাম দৃশ্যমান থাকবে কিনা তার সেটিংস। |
AccountLedgerapp/Models/AccountLedger.php
|
account_ledgers |
কাস্টমার একাউন্ট এবং ব্যাংক/ক্যাশ পেমেন্ট লেজার সম্পর্কিত তথ্য। |
ItemInventoryapp/Models/ItemInventory.php
|
item_inventories |
পণ্য ডেলিভারি দেওয়ার সাথে সাথে ইনভেন্টরি স্টক হিস্ট্রি ও ব্যালেন্স আপডেট করে। |
DealerInfo & DiscountRateSetupapp/Models/DealerInfo.php
|
dealer_infos, discount_rate_setups |
ডিলারদের জন্য অ্যাক্টিভ স্পেশাল ডিসকাউন্ট পার্সেন্টেজ নির্ধারণ ও ফেচ করা। |
VoucherMaster & Detailapp/Models/VoucherMaster.php
|
voucher_masters, voucher_master_details |
বিক্রয় সম্পূর্ণ হলে স্বয়ংক্রিয়ভাবে তৈরি হওয়া ফাইন্যান্সিয়াল জার্নাল ভাউচার। |
database/migrations/2026_10_21_183000_add_customer_credit_fields_to_sales_table.php (কাস্টমার ক্রেডিট লিমিট ফিল্ডসমূহ)database/migrations/2026_10_21_163000_add_challan_no_and_gatepass_no_to_sales_table.php (চালান ও গেটপাস নং)database/migrations/2026_10_01_233500_add_dealer_id_to_sales_table.php (ডিলার আইডি সংযোজন)
/sales/create পেজে যে কোন কাজ বা মোডিফিকেশন করার জন্য নিচের টেবিলটি ফলো করলেই কাঙ্ক্ষিত ফাইল সহজে খুঁজে পাবেন:
| লেয়ার | ফাইলের আপেক্ষিক পাথ (File Path) | মূল উদ্দেশ্য / আপনি যখন এডিট করবেন |
|---|---|---|
| Route | routes/web.php |
নতুন URL বা AJAX এন্ডপয়েন্ট যোগ/পরিবর্তন করতে। |
| Controller | app/Http/Controllers/SalesController.php |
ফর্মের ডাটা লোড করার কুয়েরি অথবা ডাটাবেজে সেভ লজিক এডিট করতে। |
| View | resources/views/backend/sales/create.blade.php |
ফর্মের ডিজাইন, নতুন ইনপুট ফিল্ড, কলাম অথবা জাভাস্ক্রিপ্ট ফর্মুলা পরিবর্তন করতে। |
| View (Modal) | resources/views/backend/sales/form_setting_modal.blade.php |
সেলস ফর্ম সেটিংসে নতুন কোনো ফিল্ডের টগল অপশন যুক্ত করতে। |
| View (Modal) | resources/views/backend/common-modal/item_ledger_modal.blade.php |
কুইক আইটেম বা লেজার ক্রিয়েশন মোডাল মডিফাই করতে। |
| Model | app/Models/Sales.php |
মাস্টার টেবিলের রিলেশনশিপ (যেমন: কাস্টমার, ইউজার, ব্রাঞ্চ) হ্যান্ডেল করতে। |
| Model | app/Models/SalesDetail.php |
আইটেম রো-এর ইউনিট কনভার্সন, বারকোড বা আইটেম রিলেশন হ্যান্ডেল করতে। |
| Language | resources/lang/en/label.php |
ফর্মের লেবেল বা টেক্সট পরিবর্তন ও নতুন ইংরেজি/বাংলা ট্রান্সলেশন দিতে। |
| CSS | public/backend/new_style.css |
পেজের কার্ড, টেবিল বা বাটনের কাস্টম কালার ও সিএসএস স্টাইলিং পরিবর্তন করতে। |