Mango.Nop.Plugins/Nop.Plugin.Misc.AIPlugin
Loretta 727b237253 Clarify Shipping schema docs, make truck fields nullable
Updated SCHEMA.md to clarify field purposes for Shipping and ShippingDocument entities, emphasizing progressive assignment and nullable status for carrier/truck fields. Changed CargoPartnerId, CargoTrailerId, and CargoTruckId types to nullable (int?). Added git show command for SCHEMA.md in settings.local.json and fixed a missing comma. No structural schema changes.
2026-05-31 14:52:34 +02:00
..
.github Add pre-order workflow docs and update topic references 2026-05-30 17:08:47 +02:00
Areas/Admin Rename Preorder domain to PreOrder across codebase 2026-05-30 16:26:51 +02:00
Components Rename Preorder domain to PreOrder across codebase 2026-05-30 16:26:51 +02:00
Controllers Add CargoPartner/CargoTruck relations and eager loading 2026-05-31 14:01:58 +02:00
Domains Add CargoPartner/CargoTruck relations and eager loading 2026-05-31 14:01:58 +02:00
Factories CustomerCredit, new order 2026-03-27 17:14:40 +01:00
Filters shipment, plugin basic things, invoicing 2025-09-23 12:19:58 +02:00
Helpers improvements, etc 2025-10-11 12:52:55 +02:00
Infrastructure Rename Preorder domain to PreOrder across codebase 2026-05-30 16:26:51 +02:00
Localization Rename Preorder domain to PreOrder across codebase 2026-05-30 16:26:51 +02:00
Mapping Rename Preorder domain to PreOrder across codebase 2026-05-30 16:26:51 +02:00
Migrations FruitBank plugin 2025-08-31 01:25:22 +02:00
Models bug fixes on preorder, modified logic 2026-05-26 14:48:57 +02:00
Services Rename Preorder domain to PreOrder across codebase 2026-05-30 16:26:51 +02:00
Views Rename Preorder domain to PreOrder across codebase 2026-05-30 16:26:51 +02:00
css Rename Preorder domain to PreOrder across codebase 2026-05-30 16:26:51 +02:00
docs Clarify Shipping schema docs, make truck fields nullable 2026-05-31 14:52:34 +02:00
js/devextreme devextreme, devexpress, shipping controller, cutsom adminlayout, custom Scripts partial, custom OrderGrid, AI services, AI messages 2025-09-30 17:15:52 +02:00
FruitBankConst.cs Rename Preorder domain to PreOrder across codebase 2026-05-30 16:26:51 +02:00
FruitBankPlugin.cs Rename Preorder domain to PreOrder across codebase 2026-05-30 16:26:51 +02:00
FruitBankSettings.cs gyorsrendelés, előrendelés, előrendelés management, hasonlók 2026-05-12 16:18:19 +02:00
Nop.Plugin.Misc.FruitBankPlugin.csproj Rename Preorder domain to PreOrder across codebase 2026-05-30 16:26:51 +02:00
NuGet.config devextreme, devexpress, shipping controller, cutsom adminlayout, custom Scripts partial, custom OrderGrid, AI services, AI messages 2025-09-30 17:15:52 +02:00
README.md Add pre-order workflow docs and update topic references 2026-05-30 17:08:47 +02:00
SKILL.md gyorsrendelés, előrendelés, előrendelés management, hasonlók 2026-05-12 16:18:19 +02:00
logo.jpg AIPLugin 2025-08-29 13:35:34 +02:00
plugin.json FruitBank plugin 2025-08-31 01:25:22 +02:00

README.md

Nop.Plugin.Misc.AIPlugin (FruitBank nopCommerce Plugin)

@project { type = "nopcommerce-plugin" own-dep-projects = [ "Mango.Nop.Core, Mango.Nop.Services (in NopCommerce.Common/4.70/Libraries)" ] }

For Mango.Nop library docs see NopCommerce.Common/4.70/Libraries/README.md For FruitBankHybridApp domain rules see the FruitBankHybridApp solution's .github/copilot-instructions.md For core measurement system rules and common domain traps, see: ../../../../FruitBankHybridApp/FruitBank.Common/docs/GLOSSARY.md

Server-side nopCommerce plugin for FruitBank, a fruit and vegetable wholesaler. Manages supplier inbound delivery (receiving), warehouse weighing (net/gross/pallet/tare weights), outbound order measurement, customer pre-orders, inventory stocktaking, AI services, and Billingo invoicing. Runs inside nopCommerce 4.80.9 (net9.0).

Project file: Nop.Plugin.Misc.FruitBankPlugin.csproj

Documentation

Document Topic
docs/SCHEMA.md Authoritative domain model in TOON format — all entities, DTOs, enums, relationships
docs/DOMAIN_MODEL.md Behavioral docs: weight formula, MeasuringStatus lifecycle, GenericAttribute keys, entity hierarchy overview
docs/MEASUREMENT.md Three measurement workflows (inbound shipping, outbound order, stocktaking), MeasuringStatus lifecycle, pricing, checkout filter
docs/AI_SERVICES.md OpenAI, Cerebras, Replicate providers, FruitBankSettings, file storage, PDF conversion, audio transcription
docs/DATA_LAYER.md FruitBankDbContext, StockTakingDbContext, DbTable repositories, entity mapping, FruitBankEventConsumer
docs/SIGNALR/README.md SignalR endpoints, FruitBankDataController, InnVoice/Billingo integration, FruitBankAttributeService
docs/PREORDER/README.md Customer pre-order workflow — placement, FCFS allocation on incoming stock, conversion to real orders, expiry

Folder Structure

Folder Purpose
Areas/Admin/Controllers/ Admin MVC controllers — order, product, shipping, SignalR endpoints, file management
Areas/Admin/Components/ Admin ViewComponents — DevExtreme grids
Areas/Admin/Models/ Admin view models
Areas/Admin/Views/ Admin Razor views
Components/ Public-side ViewComponents
Controllers/ Public-side controllers — FruitBankDataController, CheckoutController
Domains/DataLayer/ DbContexts, DbTable repositories, interfaces
Domains/EventConsumers/ nopCommerce entity event handlers
Factories/ Model factories (order, product, shipping)
Filters/ PendingMeasurementCheckoutFilter
Infrastructure/ PluginNopStartup (DI), RouteProvider, ViewLocationExpander
Mapping/ EF Core entity mapping, PluginBuilder
Migrations/ FluentMigrator database schema
Models/ Shared models — AI chat, MgBase extensions, order/product models
Services/ Business logic — AI, measurement, file storage, invoicing, locking

Dependencies

  • Mango.Nop.Core, Mango.Nop.Services (ProjectReferences via ../../Libraries/)
  • Nop.Services, Nop.Web (nopCommerce ProjectReferences)
  • AyCode.Core solution assemblies (DLL HintPaths in .csproj)
  • DevExpress ASP.NET Core 25.1.3, DevExtreme 25.1.3
  • SignalR, EF Core 9.0, PdfPig, PDFtoImage

Initialization & Quirks

  • AcBinary Source Generator Registration: NopCommerce plugins are loaded dynamically via AssemblyLoadContext, which prevents the .NET runtime from executing [ModuleInitializer] attributes. To ensure the high-performance binary serializers are registered (instead of falling back to slow reflection), PluginNopStartup.ConfigureServices must call Mango.Nop.Core.AcBinaryForcedInit.ForceRegister().

Type-Location Map

Quick lookup for "where does this type live?" — saves cross-repo grep rounds.

Type / class family Lives in Path (relative or NuGet)
Customer, Order, OrderItem, OrderNote, Product, GenericAttribute, CustomerRole nopCommerce framework Nop.Core (ProjectRef)
*Dto classes (OrderDto, OrderItemDto, ProductDto, GenericAttributeDto, StockQuantityHistoryDto) Mango.Nop.Core ../../Libraries/Mango.Nop.Core/
MgDbContextBase, MgDbTableBase<T>, MgEventConsumerBase, other Mg* base types Mango.Nop.* libraries ../../Libraries/Mango.Nop.{Core,Services,Data}/
Ac* types (AcBinaryHubProtocol, AcBinarySerializer, AcLoggerBase, AcBinaryForcedInit) AyCode.Core (DLL HintPath) ../../../Aycode/Source/AyCode.Core/
fb*-table entities: Shipping, ShippingDocument, ShippingItem, ShippingItemPallet, OrderItemPallet, StockTaking, StockTakingItem, StockTakingItemPallet, Partner, Files, Pallet this plugin Domains/... (full schema in docs/SCHEMA.md)
FullProcessModel (bulk SignalR sync container) this plugin Models/
FruitBankDbContext, StockTakingDbContext, *DbTable repositories (OrderDtoDbTable, ShippingDbTable, …), I*DbSet interfaces this plugin Domains/DataLayer/
FruitBankEventConsumer, MeasurementService, CustomPriceCalculationService, FruitBankAttributeService this plugin Domains/EventConsumers/, Services/
AI: OpenAIApiService, CerebrasAPIService, ReplicateService, OpenAIService, AICalculationService this plugin Services/
File / PDF / Audio: FileStorageService, LocalStorageProvider, PdfToImageService, FruitBankAudioController this plugin Services/, Controllers/
Billingo: InnVoiceOrderService, InnvoiceApiService (+ InnVoiceOrderController, InnVoiceOrderSyncController) this plugin Services/, Areas/Admin/Controllers/
SignalR: FruitBankHub, CustomOrderSignalREndpoint, StockSignalREndpointServer, FruitBankDataController this plugin Services/, Areas/Admin/Controllers/, Controllers/
Infra: FruitBankSettings, PluginNopStartup, RouteProvider, ViewLocationExpander, PendingMeasurementCheckoutFilter this plugin Infrastructure/, Filters/

If a type isn't listed: grep ../../Libraries/ first → ../../../Aycode/Source/AyCode.Core/ next → otherwise it's a nopCommerce framework type (Nop.Core, Nop.Services, Nop.Web).