use checkout payment method for shipping invoices
Load btc details on admin order queries and issue shipping invoices in the same crypto the customer used at checkout. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -222,7 +222,7 @@ describe('OrderService', () => {
|
||||
({
|
||||
id: 'order-1',
|
||||
lines: [{ deliveryMode: DeliveryMode.Manual }],
|
||||
checkoutInvoice: { id: 'checkout-invoice-1', fiatCurrency: 'USD' }
|
||||
checkoutInvoice: { id: 'checkout-invoice-1', fiatCurrency: 'USD', paymentMethod: PaymentMethod.Xmr }
|
||||
}) as Order;
|
||||
|
||||
it('throws when the order cannot be quoted', async () => {
|
||||
@@ -300,6 +300,26 @@ describe('OrderService', () => {
|
||||
});
|
||||
expect(result).toBe(orderExtended);
|
||||
});
|
||||
|
||||
it('uses the checkout invoice payment method for shipping invoices', async () => {
|
||||
orderRepo.findOne.mockResolvedValue({
|
||||
...buildQuotableOrder(),
|
||||
checkoutInvoice: {
|
||||
id: 'checkout-invoice-1',
|
||||
fiatCurrency: 'USD',
|
||||
paymentMethod: PaymentMethod.Btc
|
||||
}
|
||||
});
|
||||
|
||||
await service.setDeliveryCost('order-1', { deliveryCost: 12.5 });
|
||||
|
||||
expect(invoiceService.issueInvoice).toHaveBeenCalledWith({
|
||||
paymentMethod: PaymentMethod.Btc,
|
||||
reason: InvoiceReason.Shipping,
|
||||
contextId: 'order-1',
|
||||
amountFiat: 12.5
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('fulfillManualLine', () => {
|
||||
|
||||
@@ -15,7 +15,6 @@ import type { InvoiceExtended } from '../../payment/types/InvoiceExtended';
|
||||
import type { InvoicePaymentExtended } from '../../payment/types/InvoicePaymentExtended';
|
||||
import { InvoiceReason } from '../../payment/types/InvoiceReason';
|
||||
import { InvoiceService } from '../../payment/services/InvoiceService';
|
||||
import { PaymentMethod } from '../../payment/types/PaymentMethod';
|
||||
import { DeliveryMode } from '../../product/types/DeliveryMode';
|
||||
import { SetDeliveryCostDto } from '../dto/SetDeliveryCostDto';
|
||||
import type { ListOrdersQueryDto } from '../dto/ListOrdersQueryDto';
|
||||
@@ -99,9 +98,11 @@ export class OrderService {
|
||||
'checkoutInvoice',
|
||||
'checkoutInvoice.payments',
|
||||
'checkoutInvoice.moneroDetails',
|
||||
'checkoutInvoice.btcDetails',
|
||||
'shippingInvoice',
|
||||
'shippingInvoice.payments',
|
||||
'shippingInvoice.moneroDetails',
|
||||
'shippingInvoice.btcDetails',
|
||||
'lines',
|
||||
'lines.manualFulfillment',
|
||||
'discounts',
|
||||
@@ -244,7 +245,7 @@ export class OrderService {
|
||||
}
|
||||
|
||||
const shippingInvoice = await this.invoiceService.issueInvoice({
|
||||
paymentMethod: PaymentMethod.Xmr,
|
||||
paymentMethod: order.checkoutInvoice.paymentMethod,
|
||||
reason: InvoiceReason.Shipping,
|
||||
contextId: orderId,
|
||||
amountFiat: deliveryCost
|
||||
|
||||
Reference in New Issue
Block a user