summaryrefslogtreecommitdiff
path: root/packages/merchant-backoffice-ui/src/paths/instance/orders/create/CreatePage.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/merchant-backoffice-ui/src/paths/instance/orders/create/CreatePage.tsx')
-rw-r--r--packages/merchant-backoffice-ui/src/paths/instance/orders/create/CreatePage.tsx75
1 files changed, 34 insertions, 41 deletions
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/orders/create/CreatePage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/orders/create/CreatePage.tsx
index fca123773..041ec73e7 100644
--- a/packages/merchant-backoffice-ui/src/paths/instance/orders/create/CreatePage.tsx
+++ b/packages/merchant-backoffice-ui/src/paths/instance/orders/create/CreatePage.tsx
@@ -21,8 +21,10 @@
import {
AbsoluteTime,
+ AmountString,
Amounts,
Duration,
+ TalerMerchantApi,
TalerProtocolDuration,
} from "@gnu-taler/taler-util";
import {
@@ -47,16 +49,15 @@ import { InputToggle } from "../../../../components/form/InputToggle.js";
import { InventoryProductForm } from "../../../../components/product/InventoryProductForm.js";
import { NonInventoryProductFrom } from "../../../../components/product/NonInventoryProductForm.js";
import { ProductList } from "../../../../components/product/ProductList.js";
-import { MerchantBackend, WithId } from "../../../../declaration.js";
import { usePreference } from "../../../../hooks/preference.js";
import { rate } from "../../../../utils/amount.js";
import { undefinedIfEmpty } from "../../../../utils/table.js";
interface Props {
- onCreate: (d: MerchantBackend.Orders.PostOrderRequest) => void;
+ onCreate: (d: TalerMerchantApi.PostOrderRequest) => void;
onBack?: () => void;
instanceConfig: InstanceConfig;
- instanceInventory: (MerchantBackend.Products.ProductDetail & WithId)[];
+ instanceInventory: (TalerMerchantApi.ProductDetail & WithId)[];
}
interface InstanceConfig {
use_stefan: boolean;
@@ -92,7 +93,7 @@ function with_defaults(
}
interface ProductAndQuantity {
- product: MerchantBackend.Products.ProductDetail & WithId;
+ product: TalerMerchantApi.ProductDetail & WithId;
quantity: number;
}
export interface ProductMap {
@@ -106,7 +107,7 @@ interface Pricing {
}
interface Shipping {
delivery_date?: Date;
- delivery_location?: MerchantBackend.Location;
+ delivery_location?: TalerMerchantApi.Location;
fullfilment_url?: string;
}
interface Payments {
@@ -120,7 +121,7 @@ interface Payments {
}
interface Entity {
inventoryProducts: ProductMap;
- products: MerchantBackend.Product[];
+ products: TalerMerchantApi.Product[];
pricing: Partial<Pricing>;
payments: Partial<Payments>;
shipping: Partial<Shipping>;
@@ -214,43 +215,36 @@ export function CreatePage({
if (!value.payments) return;
if (!value.shipping) return;
- const request: MerchantBackend.Orders.PostOrderRequest = {
+ const request: TalerMerchantApi.PostOrderRequest = {
order: {
amount: order.pricing.order_price,
summary: order.pricing.summary,
products: productList,
extra: undefinedIfEmpty(value.extra),
- pay_deadline: !value.payments.pay_deadline
- ? i18n.str`required`
- : AbsoluteTime.toProtocolTimestamp(
- AbsoluteTime.addDuration(
- AbsoluteTime.now(),
- value.payments.pay_deadline,
- ),
- ), // : undefined,
- wire_transfer_deadline: value.payments.wire_transfer_deadline
- ? AbsoluteTime.toProtocolTimestamp(
- AbsoluteTime.addDuration(
- AbsoluteTime.now(),
- value.payments.wire_transfer_deadline,
- ),
- )
- : undefined,
- refund_deadline: value.payments.refund_deadline
- ? AbsoluteTime.toProtocolTimestamp(
- AbsoluteTime.addDuration(
- AbsoluteTime.now(),
- value.payments.refund_deadline,
- ),
- )
- : undefined,
+ pay_deadline: AbsoluteTime.toProtocolTimestamp(
+ AbsoluteTime.addDuration(
+ AbsoluteTime.now(),
+ value.payments.pay_deadline!,
+ ),
+ ),
+ wire_transfer_deadline: AbsoluteTime.toProtocolTimestamp(
+ AbsoluteTime.addDuration(
+ AbsoluteTime.now(),
+ value.payments.wire_transfer_deadline!,
+ ),
+ ),
+ refund_deadline: AbsoluteTime.toProtocolTimestamp(
+ AbsoluteTime.addDuration(
+ AbsoluteTime.now(),
+ value.payments.refund_deadline!,
+ ),
+ ),
auto_refund: value.payments.auto_refund_deadline
? Duration.toTalerProtocolDuration(
value.payments.auto_refund_deadline,
)
: undefined,
- max_fee: value.payments.max_fee as string,
-
+ max_fee: value.payments.max_fee as AmountString,
delivery_date: value.shipping.delivery_date
? { t_s: value.shipping.delivery_date.getTime() / 1000 }
: undefined,
@@ -269,7 +263,7 @@ export function CreatePage({
};
const addProductToTheInventoryList = (
- product: MerchantBackend.Products.ProductDetail & WithId,
+ product: TalerMerchantApi.ProductDetail & WithId,
quantity: number,
) => {
valueHandler((v) => {
@@ -287,7 +281,7 @@ export function CreatePage({
});
};
- const addNewProduct = async (product: MerchantBackend.Product) => {
+ const addNewProduct = async (product: TalerMerchantApi.Product) => {
return valueHandler((v) => {
const products = v.products ? [...v.products, product] : [];
return { ...v, products };
@@ -303,7 +297,7 @@ export function CreatePage({
};
const [editingProduct, setEditingProduct] = useState<
- MerchantBackend.Product | undefined
+ TalerMerchantApi.Product | undefined
>(undefined);
const totalPriceInventory = inventoryList.reduce((prev, cur) => {
@@ -314,7 +308,7 @@ export function CreatePage({
const totalPriceProducts = productList.reduce((prev, cur) => {
if (!cur.price) return zero;
const p = Amounts.parseOrThrow(cur.price);
- return Amounts.add(prev, Amounts.mult(p, cur.quantity).amount).amount;
+ return Amounts.add(prev, Amounts.mult(p, cur.quantity ?? 0).amount).amount;
}, zero);
const hasProducts = inventoryList.length > 0 || productList.length > 0;
@@ -343,9 +337,9 @@ export function CreatePage({
totalPrice.amount,
);
- const minAgeByProducts = allProducts.reduce(
+ const minAgeByProducts = inventoryList.reduce(
(cur, prev) =>
- !prev.minimum_age || cur > prev.minimum_age ? cur : prev.minimum_age,
+ !prev.product.minimum_age || cur > prev.product.minimum_age ? cur : prev.product.minimum_age,
0,
);
@@ -766,7 +760,7 @@ export function CreatePage({
);
}
-function asProduct(p: ProductAndQuantity): MerchantBackend.Product {
+function asProduct(p: ProductAndQuantity): TalerMerchantApi.Product {
return {
product_id: p.product.id,
image: p.product.image,
@@ -775,7 +769,6 @@ function asProduct(p: ProductAndQuantity): MerchantBackend.Product {
quantity: p.quantity,
description: p.product.description,
taxes: p.product.taxes,
- minimum_age: p.product.minimum_age,
};
}