Bagisto to HB Update (#23)
* Bump symfony/http-foundation from 4.4.5 to 4.4.7 Bumps [symfony/http-foundation](https://github.com/symfony/http-foundation) from 4.4.5 to 4.4.7. - [Release notes](https://github.com/symfony/http-foundation/releases) - [Changelog](https://github.com/symfony/http-foundation/blob/master/CHANGELOG.md) - [Commits](https://github.com/symfony/http-foundation/compare/v4.4.5...v4.4.7) Signed-off-by: dependabot[bot] <support@github.com> * remove line * #2808 * #2785 * checkout page margin added * {git commit -m * checkout page issue * modal view update * bundled assets * remove irrelevant css * #2775 * remove irrelevant xhr * revert back changes in format price * category call get products method * customer options click issue resolved * customer panel accordian view and file picker view * customer accordian design update * Issue #2812 * compare page update height after loading images * api changes * code changed for api * #2329 * issue #2792 resolved * margin added between wishlist icon and compare icon * checkout page email validation * #2834 * Issue #2713 fixed * Issue #2851 fixed * Issue #2847 * Issue #2851 fixed * Issue #2768 fixed * #2691 * Issue #2794 * #2849 * #2856 * Changelog updated * subcategory visibility issue in responsive * #2790 * Issue #2793 * Issue #2846 fixed * Changelog updated * Fixed date icon issue * Translate mass-update for review status in admin grid * Fix save-category btn translation for langs with noun case * Added more view_render_events in the customer account views * Added view_render_event to admin order view * Created new view_render_events for admin order and invoice view * #2866 * calculate height on change value of dropdown * #2876 * Issue #2784 fixed * Updated changelog * Issue #2871 fixed * Issue #2543 fixed * subcategory issue resolved * Updated changelog * #2875 * Issue #2890 * 2875 update * remove channel from tax category * introduce channel and channel inventory source factories * Issue #2895 * removed dd * Issue #2893 * add unified address-table and handling for models * Issue #2884 * Issue #2863 fixed * fix address_type at many places; add tests for address relations * Issue #2793 * Issue #2721 * fix address-constrains; fix address global scopes * variant products images update issue resolved * rename address types * responsive cart count update * #2915 * fix typo in address migration * update * update * add option to OrderItemFactory to use existing product * Added new events to customer update and checkou, fixed some view render events and pt_BR grammar * Add Japanese translation * Moved command to packages * Updated composer lock file * Bump symfony/http-foundation from 4.4.5 to 4.4.7 Bumps [symfony/http-foundation](https://github.com/symfony/http-foundation) from 4.4.5 to 4.4.7. - [Release notes](https://github.com/symfony/http-foundation/releases) - [Changelog](https://github.com/symfony/http-foundation/blob/master/CHANGELOG.md) - [Commits](https://github.com/symfony/http-foundation/compare/v4.4.5...v4.4.7) Signed-off-by: dependabot[bot] <support@github.com> * #2908 * customer sidebar menu issue resolved * removed layered navigation in searchproducts page * #2919 * content header path update * add check if view exists * [Updated: getBaseImage() method updated for configurable product.] * Cancel feature added in customer order * Installer fixes * resolved issue with product images carousel * change file name from views to Views * Auto exchange rate feature added * fix category issue and change country,state order * max price issue in category * Updated change log file * Updated change log file * fix translation in add attribute button fix add button not translated to other language. * Issue #2954 fixed * Removed unnecessary code from CartController * Issue #2954 fixed * Issue #2945 fixed * Updated change log file * Updated change log file * Version updated in env files * add CartRuleCest * introduce channel and customer group filter for cart rule grid * fix calulation helper in test * Issue #2949 and #2950 * resolve issue 2964 * localization error message added in velocity theme * type hint changed * refactoring, variable renamed * Issue #2942 * Issue #2942 * configuration added for favicon in admin * Issue #2969 * #2974 * favicon for admin login * fix randomly failing tax cest * remove unnecessary use statements * fix GuestCheckoutCest * remove newline * set price faker in Laravel5Helper to 2 decimals, fix rounding in CartTaxesCest too * Added missing space for configurable/grouped product price. * responsive product gallery issue resolved * Issue #2987 * Issue #2987 * Product multiple image select feature added * Order comment feature added * process checkout if user not logged in * Order comment email sent to customer Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Shubham Mehrotra <shubh0896m@gmail.com> Co-authored-by: Jitendra Singh <39991107+jitendra-webkul@users.noreply.github.com> Co-authored-by: rahulshukla-home <rahulcs0082@gmail.com> Co-authored-by: Herbert Maschke <thyseus@gmail.com> Co-authored-by: shivam kumar <shivam.kumar174@webkul.com> Co-authored-by: Shivam kumar <50355852+shivam-webkul@users.noreply.github.com> Co-authored-by: hexu <hexu.garfield@gmail.com> Co-authored-by: Pranshu Tomar <pranshutomar@Pranshus-MacBook-Air.local> Co-authored-by: VaD1ke <vl.slesarenko@gmail.com> Co-authored-by: Carlos Augusto Gartner <contato@carlosgartner.com.br> Co-authored-by: Florian Bosdorff <florian.bosdorff@haendlerbund.de> Co-authored-by: José María Campaña <chemisax@gmail.com> Co-authored-by: Vivek <viveksh047@webkul.com> Co-authored-by: namvarii <50305913+namvarii@users.noreply.github.com> Co-authored-by: Steffen Mahler <steffen.mahler@haendlerbund.de> Co-authored-by: Herbert Maschke <thyseus@pm.me> Co-authored-by: SteffenMahler <57138594+SteffenMahler@users.noreply.github.com> Co-authored-by: Matt April <matthew.japril@gmail.com>
This commit is contained in:
parent
7faf5bb97f
commit
41754f4f73
|
|
@ -1,6 +1,6 @@
|
|||
APP_NAME=Bagisto
|
||||
APP_ENV=local
|
||||
APP_VERSION=1.0.0
|
||||
APP_VERSION=1.1.2
|
||||
APP_KEY=
|
||||
APP_DEBUG=true
|
||||
APP_URL=http://localhost
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
APP_NAME=Laravel
|
||||
APP_ENV=local
|
||||
APP_VERSION=1.0.0
|
||||
APP_VERSION=1.1.2
|
||||
APP_KEY=base64:G4KY3tUsTaY9ONo1n/QyJvVLQZdJDgbIkSJswFK01HE=
|
||||
APP_DEBUG=true
|
||||
APP_URL=http://localhost
|
||||
|
|
|
|||
|
|
@ -2,6 +2,402 @@
|
|||
|
||||
#### This changelog consists the bug & security fixes and new features being included in the releases listed below.
|
||||
|
||||
## **v1.1.2 (24th of March 2020)** - *Release*
|
||||
|
||||
* [feature] - Now customer can cancel order.
|
||||
|
||||
* [feature] - Auto and manual currency exchange rates update feature added.
|
||||
|
||||
|
||||
|
||||
* #797 [fixed] - Add new module
|
||||
|
||||
* #2453 [fixed] - Velocity theme is not loading on fresh instance
|
||||
|
||||
* #2691 [fixed] - Shipping and Payment methods automatically selected on Checkout oage
|
||||
|
||||
* #2752 [fixed] - Error when you create or update a new catalog under root
|
||||
|
||||
* #2793 [fixed] - Stock Check Incorrect for Configurable Items
|
||||
|
||||
* #2826 [fixed] - Not able to view cart icon
|
||||
|
||||
* #2869 [fixed] - Updating "Velocity meta data" throws QueryException
|
||||
|
||||
* #2871 [fixed] - Refund throws "Undefined index: shipping" error
|
||||
|
||||
* #2875 [fixed] - Deleting brands that have been assigned to products causes checkout error
|
||||
|
||||
* #2884 [fixed] - Undefined Index slot: when add to cart rental booking
|
||||
|
||||
* #2890 [fixed] - cart rule condition (price in cart) always set to equal or less than when select greater than/less than
|
||||
|
||||
* #2895 [fixed] - The type hint of view in this blade file is 'address' - there is no tag in any provider which loads view with this type hint.
|
||||
|
||||
* #2896 [fixed] - There are two fields with having same value of name attribute one is hidden and other is of its desired type - is this redundant code or its solving any purpose?
|
||||
|
||||
* #2897 [fixed] - Inventory status field should be passed through validation for boolean in its backend controller.
|
||||
|
||||
* #2898 [fixed] - error when viewing a category and then wanting to change the language of the page in mobile view
|
||||
|
||||
* #2899 [fixed] - showing the configured products as radio button
|
||||
|
||||
* #2900 [fixed] - getting different variant of a configurable product in front end
|
||||
|
||||
* #2901 [fixed] - Error when creating a category
|
||||
|
||||
* #2902 [fixed] - unify address tables
|
||||
|
||||
* #2908 [fixed] - A class is missing from the Velocity ProductRepositiry file
|
||||
|
||||
* #2914 [fixed] - Filter not showing on mobile, also sorting not working on mobile
|
||||
|
||||
* #2915 [fixed] - filters are missing on mobile view.
|
||||
|
||||
* #2919 [fixed] - Header Content not working on other languages
|
||||
|
||||
* #2925 [fixed] - exception for php version 7.4
|
||||
|
||||
* #2938 [fixed] - Extend Model Class
|
||||
|
||||
* #2939 [fixed] - get product description for API without html tags
|
||||
|
||||
* #2940 [fixed] - creating categories have error
|
||||
|
||||
* #2943 [fixed] - Scroll images is not working
|
||||
|
||||
* #2945 [fixed] - API product detail return empty array
|
||||
|
||||
* #2954 [fixed] - The merging cart function does not work when already added all items of product into customer cart
|
||||
|
||||
|
||||
## **v1.1.0 (24th of March 2020)** - *Release*
|
||||
|
||||
* #797 [fixed] - Add new module
|
||||
|
||||
* #826 [fixed] - Impossible to create the root directory "".
|
||||
|
||||
* #2152 [fixed] - Product images are not showing
|
||||
|
||||
* #2329 [fixed] - Getting exception on frontend after updating meta data.
|
||||
|
||||
* #2354 [fixed] - possible integrate this payment
|
||||
|
||||
* #2543 [fixed] - Sliders Text should be translatable
|
||||
|
||||
* #2558 [fixed] - Sliders Text should be translatable
|
||||
|
||||
* #2619 [fixed] - Issue when category slug & product slug are same
|
||||
|
||||
* #2684 [fixed] - API checkout/cart returns null for guest user
|
||||
|
||||
* #2691 [fixed] - Shipping and Payment methods automatically selected on Checkout oage
|
||||
|
||||
* #2706 [fixed] - Getting exception on editing category for pt_BR locale in php 7.4
|
||||
|
||||
* #2708 [fixed] - Able to create booking product from back date.
|
||||
|
||||
* #2713 [fixed] - fix the invoice header in pdf
|
||||
|
||||
* #2726 [fixed] - is shop.js the vue framework ??
|
||||
|
||||
* #2752 [fixed] - Error when you create or update a new catalog under root
|
||||
|
||||
* #2763 [fixed] - error to add rental booking into cart
|
||||
|
||||
* #2764 [fixed] - fix UI when select back_date of booking product,the calendar icon is set on another place
|
||||
|
||||
* #2765 [fixed] - Email settings configuration values are not write in .env file
|
||||
|
||||
* #2768 [fixed] - Getting exception in cart when remove one ticket from event booking from backend
|
||||
|
||||
* #2769 [fixed] - Can't delete Exchange Rates data
|
||||
|
||||
* #2774 [fixed] - How to add new icon in bagisto admin panel?
|
||||
|
||||
* #2775 [fixed] - compare icon is missing in each product for default theme
|
||||
|
||||
* #2776 [fixed] - compare option in side bar menu at customer panel should be available
|
||||
|
||||
* #2778 [fixed] - Issue in customer profile dropdown.
|
||||
|
||||
* #2779 [fixed] - Issue on checkout page, email should ask first as in default theme.
|
||||
|
||||
* #2780 [fixed] - Sidebar layout issue.
|
||||
|
||||
* #2781 [fixed] - Mobile menu is not showing correct sub-menu
|
||||
|
||||
* #2784 [fixed] - One booking for many days slot time issue
|
||||
|
||||
* #2785 [fixed] - missing address details in checkout page
|
||||
|
||||
* #2786 [fixed] - Getting error message on adding product to compare product from search page.
|
||||
|
||||
* #2788 [fixed] - guest_checkout is missing from edit product
|
||||
|
||||
* #2790 [fixed] - Minicart disable when use new languages only velocity theme
|
||||
|
||||
* #2792 [fixed] - Weight Validation Inconsistencies
|
||||
|
||||
* #2793 [fixed] - Stock Check Incorrect for Configurable Items
|
||||
|
||||
* #2794 [fixed] - When allow backorder is enabled, display a message available for order rather than in stock.
|
||||
|
||||
* #2796 [fixed] - Try to create category in windows 10 getting exception
|
||||
|
||||
* #2801 [fixed] - Address with more than 2 lines is not added correctly to the cart_address table
|
||||
|
||||
* #2807 [fixed] - Illegal mix of collations
|
||||
|
||||
* #2808 [fixed] - Correct the spelling on registration page.
|
||||
|
||||
* #2810 [fixed] - UI issue on compare similar item page.
|
||||
|
||||
* #2811 [fixed] - how to change checkout proccess
|
||||
|
||||
* #2812 [fixed] - getting timezone error while setup
|
||||
|
||||
* #2813 [fixed] - Ui issue if there is only one product in compare page.
|
||||
|
||||
* #2814 [fixed] - variant product's name aren't update when select their options in Front
|
||||
|
||||
* #2818 [fixed] - Not able to view menu in velocity theme on storefront
|
||||
|
||||
* #2821 [fixed] - Address Line is Null in Emails
|
||||
|
||||
* #2825 [fixed] - PHP Notice:
|
||||
|
||||
* #2827 [fixed] - default local not changing in storefront in velocity theme
|
||||
|
||||
* #2828 [fixed] - currency change error on velocity theme
|
||||
|
||||
* #2829 [fixed] - changing home page content in velocity and npm
|
||||
|
||||
* #2832 [fixed] - Illegal mix of collations
|
||||
|
||||
* #2834 [fixed] - Layout issue in compare page in pt_BR locale
|
||||
|
||||
* #2837 [fixed] - subscription bar content source code is not visible in text editor
|
||||
|
||||
* #2840 [fixed] - Velocity theme is not available on fresh install
|
||||
|
||||
* #2845 [fixed] - Implement custom RegistrationController
|
||||
|
||||
* #2846 [fixed] - does not show next step
|
||||
|
||||
* #2847 [fixed] - Class 'Faker\Factory' not found
|
||||
|
||||
* #2849 [fixed] - Can not add my stylesheet to Velocity theme
|
||||
|
||||
* #2850 [fixed] - admin crash on save configration
|
||||
|
||||
* #2851 [fixed] - Fix date picker icon layout at dashboard
|
||||
|
||||
* #2856 [fixed] - Issue with Sort by functionality, when open any category it by defaults show Newest First but after changing sort by when again select newest first it shows different product.
|
||||
|
||||
* #2865 [fixed] - Save order taking so long time 30s
|
||||
|
||||
* #2866 [fixed] - ayout issue when customer save addresses form
|
||||
|
||||
* #2871 [fixed] - Refund throws "Undefined index: shipping" error
|
||||
|
||||
* #2876 [fixed] - Place order is disable at checkout when select shipping address
|
||||
|
||||
|
||||
|
||||
## **v1.1.0 (24th of March 2020)** - *Release*
|
||||
|
||||
* [feature] Added new booking type product.
|
||||
|
||||
* [feature] Impletment compare product feature.
|
||||
|
||||
* [feature] Impletment compare product feature.
|
||||
|
||||
* #2525 [fixed] - Add more settings to the installers
|
||||
|
||||
* #2541 [fixed] - Showing product's price with the price including tax
|
||||
|
||||
* #2552 [fixed] - error mysql 8
|
||||
|
||||
* #2556 [fixed] - Logo and favicon broken
|
||||
|
||||
* #2562 [fixed] - error catalog/categories/create
|
||||
|
||||
* #2563 [fixed] - error add in cart
|
||||
|
||||
* #2567 [fixed] - Error 404 found when click on compare product image
|
||||
|
||||
* #2568 [fixed] - Getting exception when update to default theme from the comparison page
|
||||
|
||||
* #2572 [fixed] - custom attribute values are not show in comparison product
|
||||
|
||||
* #2573 [fixed] - Add to wishlist icon is missing with each product in comparison page
|
||||
|
||||
* #2574 [fixed] - Quick view popup should be closed when click add to compare
|
||||
|
||||
* #2575 [fixed] - compare feature is not working from the product page for logged In customer
|
||||
|
||||
* #2576 [fixed] - Compare icon is missing for new products
|
||||
|
||||
* #2577 [fixed] - GUI installer stuck at Migration & Seed
|
||||
|
||||
* #2578 [fixed] - Impossible to create the root directory
|
||||
|
||||
* #2579 [fixed] - error menu mobile
|
||||
|
||||
* #2580 [fixed] - error recently viewed products in mobile
|
||||
|
||||
* #2581 [fixed] - admin/configuration/general/design
|
||||
|
||||
* #2583 [fixed] - Display 3D product preivew image
|
||||
|
||||
* #2584 [fixed] - Not getting root category name, in categories.
|
||||
|
||||
* #2585 [fixed] - Product name , description and short description gets removed on editing the product.
|
||||
|
||||
* #2586 [fixed] - APP_TIMEZONE and APP_LOCALE values should be available in env file.
|
||||
|
||||
* #2587 [fixed] - Getting some warning during installation.
|
||||
|
||||
* #2589 [fixed] - Getting exception on editing header content on php 7.4.
|
||||
|
||||
* #2596 [fixed] - Allow Email Verification field is given twice, once in Configure->Customers->Setting and in Configure->Admin->Email.Currently if field is enable from any one grid and disable from other grid, then its not working.
|
||||
|
||||
* #2597 [fixed] - Not getting email for "Send Inventory Source Notification E-mail".
|
||||
|
||||
* #2599 [fixed] - login required when add compare product from the category page
|
||||
|
||||
* #2601 [fixed] - all comparable product remove from list only when single product remove
|
||||
|
||||
* #2602 [fixed] - Catalog default image height should be equal to the original image in Velocity
|
||||
|
||||
* #2604 [fixed] - Not able to make product as comparable from the category page as logged In user
|
||||
|
||||
* #2605 [fixed] - Attribute is comparable (yes/no) option is missing when add new attribute
|
||||
|
||||
* #2606 [fixed] - custom attributes are not Visible on Product View Page on Front-end
|
||||
|
||||
* #2607 [fixed] - Getting exception on editing category for pt_BR locale in php 7.4
|
||||
|
||||
* #2608 [fixed] - Getting exception on creating category.
|
||||
|
||||
* #2609 [fixed] - product removed from comparison page when update product by name
|
||||
|
||||
* #2611 [fixed] - installer error
|
||||
|
||||
* #2612 [fixed] - available slots are not showing for current date even if slot time is not expired
|
||||
|
||||
* #2613 [fixed] - Propaganistas/Laravel-Intl is abandoned
|
||||
|
||||
* #2614 [fixed] - table booking slot time is expired still exist in cart
|
||||
|
||||
* #2619 [fixed] - Issue when category slug & product slug are same
|
||||
|
||||
* #2621 [fixed] - i create a site and it is up kind of noting works
|
||||
|
||||
* #2626 [fixed] - Tax rates zipcode is still required when enable zip range is disabled
|
||||
|
||||
* #2630 [fixed] - Error exception when add booking product
|
||||
|
||||
* #2634 [fixed] - console error when select slots in default booking
|
||||
|
||||
* #2635 [fixed] - Default Booking details remove from edit page for many booking of one day
|
||||
|
||||
* #2636 [fixed] - Error alert when add to cart a simple product from the home page
|
||||
|
||||
* #2638 [fixed] - customer status is not translated in customer list
|
||||
|
||||
* #2639 [fixed] - category slug field should show warning if saved blank header content
|
||||
|
||||
* #2643 [fixed] - Getting exception when add appointment booking
|
||||
|
||||
* #2645 [fixed] - Error on adding product to cart
|
||||
|
||||
* #2649 [fixed] - Incorrect slot time for one booking many days in product page
|
||||
|
||||
* #2650 [fixed] - remove slot duration from the booking product page
|
||||
|
||||
* #2654 [fixed] - warning should be removed once slot field is selected
|
||||
|
||||
* #2658 [fixed] - slot, duration, break time are not saved for appointment booking
|
||||
|
||||
* #2660 [fixed] - guest capacity value is not saved in table booking
|
||||
|
||||
* #2661 [fixed] - Charged_per drop down value is not updating for table booking
|
||||
|
||||
* #2284 [fixed] - Layout issue in pt_BR locale.
|
||||
|
||||
* #2468 [fixed] - Guest user is able to checkout if guest checkout is disabled.
|
||||
|
||||
* #2517 [fixed] - Product description text gets selected if click on drop down icon on product page
|
||||
|
||||
* #2549 [fixed] - Invoices aren't legally valid.
|
||||
|
||||
* #2571 [fixed] - compare icon should classify the total compare product added in the comparison page
|
||||
|
||||
* #2592 [fixed] - No menu for the logged in user when clicking over comparison
|
||||
|
||||
* #2593 [fixed] - Cannot read property 'disabled' of undefined" on filter price
|
||||
|
||||
* #2594 [fixed] - After refund quantity of product increases.
|
||||
|
||||
* #2595 [fixed] - Category image size issue in velocity theme.
|
||||
|
||||
* #2610 [fixed] - some of the attribute values aren't visible in comparison page
|
||||
|
||||
* #2616 [fixed] - Tiny Bug on Admin Pages
|
||||
|
||||
* #2637 [fixed] - blank admin page if username contains whitespaces in email configuration
|
||||
|
||||
* #2640 [fixed] - product moved to cart still showing in wishlist
|
||||
|
||||
* #2641 [fixed] - Issue on wishlist page for guest user
|
||||
|
||||
* #2644 [fixed] - Add an option to set encryption to none during installation
|
||||
|
||||
* #2646 [fixed] - error missing wishlist or compare icon on mobile view
|
||||
|
||||
* #2666 [fixed] - fix the UI for booking product in cart page
|
||||
|
||||
* #2667 [fixed] - By default wishlist option is selected in cart
|
||||
|
||||
* #2670 [fixed] - Booking product should be removed from the cart when selected slot time expired
|
||||
|
||||
* #2669 [fixed] - Browser compatibility issue
|
||||
|
||||
* #2671 [fixed] - Error on moving booking product to wishlist
|
||||
|
||||
* #2672 [fixed] - wrong price calculated in cart for rental booking
|
||||
|
||||
* #2674 [fixed] - Rental booking added to cart without selecting date in velocity
|
||||
|
||||
* #2677 [fixed] - error on cart when rental booking update from backend
|
||||
|
||||
* #2678 [fixed] - UI issue in rental booking product page
|
||||
|
||||
* #2693 [fixed] - Booking product page - add to cart button js error
|
||||
|
||||
* #2704 [fixed] - product's assigned category can't be removed
|
||||
|
||||
* #2707 [fixed] - Getting exception when generate invoice in appointment booking
|
||||
|
||||
* #2715 [fixed] - Error message should throw if "To" time is less than "From".
|
||||
|
||||
* #2716 [fixed] - After saving the default booking time product selected time for date range changes to 00:00:00 ,because of which not able to book appointment on frontend.
|
||||
|
||||
* #2717 [fixed] - Getting error message on adding rental product in cart if rental booking is not available for that day.
|
||||
|
||||
* #2722 [fixed] - warning showing when update event booking cart quantity from the product page
|
||||
|
||||
* #2723 [fixed] - Compare product icon on header showing counts of compare product but there are no product in compare list.
|
||||
|
||||
* #2724 [fixed] - table bookings quantity should update in existing booking added in cart for same slot/date
|
||||
|
||||
* #2726 [fixed] - is shop.js the vue framework ??
|
||||
|
||||
* #2732 [fixed] - missing product's quick view in category page
|
||||
|
||||
|
||||
## **v1.0.0 (24th of February 2020)** - *Release*
|
||||
|
||||
* #2377 [fixed] - Getting exception on creating a new category under any other category.
|
||||
|
|
|
|||
|
|
@ -39,4 +39,4 @@ class Kernel extends ConsoleKernel
|
|||
|
||||
require base_path('routes/console.php');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -33,20 +33,23 @@
|
|||
"maatwebsite/excel": "3.1.18",
|
||||
"nwidart/laravel-modules": "^3.2",
|
||||
"prettus/l5-repository": "^2.6",
|
||||
"tymon/jwt-auth": "^1.0.0"
|
||||
"tymon/jwt-auth": "^1.0.0",
|
||||
"barryvdh/laravel-debugbar": "^3.1",
|
||||
"fzaninotto/faker": "^1.4"
|
||||
},
|
||||
|
||||
"require-dev": {
|
||||
"barryvdh/laravel-debugbar": "^3.1",
|
||||
"codeception/codeception": "4.1.1",
|
||||
"codeception/module-asserts": "^1.1",
|
||||
"codeception/module-filesystem": "^1.0",
|
||||
"codeception/module-laravel5": "^1.0",
|
||||
"codeception/module-webdriver": "^1.0",
|
||||
"filp/whoops": "^2.0",
|
||||
"fzaninotto/faker": "^1.4",
|
||||
"mockery/mockery": "^1.0",
|
||||
"nunomaduro/collision": "^2.0",
|
||||
"phpunit/phpunit": "^7.0",
|
||||
"barryvdh/laravel-debugbar": "^3.1",
|
||||
"fzaninotto/faker": "^1.4"
|
||||
"phpunit/phpunit": "^7.0"
|
||||
},
|
||||
|
||||
"replace": {
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "dca322023597f38ef7991bc9d9bdc50f",
|
||||
"content-hash": "89956b3147bad29980a3486770493059",
|
||||
"packages": [
|
||||
{
|
||||
"name": "astrotomic/laravel-translatable",
|
||||
|
|
@ -71,6 +71,74 @@
|
|||
],
|
||||
"time": "2020-03-03T10:43:26+00:00"
|
||||
},
|
||||
{
|
||||
"name": "barryvdh/laravel-debugbar",
|
||||
"version": "v3.2.9",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/barryvdh/laravel-debugbar.git",
|
||||
"reference": "42d5da5379a7860093f8e4032167e4cb5ebec180"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/42d5da5379a7860093f8e4032167e4cb5ebec180",
|
||||
"reference": "42d5da5379a7860093f8e4032167e4cb5ebec180",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"illuminate/routing": "^5.5|^6|^7",
|
||||
"illuminate/session": "^5.5|^6|^7",
|
||||
"illuminate/support": "^5.5|^6|^7",
|
||||
"maximebf/debugbar": "^1.15.1",
|
||||
"php": ">=7.0",
|
||||
"symfony/debug": "^3|^4|^5",
|
||||
"symfony/finder": "^3|^4|^5"
|
||||
},
|
||||
"require-dev": {
|
||||
"laravel/framework": "5.5.x"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "3.2-dev"
|
||||
},
|
||||
"laravel": {
|
||||
"providers": [
|
||||
"Barryvdh\\Debugbar\\ServiceProvider"
|
||||
],
|
||||
"aliases": {
|
||||
"Debugbar": "Barryvdh\\Debugbar\\Facade"
|
||||
}
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Barryvdh\\Debugbar\\": "src/"
|
||||
},
|
||||
"files": [
|
||||
"src/helpers.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Barry vd. Heuvel",
|
||||
"email": "barryvdh@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "PHP Debugbar integration for Laravel",
|
||||
"keywords": [
|
||||
"debug",
|
||||
"debugbar",
|
||||
"laravel",
|
||||
"profiler",
|
||||
"webprofiler"
|
||||
],
|
||||
"time": "2020-02-25T20:42:23+00:00"
|
||||
},
|
||||
{
|
||||
"name": "barryvdh/laravel-dompdf",
|
||||
"version": "v0.8.5",
|
||||
|
|
@ -819,6 +887,56 @@
|
|||
],
|
||||
"time": "2019-07-28T22:19:29+00:00"
|
||||
},
|
||||
{
|
||||
"name": "fzaninotto/faker",
|
||||
"version": "v1.9.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/fzaninotto/Faker.git",
|
||||
"reference": "fc10d778e4b84d5bd315dad194661e091d307c6f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/fzaninotto/Faker/zipball/fc10d778e4b84d5bd315dad194661e091d307c6f",
|
||||
"reference": "fc10d778e4b84d5bd315dad194661e091d307c6f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^5.3.3 || ^7.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-intl": "*",
|
||||
"phpunit/phpunit": "^4.8.35 || ^5.7",
|
||||
"squizlabs/php_codesniffer": "^2.9.2"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.9-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Faker\\": "src/Faker/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "François Zaninotto"
|
||||
}
|
||||
],
|
||||
"description": "Faker is a PHP library that generates fake data for you.",
|
||||
"keywords": [
|
||||
"data",
|
||||
"faker",
|
||||
"fixtures"
|
||||
],
|
||||
"time": "2019-12-12T13:22:17+00:00"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/guzzle",
|
||||
"version": "6.5.2",
|
||||
|
|
@ -1172,6 +1290,7 @@
|
|||
"email": "jakub.onderka@gmail.com"
|
||||
}
|
||||
],
|
||||
"abandoned": "php-parallel-lint/php-console-color",
|
||||
"time": "2018-09-29T17:23:10+00:00"
|
||||
},
|
||||
{
|
||||
|
|
@ -1218,6 +1337,7 @@
|
|||
}
|
||||
],
|
||||
"description": "Highlight PHP code in terminal",
|
||||
"abandoned": "php-parallel-lint/php-console-highlighter",
|
||||
"time": "2018-09-29T18:48:56+00:00"
|
||||
},
|
||||
{
|
||||
|
|
@ -1276,6 +1396,7 @@
|
|||
"serialize",
|
||||
"tokenizer"
|
||||
],
|
||||
"abandoned": "opis/closure",
|
||||
"time": "2018-03-21T22:21:57+00:00"
|
||||
},
|
||||
{
|
||||
|
|
@ -2216,6 +2337,67 @@
|
|||
],
|
||||
"time": "2019-10-06T11:29:25+00:00"
|
||||
},
|
||||
{
|
||||
"name": "maximebf/debugbar",
|
||||
"version": "v1.16.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/maximebf/php-debugbar.git",
|
||||
"reference": "58998b818c6567fac01e35b8a4b70c1a64530556"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/58998b818c6567fac01e35b8a4b70c1a64530556",
|
||||
"reference": "58998b818c6567fac01e35b8a4b70c1a64530556",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.1",
|
||||
"psr/log": "^1.0",
|
||||
"symfony/var-dumper": "^2.6|^3|^4|^5"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^5"
|
||||
},
|
||||
"suggest": {
|
||||
"kriswallsmith/assetic": "The best way to manage assets",
|
||||
"monolog/monolog": "Log using Monolog",
|
||||
"predis/predis": "Redis storage"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.16-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"DebugBar\\": "src/DebugBar/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Maxime Bouroumeau-Fuseau",
|
||||
"email": "maxime.bouroumeau@gmail.com",
|
||||
"homepage": "http://maximebf.com"
|
||||
},
|
||||
{
|
||||
"name": "Barry vd. Heuvel",
|
||||
"email": "barryvdh@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "Debug bar in the browser for php application",
|
||||
"homepage": "https://github.com/maximebf/php-debugbar",
|
||||
"keywords": [
|
||||
"debug",
|
||||
"debugbar"
|
||||
],
|
||||
"time": "2019-11-24T09:46:11+00:00"
|
||||
},
|
||||
{
|
||||
"name": "monolog/monolog",
|
||||
"version": "2.0.2",
|
||||
|
|
@ -3914,16 +4096,16 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/http-foundation",
|
||||
"version": "v4.4.5",
|
||||
"version": "v4.4.7",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/http-foundation.git",
|
||||
"reference": "7e41b4fcad4619535f45f8bfa7744c4f384e1648"
|
||||
"reference": "62f92509c9abfd1f73e17b8cf1b72c0bdac6611b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/7e41b4fcad4619535f45f8bfa7744c4f384e1648",
|
||||
"reference": "7e41b4fcad4619535f45f8bfa7744c4f384e1648",
|
||||
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/62f92509c9abfd1f73e17b8cf1b72c0bdac6611b",
|
||||
"reference": "62f92509c9abfd1f73e17b8cf1b72c0bdac6611b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -3965,7 +4147,7 @@
|
|||
],
|
||||
"description": "Symfony HttpFoundation Component",
|
||||
"homepage": "https://symfony.com",
|
||||
"time": "2020-02-13T19:40:01+00:00"
|
||||
"time": "2020-03-30T14:07:33+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/http-kernel",
|
||||
|
|
@ -4059,16 +4241,16 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/mime",
|
||||
"version": "v5.0.5",
|
||||
"version": "v5.0.7",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/mime.git",
|
||||
"reference": "9b3e5b5e58c56bbd76628c952d2b78556d305f3c"
|
||||
"reference": "481b7d6da88922fb1e0d86a943987722b08f3955"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/mime/zipball/9b3e5b5e58c56bbd76628c952d2b78556d305f3c",
|
||||
"reference": "9b3e5b5e58c56bbd76628c952d2b78556d305f3c",
|
||||
"url": "https://api.github.com/repos/symfony/mime/zipball/481b7d6da88922fb1e0d86a943987722b08f3955",
|
||||
"reference": "481b7d6da88922fb1e0d86a943987722b08f3955",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -4117,7 +4299,7 @@
|
|||
"mime",
|
||||
"mime-type"
|
||||
],
|
||||
"time": "2020-02-04T09:41:09+00:00"
|
||||
"time": "2020-03-27T16:56:45+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-ctype",
|
||||
|
|
@ -4238,16 +4420,16 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/polyfill-intl-idn",
|
||||
"version": "v1.14.0",
|
||||
"version": "v1.15.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-intl-idn.git",
|
||||
"reference": "6842f1a39cf7d580655688069a03dd7cd83d244a"
|
||||
"reference": "47bd6aa45beb1cd7c6a16b7d1810133b728bdfcf"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6842f1a39cf7d580655688069a03dd7cd83d244a",
|
||||
"reference": "6842f1a39cf7d580655688069a03dd7cd83d244a",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/47bd6aa45beb1cd7c6a16b7d1810133b728bdfcf",
|
||||
"reference": "47bd6aa45beb1cd7c6a16b7d1810133b728bdfcf",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -4261,7 +4443,7 @@
|
|||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.14-dev"
|
||||
"dev-master": "1.15-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
|
|
@ -4296,20 +4478,20 @@
|
|||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"time": "2020-01-17T12:01:36+00:00"
|
||||
"time": "2020-03-09T19:04:49+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-mbstring",
|
||||
"version": "v1.14.0",
|
||||
"version": "v1.15.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
||||
"reference": "34094cfa9abe1f0f14f48f490772db7a775559f2"
|
||||
"reference": "81ffd3a9c6d707be22e3012b827de1c9775fc5ac"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/34094cfa9abe1f0f14f48f490772db7a775559f2",
|
||||
"reference": "34094cfa9abe1f0f14f48f490772db7a775559f2",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/81ffd3a9c6d707be22e3012b827de1c9775fc5ac",
|
||||
"reference": "81ffd3a9c6d707be22e3012b827de1c9775fc5ac",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -4321,7 +4503,7 @@
|
|||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.14-dev"
|
||||
"dev-master": "1.15-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
|
|
@ -4355,7 +4537,7 @@
|
|||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"time": "2020-01-13T11:15:53+00:00"
|
||||
"time": "2020-03-09T19:04:49+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php56",
|
||||
|
|
@ -4415,16 +4597,16 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php72",
|
||||
"version": "v1.14.0",
|
||||
"version": "v1.15.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/polyfill-php72.git",
|
||||
"reference": "46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf"
|
||||
"reference": "37b0976c78b94856543260ce09b460a7bc852747"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf",
|
||||
"reference": "46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf",
|
||||
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/37b0976c78b94856543260ce09b460a7bc852747",
|
||||
"reference": "37b0976c78b94856543260ce09b460a7bc852747",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -4433,7 +4615,7 @@
|
|||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.14-dev"
|
||||
"dev-master": "1.15-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
|
|
@ -4466,7 +4648,7 @@
|
|||
"portable",
|
||||
"shim"
|
||||
],
|
||||
"time": "2020-01-13T11:15:53+00:00"
|
||||
"time": "2020-02-27T09:26:54+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-php73",
|
||||
|
|
@ -5156,74 +5338,6 @@
|
|||
}
|
||||
],
|
||||
"packages-dev": [
|
||||
{
|
||||
"name": "barryvdh/laravel-debugbar",
|
||||
"version": "v3.2.9",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/barryvdh/laravel-debugbar.git",
|
||||
"reference": "42d5da5379a7860093f8e4032167e4cb5ebec180"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/42d5da5379a7860093f8e4032167e4cb5ebec180",
|
||||
"reference": "42d5da5379a7860093f8e4032167e4cb5ebec180",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"illuminate/routing": "^5.5|^6|^7",
|
||||
"illuminate/session": "^5.5|^6|^7",
|
||||
"illuminate/support": "^5.5|^6|^7",
|
||||
"maximebf/debugbar": "^1.15.1",
|
||||
"php": ">=7.0",
|
||||
"symfony/debug": "^3|^4|^5",
|
||||
"symfony/finder": "^3|^4|^5"
|
||||
},
|
||||
"require-dev": {
|
||||
"laravel/framework": "5.5.x"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "3.2-dev"
|
||||
},
|
||||
"laravel": {
|
||||
"providers": [
|
||||
"Barryvdh\\Debugbar\\ServiceProvider"
|
||||
],
|
||||
"aliases": {
|
||||
"Debugbar": "Barryvdh\\Debugbar\\Facade"
|
||||
}
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Barryvdh\\Debugbar\\": "src/"
|
||||
},
|
||||
"files": [
|
||||
"src/helpers.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Barry vd. Heuvel",
|
||||
"email": "barryvdh@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "PHP Debugbar integration for Laravel",
|
||||
"keywords": [
|
||||
"debug",
|
||||
"debugbar",
|
||||
"laravel",
|
||||
"profiler",
|
||||
"webprofiler"
|
||||
],
|
||||
"time": "2020-02-25T20:42:23+00:00"
|
||||
},
|
||||
{
|
||||
"name": "behat/gherkin",
|
||||
"version": "v4.6.1",
|
||||
|
|
@ -5619,6 +5733,61 @@
|
|||
],
|
||||
"time": "2019-10-10T15:58:56+00:00"
|
||||
},
|
||||
{
|
||||
"name": "codeception/module-webdriver",
|
||||
"version": "1.0.7",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Codeception/module-webdriver.git",
|
||||
"reference": "f05c5c25e39d10fbfb2d508779e1537df019ff9b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Codeception/module-webdriver/zipball/f05c5c25e39d10fbfb2d508779e1537df019ff9b",
|
||||
"reference": "f05c5c25e39d10fbfb2d508779e1537df019ff9b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"codeception/codeception": "^4.0",
|
||||
"php": ">=5.6.0 <8.0",
|
||||
"php-webdriver/webdriver": "^1.6.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"codeception/util-robohelpers": "dev-master"
|
||||
},
|
||||
"suggest": {
|
||||
"codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"src/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Michael Bodnarchuk"
|
||||
},
|
||||
{
|
||||
"name": "Gintautas Miselis"
|
||||
},
|
||||
{
|
||||
"name": "Zaahid Bateson"
|
||||
}
|
||||
],
|
||||
"description": "WebDriver module for Codeception",
|
||||
"homepage": "http://codeception.com/",
|
||||
"keywords": [
|
||||
"acceptance-testing",
|
||||
"browser-testing",
|
||||
"codeception"
|
||||
],
|
||||
"time": "2020-04-01T10:18:18+00:00"
|
||||
},
|
||||
{
|
||||
"name": "codeception/phpunit-wrapper",
|
||||
"version": "7.8.0",
|
||||
|
|
@ -5810,56 +5979,6 @@
|
|||
],
|
||||
"time": "2020-01-15T10:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"name": "fzaninotto/faker",
|
||||
"version": "v1.9.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/fzaninotto/Faker.git",
|
||||
"reference": "fc10d778e4b84d5bd315dad194661e091d307c6f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/fzaninotto/Faker/zipball/fc10d778e4b84d5bd315dad194661e091d307c6f",
|
||||
"reference": "fc10d778e4b84d5bd315dad194661e091d307c6f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^5.3.3 || ^7.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-intl": "*",
|
||||
"phpunit/phpunit": "^4.8.35 || ^5.7",
|
||||
"squizlabs/php_codesniffer": "^2.9.2"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.9-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Faker\\": "src/Faker/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "François Zaninotto"
|
||||
}
|
||||
],
|
||||
"description": "Faker is a PHP library that generates fake data for you.",
|
||||
"keywords": [
|
||||
"data",
|
||||
"faker",
|
||||
"fixtures"
|
||||
],
|
||||
"time": "2019-12-12T13:22:17+00:00"
|
||||
},
|
||||
{
|
||||
"name": "hamcrest/hamcrest-php",
|
||||
"version": "v2.0.0",
|
||||
|
|
@ -5908,67 +6027,6 @@
|
|||
],
|
||||
"time": "2016-01-20T08:20:44+00:00"
|
||||
},
|
||||
{
|
||||
"name": "maximebf/debugbar",
|
||||
"version": "v1.16.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/maximebf/php-debugbar.git",
|
||||
"reference": "58998b818c6567fac01e35b8a4b70c1a64530556"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/58998b818c6567fac01e35b8a4b70c1a64530556",
|
||||
"reference": "58998b818c6567fac01e35b8a4b70c1a64530556",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.1",
|
||||
"psr/log": "^1.0",
|
||||
"symfony/var-dumper": "^2.6|^3|^4|^5"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^5"
|
||||
},
|
||||
"suggest": {
|
||||
"kriswallsmith/assetic": "The best way to manage assets",
|
||||
"monolog/monolog": "Log using Monolog",
|
||||
"predis/predis": "Redis storage"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.16-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"DebugBar\\": "src/DebugBar/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Maxime Bouroumeau-Fuseau",
|
||||
"email": "maxime.bouroumeau@gmail.com",
|
||||
"homepage": "http://maximebf.com"
|
||||
},
|
||||
{
|
||||
"name": "Barry vd. Heuvel",
|
||||
"email": "barryvdh@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "Debug bar in the browser for php application",
|
||||
"homepage": "https://github.com/maximebf/php-debugbar",
|
||||
"keywords": [
|
||||
"debug",
|
||||
"debugbar"
|
||||
],
|
||||
"time": "2019-11-24T09:46:11+00:00"
|
||||
},
|
||||
{
|
||||
"name": "mockery/mockery",
|
||||
"version": "1.3.1",
|
||||
|
|
@ -6248,6 +6306,71 @@
|
|||
"description": "Library for handling version information and constraints",
|
||||
"time": "2018-07-08T19:19:57+00:00"
|
||||
},
|
||||
{
|
||||
"name": "php-webdriver/webdriver",
|
||||
"version": "1.8.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-webdriver/php-webdriver.git",
|
||||
"reference": "3308a70be084d6d7fd1ee5787b4c2e6eb4b70aab"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-webdriver/php-webdriver/zipball/3308a70be084d6d7fd1ee5787b4c2e6eb4b70aab",
|
||||
"reference": "3308a70be084d6d7fd1ee5787b4c2e6eb4b70aab",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-curl": "*",
|
||||
"ext-json": "*",
|
||||
"ext-zip": "*",
|
||||
"php": "^5.6 || ~7.0",
|
||||
"symfony/polyfill-mbstring": "^1.12",
|
||||
"symfony/process": "^2.8 || ^3.1 || ^4.0 || ^5.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "^2.0",
|
||||
"jakub-onderka/php-parallel-lint": "^1.0",
|
||||
"php-coveralls/php-coveralls": "^2.0",
|
||||
"php-mock/php-mock-phpunit": "^1.1",
|
||||
"phpunit/phpunit": "^5.7",
|
||||
"sebastian/environment": "^1.3.4 || ^2.0 || ^3.0",
|
||||
"sminnee/phpunit-mock-objects": "^3.4",
|
||||
"squizlabs/php_codesniffer": "^3.5",
|
||||
"symfony/var-dumper": "^3.3 || ^4.0 || ^5.0"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-SimpleXML": "For Firefox profile creation"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.8.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Facebook\\WebDriver\\": "lib/"
|
||||
},
|
||||
"files": [
|
||||
"lib/Exception/TimeoutException.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"description": "A PHP client for Selenium WebDriver. Previously facebook/webdriver.",
|
||||
"homepage": "https://github.com/php-webdriver/php-webdriver",
|
||||
"keywords": [
|
||||
"Chromedriver",
|
||||
"geckodriver",
|
||||
"php",
|
||||
"selenium",
|
||||
"webdriver"
|
||||
],
|
||||
"time": "2020-03-04T14:40:12+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpdocumentor/reflection-common",
|
||||
"version": "2.0.0",
|
||||
|
|
|
|||
|
|
@ -153,7 +153,7 @@ return [
|
|||
/*
|
||||
Application Version
|
||||
*/
|
||||
'version' => env('APP_VERSION', '0.1.6'),
|
||||
'version' => env('APP_VERSION'),
|
||||
|
||||
/**
|
||||
* Blacklisting attributes while debugging
|
||||
|
|
|
|||
|
|
@ -30,12 +30,16 @@ return [
|
|||
],
|
||||
|
||||
'exchange-api' => [
|
||||
'default' => 'fixer',
|
||||
'default' => 'exchange_rates',
|
||||
|
||||
'fixer' => [
|
||||
'paid_account' => false,
|
||||
'key' => env('fixer_api_key'),
|
||||
'class' => 'Webkul\Core\Helpers\Exchange\FixerExchange'
|
||||
]
|
||||
],
|
||||
|
||||
'exchange_rates' => [
|
||||
'class' => 'Webkul\Core\Helpers\Exchange\ExchangeRates'
|
||||
],
|
||||
],
|
||||
|
||||
'stripe' => [
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ use Webkul\Checkout\Http\Requests\CustomerAddressForm;
|
|||
use Webkul\Sales\Repositories\OrderRepository;
|
||||
use Illuminate\Support\Str;
|
||||
use Cart;
|
||||
use Exception;
|
||||
use Webkul\Shop\Http\Controllers\OnepageController;
|
||||
|
||||
class CheckoutController extends Controller
|
||||
{
|
||||
|
|
@ -197,26 +199,10 @@ class CheckoutController extends Controller
|
|||
/**
|
||||
* Validate order before creation
|
||||
*
|
||||
* @return mixed
|
||||
* @throws Exception
|
||||
*/
|
||||
public function validateOrder()
|
||||
public function validateOrder(): void
|
||||
{
|
||||
$cart = Cart::getCart();
|
||||
|
||||
if (! $cart->shipping_address) {
|
||||
throw new \Exception(trans('Please check shipping address.'));
|
||||
}
|
||||
|
||||
if (! $cart->billing_address) {
|
||||
throw new \Exception(trans('Please check billing address.'));
|
||||
}
|
||||
|
||||
if (! $cart->selected_shipping_rate) {
|
||||
throw new \Exception(trans('Please specify shipping method.'));
|
||||
}
|
||||
|
||||
if (! $cart->payment) {
|
||||
throw new \Exception(trans('Please specify payment method.'));
|
||||
}
|
||||
app(OnepageController::class)->validateOrder();
|
||||
}
|
||||
}
|
||||
|
|
@ -16,6 +16,9 @@ class CustomerAddress extends JsonResource
|
|||
{
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'first_name' => $this->first_name,
|
||||
'last_name' => $this->last_name,
|
||||
'company_name' => $this->company_name,
|
||||
'address1' => explode(PHP_EOL, $this->address1),
|
||||
'country' => $this->country,
|
||||
'country_name' => core()->country_name($this->country),
|
||||
|
|
@ -27,4 +30,4 @@ class CustomerAddress extends JsonResource
|
|||
'updated_at' => $this->updated_at,
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"/js/admin.js": "/js/admin.js?id=c7c2ef0a298910b82304",
|
||||
"/css/admin.css": "/css/admin.css?id=f2c6fe51889bca1fb79d"
|
||||
"/js/admin.js": "/js/admin.js?id=2701b1627d73faa941d6",
|
||||
"/css/admin.css": "/css/admin.css?id=1676f6fcbbb2a7b25767"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,37 @@ return [
|
|||
'channel_based' => true,
|
||||
],
|
||||
],
|
||||
], [
|
||||
'key' => 'general.general.email_settings',
|
||||
'name' => 'admin::app.admin.system.email-settings',
|
||||
'sort' => 1,
|
||||
'fields' => [
|
||||
[
|
||||
'name' => 'sender_name',
|
||||
'title' => 'admin::app.admin.system.email-sender-name',
|
||||
'type' => 'text',
|
||||
'validation' => 'required|max:50',
|
||||
'channel_based' => true,
|
||||
], [
|
||||
'name' => 'shop_email_from',
|
||||
'title' => 'admin::app.admin.system.shop-email-from',
|
||||
'type' => 'text',
|
||||
'validation' => 'required|email',
|
||||
'channel_based' => true,
|
||||
], [
|
||||
'name' => 'admin_name',
|
||||
'title' => 'admin::app.admin.system.admin-name',
|
||||
'type' => 'text',
|
||||
'validation' => 'required|max:50',
|
||||
'channel_based' => true,
|
||||
], [
|
||||
'name' => 'admin_email',
|
||||
'title' => 'admin::app.admin.system.admin-email',
|
||||
'type' => 'text',
|
||||
'validation' => 'required|email',
|
||||
'channel_based' => true,
|
||||
],
|
||||
],
|
||||
], [
|
||||
'key' => 'general.content',
|
||||
'name' => 'admin::app.admin.system.content',
|
||||
|
|
@ -68,6 +99,12 @@ return [
|
|||
'type' => 'image',
|
||||
'channel_based' => true,
|
||||
'validation' => 'mimes:jpeg,bmp,png,jpg',
|
||||
], [
|
||||
'name' => 'favicon',
|
||||
'title' => 'admin::app.admin.system.favicon',
|
||||
'type' => 'image',
|
||||
'channel_based' => true,
|
||||
'validation' => 'mimes:jpeg,bmp,png,jpg',
|
||||
],
|
||||
],
|
||||
], [
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
namespace Webkul\Admin\DataGrids;
|
||||
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Webkul\Customer\Models\CustomerAddress;
|
||||
use Webkul\Ui\DataGrid\DataGrid;
|
||||
use Webkul\Customer\Repositories\CustomerRepository;
|
||||
|
||||
|
|
@ -13,6 +14,7 @@ class AddressDataGrid extends DataGrid
|
|||
*/
|
||||
public $index = 'address_id';
|
||||
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
|
|
@ -42,10 +44,11 @@ class AddressDataGrid extends DataGrid
|
|||
{
|
||||
$customer = $this->customerRepository->find(request('id'));
|
||||
|
||||
$queryBuilder = DB::table('customer_addresses as ca')
|
||||
$queryBuilder = DB::table('addresses as ca')
|
||||
->leftJoin('countries', 'ca.country', '=', 'countries.code')
|
||||
->leftJoin('customers as c', 'ca.customer_id', '=', 'c.id')
|
||||
->addSelect('ca.id as address_id', 'ca.company_name', 'ca.address1', 'ca.country', DB::raw('' . DB::getTablePrefix() . 'countries.name as country_name'), 'ca.state', 'ca.city', 'ca.postcode', 'ca.phone', 'ca.default_address')
|
||||
->where('ca.address_type', CustomerAddress::ADDRESS_TYPE)
|
||||
->where('c.id', $customer->id);
|
||||
|
||||
$queryBuilder = $queryBuilder->leftJoin('country_states', function($qb) {
|
||||
|
|
@ -168,4 +171,4 @@ class AddressDataGrid extends DataGrid
|
|||
'method' => 'DELETE',
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,18 +11,51 @@ class CartRuleDataGrid extends DataGrid
|
|||
|
||||
protected $sortOrder = 'desc';
|
||||
|
||||
protected $customer_group = 'all';
|
||||
|
||||
protected $channel = 'all';
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
$this->customer_group = request()->get('customer_group') ?? 'all';
|
||||
|
||||
$this->channel = request()->get('channel') ?? 'all';
|
||||
}
|
||||
|
||||
public function prepareQueryBuilder()
|
||||
{
|
||||
$queryBuilder = DB::table('cart_rules')
|
||||
->leftJoin('cart_rule_coupons', function($leftJoin) {
|
||||
->leftJoin('cart_rule_coupons', function ($leftJoin) {
|
||||
$leftJoin->on('cart_rule_coupons.cart_rule_id', '=', 'cart_rules.id')
|
||||
->where('cart_rule_coupons.is_primary', 1);
|
||||
->where('cart_rule_coupons.is_primary', 1);
|
||||
})
|
||||
->addSelect('cart_rules.id', 'name', 'cart_rule_coupons.code as coupon_code', 'status', 'starts_from', 'ends_till', 'sort_order');
|
||||
->addSelect('cart_rules.id', 'name', 'cart_rule_coupons.code as coupon_code',
|
||||
'status', 'starts_from', 'ends_till', 'sort_order');
|
||||
|
||||
$this->addFilter('id', 'cart_rules.id');
|
||||
$this->addFilter('coupon_code', 'cart_rule_coupons.code');
|
||||
|
||||
if ($this->customer_group !== 'all') {
|
||||
$queryBuilder->leftJoin(
|
||||
'cart_rule_customer_groups',
|
||||
'cart_rule_customer_groups.cart_rule_id',
|
||||
'=',
|
||||
'cart_rules.id'
|
||||
);
|
||||
$queryBuilder->where('cart_rule_customer_groups.customer_group_id', $this->customer_group);
|
||||
}
|
||||
|
||||
if ($this->channel !== 'all') {
|
||||
$queryBuilder->leftJoin(
|
||||
'cart_rule_channels',
|
||||
'cart_rule_channels.cart_rule_id',
|
||||
'=',
|
||||
'cart_rules.id');
|
||||
$queryBuilder->where('cart_rule_channels.channel_id', $this->channel);
|
||||
}
|
||||
|
||||
$this->setQueryBuilder($queryBuilder);
|
||||
}
|
||||
|
||||
|
|
@ -80,7 +113,7 @@ class CartRuleDataGrid extends DataGrid
|
|||
'searchable' => true,
|
||||
'sortable' => true,
|
||||
'filterable' => true,
|
||||
'wrapper' => function($value) {
|
||||
'wrapper' => function ($value) {
|
||||
if ($value->status == 1) {
|
||||
return trans('admin::app.datagrid.active');
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -117,9 +117,9 @@ class CustomerReviewDataGrid extends DataGrid
|
|||
'action' => route('admin.customer.review.massupdate'),
|
||||
'method' => 'PUT',
|
||||
'options' => [
|
||||
'Pending' => 0,
|
||||
'Approve' => 1,
|
||||
'Disapprove' => 2,
|
||||
trans('admin::app.customers.reviews.pending') => 0,
|
||||
trans('admin::app.customers.reviews.approved') => 1,
|
||||
trans('admin::app.customers.reviews.disapproved') => 2,
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
namespace Webkul\Admin\DataGrids;
|
||||
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Webkul\Sales\Models\OrderAddress;
|
||||
use Webkul\Ui\DataGrid\DataGrid;
|
||||
|
||||
class OrderDataGrid extends DataGrid
|
||||
|
|
@ -14,13 +15,13 @@ class OrderDataGrid extends DataGrid
|
|||
public function prepareQueryBuilder()
|
||||
{
|
||||
$queryBuilder = DB::table('orders')
|
||||
->leftJoin('order_address as order_address_shipping', function($leftJoin) {
|
||||
->leftJoin('addresses as order_address_shipping', function($leftJoin) {
|
||||
$leftJoin->on('order_address_shipping.order_id', '=', 'orders.id')
|
||||
->where('order_address_shipping.address_type', 'shipping');
|
||||
->where('order_address_shipping.address_type', OrderAddress::ADDRESS_TYPE_SHIPPING);
|
||||
})
|
||||
->leftJoin('order_address as order_address_billing', function($leftJoin) {
|
||||
->leftJoin('addresses as order_address_billing', function($leftJoin) {
|
||||
$leftJoin->on('order_address_billing.order_id', '=', 'orders.id')
|
||||
->where('order_address_billing.address_type', 'billing');
|
||||
->where('order_address_billing.address_type', OrderAddress::ADDRESS_TYPE_BILLING);
|
||||
})
|
||||
->addSelect('orders.id','orders.increment_id', 'orders.base_sub_total', 'orders.base_grand_total', 'orders.created_at', 'channel_name', 'status')
|
||||
->addSelect(DB::raw('CONCAT(' . DB::getTablePrefix() . 'order_address_billing.first_name, " ", ' . DB::getTablePrefix() . 'order_address_billing.last_name) as billed_to'))
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
namespace Webkul\Admin\DataGrids;
|
||||
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Webkul\Sales\Models\OrderAddress;
|
||||
use Webkul\Ui\DataGrid\DataGrid;
|
||||
|
||||
class OrderRefundDataGrid extends DataGrid
|
||||
|
|
@ -16,9 +17,9 @@ class OrderRefundDataGrid extends DataGrid
|
|||
$queryBuilder = DB::table('refunds')
|
||||
->select('refunds.id', 'orders.increment_id', 'refunds.state', 'refunds.base_grand_total', 'refunds.created_at')
|
||||
->leftJoin('orders', 'refunds.order_id', '=', 'orders.id')
|
||||
->leftJoin('order_address as order_address_billing', function($leftJoin) {
|
||||
->leftJoin('addresses as order_address_billing', function($leftJoin) {
|
||||
$leftJoin->on('order_address_billing.order_id', '=', 'orders.id')
|
||||
->where('order_address_billing.address_type', 'billing');
|
||||
->where('order_address_billing.address_type', OrderAddress::ADDRESS_TYPE_BILLING);
|
||||
})
|
||||
->addSelect(DB::raw('CONCAT(' . DB::getTablePrefix() . 'order_address_billing.first_name, " ", ' . DB::getTablePrefix() . 'order_address_billing.last_name) as billed_to'));
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
namespace Webkul\Admin\DataGrids;
|
||||
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Webkul\Sales\Models\OrderAddress;
|
||||
use Webkul\Ui\DataGrid\DataGrid;
|
||||
|
||||
class OrderShipmentsDataGrid extends DataGrid
|
||||
|
|
@ -14,9 +15,9 @@ class OrderShipmentsDataGrid extends DataGrid
|
|||
public function prepareQueryBuilder()
|
||||
{
|
||||
$queryBuilder = DB::table('shipments')
|
||||
->leftJoin('order_address as order_address_shipping', function($leftJoin) {
|
||||
->leftJoin('addresses as order_address_shipping', function($leftJoin) {
|
||||
$leftJoin->on('order_address_shipping.order_id', '=', 'shipments.order_id')
|
||||
->where('order_address_shipping.address_type', 'shipping');
|
||||
->where('order_address_shipping.address_type', OrderAddress::ADDRESS_TYPE_SHIPPING);
|
||||
})
|
||||
->leftJoin('orders as ors', 'shipments.order_id', '=', 'ors.id')
|
||||
->leftJoin('inventory_sources as is', 'shipments.inventory_source_id', '=', 'is.id')
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ class ProductDataGrid extends DataGrid
|
|||
parent::__construct();
|
||||
|
||||
$this->locale = request()->get('locale') ?? 'all';
|
||||
|
||||
|
||||
$this->channel = request()->get('channel') ?? 'all';
|
||||
}
|
||||
|
||||
|
|
@ -119,7 +119,7 @@ class ProductDataGrid extends DataGrid
|
|||
'sortable' => true,
|
||||
'searchable' => false,
|
||||
'filterable' => true,
|
||||
'wrapper' => function($value) {
|
||||
'wrapper' => function ($value) {
|
||||
if ($value->status == 1) {
|
||||
return trans('admin::app.datagrid.active');
|
||||
} else {
|
||||
|
|
@ -144,7 +144,7 @@ class ProductDataGrid extends DataGrid
|
|||
'sortable' => true,
|
||||
'searchable' => false,
|
||||
'filterable' => false,
|
||||
'wrapper' => function($value) {
|
||||
'wrapper' => function ($value) {
|
||||
if (is_null($value->quantity)) {
|
||||
return 0;
|
||||
} else {
|
||||
|
|
@ -161,7 +161,7 @@ class ProductDataGrid extends DataGrid
|
|||
'method' => 'GET',
|
||||
'route' => 'admin.catalog.products.edit',
|
||||
'icon' => 'icon pencil-lg-icon',
|
||||
'condition' => function() {
|
||||
'condition' => function () {
|
||||
return true;
|
||||
},
|
||||
]);
|
||||
|
|
|
|||
|
|
@ -11,11 +11,31 @@ class SliderDataGrid extends DataGrid
|
|||
|
||||
protected $sortOrder = 'desc';
|
||||
|
||||
protected $locale = 'all';
|
||||
|
||||
protected $channel = 'all';
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
$this->locale = request()->get('locale') ?? 'all';
|
||||
$this->channel = request()->get('channel') ?? 'all';
|
||||
}
|
||||
|
||||
public function prepareQueryBuilder()
|
||||
{
|
||||
$queryBuilder = DB::table('sliders as sl')
|
||||
->addSelect('sl.id as slider_id', 'sl.title', 'ch.name')
|
||||
->leftJoin('channels as ch', 'sl.channel_id', '=', 'ch.id');
|
||||
->addSelect('sl.id as slider_id', 'sl.title', 'sl.locale', 'ch.name', 'ch.code')
|
||||
->leftJoin('channels as ch', 'sl.channel_id', '=', 'ch.id');
|
||||
|
||||
if ($this->locale !== 'all') {
|
||||
$queryBuilder->where('locale', $this->locale);
|
||||
}
|
||||
|
||||
if ($this->channel !== 'all') {
|
||||
$queryBuilder->where('ch.code', $this->channel);
|
||||
}
|
||||
|
||||
$this->addFilter('slider_id', 'sl.id');
|
||||
$this->addFilter('channel_name', 'ch.name');
|
||||
|
|
@ -51,6 +71,15 @@ class SliderDataGrid extends DataGrid
|
|||
'sortable' => true,
|
||||
'filterable' => true,
|
||||
]);
|
||||
|
||||
$this->addColumn([
|
||||
'index' => 'locale',
|
||||
'label' => trans('admin::app.datagrid.locale'),
|
||||
'type' => 'string',
|
||||
'searchable' => true,
|
||||
'sortable' => true,
|
||||
'filterable' => true
|
||||
]);
|
||||
}
|
||||
|
||||
public function prepareActions()
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace Webkul\Admin\Http\Controllers\Customer;
|
||||
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Webkul\Admin\Http\Controllers\Controller;
|
||||
use Webkul\Customer\Repositories\CustomerRepository;
|
||||
use Webkul\Customer\Repositories\CustomerGroupRepository;
|
||||
|
|
@ -111,8 +112,12 @@ class CustomerController extends Controller
|
|||
|
||||
$data['is_verified'] = 1;
|
||||
|
||||
Event::dispatch('customer.registration.before');
|
||||
|
||||
$customer = $this->customerRepository->create($data);
|
||||
|
||||
Event::dispatch('customer.registration.after', $customer);
|
||||
|
||||
try {
|
||||
$configKey = 'emails.general.notifications.emails.general.notifications.customer';
|
||||
if (core()->getConfigData($configKey)) {
|
||||
|
|
@ -164,7 +169,11 @@ class CustomerController extends Controller
|
|||
|
||||
$data['status'] = ! isset($data['status']) ? 0 : 1;
|
||||
|
||||
$this->customerRepository->update($data, $id);
|
||||
Event::dispatch('customer.update.before');
|
||||
|
||||
$customer = $this->customerRepository->update($data, $id);
|
||||
|
||||
Event::dispatch('customer.update.after', $customer);
|
||||
|
||||
session()->flash('success', trans('admin::app.response.update-success', ['name' => 'Customer']));
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,10 @@
|
|||
|
||||
namespace Webkul\Admin\Http\Controllers\Sales;
|
||||
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Webkul\Admin\Http\Controllers\Controller;
|
||||
use Webkul\Sales\Repositories\OrderRepository;
|
||||
use \Webkul\Sales\Repositories\OrderCommentRepository;
|
||||
|
||||
class OrderController extends Controller
|
||||
{
|
||||
|
|
@ -21,19 +23,32 @@ class OrderController extends Controller
|
|||
*/
|
||||
protected $orderRepository;
|
||||
|
||||
/**
|
||||
* OrderCommentRepository object
|
||||
*
|
||||
* @var \Webkul\Sales\Repositories\OrderCommentRepository
|
||||
*/
|
||||
protected $orderCommentRepository;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @param \Webkul\Sales\Repositories\OrderRepository $orderRepository
|
||||
* @param \Webkul\Sales\Repositories\OrderCommentRepository $orderCommentRepository
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(OrderRepository $orderRepository)
|
||||
public function __construct(
|
||||
OrderRepository $orderRepository,
|
||||
OrderCommentRepository $orderCommentRepository
|
||||
)
|
||||
{
|
||||
$this->middleware('admin');
|
||||
|
||||
$this->_config = request('_config');
|
||||
|
||||
$this->orderRepository = $orderRepository;
|
||||
|
||||
$this->orderCommentRepository = $orderCommentRepository;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -77,4 +92,29 @@ class OrderController extends Controller
|
|||
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
/**
|
||||
* Add comment to the order
|
||||
*
|
||||
* @param int $id
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function comment($id)
|
||||
{
|
||||
$data = array_merge(request()->all(), [
|
||||
'order_id' => $id,
|
||||
]);
|
||||
|
||||
$data['customer_notified'] = isset($data['customer_notified']) ? 1 : 0;
|
||||
|
||||
Event::dispatch('sales.order.comment.create.before', $data);
|
||||
|
||||
$comment = $this->orderCommentRepository->create($data);
|
||||
|
||||
Event::dispatch('sales.order.comment.create.after', $comment);
|
||||
|
||||
session()->flash('success', trans('admin::app.sales.orders.comment-added-success'));
|
||||
|
||||
return redirect()->back();
|
||||
}
|
||||
}
|
||||
|
|
@ -107,6 +107,10 @@ class RefundController extends Controller
|
|||
|
||||
$data = request()->all();
|
||||
|
||||
if (! $data['refund']['shipping']) {
|
||||
$data['refund']['shipping'] = 0;
|
||||
}
|
||||
|
||||
$totals = $this->refundRepository->getOrderItemsRefundSummary($data['refund']['items'], $orderId);
|
||||
|
||||
$maxRefundAmount = $totals['grand_total']['price'] - $order->refunds()->sum('base_adjustment_refund');
|
||||
|
|
|
|||
|
|
@ -187,6 +187,8 @@ Route::group(['middleware' => ['web']], function () {
|
|||
'view' => 'admin::sales.orders.cancel'
|
||||
])->name('admin.sales.orders.cancel');
|
||||
|
||||
Route::post('/orders/create/{order_id}', 'Webkul\Admin\Http\Controllers\Sales\OrderController@comment')->name('admin.sales.orders.comment');
|
||||
|
||||
|
||||
// Sales Invoices Routes
|
||||
Route::get('/invoices', 'Webkul\Admin\Http\Controllers\Sales\InvoiceController@index')->defaults('_config', [
|
||||
|
|
@ -507,7 +509,7 @@ Route::group(['middleware' => ['web']], function () {
|
|||
'view' => 'admin::settings.exchange_rates.edit'
|
||||
])->name('admin.exchange_rates.edit');
|
||||
|
||||
Route::get('/exchange_rates/update-rates/{service}', 'Webkul\Core\Http\Controllers\ExchangeRateController@updateRates')->name('admin.exchange_rates.update-rates');
|
||||
Route::get('/exchange_rates/update-rates', 'Webkul\Core\Http\Controllers\ExchangeRateController@updateRates')->name('admin.exchange_rates.update_rates');
|
||||
|
||||
Route::put('/exchange_rates/edit/{id}', 'Webkul\Core\Http\Controllers\ExchangeRateController@update')->defaults('_config', [
|
||||
'redirect' => 'admin.exchange_rates.index'
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ use Webkul\Admin\Mail\NewShipmentNotification;
|
|||
use Webkul\Admin\Mail\NewInventorySourceNotification;
|
||||
use Webkul\Admin\Mail\CancelOrderNotification;
|
||||
use Webkul\Admin\Mail\NewRefundNotification;
|
||||
use Webkul\Admin\Mail\OrderCommentNotification;
|
||||
|
||||
class Order
|
||||
{
|
||||
|
|
@ -124,4 +125,21 @@ class Order
|
|||
report($e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \Webkul\Sales\Contracts\OrderComment $comment
|
||||
* @return void
|
||||
*/
|
||||
public function sendOrderCommentMail($comment)
|
||||
{
|
||||
if (! $comment->customer_notified) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
Mail::queue(new OrderCommentNotification($comment));
|
||||
} catch (\Exception $e) {
|
||||
report($e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -27,7 +27,8 @@ class CancelOrderNotification extends Mailable
|
|||
|
||||
public function build()
|
||||
{
|
||||
return $this->to($this->order->customer_email, $this->order->customer_full_name)
|
||||
return $this->from(core()->getSenderEmailDetails()['email'], core()->getSenderEmailDetails()['name'])
|
||||
->to($this->order->customer_email, $this->order->customer_full_name)
|
||||
->subject(trans('shop::app.mail.order.cancel.subject'))
|
||||
->view('shop::emails.sales.order-cancel');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,7 +36,8 @@ class NewAdminNotification extends Mailable
|
|||
*/
|
||||
public function build()
|
||||
{
|
||||
return $this->to(config('mail.admin.address'))
|
||||
return $this->from(core()->getSenderEmailDetails()['email'], core()->getSenderEmailDetails()['name'])
|
||||
->to(core()->getAdminEmailDetails()['email'])
|
||||
->subject(trans('shop::app.mail.order.subject'))
|
||||
->view('shop::emails.sales.new-admin-order');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,7 +49,8 @@ class NewCustomerNotification extends Mailable
|
|||
*/
|
||||
public function build()
|
||||
{
|
||||
return $this->to($this->customer->email)
|
||||
return $this->from(core()->getSenderEmailDetails()['email'], core()->getSenderEmailDetails()['name'])
|
||||
->to($this->customer->email)
|
||||
->subject(trans('shop::app.mail.customer.new.subject'))
|
||||
->view('shop::emails.customer.new-customer')->with(['customer' => $this->customer, 'password' => $this->password]);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,7 +40,8 @@ class NewInventorySourceNotification extends Mailable
|
|||
|
||||
$inventory = $this->shipment->inventory_source;
|
||||
|
||||
return $this->to($inventory->contact_email, $inventory->name)
|
||||
return $this->from(core()->getSenderEmailDetails()['email'], core()->getSenderEmailDetails()['name'])
|
||||
->to($inventory->contact_email, $inventory->name)
|
||||
->subject(trans('shop::app.mail.shipment.subject', ['order_id' => $order->increment_id]))
|
||||
->view('shop::emails.sales.new-inventorysource-shipment');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,7 +38,8 @@ class NewInvoiceNotification extends Mailable
|
|||
{
|
||||
$order = $this->invoice->order;
|
||||
|
||||
return $this->to($order->customer_email, $order->customer_full_name)
|
||||
return $this->from(core()->getSenderEmailDetails()['email'], core()->getSenderEmailDetails()['name'])
|
||||
->to($order->customer_email, $order->customer_full_name)
|
||||
->subject(trans('shop::app.mail.invoice.subject', ['order_id' => $order->increment_id]))
|
||||
->view('shop::emails.sales.new-invoice');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,7 +36,8 @@ class NewOrderNotification extends Mailable
|
|||
*/
|
||||
public function build()
|
||||
{
|
||||
return $this->to($this->order->customer_email, $this->order->customer_full_name)
|
||||
return $this->from(core()->getSenderEmailDetails()['email'], core()->getSenderEmailDetails()['name'])
|
||||
->to($this->order->customer_email, $this->order->customer_full_name)
|
||||
->subject(trans('shop::app.mail.order.subject'))
|
||||
->view('shop::emails.sales.new-order');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,7 +38,8 @@ class NewRefundNotification extends Mailable
|
|||
{
|
||||
$order = $this->refund->order;
|
||||
|
||||
return $this->to($order->customer_email, $order->customer_full_name)
|
||||
return $this->from(core()->getSenderEmailDetails()['email'], core()->getSenderEmailDetails()['name'])
|
||||
->to($order->customer_email, $order->customer_full_name)
|
||||
->subject(trans('shop::app.mail.refund.subject', ['order_id' => $order->increment_id]))
|
||||
->view('shop::emails.sales.new-refund');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,7 +38,8 @@ class NewShipmentNotification extends Mailable
|
|||
{
|
||||
$order = $this->shipment->order;
|
||||
|
||||
return $this->to($order->customer_email, $order->customer_full_name)
|
||||
return $this->from(core()->getSenderEmailDetails()['email'], core()->getSenderEmailDetails()['name'])
|
||||
->to($order->customer_email, $order->customer_full_name)
|
||||
->subject(trans('shop::app.mail.shipment.subject', ['order_id' => $order->increment_id]))
|
||||
->view('shop::emails.sales.new-shipment');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Admin\Mail;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Mail\Mailable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
|
||||
class OrderCommentNotification extends Mailable
|
||||
{
|
||||
use Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* The order comment instance.
|
||||
*
|
||||
* @var \Webkul\Sales\Contracts\OrderComment $comment
|
||||
*/
|
||||
public $comment;
|
||||
|
||||
/**
|
||||
* Create a new message instance.
|
||||
*
|
||||
* @param \Webkul\Sales\Contracts\OrderComment $comment
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($comment)
|
||||
{
|
||||
$this->comment = $comment;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the message.
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function build()
|
||||
{
|
||||
return $this->from(core()->getSenderEmailDetails()['email'], core()->getSenderEmailDetails()['name'])
|
||||
->to($this->comment->order->customer_email, $this->comment->order->customer_full_name)
|
||||
->subject(trans('shop::app.mail.order.comment.subject'))
|
||||
->view('shop::emails.sales.new-order-comment');
|
||||
}
|
||||
}
|
||||
|
|
@ -23,5 +23,7 @@ class EventServiceProvider extends ServiceProvider
|
|||
Event::listen('sales.order.cancel.after','Webkul\Admin\Listeners\Order@sendCancelOrderMail');
|
||||
|
||||
Event::listen('sales.refund.save.after','Webkul\Admin\Listeners\Order@sendNewRefundMail');
|
||||
|
||||
Event::listen('sales.order.comment.create.after','Webkul\Admin\Listeners\Order@sendOrderCommentMail');
|
||||
}
|
||||
}
|
||||
|
|
@ -3,6 +3,17 @@
|
|||
margin-bottom: 0 !important;
|
||||
padding-bottom: 15px;
|
||||
border-bottom: 1px solid $border-color;
|
||||
|
||||
.control-group {
|
||||
span {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
&.date::after {
|
||||
margin-top: -13px;
|
||||
left: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.page-content {
|
||||
|
|
|
|||
|
|
@ -48,8 +48,33 @@
|
|||
}
|
||||
}
|
||||
|
||||
.summary-comment-container {
|
||||
.comment-container {
|
||||
margin-top: 20px;
|
||||
float: left;
|
||||
|
||||
.comment-list {
|
||||
margin-top: 40px;
|
||||
|
||||
li {
|
||||
margin-bottom: 20px;
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0;
|
||||
margin-top: 5px;
|
||||
color: #8e8e8e;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sale-summary {
|
||||
margin-top: 2%;
|
||||
margin-top: 20px;
|
||||
height: 130px;
|
||||
float: right;
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -370,7 +370,13 @@ return [
|
|||
'total-due' => 'Total Due',
|
||||
'cancel-confirm-msg' => 'Are you sure you want to cancel this order ?',
|
||||
'refund-btn-title' => 'Refund',
|
||||
'refunds' => 'Refunds'
|
||||
'refunds' => 'Refunds',
|
||||
'comment-added-success' => 'Comment addded successfully.',
|
||||
'comment' => 'Comment',
|
||||
'submit-comment' => 'Submit Comment',
|
||||
'notify-customer' => 'Notify Customer',
|
||||
'customer-notified' => ':date | Customer <b>Notified</b>',
|
||||
'customer-not-notified' => ':date | Customer <b>Not Notified</b>'
|
||||
],
|
||||
|
||||
'invoices' => [
|
||||
|
|
@ -409,6 +415,7 @@ return [
|
|||
'add-title' => 'Create Shipment',
|
||||
'save-btn-title' => 'Save Shipment',
|
||||
'qty-ordered' => 'Qty Ordered',
|
||||
'qty-invoiced' => 'Qty Invoiced',
|
||||
'qty-to-ship' => 'Qty to Ship',
|
||||
'available-sources' => 'Available Sources',
|
||||
'source' => 'Source',
|
||||
|
|
@ -728,7 +735,7 @@ return [
|
|||
'target_currency' => 'Target Currency',
|
||||
'rate' => 'Rate',
|
||||
'exchange-class-not-found' => ':service exchange rate class not found',
|
||||
'update-rates' => 'Update rates using :service',
|
||||
'update-rates' => 'Update Rates',
|
||||
'create-success' => 'Exchange Rate created successfully.',
|
||||
'update-success' => 'Exchange Rate updated successfully.',
|
||||
'delete-success' => 'Exchange Rate deleted successfully.',
|
||||
|
|
@ -1286,6 +1293,11 @@ return [
|
|||
'footer-toggle' => 'Toggle footer',
|
||||
'locale-options' => 'Unit Options',
|
||||
'weight-unit' => 'Weight Unit',
|
||||
'email-settings' => 'Email Settings',
|
||||
'email-sender-name' => 'Email Sender Name',
|
||||
'shop-email-from' => 'Shop Email Address [For sending emails]',
|
||||
'admin-name' => 'Admin Name',
|
||||
'admin-email' => 'Admin Email',
|
||||
'admin-page-limit' => 'Default Items Per Page (Admin)',
|
||||
'design' => 'Design',
|
||||
'admin-logo' => 'Admin Logo',
|
||||
|
|
@ -1300,10 +1312,12 @@ return [
|
|||
'order-number-suffix' => 'Order Number Suffix',
|
||||
'default' => 'Default',
|
||||
'sandbox' => 'Sandbox',
|
||||
'all-channels' => 'All',
|
||||
'all-locales' => 'All',
|
||||
'all-channels' => 'All Channels',
|
||||
'all-locales' => 'All Locales',
|
||||
'all-customer-groups' => 'All Customer groups',
|
||||
'invoice-slip-design' => 'Invoice Slip Design',
|
||||
'logo' => 'logo'
|
||||
'logo' => 'logo',
|
||||
'favicon' => 'Favicon'
|
||||
]
|
||||
]
|
||||
];
|
||||
|
|
|
|||
|
|
@ -1,8 +1,40 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'save' => 'صرفه جویی',
|
||||
'create' => 'ايجاد كردن',
|
||||
'update' => 'به روز رسانی',
|
||||
'delete' => 'حذف',
|
||||
'failed' => 'ناموفق',
|
||||
'store' => 'فروشگاه',
|
||||
'image' => 'تصویر',
|
||||
'no result' => 'نتیجه ای نداره',
|
||||
'product' => 'تولید - محصول',
|
||||
'attribute' => 'صفت',
|
||||
'actions' => 'اقدامات',
|
||||
'id' => 'ID',
|
||||
'action' => 'عمل',
|
||||
'yes' => 'آره',
|
||||
'no' => 'نه',
|
||||
'true' => 'درست است، واقعی',
|
||||
'false' => 'غلط',
|
||||
'apply' => 'درخواست دادن',
|
||||
'action' => 'عمل',
|
||||
'label' => 'برچسب',
|
||||
'name' => 'نام',
|
||||
'title' => 'عنوان',
|
||||
'code' => 'کد',
|
||||
'type' => 'تایپ کنید',
|
||||
'required' => 'ضروری',
|
||||
'unique' => 'منحصر بفرد',
|
||||
'locale-based' => 'محلی مبتنی بر',
|
||||
'channel-based' => 'مبتنی بر کانال',
|
||||
'status' => 'وضعیت',
|
||||
'select-option' => 'گزینه را انتخاب کنید',
|
||||
'category' => 'دسته بندی',
|
||||
|
||||
'common' => [
|
||||
'no-result-found' => 'We could not find any records.',
|
||||
'no-result-found' => 'ما هیچ سابقه ای پیدا نکردیم.',
|
||||
'country' => 'کشور',
|
||||
'state' => 'استان',
|
||||
'true' => 'صحیح',
|
||||
|
|
@ -42,7 +74,8 @@ return [
|
|||
'tax-categories' => 'دسته بندی مالیات',
|
||||
'tax-rates' => 'نرخ مالیات',
|
||||
'promotion' => 'تبلیغات',
|
||||
'discount' => 'تخفیف'
|
||||
'discount' => 'تخفیف',
|
||||
'cms' => 'CMS'
|
||||
],
|
||||
|
||||
'acl' => [
|
||||
|
|
@ -77,7 +110,8 @@ return [
|
|||
'create' => 'افزودن',
|
||||
'delete' => 'حذف',
|
||||
'promotion' => 'تبلیغات',
|
||||
'cart-rules' => 'قوانین سبد خرید'
|
||||
'cart-rules' => 'قوانین سبد خرید',
|
||||
'catalog-rules' => 'قوانین فهرست',
|
||||
],
|
||||
|
||||
'dashboard' => [
|
||||
|
|
@ -92,22 +126,23 @@ return [
|
|||
'decreased' => ':progress%',
|
||||
'sales' => 'فروش ها',
|
||||
'top-performing-categories' => 'دسته بندی های برتر',
|
||||
'product-count' => ':count تا محصول',
|
||||
'product-count' => 'تا محصول :count',
|
||||
'top-selling-products' => 'محصولات فروش بالا',
|
||||
'sale-count' => ':count تا فروش',
|
||||
'sale-count' => ' تا فروش :count',
|
||||
'customer-with-most-sales' => 'مشتری با بیشترین فروش',
|
||||
'order-count' => ':count تا سفارش',
|
||||
'revenue' => 'درآمد :total',
|
||||
'order-count' => 'سفارش :count',
|
||||
'revenue' => ':total درآمد',
|
||||
'stock-threshold' => 'تعداد کالای موجود',
|
||||
'qty-left' => ':qty موجود',
|
||||
'qty-left' => ':qty سمت چپ',
|
||||
],
|
||||
|
||||
'datagrid' => [
|
||||
'mass-ops' => [
|
||||
'method-error' => 'خطا! روش اشتباه تشخیص داده شد، لطفاً پیکربندی کنش جمعی را بررسی کنید',
|
||||
'delete-success' => 'مورد انتخاب شده :resource با موفقیت حذف شد',
|
||||
'partial-action' => 'برخی از اقدامات به دلیل محدودیت های سیستم انجام نشد :resource',
|
||||
'update-success' => 'مورد انتخاب شده :با موفقیت به روزرسانی شد updated',
|
||||
'delete-success' => 'با موفقیت حذف شد :resource انتخاب',
|
||||
'partial-action' => ' انجام نشده است :resource برخی از اقدامات به دلیل محدودیت سیستم محدود در',
|
||||
'update-success' => 'با موفقیت به روز شد :resource انتخاب',
|
||||
'no-resource' => 'این منبع برای عملکرد کافی نبوده است'
|
||||
],
|
||||
|
||||
'id' => 'شناسه',
|
||||
|
|
@ -116,6 +151,7 @@ return [
|
|||
'admin-name' => 'نام',
|
||||
'name' => 'نام',
|
||||
'fullname' => 'نام کامل',
|
||||
'direction' => 'جهت',
|
||||
'type' => 'نوع',
|
||||
'required' => 'ضروری',
|
||||
'unique' => 'یکتا',
|
||||
|
|
@ -126,7 +162,11 @@ return [
|
|||
'hostname' => 'نام میزبان',
|
||||
'email' => 'پست الکترونیک',
|
||||
'group' => 'گروه',
|
||||
'phone' => 'تلفن',
|
||||
'gender' => 'جنسیت',
|
||||
'title' => 'عنوان',
|
||||
'layout' => 'چیدمان',
|
||||
'url-key' => 'کلید URL',
|
||||
'comment' => 'نظر',
|
||||
'product-name' => 'محصول',
|
||||
'currency-name' => 'نام ارز',
|
||||
|
|
@ -156,34 +196,34 @@ return [
|
|||
'role' => 'نقش',
|
||||
'sub-total' => 'زیر مجموع',
|
||||
'no-of-products' => 'تعداد محصولات',
|
||||
'attribute-family' => 'Attribute Family',
|
||||
'starts-from' => 'Starts From',
|
||||
'ends-till' => 'Ends Till',
|
||||
'per-cust' => 'Per Customer',
|
||||
'usage-throttle' => 'Usage Times',
|
||||
'for-guest' => 'For Guest',
|
||||
'order_number' => 'Order Number',
|
||||
'refund-date' => 'Refund Date',
|
||||
'refunded' => 'Refunded',
|
||||
'start' => 'Start',
|
||||
'end' => 'End',
|
||||
'active' => 'Active',
|
||||
'inactive' => 'Inactive',
|
||||
'true' => 'True',
|
||||
'false' => 'False',
|
||||
'approved' => 'Approved',
|
||||
'pending' => 'Pending',
|
||||
'disapproved' => 'Disapproved',
|
||||
'coupon-code' => 'Coupon Code',
|
||||
'times-used' => 'Times Used',
|
||||
'created-date' => 'Created Date',
|
||||
'expiration-date' => 'Expiration Date',
|
||||
'edit' => 'Edit',
|
||||
'delete' => 'Delete',
|
||||
'view' => 'View',
|
||||
'attribute-family' => 'خانواده ویژگی',
|
||||
'starts-from' => 'از شروع می شود',
|
||||
'ends-till' => 'تا پایان می یابد',
|
||||
'per-cust' => 'به ازای هر مشتری',
|
||||
'usage-throttle' => 'بار استفاده',
|
||||
'for-guest' => 'برای مهمان',
|
||||
'order_number' => 'شماره سفارش',
|
||||
'refund-date' => 'تاریخ بازپرداخت',
|
||||
'refunded' => 'بازپرداخت',
|
||||
'start' => 'شروع کنید',
|
||||
'end' => 'پایان',
|
||||
'active' => 'فعال',
|
||||
'inactive' => 'غیر فعال',
|
||||
'true' => 'واقعی',
|
||||
'false' => 'غلط',
|
||||
'approved' => 'تایید شده',
|
||||
'pending' => 'در انتظار',
|
||||
'disapproved' => 'رد شد',
|
||||
'coupon-code' => 'کد کوپن',
|
||||
'times-used' => 'بار استفاده شده است',
|
||||
'created-date' => 'تاریخ ایجاد شده',
|
||||
'expiration-date' => 'تاریخ ایجاد شده',
|
||||
'edit' => 'ویرایش کنید',
|
||||
'delete' => 'حذف',
|
||||
'view' => 'چشم انداز',
|
||||
'rtl' => 'RTL',
|
||||
'ltr' => 'LTR',
|
||||
'update-status' => 'Update Status'
|
||||
'update-status' => 'وضعیت به روز رسانی'
|
||||
],
|
||||
|
||||
'account' => [
|
||||
|
|
@ -271,7 +311,7 @@ return [
|
|||
'sales' => [
|
||||
'orders' => [
|
||||
'title' => 'سفارشات',
|
||||
'view-title' => 'سفارش #:order_id',
|
||||
'view-title' => '#:order_id سفارش',
|
||||
'cancel-btn-title' => 'لغو',
|
||||
'shipment-btn-title' => 'کشتی',
|
||||
'invoice-btn-title' => 'صورت حساب',
|
||||
|
|
@ -282,6 +322,13 @@ return [
|
|||
'order-info' => 'اطلاعات سفارش',
|
||||
'order-date' => 'تاریخ سفارش',
|
||||
'order-status' => 'وضعیت سفارش',
|
||||
'order-status-canceled' => 'لغو شد',
|
||||
'order-status-closed' => 'بسته شد',
|
||||
'order-status-fraud' => 'تقلب',
|
||||
'order-status-pending' => 'در انتظار',
|
||||
'order-status-pending-payment' => 'در انتظار پرداخت',
|
||||
'order-status-processing' => 'در حال پردازش',
|
||||
'order-status-success' => 'تکمیل شد',
|
||||
'channel' => 'کانال',
|
||||
'customer-name' => 'نام مشتری',
|
||||
'email' => 'پست الکترونیگ',
|
||||
|
|
@ -302,11 +349,11 @@ return [
|
|||
'product-name' => 'نام محصول',
|
||||
'qty' => 'مقدار',
|
||||
'item-status' => 'وضعیت مورد',
|
||||
'item-ordered' => 'سفارش (:qty_ordered)',
|
||||
'item-invoice' => 'صورت حساب (:qty_invoiced)',
|
||||
'item-shipped' => 'حمل شده (:qty_shipped)',
|
||||
'item-canceled' => 'لغو شده (:qty_canceled)',
|
||||
'item-refunded' => 'Refunded (:qty_refunded)',
|
||||
'item-ordered' => '(:qty_ordered) سفارش',
|
||||
'item-invoice' => '(:qty_invoiced) صورت حساب',
|
||||
'item-shipped' => '(:qty_shipped) حمل شده',
|
||||
'item-canceled' => '(:qty_canceled) لغو شده',
|
||||
'item-refunded' => '(:qty_refunded) بازپرداخت',
|
||||
'price' => 'قیمت',
|
||||
'total' => 'کل',
|
||||
'subtotal' => 'فرعی',
|
||||
|
|
@ -321,8 +368,13 @@ return [
|
|||
'total-refunded' => 'بازپرداخت کل',
|
||||
'total-due' => 'بدهی کل',
|
||||
'cancel-confirm-msg' => 'مطمئن هستید که می خواهید این سفارش را لغو کنید ؟',
|
||||
'refunds' => 'Refunds',
|
||||
'refunded' => 'Refunded'
|
||||
'refunds' => 'بازپرداخت',
|
||||
'refund-btn-title' => 'بازپرداخت',
|
||||
'refunded' => 'بازپرداخت',
|
||||
'comment-added-success' => 'Comment addded successfully.',
|
||||
'comment' => 'Comment',
|
||||
'submit-comment' => 'Submit Comment',
|
||||
'notify-customer' => 'Notify Customer',
|
||||
],
|
||||
|
||||
'invoices' => [
|
||||
|
|
@ -340,7 +392,7 @@ return [
|
|||
'qty' => 'مقدار',
|
||||
'qty-ordered' => 'سفارش داده شده',
|
||||
'qty-to-invoice' => 'مقدار به فاکتور',
|
||||
'view-title' => 'صورت حساب #:invoice_id',
|
||||
'view-title' => '#:invoice_id صورت حساب',
|
||||
'bill-to' => 'صورت حساب به',
|
||||
'ship-to' => 'حمل به',
|
||||
'print' => 'چاپ',
|
||||
|
|
@ -361,6 +413,7 @@ return [
|
|||
'add-title' => 'ایجاد حمل و نقل',
|
||||
'save-btn-title' => 'ذخیره حمل و نقل',
|
||||
'qty-ordered' => 'سفارش داده شده',
|
||||
'qty-invoiced' => 'Qty Invoiced',
|
||||
'qty-to-ship' => 'مقدار به کشتی',
|
||||
'available-sources' => 'منابع موجود',
|
||||
'source' => 'منابع',
|
||||
|
|
@ -369,33 +422,34 @@ return [
|
|||
'inventory-source' => 'منبع موجودی',
|
||||
'carrier-title' => 'عنوان حامل',
|
||||
'tracking-number' => 'شماره پیگیری',
|
||||
'view-title' => 'حمل و نقل #:shipment_id',
|
||||
'view-title' => '#:shipment_id حمل و نقل',
|
||||
'creation-error' => 'حمل و نقل برای این سفارش ایجاد نمی شود.',
|
||||
'order-error' => 'ایجاد محموله سفارش مجاز نیست.',
|
||||
'quantity-invalid' => 'مقدار درخواستی نامعتبر است یا در دسترس نیست.',
|
||||
],
|
||||
|
||||
'refunds' => [
|
||||
'title' => 'Refunds',
|
||||
'title' => 'بازپرداخت',
|
||||
'id' => 'Id',
|
||||
'add-title' => 'Create Refund',
|
||||
'save-btn-title' => 'Refund',
|
||||
'order-id' => 'Order Id',
|
||||
'qty-ordered' => 'Qty Ordered',
|
||||
'qty-to-refund' => 'Qty To Refund',
|
||||
'refund-shipping' => 'Refund Shipping',
|
||||
'adjustment-refund' => 'Adjustment Refund',
|
||||
'adjustment-fee' => 'Adjustment Fee',
|
||||
'update-qty' => 'Update Quantities',
|
||||
'invalid-qty' => 'Found invalid quantity for return items.',
|
||||
'refund-limit-error' => 'The most money available to refund is :amount.',
|
||||
'refunded' => 'Refunded',
|
||||
'date' => 'Refund Date',
|
||||
'customer-name' => 'Customer Name',
|
||||
'status' => 'Status',
|
||||
'action' => 'Action',
|
||||
'view-title' => 'Refund #:refund_id',
|
||||
'invalid-refund-amount-error' => 'Refund amount should be non zero.'
|
||||
'add-title' => 'بازپرداخت ایجاد کنید',
|
||||
'save-btn-title' => 'بازپرداخت',
|
||||
'order-id' => 'شماره سفارش',
|
||||
'qty-ordered' => 'تعداد سفارشات',
|
||||
'qty-to-refund' => 'مقدار برای بازپرداخت',
|
||||
'refund-shipping' => 'ارسال بازپرداخت',
|
||||
'adjustment-refund' => 'بازپرداخت تنظیم',
|
||||
'adjustment-fee' => 'هزینه تنظیم',
|
||||
'update-qty' => 'مقادیر را به روز کنید',
|
||||
'invalid-qty' => 'مقدار نامعتبر برای موارد برگشتی یافت شد',
|
||||
'refund-limit-error' => ' دلار است :amount بیشترین پول برای بازپرداخت ',
|
||||
'refunded' => 'بازپرداخت',
|
||||
'date' => 'تاریخ بازپرداخت',
|
||||
'customer-name' => 'نام مشتری',
|
||||
'status' => 'وضعیت',
|
||||
'action' => 'عمل',
|
||||
'view-title' => ' #:refund_id بازپرداخت',
|
||||
'invalid-refund-amount-error' => 'مبلغ بازپرداخت باید صفر نباشد.'
|
||||
|
||||
]
|
||||
],
|
||||
|
||||
|
|
@ -425,6 +479,8 @@ return [
|
|||
'price' => 'قیمت',
|
||||
'weight' => 'وزن',
|
||||
'status' => 'وضعیت',
|
||||
'enabled' => 'فعال شده است',
|
||||
'disabled' => 'معلول',
|
||||
'add-variant-title' => 'افزودن نوع',
|
||||
'variant-already-exist-message' => 'گزینه های مختلف با همان ویژگی های موجود در حال حاضر وجود دارد.',
|
||||
'add-image-btn-title' => 'افزودن تصویثر',
|
||||
|
|
@ -435,6 +491,18 @@ return [
|
|||
'images' => 'تصاویر',
|
||||
'inventories' => 'موجودی ها',
|
||||
'variations' => 'تغییرات',
|
||||
'downloadable' => 'اطلاعات قابل بارگیری',
|
||||
'links' => 'پیوندها',
|
||||
'add-link-btn-title' => 'پیوند را اضافه کنید',
|
||||
'samples' => 'نمونه ها',
|
||||
'add-sample-btn-title' => 'نمونه را اضافه کنید',
|
||||
'downloads' => 'بارگیری مجاز',
|
||||
'file' => 'فایل',
|
||||
'sample' => 'نمونه',
|
||||
'upload-file' => 'آپلود فایل',
|
||||
'url' => 'Url',
|
||||
'sort-order' => 'ترتیب مرتب سازی',
|
||||
'browse-file' => 'پرونده را مرور کنید',
|
||||
'product-link' => 'محصولات مرتبط',
|
||||
'cross-selling' => 'فروش متقابل',
|
||||
'up-selling' => 'فروش بالا',
|
||||
|
|
@ -442,9 +510,13 @@ return [
|
|||
'product-search-hint' => 'شروع به تایپ نام محصول کنید',
|
||||
'no-result-found' => 'محصولاتی با همین نام یافت نشد',
|
||||
'searching' => 'جست و جو ...',
|
||||
'bundle-items' => 'Bundle Items',
|
||||
'add-option-btn-title' => 'Add Option',
|
||||
'option-title' => 'Option Title',
|
||||
'grouped-products' => 'محصولات گروه بندی شده',
|
||||
'search-products' => 'جستجوی محصولات',
|
||||
'no-result-found' => 'محصولاتی با همین نام یافت نشد',
|
||||
'channel' => 'کانالها',
|
||||
'bundle-items' => 'موارد بسته بندی',
|
||||
'add-option-btn-title' => 'گزینه را اضافه کنید',
|
||||
'option-title' => 'عنوان گزینه',
|
||||
'input-type' => 'Input Type',
|
||||
'is-required' => 'Is Required',
|
||||
'select' => 'Select',
|
||||
|
|
@ -471,25 +543,26 @@ return [
|
|||
'multiselect' => 'Multiselect',
|
||||
'datetime' => 'Datetime',
|
||||
'date' => 'Date',
|
||||
'label' => 'Label',
|
||||
'admin' => 'Admin',
|
||||
'options' => 'Options',
|
||||
'label' => 'برچسب',
|
||||
'admin' => 'مدیر',
|
||||
'options' => 'گزینه ها',
|
||||
'position' => 'موقعیت',
|
||||
'add-option-btn-title' => 'افزودن گزینه',
|
||||
'validations' => 'اعتبار سنجی ها',
|
||||
'input_validation' => 'اعتبار سنجی ورودی',
|
||||
'is_required' => 'Is Required',
|
||||
'is_unique' => 'Is Unique',
|
||||
'number' => 'Number',
|
||||
'decimal' => 'Decimal',
|
||||
'email' => 'Email',
|
||||
'is_required' => 'مورد نیاز است',
|
||||
'is_unique' => 'منحصر به فرد است',
|
||||
'number' => 'عدد',
|
||||
'decimal' => 'اعشار',
|
||||
'email' => 'پست الکترونیک',
|
||||
'url' => 'URL',
|
||||
'configuration' => 'Configuration',
|
||||
'status' => 'Status',
|
||||
'configuration' => 'پیکربندی',
|
||||
'status' => 'وضعیت',
|
||||
'yes' => 'بله',
|
||||
'no' => 'خیر',
|
||||
'value_per_locale' => 'مقدار در هر ممحل',
|
||||
'value_per_channel' => 'مقدار در هر کانال',
|
||||
'value_per_channel' => 'مقدار در هر کانال',
|
||||
'is_filterable' => 'استفاده در Navigation Layered',
|
||||
'is_configurable' => 'برای ایجاد یک محصول قابل تنظیم استفاده کنید',
|
||||
'admin_name' => 'نام مدیر',
|
||||
|
|
@ -501,7 +574,11 @@ return [
|
|||
'text-swatch' => 'متن Swatch',
|
||||
'swatch' => 'Swatch',
|
||||
'image' => 'تصویر',
|
||||
'file' => 'فایل'
|
||||
'file' => 'فایل',
|
||||
'checkbox' => 'Checkbox',
|
||||
'use_in_flat' => "در جدول تخت محصول ایجاد کنید",
|
||||
'is_comparable' => "ویژگی قابل مقایسه است",
|
||||
'default_null_option' => 'گزینه پیش فرض خالی ایجاد کنید',
|
||||
],
|
||||
'families' => [
|
||||
'title' => 'خانواده ها',
|
||||
|
|
@ -545,6 +622,8 @@ return [
|
|||
'meta_description' => 'توضیحات متا',
|
||||
'meta_keywords' => 'کلیدواژه ها متا',
|
||||
'image' => 'تصویر',
|
||||
'filterable-attributes' => 'ویژگی های فیلتر',
|
||||
'attributes' => 'ویژگی های',
|
||||
]
|
||||
],
|
||||
|
||||
|
|
@ -592,6 +671,7 @@ return [
|
|||
'edit-button-title' => 'ویرایش نرخ'
|
||||
],
|
||||
'zip_code' => 'کد پستی',
|
||||
'is_zip' => 'محدوده Zip را فعال کنید',
|
||||
],
|
||||
|
||||
'sales' => [
|
||||
|
|
@ -610,10 +690,12 @@ return [
|
|||
'title' => 'محل ها',
|
||||
'add-title' => 'افزودن محل',
|
||||
'edit-title' => 'ویرایش محل',
|
||||
'add-title' => 'محل را اضافه کنید',
|
||||
'save-btn-title' => 'ذخیره محل',
|
||||
'general' => 'عمومی',
|
||||
'code' => 'کد',
|
||||
'name' => 'نام',
|
||||
'direction' => 'جهت',
|
||||
'create-success' => 'محل با موفقیت ایجاد شد',
|
||||
'update-success' => 'محل با موفقیت به روز شد.',
|
||||
'delete-success' => 'محل با موفقیت حذف شد.',
|
||||
|
|
@ -650,6 +732,8 @@ return [
|
|||
'source_currency' => 'منبع ارز',
|
||||
'target_currency' => 'هدف ارز',
|
||||
'rate' => 'نرخ',
|
||||
'exchange-class-not-found' => 'کلاس نرخ ارز :service یافت نشد',
|
||||
'update-rates' => 'نرخ ها را به روز کنید',
|
||||
'create-success' => 'نرخ ارز با موفقیت ایجاد شد.',
|
||||
'update-success' => 'نرخ ارز با موفقیت به روز شد.',
|
||||
'delete-success' => 'نرخ ارز با موفقیت حذف شد.',
|
||||
|
|
@ -712,10 +796,16 @@ return [
|
|||
'update-success' => 'کانال با موفقیت به روز شد.',
|
||||
'delete-success' => 'کانال با موفقیت حذف شد.',
|
||||
'last-delete-error' => 'حداقل یک کانال مورد نیاز است.',
|
||||
'seo' => 'SEO صفحه اصلی',
|
||||
'seo-title' => 'عنوان Meta',
|
||||
'seo-description' => 'شرح Meta',
|
||||
'seo-keywords' => 'کلید واژه ها Meta',
|
||||
|
||||
],
|
||||
|
||||
'sliders' => [
|
||||
'title' => 'عنوان',
|
||||
'name' => 'Name',
|
||||
'name' => 'نام',
|
||||
'add-title' => 'افزودن اسلاید',
|
||||
'edit-title' => 'ویرایش اسلایدر',
|
||||
'save-btn-title' => 'ذخیره اسلایدر',
|
||||
|
|
@ -730,6 +820,7 @@ return [
|
|||
'delete-success' => 'آخرین اسلایدر حذف نمی شود',
|
||||
'delete-fail' => 'اسلایدر با موفقیت حذف شد'
|
||||
],
|
||||
|
||||
'tax-categories' => [
|
||||
'title' => 'دسته بندی های مالیات',
|
||||
'add-title' => 'افزودن دسته بندی مالیات',
|
||||
|
|
@ -752,6 +843,7 @@ return [
|
|||
'atleast-one' => 'آخرین دسته مالیاتی را نمی توان حذف کرد',
|
||||
'delete' => 'دسته بندی مالیات با موفقیت حذف شد'
|
||||
],
|
||||
|
||||
'tax-rates' => [
|
||||
'title' => 'نرخ مالیات',
|
||||
'add-title' => 'افزودن نرخ مالیات',
|
||||
|
|
@ -771,6 +863,7 @@ return [
|
|||
'edit-button-title' => 'ویرایش نرخ'
|
||||
],
|
||||
'zip_code' => 'کد پستی',
|
||||
'is_zip' => ' را فعال کنید Zip محدوده',
|
||||
'create-success' => 'نرخ مالیات با موفقیت ایجاد شد',
|
||||
'create-error' => 'نمی توان نرخ مالیات ایجاد کرد',
|
||||
'update-success' => 'نرخ مالیات با موفقیت به روز شد',
|
||||
|
|
@ -789,12 +882,43 @@ return [
|
|||
'edit-title' => 'ویرایش گروه',
|
||||
'save-btn-title' => 'ذخیره گروه',
|
||||
'title' => 'گروه ها',
|
||||
'save-btn-title' => 'ذخیره گروه',
|
||||
'code' => 'کد',
|
||||
'name' => 'نام',
|
||||
'is_user_defined' => 'تعریف شده توسط کاربر',
|
||||
'yes' => 'بله'
|
||||
],
|
||||
|
||||
'addresses' => [
|
||||
'title' => ':customer_name لیست آدرس های ',
|
||||
'vat_id' => 'id وات',
|
||||
'create-title' => 'آدرس مشتری را ایجاد کنید',
|
||||
'edit-title' => 'آدرس مشتری را به روز کنید',
|
||||
'title-orders' => ':customer_name لیست سفارشات ',
|
||||
'address-list' => 'لیست آدرس',
|
||||
'order-list' => 'لیست سفارشات',
|
||||
'address-id' => 'ID نشانی',
|
||||
'address-1' => 'آدرس 1',
|
||||
'city' => 'شهر',
|
||||
'state-name' => 'دولت',
|
||||
'country-name' => 'کشور',
|
||||
'postcode' => 'کد پستی',
|
||||
'default-address' => 'آدرس پیش فرض',
|
||||
'yes' => 'آره',
|
||||
'not-approved' => 'مورد تایید نیست',
|
||||
'no' => 'نه',
|
||||
'dash' => '-',
|
||||
'delete' => 'حذف',
|
||||
'create-btn-title' => 'اضافه کردن آدرس',
|
||||
'save-btn-title' => 'ذخیره آدرس',
|
||||
'general' => 'عمومی',
|
||||
'success-create' => 'آدرس مشتری با موفقیت ایجاد شد Success:',
|
||||
'success-update' => 'آدرس مشتری با موفقیت به روز شد Success:',
|
||||
'success-delete' => 'آدرس مشتری با موفقیت حذف شد Success:',
|
||||
'success-mass-delete' => 'آدرس های انتخاب شده با موفقیت حذف شدند Success:',
|
||||
'error-create' => 'آدرس مشتری ایجاد نشده است Error:',
|
||||
],
|
||||
|
||||
'note' => [
|
||||
'title' => 'افزودن یادداشت',
|
||||
'save-note' => 'ذخیره یادداشت',
|
||||
|
|
@ -818,13 +942,14 @@ return [
|
|||
'state' => 'استان',
|
||||
'select-state' => 'یک منطقه ، ایالت یا استان را انتخاب کنید.',
|
||||
'country' => 'کشور',
|
||||
'other' => 'Other',
|
||||
'other' => 'دیگر',
|
||||
'male' => 'مرد',
|
||||
'female' => 'زن',
|
||||
'phone' => 'تلفن',
|
||||
'group-default' => 'نمی توان گروه پیش فرض را حذف کرد.',
|
||||
'edit-help-title' => 'ویرایش مشتری',
|
||||
'delete-help-title' => 'حذف مشتری',
|
||||
'addresses' => 'Addresses',
|
||||
'addresses' => 'آدرس ها',
|
||||
'mass-destroy-success' => 'مشتریان با موفقیت حذف شدند',
|
||||
'mass-update-success' => 'مشتریان با موفقیت به روز شدند',
|
||||
'status' => 'وضعیت',
|
||||
|
|
@ -857,91 +982,137 @@ return [
|
|||
],
|
||||
|
||||
'promotion' => [
|
||||
'catalog-rule' => 'قوانین کاتالوگ',
|
||||
'cart-rule' => 'قوانین سبد خرید',
|
||||
'add-catalog-rule' => 'افزودن قانون کاتالوگ',
|
||||
'add-cart-rule' => 'افزودن قانون سبد خرید',
|
||||
'edit-cart-rule' => 'ویرایش قانون کاتالوگ',
|
||||
'edit-catalog-rule' => 'ویرایش قانون سبد خرید',
|
||||
'create-catalog-rule' => 'ایجاد قانون کاتالوگ',
|
||||
'create-cart-rule' => 'ایجاد قانون سبد خرید',
|
||||
'save-btn-title' => 'ایجاد',
|
||||
'edit-btn-title' => 'ویرایش',
|
||||
'save' => 'ذخیره',
|
||||
'select-attr' => 'انتخاب ویژگی',
|
||||
'select-attr-fam' => 'انتخاب خانواده ویژگی',
|
||||
'select-cart-attr' => 'انتخاب ویژگی سبد خرید',
|
||||
'add_condition' => 'افزودن شرط',
|
||||
'global_labels' => 'برچسب های جهانی',
|
||||
'general-info' => [
|
||||
'name' => 'نام نقش',
|
||||
'description' => 'توضیحات',
|
||||
'starts-from' => 'شروع',
|
||||
'ends-till' => 'پایان',
|
||||
'channels' => 'کانال ها',
|
||||
'channels-req' => 'کانال ها',
|
||||
'cust-groups' => 'گروه های مشتری',
|
||||
'priority' => 'اولویت',
|
||||
'add-condition' => 'افزودن شرایط',
|
||||
'disc_amt' => 'مقدار تخفیف',
|
||||
'disc_percent' => 'درصد تخفیف',
|
||||
'is-coupon' => 'از کوپن استفاده کنید',
|
||||
'is-coupon-yes' => 'بله',
|
||||
'is-coupon-no' => 'خیر',
|
||||
'uses-per-cust' => 'استفاده می شود برای هر مشتری',
|
||||
'all' => 'همه',
|
||||
'any' => 'هیچ',
|
||||
'end-other-rules' => 'پایان قوانین دیگر',
|
||||
'status' => 'فعال است',
|
||||
'all-conditions-true' => 'به فرض همه شرایط صحیح است',
|
||||
'assuming' => 'با فرض اینکه',
|
||||
'conditions' => 'شرایط',
|
||||
'apply' => 'درخواست دادن',
|
||||
'are' => 'هستند',
|
||||
'true' => 'صحیح',
|
||||
'false' => 'غلط',
|
||||
'limit' => 'محدودیت استفاده',
|
||||
'specific-coupon' => 'کوپن خاص (چک) / خودکار تولید شده (بررسی نشده)',
|
||||
'free-shipping' => 'ارسال رایگان',
|
||||
'is-guest' => 'برای مهمانان',
|
||||
'disc_qty' => 'حداکثر. مقدار مجاز برای تخفیف',
|
||||
'test-mode' => 'انتخاب کنید چگونه شرایط را آزمایش کنیم',
|
||||
'labels' => 'برچسب',
|
||||
'information' => 'اطلاعات',
|
||||
'actions' => 'عملیات',
|
||||
'coupons' => 'کوپن ها'
|
||||
],
|
||||
|
||||
'status' => [
|
||||
'success' => 'موفقیت! قانون ایجاد شده است',
|
||||
'success-coupon' => 'موفقیت! قانون به همراه کوپن ایجاد شده است',
|
||||
'failed' => 'خطا! نتوانست قانون را ایجاد کند',
|
||||
'update-success' => 'موفقیت! قانون به روز شد',
|
||||
'update-coupon-success' => 'موفقیت! قانون به همراه کوپن به روز شد',
|
||||
'update-failed' => 'خطا! نمی توان بروزرسانی کرد',
|
||||
'delete-success' => 'موفق! قانون حذف شد',
|
||||
'delete-failed' => 'خطا! حذف نمی شود',
|
||||
'coupon-applied' => 'کوپن مورد استفاده',
|
||||
'coupon-failed' => 'کوپن نتوانست اعمال شود',
|
||||
'no-coupon' => '* کوپن قابل استفاده نیست',
|
||||
'coupon-removed' => 'کوپن با موفقیت حذف شد',
|
||||
'coupon-remove-failed' => 'حذف کوپن انجام نشد',
|
||||
'duplicate-coupon' => 'کوپن قبلاً وجود دارد ، لطفاً با یک کوپن دیگر دوباره امتحان کنید'
|
||||
],
|
||||
|
||||
'catalog' => [
|
||||
'cart-rules' => [
|
||||
'title' => 'قوانین سبد خرید',
|
||||
'add-title' => 'قانون سبد خرید را اضافه کنید',
|
||||
'edit-title' => 'تنظیم قانون سبد خرید',
|
||||
'save-btn-title' => 'صرفه جویی در قانون سبد خرید',
|
||||
'rule-information' => 'اطلاعات قانون',
|
||||
'name' => 'نام',
|
||||
'description' => 'توضیحات',
|
||||
'apply-percent' => 'به عنوان درصد اعمال شود',
|
||||
'apply-fixed' => 'به عنوان مقدار ثابت اعمال شود',
|
||||
'adjust-to-percent' => 'تنظیم به درصد',
|
||||
'adjust-to-value' => 'مقدار تخفیف را تنظیم کنید',
|
||||
'condition-missing' => 'لطفا شرایط را بررسی کنید ، برخی از مقادیر ممکن است وجود نداشته باشد'
|
||||
'description' => 'شرح',
|
||||
'status' => 'وضعیت',
|
||||
'is-active' => 'قاعده سبد خرید فعال است',
|
||||
'channels' => 'کانالها',
|
||||
'customer-groups' => 'گروه های مشتری',
|
||||
'coupon-type' => 'نوع کوپن',
|
||||
'no-coupon' => 'بدون کوپن',
|
||||
'specific-coupon' => 'کوپن خاص',
|
||||
'auto-generate-coupon' => 'تولید کوپن خودکار',
|
||||
'no' => 'نه',
|
||||
'yes' => 'آره',
|
||||
'coupon-code' => 'کد کوپن',
|
||||
'uses-per-coupon' => 'از هر کوپن استفاده می کند',
|
||||
'uses-per-customer' => 'از هر مشتری استفاده می کند',
|
||||
'uses-per-customer-control-info' => 'فقط برای ورود به سیستم در مشتریان استفاده می شود',
|
||||
'from' => 'از جانب',
|
||||
'to' => 'به',
|
||||
'priority' => 'اولویت',
|
||||
'conditions' => 'شرایط',
|
||||
'condition-type' => 'نوع وضعیت',
|
||||
'all-conditions-true' => 'همه شرایط صحیح است',
|
||||
'any-condition-true' => 'هر شرایطی درست است',
|
||||
'add-condition' => 'شرط را اضافه کنید',
|
||||
'choose-condition-to-add' => 'شرطی را برای اضافه کردن انتخاب کنید',
|
||||
'cart-attribute' => 'ویژگی سبد خرید',
|
||||
'subtotal' => 'فرعی',
|
||||
'total-items-qty' => 'تعداد کل موارد',
|
||||
'total-weight' => 'وزن کل',
|
||||
'payment-method' => 'روش پرداخت',
|
||||
'shipping-method' => 'روش حمل و نقل',
|
||||
'shipping-postcode' => 'حمل و نقل پستی / کد پستی',
|
||||
'shipping-state' => 'کشور حمل و نقل',
|
||||
'shipping-country' => 'کشور حمل و نقل',
|
||||
'cart-item-attribute' => 'ویژگی مورد سبد خرید',
|
||||
'price-in-cart' => 'قیمت در سبد خرید',
|
||||
'qty-in-cart' => 'کمیت در سبد خرید',
|
||||
'product-attribute' => 'ویژگی محصول',
|
||||
'attribute-name-children-only' => '(فقط کودکان) :attribute_name',
|
||||
'attribute-name-parent-only' => '(فقط والدین) :attribute_name' ,
|
||||
'is-equal-to' => 'برابر است با',
|
||||
'is-not-equal-to' => 'مساوی نیست',
|
||||
'equals-or-greater-than' => 'برابر یا بیشتر از',
|
||||
'equals-or-less-than' => 'برابر یا کمتر از',
|
||||
'greater-than' => 'بزرگتر از',
|
||||
'less-than' => 'کمتر از',
|
||||
'contain' => 'حاوی',
|
||||
'contains' => 'حاوی',
|
||||
'does-not-contain' => 'شامل نمی شود',
|
||||
'actions' => 'اقدامات',
|
||||
'action-type' => 'نوع عمل',
|
||||
'percentage-product-price' => 'درصد قیمت محصول',
|
||||
'fixed-amount' => 'مقدار ثابت',
|
||||
'fixed-amount-whole-cart' => 'مقدار ثابت به سبد خرید',
|
||||
'buy-x-get-y-free' => 'خرید X دریافت Y رایگان',
|
||||
'discount-amount' => 'مقدار تخفیف',
|
||||
'discount-quantity' => 'حداکثر مقدار مجاز برای تخفیف',
|
||||
'discount-step' => 'مقدار X را بخرید',
|
||||
'free-shipping' => 'ارسال رایگان',
|
||||
'apply-to-shipping' => 'ارسال به حمل و نقل',
|
||||
'coupon-codes' => 'کدهای کوپن',
|
||||
'coupon-qty' => 'QTY کوپن',
|
||||
'code-length' => 'طول کد',
|
||||
'code-format' => 'قالب کد',
|
||||
'alphanumeric' => 'الفبایی',
|
||||
'alphabetical' => 'الفبایی',
|
||||
'numeric' => 'عددی',
|
||||
'code-prefix' => 'پیشوند کد',
|
||||
'code-suffix' => 'کد سوفیکس',
|
||||
'generate' => 'تولید می کنند',
|
||||
'cart-rule-not-defind-error' => 'قانون سبد خرید تعریف نشده است',
|
||||
'mass-delete-success' => 'همه کوپن های انتخاب شده با موفقیت حذف شدند.',
|
||||
'end-other-rules' => 'قوانین دیگر را پایان دهید',
|
||||
'children-categories' => '(دسته بندی ها (فقط کودکان',
|
||||
'parent-categories' => '(دسته ها (فقط والدین',
|
||||
'categories' => 'دسته بندی ها',
|
||||
'attribute_family' => 'خانواده ویژگی'
|
||||
],
|
||||
|
||||
'cart' => [
|
||||
'buy-atleast' => 'حداقل بخرید',
|
||||
'apply-to-shipping' => 'درخواست حمل و نقل'
|
||||
'catalog-rules' => [
|
||||
'title' => 'قوانین فهرست',
|
||||
'add-title' => 'قانون کاتالوگ را اضافه کنید',
|
||||
'edit-title' => 'تنظیم قانون کاتالوگ',
|
||||
'save-btn-title' => 'ذخیره قانون کاتالوگ',
|
||||
'rule-information' => 'اطلاعات قانون',
|
||||
'name' => 'نام',
|
||||
'description' => 'شرح',
|
||||
'status' => 'وضعیت',
|
||||
'is-active' => 'قانون کاتالوگ فعال است',
|
||||
'channels' => 'کانالها',
|
||||
'customer-groups' => 'گروه های مشتری',
|
||||
'no' => 'نه',
|
||||
'yes' => 'آره',
|
||||
'from' => 'از جانب',
|
||||
'to' => 'به',
|
||||
'priority' => 'اولویت',
|
||||
'conditions' => 'شرایط',
|
||||
'condition-type' => 'نوع وضعیت',
|
||||
'all-conditions-true' => 'همه شرایط صحیح است',
|
||||
'any-condition-true' => 'هر شرایطی درست است',
|
||||
'add-condition' => 'شرط را اضافه کنید',
|
||||
'choose-condition-to-add' => 'شرطی را برای اضافه کردن انتخاب کنید',
|
||||
'product-attribute' => 'ویژگی محصول',
|
||||
'attribute-name-children-only' => ' (فقط کودکان) :attribute_name',
|
||||
'attribute-name-parent-only' => '(فقط والدین) :attribute_name',
|
||||
'is-equal-to' => 'برابر است با',
|
||||
'is-not-equal-to' => 'مساوی نیست',
|
||||
'equals-or-greater-than' => 'برابر یا بیشتر از',
|
||||
'equals-or-less-than' => 'برابر یا کمتر از',
|
||||
'greater-than' => 'بزرگتر از',
|
||||
'less-than' => 'کمتر از',
|
||||
'contain' => 'حاوی',
|
||||
'contains' => 'حاوی',
|
||||
'does-not-contain' => 'شامل نمی شود',
|
||||
'actions' => 'اقدامات',
|
||||
'action-type' => 'نوع عمل',
|
||||
'percentage-product-price' => 'درصد قیمت محصول',
|
||||
'fixed-amount' => 'مقدار ثابت',
|
||||
'fixed-amount-whole-cart' => 'مقدار ثابت به فهرست کامل',
|
||||
'buy-x-get-y-free' => 'خرید X دریافت Y رایگان',
|
||||
'discount-amount' => 'مقدار تخفیف',
|
||||
'mass-delete-success' => 'همه فهرست انتخابی کوپن ها با موفقیت حذف شدند',
|
||||
'end-other-rules' => 'قوانین دیگر را پایان دهید',
|
||||
'categories' => 'دسته بندی ها',
|
||||
'attribute_family' => 'خانواده ویژگی'
|
||||
]
|
||||
],
|
||||
|
||||
|
|
@ -985,7 +1156,7 @@ return [
|
|||
'csv' => 'CSV',
|
||||
'xls' => 'XLS',
|
||||
'file' => 'File',
|
||||
'upload-error' => 'پرونده باید یک نوع از نوع ها باشد: xls, xlsx, csv.',
|
||||
'upload-error' => ':xls, xlsx, csv. پرونده باید یک نوع از نوع ها باشد',
|
||||
'duplicate-error' => 'شناسه باید شناسه منحصر به فرد ، شناسه تکراری :identifier در سطر :position.',
|
||||
'enough-row-error' => 'ردیف پرونده کافی نیست',
|
||||
'allowed-type' => 'نوع مجاز :',
|
||||
|
|
@ -994,25 +1165,60 @@ return [
|
|||
'illegal-format' => 'خطا! این نوع قالب یا پشتیبانی نمی شود یا فرمت غیرقانونی آن است'
|
||||
],
|
||||
|
||||
'cms' => [
|
||||
'pages' => [
|
||||
'general' => 'عمومی',
|
||||
'seo' => 'SEO',
|
||||
'pages' => 'صفحات',
|
||||
'title' => 'صفحات',
|
||||
'add-title' => 'اضافه کردن صفحه',
|
||||
'content' => 'محتوا',
|
||||
'url-key' => 'کلید URL',
|
||||
'channel' => 'کانالها',
|
||||
'locale' => 'محل های محلی',
|
||||
'create-btn-title' => 'صفحه را ذخیره کن',
|
||||
'edit-title' => 'ویرایش صفحه',
|
||||
'edit-btn-title' => 'صفحه را ذخیره کن',
|
||||
'create-success' => 'صفحه با موفقیت ایجاد شد',
|
||||
'create-partial' => 'برخی از صفحات درخواست شده در حال حاضر وجود دارد',
|
||||
'create-failure' => 'تمام صفحات درخواست شده در حال حاضر وجود دارد',
|
||||
'update-success' => 'صفحه با موفقیت به روز شد',
|
||||
'update-failure' => 'صفحه نمی تواند به روز شود',
|
||||
'page-title' => 'عنوان صفحه',
|
||||
'layout' => 'چیدمان',
|
||||
'meta_keywords' => 'کلید واژه ها Meta',
|
||||
'meta_description' => 'شرح Meta',
|
||||
'meta_title' => 'عنوان Meta',
|
||||
'delete-success' => 'صفحه CMS با موفقیت حذف شد',
|
||||
'delete-failure' => 'صفحه CMS حذف نمی شود',
|
||||
'preview' => 'پیش نمایش',
|
||||
'one-col' => '<div class="mt-10">Use class: <b>"static-container one-column"</b> برای یک طرح ستون</div>',
|
||||
'two-col' => '<div class="mt-10">Use class: <b>"static-container two-column"</b> برای طرح دو ستون</div>',
|
||||
'three-col' => '<div class="mt-10">Use class: <b>"static-container three-column"</b> برای طرح سه ستون</div>',
|
||||
'helper-classes' => 'کلاسهای یاور'
|
||||
]
|
||||
],
|
||||
|
||||
'response' => [
|
||||
'being-used' => 'این منبع :name استفاده می شود در منبع :source',
|
||||
'being-used' => ' مورد استفاده قرار می گیرد :source در :name این منبع',
|
||||
'cannot-delete-default' => 'کانال پیش فرض حذف نمی شود',
|
||||
'create-success' => ':name با موفقیت ایجاد شد',
|
||||
'update-success' => ':name با موفقیت به روز شد.',
|
||||
'delete-success' => ':name با موفقیت حذف شد',
|
||||
'create-success' => ' با موفقیت ایجاد شد :name',
|
||||
'update-success' => ' با موفقیت به روز شد :name',
|
||||
'delete-success' => 'با موفقیت حذف شد :name',
|
||||
'delete-failed' => 'هنگام حذف :name خطایی روی داد.',
|
||||
'last-delete-error' => 'حداقل یک :name لازم است.',
|
||||
'user-define-error' => 'نمی توان :name سیستم را حذف کرد.',
|
||||
'attribute-error' => ':name در محصولات قابل تنظیم استفاده می شود.',
|
||||
'attribute-product-error' => ':name در محصولات استفاده می شود.',
|
||||
'customer-associate' => ':name نمی توان حذف کرد زیرا مشتری با این گروه در ارتباط است.',
|
||||
'attribute-error' => 'در محصولات قابل تنظیم استفاده می شود :name ' ,
|
||||
'attribute-product-error' => ' در محصولات استفاده می شود :name',
|
||||
'customer-associate' => ' نمی توان حذف کرد زیرا مشتری با این گروه در ارتباط است :name',
|
||||
'currency-delete-error' => 'این ارز به عنوان ارز پایه کانال تنظیم شده است بنابراین نمی توان آن را حذف کرد.',
|
||||
'upload-success' => ':name با موفقیت بارگذاری شد.',
|
||||
'upload-success' => ' با موفقیت بارگذاری شد :name',
|
||||
'delete-category-root' => 'نمی توان دسته اصلی را حذف کرد',
|
||||
'create-root-failure' => 'طبقه بندی با ریشه نام در حال حاضر وجود دارد',
|
||||
'cancel-success' => ':name با موفقیت لغو شد.',
|
||||
'cancel-error' => ':name قابل لغو نیست.',
|
||||
'already-taken' => ':name قبلا گرفته شده.'
|
||||
'cancel-success' => ' با موفقیت لغو شد :name',
|
||||
'cancel-error' => ' قابل لغو نیست :name',
|
||||
'already-taken' => ' قبلا گرفته شده :name',
|
||||
'order-pending' => 'حساب حذف نمی شود زیرا برخی از سفارش ها حالت معلق یا در حال پردازش هستند'
|
||||
],
|
||||
|
||||
'footer' => [
|
||||
|
|
@ -1020,9 +1226,29 @@ return [
|
|||
],
|
||||
|
||||
'admin' => [
|
||||
'emails' => [
|
||||
'email' => 'پست الکترونیک',
|
||||
'notification_label' => 'اطلاعیه',
|
||||
'notifications' => [
|
||||
'verification' => 'خدمات ارائه شده بفرست',
|
||||
'registration' => 'ثبت نام از طریق ایمیل',
|
||||
'customer' => 'ارسال ایمیل به مشتری',
|
||||
'new-order' => 'ارسال تأییدیه سفارش ایمیل',
|
||||
'new-admin' => 'ارسال ایمیل دعوت نامه به مدیر',
|
||||
'new-invoice' => 'ارسال نامه الکترونیکی برای تأیید فاکتور',
|
||||
'new-refund' => 'ارسال نامه الکترونیکی اعلان بازپرداخت',
|
||||
'new-shipment' => 'ارسال نامه الکترونیکی اعلان حمل و نقل',
|
||||
'new-inventory-source' => 'ارسال نامه الکترونیکی اعلان منبع موجودی',
|
||||
'cancel-order' => 'ارسال نامه لغو اعلان سفارش پست الکترونیکی',
|
||||
],
|
||||
|
||||
],
|
||||
'system' => [
|
||||
'catalog' => 'کاتالوگ',
|
||||
'products' => 'محصولات',
|
||||
'guest-checkout' => 'وارسی میهمان',
|
||||
'allow-guest-checkout' => 'مجاز به پرداخت مهمان',
|
||||
'allow-guest-checkout-hint' => 'نکته: در صورت روشن بودن ، این گزینه به طور خاص برای هر محصول قابل تنظیم است',
|
||||
'review' => 'بررسی',
|
||||
'allow-guest-review' => 'اجازه دادن به کاربر مهمان برای بررسی',
|
||||
'inventory' => 'موجودی',
|
||||
|
|
@ -1062,17 +1288,34 @@ return [
|
|||
'footer' => 'فوتر',
|
||||
'content' => 'محتوا',
|
||||
'footer-content' => 'متن فوتر',
|
||||
'footer-toggle' => 'پایین صفحه را تغییر دهید',
|
||||
'locale-options' => 'گزینه های واحد',
|
||||
'weight-unit' => 'واحد وزن',
|
||||
'admin-page-limit' => 'موارد پیش فرض در هر صفحه (مدیر)',
|
||||
'email-settings' => 'Email Settings',
|
||||
'email-sender-name' => 'Email Sender Name',
|
||||
'shop-email-from' => 'Shop Email Address [For sending emails]',
|
||||
'admin-name' => 'Admin Name',
|
||||
'admin-email' => 'Admin Email',
|
||||
'design' => 'طراحی',
|
||||
'admin-logo' => 'لوگو مدیر',
|
||||
'logo-image' => 'تصویر لوگو',
|
||||
'credit-max' => 'اعتبار مشتری حداکثر',
|
||||
'credit-max-value' => 'حداکثر میزان اعتبار',
|
||||
'use-credit-max' => 'استفاده از حداکثر اعتبار',
|
||||
'order-settings' => 'تنظیمات سفارش دهید',
|
||||
'orderNumber' => 'تنظیمات شماره سفارش دهید',
|
||||
'order-number-prefix' => 'پیش شماره شماره سفارش',
|
||||
'order-number-length' => 'طول شماره سفارش',
|
||||
'order-number-suffix' => 'تعداد کافی شماره سفارش',
|
||||
'default' => 'پیش فرض',
|
||||
'sandbox' => 'Sandbox',
|
||||
'all-channels' => 'همه',
|
||||
'all-locales' => 'همه',
|
||||
'sandbox' => 'Sandbox',
|
||||
'invoice-slip-design' => 'Invoice Slip Design',
|
||||
'logo' => 'logo'
|
||||
'logo' => 'logo',
|
||||
'favicon' => 'Favicon'
|
||||
]
|
||||
]
|
||||
];
|
||||
|
|
|
|||
|
|
@ -370,7 +370,11 @@ return [
|
|||
'total-due' => 'Total Due',
|
||||
'cancel-confirm-msg' => 'Weet u zeker dat u deze bestelling wilt annuleren ?',
|
||||
'refund-btn-title' => 'Terugbetaling',
|
||||
'refunds' => 'Terugbetalingen'
|
||||
'refunds' => 'Terugbetalingen',
|
||||
'comment-added-success' => 'Comment addded successfully.',
|
||||
'comment' => 'Comment',
|
||||
'submit-comment' => 'Submit Comment',
|
||||
'notify-customer' => 'Notify Customer',
|
||||
],
|
||||
|
||||
'invoices' => [
|
||||
|
|
@ -409,6 +413,7 @@ return [
|
|||
'add-title' => 'Zending maken',
|
||||
'save-btn-title' => 'Zending opslaan',
|
||||
'qty-ordered' => 'Besteld aantal',
|
||||
'qty-invoiced' => 'Qty Invoiced',
|
||||
'qty-to-ship' => 'Te verzenden',
|
||||
'available-sources' => 'Beschikbare bronnen',
|
||||
'source' => 'Bron',
|
||||
|
|
@ -426,24 +431,24 @@ return [
|
|||
'refunds' => [
|
||||
'title' => 'Terugbetalingen',
|
||||
'id' => 'Id',
|
||||
'add-title' => 'Create Refund',
|
||||
'add-title' => 'Maak een terugbetaling',
|
||||
'save-btn-title' => 'Opslaan',
|
||||
'order-id' => 'Order Id',
|
||||
'qty-ordered' => 'Qty Ordered',
|
||||
'qty-to-refund' => 'Qty To Refund',
|
||||
'refund-shipping' => 'Refund Shipping',
|
||||
'adjustment-refund' => 'Adjustment Refund',
|
||||
'adjustment-fee' => 'Adjustment Fee',
|
||||
'update-qty' => 'Update Quantities',
|
||||
'invalid-qty' => 'We found an invalid quantity to refund items.',
|
||||
'refund-limit-error' => 'The most money available to refund is :amount.',
|
||||
'order-id' => 'Bestellen Id',
|
||||
'qty-ordered' => 'Hoeveelheid besteld',
|
||||
'qty-to-refund' => 'Te restitueren hoeveelheid',
|
||||
'refund-shipping' => 'Verzending terugbetalen',
|
||||
'adjustment-refund' => 'Aanpassing restitutie',
|
||||
'adjustment-fee' => 'Aanpassingskosten',
|
||||
'update-qty' => 'Hoeveelheden bijwerken',
|
||||
'invalid-qty' => 'We hebben een ongeldige hoeveelheid gevonden om artikelen terug te betalen.',
|
||||
'refund-limit-error' => 'Het meeste geld dat terugbetaald kan worden is :amount.',
|
||||
'refunded' => 'Teruggestort',
|
||||
'date' => 'Refund Date',
|
||||
'customer-name' => 'Customer Name',
|
||||
'status' => 'Status',
|
||||
'customer-name' => 'klantnaam',
|
||||
'status' => 'Toestand',
|
||||
'action' => 'Actie',
|
||||
'view-title' => 'Refund #:refund_id',
|
||||
'invalid-refund-amount-error' => 'Refund amount should be non zero.'
|
||||
'view-title' => 'Terugbetaling #:refund_id',
|
||||
'invalid-refund-amount-error' => 'Het restitutiebedrag mag niet nul zijn.'
|
||||
|
||||
]
|
||||
],
|
||||
|
|
@ -572,6 +577,7 @@ return [
|
|||
'file' => 'Bestand',
|
||||
'checkbox' => 'Checkbox',
|
||||
'use_in_flat' => "Create in Product Flat Table",
|
||||
'is_comparable' => "Attribuut is vergelijkbaar ",
|
||||
'default_null_option' => 'Create default empty option',
|
||||
],
|
||||
'families' => [
|
||||
|
|
@ -595,29 +601,29 @@ return [
|
|||
'categories' => [
|
||||
'title' => 'Categorieën',
|
||||
'add-title' => 'Categorie toevoegen',
|
||||
'edit-title' => 'Edit Category',
|
||||
'save-btn-title' => 'Save Category',
|
||||
'edit-title' => 'Categorie bewerken',
|
||||
'save-btn-title' => 'Categorie opslaan',
|
||||
'general' => 'Algemeen',
|
||||
'name' => 'Naam',
|
||||
'visible-in-menu' => 'Visible In Menu',
|
||||
'visible-in-menu' => 'Zichtbaar in menu',
|
||||
'yes' => 'Ja',
|
||||
'no' => 'Nee',
|
||||
'position' => 'Position',
|
||||
'display-mode' => 'Display Mode',
|
||||
'products-and-description' => 'Products and Description',
|
||||
'products-only' => 'Products Only',
|
||||
'description-only' => 'Description Only',
|
||||
'description-and-images' => 'Description and Images',
|
||||
'description' => 'Description',
|
||||
'parent-category' => 'Parent Category',
|
||||
'seo' => 'Search Engine Optimization',
|
||||
'position' => 'Positie',
|
||||
'display-mode' => 'Weergavemodus',
|
||||
'products-and-description' => 'Producten en beschrijving',
|
||||
'products-only' => 'Alleen producten',
|
||||
'description-only' => 'Alleen beschrijving',
|
||||
'description-and-images' => 'Beschrijving en afbeeldingen',
|
||||
'description' => 'Beschrijving',
|
||||
'parent-category' => 'Bovenliggende categorie',
|
||||
'seo' => 'zoek machine optimalisatie',
|
||||
'slug' => 'Slug',
|
||||
'meta_title' => 'Meta Title',
|
||||
'meta_description' => 'Meta Description',
|
||||
'meta_title' => 'Metatitel',
|
||||
'meta_description' => 'Meta omschrijving',
|
||||
'meta_keywords' => 'Meta trefwoorden',
|
||||
'image' => 'Afbeelding',
|
||||
'filterable-attributes' => 'Filterable Attributes',
|
||||
'attributes' => 'Attributes',
|
||||
'filterable-attributes' => 'Filtreerbare kenmerken',
|
||||
'attributes' => 'Attributen',
|
||||
]
|
||||
],
|
||||
|
||||
|
|
@ -649,32 +655,32 @@ return [
|
|||
'tax-rates' => [
|
||||
'title' => 'BTW-tarieven',
|
||||
'add-title' => 'BTW toevoegen',
|
||||
'edit-title' => 'Edit Tax Rate',
|
||||
'save-btn-title' => 'Save Tax Rate',
|
||||
'general' => 'Tax Rate',
|
||||
'identifier' => 'Identifier',
|
||||
'is_zip' => 'Enable Zip Range',
|
||||
'zip_from' => 'Zip From',
|
||||
'edit-title' => 'Btw-tarief bewerken',
|
||||
'save-btn-title' => 'Belastingtarief opslaan',
|
||||
'general' => 'Belastingtarief',
|
||||
'identifier' => 'Identificatie',
|
||||
'is_zip' => 'Zip-bereik inschakelen',
|
||||
'zip_from' => 'Zip van',
|
||||
'zip_to' => 'Zip To',
|
||||
'state' => 'Staat/Provincie',
|
||||
'select-state' => 'Select a region, state or province.',
|
||||
'select-state' => 'Selecteer een regio, staat of provincie.',
|
||||
'country' => 'Land',
|
||||
'tax_rate' => 'Rate',
|
||||
'tax_rate' => 'Tarief',
|
||||
'edit' => [
|
||||
'title' => 'Edit Tax Rate',
|
||||
'edit-button-title' => 'Edit Rate'
|
||||
'title' => 'Btw-tarief bewerken',
|
||||
'edit-button-title' => 'Tarief bewerken'
|
||||
],
|
||||
'zip_code' => 'Zip Code',
|
||||
'is_zip' => 'Enable Zip Range',
|
||||
'zip_code' => 'Postcode',
|
||||
'is_zip' => 'Zip-bereik inschakelen',
|
||||
],
|
||||
|
||||
'sales' => [
|
||||
'shipping-method' => [
|
||||
'title' => 'Shipping Methods',
|
||||
'title' => 'Verzendmethoden',
|
||||
'save-btn-title' => 'Opslaan',
|
||||
'description' => 'Description',
|
||||
'active' => 'Actief',
|
||||
'status' => 'Status'
|
||||
'status' => 'Toestand'
|
||||
]
|
||||
]
|
||||
],
|
||||
|
|
@ -684,6 +690,7 @@ return [
|
|||
'title' => 'Landinstellingen',
|
||||
'add-title' => 'Landinstelling toevoegen',
|
||||
'edit-title' => 'Landinstelling wijzigen',
|
||||
'add-title' => 'Landinstelling toevoegen',
|
||||
'save-btn-title' => 'Landinstelling opslaan',
|
||||
'general' => 'Algemeen',
|
||||
'code' => 'Code',
|
||||
|
|
@ -725,8 +732,8 @@ return [
|
|||
'source_currency' => 'Valuta bron',
|
||||
'target_currency' => 'Valuta doel',
|
||||
'rate' => 'Tarief',
|
||||
'exchange-class-not-found' => ':service exchange rate class not found',
|
||||
'update-rates' => 'Update rates using :service',
|
||||
'exchange-class-not-found' => ':service wisselkoersklasse niet gevonden',
|
||||
'update-rates' => 'Tarieven bijwerken',
|
||||
'create-success' => 'Wisselkoers succesvol aangemaakt.',
|
||||
'update-success' => 'Wisselkoers succesvol bijgewerkt.',
|
||||
'delete-success' => 'Wisselkoers succesvol verwijderd.',
|
||||
|
|
@ -741,8 +748,8 @@ return [
|
|||
'code' => 'Code',
|
||||
'name' => 'Naam',
|
||||
'description' => 'Omschrijving',
|
||||
'source-is-active' => 'Source is Active',
|
||||
'contact-info' => 'Contact Information',
|
||||
'source-is-active' => 'Bron is actief',
|
||||
'contact-info' => 'Contactgegevens',
|
||||
'contact_name' => 'Naam',
|
||||
'contact_email' => 'Email',
|
||||
'contact_number' => 'Contact nummer',
|
||||
|
|
@ -757,10 +764,10 @@ return [
|
|||
'latitude' => 'Latitude',
|
||||
'longitude' => 'Longitude',
|
||||
'status' => 'Status',
|
||||
'create-success' => 'Inventory source created successfully.',
|
||||
'update-success' => 'Inventory source updated successfully.',
|
||||
'delete-success' => 'Inventory source deleted successfully.',
|
||||
'last-delete-error' => 'At least one Inventory source is required.',
|
||||
'create-success' => 'Voorraadbron succesvol aangemaakt.',
|
||||
'update-success' => 'Voorraadbron succesvol bijgewerkt.',
|
||||
'delete-success' => 'Voorraadbron verwijderd.',
|
||||
'last-delete-error' => 'Er is ten minste één voorraadbron vereist.',
|
||||
],
|
||||
'channels' => [
|
||||
'title' => 'Kanalen',
|
||||
|
|
@ -772,16 +779,16 @@ return [
|
|||
'name' => 'Naam',
|
||||
'description' => 'Omschrijving',
|
||||
'hostname' => 'Hostnaam',
|
||||
'currencies-and-locales' => 'Currencies and Locales',
|
||||
'currencies-and-locales' => 'Valuta en landinstellingen',
|
||||
'locales' => 'Landinstellingen',
|
||||
'default-locale' => 'Default Locale',
|
||||
'default-locale' => 'Standaardlocale',
|
||||
'currencies' => 'Valuta\'s',
|
||||
'base-currency' => 'Standaard valuta',
|
||||
'root-category' => 'Hoofdcategorie',
|
||||
'inventory_sources' => 'Standaard bron',
|
||||
'design' => 'Design',
|
||||
'design' => 'Ontwerp',
|
||||
'theme' => 'Thema',
|
||||
'home_page_content' => 'Home Page Content',
|
||||
'home_page_content' => 'Startpagina-inhoud',
|
||||
'footer_content' => 'Onderschrift inhoud',
|
||||
'logo' => 'Logo',
|
||||
'favicon' => 'Favicon',
|
||||
|
|
@ -806,12 +813,12 @@ return [
|
|||
'image' => 'Afbeelding',
|
||||
'content' => 'Inhoud',
|
||||
'channels' => 'Kanaal',
|
||||
'created-success' => 'Slider item created successfully',
|
||||
'created-fault' => 'Error in creating slider item',
|
||||
'update-success' => 'Slider item successfully updated',
|
||||
'update-fail' => 'Slider cannot be updated',
|
||||
'delete-success' => 'Cannot delete last llider item',
|
||||
'delete-fail' => 'Slider item successfully deleted'
|
||||
'created-success' => 'Slideritem met succes gemaakt',
|
||||
'created-fault' => 'Fout bij het maken van een schuifitem',
|
||||
'update-success' => 'Schuifitem is bijgewerkt',
|
||||
'update-fail' => 'Schuifregelaar kan niet worden bijgewerkt',
|
||||
'delete-success' => 'Kan laatste llider-item niet verwijderen',
|
||||
'delete-fail' => 'Schuifitem is verwijderd'
|
||||
],
|
||||
|
||||
'tax-categories' => [
|
||||
|
|
@ -824,45 +831,45 @@ return [
|
|||
'name' => 'Naam',
|
||||
'code' => 'Code',
|
||||
'description' => 'Omschrijving',
|
||||
'select-taxrates' => 'Select Tax Rates',
|
||||
'select-taxrates' => 'Selecteer Belastingtarieven',
|
||||
'edit' => [
|
||||
'title' => 'Edit Tax Category',
|
||||
'edit-button-title' => 'Edit Tax Category'
|
||||
'title' => 'Belastingcategorie bewerken',
|
||||
'edit-button-title' => 'Belastingcategorie bewerken'
|
||||
],
|
||||
'create-success' => 'New Tax Category Created',
|
||||
'create-error' => 'Error, While Creating Tax Category',
|
||||
'update-success' => 'Successfully Updated Tax Category',
|
||||
'update-error' => 'Error While Updating Tax Category',
|
||||
'atleast-one' => 'Cannot Delete The Last Tax Category',
|
||||
'delete' => 'Tax Category Successfully Deleted'
|
||||
'create-success' => 'Nieuwe belastingcategorie gemaakt',
|
||||
'create-error' => 'Fout bij het maken van belastingcategorie',
|
||||
'update-success' => 'Belastingcategorie is bijgewerkt',
|
||||
'update-error' => 'Fout bij bijwerken van belastingcategorie',
|
||||
'atleast-one' => 'Kan de laatste belastingcategorie niet verwijderen',
|
||||
'delete' => 'Belastingcategorie is verwijderd'
|
||||
],
|
||||
|
||||
'tax-rates' => [
|
||||
'title' => 'BTW-tarieven',
|
||||
'add-title' => 'Create Tax Rate',
|
||||
'edit-title' => 'Edit Tax Rate',
|
||||
'save-btn-title' => 'Save Tax Rate',
|
||||
'general' => 'Tax Rate',
|
||||
'identifier' => 'Identifier',
|
||||
'is_zip' => 'Enable Zip Range',
|
||||
'zip_from' => 'Zip From',
|
||||
'add-title' => 'Maak belastingtarief',
|
||||
'edit-title' => 'Btw-tarief bewerken',
|
||||
'save-btn-title' => 'Belastingtarief opslaan',
|
||||
'general' => 'Belastingtarief',
|
||||
'identifier' => 'Identificatie',
|
||||
'is_zip' => 'Zip-bereik inschakelen',
|
||||
'zip_from' => 'Zip van',
|
||||
'zip_to' => 'Zip To',
|
||||
'state' => 'Staat/Provincie',
|
||||
'select-state' => 'Select a region, state or province.',
|
||||
'select-state' => 'Selecteer een regio, staat of provincie.',
|
||||
'country' => 'Land',
|
||||
'tax_rate' => 'Rate',
|
||||
'tax_rate' => 'Tarief',
|
||||
'edit' => [
|
||||
'title' => 'Edit Tax Rate',
|
||||
'edit-button-title' => 'Edit Rate'
|
||||
'title' => 'Btw-tarief bewerken',
|
||||
'edit-button-title' => 'Tarief bewerken'
|
||||
],
|
||||
'zip_code' => 'Postcode',
|
||||
'is_zip' => 'Enable Zip Range',
|
||||
'is_zip' => 'Zip-bereik inschakelen',
|
||||
'create-success' => 'Belastingtarief succesvol aangemaakt',
|
||||
'create-error' => 'Cannot Create Tax Rate',
|
||||
'update-success' => 'Tax Rate Updated Successfully',
|
||||
'update-error' => 'Error! Tax Rate Cannot Be Updated',
|
||||
'create-error' => 'Kan geen belastingtarief maken',
|
||||
'update-success' => 'Belastingtarief succesvol bijgewerkt',
|
||||
'update-error' => 'Fout! Belastingtarief kan niet worden bijgewerkt',
|
||||
'delete' => 'Het BTW-tarief is verwijderd',
|
||||
'atleast-one' => 'Cannot Delete Last Tax Rate'
|
||||
'atleast-one' => 'Kan laatste belastingtarief niet verwijderen'
|
||||
],
|
||||
'development' => [
|
||||
'title' => 'Ontwikkeling',
|
||||
|
|
@ -873,9 +880,9 @@ return [
|
|||
'groups' =>[
|
||||
'add-title' => 'Groep toevoegen',
|
||||
'edit-title' => 'Groep wijzigen',
|
||||
'save-btn-title' => 'Save Group',
|
||||
'save-btn-title' => 'Groep opslaan',
|
||||
'title' => 'Groepen',
|
||||
'save-btn-title' => 'Save Group',
|
||||
'save-btn-title' => 'Groep opslaan',
|
||||
'code' => 'Code',
|
||||
'name' => 'Naam',
|
||||
'is_user_defined' => 'Door de gebruiker gedefinieerd',
|
||||
|
|
@ -885,13 +892,13 @@ return [
|
|||
'addresses' => [
|
||||
'title' => ':customer_name\'s Addresses List',
|
||||
'vat_id' => 'BTW nummer',
|
||||
'create-title' => 'Create Customer\'s Address',
|
||||
'edit-title' => 'Update Customer\'s Address',
|
||||
'title-orders' => ':customer_name\'s Orders List',
|
||||
'address-list' => 'Address\'s List',
|
||||
'order-list' => 'Order\'s List',
|
||||
'address-id' => 'Address ID',
|
||||
'address-1' => 'Address 1',
|
||||
'create-title' => 'Maak het adres van de klant',
|
||||
'edit-title' => 'Werk het adres van de klant bij',
|
||||
'title-orders' => ':customer_name van de klant',
|
||||
'address-list' => 'Adreslijst',
|
||||
'order-list' => 'Lijst van de bestelling',
|
||||
'address-id' => 'Adres ID',
|
||||
'address-1' => 'Adres 1',
|
||||
'city' => 'Woonplaats',
|
||||
'state-name' => 'Staat',
|
||||
'country-name' => 'Land',
|
||||
|
|
@ -905,18 +912,18 @@ return [
|
|||
'create-btn-title' => 'Adres toevoegen',
|
||||
'save-btn-title' => 'Bewaar adres',
|
||||
'general' => 'Algemeen',
|
||||
'success-create' => 'Success: Customer address created successfully.',
|
||||
'success-update' => 'Success: Customer address updated successfully.',
|
||||
'success-delete' => 'Success: Customer address deleted successfully.',
|
||||
'success-mass-delete' => 'Success: selected addresses deleted successfully.',
|
||||
'error-create' => 'Error: Customer address not created.',
|
||||
'success-create' => 'Success: Klantadres succesvol aangemaakt.',
|
||||
'success-update' => 'Success: Klantadres succesvol bijgewerkt.',
|
||||
'success-delete' => 'Success: Klantadres succesvol verwijderd.',
|
||||
'success-mass-delete' => 'Success: geselecteerde adressen zijn succesvol verwijderd.',
|
||||
'error-create' => 'Error: Klantadres niet aangemaakt.',
|
||||
],
|
||||
|
||||
'note' => [
|
||||
'title' => 'Add Note',
|
||||
'save-note' => 'Save Note',
|
||||
'enter-note' => 'Enter Note',
|
||||
'help-title' => 'Add Note On This Customer'
|
||||
'title' => 'Notitie toevoegen',
|
||||
'save-note' => 'Notitie opslaan',
|
||||
'enter-note' => 'Notitie invoeren',
|
||||
'help-title' => 'Opmerking over deze klant toevoegen'
|
||||
],
|
||||
|
||||
'customers' => [
|
||||
|
|
@ -938,26 +945,27 @@ return [
|
|||
'other' => 'Anders',
|
||||
'male' => 'Man',
|
||||
'female' => 'Vrouw',
|
||||
'group-default' => 'Cannot delete the default group.',
|
||||
'phone' => 'Telefoon',
|
||||
'group-default' => 'Kan de standaardgroep niet verwijderen.',
|
||||
'edit-help-title' => 'Wijzig klant',
|
||||
'delete-help-title' => 'Klant verwijderen',
|
||||
'addresses' => 'Addresses',
|
||||
'mass-destroy-success' => 'Customers deleted successfully',
|
||||
'mass-update-success' => 'Customers updated successfully',
|
||||
'status' => 'Status',
|
||||
'mass-destroy-success' => 'Klanten zijn succesvol verwijderd',
|
||||
'mass-update-success' => 'Klanten succesvol bijgewerkt',
|
||||
'status' => 'Toestand',
|
||||
'active' => 'Actief',
|
||||
'inactive' => 'Niet geactiveerd'
|
||||
],
|
||||
|
||||
'reviews' => [
|
||||
'title' => 'Reviews',
|
||||
'edit-title' => 'Edit Review',
|
||||
'rating' => 'Rating',
|
||||
'status' => 'Status',
|
||||
'comment' => 'Comment',
|
||||
'pending' => 'Pending',
|
||||
'approved' => 'Approve',
|
||||
'disapproved' => 'Disapprove'
|
||||
'title' => 'Recensies',
|
||||
'edit-title' => 'Review bewerken',
|
||||
'rating' => 'Beoordeling',
|
||||
'status' => 'Toestand',
|
||||
'comment' => 'Commentaar',
|
||||
'pending' => 'In afwachting',
|
||||
'approved' => 'Goedkeuren',
|
||||
'disapproved' => 'Afkeuren'
|
||||
],
|
||||
|
||||
'subscribers' => [
|
||||
|
|
@ -975,167 +983,167 @@ return [
|
|||
|
||||
'promotions' => [
|
||||
'cart-rules' => [
|
||||
'title' => 'Cart Rules',
|
||||
'add-title' => 'Add Cart Rule',
|
||||
'edit-title' => 'Edit Cart Rule',
|
||||
'save-btn-title' => 'Save Cart Rule',
|
||||
'rule-information' => 'Rule Information',
|
||||
'title' => 'Winkelwagenregels',
|
||||
'add-title' => 'Winkelwagenregel toevoegen',
|
||||
'edit-title' => 'Winkelwagenregel bewerken',
|
||||
'save-btn-title' => 'Bewaar winkelwagen regel',
|
||||
'rule-information' => 'Regelinformatie',
|
||||
'name' => 'Naam',
|
||||
'description' => 'Description',
|
||||
'status' => 'Status',
|
||||
'is-active' => 'Cart Rule is Active',
|
||||
'description' => 'Beschrijving',
|
||||
'status' => 'Toestand',
|
||||
'is-active' => 'Winkelwagenregel is actief',
|
||||
'channels' => 'Kanalen',
|
||||
'customer-groups' => 'Customer Groups',
|
||||
'coupon-type' => 'Coupon Type',
|
||||
'no-coupon' => 'No Coupon',
|
||||
'specific-coupon' => 'Specific Coupon',
|
||||
'auto-generate-coupon' => 'Auto Generate Coupon',
|
||||
'customer-groups' => 'Klantengroepen',
|
||||
'coupon-type' => 'Coupontype',
|
||||
'no-coupon' => 'Geen coupon',
|
||||
'specific-coupon' => 'Specifieke coupon',
|
||||
'auto-generate-coupon' => 'Coupon automatisch genereren',
|
||||
'no' => 'Nee',
|
||||
'yes' => 'Ja',
|
||||
'coupon-code' => 'Coupon Code',
|
||||
'uses-per-coupon' => 'Uses Per Coupon',
|
||||
'uses-per-customer' => 'Uses Per Customer',
|
||||
'uses-per-customer-control-info' => 'Will be used for logged in customers only.',
|
||||
'from' => 'From',
|
||||
'to' => 'To',
|
||||
'priority' => 'Priority',
|
||||
'conditions' => 'Conditions',
|
||||
'condition-type' => 'Condition Type',
|
||||
'all-conditions-true' => 'All Conditions are True',
|
||||
'any-condition-true' => 'Any Condition is True',
|
||||
'add-condition' => 'Add Condition',
|
||||
'choose-condition-to-add' => 'Choose a condition to add',
|
||||
'cart-attribute' => 'Cart Attribute',
|
||||
'coupon-code' => 'coupon code',
|
||||
'uses-per-coupon' => 'Gebruikt per coupon',
|
||||
'uses-per-customer' => 'Gebruik per klant',
|
||||
'uses-per-customer-control-info' => 'Wordt alleen gebruikt voor ingelogde klanten.',
|
||||
'from' => 'Van',
|
||||
'to' => 'Naar',
|
||||
'priority' => 'Prioriteit',
|
||||
'conditions' => 'Voorwaarden',
|
||||
'condition-type' => 'Conditietype',
|
||||
'all-conditions-true' => 'Alle voorwaarden zijn waar',
|
||||
'any-condition-true' => 'Elke voorwaarde is waar',
|
||||
'add-condition' => 'Conditie toevoegen',
|
||||
'choose-condition-to-add' => 'Conditie toevoegen',
|
||||
'cart-attribute' => 'Winkelwagenattribuut',
|
||||
'subtotal' => 'Subtotaal',
|
||||
'total-items-qty' => 'Total Items Qty',
|
||||
'total-weight' => 'Total Weight',
|
||||
'total-items-qty' => 'Totaal aantal artikelen',
|
||||
'total-weight' => 'Totale gewicht',
|
||||
'payment-method' => 'Betaalmethode',
|
||||
'shipping-method' => 'Shipping Method',
|
||||
'shipping-postcode' => 'Shipping Zip/Postcode',
|
||||
'shipping-state' => 'Shipping State',
|
||||
'shipping-country' => 'Shipping Country',
|
||||
'cart-item-attribute' => 'Cart Item Attribute',
|
||||
'price-in-cart' => 'Price in Cart',
|
||||
'qty-in-cart' => 'Qty in Cart',
|
||||
'product-attribute' => 'Product Attribute',
|
||||
'attribute-name-children-only' => ':attribute_name (Children Only)',
|
||||
'attribute-name-parent-only' => ':attribute_name (Parent Only)',
|
||||
'is-equal-to' => 'Is equal to',
|
||||
'is-not-equal-to' => 'Is not equal to',
|
||||
'equals-or-greater-than' => 'Equals or greater than',
|
||||
'equals-or-less-than' => 'Equals or less than',
|
||||
'greater-than' => 'Greater than',
|
||||
'less-than' => 'Less than',
|
||||
'contain' => 'Contain',
|
||||
'contains' => 'Contains',
|
||||
'does-not-contain' => 'Does not contain',
|
||||
'shipping-method' => 'Verzendmethode',
|
||||
'shipping-postcode' => 'Verzenden Zip / Postcode',
|
||||
'shipping-state' => 'Verzenden Zip / Postcode',
|
||||
'shipping-country' => 'Land van verzending',
|
||||
'cart-item-attribute' => 'Land van verzending',
|
||||
'price-in-cart' => 'Prijs in winkelwagen',
|
||||
'qty-in-cart' => 'Aantal in winkelwagen',
|
||||
'product-attribute' => 'Productkenmerk',
|
||||
'attribute-name-children-only' => ':attribute_name (alleen kinderen)',
|
||||
'attribute-name-parent-only' => ':attribute_name (alleen voor ouders)',
|
||||
'is-equal-to' => 'Is gelijk aan',
|
||||
'is-not-equal-to' => 'Is niet gelijk aan',
|
||||
'equals-or-greater-than' => 'Is gelijk aan of groter dan',
|
||||
'equals-or-less-than' => 'Is gelijk aan of kleiner dan',
|
||||
'greater-than' => 'Groter dan',
|
||||
'less-than' => 'Minder dan',
|
||||
'contain' => 'Bevatten',
|
||||
'contains' => 'Bevat',
|
||||
'does-not-contain' => 'Bevat geen',
|
||||
'actions' => 'Acties',
|
||||
'action-type' => 'Action Type',
|
||||
'percentage-product-price' => 'Percentage of Product Price',
|
||||
'fixed-amount' => 'Fixed Amount',
|
||||
'fixed-amount-whole-cart' => 'Fixed Amount to Whole Cart',
|
||||
'buy-x-get-y-free' => 'Buy X Get Y Free',
|
||||
'discount-amount' => 'Discount Amount',
|
||||
'discount-quantity' => 'Maximum Quantity Allowed to be Discounted',
|
||||
'discount-step' => 'Buy X Quantity',
|
||||
'free-shipping' => 'Free Shipping',
|
||||
'apply-to-shipping' => 'Apply to Shipping',
|
||||
'coupon-codes' => 'Coupon Codes',
|
||||
'coupon-qty' => 'Coupon Qty',
|
||||
'code-length' => 'Code Length',
|
||||
'code-format' => 'Code Format',
|
||||
'alphanumeric' => 'Alphanumeric',
|
||||
'alphabetical' => 'Alphabetical',
|
||||
'numeric' => 'Numeric',
|
||||
'code-prefix' => 'Code Prefix',
|
||||
'code-suffix' => 'Code Suffix',
|
||||
'generate' => 'Generate',
|
||||
'cart-rule-not-defind-error' => 'Cart rule is not defined',
|
||||
'mass-delete-success' => 'All the selected coupons have been deleted successfully.',
|
||||
'end-other-rules' => 'End Other Rules',
|
||||
'children-categories' => 'Categories (Children Only)',
|
||||
'parent-categories' => 'Categories (Parent Only)',
|
||||
'action-type' => 'actie type',
|
||||
'percentage-product-price' => 'Percentage van productprijs',
|
||||
'fixed-amount' => 'Vaste hoeveelheid',
|
||||
'fixed-amount-whole-cart' => 'Vast bedrag voor hele winkelwagen',
|
||||
'buy-x-get-y-free' => 'Koop X Krijg Y gratis',
|
||||
'discount-amount' => 'Korting hoeveelheid',
|
||||
'discount-quantity' => 'Maximaal toegestane hoeveelheid',
|
||||
'discount-step' => 'Koop X hoeveelheid',
|
||||
'free-shipping' => 'Geen verzendkosten',
|
||||
'apply-to-shipping' => 'Toepassen op verzending',
|
||||
'coupon-codes' => 'Kortingscodes',
|
||||
'coupon-qty' => 'Aantal coupons',
|
||||
'code-length' => 'Code Lengte',
|
||||
'code-format' => 'Code formaat',
|
||||
'alphanumeric' => 'Alfanumeriek',
|
||||
'alphabetical' => 'Alfabetisch',
|
||||
'numeric' => 'Numeriek',
|
||||
'code-prefix' => 'Codevoorvoegsel',
|
||||
'code-suffix' => 'Code achtervoegsel',
|
||||
'generate' => 'Genereer',
|
||||
'cart-rule-not-defind-error' => 'De winkelwagenregel is niet gedefinieerd',
|
||||
'mass-delete-success' => 'Alle geselecteerde coupons zijn succesvol verwijderd.',
|
||||
'end-other-rules' => 'Beëindig andere regels',
|
||||
'children-categories' => 'Categorieën (Alleen kinderen)',
|
||||
'parent-categories' => 'Categorieën (Alleen ouder)',
|
||||
'categories' => 'Categorieën',
|
||||
'attribute_family' => 'Attribute Family'
|
||||
'attribute_family' => 'Kenmerk Familie'
|
||||
],
|
||||
|
||||
'catalog-rules' => [
|
||||
'title' => 'Catalog Rules',
|
||||
'add-title' => 'Add Catalog Rule',
|
||||
'edit-title' => 'Edit Catalog Rule',
|
||||
'save-btn-title' => 'Save Catalog Rule',
|
||||
'rule-information' => 'Rule Information',
|
||||
'title' => 'Catalogusregels',
|
||||
'add-title' => 'Catalogusregel toevoegen',
|
||||
'edit-title' => 'Catalogusregel bewerken',
|
||||
'save-btn-title' => 'Bewaar catalogusregel',
|
||||
'rule-information' => 'Regelinformatie',
|
||||
'name' => 'Naam',
|
||||
'description' => 'Description',
|
||||
'status' => 'Status',
|
||||
'is-active' => 'Catalog Rule is Active',
|
||||
'description' => 'Beschrijving',
|
||||
'status' => 'Toestand',
|
||||
'is-active' => 'Catalogusregel is actief',
|
||||
'channels' => 'Kanalen',
|
||||
'customer-groups' => 'Customer Groups',
|
||||
'customer-groups' => 'Klantengroepen',
|
||||
'no' => 'Nee',
|
||||
'yes' => 'Ja',
|
||||
'from' => 'From',
|
||||
'to' => 'To',
|
||||
'priority' => 'Priority',
|
||||
'conditions' => 'Conditions',
|
||||
'condition-type' => 'Condition Type',
|
||||
'all-conditions-true' => 'All Conditions are True',
|
||||
'any-condition-true' => 'Any Condition is True',
|
||||
'add-condition' => 'Add Condition',
|
||||
'choose-condition-to-add' => 'Choose a condition to add',
|
||||
'product-attribute' => 'Product Attribute',
|
||||
'attribute-name-children-only' => ':attribute_name (Children Only)',
|
||||
'attribute-name-parent-only' => ':attribute_name (Parent Only)',
|
||||
'is-equal-to' => 'Is equal to',
|
||||
'is-not-equal-to' => 'Is not equal to',
|
||||
'equals-or-greater-than' => 'Equals or greater than',
|
||||
'equals-or-less-than' => 'Equals or less than',
|
||||
'greater-than' => 'Greater than',
|
||||
'less-than' => 'Less than',
|
||||
'contain' => 'Contain',
|
||||
'contains' => 'Contains',
|
||||
'does-not-contain' => 'Does not contain',
|
||||
'from' => 'Van',
|
||||
'to' => 'Naar',
|
||||
'priority' => 'Prioriteit',
|
||||
'conditions' => 'Voorwaarden',
|
||||
'condition-type' => 'Conditietype',
|
||||
'all-conditions-true' => 'Alle voorwaarden zijn waar',
|
||||
'any-condition-true' => 'Elke voorwaarde is waar',
|
||||
'add-condition' => 'Conditie toevoegen',
|
||||
'choose-condition-to-add' => 'Kies een voorwaarde om toe te voegen',
|
||||
'product-attribute' => 'Productkenmerk',
|
||||
'attribute-name-children-only' => ':attribute_name (Alleen kinderen)',
|
||||
'attribute-name-parent-only' => ':attribute_name (Alleen ouder)',
|
||||
'is-equal-to' => 'Is gelijk aan',
|
||||
'is-not-equal-to' => 'Is niet gelijk aan',
|
||||
'equals-or-greater-than' => 'Is gelijk aan of groter dan',
|
||||
'equals-or-less-than' => 'Is gelijk aan of kleiner dan',
|
||||
'greater-than' => 'Groter dan',
|
||||
'less-than' => 'Minder dan',
|
||||
'contain' => 'Minder dan',
|
||||
'contains' => 'Bevat',
|
||||
'does-not-contain' => 'Bevat geen',
|
||||
'actions' => 'Acties',
|
||||
'action-type' => 'Action Type',
|
||||
'percentage-product-price' => 'Percentage of Product Price',
|
||||
'fixed-amount' => 'Fixed Amount',
|
||||
'fixed-amount-whole-cart' => 'Fixed Amount to Whole Catalog',
|
||||
'buy-x-get-y-free' => 'Buy X Get Y Free',
|
||||
'discount-amount' => 'Discount Amount',
|
||||
'mass-delete-success' => 'All the selected index of coupons have been deleted successfully.',
|
||||
'end-other-rules' => 'End Other Rules',
|
||||
'action-type' => 'actie type',
|
||||
'percentage-product-price' => 'Percentage van productprijs',
|
||||
'fixed-amount' => 'Vaste hoeveelheid',
|
||||
'fixed-amount-whole-cart' => 'Vast bedrag voor hele catalogus',
|
||||
'buy-x-get-y-free' => 'Koop X Krijg Y gratis',
|
||||
'discount-amount' => 'Korting hoeveelheid',
|
||||
'mass-delete-success' => 'Alle geselecteerde indexcoupons zijn met succes verwijderd.',
|
||||
'end-other-rules' => 'Beëindig andere regels',
|
||||
'categories' => 'Categorieën',
|
||||
'attribute_family' => 'Attribute Family'
|
||||
'attribute_family' => 'Kenmerk Familie'
|
||||
]
|
||||
],
|
||||
|
||||
'error' => [
|
||||
'go-to-home' => 'GO TO HOME',
|
||||
'in-maitainace' => 'In Maintenance',
|
||||
'right-back' => 'Be Right Back',
|
||||
'go-to-home' => 'GA NAAR HUIS',
|
||||
'in-maitainace' => 'In onderhoud',
|
||||
'right-back' => 'Ben zo terug',
|
||||
|
||||
'404' => [
|
||||
'page-title' => '404 Page not found',
|
||||
'page-title' => '404 Pagina niet gevonden',
|
||||
'name' => '404',
|
||||
'title' => 'Page Not found',
|
||||
'message' => 'The Page you are looking for does not exist or have been moved. Navigate using sidemenu.'
|
||||
'title' => 'Pagina niet gevonden',
|
||||
'message' => 'De pagina die u zoekt bestaat niet of is verplaatst. Navigeer met behulp van zijmenu.'
|
||||
],
|
||||
'403' => [
|
||||
'page-title' => '403 forbidden Error',
|
||||
'page-title' => '403 verboden fout',
|
||||
'name' => '403',
|
||||
'title' => 'Forbidden error',
|
||||
'message' => 'You do not have permission to access this page'
|
||||
'title' => 'Verboden fout',
|
||||
'message' => 'U heeft geen toestemming om deze pagina te openen'
|
||||
],
|
||||
'500' => [
|
||||
'page-title' => '500 Internal Server Error',
|
||||
'page-title' => '500 Interne Server Fout',
|
||||
'name' => '500',
|
||||
'title' => 'Internal Server Error',
|
||||
'message' => 'The Server Encountered an internal error.'
|
||||
'title' => 'Interne Server Fout',
|
||||
'message' => 'De server heeft een interne fout aangetroffen.'
|
||||
],
|
||||
'401' => [
|
||||
'page-title' => '401 Unauthorized Error',
|
||||
'page-title' => '401 Ongeautoriseerde fout',
|
||||
'name' => '401',
|
||||
'title' => 'Unauthorized Error',
|
||||
'message' => 'The request has not been applied because it lacks valid authentication credentials for the target resource.'
|
||||
'title' => 'Ongeautoriseerde fout',
|
||||
'message' => 'Het verzoek is niet toegepast omdat het geen geldige verificatiereferenties heeft voor de doelresource.'
|
||||
],
|
||||
],
|
||||
|
||||
|
|
@ -1148,73 +1156,73 @@ return [
|
|||
'csv' => 'CSV',
|
||||
'xls' => 'XLS',
|
||||
'file' => 'File',
|
||||
'upload-error' => 'The file must be a file of type: xls, xlsx, csv.',
|
||||
'duplicate-error' => 'Identifier must be unique, duplicate identifier :identifier at row :position.',
|
||||
'enough-row-error' => 'file has not enough rows',
|
||||
'allowed-type' => 'Allowed Type :',
|
||||
'upload-error' => 'Het bestand moet een bestandstype zijn: xls, xlsx, csv.',
|
||||
'duplicate-error' => 'Identifier moet uniek zijn, dubbele identifier :identifier op rij :position.',
|
||||
'enough-row-error' => 'bestand heeft niet genoeg rijen',
|
||||
'allowed-type' => 'Toegestaan type:',
|
||||
'file-type' => 'csv, xls, xlsx.',
|
||||
'no-records' => 'Nothing to export',
|
||||
'illegal-format' => 'Error! This type of format is either not supported or its illegal format'
|
||||
'no-records' => 'Niets om te exporteren',
|
||||
'illegal-format' => 'Fout! Dit type formaat wordt niet ondersteund of het is illegaal'
|
||||
],
|
||||
|
||||
'cms' => [
|
||||
'pages' => [
|
||||
'general' => 'Algemeen',
|
||||
'seo' => 'SEO',
|
||||
'pages' => 'Pages',
|
||||
'title' => 'Pages',
|
||||
'pages' => 'Pagina\'s',
|
||||
'title' => 'Pagina\'s',
|
||||
'add-title' => 'Pagina toevoegen',
|
||||
'content' => 'Content',
|
||||
'url-key' => 'URL Key',
|
||||
'content' => 'Inhoud',
|
||||
'url-key' => 'URL Sleutel',
|
||||
'channel' => 'Kanalen',
|
||||
'locale' => 'Landinstelling',
|
||||
'create-btn-title' => 'Pagina opslaan',
|
||||
'edit-title' => 'Pagina aanpassen',
|
||||
'edit-btn-title' => 'Save Page',
|
||||
'edit-btn-title' => 'Sla pagina op',
|
||||
'create-success' => 'Pagina succesvol aangemaakt.',
|
||||
'create-partial' => 'Some of the pages requested already exists.',
|
||||
'create-failure' => 'All pages requested already exists.',
|
||||
'create-partial' => 'Sommige van de opgevraagde pagina\'s bestaan al.',
|
||||
'create-failure' => 'Alle opgevraagde pagina\'s bestaan al.',
|
||||
'update-success' => 'Pagina succesvol bijgewerkt.',
|
||||
'update-failure' => 'Pagina kan niet worden bijgewerkt.',
|
||||
'page-title' => 'Pagina titel',
|
||||
'layout' => 'Layout',
|
||||
'layout' => 'Indeling',
|
||||
'meta_keywords' => 'Meta trefwoorden',
|
||||
'meta_description' => 'Meta omschrijving',
|
||||
'meta_title' => 'Meta Titel',
|
||||
'delete-success' => 'CMS page deleted successfully',
|
||||
'delete-failure' => 'CMS page cannot be deleted',
|
||||
'delete-success' => 'CMS-pagina succesvol verwijderd',
|
||||
'delete-failure' => 'CMS-pagina kan niet worden verwijderd',
|
||||
'preview' => 'Voorbeeld',
|
||||
'one-col' => '<div class="mt-10">Use class: <b>"static-container one-column"</b> for one column layout.</div>',
|
||||
'two-col' => '<div class="mt-10">Use class: <b>"static-container two-column"</b> for two column layout.</div>',
|
||||
'three-col' => '<div class="mt-10">Use class: <b>"static-container three-column"</b> for three column layout.</div>',
|
||||
'one-col' => '<div class="mt-10">Use class: <b>"static-container one-column"</b> voor één kolomlay-out.</div>',
|
||||
'two-col' => '<div class="mt-10">Use class: <b>"static-container two-column"</b> voor lay-out met twee kolommen.</div>',
|
||||
'three-col' => '<div class="mt-10">Use class: <b>"static-container three-column"</b> voor lay-out met drie kolommen.</div>',
|
||||
'helper-classes' => 'Helper Classes'
|
||||
]
|
||||
],
|
||||
|
||||
'response' => [
|
||||
'being-used' => 'This resource :name is getting used in :source',
|
||||
'cannot-delete-default' => 'Cannot delete the default channel',
|
||||
'create-success' => ':name created successfully.',
|
||||
'update-success' => ':name updated successfully.',
|
||||
'delete-success' => ':name deleted successfully.',
|
||||
'delete-failed' => 'Error encountered while deleting :name.',
|
||||
'last-delete-error' => 'At least one :name is required.',
|
||||
'user-define-error' => 'Can not delete system :name',
|
||||
'attribute-error' => ':name is used in configurable products.',
|
||||
'attribute-product-error' => ':name is used in products.',
|
||||
'customer-associate' => ':name can not be deleted because customer is associated with this group.',
|
||||
'currency-delete-error' => 'This currency is set as channel base currency so it can not be deleted.',
|
||||
'upload-success' => ':name uploaded successfully.',
|
||||
'delete-category-root' => 'Cannot delete the root category',
|
||||
'create-root-failure' => 'Category with name root already exists',
|
||||
'cancel-success' => ':name canceled successfully.',
|
||||
'cancel-error' => ':name can not be canceled.',
|
||||
'already-taken' => 'The :name has already been taken.',
|
||||
'order-pending' => 'Cannot delete account because some Order(s) are pending or processing state.'
|
||||
'being-used' => 'Deze bron :name is wennen :source',
|
||||
'cannot-delete-default' => 'Kan het standaardkanaal niet verwijderen',
|
||||
'create-success' => ':name succesvol gemaakt.',
|
||||
'update-success' => ':name succesvol geupdatet.',
|
||||
'delete-success' => ':name met succes verwijderd.',
|
||||
'delete-failed' => 'Er is een fout opgetreden bij het verwijderen :name.',
|
||||
'last-delete-error' => 'Minstens een :name Is benodigd.',
|
||||
'user-define-error' => 'Kan systeem niet verwijderen :name',
|
||||
'attribute-error' => ':name wordt gebruikt in configureerbare producten.',
|
||||
'attribute-product-error' => ':name wordt gebruikt in producten.',
|
||||
'customer-associate' => ':name kan niet worden verwijderd omdat de klant aan deze groep is gekoppeld.',
|
||||
'currency-delete-error' => 'Deze valuta is ingesteld als kanaalbasisvaluta en kan dus niet worden verwijderd.',
|
||||
'upload-success' => ':name succesvol geüpload.',
|
||||
'delete-category-root' => 'Kan de rootcategorie niet verwijderen',
|
||||
'create-root-failure' => 'Er bestaat al een categorie met de naam root',
|
||||
'cancel-success' => ':name succesvol geannuleerd.',
|
||||
'cancel-error' => ':name kan niet worden geannuleerd.',
|
||||
'already-taken' => 'The :name is al bezet.',
|
||||
'order-pending' => 'Kan account niet verwijderen omdat sommige bestelling (en) in behandeling of in behandeling zijn.'
|
||||
],
|
||||
|
||||
'footer' => [
|
||||
'copy-right' => 'Powered by <a href="https://bagisto.com/" target="_blank">Bagisto</a>, A Community Project by <a href="https://webkul.com/" target="_blank">Webkul</a>',
|
||||
'copy-right' => 'Aangedreven door <a href="https://bagisto.com/" target="_blank">Bagisto</a>, Een gemeenschapsproject door <a href="https://webkul.com/" target="_blank">Webkul</a>',
|
||||
],
|
||||
|
||||
'admin' => [
|
||||
|
|
@ -1222,16 +1230,16 @@ return [
|
|||
'email' => 'Email',
|
||||
'notification_label' => 'Notificaties',
|
||||
'notifications' => [
|
||||
'verification' => 'Send verification E-mail',
|
||||
'registration' => 'Send registration E-mail',
|
||||
'customer' => 'Send customer E-mail',
|
||||
'new-order' => 'Send Order Confirmation E-mail',
|
||||
'new-admin' => 'Send Admin Invitation E-mail',
|
||||
'new-invoice' => 'Send Invoice Confirmation E-mail',
|
||||
'new-refund' => 'Send Refund Notification E-mail',
|
||||
'new-shipment' => 'Send Shipment Notification E-mail',
|
||||
'new-inventory-source' => 'Send Inventory Source Notification E-mail',
|
||||
'cancel-order' => 'Send cancel Order Notification E-mail',
|
||||
'verification' => 'Stuur verificatie E-mail',
|
||||
'registration' => 'Verzend registratie E-mail',
|
||||
'customer' => 'Stuur klant e-mail',
|
||||
'new-order' => 'Stuur een e-mail ter bevestiging van de bestelling',
|
||||
'new-admin' => 'Stuur een e-mail met de beheerdersuitnodiging',
|
||||
'new-invoice' => 'Stuur een e-mail ter bevestiging van de factuur',
|
||||
'new-refund' => 'Stuur een terugbetalingsmelding per e-mail',
|
||||
'new-shipment' => 'Verzendbericht per e-mail verzenden',
|
||||
'new-inventory-source' => 'E-mail met bronvermelding voor inventaris verzenden',
|
||||
'cancel-order' => 'Verzenden annuleren Bestellingskennisgeving E-mail',
|
||||
],
|
||||
|
||||
],
|
||||
|
|
@ -1240,11 +1248,11 @@ return [
|
|||
'products' => 'Producten',
|
||||
'guest-checkout' => 'Gast afrekenen',
|
||||
'allow-guest-checkout' => 'Gast afrekenen toestaan',
|
||||
'allow-guest-checkout-hint' => 'Hint: If turned on, this option can be configured for each product specifically.',
|
||||
'review' => 'Review',
|
||||
'allow-guest-checkout-hint' => 'Tip: indien ingeschakeld, kan deze optie specifiek voor elk product worden geconfigureerd.',
|
||||
'review' => 'Recensie',
|
||||
'allow-guest-review' => 'Gastbeoordeling toestaan',
|
||||
'inventory' => 'Voorraad',
|
||||
'stock-options' => 'Stock Options',
|
||||
'stock-options' => 'Aandelenopties',
|
||||
'allow-backorders' => 'Backorders toestaan',
|
||||
'customer' => 'Klant',
|
||||
'settings' => 'Instellingen',
|
||||
|
|
@ -1264,43 +1272,49 @@ return [
|
|||
'title' => 'Titel',
|
||||
'description' => 'Omschrijving',
|
||||
'rate' => 'Tarief',
|
||||
'status' => 'Status',
|
||||
'status' => 'Toestand',
|
||||
'type' => 'Type',
|
||||
'payment-methods' => 'Betaalmethodes',
|
||||
'cash-on-delivery' => 'Rembours',
|
||||
'money-transfer' => 'Overschrijving',
|
||||
'paypal-standard' => 'Paypal Standard',
|
||||
'business-account' => 'Business Account',
|
||||
'business-account' => 'Zakelijk account',
|
||||
'newsletter' => 'Nieuwsbrief',
|
||||
'newsletter-subscription' => 'Abonnement op Nieuwsbrief toestaan',
|
||||
'email' => 'Email verificatie',
|
||||
'email-verification' => 'E-mailverificatie toestaan',
|
||||
'sort_order' => 'Sort Order',
|
||||
'sort_order' => 'sorteervolgorde',
|
||||
'general' => 'Algemeen',
|
||||
'footer' => 'Footer',
|
||||
'footer' => 'Voettekst',
|
||||
'content' => 'Inhoud',
|
||||
'footer-content' => 'Footer Text',
|
||||
'footer-toggle' => 'Toggle footer',
|
||||
'footer-content' => 'Voettekst',
|
||||
'footer-toggle' => 'Voettekst in- / uitschakelen',
|
||||
'locale-options' => 'Eenheid opties',
|
||||
'weight-unit' => 'Gewichtseenheid',
|
||||
'email-settings' => 'Email Settings',
|
||||
'email-sender-name' => 'Email Sender Name',
|
||||
'shop-email-from' => 'Shop Email Address [For sending emails]',
|
||||
'admin-name' => 'Admin Name',
|
||||
'admin-email' => 'Admin Email',
|
||||
'admin-page-limit' => 'Standaarditems per pagina (Admin)',
|
||||
'design' => 'Ontwerp',
|
||||
'admin-logo' => 'Admin Logo',
|
||||
'logo-image' => 'Logo Afbeelding',
|
||||
'credit-max' => 'Customer Credit Max',
|
||||
'credit-max-value' => 'Credit Max Value',
|
||||
'use-credit-max' => 'Use Credit Max',
|
||||
'credit-max' => 'Klantenkrediet Max',
|
||||
'credit-max-value' => 'Maximale kredietwaarde',
|
||||
'use-credit-max' => 'Gebruik krediet max',
|
||||
'order-settings' => 'Bestel instellingen',
|
||||
'orderNumber' => 'Order Number Settings',
|
||||
'order-number-prefix' => 'Order Number Prefix',
|
||||
'order-number-length' => 'Order Number Length',
|
||||
'order-number-suffix' => 'Order Number Suffix',
|
||||
'orderNumber' => 'Instellingen voor bestelnummers',
|
||||
'order-number-prefix' => 'Bestelnummer prefix',
|
||||
'order-number-length' => 'Bestelnummer Lengte',
|
||||
'order-number-suffix' => 'Achtervoegsel bestelnummer',
|
||||
'default' => 'Standaard',
|
||||
'sandbox' => 'Sandbox',
|
||||
'all-channels' => 'Alles',
|
||||
'all-locales' => 'Alles',
|
||||
'invoice-slip-design' => 'Invoice Slip Design',
|
||||
'logo' => 'logo'
|
||||
'logo' => 'logo',
|
||||
'favicon' => 'Favicon'
|
||||
]
|
||||
]
|
||||
];
|
||||
];
|
||||
|
|
|
|||
|
|
@ -1,5 +1,38 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'save' => 'Salvar',
|
||||
'create' => 'Criar',
|
||||
'update' => 'Atualizar',
|
||||
'delete' => 'Excluir',
|
||||
'failed' => 'Falhou',
|
||||
'store' => 'Loja',
|
||||
'image' => 'Imagem',
|
||||
'no result' => 'Nenhum resultado',
|
||||
'product' => 'produtos',
|
||||
'attribute' => 'Atributo',
|
||||
'actions' => 'Ações',
|
||||
'id' => 'ID',
|
||||
'action' => 'açao',
|
||||
'yes' => 'sim',
|
||||
'no' => 'Não',
|
||||
'true' => 'Verdade',
|
||||
'false' => 'Falso',
|
||||
'apply' => 'Aplique',
|
||||
'action' => 'Açao',
|
||||
'label' => 'Rótulo',
|
||||
'name' => 'Nome',
|
||||
'title' => 'Título',
|
||||
'code' => 'Código',
|
||||
'type' => 'Tipo',
|
||||
'required' => 'Requeridos',
|
||||
'unique' => 'Único',
|
||||
'locale-based' => 'Com base na localidade',
|
||||
'channel-based' => 'Baseado em canal',
|
||||
'status' => 'Status',
|
||||
'select-option' => 'Selecionar opção',
|
||||
'category' => 'Categoria',
|
||||
|
||||
'common' => [
|
||||
'no-result-found' => 'Não conseguimos encontrar nenhum registro.',
|
||||
'country' => 'Pais',
|
||||
|
|
@ -7,15 +40,17 @@ return [
|
|||
'true' => 'Verdadeiro',
|
||||
'false' => 'Falso'
|
||||
],
|
||||
|
||||
'layouts' => [
|
||||
'my-account' => 'Minha Conta',
|
||||
'logout' => 'Sair',
|
||||
'visit-shop' => 'Visitar Loja',
|
||||
'dashboard' => 'Dashboard',
|
||||
'dashboard' => 'painel de controle',
|
||||
'sales' => 'Vendas',
|
||||
'orders' => 'Pedido',
|
||||
'shipments' => 'Envíos',
|
||||
'invoices' => 'Faturas',
|
||||
'refunds' => 'Reembolsos',
|
||||
'catalog' => 'Catálogo',
|
||||
'products' => 'Produtos',
|
||||
'categories' => 'Categorias',
|
||||
|
|
@ -29,7 +64,7 @@ return [
|
|||
'settings' => 'Opções',
|
||||
'locales' => 'Idiomas',
|
||||
'currencies' => 'Moedas',
|
||||
'exchange-rates' => 'Impostos de Câmbios',
|
||||
'exchange-rates' => 'Taxas de Câmbios',
|
||||
'inventory-sources' => 'Fontes de Inventários',
|
||||
'channels' => 'Canais (Lojas)',
|
||||
'users' => 'Usuários',
|
||||
|
|
@ -39,8 +74,10 @@ return [
|
|||
'tax-categories' => 'Categorias de Impostos',
|
||||
'tax-rates' => 'Impostos de Impostos',
|
||||
'promotion' => 'Promoções',
|
||||
'discount' => 'Desconto'
|
||||
'discount' => 'Desconto',
|
||||
'cms' => 'CMS'
|
||||
],
|
||||
|
||||
'acl' => [
|
||||
'dashboard' => 'Dashboard',
|
||||
'sales' => 'Vendas',
|
||||
|
|
@ -56,12 +93,12 @@ return [
|
|||
'groups' => 'Grupos',
|
||||
'reviews' => 'Avaliações',
|
||||
'newsletter-subscriptions' => 'Inscrições de Newsletter',
|
||||
'configure' => 'Configure',
|
||||
'configure' => 'Configurar',
|
||||
'settings' => 'Configurações',
|
||||
'locales' => 'Idiomas',
|
||||
'currencies' => 'Moedas',
|
||||
'exchange-rates' => 'Impostos de Câmbios',
|
||||
'inventory-sources' => 'Fontes de Inventários',
|
||||
'inventory-sources' => 'Origens de Estoque',
|
||||
'channels' => 'Canais (Lojas)',
|
||||
'users' => 'Usuários',
|
||||
'roles' => 'Funções',
|
||||
|
|
@ -73,8 +110,10 @@ return [
|
|||
'create' => 'Add',
|
||||
'delete' => 'Delete',
|
||||
'promotions' => 'Promoções',
|
||||
'cart-rules' => 'Regras do Carrinho'
|
||||
'cart-rules' => 'Regras do Carrinho',
|
||||
'catalog-rules' => 'Regras do Catálogo',
|
||||
],
|
||||
|
||||
'dashboard' => [
|
||||
'title' => 'Dashboard',
|
||||
'from' => 'De',
|
||||
|
|
@ -96,18 +135,22 @@ return [
|
|||
'stock-threshold' => 'Limite de Estoque',
|
||||
'qty-left' => ':qty Restante',
|
||||
],
|
||||
|
||||
'datagrid' => [
|
||||
'mass-ops' => [
|
||||
'method-error' => 'Erro! Método errado detectado, por favor, verifique a configuração de ação em massa',
|
||||
'delete-success' => 'O índice selecionado de :resource foi excluído com sucesso',
|
||||
'partial-action' => 'Algumas ações não foram executadas devido a restrições restritas do sistema em :resource',
|
||||
'update-success' => 'O índice selecionado :resource foram atualizados com sucesso',
|
||||
'no-resource' => 'O recurso fornecido insuficiente para a ação'
|
||||
],
|
||||
|
||||
'id' => 'ID',
|
||||
'status' => 'Status',
|
||||
'code' => 'Código',
|
||||
'admin-name' => 'Nome',
|
||||
'name' => 'Nome',
|
||||
'direction' => 'Direção',
|
||||
'fullname' => 'Nome Completo',
|
||||
'type' => 'Tipo',
|
||||
'required' => 'Obrigatório',
|
||||
|
|
@ -116,10 +159,14 @@ return [
|
|||
'per-channel' => 'Por Canal (Loja)',
|
||||
'position' => 'Posição',
|
||||
'locale' => 'Idioma',
|
||||
'hostname' => 'Hostname',
|
||||
'email' => 'Email',
|
||||
'hostname' => 'nome de anfitrião',
|
||||
'email' => 'O email',
|
||||
'group' => 'Grupo',
|
||||
'phone' => 'telefone',
|
||||
'gender' => 'Gênero',
|
||||
'title' => 'Título',
|
||||
'layout' => 'Layout',
|
||||
'url-key' => 'URL Chave',
|
||||
'comment' => 'Comentário',
|
||||
'product-name' => 'Produto',
|
||||
'currency-name' => 'Nome da Moéda',
|
||||
|
|
@ -155,29 +202,30 @@ return [
|
|||
'per-cust' => 'Por cliente',
|
||||
'usage-throttle' => 'Tempos de uso',
|
||||
'for-guest' => 'Para convidados',
|
||||
'order_number' => 'Order Number',
|
||||
'refund-date' => 'Refund Date',
|
||||
'refunded' => 'Refunded',
|
||||
'start' => 'Start',
|
||||
'end' => 'End',
|
||||
'active' => 'Active',
|
||||
'inactive' => 'Inactive',
|
||||
'true' => 'True',
|
||||
'false' => 'False',
|
||||
'approved' => 'Approved',
|
||||
'pending' => 'Pending',
|
||||
'disapproved' => 'Disapproved',
|
||||
'coupon-code' => 'Coupon Code',
|
||||
'times-used' => 'Times Used',
|
||||
'created-date' => 'Created Date',
|
||||
'expiration-date' => 'Expiration Date',
|
||||
'edit' => 'Edit',
|
||||
'delete' => 'Delete',
|
||||
'view' => 'View',
|
||||
'order_number' => 'Número do pedido',
|
||||
'refund-date' => 'Data do reembolso',
|
||||
'refunded' => 'Devolveu',
|
||||
'start' => 'Começar',
|
||||
'end' => 'Fim',
|
||||
'active' => 'Ativo',
|
||||
'inactive' => 'Inativo',
|
||||
'true' => 'Verdade',
|
||||
'false' => 'Falso',
|
||||
'approved' => 'Aprovado',
|
||||
'pending' => 'Pendente',
|
||||
'disapproved' => 'Reprovado',
|
||||
'coupon-code' => 'Código do cupom',
|
||||
'times-used' => 'Vezes Utilizado',
|
||||
'created-date' => 'Data de criação',
|
||||
'expiration-date' => 'Data de validade',
|
||||
'edit' => 'Editar',
|
||||
'delete' => 'Excluir',
|
||||
'view' => 'Visão',
|
||||
'rtl' => 'RTL',
|
||||
'ltr' => 'LTR',
|
||||
'update-status' => 'Update Status'
|
||||
'update-status' => 'Atualizar o status'
|
||||
],
|
||||
|
||||
'account' => [
|
||||
'title' => 'Minha Conta',
|
||||
'save-btn-title' => 'Salvar',
|
||||
|
|
@ -189,6 +237,7 @@ return [
|
|||
'change-password' => 'Mudar Senha da Conta',
|
||||
'current-password' => 'Senha Atual'
|
||||
],
|
||||
|
||||
'users' => [
|
||||
'forget-password' => [
|
||||
'title' => 'Esqueci Minha Senha',
|
||||
|
|
@ -199,6 +248,7 @@ return [
|
|||
'back-link-title' => 'Voltar para Login',
|
||||
'submit-btn-title' => 'Link do E-mail para Recuperar Senha'
|
||||
],
|
||||
|
||||
'reset-password' => [
|
||||
'title' => 'Resetar Senha',
|
||||
'email' => 'E-mail Registrado',
|
||||
|
|
@ -207,6 +257,7 @@ return [
|
|||
'back-link-title' => 'Voltar para Login',
|
||||
'submit-btn-title' => 'Resetar Senha'
|
||||
],
|
||||
|
||||
'roles' => [
|
||||
'title' => 'Funções',
|
||||
'add-role-title' => 'Add Função',
|
||||
|
|
@ -220,6 +271,7 @@ return [
|
|||
'custom' => 'Personalizado',
|
||||
'all' => 'Tudo'
|
||||
],
|
||||
|
||||
'users' => [
|
||||
'title' => 'Usuário',
|
||||
'add-user-title' => 'Add Usuário',
|
||||
|
|
@ -245,6 +297,7 @@ return [
|
|||
'login-error' => 'Por favor, verifique suas credenciais e tente novamente.',
|
||||
'activate-warning' => 'Sua conta ainda está para ser ativada, entre em contato com o administrador.'
|
||||
],
|
||||
|
||||
'sessions' => [
|
||||
'title' => 'Entrar',
|
||||
'email' => 'Email',
|
||||
|
|
@ -254,6 +307,7 @@ return [
|
|||
'submit-btn-title' => 'Entrar'
|
||||
]
|
||||
],
|
||||
|
||||
'sales' => [
|
||||
'orders' => [
|
||||
'title' => 'Pedidos',
|
||||
|
|
@ -268,9 +322,16 @@ return [
|
|||
'order-info' => 'Informação do Pedido',
|
||||
'order-date' => 'Data do Pedido',
|
||||
'order-status' => 'Status do Pedido',
|
||||
'order-status-canceled' => 'Cancelado',
|
||||
'order-status-closed' => 'Fechados',
|
||||
'order-status-fraud' => 'Fraude',
|
||||
'order-status-pending' => 'Pendente',
|
||||
'order-status-pending-payment' => 'Pagamento Pendente',
|
||||
'order-status-processing' => 'Em processamento',
|
||||
'order-status-success' => 'Concluído',
|
||||
'channel' => 'Canal (Loja)',
|
||||
'customer-name' => 'Nome do Cliente',
|
||||
'email' => 'Email',
|
||||
'email' => 'O email',
|
||||
'contact-number' => 'Número de Contato',
|
||||
'account-info' => 'Informação da Conta',
|
||||
'address' => 'Endereço',
|
||||
|
|
@ -292,7 +353,7 @@ return [
|
|||
'item-invoice' => 'Faturado(s) (:qty_invoiced)',
|
||||
'item-shipped' => 'Enviado(s) (:qty_shipped)',
|
||||
'item-canceled' => 'Cancelado(s) (:qty_canceled)',
|
||||
'item-refunded' => 'Refunded (:qty_refunded)',
|
||||
'item-refunded' => 'Devolveu (:qty_refunded)',
|
||||
'price' => 'Preço',
|
||||
'total' => 'Total',
|
||||
'subtotal' => 'Subtotal',
|
||||
|
|
@ -309,8 +370,13 @@ return [
|
|||
'total-due' => 'Total Devido',
|
||||
'cancel-confirm-msg' => 'Tem certeza que deseja cancelar esse pedido ?',
|
||||
'refunds' => 'Refunds',
|
||||
'refunded' => 'Refunded'
|
||||
'refunded' => 'Refunded',
|
||||
'comment-added-success' => 'Comment addded successfully.',
|
||||
'comment' => 'Comment',
|
||||
'submit-comment' => 'Submit Comment',
|
||||
'notify-customer' => 'Notify Customer',
|
||||
],
|
||||
|
||||
'invoices' => [
|
||||
'title' => 'Faturas',
|
||||
'id' => 'Id',
|
||||
|
|
@ -347,6 +413,7 @@ return [
|
|||
'add-title' => 'Criar Entrega',
|
||||
'save-btn-title' => 'Salvar Entrega',
|
||||
'qty-ordered' => 'Qtd pedido',
|
||||
'qty-invoiced' => 'Qty Invoiced',
|
||||
'qty-to-ship' => 'Qty para enviar',
|
||||
'available-sources' => 'Fontes Disponíveis',
|
||||
'source' => 'Fonte',
|
||||
|
|
@ -362,28 +429,30 @@ return [
|
|||
],
|
||||
|
||||
'refunds' => [
|
||||
'title' => 'Refunds',
|
||||
'title' => 'Reembolsos',
|
||||
'id' => 'Id',
|
||||
'add-title' => 'Create Refund',
|
||||
'save-btn-title' => 'Refund',
|
||||
'order-id' => 'Order Id',
|
||||
'qty-ordered' => 'Qty Ordered',
|
||||
'qty-to-refund' => 'Qty To Refund',
|
||||
'refund-shipping' => 'Refund Shipping',
|
||||
'adjustment-refund' => 'Adjustment Refund',
|
||||
'adjustment-fee' => 'Adjustment Fee',
|
||||
'update-qty' => 'Update Quantities',
|
||||
'invalid-qty' => 'Found invalid quantity for return items.',
|
||||
'refund-limit-error' => 'The most money available to refund is :amount.',
|
||||
'refunded' => 'Refunded',
|
||||
'date' => 'Refund Date',
|
||||
'customer-name' => 'Customer Name',
|
||||
'add-title' => 'Criar reembolso',
|
||||
'save-btn-title' => 'Reembolso',
|
||||
'order-id' => 'Ordem Id',
|
||||
'qty-ordered' => 'Qty Encomendado',
|
||||
'qty-to-refund' => 'Qty To Reembolso',
|
||||
'refund-shipping' => 'Envio de reembolso',
|
||||
'adjustment-refund' => 'Reembolso de ajuste',
|
||||
'adjustment-fee' => 'Taxa de ajuste',
|
||||
'update-qty' => 'Quantidades de atualização',
|
||||
'invalid-qty' => 'Encontramos uma quantidade inválida para reembolsar itens.',
|
||||
'refund-limit-error' => 'O máximo de dinheiro disponível para reembolso :amount.',
|
||||
'refunded' => 'Devolveu',
|
||||
'date' => 'Data do reembolso',
|
||||
'customer-name' => 'nome do cliente',
|
||||
'status' => 'Status',
|
||||
'action' => 'Action',
|
||||
'view-title' => 'Refund #:refund_id',
|
||||
'action' => 'Açao',
|
||||
'view-title' => 'Reembolso #:refund_id',
|
||||
'invalid-refund-amount-error' => 'Refund amount should be non zero.'
|
||||
|
||||
]
|
||||
],
|
||||
|
||||
'catalog' => [
|
||||
'products' => [
|
||||
'title' => 'Produtos',
|
||||
|
|
@ -410,28 +479,30 @@ return [
|
|||
'price' => 'Preço',
|
||||
'weight' => 'Peso',
|
||||
'status' => 'Status',
|
||||
'enabled' => 'Ativado',
|
||||
'disabled' => 'Desativado',
|
||||
'add-variant-title' => 'Add Variação',
|
||||
'variant-already-exist-message' => 'Variante com as mesmas opções de atributo já existe.',
|
||||
'add-image-btn-title' => 'Add Imagem',
|
||||
'mass-delete-success' => 'Todos os índices de produtos selecionados foram excluídos com sucesso',
|
||||
'mass-update-success' => 'Todo o índice selecionado de produtos foi atualizado com sucesso',
|
||||
'downloadable' => 'Downloadable Information',
|
||||
'links' => 'Links',
|
||||
'add-link-btn-title' => 'Add Link',
|
||||
'samples' => 'Samples',
|
||||
'add-sample-btn-title' => 'Add Sample',
|
||||
'downloads' => 'Download Allowed',
|
||||
'file' => 'File',
|
||||
'sample' => 'Sample',
|
||||
'upload-file' => 'Upload File',
|
||||
'url' => 'Url',
|
||||
'sort-order' => 'Sort Order',
|
||||
'browse-file' => 'Browse File',
|
||||
'configurable-error' => 'Por favor, selecione pelo menos um atributo configurável.',
|
||||
'configurable-error' => 'Selecione pelo menos um atributo configurável.',
|
||||
'categories' => 'Categorias',
|
||||
'images' => 'Imagens',
|
||||
'inventories' => 'Os inventários',
|
||||
'variations' => 'Variações',
|
||||
'downloadable' => 'Informações para Download',
|
||||
'links' => 'Ligações',
|
||||
'add-link-btn-title' => 'Adicionar Link',
|
||||
'samples' => 'Amostras',
|
||||
'add-sample-btn-title' => 'Adicionar amostra',
|
||||
'downloads' => 'Download permitido',
|
||||
'file' => 'Arquivo',
|
||||
'sample' => 'Amostra',
|
||||
'upload-file' => 'Subir arquivo',
|
||||
'url' => 'Url',
|
||||
'sort-order' => 'Ordem de classificação',
|
||||
'browse-file' => 'Procurar arquivo',
|
||||
'product-link' => 'Produtos Vinculados',
|
||||
'cross-selling' => 'Venda cruzada',
|
||||
'up-selling' => 'Acima de vender',
|
||||
|
|
@ -439,12 +510,13 @@ return [
|
|||
'product-search-hint' => 'Comece a digitar o nome do produto',
|
||||
'no-result-found' => 'Produtos não encontrados com o mesmo nome.',
|
||||
'searching' => 'Procurando ...',
|
||||
'grouped-products' => 'Grouped Products',
|
||||
'search-products' => 'Search Products',
|
||||
'no-result-found' => 'Products not found with same name.',
|
||||
'bundle-items' => 'Bundle Items',
|
||||
'add-option-btn-title' => 'Add Option',
|
||||
'option-title' => 'Option Title',
|
||||
'grouped-products' => 'Produtos Agrupados',
|
||||
'search-products' => 'procurar produtos',
|
||||
'no-result-found' => 'Produtos não encontrados com o mesmo nome.',
|
||||
'channel' => 'Canais',
|
||||
'bundle-items' => 'Itens do pacote',
|
||||
'add-option-btn-title' => 'Adicionar opção',
|
||||
'option-title' => 'Título da opção',
|
||||
'input-type' => 'Input Type',
|
||||
'is-required' => 'Is Required',
|
||||
'select' => 'Select',
|
||||
|
|
@ -454,6 +526,7 @@ return [
|
|||
'new-option' => 'New Option',
|
||||
'is-default' => 'Is Default'
|
||||
],
|
||||
|
||||
'attributes' => [
|
||||
'title' => 'Atributos',
|
||||
'add-title' => 'Add Atributo',
|
||||
|
|
@ -489,6 +562,7 @@ return [
|
|||
'no' => 'Não',
|
||||
'value_per_locale' => 'Valor Por Idioma',
|
||||
'value_per_channel' => 'Valor Por Canal (Loja)',
|
||||
'value_per_channel' => 'Valor Por Canal (Loja)',
|
||||
'is_filterable' => 'Usar na navegação em camadas',
|
||||
'is_configurable' => 'Usar para Criar Produtos Configuráveis',
|
||||
'admin_name' => 'Admin Nome',
|
||||
|
|
@ -500,7 +574,11 @@ return [
|
|||
'text-swatch' => 'Amostra de texto',
|
||||
'swatch' => 'Swatch',
|
||||
'image' => 'Imagem',
|
||||
'file' => 'Arquivo'
|
||||
'file' => 'Arquivo',
|
||||
'checkbox' => 'Checkbox',
|
||||
'use_in_flat' => "Criar na tabela plana do produto",
|
||||
'is_comparable' => "O atributo é comparável",
|
||||
'default_null_option' => 'Criar opção vazia padrão',
|
||||
],
|
||||
'families' => [
|
||||
'title' => 'Famílias',
|
||||
|
|
@ -531,10 +609,10 @@ return [
|
|||
'yes' => 'Sim',
|
||||
'no' => 'Não',
|
||||
'position' => 'Posição',
|
||||
'display-mode' => 'Display Mode',
|
||||
'products-and-description' => 'Products and Description',
|
||||
'products-only' => 'Products Only',
|
||||
'description-only' => 'Description Only',
|
||||
'display-mode' => 'Modo de exibição',
|
||||
'products-and-description' => 'Produtos e Descrição',
|
||||
'products-only' => 'Apenas produtos',
|
||||
'description-only' => 'Apenas descrição',
|
||||
'description-and-images' => 'Descrição e Imagens',
|
||||
'description' => 'Descrição',
|
||||
'parent-category' => 'Categoria Pai',
|
||||
|
|
@ -544,8 +622,11 @@ return [
|
|||
'meta_description' => 'Meta Descrição',
|
||||
'meta_keywords' => 'Meta Keywords',
|
||||
'image' => 'Imagem',
|
||||
'filterable-attributes' => 'Atributos filtráveis',
|
||||
'attributes' => 'Atributos',
|
||||
]
|
||||
],
|
||||
|
||||
'configuration' => [
|
||||
'title' => 'Configuração',
|
||||
'save-btn-title' => 'Salvar',
|
||||
|
|
@ -553,6 +634,7 @@ return [
|
|||
'yes' => 'Sim',
|
||||
'no' => 'Não',
|
||||
'delete' => 'Deletar',
|
||||
|
||||
'tax-categories' => [
|
||||
'title' => 'Categorias de Imposto',
|
||||
'add-title' => 'Add Categorias de Imposto',
|
||||
|
|
@ -569,6 +651,7 @@ return [
|
|||
'edit-button-title' => 'Editar Categorias de Imposto'
|
||||
]
|
||||
],
|
||||
|
||||
'tax-rates' => [
|
||||
'title' => 'Taxas de Impostos',
|
||||
'add-title' => 'Add Taxas de Imposto',
|
||||
|
|
@ -590,6 +673,7 @@ return [
|
|||
'zip_code' => 'CEP',
|
||||
'is_zip' => 'Ativar intervalo de CEP'
|
||||
],
|
||||
|
||||
'sales' => [
|
||||
'shipping-method' => [
|
||||
'title' => 'Método de Entregas',
|
||||
|
|
@ -600,15 +684,18 @@ return [
|
|||
]
|
||||
]
|
||||
],
|
||||
|
||||
'settings' => [
|
||||
'locales' => [
|
||||
'title' => 'Idiomas',
|
||||
'add-title' => 'Add Idioma',
|
||||
'edit-title' => 'Editar Idioma',
|
||||
'add-title' => 'Add Idioma',
|
||||
'save-btn-title' => 'Salvar Idioma',
|
||||
'general' => 'Geral',
|
||||
'code' => 'Código',
|
||||
'name' => 'Nome',
|
||||
'direction' => 'Direção',
|
||||
'create-success' => 'Local criado com sucesso.',
|
||||
'update-success' => 'Localidade atualizada com sucesso.',
|
||||
'delete-success' => 'Locale excluído com sucesso.',
|
||||
|
|
@ -645,6 +732,9 @@ return [
|
|||
'source_currency' => 'Moeda de Origem',
|
||||
'target_currency' => 'Moeda Alvo',
|
||||
'rate' => 'Taxa',
|
||||
'exchange-class-not-found' => ':service de taxa de câmbio de serviço não encontrada',
|
||||
'update-rates' => 'Atualizar Tarifas',
|
||||
'rate' => 'Taxa',
|
||||
'create-success' => 'Taxa de Câmbio criada com sucesso.',
|
||||
'update-success' => 'Taxa de Câmbio atualizada com sucesso.',
|
||||
'delete-success' => 'Taxa de Câmbio excluída com sucesso.',
|
||||
|
|
@ -706,8 +796,14 @@ return [
|
|||
'create-success' => 'Canal criado com sucesso.',
|
||||
'update-success' => 'Canal atualizado com sucesso.',
|
||||
'delete-success' => 'Canal excluído com sucesso.',
|
||||
'last-delete-error' => 'Pelo menos um canal é necessário.'
|
||||
'last-delete-error' => 'Pelo menos um canal é necessário.',
|
||||
'seo' => 'Página inicial SEO',
|
||||
'seo-title' => 'Meta título',
|
||||
'seo-description' => 'Meta Descrição',
|
||||
'seo-keywords' => 'Meta palavras-chave',
|
||||
|
||||
],
|
||||
|
||||
'sliders' => [
|
||||
'title' => 'Sliders',
|
||||
'name' => 'Name',
|
||||
|
|
@ -725,6 +821,7 @@ return [
|
|||
'delete-success' => 'Não foi possível excluir o slider',
|
||||
'delete-fail' => 'Slider excluído com sucesso'
|
||||
],
|
||||
|
||||
'tax-categories' => [
|
||||
'title' => 'Categorias de Imposto',
|
||||
'add-title' => 'Criar Categoria de Imposto',
|
||||
|
|
@ -747,6 +844,7 @@ return [
|
|||
'atleast-one' => 'Não é possível excluir a última Categoria de Imposto',
|
||||
'delete' => 'Categoria de Imposto excluída com sucesso'
|
||||
],
|
||||
|
||||
'tax-rates' => [
|
||||
'title' => 'Taxas de Impostos',
|
||||
'add-title' => 'Criar Taxas de Impostos',
|
||||
|
|
@ -778,6 +876,7 @@ return [
|
|||
'title' => 'Desenvolvimento',
|
||||
]
|
||||
],
|
||||
|
||||
'customers' => [
|
||||
'groups' =>[
|
||||
'add-title' => 'Add Grupo',
|
||||
|
|
@ -790,12 +889,44 @@ return [
|
|||
'is_user_defined' => 'Usuário Definido',
|
||||
'yes' => 'Sim'
|
||||
],
|
||||
'note' => [
|
||||
'title' => 'Add Note',
|
||||
'save-note' => 'Save Note',
|
||||
'enter-note' => 'Enter Note',
|
||||
'help-title' => 'Add Note On This Customer'
|
||||
|
||||
'addresses' => [
|
||||
'title' => 'Lista de Endereços de :customer_name',
|
||||
'vat_id' => 'Vat id',
|
||||
'create-title' => 'Criar endereço do cliente',
|
||||
'edit-title' => 'Atualizar endereço do cliente',
|
||||
'title-orders' => 'Lista de pedidos :customer_name ',
|
||||
'address-list' => 'Lista de Endereços',
|
||||
'order-list' => 'Lista de pedidos',
|
||||
'address-id' => 'Endereço ID',
|
||||
'address-1' => 'Endereço 1',
|
||||
'city' => 'Cidade',
|
||||
'state-name' => 'Estado',
|
||||
'country-name' => 'País',
|
||||
'postcode' => 'Código postal',
|
||||
'default-address' => 'Endereço padrão',
|
||||
'yes' => 'sim',
|
||||
'not-approved' => 'Não aprovado',
|
||||
'no' => 'Não',
|
||||
'dash' => '-',
|
||||
'delete' => 'Excluir',
|
||||
'create-btn-title' => 'Adicionar endereço',
|
||||
'save-btn-title' => 'Salvar endereço',
|
||||
'general' => 'Geral',
|
||||
'success-create' => 'Success: Endereço do cliente criado com sucesso.',
|
||||
'success-update' => 'Success: Endereço do cliente atualizado com sucesso.',
|
||||
'success-delete' => 'Success: Endereço do cliente excluído com sucesso.',
|
||||
'success-mass-delete' => 'Success: endereços selecionados excluídos com sucesso.',
|
||||
'error-create' => 'Error: Endereço do cliente não criado.',
|
||||
],
|
||||
|
||||
'note' => [
|
||||
'title' => 'Adicionar nota',
|
||||
'save-note' => 'Salvar nota',
|
||||
'enter-note' => 'Inserir nota',
|
||||
'help-title' => 'Adicionar nota sobre este cliente'
|
||||
],
|
||||
|
||||
'customers' => [
|
||||
'add-title' => 'Add Cliente',
|
||||
'edit-title' => 'Editar Cliente',
|
||||
|
|
@ -826,6 +957,7 @@ return [
|
|||
'active' => 'Ativo (a)',
|
||||
'inactive' => 'Inativo (a)'
|
||||
],
|
||||
|
||||
'reviews' => [
|
||||
'title' => 'Avaliações',
|
||||
'edit-title' => 'Editar Avaliação',
|
||||
|
|
@ -836,6 +968,7 @@ return [
|
|||
'approved' => 'Aprovado',
|
||||
'disapproved' => 'Desaprovar'
|
||||
],
|
||||
|
||||
'subscribers' => [
|
||||
'title' => 'Assinantes de Newletter',
|
||||
'title-edit' => 'Editar Assinante',
|
||||
|
|
@ -848,93 +981,147 @@ return [
|
|||
'delete-failed' => 'Erro! Você não pode excluir a inscrição desse usuário',
|
||||
]
|
||||
],
|
||||
|
||||
'promotion' => [
|
||||
'catalog-rule' => 'Regras de Catálogo',
|
||||
'cart-rule' => 'Regras do Carrinho',
|
||||
'add-catalog-rule' => 'Adicionar regra de catálogo',
|
||||
'add-cart-rule' => 'Adicionar Regra do Carrinho',
|
||||
'edit-cart-rule' => 'Editar regra do carrinho',
|
||||
'edit-catalog-rule' => 'Editar regra do catálogo',
|
||||
'create-catalog-rule' => 'Criar regra de catálogo',
|
||||
'create-cart-rule' => 'Criar regra de carrinho',
|
||||
'save-btn-title' => 'Criar',
|
||||
'edit-btn-title' => 'Editar',
|
||||
'save' => 'Salve',
|
||||
'select-attr' => 'Selecione o atributo',
|
||||
'select-attr-fam' => 'Selecione a Família de Atributos',
|
||||
'select-cart-attr' => 'Selecione o atributo Carrinho',
|
||||
'general-info' => [
|
||||
'name' => 'Nome da regra',
|
||||
'description' => 'Descrição',
|
||||
'starts-from' => 'Começar',
|
||||
'ends-till' => 'Fim',
|
||||
'channels' => 'Canais',
|
||||
'channels-req' => 'Canais',
|
||||
'cust-groups' => 'Grupos de clientes',
|
||||
'priority' => 'Prioridade',
|
||||
'add-condition' => 'Adicionar condições',
|
||||
'disc_amt' => 'Valor de desconto',
|
||||
'disc_percent' => 'Porcentagem de desconto',
|
||||
'is-coupon' => 'Use cupom',
|
||||
'is-coupon-yes' => 'Sim',
|
||||
'is-coupon-no' => 'Não',
|
||||
'uses-per-cust' => 'Usos por cliente',
|
||||
'all' => 'Todos (a)',
|
||||
'any' => 'Qualquer',
|
||||
'end-other-rules' => 'Acabar com outras regras',
|
||||
'status' => 'Está ativo',
|
||||
'all-conditions-true' => 'Assumindo que todas as condições sejam verdadeiras',
|
||||
'assuming' => 'Assumindo',
|
||||
'any' => 'Qualquer',
|
||||
'all' => 'Todos (a)',
|
||||
'conditions' => 'Condições',
|
||||
'apply' => 'Aplique',
|
||||
'are' => 'está',
|
||||
'true' => 'verdade',
|
||||
'false' => 'falso (a)',
|
||||
'limit' => 'Limite de uso',
|
||||
'specific-coupon' => 'Cupom Específico (Cheque) / Gerado Automaticamente (Desmarque)',
|
||||
'free-shipping' => 'Frete grátis',
|
||||
'is-guest' => 'Para os hóspedes',
|
||||
'disc_qty' => 'Max. Quantidade permitida para ser descontado',
|
||||
'test-mode' => 'Escolha como testar as condições',
|
||||
'labels' => 'Rótulos'
|
||||
],
|
||||
'status' => [
|
||||
'success' => 'Sucesso! regra criada',
|
||||
'success-coupon' => 'Sucesso! regra criada junto com o cupom',
|
||||
'failed' => 'Erro! não conseguiu criar regra',
|
||||
'update-success' => 'Sucesso! regra atualizada',
|
||||
'update-coupon-success' => 'Sucesso! regra atualizada junto com cupom',
|
||||
'update-failed' => 'Erro! não pode atualizar',
|
||||
'delete-success' => 'Sucesso! regra excluída',
|
||||
'delete-failed' => 'Erro! não pode apagar',
|
||||
'coupon-applied' => 'Cupom Usado',
|
||||
'coupon-failed' => 'O cupom não foi aplicado',
|
||||
'no-coupon' => '* Cupom não aplicável',
|
||||
'coupon-removed' => 'Cupom removido com sucesso',
|
||||
'coupon-remove-failed' => 'Remoção de cupons falhou',
|
||||
'duplicate-coupon' => 'O cupom já existe, por favor tente novamente com um cupom diferente'
|
||||
],
|
||||
'catalog' => [
|
||||
'cart-rules' => [
|
||||
'title' => 'Regras do carrinho',
|
||||
'add-title' => 'Adicionar regra de carrinho',
|
||||
'edit-title' => 'Editar regra do carrinho',
|
||||
'save-btn-title' => 'Regra Salvar carrinho',
|
||||
'rule-information' => 'Informações sobre regras',
|
||||
'name' => 'Nome',
|
||||
'description' => 'Descrição',
|
||||
'apply-percent' => 'Aplique como porcentagem',
|
||||
'apply-fixed' => 'Aplicar como quantia fixa',
|
||||
'adjust-to-percent' => 'Ajuste para porcentagem',
|
||||
'adjust-to-value' => 'Ajustar ao valor de desconto',
|
||||
'condition-missing' => 'Por favor, verifique condições, alguns valores podem estar faltando'
|
||||
'status' => 'Status',
|
||||
'is-active' => 'A regra do carrinho está ativa',
|
||||
'channels' => 'Canais',
|
||||
'customer-groups' => 'Grupos de Clientes',
|
||||
'coupon-type' => 'Tipo de cupom',
|
||||
'no-coupon' => 'Sem Cupom',
|
||||
'specific-coupon' => 'Cupom específico',
|
||||
'auto-generate-coupon' => 'Gerar cupom automaticamente',
|
||||
'no' => 'Não',
|
||||
'yes' => 'sim',
|
||||
'coupon-code' => 'Código do cupom',
|
||||
'uses-per-coupon' => 'Usos por cupom',
|
||||
'uses-per-customer' => 'Usos por cliente',
|
||||
'uses-per-customer-control-info' => 'Será usado apenas para clientes logados.',
|
||||
'from' => 'A partir de',
|
||||
'to' => 'Para',
|
||||
'priority' => 'Prioridade',
|
||||
'conditions' => 'Condições',
|
||||
'condition-type' => 'Tipo de condição',
|
||||
'all-conditions-true' => 'Todas as condições são verdadeiras',
|
||||
'any-condition-true' => 'Qualquer condição é verdadeira',
|
||||
'add-condition' => 'Adicionar Condição',
|
||||
'choose-condition-to-add' => 'Escolha uma condição para adicionar',
|
||||
'cart-attribute' => 'Atributo do carrinho',
|
||||
'subtotal' => 'Subtotal',
|
||||
'total-items-qty' => 'Quantidade total de itens',
|
||||
'total-weight' => 'Peso total',
|
||||
'payment-method' => 'Forma de pagamento',
|
||||
'shipping-method' => 'método de envio',
|
||||
'shipping-postcode' => 'CEP / código postal',
|
||||
'shipping-state' => 'Estado de envio',
|
||||
'shipping-country' => 'País de envio',
|
||||
'cart-item-attribute' => 'Atributo do item do carrinho',
|
||||
'price-in-cart' => 'Preço no carrinho',
|
||||
'qty-in-cart' => 'Quantidade no carrinho',
|
||||
'product-attribute' => 'Atributo do produto',
|
||||
'attribute-name-children-only' => ':attribute_name (somente filhos)',
|
||||
'attribute-name-parent-only' => ':attribute_name (somente pai)',
|
||||
'is-equal-to' => 'É igual a',
|
||||
'is-not-equal-to' => 'Não é igual a',
|
||||
'equals-or-greater-than' => 'Igual ou superior a',
|
||||
'equals-or-less-than' => 'Igual ou menor que',
|
||||
'greater-than' => 'Maior que',
|
||||
'less-than' => 'Menor que',
|
||||
'contain' => 'Conter',
|
||||
'contains' => 'Contém',
|
||||
'does-not-contain' => 'Não contém',
|
||||
'actions' => 'Ações',
|
||||
'action-type' => 'Tipo de acão',
|
||||
'percentage-product-price' => 'Porcentagem do preço do produto',
|
||||
'fixed-amount' => 'Quantia fixa',
|
||||
'fixed-amount-whole-cart' => 'Montante fixo ao carrinho inteiro',
|
||||
'buy-x-get-y-free' => 'Compre o X Get Y grátis',
|
||||
'discount-amount' => 'Valor do desconto',
|
||||
'discount-quantity' => 'Quantidade máxima permitida para desconto',
|
||||
'discount-step' => 'Comprar X Quantidade',
|
||||
'free-shipping' => 'Envio Grátis',
|
||||
'apply-to-shipping' => 'Aplicar ao envio',
|
||||
'coupon-codes' => 'Códigos de cupom',
|
||||
'coupon-qty' => 'Quantidade do Cupom',
|
||||
'code-length' => 'Comprimento do código',
|
||||
'code-format' => 'Formato do código',
|
||||
'alphanumeric' => 'Alfanumérica',
|
||||
'alphabetical' => 'Alfabética',
|
||||
'numeric' => 'Numérico',
|
||||
'code-prefix' => 'Prefixo do código',
|
||||
'code-suffix' => 'Sufixo de código',
|
||||
'generate' => 'Gerar',
|
||||
'cart-rule-not-defind-error' => 'A regra do carrinho não está definida',
|
||||
'mass-delete-success' => 'Todos os cupons selecionados foram excluídos com sucesso.',
|
||||
'end-other-rules' => 'Terminar outras regras',
|
||||
'children-categories' => 'Categorias (Somente Crianças)',
|
||||
'parent-categories' => 'Categorias (somente pai)',
|
||||
'categories' => 'Categorias',
|
||||
'attribute_family' => 'Família de Atributos'
|
||||
],
|
||||
'cart' => [
|
||||
'buy-atleast' => 'Compre Atleast',
|
||||
'apply-to-shipping' => 'Aplicar ao envio'
|
||||
|
||||
'catalog-rules' => [
|
||||
'title' => 'Regras do Catálogo',
|
||||
'add-title' => 'Adicionar regra de catálogo',
|
||||
'edit-title' => 'Editar regra do catálogo',
|
||||
'save-btn-title' => 'Salvar regra de catálogo',
|
||||
'rule-information' => 'Informações sobre regras',
|
||||
'name' => 'Nome',
|
||||
'description' => 'Descrição',
|
||||
'status' => 'Status',
|
||||
'is-active' => 'A regra do catálogo está ativa',
|
||||
'channels' => 'Canais',
|
||||
'customer-groups' => 'Grupos de Clientes',
|
||||
'no' => 'Não',
|
||||
'yes' => 'sim',
|
||||
'from' => 'A partir de',
|
||||
'to' => 'Para',
|
||||
'priority' => 'Prioridade',
|
||||
'conditions' => 'Condições',
|
||||
'condition-type' => 'Tipo de condição',
|
||||
'all-conditions-true' => 'Todas as condições são verdadeiras',
|
||||
'any-condition-true' => 'Qualquer condição é verdadeira',
|
||||
'add-condition' => 'Adicionar Condição',
|
||||
'choose-condition-to-add' => 'Escolha uma condição para adicionar',
|
||||
'product-attribute' => 'Atributo do produto',
|
||||
'attribute-name-children-only' => ':attribute_name (somente filhos)',
|
||||
'attribute-name-parent-only' => ': attribute_name (somente pai)',
|
||||
'is-equal-to' => 'É igual a',
|
||||
'is-not-equal-to' => 'Não é igual a',
|
||||
'equals-or-greater-than' => 'Igual ou superior a',
|
||||
'equals-or-less-than' => 'Igual ou menor que',
|
||||
'greater-than' => 'Maior que',
|
||||
'less-than' => 'Menor que',
|
||||
'contain' => 'Conter',
|
||||
'contains' => 'Contém',
|
||||
'does-not-contain' => 'Não contém',
|
||||
'actions' => 'Ações',
|
||||
'action-type' => 'Tipo de acão',
|
||||
'percentage-product-price' => 'Porcentagem do preço do produto',
|
||||
'fixed-amount' => 'Quantia fixa',
|
||||
'fixed-amount-whole-cart' => 'Montante fixo ao catálogo inteiro',
|
||||
'buy-x-get-y-free' => 'Compre o X Get Y grátis',
|
||||
'discount-amount' => 'Valor do desconto',
|
||||
'mass-delete-success' => 'Todo o índice selecionado de cupons foi excluído com sucesso.',
|
||||
'end-other-rules' => 'Terminar outras regras',
|
||||
'categories' => 'Categorias',
|
||||
'attribute_family' => 'Família de Atributos'
|
||||
]
|
||||
],
|
||||
|
||||
'error' => [
|
||||
'go-to-home' => 'IR PARA PÁGINA INICIAL',
|
||||
'in-maitainace' => 'In Maintenance',
|
||||
'right-back' => 'Be Right Back',
|
||||
'in-maitainace' => 'Em manutenção',
|
||||
'right-back' => 'Volto logo',
|
||||
|
||||
'404' => [
|
||||
'page-title' => '404 Página não Encontrada',
|
||||
'name' => '404',
|
||||
|
|
@ -978,12 +1165,48 @@ return [
|
|||
'no-records' => 'Nada para exportar',
|
||||
'illegal-format' => 'Erro! Este tipo de formato não é suportado ou seu formato ilegal'
|
||||
],
|
||||
|
||||
'cms' => [
|
||||
'pages' => [
|
||||
'general' => 'Geral',
|
||||
'seo' => 'SEO',
|
||||
'pages' => 'Páginas',
|
||||
'title' => 'Páginas',
|
||||
'add-title' => 'Adicionar Página',
|
||||
'content' => 'Conteúdo',
|
||||
'url-key' => 'Chave de URL',
|
||||
'channel' => 'Canais',
|
||||
'locale' => 'Localidades',
|
||||
'create-btn-title' => 'Salvar pagina',
|
||||
'edit-title' => 'Editar Página',
|
||||
'edit-btn-title' => 'Salvar pagina',
|
||||
'create-success' => 'Página criada com sucesso',
|
||||
'create-partial' => 'Algumas das páginas solicitadas já existem',
|
||||
'create-failure' => 'Todas as páginas solicitadas já existem',
|
||||
'update-success' => 'Página atualizada com sucesso',
|
||||
'update-failure' => 'A página não pode ser atualizada',
|
||||
'page-title' => 'Título da página',
|
||||
'layout' => 'Layout',
|
||||
'meta_keywords' => 'Meta Palavras-chave',
|
||||
'meta_description' => 'Meta Descrição',
|
||||
'meta_title' => 'Meta Título',
|
||||
'delete-success' => 'Página CMS excluída com sucesso',
|
||||
'delete-failure' => 'A página do CMS não pode ser excluída',
|
||||
'preview' => 'Pré-visualização',
|
||||
'one-col' => '<div class="mt-10">Use class: <b>"static-container one-column"</b> para um layout de coluna.</div>',
|
||||
'two-col' => '<div class="mt-10">Use class: <b>"static-container two-column"</b> para layout de duas colunas.</div>',
|
||||
'three-col' => '<div class="mt-10">Use class: <b>"static-container three-column"</b> para layout de três colunas.</div>',
|
||||
'helper-classes' => 'Helper Classes'
|
||||
]
|
||||
],
|
||||
|
||||
'response' => [
|
||||
'being-used' => 'Este recurso :name está sendo usado em :source',
|
||||
'cannot-delete-default' => 'Não é possível excluir o canal padrão',
|
||||
'create-success' => ':name criado com sucesso.',
|
||||
'update-success' => ':name atualizaco com sucesso.',
|
||||
'delete-success' => ':name excluído com sucesso.',
|
||||
'delete-failed' => 'Erro encontrado ao excluir :name.',
|
||||
'last-delete-error' => 'Ao menos um :name é obrigatório.',
|
||||
'user-define-error' => 'Não pode excluir o sistema :name',
|
||||
'attribute-error' => ':name é usado em produtos configuráveis.',
|
||||
|
|
@ -995,7 +1218,8 @@ return [
|
|||
'create-root-failure' => 'A categoria com nome root já existe',
|
||||
'cancel-success' => ':name cancelado com sucesso.',
|
||||
'cancel-error' => ':name não pode ser cancelado.',
|
||||
'already-taken' => 'O :name já foi tomada.'
|
||||
'already-taken' => 'O :name já foi tomada.',
|
||||
'order-pending' => 'Não é possível excluir a conta porque alguns pedidos estão em estado pendente ou em processamento.'
|
||||
],
|
||||
|
||||
'footer' => [
|
||||
|
|
@ -1003,14 +1227,34 @@ return [
|
|||
],
|
||||
|
||||
'admin' => [
|
||||
'emails' => [
|
||||
'email' => 'O email',
|
||||
'notification_label' => 'Notificações',
|
||||
'notifications' => [
|
||||
'verification' => 'Enviar email de verificação',
|
||||
'registration' => 'Enviar registro E-mail',
|
||||
'customer' => 'Enviar e-mail do cliente',
|
||||
'new-order' => 'Enviar E-mail de Confirmação de Pedido',
|
||||
'new-admin' => 'Enviar email de convite de administrador',
|
||||
'new-invoice' => 'Enviar e-mail de confirmação da fatura',
|
||||
'new-refund' => 'Enviar email de notificação de reembolso',
|
||||
'new-shipment' => 'Enviar email de notificação de remessa',
|
||||
'new-inventory-source' => 'Enviar email de notificação de origem de inventário',
|
||||
'cancel-order' => 'Enviar cancelar E-mail de notificação de pedido',
|
||||
],
|
||||
|
||||
],
|
||||
'system' => [
|
||||
'catalog' => 'Catálogo',
|
||||
'products' => 'Produtos',
|
||||
'review' => 'Reveja',
|
||||
'allow-guest-review' => 'Permitir comentário de convidado',
|
||||
'guest-checkout' => 'Compras sem cadastro?',
|
||||
'allow-guest-checkout' => 'Permitir compra para clientes sem cadastros?',
|
||||
'allow-guest-checkout-hint' => 'Dica: se ativada, esta opção pode ser configurada para cada produto especificamente.',
|
||||
'review' => 'Avaliações',
|
||||
'allow-guest-review' => 'Permitir comentários sem cadastro?',
|
||||
'inventory' => 'Inventário',
|
||||
'stock-options' => 'Opções de ações',
|
||||
'allow-backorders' => 'Permitir atrasos',
|
||||
'allow-backorders' => 'Permitir Pedidos pelo Admin',
|
||||
'customer' => 'Cliente',
|
||||
'settings' => 'Definições',
|
||||
'address' => 'Endereço',
|
||||
|
|
@ -1045,22 +1289,36 @@ return [
|
|||
'footer' => 'Rodapé',
|
||||
'content' => 'Conteúdo',
|
||||
'footer-content' => 'Texto de rodapé',
|
||||
'footer-toggle' => 'Alternar rodapé',
|
||||
'locale-options' => 'Opções de unidade',
|
||||
'weight-unit' => 'Unidade de peso',
|
||||
'admin-page-limit' => 'Itens padrão por página (administrador)',
|
||||
'design' => 'Design',
|
||||
'email-settings' => 'Configurações de Email',
|
||||
'email-sender-name' => 'Nome do Email da Loja',
|
||||
'shop-email-from' => 'Endereço de Email da Loja [Para enviar emails]',
|
||||
'admin-name' => 'Admin Nome',
|
||||
'admin-email' => 'Admin Email',
|
||||
'admin-page-limit' => 'Quantidade Padrão de Itens por Página (Admin)',
|
||||
'design' => 'Design',
|
||||
'admin-logo' => 'Admin Logo',
|
||||
'logo-image' => 'Logo Imagem',
|
||||
'credit-max' => 'Máximo de crédito do cliente',
|
||||
'credit-max-value' => 'Valor Máximo de Crédito',
|
||||
'use-credit-max' => 'Use o máximo de crédito',
|
||||
'order-settings' => 'Order Settings',
|
||||
'orderNumber' => 'Order Number Settings',
|
||||
'order-number-prefix' => 'Order Number Prefix',
|
||||
'order-number-length' => 'Order Number Length',
|
||||
'order-number-suffix' => 'Order Number Suffix',
|
||||
'order-settings' => 'Configurações do Pedido',
|
||||
'orderNumber' => 'Configuração do Número do Pedido',
|
||||
'order-number-prefix' => 'Prefixo do Número do Pedido',
|
||||
'order-number-length' => 'Tamanho do Número do Pedido',
|
||||
'order-number-suffix' => 'Sufixo do Número de Pedido',
|
||||
'default' => 'Padrão',
|
||||
'sandbox' => 'Sandbox',
|
||||
'invoice-slip-design' => 'Invoice Slip Design',
|
||||
'logo' => 'logo'
|
||||
'all-channels' => 'Todos',
|
||||
'all-locales' => 'Todos',
|
||||
'sandbox' => 'Sandbox',
|
||||
'invoice-slip-design' => 'Design da Nota do Pedido',
|
||||
'logo' => 'logo',
|
||||
'favicon' => 'Favicon'
|
||||
]
|
||||
]
|
||||
];
|
||||
];
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
<div class="page-action">
|
||||
<a href="{{ route('admin.catalog.attributes.create') }}" class="btn btn-lg btn-primary">
|
||||
{{ __('Add Attribute') }}
|
||||
{{ __('admin::app.catalog.attributes.add-title') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -28,4 +28,4 @@
|
|||
|
||||
{!! view_render_event('bagisto.admin.catalog.attributes.list.after') !!}
|
||||
</div>
|
||||
@stop
|
||||
@stop
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
<div class="page-action">
|
||||
<button type="submit" class="btn btn-lg btn-primary">
|
||||
{{ __('admin::app.save') }} {{ __('admin::app.category') }}
|
||||
{{ __('admin::app.catalog.categories.save-btn-title') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@
|
|||
|
||||
<div class="control-group" :class="[errors.has('{{$locale}}[name]') ? 'has-error' : '']">
|
||||
<label for="name" class="required">{{ __('admin::app.catalog.categories.name') }}</label>
|
||||
<input type="text" v-validate="'required'" class="control" id="name" name="{{$locale}}[name]" value="{{ old($locale)['name'] ?? $category->translate($locale)['name'] }}" data-vv-as=""{{ __('admin::app.catalog.categories.name') }}"" v-slugify-target="'slug'"/>
|
||||
<input type="text" v-validate="'required'" class="control" id="name" name="{{$locale}}[name]" value="{{ old($locale)['name'] ?? ($category->translate($locale)['name'] ?? '') }}" data-vv-as=""{{ __('admin::app.catalog.categories.name') }}"" v-slugify-target="'slug'"/>
|
||||
<span class="control-error" v-if="errors.has('{{$locale}}[name]')">@{{ errors.first('{!!$locale!!}[name]') }}</span>
|
||||
</div>
|
||||
|
||||
|
|
@ -180,23 +180,23 @@
|
|||
|
||||
<div class="control-group">
|
||||
<label for="meta_title">{{ __('admin::app.catalog.categories.meta_title') }}</label>
|
||||
<input type="text" class="control" id="meta_title" name="{{$locale}}[meta_title]" value="{{ old($locale)['meta_title'] ?? $category->translate($locale)['meta_title'] }}"/>
|
||||
<input type="text" class="control" id="meta_title" name="{{$locale}}[meta_title]" value="{{ old($locale)['meta_title'] ?? ($category->translate($locale)['meta_title'] ?? '') }}"/>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('{{$locale}}[slug]') ? 'has-error' : '']">
|
||||
<label for="slug" class="required">{{ __('admin::app.catalog.categories.slug') }}</label>
|
||||
<input type="text" v-validate="'required'" class="control" id="slug" name="{{$locale}}[slug]" value="{{ old($locale)['slug'] ?? $category->translate($locale)['slug'] }}" data-vv-as=""{{ __('admin::app.catalog.categories.slug') }}"" v-slugify/>
|
||||
<input type="text" v-validate="'required'" class="control" id="slug" name="{{$locale}}[slug]" value="{{ old($locale)['slug'] ?? ($category->translate($locale)['slug'] ?? '') }}" data-vv-as=""{{ __('admin::app.catalog.categories.slug') }}"" v-slugify/>
|
||||
<span class="control-error" v-if="errors.has('{{$locale}}[slug]')">@{{ errors.first('{!!$locale!!}[slug]') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="meta_description">{{ __('admin::app.catalog.categories.meta_description') }}</label>
|
||||
<textarea class="control" id="meta_description" name="{{$locale}}[meta_description]">{{ old($locale)['meta_description'] ?? $category->translate($locale)['meta_description'] }}</textarea>
|
||||
<textarea class="control" id="meta_description" name="{{$locale}}[meta_description]">{{ old($locale)['meta_description'] ?? ($category->translate($locale)['meta_description'] ?? '') }}</textarea>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label for="meta_keywords">{{ __('admin::app.catalog.categories.meta_keywords') }}</label>
|
||||
<textarea class="control" id="meta_keywords" name="{{$locale}}[meta_keywords]">{{ old($locale)['meta_keywords'] ?? $category->translate($locale)['meta_keywords'] }}</textarea>
|
||||
<textarea class="control" id="meta_keywords" name="{{$locale}}[meta_keywords]">{{ old($locale)['meta_keywords'] ?? ($category->translate($locale)['meta_keywords'] ?? '') }}</textarea>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.admin.catalog.category.edit_form_accordian.seo.controls.after', ['category' => $category]) !!}
|
||||
|
|
@ -220,7 +220,7 @@
|
|||
|
||||
<div class="control-group" :class="[errors.has('{{$locale}}[description]') ? 'has-error' : '']">
|
||||
<label for="description" :class="isRequired ? 'required' : ''">{{ __('admin::app.catalog.categories.description') }}</label>
|
||||
<textarea v-validate="isRequired ? 'required' : ''" class="control" id="description" name="{{$locale}}[description]" data-vv-as=""{{ __('admin::app.catalog.categories.description') }}"">{{ old($locale)['description'] ?? $category->translate($locale)['description'] }}</textarea>
|
||||
<textarea v-validate="isRequired ? 'required' : ''" class="control" id="description" name="{{$locale}}[description]" data-vv-as=""{{ __('admin::app.catalog.categories.description') }}"">{{ old($locale)['description'] ?? ($category->translate($locale)['description'] ?? '') }}</textarea>
|
||||
<span class="control-error" v-if="errors.has('{{$locale}}[description]')">@{{ errors.first('{!!$locale!!}[description]') }}</span>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
<div class="control-group {!! $errors->has('images.*') ? 'has-error' : '' !!}">
|
||||
<label>{{ __('admin::app.catalog.categories.image') }}</label>
|
||||
|
||||
<image-wrapper :button-label="'{{ __('admin::app.catalog.products.add-image-btn-title') }}'" input-name="images" :images='@json($product->images)'></image-wrapper>
|
||||
<product-image></product-image>
|
||||
|
||||
<span class="control-error" v-if="{!! $errors->has('images.*') !!}">
|
||||
@php $count=1 @endphp
|
||||
|
|
@ -23,4 +23,171 @@
|
|||
</div>
|
||||
</accordian>
|
||||
|
||||
{!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.images.after', ['product' => $product]) !!}
|
||||
{!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.images.after', ['product' => $product]) !!}
|
||||
|
||||
@push('scripts')
|
||||
@parent
|
||||
|
||||
<script type="text/x-template" id="product-image-template">
|
||||
<div>
|
||||
<div class="image-wrapper">
|
||||
<product-image-item
|
||||
v-for='(image, index) in items'
|
||||
:key='image.id'
|
||||
:image="image"
|
||||
@onRemoveImage="removeImage($event)"
|
||||
@onImageSelected="imageSelected($event)"
|
||||
></product-image-item>
|
||||
</div>
|
||||
|
||||
<label class="btn btn-lg btn-primary" style="display: inline-block; width: auto" @click="createFileType">
|
||||
{{ __('admin::app.catalog.products.add-image-btn-title') }}
|
||||
</label>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/x-template" id="product-image-item-template">
|
||||
<label class="image-item" v-bind:class="{ 'has-image': imageData.length > 0 }">
|
||||
<input type="hidden" :name="'images[' + image.id + ']'" v-if="! new_image"/>
|
||||
|
||||
<input type="file" v-validate="'mimes:image/*'" accept="image/*" :name="'images[]'" ref="imageInput" :id="_uid" @change="addImageView($event)" multiple="multiple"/>
|
||||
|
||||
<img class="preview" :src="imageData" v-if="imageData.length > 0">
|
||||
|
||||
<label class="remove-image" @click="removeImage()">Remove Image</label>
|
||||
</label>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
Vue.component('product-image', {
|
||||
|
||||
template: '#product-image-template',
|
||||
|
||||
data: function() {
|
||||
return {
|
||||
images: @json($product->images),
|
||||
|
||||
imageCount: 0,
|
||||
|
||||
items: []
|
||||
}
|
||||
},
|
||||
|
||||
computed: {
|
||||
finalInputName: function() {
|
||||
return 'images[' + this.image.id + ']';
|
||||
}
|
||||
},
|
||||
|
||||
created: function() {
|
||||
var this_this = this;
|
||||
|
||||
this.images.forEach(function(image) {
|
||||
this_this.items.push(image)
|
||||
|
||||
this_this.imageCount++;
|
||||
});
|
||||
},
|
||||
|
||||
methods: {
|
||||
createFileType: function() {
|
||||
var this_this = this;
|
||||
|
||||
this.imageCount++;
|
||||
|
||||
this.items.push({'id': 'image_' + this.imageCount});
|
||||
},
|
||||
|
||||
removeImage (image) {
|
||||
let index = this.items.indexOf(image)
|
||||
|
||||
Vue.delete(this.items, index);
|
||||
},
|
||||
|
||||
imageSelected: function(event) {
|
||||
var this_this = this;
|
||||
|
||||
Array.from(event.files).forEach(function(image, index) {
|
||||
if (index) {
|
||||
this_this.imageCount++;
|
||||
|
||||
this_this.items.push({'id': 'image_' + this_this.imageCount, file: image});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Vue.component('product-image-item', {
|
||||
|
||||
template: '#product-image-item-template',
|
||||
|
||||
props: {
|
||||
image: {
|
||||
type: Object,
|
||||
required: false,
|
||||
default: null
|
||||
},
|
||||
},
|
||||
|
||||
data: function() {
|
||||
return {
|
||||
imageData: '',
|
||||
|
||||
new_image: 0
|
||||
}
|
||||
},
|
||||
|
||||
mounted () {
|
||||
if (this.image.id && this.image.url) {
|
||||
this.imageData = this.image.url;
|
||||
} else if (this.image.id && this.image.file) {
|
||||
this.readFile(this.image.file);
|
||||
}
|
||||
},
|
||||
|
||||
computed: {
|
||||
finalInputName: function() {
|
||||
return this.inputName + '[' + this.image.id + ']';
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
addImageView: function() {
|
||||
var imageInput = this.$refs.imageInput;
|
||||
|
||||
if (imageInput.files && imageInput.files[0]) {
|
||||
if (imageInput.files[0].type.includes('image/')) {
|
||||
this.readFile(imageInput.files[0])
|
||||
|
||||
if (imageInput.files.length > 1) {
|
||||
this.$emit('onImageSelected', imageInput)
|
||||
}
|
||||
} else {
|
||||
imageInput.value = "";
|
||||
|
||||
alert('Only images (.jpeg, .jpg, .png, ..) are allowed.');
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
readFile: function(image) {
|
||||
var reader = new FileReader();
|
||||
|
||||
reader.onload = (e) => {
|
||||
this.imageData = e.target.result;
|
||||
}
|
||||
|
||||
reader.readAsDataURL(image);
|
||||
|
||||
this.new_image = 1;
|
||||
},
|
||||
|
||||
removeImage: function() {
|
||||
this.$emit('onRemoveImage', this.image)
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
@endpush
|
||||
|
|
@ -148,14 +148,14 @@
|
|||
|
||||
<td>
|
||||
<div class="control-group" :class="[errors.has(variantInputName + '[price]') ? 'has-error' : '']">
|
||||
<input type="number" v-validate="'required|min_value:0.0001'" v-model="variant.price" :name="[variantInputName + '[price]']" class="control" data-vv-as=""{{ __('admin::app.catalog.products.price') }}"" step="any"/>
|
||||
<input type="number" v-validate="'required'" v-model="variant.price" :name="[variantInputName + '[price]']" class="control" data-vv-as=""{{ __('admin::app.catalog.products.price') }}"" step="any"/>
|
||||
<span class="control-error" v-if="errors.has(variantInputName + '[price]')">@{{ errors.first(variantInputName + '[price]') }}</span>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<div class="control-group" :class="[errors.has(variantInputName + '[weight]') ? 'has-error' : '']">
|
||||
<input type="number" v-validate="'required|min_value:0.0001'" v-model="variant.weight" :name="[variantInputName + '[weight]']" class="control" data-vv-as=""{{ __('admin::app.catalog.products.weight') }}"" step="any"/>
|
||||
<input type="number" v-validate="'required'" v-model="variant.weight" :name="[variantInputName + '[weight]']" class="control" data-vv-as=""{{ __('admin::app.catalog.products.weight') }}"" step="any"/>
|
||||
<span class="control-error" v-if="errors.has(variantInputName + '[weight]')">@{{ errors.first(variantInputName + '[weight]') }}</span>
|
||||
</div>
|
||||
</td>
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@
|
|||
</option>
|
||||
|
||||
@foreach (core()->getAllChannels() as $channelModel)
|
||||
|
||||
<option
|
||||
value="{{ $channelModel->code }}" {{ (isset($channel) && ($channelModel->code) == $channel) ? 'selected' : '' }}>
|
||||
{{ $channelModel->name }}
|
||||
|
|
@ -90,6 +89,6 @@
|
|||
|
||||
window.location.href = url.href;
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
@endpush
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
@extends('address::admin.layouts.content')
|
||||
@extends('admin::layouts.content')
|
||||
|
||||
@section('page_title')
|
||||
{{ __('address::app.admin.addresses.title-orders', ['customer_name' => $customer->first_name . ' ' . $customer->last_name]) }}
|
||||
|
|
|
|||
|
|
@ -31,24 +31,32 @@
|
|||
<div class="form-container">
|
||||
@csrf()
|
||||
|
||||
{!! view_render_event('bagisto.admin.customers.create.before') !!}
|
||||
|
||||
<div class="control-group" :class="[errors.has('first_name') ? 'has-error' : '']">
|
||||
<label for="first_name" class="required">{{ __('admin::app.customers.customers.first_name') }}</label>
|
||||
<input type="text" class="control" name="first_name" v-validate="'required'" value="{{ old('first_name') }}" data-vv-as=""{{ __('shop::app.customer.signup-form.firstname') }}"">
|
||||
<span class="control-error" v-if="errors.has('first_name')">@{{ errors.first('first_name') }}</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.admin.customers.create.first_name.after') !!}
|
||||
|
||||
<div class="control-group" :class="[errors.has('last_name') ? 'has-error' : '']">
|
||||
<label for="last_name" class="required">{{ __('admin::app.customers.customers.last_name') }}</label>
|
||||
<input type="text" class="control" name="last_name" v-validate="'required'" value="{{ old('last_name') }}" data-vv-as=""{{ __('shop::app.customer.signup-form.lastname') }}"">
|
||||
<span class="control-error" v-if="errors.has('last_name')">@{{ errors.first('last_name') }}</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.admin.customers.create.last_name.after') !!}
|
||||
|
||||
<div class="control-group" :class="[errors.has('email') ? 'has-error' : '']">
|
||||
<label for="email" class="required">{{ __('shop::app.customer.signup-form.email') }}</label>
|
||||
<input type="email" class="control" name="email" v-validate="'required|email'" value="{{ old('email') }}" data-vv-as=""{{ __('shop::app.customer.signup-form.email') }}"">
|
||||
<span class="control-error" v-if="errors.has('email')">@{{ errors.first('email') }}</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.admin.customers.create.email.after') !!}
|
||||
|
||||
<div class="control-group" :class="[errors.has('gender') ? 'has-error' : '']">
|
||||
<label for="gender" class="required">{{ __('admin::app.customers.customers.gender') }}</label>
|
||||
<select name="gender" class="control" v-validate="'required'" data-vv-as=""{{ __('admin::app.customers.customers.gender') }}"">
|
||||
|
|
@ -60,18 +68,24 @@
|
|||
<span class="control-error" v-if="errors.has('gender')">@{{ errors.first('gender') }}</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.admin.customers.create.gender.after') !!}
|
||||
|
||||
<div class="control-group" :class="[errors.has('date_of_birth') ? 'has-error' : '']">
|
||||
<label for="dob">{{ __('admin::app.customers.customers.date_of_birth') }}</label>
|
||||
<input type="date" class="control" name="date_of_birth" v-validate="" value="{{ old('date_of_birth') }}" data-vv-as=""{{ __('admin::app.customers.customers.date_of_birth') }}"">
|
||||
<span class="control-error" v-if="errors.has('date_of_birth')">@{{ errors.first('date_of_birth') }}</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.admin.customers.create.date_of_birth.after') !!}
|
||||
|
||||
<div class="control-group" :class="[errors.has('phone') ? 'has-error' : '']">
|
||||
<label for="phone">{{ __('admin::app.customers.customers.phone') }}</label>
|
||||
<input type="text" class="control" name="phone" value="{{ old('phone') }}" data-vv-as=""{{ __('admin::app.customers.customers.phone') }}"">
|
||||
<span class="control-error" v-if="errors.has('phone')">@{{ errors.first('phone') }}</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.admin.customers.create.phone.after') !!}
|
||||
|
||||
<div class="control-group">
|
||||
<label for="customerGroup" >{{ __('admin::app.customers.customers.customer_group') }}</label>
|
||||
<select class="control" name="customer_group_id">
|
||||
|
|
@ -80,6 +94,8 @@
|
|||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.admin.customers.create.after') !!}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
|||
|
|
@ -36,6 +36,8 @@
|
|||
<accordian :title="'{{ __('admin::app.account.general') }}'" :active="true">
|
||||
<div slot="body">
|
||||
|
||||
{!! view_render_event('bagisto.admin.customer.edit.form.before', ['customer' => $customer]) !!}
|
||||
|
||||
<div class="control-group" :class="[errors.has('first_name') ? 'has-error' : '']">
|
||||
<label for="first_name" class="required"> {{ __('admin::app.customers.customers.first_name') }}</label>
|
||||
<input type="text" class="control" name="first_name" v-validate="'required'" value="{{old('first_name') ?:$customer->first_name}}"
|
||||
|
|
@ -43,18 +45,24 @@
|
|||
<span class="control-error" v-if="errors.has('first_name')">@{{ errors.first('first_name') }}</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.admin.customer.edit.first_name.after', ['customer' => $customer]) !!}
|
||||
|
||||
<div class="control-group" :class="[errors.has('last_name') ? 'has-error' : '']">
|
||||
<label for="last_name" class="required"> {{ __('admin::app.customers.customers.last_name') }}</label>
|
||||
<input type="text" class="control" name="last_name" v-validate="'required'" value="{{old('last_name') ?:$customer->last_name}}" data-vv-as=""{{ __('shop::app.customer.signup-form.lastname') }}"">
|
||||
<span class="control-error" v-if="errors.has('last_name')">@{{ errors.first('last_name') }}</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.admin.customer.edit.last_name.after', ['customer' => $customer]) !!}
|
||||
|
||||
<div class="control-group" :class="[errors.has('email') ? 'has-error' : '']">
|
||||
<label for="email" class="required"> {{ __('admin::app.customers.customers.email') }}</label>
|
||||
<input type="email" class="control" name="email" v-validate="'required|email'" value="{{old('email') ?:$customer->email}}" data-vv-as=""{{ __('shop::app.customer.signup-form.email') }}"">
|
||||
<span class="control-error" v-if="errors.has('email')">@{{ errors.first('email') }}</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.admin.customer.edit.email.after', ['customer' => $customer]) !!}
|
||||
|
||||
<div class="control-group" :class="[errors.has('gender') ? 'has-error' : '']">
|
||||
<label for="gender" class="required">{{ __('admin::app.customers.customers.gender') }}</label>
|
||||
<select name="gender" class="control" value="{{ $customer->gender }}" v-validate="'required'" data-vv-as=""{{ __('admin::app.customers.customers.gender') }}"">
|
||||
|
|
@ -66,6 +74,8 @@
|
|||
<span class="control-error" v-if="errors.has('gender')">@{{ errors.first('gender') }}</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.admin.customer.edit.gender.after', ['customer' => $customer]) !!}
|
||||
|
||||
<div class="control-group">
|
||||
<label for="status" class="required">{{ __('admin::app.customers.customers.status') }}</label>
|
||||
|
||||
|
|
@ -77,18 +87,24 @@
|
|||
<span class="control-error" v-if="errors.has('status')">@{{ errors.first('status') }}</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.admin.customer.edit.status.after', ['customer' => $customer]) !!}
|
||||
|
||||
<div class="control-group" :class="[errors.has('date_of_birth') ? 'has-error' : '']">
|
||||
<label for="dob">{{ __('admin::app.customers.customers.date_of_birth') }}</label>
|
||||
<input type="date" class="control" name="date_of_birth" value="{{ old('date_of_birth') ?:$customer->date_of_birth }}" v-validate="" data-vv-as=""{{ __('admin::app.customers.customers.date_of_birth') }}"">
|
||||
<span class="control-error" v-if="errors.has('date_of_birth')">@{{ errors.first('date_of_birth') }}</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.admin.customer.edit.date_of_birth.after', ['customer' => $customer]) !!}
|
||||
|
||||
<div class="control-group" :class="[errors.has('phone') ? 'has-error' : '']">
|
||||
<label for="phone">{{ __('admin::app.customers.customers.phone') }}</label>
|
||||
<input type="text" class="control" name="phone" value="{{ $customer->phone }}" data-vv-as=""{{ __('admin::app.customers.customers.phone') }}"">
|
||||
<span class="control-error" v-if="errors.has('phone')">@{{ errors.first('phone') }}</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('bagisto.admin.customer.edit.phone.after', ['customer' => $customer]) !!}
|
||||
|
||||
<div class="control-group">
|
||||
<label for="customerGroup" >{{ __('admin::app.customers.customers.customer_group') }}</label>
|
||||
|
||||
|
|
|
|||
|
|
@ -7,8 +7,12 @@
|
|||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
|
||||
<link rel="icon" sizes="16x16" href="{{ asset('vendor/webkul/ui/assets/images/favicon.ico') }}" />
|
||||
|
||||
@if ($favicon = core()->getConfigData('general.design.admin_logo.favicon'))
|
||||
<link rel="icon" sizes="16x16" href="{{ \Illuminate\Support\Facades\Storage::url($favicon) }}" />
|
||||
@else
|
||||
<link rel="icon" sizes="16x16" href="{{ asset('vendor/webkul/ui/assets/images/favicon.ico') }}" />
|
||||
@endif
|
||||
|
||||
<link rel="stylesheet" href="{{ asset('vendor/webkul/admin/assets/css/admin.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('vendor/webkul/ui/assets/css/ui.css') }}">
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,12 @@
|
|||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
<link rel="icon" sizes="16x16" href="{{ asset('vendor/webkul/ui/assets/images/favicon.ico') }}" />
|
||||
|
||||
@if ($favicon = core()->getConfigData('general.design.admin_logo.favicon'))
|
||||
<link rel="icon" sizes="16x16" href="{{ \Illuminate\Support\Facades\Storage::url($favicon) }}" />
|
||||
@else
|
||||
<link rel="icon" sizes="16x16" href="{{ asset('vendor/webkul/ui/assets/images/favicon.ico') }}" />
|
||||
@endif
|
||||
|
||||
<link rel="stylesheet" href="{{ asset('vendor/webkul/ui/assets/css/ui.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('vendor/webkul/admin/assets/css/admin.css') }}">
|
||||
|
|
|
|||
|
|
@ -447,10 +447,10 @@
|
|||
'operator': '<=',
|
||||
'label': '{{ __('admin::app.promotions.cart-rules.equals-or-less-than') }}'
|
||||
}, {
|
||||
'operator': '<=',
|
||||
'operator': '>',
|
||||
'label': '{{ __('admin::app.promotions.cart-rules.greater-than') }}'
|
||||
}, {
|
||||
'operator': '<=',
|
||||
'operator': '<',
|
||||
'label': '{{ __('admin::app.promotions.cart-rules.less-than') }}'
|
||||
}],
|
||||
'decimal': [{
|
||||
|
|
|
|||
|
|
@ -535,10 +535,10 @@
|
|||
'operator': '<=',
|
||||
'label': '{{ __('admin::app.promotions.cart-rules.equals-or-less-than') }}'
|
||||
}, {
|
||||
'operator': '<=',
|
||||
'operator': '>',
|
||||
'label': '{{ __('admin::app.promotions.cart-rules.greater-than') }}'
|
||||
}, {
|
||||
'operator': '<=',
|
||||
'operator': '<',
|
||||
'label': '{{ __('admin::app.promotions.cart-rules.less-than') }}'
|
||||
}],
|
||||
'decimal': [{
|
||||
|
|
|
|||
|
|
@ -5,14 +5,47 @@
|
|||
@stop
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="content">
|
||||
<?php $customer_group = request()->get('customer_group') ?: null; ?>
|
||||
<?php $channel = request()->get('channel') ?: null; ?>
|
||||
<div class="page-header">
|
||||
<div class="page-title">
|
||||
<h1>{{ __('admin::app.promotions.cart-rules.title') }}</h1>
|
||||
</div>
|
||||
|
||||
<div class="page-action">
|
||||
<div class="control-group">
|
||||
<select class="control" id="channel-switcher" name="channel" onchange="reloadPage('channel', this.value)" >
|
||||
<option value="all" {{ ! isset($channel) ? 'selected' : '' }}>
|
||||
{{ __('admin::app.admin.system.all-channels') }}
|
||||
</option>
|
||||
|
||||
@foreach (core()->getAllChannels() as $channelModel)
|
||||
<option
|
||||
value="{{ $channelModel->id }}" {{ (isset($channel) && ($channelModel->id) == $channel) ? 'selected' : '' }}>
|
||||
{{ $channelModel->name }}
|
||||
</option>
|
||||
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<select class="control" id="customer-group-switcher" name="customer_group" onchange="reloadPage('customer_group', this.value)" >
|
||||
<option value="all" {{ ! isset($locale) ? 'selected' : '' }}>
|
||||
{{ __('admin::app.admin.system.all-customer-groups') }}
|
||||
</option>
|
||||
|
||||
@foreach (core()->getAllCustomerGroups() as $customerGroupModel)
|
||||
<option
|
||||
value="{{ $customerGroupModel->id }}" {{ (isset($customerGroupModel) && ($customerGroupModel->id) == $customer_group) ? 'selected' : '' }}>
|
||||
{{ $customerGroupModel->name }}
|
||||
</option>
|
||||
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<a href="{{ route('admin.cart-rules.create') }}" class="btn btn-lg btn-primary">
|
||||
{{ __('admin::app.promotions.cart-rules.add-title') }}
|
||||
</a>
|
||||
|
|
@ -24,4 +57,15 @@
|
|||
{!! $cartRuleGrid->render() !!}
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@endsection
|
||||
@push('scripts')
|
||||
<script>
|
||||
function reloadPage(getVar, getVal) {
|
||||
let url = new URL(window.location.href);
|
||||
url.searchParams.set(getVar, getVal);
|
||||
|
||||
window.location.href = url.href;
|
||||
}
|
||||
|
||||
</script>
|
||||
@endpush
|
||||
|
|
|
|||
|
|
@ -87,9 +87,11 @@
|
|||
<div class="container">
|
||||
|
||||
<div class="header">
|
||||
<div class="image">
|
||||
<img class="logo" src="{{ Storage::url(core()->getConfigData('sales.orderSettings.invoice_slip_design.logo')) }}"/>
|
||||
</div>
|
||||
@if (core()->getConfigData('sales.orderSettings.invoice_slip_design.logo'))
|
||||
<div class="image">
|
||||
<img class="logo" src="{{ Storage::url(core()->getConfigData('sales.orderSettings.invoice_slip_design.logo')) }}"/>
|
||||
</div>
|
||||
@endif
|
||||
<div class="address">
|
||||
<p>
|
||||
<b> {{ core()->getConfigData('sales.orderSettings.invoice_slip_design.address') }} </b>
|
||||
|
|
|
|||
|
|
@ -12,16 +12,24 @@
|
|||
<div class="page-header">
|
||||
<div class="page-title">
|
||||
<h1>
|
||||
{!! view_render_event('sales.invoice.title.before', ['order' => $order]) !!}
|
||||
|
||||
<i class="icon angle-left-icon back-link" onclick="history.length > 1 ? history.go(-1) : window.location = '{{ url('/admin/dashboard') }}';"></i>
|
||||
|
||||
{{ __('admin::app.sales.invoices.view-title', ['invoice_id' => $invoice->id]) }}
|
||||
|
||||
{!! view_render_event('sales.invoice.title.after', ['order' => $order]) !!}
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<div class="page-action">
|
||||
{!! view_render_event('sales.invoice.page_action.before', ['order' => $order]) !!}
|
||||
|
||||
<a href="{{ route('admin.sales.invoices.print', $invoice->id) }}" class="btn btn-lg btn-primary">
|
||||
{{ __('admin::app.sales.invoices.print') }}
|
||||
</a>
|
||||
|
||||
{!! view_render_event('sales.invoice.page_action.after', ['order' => $order]) !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -47,6 +55,8 @@
|
|||
</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('sales.invoice.increment_id.after', ['order' => $order]) !!}
|
||||
|
||||
<div class="row">
|
||||
<span class="title">
|
||||
{{ __('admin::app.sales.orders.order-date') }}
|
||||
|
|
@ -57,6 +67,8 @@
|
|||
</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('sales.invoice.created_at.after', ['order' => $order]) !!}
|
||||
|
||||
<div class="row">
|
||||
<span class="title">
|
||||
{{ __('admin::app.sales.orders.order-status') }}
|
||||
|
|
@ -67,6 +79,8 @@
|
|||
</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('sales.invoice.status_label.after', ['order' => $order]) !!}
|
||||
|
||||
<div class="row">
|
||||
<span class="title">
|
||||
{{ __('admin::app.sales.orders.channel') }}
|
||||
|
|
@ -76,6 +90,8 @@
|
|||
{{ $order->channel_name }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('sales.invoice.channel_name.after', ['order' => $order]) !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -95,6 +111,8 @@
|
|||
</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('sales.invoice.customer_name.after', ['order' => $order]) !!}
|
||||
|
||||
<div class="row">
|
||||
<span class="title">
|
||||
{{ __('admin::app.sales.orders.email') }}
|
||||
|
|
@ -104,6 +122,8 @@
|
|||
{{ $invoice->address->email }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('sales.invoice.customer_email.after', ['order' => $order]) !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -119,9 +139,9 @@
|
|||
</div>
|
||||
|
||||
<div class="section-content">
|
||||
|
||||
@include ('admin::sales.address', ['address' => $order->billing_address])
|
||||
|
||||
{!! view_render_event('sales.invoice.billing_address.after', ['order' => $order]) !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -132,9 +152,9 @@
|
|||
</div>
|
||||
|
||||
<div class="section-content">
|
||||
|
||||
@include ('admin::sales.address', ['address' => $order->shipping_address])
|
||||
|
||||
{!! view_render_event('sales.invoice.shipping_address.after', ['order' => $order]) !!}
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
|
@ -170,6 +190,8 @@
|
|||
{{ $order->order_currency_code }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('sales.invoice.payment-method.after', ['order' => $order]) !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -199,6 +221,8 @@
|
|||
{{ core()->formatBasePrice($order->base_shipping_amount) }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('sales.invoice.shipping-method.after', ['order' => $order]) !!}
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
|
@ -236,7 +260,7 @@
|
|||
|
||||
@if (isset($item->additional['attributes']))
|
||||
<div class="item-options">
|
||||
|
||||
|
||||
@foreach ($item->additional['attributes'] as $attribute)
|
||||
<b>{{ $attribute['attribute_name'] }} : </b>{{ $attribute['option_label'] }}</br>
|
||||
@endforeach
|
||||
|
|
|
|||
|
|
@ -12,13 +12,19 @@
|
|||
|
||||
<div class="page-title">
|
||||
<h1>
|
||||
{!! view_render_event('sales.order.title.before', ['order' => $order]) !!}
|
||||
|
||||
<i class="icon angle-left-icon back-link" onclick="history.length > 1 ? history.go(-1) : window.location = '{{ url('/admin/dashboard') }}';"></i>
|
||||
|
||||
{{ __('admin::app.sales.orders.view-title', ['order_id' => $order->increment_id]) }}
|
||||
|
||||
{!! view_render_event('sales.order.title.after', ['order' => $order]) !!}
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<div class="page-action">
|
||||
{!! view_render_event('sales.order.page_action.before', ['order' => $order]) !!}
|
||||
|
||||
@if ($order->canCancel())
|
||||
<a href="{{ route('admin.sales.orders.cancel', $order->id) }}" class="btn btn-lg btn-primary" v-alert:message="'{{ __('admin::app.sales.orders.cancel-confirm-msg') }}'">
|
||||
{{ __('admin::app.sales.orders.cancel-btn-title') }}
|
||||
|
|
@ -42,6 +48,8 @@
|
|||
{{ __('admin::app.sales.orders.shipment-btn-title') }}
|
||||
</a>
|
||||
@endif
|
||||
|
||||
{!! view_render_event('sales.order.page_action.after', ['order' => $order]) !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -72,6 +80,8 @@
|
|||
</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('sales.order.created_at.after', ['order' => $order]) !!}
|
||||
|
||||
<div class="row">
|
||||
<span class="title">
|
||||
{{ __('admin::app.sales.orders.order-status') }}
|
||||
|
|
@ -82,6 +92,8 @@
|
|||
</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('sales.order.status_label.after', ['order' => $order]) !!}
|
||||
|
||||
<div class="row">
|
||||
<span class="title">
|
||||
{{ __('admin::app.sales.orders.channel') }}
|
||||
|
|
@ -91,6 +103,8 @@
|
|||
{{ $order->channel_name }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('sales.order.channel_name.after', ['order' => $order]) !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -110,6 +124,8 @@
|
|||
</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('sales.order.customer_full_name.after', ['order' => $order]) !!}
|
||||
|
||||
<div class="row">
|
||||
<span class="title">
|
||||
{{ __('admin::app.sales.orders.email') }}
|
||||
|
|
@ -120,6 +136,8 @@
|
|||
</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('sales.order.customer_email.after', ['order' => $order]) !!}
|
||||
|
||||
@if (! is_null($order->customer))
|
||||
<div class="row">
|
||||
<span class="title">
|
||||
|
|
@ -131,6 +149,8 @@
|
|||
</span>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
{!! view_render_event('sales.order.customer_group.after', ['order' => $order]) !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -146,9 +166,9 @@
|
|||
</div>
|
||||
|
||||
<div class="section-content">
|
||||
|
||||
@include ('admin::sales.address', ['address' => $order->billing_address])
|
||||
|
||||
{!! view_render_event('sales.order.billing_address.after', ['order' => $order]) !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -159,9 +179,9 @@
|
|||
</div>
|
||||
|
||||
<div class="section-content">
|
||||
|
||||
@include ('admin::sales.address', ['address' => $order->shipping_address])
|
||||
|
||||
{!! view_render_event('sales.order.shipping_address.after', ['order' => $order]) !!}
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
|
@ -197,6 +217,8 @@
|
|||
{{ $order->order_currency_code }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('sales.order.payment-method.after', ['order' => $order]) !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -226,6 +248,8 @@
|
|||
{{ core()->formatBasePrice($order->base_shipping_amount) }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
{!! view_render_event('sales.order.shipping-method.after', ['order' => $order]) !!}
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
|
@ -315,66 +339,107 @@
|
|||
</table>
|
||||
</div>
|
||||
|
||||
<table class="sale-summary">
|
||||
<tr>
|
||||
<td>{{ __('admin::app.sales.orders.subtotal') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ core()->formatBasePrice($order->base_sub_total) }}</td>
|
||||
</tr>
|
||||
<div class="summary-comment-container">
|
||||
<div class="comment-container">
|
||||
<form action="{{ route('admin.sales.orders.comment', $order->id) }}" method="post">
|
||||
@csrf()
|
||||
|
||||
@if ($order->haveStockableItems())
|
||||
<div class="control-group" :class="[errors.has('comment') ? 'has-error' : '']">
|
||||
<label for="comment" class="required">{{ __('admin::app.sales.orders.comment') }}</label>
|
||||
<textarea v-validate="'required'" class="control" id="comment" name="comment" data-vv-as=""{{ __('admin::app.sales.orders.comment') }}""></textarea>
|
||||
<span class="control-error" v-if="errors.has('comment')">@{{ errors.first('comment') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<span class="checkbox">
|
||||
<input type="checkbox" name="customer_notified" id="customer-notified" name="checkbox[]">
|
||||
<label class="checkbox-view" for="customer-notified"></label>
|
||||
{{ __('admin::app.sales.orders.notify-customer') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-lg btn-primary">
|
||||
{{ __('admin::app.sales.orders.submit-comment') }}
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<ul class="comment-list">
|
||||
@foreach ($order->comments()->orderBy('id', 'desc')->get() as $comment)
|
||||
<li>
|
||||
<span class="comment-info">
|
||||
@if ($comment->customer_notified)
|
||||
{!! __('admin::app.sales.orders.customer-notified', ['date' => $comment->created_at]) !!}
|
||||
@else
|
||||
{!! __('admin::app.sales.orders.customer-not-notified', ['date' => $comment->created_at]) !!}
|
||||
@endif
|
||||
</span>
|
||||
|
||||
<p>{{ $comment->comment }}</p>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<table class="sale-summary">
|
||||
<tr>
|
||||
<td>{{ __('admin::app.sales.orders.shipping-handling') }}</td>
|
||||
<td>{{ __('admin::app.sales.orders.subtotal') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ core()->formatBasePrice($order->base_shipping_amount) }}</td>
|
||||
<td>{{ core()->formatBasePrice($order->base_sub_total) }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
@if ($order->base_discount_amount > 0)
|
||||
<tr>
|
||||
<td>
|
||||
{{ __('admin::app.sales.orders.discount') }}
|
||||
@if ($order->haveStockableItems())
|
||||
<tr>
|
||||
<td>{{ __('admin::app.sales.orders.shipping-handling') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ core()->formatBasePrice($order->base_shipping_amount) }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
@if ($order->coupon_code)
|
||||
({{ $order->coupon_code }})
|
||||
@endif
|
||||
</td>
|
||||
@if ($order->base_discount_amount > 0)
|
||||
<tr>
|
||||
<td>
|
||||
{{ __('admin::app.sales.orders.discount') }}
|
||||
|
||||
@if ($order->coupon_code)
|
||||
({{ $order->coupon_code }})
|
||||
@endif
|
||||
</td>
|
||||
<td>-</td>
|
||||
<td>{{ core()->formatBasePrice($order->base_discount_amount) }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
<tr class="border">
|
||||
<td>{{ __('admin::app.sales.orders.tax') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ core()->formatBasePrice($order->base_discount_amount) }}</td>
|
||||
<td>{{ core()->formatBasePrice($order->base_tax_amount) }}</td>
|
||||
</tr>
|
||||
@endif
|
||||
|
||||
<tr class="border">
|
||||
<td>{{ __('admin::app.sales.orders.tax') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ core()->formatBasePrice($order->base_tax_amount) }}</td>
|
||||
</tr>
|
||||
<tr class="bold">
|
||||
<td>{{ __('admin::app.sales.orders.grand-total') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ core()->formatBasePrice($order->base_grand_total) }}</td>
|
||||
</tr>
|
||||
|
||||
<tr class="bold">
|
||||
<td>{{ __('admin::app.sales.orders.grand-total') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ core()->formatBasePrice($order->base_grand_total) }}</td>
|
||||
</tr>
|
||||
<tr class="bold">
|
||||
<td>{{ __('admin::app.sales.orders.total-paid') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ core()->formatBasePrice($order->base_grand_total_invoiced) }}</td>
|
||||
</tr>
|
||||
|
||||
<tr class="bold">
|
||||
<td>{{ __('admin::app.sales.orders.total-paid') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ core()->formatBasePrice($order->base_grand_total_invoiced) }}</td>
|
||||
</tr>
|
||||
|
||||
<tr class="bold">
|
||||
<td>{{ __('admin::app.sales.orders.total-refunded') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ core()->formatBasePrice($order->base_grand_total_refunded) }}</td>
|
||||
</tr>
|
||||
|
||||
<tr class="bold">
|
||||
<td>{{ __('admin::app.sales.orders.total-due') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ core()->formatBasePrice($order->base_total_due) }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<tr class="bold">
|
||||
<td>{{ __('admin::app.sales.orders.total-refunded') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ core()->formatBasePrice($order->base_grand_total_refunded) }}</td>
|
||||
</tr>
|
||||
|
||||
<tr class="bold">
|
||||
<td>{{ __('admin::app.sales.orders.total-due') }}</td>
|
||||
<td>-</td>
|
||||
<td>{{ core()->formatBasePrice($order->base_total_due) }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</accordian>
|
||||
|
||||
|
|
|
|||
|
|
@ -263,6 +263,7 @@
|
|||
<th>{{ __('admin::app.sales.orders.SKU') }}</th>
|
||||
<th>{{ __('admin::app.sales.orders.product-name') }}</th>
|
||||
<th>{{ __('admin::app.sales.shipments.qty-ordered') }}</th>
|
||||
<th>{{ __('admin::app.sales.shipments.qty-invoiced') }}</th>
|
||||
<th>{{ __('admin::app.sales.shipments.qty-to-ship') }}</th>
|
||||
<th>{{ __('admin::app.sales.shipments.available-sources') }}</th>
|
||||
</tr>
|
||||
|
|
@ -288,6 +289,7 @@
|
|||
@endif
|
||||
</td>
|
||||
<td>{{ $item->qty_ordered }}</td>
|
||||
<td>{{ $item->qty_invoiced }}</td>
|
||||
<td>{{ $item->qty_to_ship }}</td>
|
||||
<td>
|
||||
|
||||
|
|
@ -324,8 +326,8 @@
|
|||
|
||||
<div class="control-group" :class="[errors.has('{{ $inputName }}') ? 'has-error' : '']">
|
||||
|
||||
<input type="text" v-validate="'required|numeric|min_value:0|max_value:{{$sourceQty}}'" class="control" id="{{ $inputName }}" name="{{ $inputName }}" value="0" data-vv-as=""{{ __('admin::app.sales.shipments.qty-to-ship') }}"" :disabled="source != '{{ $inventorySource->id }}'"/>
|
||||
|
||||
<input type="text" v-validate="'required|numeric|min_value:0|max_value:{{$sourceQty}}'" class="control" id="{{ $inputName }}" name="{{ $inputName }}" value="{{ $item->qty_invoiced }}" data-vv-as=""{{ __('admin::app.sales.shipments.qty-to-ship') }}"" :disabled="source != '{{ $inventorySource->id }}'"/>
|
||||
|
||||
<span class="control-error" v-if="errors.has('{{ $inputName }}')">
|
||||
@verbatim
|
||||
{{ errors.first('<?php echo $inputName; ?>') }}
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@
|
|||
<div class="control-group" :class="[errors.has('target_currency') ? 'has-error' : '']">
|
||||
<select v-validate="'required'" class="control" name="target_currency" data-vv-as=""{{ __('admin::app.settings.exchange_rates.target_currency') }}"">
|
||||
@foreach ($currencies as $currency)
|
||||
@if (is_null($currency->CurrencyExchangeRate))
|
||||
@if (is_null($currency->exchange_rate))
|
||||
<option value="{{ $currency->id }}">{{ $currency->name }}</option>
|
||||
@endif
|
||||
@endforeach
|
||||
|
|
|
|||
|
|
@ -12,25 +12,20 @@
|
|||
</div>
|
||||
|
||||
<div class="page-action">
|
||||
<a href="{{ route('admin.exchange_rates.update_rates') }}" class="btn btn-lg btn-primary">
|
||||
{{ __('admin::app.settings.exchange_rates.update-rates') }}
|
||||
</a>
|
||||
|
||||
<a href="{{ route('admin.exchange_rates.create') }}" class="btn btn-lg btn-primary">
|
||||
{{ __('admin::app.settings.exchange_rates.add-title') }}
|
||||
</a>
|
||||
|
||||
@php
|
||||
$defaultService = config('services.exchange-api.default');
|
||||
@endphp
|
||||
|
||||
{{-- <a href="{{ route('admin.exchange_rates.update-rates', $defaultService) }}" class="btn btn-lg btn-primary">
|
||||
{{ __('admin::app.settings.exchange_rates.update-rates', [
|
||||
'service' => $defaultService
|
||||
]) }}
|
||||
</a> --}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="page-content">
|
||||
@inject('exchange_rates','Webkul\Admin\DataGrids\ExchangeRatesDataGrid')
|
||||
{!! $exchange_rates->render() !!}
|
||||
|
||||
{!! app('Webkul\Admin\DataGrids\ExchangeRatesDataGrid')->render() !!}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
|
|
@ -6,7 +6,12 @@
|
|||
|
||||
@section('content')
|
||||
<div class="content">
|
||||
<form method="POST" action="{{ route('admin.sliders.create') }}" @submit.prevent="onSubmit" enctype="multipart/form-data">
|
||||
<form
|
||||
method="POST"
|
||||
@submit.prevent="onSubmit"
|
||||
enctype="multipart/form-data"
|
||||
action="{{ route('admin.sliders.create') }}">
|
||||
|
||||
<div class="page-header">
|
||||
<div class="page-title">
|
||||
<h1>
|
||||
|
|
@ -29,6 +34,20 @@
|
|||
|
||||
{!! view_render_event('bagisto.admin.settings.slider.create.before') !!}
|
||||
|
||||
<div class="control-group" :class="[errors.has('locale') ? 'has-error' : '']">
|
||||
<label for="locale">{{ __('admin::app.datagrid.locale') }}</label>
|
||||
|
||||
<select class="control" id="locale" name="locale" data-vv-as=""{{ __('admin::app.datagrid.locale') }}"" value="" v-validate="'required'">
|
||||
@foreach (core()->getAllLocales() as $localeModel)
|
||||
|
||||
<option value="{{ $localeModel->code }}" {{ ($localeModel->code) == $locale ? 'selected' : '' }}>
|
||||
{{ $localeModel->name }}
|
||||
</option>
|
||||
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('title') ? 'has-error' : '']">
|
||||
<label for="title" class="required">{{ __('admin::app.settings.sliders.name') }}</label>
|
||||
<input type="text" class="control" name="title" v-validate="'required'" data-vv-as=""{{ __('admin::app.settings.sliders.name') }}"">
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@
|
|||
|
||||
@section('content')
|
||||
<div class="content">
|
||||
<?php $locale = request()->get('locale') ?: app()->getLocale(); ?>
|
||||
|
||||
<form method="POST" action="{{ route('admin.sliders.update', $slider->id) }}" @submit.prevent="onSubmit" enctype="multipart/form-data">
|
||||
<div class="page-header">
|
||||
<div class="page-title">
|
||||
|
|
@ -13,6 +15,11 @@
|
|||
<i class="icon angle-left-icon back-link" onclick="history.length > 1 ? history.go(-1) : window.location = '{{ url('/admin/dashboard') }}';"></i>
|
||||
|
||||
{{ __('admin::app.settings.sliders.edit-title') }}
|
||||
|
||||
@if ($slider->locale)
|
||||
<span class="locale">[{{ $slider->locale }}]</span>
|
||||
@endif
|
||||
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -6,11 +6,49 @@
|
|||
|
||||
@section('content')
|
||||
|
||||
|
||||
<div class="content">
|
||||
|
||||
<?php $locale = request()->get('locale') ?: null; ?>
|
||||
<?php $channel = request()->get('channel') ?: null; ?>
|
||||
|
||||
<div class="page-header">
|
||||
<div class="page-title">
|
||||
<h1>{{ __('admin::app.settings.sliders.title') }}</h1>
|
||||
|
||||
<div class="control-group">
|
||||
<select class="control" id="channel-switcher" name="channel" onchange="reloadPage('channel', this.value)" >
|
||||
<option value="all" {{ ! isset($channel) ? 'selected' : '' }}>
|
||||
{{ __('admin::app.admin.system.all-channels') }}
|
||||
</option>
|
||||
|
||||
@foreach (core()->getAllChannels() as $channelModel)
|
||||
|
||||
<option
|
||||
value="{{ $channelModel->code }}" {{ (isset($channel) && ($channelModel->code) == $channel) ? 'selected' : '' }}>
|
||||
{{ $channelModel->name }}
|
||||
</option>
|
||||
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<select class="control" id="locale-switcher" name="locale" onchange="reloadPage('locale', this.value)" >
|
||||
<option value="all" {{ ! isset($locale) ? 'selected' : '' }}>
|
||||
{{ __('admin::app.admin.system.all-locales') }}
|
||||
</option>
|
||||
|
||||
@foreach (core()->getAllLocales() as $localeModel)
|
||||
|
||||
<option
|
||||
value="{{ $localeModel->code }}" {{ (isset($locale) && ($localeModel->code) == $locale) ? 'selected' : '' }}>
|
||||
{{ $localeModel->name }}
|
||||
</option>
|
||||
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="page-action">
|
||||
|
|
@ -25,4 +63,18 @@
|
|||
{!! $sliders->render() !!}
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@stop
|
||||
|
||||
|
||||
@push('scripts')
|
||||
<script>
|
||||
|
||||
function reloadPage(getVar, getVal) {
|
||||
let url = new URL(window.location.href);
|
||||
url.searchParams.set(getVar, getVal);
|
||||
|
||||
window.location.href = url.href;
|
||||
}
|
||||
|
||||
</script>
|
||||
@endpush
|
||||
|
|
@ -26,22 +26,6 @@
|
|||
<div class="form-container">
|
||||
@csrf()
|
||||
|
||||
<div class="control-group" :class="[errors.has('channel') ? 'has-error' : '']">
|
||||
<label for="channel" class="required">{{ __('admin::app.configuration.tax-categories.select-channel') }}</label>
|
||||
|
||||
<select class="control" name="channel_id">
|
||||
@foreach (core()->getAllChannels() as $channelModel)
|
||||
|
||||
<option value="{{ $channelModel->id }}">
|
||||
{{ $channelModel->name }}
|
||||
</option>
|
||||
|
||||
@endforeach
|
||||
</select>
|
||||
|
||||
<span class="control-error" v-if="errors.has('channel')">@{{ errors.first('channel') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('code') ? 'has-error' : '']">
|
||||
<label for="code" class="required">{{ __('admin::app.configuration.tax-categories.code') }}</label>
|
||||
|
||||
|
|
@ -67,7 +51,7 @@
|
|||
</div>
|
||||
|
||||
<?php $selectedOptions = old('taxrates') ?: [] ?>
|
||||
|
||||
|
||||
<div class="control-group" :class="[errors.has('taxrates[]') ? 'has-error' : '']">
|
||||
<label for="taxrates" class="required">{{ __('admin::app.configuration.tax-categories.select-taxrates') }}</label>
|
||||
|
||||
|
|
|
|||
|
|
@ -27,22 +27,6 @@
|
|||
<div class="form-container">
|
||||
@csrf()
|
||||
@method('PUT')
|
||||
<div class="control-group" :class="[errors.has('channel') ? 'has-error' : '']">
|
||||
<label for="channel" class="required">{{ __('admin::app.settings.tax-categories.select-channel') }}</label>
|
||||
|
||||
<select class="control" name="channel_id">
|
||||
@foreach (core()->getAllChannels() as $channelModel)
|
||||
|
||||
<option @if ($taxCategory->channel_id == $channelModel->id) selected @endif value="{{ $channelModel->id }}">
|
||||
{{ $channelModel->name }}
|
||||
</option>
|
||||
|
||||
@endforeach
|
||||
</select>
|
||||
|
||||
<span class="control-error" v-if="errors.has('channel')">@{{ errors.first('channel') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('code') ? 'has-error' : '']">
|
||||
<label for="code" class="required">{{ __('admin::app.settings.tax-categories.code') }}</label>
|
||||
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
|||
{
|
||||
"/css/default-booking.css": "/css/default-booking.css?id=3607d6ec4cb93857b42c",
|
||||
"/css/default-booking.css": "/css/default-booking.css?id=ab5abfabd8e0f6df6466",
|
||||
"/css/velocity-booking.css": "/css/velocity-booking.css?id=fb0d5b9e37ed77d662d1"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class AlterBookingProductsTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('booking_products', function (Blueprint $table) {
|
||||
$table->datetime('available_from')->change();
|
||||
|
||||
$table->datetime('available_to')->change();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
|
|
@ -178,7 +178,7 @@ class Booking
|
|||
|
||||
$availableFrom = ! $bookingProduct->available_from && $bookingProduct->available_from
|
||||
? Carbon::createFromTimeString($bookingProduct->available_from)
|
||||
: clone $currentTime;
|
||||
: Carbon::createFromTimeString($currentTime->format('Y-m-d 00:00:00'));
|
||||
|
||||
$availableTo = ! $bookingProduct->available_from && $bookingProduct->available_to
|
||||
? Carbon::createFromTimeString($bookingProduct->available_to)
|
||||
|
|
@ -254,13 +254,13 @@ class Booking
|
|||
return [];
|
||||
}
|
||||
|
||||
$requestedDate = Carbon::createFromTimeString($date . " 00:00:00");
|
||||
|
||||
$currentTime = Carbon::now();
|
||||
|
||||
$requestedDate = Carbon::createFromTimeString($date . " 00:00:00");
|
||||
|
||||
$availableFrom = ! $bookingProduct->available_every_week && $bookingProduct->available_from
|
||||
? Carbon::createFromTimeString($bookingProduct->available_from)
|
||||
: Carbon::createFromTimeString($currentTime);
|
||||
: Carbon::createFromTimeString($currentTime->format('Y-m-d 00:00:00'));
|
||||
|
||||
$availableTo = ! $bookingProduct->available_every_week && $bookingProduct->available_from
|
||||
? Carbon::createFromTimeString($bookingProduct->available_to)
|
||||
|
|
@ -270,8 +270,7 @@ class Booking
|
|||
? $bookingProductSlot->slots
|
||||
: ($bookingProductSlot->slots[$requestedDate->format('w')] ?? []);
|
||||
|
||||
if ($requestedDate < $currentTime
|
||||
|| $requestedDate < $availableFrom
|
||||
if ($requestedDate < $availableFrom
|
||||
|| $requestedDate > $availableTo
|
||||
) {
|
||||
return [];
|
||||
|
|
|
|||
|
|
@ -32,14 +32,13 @@ class DefaultSlot extends Booking
|
|||
|
||||
$availableFrom = $bookingProduct->available_from
|
||||
? Carbon::createFromTimeString($bookingProduct->available_from)
|
||||
: clone $currentTime;
|
||||
: Carbon::createFromTimeString($currentTime->format('Y-m-d 00:00:00'));
|
||||
|
||||
$availableTo = $bookingProduct->available_to
|
||||
? Carbon::createFromTimeString($bookingProduct->available_to)
|
||||
: Carbon::createFromTimeString('2080-01-01 00:00:00');
|
||||
|
||||
if ($requestedDate < $currentTime
|
||||
|| $requestedDate < $availableFrom
|
||||
if ($requestedDate < $availableFrom
|
||||
|| $requestedDate > $availableTo
|
||||
) {
|
||||
return [];
|
||||
|
|
@ -63,8 +62,10 @@ class DefaultSlot extends Booking
|
|||
{
|
||||
$slots = [];
|
||||
|
||||
$dayOfWeek = $requestedDate->dayOfWeek;
|
||||
|
||||
foreach ($bookingProductSlot->slots as $timeDuration) {
|
||||
if ($requestedDate->dayOfWeek != $timeDuration['from_day']) {
|
||||
if ($dayOfWeek != $timeDuration['from_day']) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
@ -101,7 +102,7 @@ class DefaultSlot extends Booking
|
|||
|
||||
$availableFrom = $bookingProduct->available_from
|
||||
? Carbon::createFromTimeString($bookingProduct->available_from)
|
||||
: clone $currentTime;
|
||||
: Carbon::createFromTimeString($currentTime->format('Y-m-d 00:00:00'));
|
||||
|
||||
$availableTo = $bookingProduct->available_to
|
||||
? Carbon::createFromTimeString($bookingProduct->available_to)
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ namespace Webkul\BookingProduct\Helpers;
|
|||
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Carbon\Carbon;
|
||||
use Webkul\Checkout\Facades\Cart;
|
||||
|
||||
class EventTicket extends Booking
|
||||
{
|
||||
|
|
@ -124,6 +125,12 @@ class EventTicket extends Booking
|
|||
|
||||
$ticket = $bookingProduct->event_tickets()->find($item->additional['booking']['ticket_id']);
|
||||
|
||||
if (! $ticket) {
|
||||
Cart::removeItem($item->id);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
$price += $ticket->price;
|
||||
|
||||
if ($price == $item->base_price) {
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ class RentalSlot extends Booking
|
|||
|
||||
$availableFrom = ! $bookingProduct->available_every_week && $bookingProduct->available_from
|
||||
? Carbon::createFromTimeString($bookingProduct->available_from)
|
||||
: Carbon::createFromTimeString($currentTime);
|
||||
: Carbon::createFromTimeString($currentTime->format('Y-m-d 00:00:00'));
|
||||
|
||||
$availableTo = ! $bookingProduct->available_every_week && $bookingProduct->available_from
|
||||
? Carbon::createFromTimeString($bookingProduct->available_to)
|
||||
|
|
@ -37,10 +37,9 @@ class RentalSlot extends Booking
|
|||
|
||||
$timeDurations = $bookingProductSlot->same_slot_all_days
|
||||
? $bookingProductSlot->slots
|
||||
: $bookingProductSlot->slots[$requestedDate->format('w')];
|
||||
: $bookingProductSlot->slots[$requestedDate->format('w')] ?? [];
|
||||
|
||||
if ($requestedDate < $currentTime
|
||||
|| $requestedDate < $availableFrom
|
||||
if ($requestedDate < $availableFrom
|
||||
|| $requestedDate > $availableTo
|
||||
) {
|
||||
return [];
|
||||
|
|
@ -105,7 +104,7 @@ class RentalSlot extends Booking
|
|||
{
|
||||
$bookingProduct = $this->bookingProductRepository->findOneByField('product_id', $data['product_id']);
|
||||
|
||||
$rentingType = $products[0]['additional']['booking']['renting_type'] ?? $bookingProduct->rental_slot->renting_type;
|
||||
$rentingType = $data['additional']['booking']['renting_type'] ?? $bookingProduct->rental_slot->renting_type;
|
||||
|
||||
if ($rentingType == 'daily') {
|
||||
$from = Carbon::createFromTimeString($data['additional']['booking']['date_from'] . ' 00:00:01')->getTimestamp();
|
||||
|
|
@ -141,24 +140,48 @@ class RentalSlot extends Booking
|
|||
public function isSlotExpired($cartItem)
|
||||
{
|
||||
$bookingProduct = $this->bookingProductRepository->findOneByField('product_id', $cartItem['product_id']);
|
||||
|
||||
$typeHelper = app($this->typeHelpers[$bookingProduct->type]);
|
||||
|
||||
$timeIntervals = $typeHelper->getSlotsByDate($bookingProduct, $cartItem['additional']['booking']['date']);
|
||||
if (isset($cartItem['additional']['booking']['date'])) {
|
||||
$timeIntervals = $this->getSlotsByDate($bookingProduct, $cartItem['additional']['booking']['date']);
|
||||
|
||||
$isExpired = true;
|
||||
$isExpired = true;
|
||||
|
||||
foreach ($timeIntervals as $timeInterval) {
|
||||
foreach ($timeInterval['slots'] as $slot) {
|
||||
if ($slot['from_timestamp'] == $cartItem['additional']['booking']['slot']['from']
|
||||
&& $slot['to_timestamp'] == $cartItem['additional']['booking']['slot']['to']
|
||||
) {
|
||||
$isExpired = false;
|
||||
foreach ($timeIntervals as $timeInterval) {
|
||||
foreach ($timeInterval['slots'] as $slot) {
|
||||
if ($slot['from_timestamp'] == $cartItem['additional']['booking']['slot']['from']
|
||||
&& $slot['to_timestamp'] == $cartItem['additional']['booking']['slot']['to']
|
||||
) {
|
||||
$isExpired = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $isExpired;
|
||||
return $isExpired;
|
||||
} else {
|
||||
$currentTime = Carbon::now();
|
||||
|
||||
$requestedFromDate = Carbon::createFromTimeString($cartItem['additional']['booking']['date_from'] . " 00:00:00");
|
||||
|
||||
$requestedToDate = Carbon::createFromTimeString($cartItem['additional']['booking']['date_to'] . " 23:59:59");
|
||||
|
||||
$availableFrom = ! $bookingProduct->available_every_week && $bookingProduct->available_from
|
||||
? Carbon::createFromTimeString($bookingProduct->available_from->format('Y-m-d') . ' 00:00:00')
|
||||
: Carbon::createFromTimeString($currentTime->format('Y-m-d 00:00:00'));
|
||||
|
||||
$availableTo = ! $bookingProduct->available_every_week && $bookingProduct->available_from
|
||||
? Carbon::createFromTimeString($bookingProduct->available_to->format('Y-m-d') . ' 23:59:59')
|
||||
: Carbon::createFromTimeString('2080-01-01 00:00:00');
|
||||
|
||||
if ($requestedFromDate < $availableFrom
|
||||
|| $requestedFromDate > $availableTo
|
||||
|| $requestedToDate < $availableFrom
|
||||
|| $requestedToDate > $availableTo
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ class TableSlot extends Booking
|
|||
$bookedQty *= $bookingProduct->table_slot->guest_limit;
|
||||
}
|
||||
|
||||
if ($bookingProduct->qty - $bookedQty < $requestedQty) {
|
||||
if ($bookingProduct->qty - $bookedQty < $requestedQty || $this->isSlotExpired($cartItem)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,10 @@
|
|||
|
||||
namespace Webkul\BookingProduct\Providers;
|
||||
|
||||
use Illuminate\Support\Facades\View;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Webkul\Theme\ViewRenderEventManager;
|
||||
|
||||
class EventServiceProvider extends ServiceProvider
|
||||
{
|
||||
|
|
@ -14,8 +16,10 @@ class EventServiceProvider extends ServiceProvider
|
|||
*/
|
||||
public function boot()
|
||||
{
|
||||
Event::listen('bagisto.shop.products.view.short_description.after', function($viewRenderEventManager) {
|
||||
$viewRenderEventManager->addTemplate('bookingproduct::shop.products.view.booking');
|
||||
Event::listen('bagisto.shop.products.view.short_description.after', static function(ViewRenderEventManager $viewRenderEventManager) {
|
||||
if (View::exists('bookingproduct::shop.' . core()->getCurrentChannel()->theme . '.products.view.booking')) {
|
||||
$viewRenderEventManager->addTemplate('bookingproduct::shop.' . core()->getCurrentChannel()->theme . '.products.view.booking');
|
||||
}
|
||||
});
|
||||
|
||||
Event::listen('checkout.order.save.after', 'Webkul\BookingProduct\Listeners\Order@afterPlaceOrder');
|
||||
|
|
|
|||
|
|
@ -174,6 +174,12 @@ class BookingProductRepository extends Repository
|
|||
|
||||
$to = Carbon::createFromTimeString($timeInterval['to'])->getTimestamp();
|
||||
|
||||
if ($from > $to) {
|
||||
unset($slots[$key]);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$isOverLapping = false;
|
||||
|
||||
foreach ($tempSlots as $slot) {
|
||||
|
|
|
|||
|
|
@ -130,9 +130,8 @@
|
|||
padding-right: 5px;
|
||||
|
||||
&::after {
|
||||
position: absolute;
|
||||
top: 14px;
|
||||
right: 10px;
|
||||
top: 16px;
|
||||
left: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,125 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'admin' => [
|
||||
'catalog' => [
|
||||
'products' => [
|
||||
'booking' => 'معلومات الحجز',
|
||||
'booking-type' => 'نوع الحجز',
|
||||
'default' => 'إفتراضي',
|
||||
'appointment-booking' => 'حجز موعد',
|
||||
'event-booking' => 'حجز الحدث',
|
||||
'rental-booking' => 'حجز الإيجار',
|
||||
'table-booking' => 'حجز طاولة',
|
||||
'slot-duration' => '(مدة الفتحة (دقائق',
|
||||
'break-time' => '(استراحة بين الفتحات (دقائق',
|
||||
'available-every-week' => 'متوفر كل أسبوع',
|
||||
'yes' => 'نعم',
|
||||
'no' => 'لا',
|
||||
'available-from' => 'متاح من',
|
||||
'available-to' => 'متاحة لل',
|
||||
'same-slot-all-days' => 'نفس الفتحة طوال الأيام',
|
||||
'slot-has-quantity' => 'تحتوي الفتحة على الكمية',
|
||||
'slots' => 'فتحات',
|
||||
'from' => 'من عند',
|
||||
'to' => 'إلى',
|
||||
'qty' => 'كمية',
|
||||
'add-slot' => 'أضف فتحة',
|
||||
'sunday' => 'الأحد',
|
||||
'monday' => 'الإثنين',
|
||||
'tuesday' => 'الثلاثاء',
|
||||
'wednesday' => 'الأربعاء',
|
||||
'thursday' => 'الخميس',
|
||||
'friday' => 'يوم الجمعة',
|
||||
'saturday' => 'يوم السبت',
|
||||
'renting-type' => 'نوع التأجير',
|
||||
'daily' => 'الأساس اليومي',
|
||||
'hourly' => 'بالساعة',
|
||||
'daily-hourly' => '(كلاهما (يومي وأساس للساعة',
|
||||
'daily-price' => 'السعر اليومي',
|
||||
'hourly-price' => 'سعر الساعة',
|
||||
'location' => 'موقعك',
|
||||
'show-location' => 'إظهار الموقع',
|
||||
'event-start-date' => 'تاريخ بدء الحدث',
|
||||
'event-end-date' => 'تاريخ انتهاء الحدث',
|
||||
'tickets' => 'التذاكر',
|
||||
'add-ticket' => 'أضف تذكرة',
|
||||
'name' => 'اسم',
|
||||
'price' => 'السعر',
|
||||
'quantity' => 'كمية',
|
||||
'description' => 'وصف',
|
||||
'charged-per' => 'اتهم لكل',
|
||||
'guest' => 'زائر',
|
||||
'table' => 'الطاولة',
|
||||
'prevent-scheduling-before' => 'منع الجدولة قبل',
|
||||
'guest-limit' => 'حد الضيف لكل جدول',
|
||||
'guest-capacity' => 'سعة الضيف',
|
||||
'type' => 'Type',
|
||||
'many-bookings-for-one-day' => 'العديد من الحجوزات ليوم واحد',
|
||||
'one-booking-for-many-days' => 'حجز واحد لعدة أيام',
|
||||
'day' => 'يوم',
|
||||
'status' => 'الحالة',
|
||||
'open' => 'افتح',
|
||||
'close' => 'غلق'
|
||||
]
|
||||
]
|
||||
],
|
||||
|
||||
'shop' => [
|
||||
'products' => [
|
||||
'location' => 'موقعك',
|
||||
'contact' => 'مكالمة',
|
||||
'email' => 'البريد الإلكتروني',
|
||||
'slot-duration' => 'مدة الفتحة',
|
||||
'slot-duration-in-minutes' => 'دقائق دقائق:',
|
||||
'today-availability' => 'توفر اليوم',
|
||||
'slots-for-all-days' => 'إظهار لجميع الأيام',
|
||||
'sunday' => 'الأحد',
|
||||
'monday' => 'الإثنين',
|
||||
'tuesday' => 'الثلاثاء',
|
||||
'wednesday' => 'الأربعاء',
|
||||
'thursday' => 'الخميس',
|
||||
'friday' => 'يوم الجمعة',
|
||||
'saturday' => 'يوم السبت',
|
||||
'closed' => 'مغلق',
|
||||
'book-an-appointment' => 'حجز موعد',
|
||||
'date' => 'تاريخ',
|
||||
'slot' => 'فتحة',
|
||||
'rent-an-item' => 'استئجار عنصر',
|
||||
'choose-rent-option' => 'اختر خيار الإيجار',
|
||||
'daily-basis' => 'الأساس اليومي',
|
||||
'hourly-basis' => 'بالساعة',
|
||||
'select-time-slot'=> 'حدد الفترة الزمنية',
|
||||
'select-slot' => 'حدد فتحة',
|
||||
'select-date' => 'حدد تاريخ',
|
||||
'select-rent-time' => 'حدد وقت الإيجار',
|
||||
'from' => 'من عند',
|
||||
'to' => 'إلى',
|
||||
'book-a-table' => 'احجز طاولة',
|
||||
'special-notes' => 'طلب / ملاحظات خاصة',
|
||||
'event-on' => 'الحدث قيد التشغيل',
|
||||
'book-your-ticket' => 'احجز تذكرتك',
|
||||
'per-ticket-price' => 'سعر التذكرة:',
|
||||
'number-of-tickets' => 'عدد التذاكر',
|
||||
'total-tickets' => 'إجمالي التذاكر',
|
||||
'base-price' => 'السعر الأساسي',
|
||||
'total-price' => 'السعر الكلي',
|
||||
'base-price-info' => '(سيتم تطبيق ذلك على كل نوع من أنواع التذاكر لكل كمية)'
|
||||
],
|
||||
|
||||
'cart' => [
|
||||
'renting_type' => 'نوع الإيجار',
|
||||
'daily' => 'اليومي',
|
||||
'hourly' => 'ساعيا',
|
||||
'event-ticket' => 'تذكرة الحدث',
|
||||
'event-from' => 'حدث من',
|
||||
'event-till' => 'الحدث حتى',
|
||||
'rent-type' => 'نوع الإيجار',
|
||||
'rent-from' => 'الإيجار من',
|
||||
'rent-till' => 'إيجار حتى',
|
||||
'booking-from' => 'الحجز من',
|
||||
'booking-till' => 'الحجز حتى',
|
||||
'special-note' => 'طلب / ملاحظات خاصة',
|
||||
]
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,125 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'admin' => [
|
||||
'catalog' => [
|
||||
'products' => [
|
||||
'booking' => 'اطلاعات رزرو',
|
||||
'booking-type' => 'نوع رزرو',
|
||||
'default' => 'پیش فرض',
|
||||
'appointment-booking' => 'رزرو قرار ملاقات',
|
||||
'event-booking' => 'رزرو رویداد',
|
||||
'rental-booking' => 'رزرو اجاره',
|
||||
'table-booking' => 'رزرو جدول',
|
||||
'slot-duration' => '(مدت زمان حافظه (دقیقه',
|
||||
'break-time' => '(فاصله بین شکافها (دقیقه',
|
||||
'available-every-week' => 'هر هفته در دسترس است',
|
||||
'yes' => 'آره',
|
||||
'no' => 'نه',
|
||||
'available-from' => 'موجود از',
|
||||
'available-to' => 'در دسترس است برای',
|
||||
'same-slot-all-days' => 'همان شکاف همه روزها',
|
||||
'slot-has-quantity' => 'اسلات مقدار زیادی دارد',
|
||||
'slots' => 'شکافها',
|
||||
'from' => 'از جانب',
|
||||
'to' => 'به',
|
||||
'qty' => 'تعداد',
|
||||
'add-slot' => 'شکاف را اضافه کنید',
|
||||
'sunday' => 'یکشنبه',
|
||||
'monday' => 'دوشنبه',
|
||||
'tuesday' => 'سهشنبه',
|
||||
'wednesday' => 'چهار شنبه',
|
||||
'thursday' => 'پنج شنبه',
|
||||
'friday' => 'جمعه',
|
||||
'saturday' => 'شنبه',
|
||||
'renting-type' => 'نوع اجاره',
|
||||
'daily' => 'به صورت روزانه',
|
||||
'hourly' => 'مبانی ساعتی',
|
||||
'daily-hourly' => '(هر دو(مبانی روزانه و ساعتی',
|
||||
'daily-price' => 'قیمت روزانه',
|
||||
'hourly-price' => 'قیمت ساعتی',
|
||||
'location' => 'مکان',
|
||||
'show-location' => 'نمایش موقعیت مکانی',
|
||||
'event-start-date' => 'تاریخ شروع رویداد',
|
||||
'event-end-date' => 'تاریخ پایان رویداد',
|
||||
'tickets' => 'بلیط',
|
||||
'add-ticket' => 'بلیط را اضافه کنید',
|
||||
'name' => 'نام',
|
||||
'price' => 'قیمت',
|
||||
'quantity' => 'تعداد',
|
||||
'description' => 'شرح',
|
||||
'charged-per' => 'به اتهام در هر',
|
||||
'guest' => 'مهمان',
|
||||
'table' => 'جدول',
|
||||
'prevent-scheduling-before' => 'قبل از برنامه ریزی جلوگیری کنید',
|
||||
'guest-limit' => 'محدودیت مهمان در هر جدول',
|
||||
'guest-capacity' => 'ظرفیت مهمان',
|
||||
'type' => 'تایپ کنید',
|
||||
'many-bookings-for-one-day' => 'بسیاری از رزروها برای یک روز',
|
||||
'one-booking-for-many-days' => 'یک رزرو برای بسیاری از روزها',
|
||||
'day' => 'روز',
|
||||
'status' => 'وضعیت',
|
||||
'open' => 'باز کن',
|
||||
'close' => 'بستن'
|
||||
]
|
||||
]
|
||||
],
|
||||
|
||||
'shop' => [
|
||||
'products' => [
|
||||
'location' => 'مکان',
|
||||
'contact' => 'مخاطب',
|
||||
'email' => 'پست الکترونیک',
|
||||
'slot-duration' => 'مدت زمان حافظه',
|
||||
'slot-duration-in-minutes' => ':minutes دقایق',
|
||||
'today-availability' => 'امروز در دسترس بودن',
|
||||
'slots-for-all-days' => 'نمایش برای تمام روزها',
|
||||
'sunday' => 'یکشنبه',
|
||||
'monday' => 'دوشنبه',
|
||||
'tuesday' => 'سهشنبه',
|
||||
'wednesday' => 'چهار شنبه',
|
||||
'thursday' => 'پنج شنبه',
|
||||
'friday' => 'جمعه',
|
||||
'saturday' => 'شنبه',
|
||||
'closed' => 'بسته شد',
|
||||
'book-an-appointment' => 'قرار ملاقات را رزرو کنید',
|
||||
'date' => 'تاریخ',
|
||||
'slot' => 'اسلات',
|
||||
'rent-an-item' => 'اجاره یک مورد',
|
||||
'choose-rent-option' => 'گزینه اجاره را انتخاب کنید',
|
||||
'daily-basis' => 'به صورت روزانه',
|
||||
'hourly-basis' => 'مبانی ساعتی',
|
||||
'select-time-slot'=> 'شکاف زمان را انتخاب کنید',
|
||||
'select-slot' => 'شکاف را انتخاب کنید',
|
||||
'select-date' => 'تاریخ را انتخاب کنید',
|
||||
'select-rent-time' => 'زمان اجاره را انتخاب کنید',
|
||||
'from' => 'از جانب',
|
||||
'to' => 'به',
|
||||
'book-a-table' => 'یک جدول رزرو کنید',
|
||||
'special-notes' => 'درخواست ویژه / یادداشت',
|
||||
'event-on' => 'رویداد در',
|
||||
'book-your-ticket' => 'بلیط خود را رزرو کنید',
|
||||
'per-ticket-price' => ':price برای هر بلیط',
|
||||
'number-of-tickets' => 'تعداد بلیط ها',
|
||||
'total-tickets' => 'بلیط های کل',
|
||||
'base-price' => 'قیمت پایه',
|
||||
'total-price' => 'قیمت کل',
|
||||
'base-price-info' => '(این برای هر نوع بلیط برای هر کمیت کاربرد دارد)'
|
||||
],
|
||||
|
||||
'cart' => [
|
||||
'renting_type' => 'نوع اجاره',
|
||||
'daily' => 'روزانه',
|
||||
'hourly' => 'ساعتی',
|
||||
'event-ticket' => 'بلیط رویداد',
|
||||
'event-from' => 'رویداد از',
|
||||
'event-till' => 'رویداد تا زمان',
|
||||
'rent-type' => 'نوع اجاره',
|
||||
'rent-from' => 'اجاره از',
|
||||
'rent-till' => 'اجاره تا زمان',
|
||||
'booking-from' => 'رزرو از',
|
||||
'booking-till' => 'تا زمان رزرو',
|
||||
'special-note' => 'درخواست ویژه / یادداشت',
|
||||
]
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,125 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'admin' => [
|
||||
'catalog' => [
|
||||
'products' => [
|
||||
'booking' => 'Boekingsinformatie',
|
||||
'booking-type' => 'Boekingstype',
|
||||
'default' => 'Standaard',
|
||||
'appointment-booking' => 'Afspraak boeken',
|
||||
'event-booking' => 'Evenement boeken',
|
||||
'rental-booking' => 'Verhuur boeken',
|
||||
'table-booking' => 'Tafel reserveren',
|
||||
'slot-duration' => 'Slotduur (minuten)',
|
||||
'break-time' => 'Break Time b/w Slots (minuten)',
|
||||
'available-every-week' => 'Elke week beschikbaar',
|
||||
'yes' => 'Ja',
|
||||
'no' => 'Nee',
|
||||
'available-from' => 'Beschikbaar van',
|
||||
'available-to' => 'Beschikbaar voor',
|
||||
'same-slot-all-days' => 'Zelfde slot alle dagen',
|
||||
'slot-has-quantity' => 'Slot heeft hoeveelheid',
|
||||
'slots' => 'Slots',
|
||||
'from' => 'Van',
|
||||
'to' => 'To',
|
||||
'qty' => 'Qty',
|
||||
'add-slot' => 'Slot toevoegen',
|
||||
'sunday' => 'Slot toevoegen',
|
||||
'monday' => 'maandag',
|
||||
'tuesday' => 'dinsdag',
|
||||
'wednesday' => 'woensdag',
|
||||
'thursday' => 'donderdag',
|
||||
'friday' => 'vrijdag',
|
||||
'saturday' => 'zaterdag',
|
||||
'renting-type' => 'Type verhuur',
|
||||
'daily' => 'Dagelijks',
|
||||
'hourly' => 'Uurbasis',
|
||||
'daily-hourly' => 'Beide (dagelijkse en uurbasis)',
|
||||
'daily-price' => 'Dagelijkse prijs',
|
||||
'hourly-price' => 'Prijs per uur',
|
||||
'location' => 'Plaats',
|
||||
'show-location' => 'Locatie tonen',
|
||||
'event-start-date' => 'Begindatum evenement',
|
||||
'event-end-date' => 'Einddatum evenement',
|
||||
'tickets' => 'Kaartjes',
|
||||
'add-ticket' => 'Ticket toevoegen',
|
||||
'name' => 'Naam',
|
||||
'price' => 'Prijs',
|
||||
'quantity' => 'Aantal stuks',
|
||||
'description' => 'Beschrijving',
|
||||
'charged-per' => 'In rekening gebracht per',
|
||||
'guest' => 'Gast',
|
||||
'table' => 'Tafel',
|
||||
'prevent-scheduling-before' => 'Voorkom plannen voor',
|
||||
'guest-limit' => 'Gastlimiet per tafel',
|
||||
'guest-capacity' => 'Gastcapaciteit',
|
||||
'type' => 'Type',
|
||||
'many-bookings-for-one-day' => 'Veel boekingen voor één dag',
|
||||
'one-booking-for-many-days' => 'Eén boeking voor vele dagen',
|
||||
'day' => 'Dag',
|
||||
'status' => 'Toestand',
|
||||
'open' => 'Open',
|
||||
'close' => 'Dichtbij'
|
||||
]
|
||||
]
|
||||
],
|
||||
|
||||
'shop' => [
|
||||
'products' => [
|
||||
'location' => 'Plaats',
|
||||
'contact' => 'Contact',
|
||||
'email' => 'Email',
|
||||
'slot-duration' => 'Slot Duur',
|
||||
'slot-duration-in-minutes' => ':minutes Minutes',
|
||||
'today-availability' => 'Beschikbaarheid vandaag',
|
||||
'slots-for-all-days' => 'Show voor alle dagen',
|
||||
'sunday' => 'Sunday',
|
||||
'monday' => 'maandag',
|
||||
'tuesday' => 'dinsdag',
|
||||
'wednesday' => 'woensdag',
|
||||
'thursday' => 'donderdag',
|
||||
'friday' => 'vrijdag',
|
||||
'saturday' => 'zaterdag',
|
||||
'closed' => 'Gesloten',
|
||||
'book-an-appointment' => 'Een afspraak maken',
|
||||
'date' => 'Datum',
|
||||
'slot' => 'Sleuf',
|
||||
'rent-an-item' => 'Huur een item',
|
||||
'choose-rent-option' => 'Kies Huuroptie',
|
||||
'daily-basis' => 'Dagelijks',
|
||||
'hourly-basis' => 'Uurbasis',
|
||||
'select-time-slot'=> 'Selecteer tijdslot',
|
||||
'select-slot' => 'Selecteer Slot',
|
||||
'select-date' => 'Selecteer een datum',
|
||||
'select-rent-time' => 'Selecteer Huurtijd',
|
||||
'from' => 'Van',
|
||||
'to' => 'Naar',
|
||||
'book-a-table' => 'Een tafel reserveren',
|
||||
'special-notes' => 'Speciaal verzoek / opmerkingen',
|
||||
'event-on' => 'Evenement aan',
|
||||
'book-your-ticket' => 'Boek uw ticket',
|
||||
'per-ticket-price' => ':price Per Ticket',
|
||||
'number-of-tickets' => 'Aantal tickets',
|
||||
'total-tickets' => 'Totaal aantal tickets',
|
||||
'base-price' => 'Basisprijs',
|
||||
'total-price' => 'Totale prijs',
|
||||
'base-price-info' => '(Dit is van toepassing op elk type ticket voor elke hoeveelheid)'
|
||||
],
|
||||
|
||||
'cart' => [
|
||||
'renting_type' => 'Huurtype',
|
||||
'daily' => 'Dagelijks',
|
||||
'hourly' => 'Elk uur',
|
||||
'event-ticket' => 'Evenement Ticket',
|
||||
'event-from' => 'Evenement van',
|
||||
'event-till' => 'Evenement tot',
|
||||
'rent-type' => 'Huurtype',
|
||||
'rent-from' => 'Huur van',
|
||||
'rent-till' => 'Huur tot',
|
||||
'booking-from' => 'Boeking van',
|
||||
'booking-till' => 'Boeking tot',
|
||||
'special-note' => 'Speciaal verzoek / opmerkingen',
|
||||
]
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,125 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'admin' => [
|
||||
'catalog' => [
|
||||
'products' => [
|
||||
'booking' => 'Informações de reserva',
|
||||
'booking-type' => 'Tipo de Reserva',
|
||||
'default' => 'Padrão',
|
||||
'appointment-booking' => 'Marcação de consultas',
|
||||
'event-booking' => 'Reserva de Eventos',
|
||||
'rental-booking' => 'Reserva de Locação',
|
||||
'table-booking' => 'Reserva de mesa',
|
||||
'slot-duration' => 'Duração do slot (minutos)',
|
||||
'break-time' => 'Tempo de intervalo entre slots (minutos)',
|
||||
'available-every-week' => 'Disponível todas as semanas',
|
||||
'yes' => 'sim',
|
||||
'no' => 'Não',
|
||||
'available-from' => 'Disponível a partir de',
|
||||
'available-to' => 'Disponível para',
|
||||
'same-slot-all-days' => 'Mesmo slot todos os dias',
|
||||
'slot-has-quantity' => 'O slot tem quantidade',
|
||||
'slots' => 'Slots',
|
||||
'from' => 'A partir de',
|
||||
'to' => 'Para',
|
||||
'qty' => 'Quantidade',
|
||||
'add-slot' => 'Adicionar slot',
|
||||
'sunday' => 'domingo',
|
||||
'monday' => 'Segunda-feira',
|
||||
'tuesday' => 'terça',
|
||||
'wednesday' => 'Quarta-feira',
|
||||
'thursday' => 'Quinta-feira',
|
||||
'friday' => 'Sexta-feira',
|
||||
'saturday' => 'sábado',
|
||||
'renting-type' => 'Tipo de locação',
|
||||
'daily' => 'Diariamente',
|
||||
'hourly' => 'Base horária',
|
||||
'daily-hourly' => 'Ambos (base diária e horária)',
|
||||
'daily-price' => 'Preço Diário',
|
||||
'hourly-price' => 'Preço por Hora',
|
||||
'location' => 'Localização',
|
||||
'show-location' => 'Mostrar Localização',
|
||||
'event-start-date' => 'Data de início do evento',
|
||||
'event-end-date' => 'Data de término do evento',
|
||||
'tickets' => 'Ingressos',
|
||||
'add-ticket' => 'Adicionar ticket',
|
||||
'name' => 'Nome',
|
||||
'price' => 'Preço',
|
||||
'quantity' => 'Quantidade',
|
||||
'description' => 'Descrição',
|
||||
'charged-per' => 'Cobrado por',
|
||||
'guest' => 'Hóspede',
|
||||
'table' => 'Mesa',
|
||||
'prevent-scheduling-before' => 'Impedir agendamento antes',
|
||||
'guest-limit' => 'Limite de convidados por tabela',
|
||||
'guest-capacity' => 'Capacidade de Convidado',
|
||||
'type' => 'Tipo',
|
||||
'many-bookings-for-one-day' => 'Muitas reservas para um dia',
|
||||
'one-booking-for-many-days' => 'Uma reserva por muitos dias',
|
||||
'day' => 'Dia',
|
||||
'status' => 'Status',
|
||||
'open' => 'Aberto',
|
||||
'close' => 'Fechar'
|
||||
]
|
||||
]
|
||||
],
|
||||
|
||||
'shop' => [
|
||||
'products' => [
|
||||
'location' => 'Localização',
|
||||
'contact' => 'Contato',
|
||||
'email' => 'O email',
|
||||
'slot-duration' => 'Duração do slot',
|
||||
'slot-duration-in-minutes' => ':minutes Minutos',
|
||||
'today-availability' => 'Disponibilidade Hoje',
|
||||
'slots-for-all-days' => 'Mostrar para todos os dias',
|
||||
'sunday' => 'domingo',
|
||||
'monday' => 'Segunda-feira',
|
||||
'tuesday' => 'terça',
|
||||
'wednesday' => 'Quarta-feira',
|
||||
'thursday' => 'Quinta-feira',
|
||||
'friday' => 'Sexta-feira',
|
||||
'saturday' => 'sábado',
|
||||
'closed' => 'Closed',
|
||||
'book-an-appointment' => 'Marque uma consulta',
|
||||
'date' => 'Date',
|
||||
'slot' => 'Slot',
|
||||
'rent-an-item' => 'Alugar um item',
|
||||
'choose-rent-option' => 'Escolha a opção de aluguel',
|
||||
'daily-basis' => 'Diariamente',
|
||||
'hourly-basis' => 'Base horária',
|
||||
'select-time-slot'=> 'Selecionar horário',
|
||||
'select-slot' => 'Selecionar slot',
|
||||
'select-date' => 'Selecione a data',
|
||||
'select-rent-time' => 'Selecione o tempo de aluguel',
|
||||
'from' => 'A partir de',
|
||||
'to' => 'Para',
|
||||
'book-a-table' => 'Reservar uma mesa',
|
||||
'special-notes' => 'Pedido / Notas Especiais',
|
||||
'event-on' => 'Evento ativado',
|
||||
'book-your-ticket' => 'Reserve seu ingresso',
|
||||
'per-ticket-price' => ':price Por Bilhete',
|
||||
'number-of-tickets' => 'Número de Bilhetes',
|
||||
'total-tickets' => 'Total de ingressos',
|
||||
'base-price' => 'Preço base',
|
||||
'total-price' => 'Preço total',
|
||||
'base-price-info' => '(Isso será aplicado a cada tipo de ticket para cada quantidade)'
|
||||
],
|
||||
|
||||
'cart' => [
|
||||
'renting_type' => 'Tipo de Aluguel',
|
||||
'daily' => 'Diariamente',
|
||||
'hourly' => 'Por hora',
|
||||
'event-ticket' => 'Bilhete de evento',
|
||||
'event-from' => 'Evento de',
|
||||
'event-till' => 'Evento Até',
|
||||
'rent-type' => 'Tipo de Aluguel',
|
||||
'rent-from' => 'Alugar de',
|
||||
'rent-till' => 'Aluguel Até',
|
||||
'booking-from' => 'Reserva de',
|
||||
'booking-till' => 'Reserva até',
|
||||
'special-note' => 'Pedido / Notas Especiais',
|
||||
]
|
||||
]
|
||||
];
|
||||
|
|
@ -1,3 +1,25 @@
|
|||
@section('css')
|
||||
<style>
|
||||
.slot-list .control-group.date::after {
|
||||
margin-top: -13px;
|
||||
left: 100%;
|
||||
}
|
||||
|
||||
.has-control-group .control-group {
|
||||
width: 50%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.has-control-group .control-group:first-child {
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
.has-control-group .control-group:last-child {
|
||||
padding-left: 10px;
|
||||
}
|
||||
</style>
|
||||
@stop
|
||||
|
||||
{!! view_render_event('bagisto.admin.catalog.product.edit_form_accordian.booking.before', ['product' => $product]) !!}
|
||||
|
||||
<accordian :title="'{{ __('bookingproduct::app.admin.catalog.products.booking') }}'" :active="true">
|
||||
|
|
@ -57,21 +79,21 @@
|
|||
</div>
|
||||
|
||||
<div v-if="! parseInt(booking.available_every_week)">
|
||||
<div class="control-group" :class="[errors.has('booking[available_from]') ? 'has-error' : '']">
|
||||
<div class="control-group date" :class="[errors.has('booking[available_from]') ? 'has-error' : '']">
|
||||
<label class="required">{{ __('bookingproduct::app.admin.catalog.products.available-from') }}</label>
|
||||
|
||||
<datetime>
|
||||
<input type="text" v-validate="'required'" name="booking[available_from]" v-model="booking.available_from" class="control" data-vv-as=""{{ __('bookingproduct::app.admin.catalog.products.available-from') }}""/>
|
||||
<input type="text" v-validate="'required|date_format:yyyy-MM-dd HH:mm:ss|after:{{\Carbon\Carbon::yesterday()->format('Y-m-d 23:59:59')}}'" name="booking[available_from]" v-model="booking.available_from" class="control" data-vv-as=""{{ __('bookingproduct::app.admin.catalog.products.available-from') }}"" ref="available_from"/>
|
||||
</datetime>
|
||||
|
||||
<span class="control-error" v-if="errors.has('booking[available_from]')">@{{ errors.first('booking[available_from]') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has('booking[available_to]') ? 'has-error' : '']">
|
||||
<div class="control-group date" :class="[errors.has('booking[available_to]') ? 'has-error' : '']">
|
||||
<label class="required">{{ __('bookingproduct::app.admin.catalog.products.available-to') }}</label>
|
||||
|
||||
<datetime>
|
||||
<input type="text" v-validate="'required'" name="booking[available_to]" v-model="booking.available_to" class="control" data-vv-as=""{{ __('bookingproduct::app.admin.catalog.products.available-to') }}""/>
|
||||
<input type="text" v-validate="'required|date_format:yyyy-MM-dd HH:mm:ss|after:available_from'" name="booking[available_to]" v-model="booking.available_to" class="control" data-vv-as=""{{ __('bookingproduct::app.admin.catalog.products.available-to') }}"" ref="available_to"/>
|
||||
</datetime>
|
||||
|
||||
<span class="control-error" v-if="errors.has('booking[available_to]')">@{{ errors.first('booking[available_to]') }}</span>
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@
|
|||
<span class="control-error" v-if="errors.has(controlName + '[from_day]')">@{{ errors.first(controlName + '[from_day]') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has(controlName + '[from]') ? 'has-error' : '']">
|
||||
<div class="control-group date" :class="[errors.has(controlName + '[from]') ? 'has-error' : '']">
|
||||
<time-component>
|
||||
<input type="text" v-validate="'required'" :name="controlName + '[from]'" v-model="slotItem.from" class="control" data-vv-as=""{{ __('bookingproduct::app.admin.catalog.products.from') }}"">
|
||||
</time-component>
|
||||
|
|
@ -185,7 +185,7 @@
|
|||
<span class="control-error" v-if="errors.has(controlName + '[to_day]')">@{{ errors.first(controlName + '[to_day]') }}</span>
|
||||
</div>
|
||||
|
||||
<div class="control-group" :class="[errors.has(controlName + '[to]') ? 'has-error' : '']">
|
||||
<div class="control-group date" :class="[errors.has(controlName + '[to]') ? 'has-error' : '']">
|
||||
<time-component>
|
||||
<input type="text" v-validate="'required'" :name="controlName + '[to]'" v-model="slotItem.to" class="control" data-vv-as=""{{ __('bookingproduct::app.admin.catalog.products.to') }}"">
|
||||
</time-component>
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@
|
|||
<script type="text/x-template" id="slot-item-template">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="control-group" :class="[errors.has(controlName + '[from]') ? 'has-error' : '']">
|
||||
<div class="control-group date" :class="[errors.has(controlName + '[from]') ? 'has-error' : '']">
|
||||
<time-component>
|
||||
<input type="text" v-validate="'required'" :name="controlName + '[from]'" v-model="slotItem.from" class="control" data-vv-as=""{{ __('bookingproduct::app.admin.catalog.products.from') }}"">
|
||||
</time-component>
|
||||
|
|
@ -83,7 +83,7 @@
|
|||
</td>
|
||||
|
||||
<td>
|
||||
<div class="control-group" :class="[errors.has(controlName + '[to]') ? 'has-error' : '']">
|
||||
<div class="control-group date" :class="[errors.has(controlName + '[to]') ? 'has-error' : '']">
|
||||
<time-component>
|
||||
<input type="text" v-validate="'required'" :name="controlName + '[to]'" v-model="slotItem.to" class="control" data-vv-as=""{{ __('bookingproduct::app.admin.catalog.products.to') }}"">
|
||||
</time-component>
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@
|
|||
<div class="control-group-container">
|
||||
<div class="control-group date" :class="[errors.has('booking[date_from]') ? 'has-error' : '']">
|
||||
<date @onChange="dateSelected($event)">
|
||||
<input type="text" v-validate="'required'" name="booking[date_from]" v-model="date_from" class="control" data-vv-as=""{{ __('bookingproduct::app.shop.products.from') }}"" placeholder="{{ __('bookingproduct::app.shop.products.from') }}" data-min-date="today"/>
|
||||
<input type="text" v-validate="'required|date_format:yyyy-MM-dd|before_or_equal:date_to'" name="booking[date_from]" v-model="date_from" class="control" data-vv-as=""{{ __('bookingproduct::app.shop.products.from') }}"" placeholder="{{ __('bookingproduct::app.shop.products.from') }}" ref="date_from" data-min-date="today"/>
|
||||
</date>
|
||||
|
||||
<span class="control-error" v-if="errors.has('booking[date_from]')">@{{ errors.first('booking[date_from]') }}</span>
|
||||
|
|
@ -94,7 +94,7 @@
|
|||
|
||||
<div class="control-group date" :class="[errors.has('booking[date_to]') ? 'has-error' : '']">
|
||||
<date @onChange="dateSelected($event)">
|
||||
<input type="text" v-validate="'required'" name="booking[date_to]" v-model="date_to" class="control" data-vv-as=""{{ __('bookingproduct::app.shop.products.to') }}"" placeholder="{{ __('bookingproduct::app.shop.products.to') }}"/>
|
||||
<input type="text" v-validate="'required|date_format:yyyy-MM-dd|after_or_equal:date_from'" name="booking[date_to]" v-model="date_to" class="control" data-vv-as=""{{ __('bookingproduct::app.shop.products.to') }}"" placeholder="{{ __('bookingproduct::app.shop.products.to') }}" ref="date_to" data-min-date="today"/>
|
||||
</date>
|
||||
|
||||
<span class="control-error" v-if="errors.has('booking[date_to]')">@{{ errors.first('booking[date_to]') }}</span>
|
||||
|
|
@ -131,6 +131,46 @@
|
|||
}
|
||||
},
|
||||
|
||||
created: function() {
|
||||
var self = this;
|
||||
|
||||
this.$validator.extend('after_or_equal', {
|
||||
getMessage(field, val) {
|
||||
return 'The "To" must be equal or after "From"';
|
||||
},
|
||||
|
||||
validate(value, field) {
|
||||
if (! self.date_from) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var from = new Date(self.date_from);
|
||||
|
||||
var to = new Date(self.date_to);
|
||||
|
||||
return from <= to;
|
||||
}
|
||||
});
|
||||
|
||||
this.$validator.extend('before_or_equal', {
|
||||
getMessage(field, val) {
|
||||
return 'The "From must be equal or before "To"';
|
||||
},
|
||||
|
||||
validate(value, field) {
|
||||
if (! self.date_to) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var from = new Date(self.date_from);
|
||||
|
||||
var to = new Date(self.date_to);
|
||||
|
||||
return from <= to;
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
methods: {
|
||||
dateSelected: function(date) {
|
||||
var this_this = this;
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@
|
|||
<div class="control-group-container">
|
||||
<div class="form-group date" :class="[errors.has('booking[date_from]') ? 'has-error' : '']">
|
||||
<date @onChange="dateSelected($event)">
|
||||
<input type="text" v-validate="'required'" name="booking[date_from]" v-model="date_from" class="form-style" data-vv-as=""{{ __('bookingproduct::app.shop.products.from') }}"" placeholder="{{ __('bookingproduct::app.shop.products.from') }}" data-min-date="today"/>
|
||||
<input type="text" v-validate="'required|date_format:yyyy-MM-dd|before_or_equal:date_to'" name="booking[date_from]" v-model="date_from" class="form-style" data-vv-as=""{{ __('bookingproduct::app.shop.products.from') }}"" placeholder="{{ __('bookingproduct::app.shop.products.from') }}" ref="date_from" data-min-date="today"/>
|
||||
</date>
|
||||
|
||||
<span class="control-error" v-if="errors.has('booking[date_from]')">@{{ errors.first('booking[date_from]') }}</span>
|
||||
|
|
@ -94,7 +94,7 @@
|
|||
|
||||
<div class="form-group date" :class="[errors.has('booking[date_to]') ? 'has-error' : '']">
|
||||
<date @onChange="dateSelected($event)">
|
||||
<input type="text" v-validate="'required'" name="booking[date_to]" v-model="date_to" class="form-style" data-vv-as=""{{ __('bookingproduct::app.shop.products.to') }}"" placeholder="{{ __('bookingproduct::app.shop.products.to') }}"/>
|
||||
<input type="text" v-validate="'required|date_format:yyyy-MM-dd|after_or_equal:date_from'" name="booking[date_to]" v-model="date_to" class="form-style" data-vv-as=""{{ __('bookingproduct::app.shop.products.to') }}"" placeholder="{{ __('bookingproduct::app.shop.products.to') }}" ref="date_to" data-min-date="today"/>
|
||||
</date>
|
||||
|
||||
<span class="control-error" v-if="errors.has('booking[date_to]')">@{{ errors.first('booking[date_to]') }}</span>
|
||||
|
|
@ -131,6 +131,46 @@
|
|||
}
|
||||
},
|
||||
|
||||
created: function() {
|
||||
var self = this;
|
||||
|
||||
this.$validator.extend('after_or_equal', {
|
||||
getMessage(field, val) {
|
||||
return 'The "To" must be equal or after "From"';
|
||||
},
|
||||
|
||||
validate(value, field) {
|
||||
if (! self.date_from) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var from = new Date(self.date_from);
|
||||
|
||||
var to = new Date(self.date_to);
|
||||
|
||||
return from <= to;
|
||||
}
|
||||
});
|
||||
|
||||
this.$validator.extend('before_or_equal', {
|
||||
getMessage(field, val) {
|
||||
return 'The "From must be equal or before "To"';
|
||||
},
|
||||
|
||||
validate(value, field) {
|
||||
if (! self.date_to) {
|
||||
return true;
|
||||
}
|
||||
|
||||
var from = new Date(self.date_from);
|
||||
|
||||
var to = new Date(self.date_to);
|
||||
|
||||
return from <= to;
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
methods: {
|
||||
dateSelected: function(date) {
|
||||
var this_this = this;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace Webkul\BookingProduct\Type;
|
||||
|
||||
use Illuminate\Support\Arr;
|
||||
use Webkul\Attribute\Repositories\AttributeRepository;
|
||||
use Webkul\Product\Repositories\ProductRepository;
|
||||
use Webkul\Product\Repositories\ProductAttributeValueRepository;
|
||||
|
|
@ -11,6 +12,7 @@ use Webkul\Product\Helpers\ProductImage;
|
|||
use Webkul\BookingProduct\Repositories\BookingProductRepository;
|
||||
use Webkul\BookingProduct\Helpers\Booking as BookingHelper;
|
||||
use Webkul\Product\Type\Virtual;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class Booking extends Virtual
|
||||
{
|
||||
|
|
@ -128,6 +130,10 @@ class Booking extends Virtual
|
|||
{
|
||||
$bookingProduct = $this->getBookingProduct($this->product->id);
|
||||
|
||||
if (! $bookingProduct) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (in_array($bookingProduct->type, ['default', 'rental', 'table'])) {
|
||||
return true;
|
||||
}
|
||||
|
|
@ -163,6 +169,18 @@ class Booking extends Virtual
|
|||
$bookingProduct = $this->getBookingProduct($data['product_id']);
|
||||
|
||||
if ($bookingProduct->type == 'event') {
|
||||
if (Carbon::now() > $bookingProduct->available_from && Carbon::now() > $bookingProduct->available_to) {
|
||||
return trans('shop::app.checkout.cart.event.expired');
|
||||
}
|
||||
|
||||
$filtered = Arr::where($data['booking']['qty'], function ($qty, $key) {
|
||||
return $qty != 0;
|
||||
});
|
||||
|
||||
if (! count($filtered)) {
|
||||
return trans('shop::app.checkout.cart.integrity.missing_options');
|
||||
}
|
||||
|
||||
foreach ($data['booking']['qty'] as $ticketId => $qty) {
|
||||
if (! $qty) {
|
||||
continue;
|
||||
|
|
@ -210,7 +228,7 @@ class Booking extends Virtual
|
|||
}
|
||||
|
||||
if (isset($options1['booking']) && isset($options2['booking'])) {
|
||||
return $options1['booking'] === $options2['booking'];
|
||||
return $options1['booking'] == $options2['booking'];
|
||||
} elseif (! isset($options1['booking'])) {
|
||||
return false;
|
||||
} elseif (! isset($options2['booking'])) {
|
||||
|
|
|
|||
|
|
@ -134,11 +134,14 @@ class CartRule
|
|||
*/
|
||||
public function getCartRules()
|
||||
{
|
||||
static $cartRules;
|
||||
|
||||
if ($cartRules) {
|
||||
return $cartRules;
|
||||
$staticCartRules = new class() {
|
||||
public static $cartRules;
|
||||
public static $cartID;
|
||||
};
|
||||
if ($staticCartRules::$cartID === cart()->getCart()->id && $staticCartRules::$cartRules) {
|
||||
return $staticCartRules::$cartRules;
|
||||
}
|
||||
$staticCartRules::$cartID = cart()->getCart()->id;
|
||||
|
||||
$customerGroupId = null;
|
||||
|
||||
|
|
@ -166,6 +169,7 @@ class CartRule
|
|||
->orderBy('sort_order', 'asc');
|
||||
})->findWhere(['status' => 1]);
|
||||
|
||||
$staticCartRules::$cartRules = $cartRules;
|
||||
return $cartRules;
|
||||
}
|
||||
|
||||
|
|
@ -246,6 +250,10 @@ class CartRule
|
|||
continue;
|
||||
}
|
||||
|
||||
if ($rule->coupon_code) {
|
||||
$item->coupon_code = $rule->coupon_code;
|
||||
}
|
||||
|
||||
$quantity = $rule->discount_quantity ? min($item->quantity, $rule->discount_quantity) : $item->quantity;
|
||||
|
||||
$discountAmount = $baseDiscountAmount = 0;
|
||||
|
|
@ -254,9 +262,9 @@ class CartRule
|
|||
case 'by_percent':
|
||||
$rulePercent = min(100, $rule->discount_amount);
|
||||
|
||||
$discountAmount = ($quantity * $item->price - $item->discount_amount) * ($rulePercent / 100);
|
||||
$discountAmount = ($quantity * $item->price + $item->tax_amount - $item->discount_amount) * ($rulePercent / 100);
|
||||
|
||||
$baseDiscountAmount = ($quantity * $item->base_price - $item->base_discount_amount) * ($rulePercent / 100);
|
||||
$baseDiscountAmount = ($quantity * $item->base_price + $item->base_tax_amount - $item->base_discount_amount) * ($rulePercent / 100);
|
||||
|
||||
if (! $rule->discount_quantity || $rule->discount_quantity > $quantity) {
|
||||
$discountPercent = min(100, $item->discount_percent + $rulePercent);
|
||||
|
|
@ -316,8 +324,16 @@ class CartRule
|
|||
break;
|
||||
}
|
||||
|
||||
$item->discount_amount = min($item->discount_amount + $discountAmount, $item->price * $quantity + $item->tax_amount);
|
||||
$item->base_discount_amount = min($item->base_discount_amount + $baseDiscountAmount, $item->base_price * $quantity + $item->base_tax_amount);
|
||||
$item->discount_amount = round(
|
||||
min(
|
||||
$item->discount_amount + $discountAmount,
|
||||
$item->price * $quantity + $item->tax_amount
|
||||
),2);
|
||||
$item->base_discount_amount = round(
|
||||
min(
|
||||
$item->base_discount_amount + $baseDiscountAmount,
|
||||
$item->base_price * $quantity + $item->base_tax_amount
|
||||
), 2);
|
||||
|
||||
$appliedRuleIds[$rule->id] = $rule->id;
|
||||
|
||||
|
|
|
|||
|
|
@ -19,14 +19,14 @@ class Order
|
|||
/**
|
||||
* CartRuleCustomerRepository object
|
||||
*
|
||||
* @var Webkul\CartRule\Repositories\\CartRuleCustomerRepository
|
||||
* @var \Webkul\CartRule\Repositories\CartRuleCustomerRepository
|
||||
*/
|
||||
protected $cartRuleCustomerRepository;
|
||||
|
||||
/**
|
||||
* CartRuleCouponRepository object
|
||||
*
|
||||
* @var Webkul\CartRule\Repositories\\CartRuleCouponRepository
|
||||
* @var \Webkul\CartRule\Repositories\CartRuleCouponRepository
|
||||
*/
|
||||
protected $cartRuleCouponRepository;
|
||||
|
||||
|
|
@ -64,7 +64,7 @@ class Order
|
|||
|
||||
/**
|
||||
* Save cart rule and cart rule coupon properties after place order
|
||||
*
|
||||
*
|
||||
* @param \Webkul\Sales\Contracts\Order $order
|
||||
* @return void
|
||||
*/
|
||||
|
|
@ -112,7 +112,7 @@ class Order
|
|||
}
|
||||
|
||||
$coupon = $this->cartRuleCouponRepository->findOneByField('code', $order->coupon_code);
|
||||
|
||||
|
||||
if ($coupon) {
|
||||
$this->cartRuleCouponRepository->update(['times_used' => $coupon->times_used + 1], $coupon->id);
|
||||
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ class CartRuleRepository extends Repository
|
|||
/**
|
||||
* CartRuleCouponRepository object
|
||||
*
|
||||
* @var Webkul\CartRule\Repositories\CartRuleCouponRepository
|
||||
* @var \Webkul\CartRule\Repositories\CartRuleCouponRepository
|
||||
*/
|
||||
protected $cartRuleCouponRepository;
|
||||
|
||||
|
|
|
|||
|
|
@ -165,9 +165,9 @@ class Cart
|
|||
'cart_id' => $cart->id
|
||||
]));
|
||||
} else {
|
||||
if ($cartItem->product->getTypeInstance()->showQuantityBox() === false) {
|
||||
return ['warning' => __('shop::app.checkout.cart.integrity.qty_impossible')];
|
||||
}
|
||||
// if ($cartItem->product->getTypeInstance()->showQuantityBox() === false) {
|
||||
// return ['warning' => __('shop::app.checkout.cart.integrity.qty_impossible')];
|
||||
// }
|
||||
|
||||
$cartItem = $this->cartItemRepository->update($cartProduct, $cartItem->id);
|
||||
}
|
||||
|
|
@ -368,8 +368,14 @@ class Cart
|
|||
continue;
|
||||
}
|
||||
|
||||
$found = true;
|
||||
|
||||
$cartItem->quantity = $newQuantity = $cartItem->quantity + $guestCartItem->quantity;
|
||||
|
||||
if ($cartItem->quantity > $cartItem->product->getTypeInstance()->totalQuantity()) {
|
||||
$cartItem->quantity = $newQuantity = $cartItem->product->getTypeInstance()->totalQuantity();
|
||||
}
|
||||
|
||||
if (! $this->isItemHaveQuantity($cartItem)) {
|
||||
$this->cartItemRepository->delete($guestCartItem->id);
|
||||
|
||||
|
|
@ -387,8 +393,6 @@ class Cart
|
|||
$guestCart->items->forget($key);
|
||||
|
||||
$this->cartItemRepository->delete($guestCartItem->id);
|
||||
|
||||
$found = true;
|
||||
}
|
||||
|
||||
if (! $found) {
|
||||
|
|
@ -432,20 +436,19 @@ class Cart
|
|||
*
|
||||
* @return \Webkul\Checkout\Contracts\Cart|null
|
||||
*/
|
||||
public function getCart()
|
||||
public function getCart(): ?\Webkul\Checkout\Contracts\Cart
|
||||
{
|
||||
$cart = null;
|
||||
|
||||
if ($this->getCurrentCustomer()->check()) {
|
||||
$cart = $this->cartRepository->findOneWhere([
|
||||
return $this->cartRepository->findOneWhere([
|
||||
'customer_id' => $this->getCurrentCustomer()->user()->id,
|
||||
'is_active' => 1,
|
||||
]);
|
||||
|
||||
} elseif (session()->has('cart')) {
|
||||
$cart = $this->cartRepository->find(session()->get('cart')->id);
|
||||
return $this->cartRepository->find(session()->get('cart')->id);
|
||||
}
|
||||
|
||||
return $cart && $cart->is_active ? $cart : null;
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -464,7 +467,7 @@ class Cart
|
|||
if ($cart->haveStockableItems()) {
|
||||
$data['shipping_address'] = $cart->shipping_address->toArray();
|
||||
|
||||
$data['selected_shipping_rate'] = $cart->selected_shipping_rate->toArray();
|
||||
$data['selected_shipping_rate'] = $cart->selected_shipping_rate ? $cart->selected_shipping_rate->toArray() : 0.0;
|
||||
}
|
||||
|
||||
$data['payment'] = $cart->payment->toArray();
|
||||
|
|
@ -479,7 +482,8 @@ class Cart
|
|||
*
|
||||
* @param array $data
|
||||
*
|
||||
* @return void is the cart valid
|
||||
* @return bool
|
||||
* @throws \Prettus\Validator\Exceptions\ValidatorException
|
||||
*/
|
||||
public function saveCustomerAddress($data): bool
|
||||
{
|
||||
|
|
@ -494,7 +498,7 @@ class Cart
|
|||
$this->saveAddressesWhenRequested($data, $billingAddressData, $shippingAddressData);
|
||||
|
||||
$this->linkAddresses($cart, $billingAddressData, $shippingAddressData);
|
||||
|
||||
|
||||
$this->assignCustomerFields($cart);
|
||||
|
||||
$cart->save();
|
||||
|
|
@ -567,6 +571,7 @@ class Cart
|
|||
Event::dispatch('checkout.cart.collect.totals.before', $cart);
|
||||
|
||||
$this->calculateItemsTax();
|
||||
$cart->refresh();
|
||||
|
||||
$cart->grand_total = $cart->base_grand_total = 0;
|
||||
$cart->sub_total = $cart->base_sub_total = 0;
|
||||
|
|
@ -628,6 +633,7 @@ class Cart
|
|||
} else {
|
||||
foreach ($cart->items as $item) {
|
||||
$response = $item->product->getTypeInstance()->validateCartItem($item);
|
||||
// ToDo: refactoring of all validateCartItem functions, at the moment they return nothing
|
||||
|
||||
if ($response) {
|
||||
return;
|
||||
|
|
@ -658,6 +664,8 @@ class Cart
|
|||
return;
|
||||
}
|
||||
|
||||
Event::dispatch('checkout.cart.calculate.items.tax.before', $cart);
|
||||
|
||||
foreach ($cart->items()->get() as $item) {
|
||||
$taxCategory = $this->taxCategoryRepository->find($item->product->tax_category_id);
|
||||
|
||||
|
|
@ -725,6 +733,7 @@ class Cart
|
|||
|
||||
$item->save();
|
||||
}
|
||||
Event::dispatch('checkout.cart.calculate.items.tax.after', $cart);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -733,7 +742,7 @@ class Cart
|
|||
* @param \Webkul\Checkout\Contracts\CartItem $item
|
||||
* @return \Webkul\Checkout\Contracts\CartItem
|
||||
*/
|
||||
protected function setItemTaxToZero(CartItem $item): CartItem
|
||||
protected function setItemTaxToZero(\Webkul\Checkout\Contracts\CartItem $item): \Webkul\Checkout\Contracts\CartItem
|
||||
{
|
||||
$item->tax_percent = 0;
|
||||
$item->tax_amount = 0;
|
||||
|
|
@ -747,7 +756,7 @@ class Cart
|
|||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function hasError()
|
||||
public function hasError(): bool
|
||||
{
|
||||
if (! $this->getCart()) {
|
||||
return true;
|
||||
|
|
@ -765,7 +774,7 @@ class Cart
|
|||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function isItemsHaveSufficientQuantity()
|
||||
public function isItemsHaveSufficientQuantity(): bool
|
||||
{
|
||||
foreach ($this->getCart()->items as $item) {
|
||||
if (! $this->isItemHaveQuantity($item)) {
|
||||
|
|
@ -782,7 +791,7 @@ class Cart
|
|||
* @param \Webkul\Checkout\Contracts\CartItem $item
|
||||
* @return bool
|
||||
*/
|
||||
public function isItemHaveQuantity($item)
|
||||
public function isItemHaveQuantity($item): bool
|
||||
{
|
||||
return $item->product->getTypeInstance()->isItemHaveQuantity($item);
|
||||
}
|
||||
|
|
@ -792,7 +801,7 @@ class Cart
|
|||
*
|
||||
* @return void
|
||||
*/
|
||||
public function deActivateCart()
|
||||
public function deActivateCart(): void
|
||||
{
|
||||
if ($cart = $this->getCart()) {
|
||||
$this->cartRepository->update(['is_active' => false], $cart->id);
|
||||
|
|
@ -808,7 +817,7 @@ class Cart
|
|||
*
|
||||
* @return array
|
||||
*/
|
||||
public function prepareDataForOrder()
|
||||
public function prepareDataForOrder(): array
|
||||
{
|
||||
$data = $this->toArray();
|
||||
|
||||
|
|
@ -867,7 +876,7 @@ class Cart
|
|||
* @param array $data
|
||||
* @return array
|
||||
*/
|
||||
public function prepareDataForOrderItem($data)
|
||||
public function prepareDataForOrderItem($data): array
|
||||
{
|
||||
$finalData = [
|
||||
'product' => $this->productRepository->find($data['product_id']),
|
||||
|
|
@ -1025,9 +1034,9 @@ class Cart
|
|||
* When logged in as guest or the customer profile is not complete, we use the
|
||||
* billing address to fill the order customer_ data.
|
||||
*
|
||||
* @param \Webkul\Checkout\Models\Cart $cart
|
||||
* @param \Webkul\Checkout\Contracts\Cart $cart
|
||||
*/
|
||||
private function assignCustomerFields(\Webkul\Checkout\Models\Cart $cart): void
|
||||
private function assignCustomerFields(\Webkul\Checkout\Contracts\Cart $cart): void
|
||||
{
|
||||
if ($this->getCurrentCustomer()->check()
|
||||
&& ($user = $this->getCurrentCustomer()->user())
|
||||
|
|
@ -1182,34 +1191,37 @@ class Cart
|
|||
{
|
||||
$billingAddressModel = $cart->billing_address;
|
||||
if ($billingAddressModel) {
|
||||
$billingAddressData['address_type'] = CartAddress::ADDRESS_TYPE_BILLING;
|
||||
$this->cartAddressRepository->update($billingAddressData, $billingAddressModel->id);
|
||||
|
||||
if ($cart->haveStockableItems()) {
|
||||
$shippingAddressModel = $cart->shipping_address;
|
||||
if ($shippingAddressModel) {
|
||||
if (isset($billingAddressData['use_for_shipping']) && $billingAddressData['use_for_shipping']) {
|
||||
$billingAddressData['address_type'] = CartAddress::ADDRESS_TYPE_SHIPPING;
|
||||
$this->cartAddressRepository->update($billingAddressData, $shippingAddressModel->id);
|
||||
} else {
|
||||
$shippingAddressData['address_type'] = CartAddress::ADDRESS_TYPE_SHIPPING;
|
||||
$this->cartAddressRepository->update($shippingAddressData, $shippingAddressModel->id);
|
||||
}
|
||||
} else {
|
||||
if (isset($billingAddressData['use_for_shipping']) && $billingAddressData['use_for_shipping']) {
|
||||
$this->cartAddressRepository->create(array_merge($billingAddressData,
|
||||
['address_type' => 'shipping']));
|
||||
['address_type' => CartAddress::ADDRESS_TYPE_SHIPPING]));
|
||||
} else {
|
||||
$this->cartAddressRepository->create(array_merge($shippingAddressData,
|
||||
['address_type' => 'shipping']));
|
||||
['address_type' => CartAddress::ADDRESS_TYPE_SHIPPING]));
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$this->cartAddressRepository->create(array_merge($billingAddressData, ['address_type' => 'billing']));
|
||||
$this->cartAddressRepository->create(array_merge($billingAddressData, ['address_type' => CartAddress::ADDRESS_TYPE_BILLING]));
|
||||
|
||||
if ($cart->haveStockableItems()) {
|
||||
if (isset($billingAddressData['use_for_shipping']) && $billingAddressData['use_for_shipping']) {
|
||||
$this->cartAddressRepository->create(array_merge($billingAddressData, ['address_type' => 'shipping']));
|
||||
$this->cartAddressRepository->create(array_merge($billingAddressData, ['address_type' => CartAddress::ADDRESS_TYPE_SHIPPING]));
|
||||
} else {
|
||||
$this->cartAddressRepository->create(array_merge($shippingAddressData, ['address_type' => 'shipping']));
|
||||
$this->cartAddressRepository->create(array_merge($shippingAddressData, ['address_type' => CartAddress::ADDRESS_TYPE_SHIPPING]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,14 +6,10 @@ use Faker\Generator as Faker;
|
|||
use Webkul\Checkout\Models\CartAddress;
|
||||
|
||||
$factory->define(CartAddress::class, function (Faker $faker) {
|
||||
$now = date("Y-m-d H:i:s");
|
||||
|
||||
return [
|
||||
'first_name' => $faker->firstName(),
|
||||
'last_name' => $faker->lastName,
|
||||
'email' => $faker->email,
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
'address_type' => 'billing',
|
||||
'address_type' => CartAddress::ADDRESS_TYPE_BILLING,
|
||||
];
|
||||
});
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ class Cart extends Model implements CartContract
|
|||
*/
|
||||
public function billing_address()
|
||||
{
|
||||
return $this->addresses()->where('address_type', 'billing');
|
||||
return $this->addresses()->where('address_type', CartAddress::ADDRESS_TYPE_BILLING);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -64,7 +64,7 @@ class Cart extends Model implements CartContract
|
|||
*/
|
||||
public function shipping_address()
|
||||
{
|
||||
return $this->addresses()->where('address_type', 'shipping');
|
||||
return $this->addresses()->where('address_type', CartAddress::ADDRESS_TYPE_SHIPPING);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -2,30 +2,47 @@
|
|||
|
||||
namespace Webkul\Checkout\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Webkul\Checkout\Contracts\CartAddress as CartAddressContract;
|
||||
use Webkul\Core\Models\Address;
|
||||
|
||||
class CartAddress extends Model implements CartAddressContract
|
||||
/**
|
||||
* Class CartAddress
|
||||
* @package Webkul\Checkout\Models
|
||||
*
|
||||
* @property integer $cart_id
|
||||
* @property Cart $cart
|
||||
*
|
||||
*/
|
||||
class CartAddress extends Address implements CartAddressContract
|
||||
{
|
||||
protected $table = 'cart_address';
|
||||
public const ADDRESS_TYPE_SHIPPING = 'cart_shipping';
|
||||
public const ADDRESS_TYPE_BILLING = 'cart_billing';
|
||||
|
||||
protected $fillable = [
|
||||
'first_name',
|
||||
'last_name',
|
||||
'email',
|
||||
'company_name',
|
||||
'vat_id',
|
||||
'address1',
|
||||
'city',
|
||||
'state',
|
||||
'postcode',
|
||||
'country',
|
||||
'phone',
|
||||
'address_type',
|
||||
'cart_id',
|
||||
'customer_id',
|
||||
/**
|
||||
* @var array default values
|
||||
*/
|
||||
protected $attributes = [
|
||||
'address_type' => self::ADDRESS_TYPE_BILLING,
|
||||
];
|
||||
|
||||
/**
|
||||
* The "booted" method of the model.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected static function boot()
|
||||
{
|
||||
static::addGlobalScope('address_type', static function (Builder $builder) {
|
||||
$builder->whereIn('address_type', [
|
||||
self::ADDRESS_TYPE_BILLING,
|
||||
self::ADDRESS_TYPE_SHIPPING
|
||||
]);
|
||||
});
|
||||
|
||||
parent::boot();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the shipping rates for the cart address.
|
||||
*/
|
||||
|
|
@ -35,10 +52,10 @@ class CartAddress extends Model implements CartAddressContract
|
|||
}
|
||||
|
||||
/**
|
||||
* Get all of the attributes for the attribute groups.
|
||||
* Get the cart record associated with the address.
|
||||
*/
|
||||
public function getNameAttribute()
|
||||
public function cart()
|
||||
{
|
||||
return $this->first_name . ' ' . $this->last_name;
|
||||
return $this->belongsTo(Cart::class);
|
||||
}
|
||||
}
|
||||
|
|
@ -24,6 +24,7 @@ class CartShippingRate extends Model implements CartShippingRateContract
|
|||
*/
|
||||
public function shipping_address()
|
||||
{
|
||||
return $this->belongsTo(CartAddressProxy::modelClass());
|
||||
return $this->belongsTo(CartAddressProxy::modelClass(), 'cart_address_id')
|
||||
->where('address_type', CartAddress::ADDRESS_TYPE_SHIPPING);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
namespace Webkul\Core\Console\Commands;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
<?php
|
||||
|
||||
namespace Webkul\Core\Console\Commands;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
class ExchangeRateUpdate extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'exchange-rate:update';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Automatically updates currency exchange rates ';
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
try {
|
||||
app(config('services.exchange-api.' . config('services.exchange-api.default') . '.class'))->updateRates();
|
||||
} catch(\Exception $e) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue