// Implementation of collect data method. Executes after plug-in payment item is added to the order on payment page or on preliminary payments page. // To do operations with order that is currently edited by operator, we need special operationService. Do NOT use it after method returns. public void OnPaymentAdded(IOrder order, IPaymentItem paymentItem, [NotNull] IUser cashier, [NotNull] IOperationService operations, IReceiptPrinter printer, IViewManager viewManager, IPaymentDataContext context) { switch (order.Status) { case OrderStatus.New: // let's add a gift product to the first guest var credentials = operations.GetCredentials(); var guest = order.Guests.First(); // lucky guest var product = operations.GetActiveProducts().Last(); // gift product operations.AddOrderProductItem(3m, product, order, guest, null, credentials); var orderWithGift = operations.GetOrderById(order.Id); //we assume our gift product is payed by our payment, so automatically add its price to payment sum. var giftSum = orderWithGift.ResultSum - order.ResultSum; paymentItem = orderWithGift.Payments.Single(p => p.Id == paymentItem.Id); operations.ChangePaymentItemSum(paymentItem.Sum + giftSum, giftSum, null, paymentItem, orderWithGift, credentials); return; case OrderStatus.Bill: // we cannot edit order widely after bill, but at least we can set possible sum range and provide initial sum value operations.ChangePaymentItemSum(42m, 0m, 100500m, paymentItem, order, operations.GetCredentials()); return; default: // we don't expect payment item to be added in statuses other than new and bill throw new ArgumentOutOfRangeException(); } }
public PaymentItem(IPaymentItem item) { PaymentDescription = item.PaymentDescription; IsAttorneyFee = item.IsAttorneyFee; PaymentFor = item.PaymentFor; Amount = item.Amount; PaymentDueDate = item.PaymentDueDate; }
public IAuthorizablePaymentProcessor GetAuthorizableProcessor(IPaymentItem paymentItem) { var paymentProcessor = default(IAuthorizablePaymentProcessor); if (paymentItem.PaymentType == PaymentType.CreditCard) { paymentProcessor = new CreditCardPaymentProcessor(); } paymentProcessor?.Initialize(paymentItem); return(paymentProcessor); }
public ICapturablePaymentProcessor GetCapturablePaymentProcessor(IPaymentItem paymentItem) { ICapturablePaymentProcessor paymentProcessor; switch (paymentItem.PaymentType) { case PaymentType.Cash: paymentProcessor = new CashPaymentProcessor(); break; case PaymentType.CreditCard: paymentProcessor = new CreditCardPaymentProcessor(); break; default: throw new ArgumentOutOfRangeException(nameof(paymentItem.PaymentType), "Invalid payment type"); } paymentProcessor.Initialize(paymentItem); return(paymentProcessor); }
public void Initialize(IPaymentItem payment) { Payment = payment; }
// Implementation of preliminary payment editing method. Executes when plug-in preliminary payment item is going to be edited on preliminary payments page, // immediately after user presses the edit button. public bool OnPreliminaryPaymentEditing(IOrder order, IPaymentItem paymentItem, IUser cashier, IOperationService operationService, IReceiptPrinter printer, IViewManager viewManager, IPaymentDataContext context) { //enabled standard numpad editing. return(true); }
public bool OnPreliminaryPaymentEditing(IOrder order, IPaymentItem paymentItem, IUser cashier, IOperationService operationService, IReceiptPrinter printer, IViewManager viewManager, IPaymentDataContext context, IProgressBar progressBar) { PluginContext.Log.Info($"=== OnPreliminaryPaymentEditing"); return(true); }
public void OnPaymentAdded(IOrder order, IPaymentItem paymentItem, IUser cashier, IOperationService operations, IReceiptPrinter printer, IViewManager viewManager, IPaymentDataContext context, IProgressBar progressBar) { PluginContext.Log.Info($"=== OnPaymentAdded"); }