@dodobrands/pos-receipts-plugin-contracts
Публичные контракты для плагинов фискальных касс (Cash Register). Реализуется авторами плагинов фискальных принтеров.
Полная документация: dodopizza.github.io/cashierapp
Основной интерфейс: ICashRegister
export interface ICashRegister {
initialize?: (options: InitializationOptions) => Promise<void>;
getSettings: () => Promise<CashRegisterSettings>;
handleSale: (request: HandleSaleRequest) => Promise<PrintedReceipt>;
// Опциональные
handleRefund?: (request: HandleRefundRequest) => Promise<PrintedRefundReceipt>;
makeXReport?: () => Promise<void>;
makeZReport?: (options: MakeZReportOptions) => Promise<void>;
withdrawCash?: (options: WithdrawCashOptions) => Promise<void>;
depositCash?: (options: DepositCashOptions) => Promise<void>;
printText?: (options: PrintTextOptions) => Promise<void>;
showSettingsWindow?: () => Promise<void>;
}
showSettingsWindow открывает окно настроек плагина. Плагин сам определяет внешний вид окна и способ его открытия. Метод опциональный: если плагин его не реализует, приложение не должно показывать переход к настройкам.
Начните с изучения src/ICashRegister.ts.
Тип Receipt содержит полную информацию о заказе, покупателе, налогах, организации и страно-специфичных данных маркировки (Россия, Беларусь, Узбекистан, Казахстан). У товара может быть опциональное поле Translations (имя поля → код культуры → значение), по которому плагин может напечатать название на нужном языке.
HandleSaleRequest содержит опциональное поле fiscalStage (FiscalStage: FullSettlementWithPayment | Advance | FullSettlementAfterAdvance) — стадия фискализации продажи, берётся из данных GetCheck.
printText печатает нефискальные документы, тип задаётся полем type. Без type (или с type: 'plainText') приходят готовые строки в data — вызывающий код уже сформировал их полностью, плагин печатает как есть. Это существующее поведение: так печатаются банковские слипы, и так же через этот канал передаются произвольные строки. Для type: 'cashOrderInfoReceipt' вместо data приходит объект cashOrder (orderNumber, issuedAt, amount), а шаблон, язык и форматирование определяет сам плагин.
Типы, которые плагин умеет печатать, он обязан перечислить в supportedPrintTextTypes в getSettings() — документ неуказанного типа ему не отправят.
Смежные пакеты
@dodopizza/pos-receipts-ipc-client— готовый IPC-клиент для Electron, использующий эти контракты@dodobrands/pos-plugins-shared-models— общие модели (Business,Country,ILogger)