{"id":50387876,"url":"https://github.com/etechflow/module-next-day-eligibility","last_synced_at":"2026-05-30T16:01:35.899Z","repository":{"id":359730673,"uuid":"1244604164","full_name":"etechflow/module-next-day-eligibility","owner":"etechflow","description":"Magento 2 module: real-time next-day shipping eligibility (stock + supplier drop-ship aware) with admin badge and checkout method restriction.","archived":false,"fork":false,"pushed_at":"2026-05-23T06:01:24.000Z","size":1208,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-23T08:09:01.850Z","etag":null,"topics":["drop-shipping","ecommerce","etechflow","hyva","hyva-compatible","magento-2","magento-module","magento2","magento2-module","next-day-shipping","php","shipping","stock"],"latest_commit_sha":null,"homepage":"https://etechflow.com","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/etechflow.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-20T12:24:43.000Z","updated_at":"2026-05-23T06:01:25.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/etechflow/module-next-day-eligibility","commit_stats":null,"previous_names":["etechflow/module-next-day-eligibility"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/etechflow/module-next-day-eligibility","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etechflow%2Fmodule-next-day-eligibility","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etechflow%2Fmodule-next-day-eligibility/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etechflow%2Fmodule-next-day-eligibility/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etechflow%2Fmodule-next-day-eligibility/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/etechflow","download_url":"https://codeload.github.com/etechflow/module-next-day-eligibility/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etechflow%2Fmodule-next-day-eligibility/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33698654,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["drop-shipping","ecommerce","etechflow","hyva","hyva-compatible","magento-2","magento-module","magento2","magento2-module","next-day-shipping","php","shipping","stock"],"created_at":"2026-05-30T16:01:35.329Z","updated_at":"2026-05-30T16:01:35.885Z","avatar_url":"https://github.com/etechflow.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Next Day Shipping Eligibility for Magento 2\n\n**Comprehensive stock-aware shipping restrictions in one module.**\n\nTwo independent rules, one admin section, one license:\n\n1. **Next-day eligibility** (auto-managed) — removes configured next-day shipping methods from checkout when any cart item is out of stock or otherwise ineligible. Eligibility is auto-maintained by a stock observer; nothing for the merchant to flip per product.\n2. **Backorder express restriction** (opt-in, v1.1.0+) — removes any express methods you list when the cart contains backorder items (out of stock with backorders enabled, or partially short). Useful for merchants who explicitly flag pre-order / made-to-order products and don't want them sold with express delivery.\n\nBoth rules raise a single dismissible checkout banner with merchant-customisable wording. Both respect the Drop-Ship Eligible exemption.\n\nStock-aware. Drop-ship aware. Hyvä compatible. Works with Magento Open Source and Adobe Commerce.\n\n---\n\n## What's new\n\nThe version-by-version history lives in `CHANGELOG.md`. Highlights of the most recent releases:\n\n- **v1.4.0** — New per-product `Force Standard Shipping Only` flag. Tick it on the product edit page (under *eTechFlow Shipping*) to hard-disable next-day shipping for that product regardless of stock state. For bulky / hazmat / fragile / made-to-order items. Ships with a CLI verification command: `bin/magento etechflow:nde:verify --sku=\u003csku\u003e` runs an end-to-end check that the observer + evaluator pipeline is wired correctly.\n- **v1.3.0** — Module status banner at the top of admin config (shows whether the module is actually active), PDP badge visibility toggle, drop-ship grid filter, inline tooltips on every field.\n- **v1.2.0** — Shipping method fields are now multi-select dropdowns auto-populated from your active shipping methods — merchants no longer need to know technical codes.\n- **v1.1.0** — Absorbed the deprecated `ETechFlow_BackorderShippingRestrictor` module's features as an opt-in \"Backorder Express Restriction\" toggle. The bundle is now 2 modules (NDE + BackorderEtaDisplay).\n\n---\n\n## What it solves\n\nMerchants who advertise next-day delivery hit the same problem from two directions:\n\n| Scenario | Without the module | With the module |\n|---|---|---|\n| Customer picks \"Next Day\" on an out-of-stock item | Order ships a week late, refund + 1-star review | Next-day automatically hidden at checkout; banner explains why |\n| Customer picks \"Express\" on a pre-order / backorder item | Same problem — supplier ETA is two weeks, customer paid £15 for next-day | Express methods automatically hidden when the toggle is enabled |\n| Drop-shipped products with zero local stock | Marked out of stock, no Add to Cart button | Stay eligible — supplier ships direct, backorders auto-enabled |\n| Customer asks \"where is my order?\" | Volume support tickets | Banner sets the expectation at checkout |\n\n## Requirements\n\n| | |\n|---|---|\n| **Magento** | Open Source 2.4.4+ OR Adobe Commerce 2.4.4+ |\n| **PHP** | 8.1, 8.2, 8.3, or 8.4 |\n| **Compatible themes** | Luma (default) + Hyvä |\n\n## Installation\n\n### Option A — Composer (recommended)\n\n```bash\ncomposer require etechflow/module-next-day-eligibility:^1.1\nbin/magento module:enable ETechFlow_NextDayEligibility\nbin/magento setup:upgrade\nbin/magento setup:di:compile\nbin/magento cache:flush\n```\n\n### Option B — Manual (from zip)\n\n1. Unzip `etechflow-module-next-day-eligibility-1.1.0.zip` into:\n   ```\n   \u003cmagento-root\u003e/app/code/ETechFlow/NextDayEligibility/\n   ```\n   **The directory MUST be named `ETechFlow` (capital E, capital T, capital F) — case-sensitive on Linux servers.**\n\n2. Enable and set up:\n   ```bash\n   bin/magento module:enable ETechFlow_NextDayEligibility\n   bin/magento setup:upgrade\n   bin/magento setup:di:compile\n   bin/magento cache:flush\n   ```\n\n3. Verify:\n   ```bash\n   bin/magento module:status | grep NextDayEligibility\n   ```\n\n## After install — quick setup\n\nOpen the admin and go to **Stores → Configuration → eTechFlow → Next Day Eligibility**.\n\n### Step 1 — License\n\n**License → License Key**: paste the key from your purchase email and save.\n\n\u003e **Don't have a key yet?** Dev/staging hosts are free. Any URL matching `localhost`, `*.test`, `*.local`, `staging.*`, `dev.*`, `*.magento.cloud`, ngrok tunnels, or RFC 1918 IPs runs at full features without a key. For non-standard dev domains, set **License → Production Environment = No** instead.\n\n### Step 2 — Enable the module\n\n**General Settings → Enable Module = Yes** → save.\n\n### Step 3 — Pick your next-day shipping methods\n\n**General Settings → Next Day Shipping Methods** is a multi-select dropdown. The list is auto-populated from your store's currently active shipping methods (the same list shown under Stores → Configuration → Sales → Shipping Methods). Tick the methods you want removed for ineligible carts — typically just your paid next-day or express options. Hold \u003ckbd\u003eCtrl\u003c/kbd\u003e/\u003ckbd\u003eCmd\u003c/kbd\u003e to select multiple. Save.\n\n\u003e **⚠️ Important — keep at least one fallback method unticked.** Don't tick every option. The intended pattern is to tick only your paid express / next-day methods so a standard or free option always stays available for ineligible carts. If you accidentally select everything, a safety net returns the original rates and logs a warning to `var/log/system.log` to prevent a stuck checkout — but that's a guardrail, not a config strategy. See `docs/USER_GUIDE.md` \"Configuration trap\" for the typical UK setups.\n\nThat's the core feature done. Browse to a product detail page — you'll see the green \"Next Day Eligible\" / grey \"Standard Delivery Only\" badge under the price.\n\n### Step 4 — (optional) Enable Backorder Express Restriction\n\nIf you also want to block express shipping on backorder items:\n\n**Backorder Express Restriction**:\n- Set **Restrict Express Methods on Backorder = Yes**\n- **Express Methods to Restrict on Backorder** — same multi-select pattern as the next-day field above, but stored independently. Tick whichever methods should disappear when a backorder item is in the cart. Can overlap with or differ from your next-day selection.\n- Leave **Skip Drop-Ship Products = Yes** (default) so drop-ship products bypass this rule.\n\n### Step 5 — (optional) Customise the checkout banner\n\n**Checkout Notice**:\n- **Show Notice at Checkout = Yes** (default)\n- **Notice Style** — warning (amber), info (blue), or error (red)\n- **Notice Title** — bold heading, e.g. *\"Next day delivery unavailable\"*\n- **Notice Message** — body copy, e.g. *\"One or more items in your cart is not eligible for next day delivery.\"*\n\nAll four fields can be overridden per store view for multi-brand setups.\n\n### Step 6 — (optional) Hide or simplify the product-page badge\n\n**General Settings → Show Badge on Product Page**:\n- **Both** (default) — green \"Next Day Eligible\" + grey \"Standard Delivery Only\" badges\n- **Eligible only** — show the green badge, hide the grey one (recommended if you don't want to draw negative attention to ineligible products)\n- **Never** — no PDP badge at all; the shipping restriction at checkout still works\n\n## Per-product overrides (v1.4.0+)\n\nTwo checkboxes on the product edit page (under the **eTechFlow Shipping** attribute group) let you override the auto-calculation per product:\n\n| Attribute | What it does | When to use |\n|---|---|---|\n| **Drop-Ship Eligible** | Always eligible regardless of local stock — supplier ships direct | Products fulfilled by a same-day-shipping supplier |\n| **Force Standard Shipping Only** *(new in v1.4.0)* | Always ineligible regardless of stock — only standard shipping shown at checkout | Bulky / hazmat / fragile / made-to-order / promotional items |\n\nPrecedence inside the eligibility evaluator:\n\n1. `Force Standard Shipping Only = Yes` → always ineligible (merchant override wins)\n2. `Drop-Ship Eligible = Yes` → always eligible\n3. Otherwise: stock check (`qty \u003e 0 AND in stock` → eligible)\n\nBoth flags work as Magento mass-action targets — see \"Tips\" below.\n\n## Tips for managing the catalogue\n\n**Bulk-flag drop-ship products.** In *Catalog → Products*, filter the grid (now filterable by Drop-Ship Eligible — new in v1.3.0), tick the products, and use *Actions → Update Attributes → Drop-Ship Eligible = Yes*. Magento applies it to every selected product in one click.\n\n**Bulk-flag force-standard-only products.** Same workflow with the new attribute: filter by *Force Standard Shipping Only = No*, narrow further (e.g. by category = \"Furniture\" or by weight), tick all, *Actions → Update Attributes → Force Standard Shipping Only = Yes*. Useful for one-pass classification of your bulky-item or hazmat catalog.\n\n**Bulk imports.** If you're using a CSV import or custom script to load thousands of products, set `$product-\u003esetData('_etechflow_skip_eligibility', true)` before each save to bypass the per-product observer. Then batch-evaluate after the import completes via `\\ETechFlow\\NextDayEligibility\\Model\\EligibilityEvaluator::evaluateById(...)`. See `docs/USER_GUIDE.md` \"Bulk imports — the escape hatch\" for the full pattern.\n\n**Module status banner.** At the top of the NDE admin config section is a coloured banner showing whether the module is active, idle, or has a licence problem. Read it first if anything seems off — most \"I configured it but nothing happens\" cases are answered by that banner.\n\n## Documentation\n\n| File | Read when |\n|---|---|\n| `README.md` (this file) | First — overview + install + quick setup |\n| `docs/USER_GUIDE.md` | Full reference: every admin field, every scenario, troubleshooting, known limitations |\n| `CHANGELOG.md` | What changed in each version |\n| `LICENSE.txt` | Licence terms |\n\n## Support\n\n- **Email:** support@etechflow.com — typically responds within one business day\n- **Website:** https://etechflow.com\n\n## License\n\nProprietary — see `LICENSE.txt`. Licensed per Magento installation, with unlimited dev/staging environments under the same business entity.\n\nTo change your production domain (e.g. site migration), email `support@etechflow.com` with your old + new domain and order number. New key issued same business day.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fetechflow%2Fmodule-next-day-eligibility","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fetechflow%2Fmodule-next-day-eligibility","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fetechflow%2Fmodule-next-day-eligibility/lists"}