Mango.Nop.Plugins/Nop.Plugin.Misc.AIPlugin
Loretta 1468aa651c Rename Preorder domain to PreOrder across codebase
Comprehensively renamed all "Preorder" domain types, services, controllers, models, enums, database contexts, routes, views, JS, localization resources, and documentation to "PreOrder" (PascalCase, capital "O"). Updated all references in backend, frontend, localization, and schema docs for consistency. No business logic changes; this is a naming and normalization refactor.
2026-05-30 16:26:51 +02:00
..
.github [LOADED_DOCS: 2 files, no new loads] 2026-05-05 15:06:06 +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 Rename Preorder domain to PreOrder across codebase 2026-05-30 16:26:51 +02:00
Domains Rename Preorder domain to PreOrder across codebase 2026-05-30 16:26:51 +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 Rename Preorder domain to PreOrder across codebase 2026-05-30 16:26:51 +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 [LOADED_DOCS: 3 files, no new loads] 2026-04-28 06:51:57 +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, 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

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).