Print another receipt use PrePrintReceiptCopyTrigger
Song Nghia - Technical Consultant
import * as Triggers from "PosApi/Extend/Triggers/PrintingTriggers"; import { ClientEntities, ProxyEntities } from "PosApi/Entities"; import { PrinterPrintRequest, PrinterPrintResponse } from "PosApi/Consume/Peripherals"; import { ObjectExtensions } from "PosApi/TypeExtensions"; import { GetHardwareProfileClientRequest, GetHardwareProfileClientResponse } from "PosApi/Consume/Device"; import { GetReceiptsClientRequest, GetReceiptsClientResponse } from "PosApi/Consume/SalesOrders"; export default class PrePrintReceiptCopyTrigger extends Triggers.PrePrintReceiptCopyTrigger { public execute(options: Triggers.IPrePrintReceiptCopyTriggerOptions): Promise> { this.context.logger.logVerbose("Executing PreProductSaleTrigger with options " + JSON.stringify(options) + " at " + new Date().getTime() + "."); if (ObjectExtensions.isNullOrUndefined(options)) { // This will never happen, but is included to demonstrate how to return a rejected promise when validation fails. //ABC let error: ClientEntities.ExtensionError = new ClientEntities.ExtensionError("The options provided to the PostSuspendTransactionTrigger were invalid."); return Promise.reject(error); } else { return this.context.runtime.executeAsync(new GetHardwareProfileClientRequest()) .then((response: ClientEntities.ICancelableDataResult ) : Promise > => { let hardwareProfile: ProxyEntities.HardwareProfile = response.data.result; // Gets the receipts. let salesOrderId: string = options.salesOrder.Id; let receiptRetrievalCriteria: ProxyEntities.ReceiptRetrievalCriteria = { IsCopy: false, IsRemoteTransaction: false, IsPreview: false, QueryBySalesId: true, ReceiptTypeValue: ProxyEntities.ReceiptType.CustomReceipt6, HardwareProfileId: hardwareProfile.ProfileId }; let getReceiptsClientRequest: GetReceiptsClientRequest = new GetReceiptsClientRequest(salesOrderId, receiptRetrievalCriteria); return this.context.runtime.executeAsync(getReceiptsClientRequest); }) .then((response: ClientEntities.ICancelableDataResult ) : Promise > => { let receipts: ProxyEntities.Receipt[] = response.data.result; // Prints the receipts. let printerPrintRequest: PrinterPrintRequest = new PrinterPrintRequest(receipts); return this.context.runtime.executeAsync(printerPrintRequest); }) } } }