@dropins/storefront-purchase-order 1.1.1 → 1.2.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/api.js +784 -6
  3. package/api.js.map +1 -1
  4. package/chunks/components.js +4 -0
  5. package/chunks/components.js.map +1 -0
  6. package/containers/ApprovalRuleDetails.js +1 -1
  7. package/containers/ApprovalRuleDetails.js.map +1 -1
  8. package/containers/ApprovalRuleForm.js +1 -1
  9. package/containers/ApprovalRuleForm.js.map +1 -1
  10. package/containers/ApprovalRulesList.js +1 -1
  11. package/containers/ApprovalRulesList.js.map +1 -1
  12. package/containers/CompanyPurchaseOrders.js +1 -1
  13. package/containers/CompanyPurchaseOrders.js.map +1 -1
  14. package/containers/CustomerPurchaseOrders.js +1 -1
  15. package/containers/CustomerPurchaseOrders.js.map +1 -1
  16. package/containers/PurchaseOrderApprovalFlow.js +1 -1
  17. package/containers/PurchaseOrderApprovalFlow.js.map +1 -1
  18. package/containers/PurchaseOrderCommentForm.js +1 -1
  19. package/containers/PurchaseOrderCommentForm.js.map +1 -1
  20. package/containers/PurchaseOrderCommentsList.js +1 -1
  21. package/containers/PurchaseOrderCommentsList.js.map +1 -1
  22. package/containers/PurchaseOrderConfirmation.js +1 -1
  23. package/containers/PurchaseOrderConfirmation.js.map +1 -1
  24. package/containers/PurchaseOrderHistoryLog.js +1 -1
  25. package/containers/PurchaseOrderHistoryLog.js.map +1 -1
  26. package/containers/PurchaseOrderStatus.js +1 -1
  27. package/containers/PurchaseOrderStatus.js.map +1 -1
  28. package/containers/RequireApprovalPurchaseOrders.js +1 -1
  29. package/containers/RequireApprovalPurchaseOrders.js.map +1 -1
  30. package/package.json +1 -1
  31. package/render.js +2 -3
  32. package/render.js.map +1 -1
  33. package/chunks/FormLoader.js +0 -4
  34. package/chunks/FormLoader.js.map +0 -1
  35. package/chunks/PurchaseOrderHistoryLogContent.js +0 -4
  36. package/chunks/PurchaseOrderHistoryLogContent.js.map +0 -1
  37. package/chunks/PurchaseOrdersHeader.js +0 -4
  38. package/chunks/PurchaseOrdersHeader.js.map +0 -1
  39. package/chunks/PurchaseOrdersTableActions.js +0 -4
  40. package/chunks/PurchaseOrdersTableActions.js.map +0 -1
  41. package/chunks/addPurchaseOrderComment.js +0 -36
  42. package/chunks/addPurchaseOrderComment.js.map +0 -1
  43. package/chunks/case-converter.js +0 -4
  44. package/chunks/case-converter.js.map +0 -1
  45. package/chunks/currencyInfo.js +0 -124
  46. package/chunks/currencyInfo.js.map +0 -1
  47. package/chunks/fetch-error.js +0 -4
  48. package/chunks/fetch-error.js.map +0 -1
  49. package/chunks/formatDate.js +0 -4
  50. package/chunks/formatDate.js.map +0 -1
  51. package/chunks/getPurchaseOrderApprovalRule.js +0 -45
  52. package/chunks/getPurchaseOrderApprovalRule.js.map +0 -1
  53. package/chunks/getPurchaseOrderApprovalRules.js +0 -75
  54. package/chunks/getPurchaseOrderApprovalRules.js.map +0 -1
  55. package/chunks/getPurchaseOrders.js +0 -29
  56. package/chunks/getPurchaseOrders.js.map +0 -1
  57. package/chunks/initialize.js +0 -13
  58. package/chunks/initialize.js.map +0 -1
  59. package/chunks/pageSize.config.js +0 -4
  60. package/chunks/pageSize.config.js.map +0 -1
  61. package/chunks/permissions.js +0 -4
  62. package/chunks/permissions.js.map +0 -1
  63. package/chunks/placeOrderForPurchaseOrder.js +0 -39
  64. package/chunks/placeOrderForPurchaseOrder.js.map +0 -1
  65. package/chunks/rejectPurchaseOrders.js +0 -30
  66. package/chunks/rejectPurchaseOrders.js.map +0 -1
  67. package/chunks/transform-purchase-order-approval-rule.js +0 -4
  68. package/chunks/transform-purchase-order-approval-rule.js.map +0 -1
  69. package/chunks/transform-purchase-order.js +0 -423
  70. package/chunks/transform-purchase-order.js.map +0 -1
  71. package/chunks/useCustomerRolePermissions.js +0 -4
  72. package/chunks/useCustomerRolePermissions.js.map +0 -1
  73. package/chunks/usePurchaseOrderData.js +0 -4
  74. package/chunks/usePurchaseOrderData.js.map +0 -1
  75. package/chunks/usePurchaseOrders.js +0 -4
  76. package/chunks/usePurchaseOrders.js.map +0 -1
package/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sources":["/@dropins/storefront-purchase-order/src/api/validatePurchaseOrders/graphql/validatePurchaseOrders.graphql.ts","/@dropins/storefront-purchase-order/src/api/validatePurchaseOrders/validatePurchaseOrders.ts","/@dropins/storefront-purchase-order/src/data/transforms/transform-cart.ts","/@dropins/storefront-purchase-order/src/api/addPurchaseOrderItemsToCart/graphql/addPurchaseOrderItemsToCart.graphql.ts","/@dropins/storefront-purchase-order/src/api/addPurchaseOrderItemsToCart/addPurchaseOrderItemsToCart.ts","/@dropins/storefront-purchase-order/src/api/placePurchaseOrder/graphql/placePurchaseOrder.graphql.ts","/@dropins/storefront-purchase-order/src/api/placePurchaseOrder/placePurchaseOrder.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { PURCHASE_ORDERS_FRAGMENT } from '@/b2b-purchase-order/api/graphql/PurchaseOrdersFragment.graphql';\n\nexport const VALIDATE_PURCHASE_ORDERS = /* GraphQL */ `\n mutation VALIDATE_PURCHASE_ORDERS($input: ValidatePurchaseOrdersInput!) {\n validatePurchaseOrders(input: $input) {\n errors {\n message\n type\n }\n purchase_orders {\n ...PURCHASE_ORDERS_FRAGMENT\n }\n }\n }\n ${PURCHASE_ORDERS_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { fetchGraphQl } from '@/b2b-purchase-order/api/fetch-graphql';\nimport { handleNetworkError } from '@/b2b-purchase-order/lib/network-error';\nimport { handleFetchError } from '@/b2b-purchase-order/lib/fetch-error';\nimport { VALIDATE_PURCHASE_ORDERS } from '@/b2b-purchase-order/api/validatePurchaseOrders/graphql/validatePurchaseOrders.graphql';\nimport { PurchaseOrderModel } from '@/b2b-purchase-order/data/models';\nimport { transformPurchaseOrder } from '@/b2b-purchase-order/data/transforms/transform-purchase-order';\n\nexport const validatePurchaseOrders = async (\n uids: string | string[]\n): Promise<{\n errors: { message: string; type: string }[];\n purchaseOrders: PurchaseOrderModel[];\n}> => {\n const uidArray = Array.isArray(uids) ? uids : [uids];\n\n if (!uidArray || uidArray.length === 0) {\n throw new Error('Purchase Order UID(s) are required');\n }\n\n if (uidArray.some((uid) => !uid || uid.trim() === '')) {\n throw new Error('All Purchase Order UIDs must be valid');\n }\n\n const input = {\n purchase_order_uids: uidArray,\n };\n\n return fetchGraphQl(VALIDATE_PURCHASE_ORDERS, {\n variables: { input },\n })\n .then((response: any) => {\n if (response.errors?.length) {\n handleFetchError(response.errors);\n }\n\n const data = response.data?.validatePurchaseOrders;\n\n return {\n errors: (data?.errors ?? []).map((error: any) => ({\n message: error?.message ?? '',\n type: error?.type ?? '',\n })),\n purchaseOrders: (data?.purchase_orders || []).map(\n transformPurchaseOrder\n ),\n };\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CartModel } from '@/b2b-purchase-order/data/models';\n\nexport const transformCart = (data: any): CartModel => {\n const cartItems = data?.cart?.itemsV2?.items ?? [];\n\n return {\n cart: {\n id: data?.cart?.id ?? '',\n items: cartItems.map((item: any) => ({\n uid: item?.uid ?? '',\n quantity: item?.quantity ?? 0,\n product: {\n uid: item?.product?.uid ?? '',\n name: item?.product?.name ?? '',\n sku: item?.product?.sku ?? '',\n },\n })),\n pagination: {\n currentPage: data?.cart?.itemsV2?.page_info?.current_page ?? 1,\n pageSize: data?.cart?.itemsV2?.page_info?.page_size ?? 20,\n totalPages: data?.cart?.itemsV2?.page_info?.total_pages ?? 0,\n totalCount: data?.cart?.itemsV2?.total_count ?? 0,\n },\n },\n userErrors:\n data?.user_errors?.map((error: any) => ({\n message: error?.message ?? '',\n })) ?? [],\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const ADD_PURCHASE_ORDER_ITEMS_TO_CART = /* GraphQL */ `\n mutation ADD_PURCHASE_ORDER_ITEMS_TO_CART(\n $purchaseOrderUid: ID!\n $cartId: String!\n $replaceExistingCartItems: Boolean!\n ) {\n addPurchaseOrderItemsToCart(\n input: {\n purchase_order_uid: $purchaseOrderUid\n cart_id: $cartId\n replace_existing_cart_items: $replaceExistingCartItems\n }\n ) {\n cart {\n id\n itemsV2 {\n items {\n uid\n quantity\n product {\n uid\n name\n sku\n }\n }\n page_info {\n current_page\n page_size\n total_pages\n }\n total_count\n }\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '@/b2b-purchase-order/api/fetch-graphql';\nimport { handleNetworkError } from '@/b2b-purchase-order/lib/network-error';\nimport { handleFetchError } from '@/b2b-purchase-order/lib/fetch-error';\nimport { transformCart } from '@/b2b-purchase-order/data/transforms';\nimport { ADD_PURCHASE_ORDER_ITEMS_TO_CART } from '@/b2b-purchase-order/api/addPurchaseOrderItemsToCart/graphql/addPurchaseOrderItemsToCart.graphql';\nimport { CartModel } from '@/b2b-purchase-order/data/models';\n\nexport const addPurchaseOrderItemsToCart = async (\n purchaseOrderUid: string,\n cartId: string,\n replaceExistingCartItems: boolean = false\n): Promise<CartModel> => {\n if (!purchaseOrderUid) {\n throw new Error('Purchase Order UID is required');\n }\n\n if (!cartId) {\n throw new Error('Cart ID is required');\n }\n\n const variables = {\n purchaseOrderUid,\n cartId,\n replaceExistingCartItems,\n };\n\n return fetchGraphQl(ADD_PURCHASE_ORDER_ITEMS_TO_CART, {\n variables,\n })\n .then((response: any) => {\n if (response.errors?.length) {\n handleFetchError(response.errors);\n }\n\n const cartData = response.data?.addPurchaseOrderItemsToCart;\n if (!cartData?.cart) {\n throw new Error('Failed to add purchase order items to cart');\n }\n\n return transformCart(cartData);\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { PURCHASE_ORDERS_FRAGMENT } from '@/b2b-purchase-order/api/graphql/PurchaseOrdersFragment.graphql';\n\nexport const PLACE_PURCHASE_ORDER = /* GraphQL */ `\n mutation PLACE_PURCHASE_ORDER($input: PlacePurchaseOrderInput!) {\n placePurchaseOrder(input: $input) {\n purchase_order {\n ...PURCHASE_ORDERS_FRAGMENT\n }\n }\n }\n ${PURCHASE_ORDERS_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '@/b2b-purchase-order/api/fetch-graphql';\nimport { handleNetworkError } from '@/b2b-purchase-order/lib/network-error';\nimport { handleFetchError } from '@/b2b-purchase-order/lib/fetch-error';\nimport { PLACE_PURCHASE_ORDER } from '@/b2b-purchase-order/api/placePurchaseOrder/graphql/placePurchaseOrder.graphql';\nimport { transformPurchaseOrder } from '@/b2b-purchase-order/data/transforms/transform-purchase-order';\nimport { PurchaseOrderModel } from '@/b2b-purchase-order/data/models';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport const placePurchaseOrder = async (\n cartId: string\n): Promise<{ purchaseOrder: PurchaseOrderModel }> => {\n if (!cartId || cartId.trim() === '') {\n throw new Error('Cart ID is required');\n }\n\n const input = {\n cart_id: cartId,\n };\n\n return fetchGraphQl(PLACE_PURCHASE_ORDER, {\n variables: { input },\n })\n .then((response: any) => {\n if (response.errors?.length) {\n handleFetchError(response.errors);\n }\n\n const rawPurchaseOrder =\n response.data?.placePurchaseOrder?.purchase_order;\n\n const purchaseOrder = transformPurchaseOrder(rawPurchaseOrder);\n\n events.emit('purchase-order/placed', purchaseOrder);\n\n return {\n purchaseOrder,\n };\n })\n .catch(handleNetworkError);\n};\n"],"names":["VALIDATE_PURCHASE_ORDERS","PURCHASE_ORDERS_FRAGMENT","validatePurchaseOrders","uids","uidArray","uid","fetchGraphQl","response","_a","handleFetchError","data","_b","error","transformPurchaseOrder","handleNetworkError","transformCart","cartItems","_c","item","_f","_e","_d","_i","_h","_g","_l","_k","_j","_n","_m","_o","ADD_PURCHASE_ORDER_ITEMS_TO_CART","addPurchaseOrderItemsToCart","purchaseOrderUid","cartId","replaceExistingCartItems","cartData","PLACE_PURCHASE_ORDER","placePurchaseOrder","rawPurchaseOrder","purchaseOrder","events"],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sources":["/@dropins/storefront-purchase-order/src/api/fetch-graphql/fetch-graphql.ts","/@dropins/storefront-purchase-order/src/lib/network-error.ts","/@dropins/storefront-purchase-order/src/lib/fetch-error.ts","/@dropins/storefront-purchase-order/src/api/graphql/PurchaseOrderQuoteFragment.ts","/@dropins/storefront-purchase-order/src/api/graphql/PurchaseOrdersFragment.graphql.ts","/@dropins/storefront-purchase-order/src/api/getPurchaseOrder/graphql/getPurchaseOrder.graphql.ts","/@dropins/storefront-purchase-order/src/data/transforms/transform-purchase-order.ts","/@dropins/storefront-purchase-order/src/api/getPurchaseOrder/getPurchaseOrder.ts","/@dropins/storefront-purchase-order/src/api/initialize/initialize.ts","/@dropins/storefront-purchase-order/src/api/approvePurchaseOrders/graphql/approvePurchaseOrders.graphql.ts","/@dropins/storefront-purchase-order/src/api/approvePurchaseOrders/approvePurchaseOrders.ts","/@dropins/storefront-purchase-order/src/api/cancelPurchaseOrders/graphql/cancelPurchaseOrders.graphql.ts","/@dropins/storefront-purchase-order/src/api/cancelPurchaseOrders/cancelPurchaseOrders.ts","/@dropins/storefront-purchase-order/src/api/rejectPurchaseOrders/graphql/rejectPurchaseOrders.graphql.ts","/@dropins/storefront-purchase-order/src/api/rejectPurchaseOrders/rejectPurchaseOrders.ts","/@dropins/storefront-purchase-order/src/api/validatePurchaseOrders/graphql/validatePurchaseOrders.graphql.ts","/@dropins/storefront-purchase-order/src/api/validatePurchaseOrders/validatePurchaseOrders.ts","/@dropins/storefront-purchase-order/src/api/addPurchaseOrderComment/graphql/addPurchaseOrderComment.graphql.ts","/@dropins/storefront-purchase-order/src/data/transforms/transform-cart.ts","/@dropins/storefront-purchase-order/src/data/transforms/transform-customer-order.ts","/@dropins/storefront-purchase-order/src/data/transforms/transform-purchase-order-approval-rule-metadata.ts","/@dropins/storefront-purchase-order/src/data/transforms/transform-purchase-order-approval-rule.ts","/@dropins/storefront-purchase-order/src/data/transforms/transform-purchase-order-comment.ts","/@dropins/storefront-purchase-order/src/api/addPurchaseOrderComment/addPurchaseOrderComment.ts","/@dropins/storefront-purchase-order/src/api/addPurchaseOrderItemsToCart/graphql/addPurchaseOrderItemsToCart.graphql.ts","/@dropins/storefront-purchase-order/src/api/addPurchaseOrderItemsToCart/addPurchaseOrderItemsToCart.ts","/@dropins/storefront-purchase-order/src/api/createPurchaseOrderApprovalRule/graphql/createPurchaseOrderApprovalRule.graphql.ts","/@dropins/storefront-purchase-order/src/api/createPurchaseOrderApprovalRule/createPurchaseOrderApprovalRule.ts","/@dropins/storefront-purchase-order/src/api/deletePurchaseOrderApprovalRule/graphql/deletePurchaseOrderApprovalRule.graphql.ts","/@dropins/storefront-purchase-order/src/api/deletePurchaseOrderApprovalRule/deletePurchaseOrderApprovalRule.ts","/@dropins/storefront-purchase-order/src/api/updatePurchaseOrderApprovalRule/graphql/updatePurchaseOrderApprovalRule.graphql.ts","/@dropins/storefront-purchase-order/src/api/updatePurchaseOrderApprovalRule/updatePurchaseOrderApprovalRule.ts","/@dropins/storefront-purchase-order/src/api/getPurchaseOrders/graphql/getPurchaseOrders.graphql.ts","/@dropins/storefront-purchase-order/src/lib/isValidUrl.ts","/@dropins/storefront-purchase-order/src/lib/formatDate.ts","/@dropins/storefront-purchase-order/src/lib/case-converter.ts","/@dropins/storefront-purchase-order/src/lib/getRange.ts","/@dropins/storefront-purchase-order/src/lib/updateFormFieldValue.ts","/@dropins/storefront-purchase-order/src/lib/formValidation.ts","/@dropins/storefront-purchase-order/src/configs/approvalRuleForm.config.ts","/@dropins/storefront-purchase-order/src/lib/transformToFormValues.ts","/@dropins/storefront-purchase-order/src/lib/cleanAndDeep.ts","/@dropins/storefront-purchase-order/src/lib/getStatusVariant.ts","/@dropins/storefront-purchase-order/src/api/getPurchaseOrders/getPurchaseOrders.ts","/@dropins/storefront-purchase-order/src/api/placeOrderForPurchaseOrder/graphql/placeOrderForPurchaseOrder.graphql.ts","/@dropins/storefront-purchase-order/src/api/placeOrderForPurchaseOrder/placeOrderForPurchaseOrder.ts","/@dropins/storefront-purchase-order/src/api/placePurchaseOrder/graphql/placePurchaseOrder.graphql.ts","/@dropins/storefront-purchase-order/src/api/placePurchaseOrder/placePurchaseOrder.ts","/@dropins/storefront-purchase-order/src/api/getPurchaseOrderApprovalRuleMetadata/graphql/getPurchaseOrderApprovalRuleMetadata.graphql.ts","/@dropins/storefront-purchase-order/src/api/getPurchaseOrderApprovalRuleMetadata/getPurchaseOrderApprovalRuleMetadata.ts","/@dropins/storefront-purchase-order/src/api/currencyInfo/graphql/currencyInfo.graphql.ts","/@dropins/storefront-purchase-order/src/api/currencyInfo/currencyInfo.ts","/@dropins/storefront-purchase-order/src/api/getPurchaseOrderApprovalRule/graphql/getPurchaseOrderApprovalRule.graphql.ts","/@dropins/storefront-purchase-order/src/api/getPurchaseOrderApprovalRule/getPurchaseOrderApprovalRule.ts","/@dropins/storefront-purchase-order/src/api/getPurchaseOrderApprovalRules/graphql/getPurchaseOrderApprovalRules.graphql.ts","/@dropins/storefront-purchase-order/src/api/getPurchaseOrderApprovalRules/getPurchaseOrderApprovalRules.ts","/@dropins/storefront-purchase-order/src/api/permissions.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FetchGraphQL } from '@adobe-commerce/fetch-graphql';\n\nexport const {\n setEndpoint,\n setFetchGraphQlHeader,\n removeFetchGraphQlHeader,\n setFetchGraphQlHeaders,\n fetchGraphQl,\n getConfig,\n} = new FetchGraphQL().getMethods();\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { events } from '@adobe-commerce/event-bus';\n\n/**\n * A function which can be attached to fetchGraphQL to handle thrown errors in\n * a generic way.\n */\nexport const handleNetworkError = (error: Error) => {\n const isAbortError =\n error instanceof DOMException && error?.name === 'AbortError';\n\n const isPlaceOrderError = error?.name === 'PlaceOrderError';\n\n if (!isAbortError && !isPlaceOrderError) {\n events.emit('purchase-order/error', {\n source: 'purchase-order',\n type: 'network',\n error: error.message,\n });\n }\n throw error;\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\n/** Actions */\nexport const handleFetchError = (\n errors: Array<{ message: string; path: string[] }>\n) => {\n // We only allow silently skipping the error if it's a SINGLE error.\n const isSingleError = errors.length === 1;\n\n /**\n * TODO: Temporary workaround to avoid UX regressions.\n * Data is still valid even when these specific errors occur.\n * Remove this logic once the following issues are resolved:\n * - https://jira.corp.adobe.com/browse/LYNX-986\n * - https://jira.corp.adobe.com/browse/LYNX-989\n */\n if (isSingleError && errors[0]?.path?.length > 0) {\n const lastStep = errors[0].path[errors[0].path.length - 1];\n\n const allowedErrorPaths = [\n 'applied_coupons',\n 'applied_gift_cards',\n 'available_payment_methods',\n ];\n\n // If the single error's path ends with an allowed step - skip throwing\n if (allowedErrorPaths.includes(lastStep)) {\n return;\n }\n }\n\n const errorMessage = errors.map((e: any) => e.message).join(' ');\n\n throw Error(errorMessage);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\n/**\n * Limited Quote fragment for Purchase Order context\n * Some fields from full Cart type may not be available in purchase_order.quote\n */\nexport const PURCHASE_ORDER_QUOTE_FRAGMENT = /* GraphQL */ `\n fragment PURCHASE_ORDER_QUOTE_FRAGMENT on Cart {\n __typename\n id\n email\n is_virtual\n total_quantity\n applied_coupons {\n code\n }\n applied_gift_cards {\n code\n applied_balance {\n value\n currency\n }\n current_balance {\n value\n currency\n }\n expiration_date\n }\n applied_reward_points {\n money {\n value\n currency\n }\n points\n }\n applied_store_credit {\n applied_balance {\n value\n currency\n }\n current_balance {\n value\n currency\n }\n }\n available_gift_wrappings {\n uid\n design\n price {\n value\n currency\n }\n image {\n url\n label\n }\n }\n gift_message {\n from\n to\n message\n }\n gift_receipt_included\n gift_wrapping {\n uid\n design\n price {\n value\n currency\n }\n image {\n url\n label\n }\n }\n printed_card_included\n available_payment_methods {\n code\n title\n is_deferred\n }\n selected_payment_method {\n code\n title\n }\n billing_address {\n city\n company\n country {\n code\n label\n }\n firstname\n lastname\n postcode\n region {\n code\n label\n }\n street\n telephone\n custom_attributes {\n code\n }\n fax\n id\n middlename\n prefix\n suffix\n uid\n vat_id\n }\n shipping_addresses {\n city\n company\n country {\n code\n label\n }\n firstname\n lastname\n postcode\n region {\n code\n label\n }\n street\n telephone\n custom_attributes {\n code\n }\n fax\n id\n middlename\n prefix\n suffix\n uid\n vat_id\n available_shipping_methods {\n amount {\n value\n currency\n }\n carrier_code\n carrier_title\n method_code\n method_title\n }\n selected_shipping_method {\n amount {\n value\n currency\n }\n carrier_code\n carrier_title\n method_code\n method_title\n }\n }\n rules {\n uid\n }\n itemsV2(pageSize: 100, currentPage: 1) {\n items {\n uid\n quantity\n product {\n __typename\n uid\n name\n sku\n url_key\n canonical_url\n stock_status\n only_x_left_in_stock\n image {\n url\n label\n }\n small_image {\n url\n label\n }\n thumbnail {\n url\n label\n }\n price_range {\n maximum_price {\n regular_price {\n value\n currency\n }\n final_price {\n value\n currency\n }\n }\n }\n }\n prices {\n price {\n value\n currency\n }\n price_including_tax {\n value\n currency\n }\n original_item_price {\n value\n currency\n }\n original_row_total {\n value\n currency\n }\n row_total {\n value\n currency\n }\n row_total_including_tax {\n value\n currency\n }\n total_item_discount {\n value\n currency\n }\n discounts {\n label\n amount {\n value\n currency\n }\n }\n fixed_product_taxes {\n label\n amount {\n value\n currency\n }\n }\n }\n ... on SimpleCartItem {\n customizable_options {\n label\n values {\n label\n value\n }\n }\n }\n ... on ConfigurableCartItem {\n configurable_options {\n option_label\n value_label\n }\n }\n ... on BundleCartItem {\n bundle_options {\n uid\n label\n type\n values {\n uid\n label\n quantity\n }\n }\n }\n ... on DownloadableCartItem {\n links {\n uid\n title\n }\n }\n ... on GiftCardCartItem {\n sender_name\n sender_email\n recipient_name\n recipient_email\n message\n amount {\n value\n currency\n }\n }\n errors {\n code\n message\n }\n is_available\n max_qty\n min_qty\n not_available_message\n note_from_buyer {\n note_uid\n note\n created_at\n }\n note_from_seller {\n note_uid\n note\n created_at\n }\n }\n page_info {\n current_page\n page_size\n total_pages\n }\n total_count\n }\n prices {\n grand_total {\n value\n currency\n }\n grand_total_excluding_tax {\n value\n currency\n }\n subtotal_excluding_tax {\n value\n currency\n }\n subtotal_including_tax {\n value\n currency\n }\n subtotal_with_discount_excluding_tax {\n value\n currency\n }\n applied_taxes {\n label\n amount {\n value\n currency\n }\n }\n discounts {\n label\n amount {\n value\n currency\n }\n }\n gift_options {\n gift_wrapping_for_items {\n value\n currency\n }\n gift_wrapping_for_items_incl_tax {\n value\n currency\n }\n gift_wrapping_for_order {\n value\n currency\n }\n gift_wrapping_for_order_incl_tax {\n value\n currency\n }\n printed_card {\n value\n currency\n }\n printed_card_incl_tax {\n value\n currency\n }\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { PURCHASE_ORDER_QUOTE_FRAGMENT } from './PurchaseOrderQuoteFragment';\n\nexport const PURCHASE_ORDERS_FRAGMENT = /* GraphQL */ `\n fragment PURCHASE_ORDERS_FRAGMENT on PurchaseOrder {\n __typename\n uid\n number\n status\n available_actions\n approval_flow {\n events {\n name\n role\n message\n status\n updated_at\n }\n rule_name\n }\n comments {\n created_at\n author {\n firstname\n lastname\n email\n }\n text\n }\n created_at\n updated_at\n created_by {\n firstname\n lastname\n email\n }\n history_log {\n message\n created_at\n activity\n __typename\n uid\n }\n order {\n number\n }\n quote {\n ...PURCHASE_ORDER_QUOTE_FRAGMENT\n }\n }\n ${PURCHASE_ORDER_QUOTE_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { PURCHASE_ORDERS_FRAGMENT } from '../../fragments';\n\nexport const GET_PURCHASE_ORDER = /* GraphQL */ `\n query GET_PURCHASE_ORDER($uid: ID!) {\n customer {\n purchase_order(uid: $uid) {\n ...PURCHASE_ORDERS_FRAGMENT\n }\n }\n }\n ${PURCHASE_ORDERS_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { PurchaseOrderModel } from '@/b2b-purchase-order/data/models';\n\nexport const transformPurchaseOrder = (\n purchaseOrder: any\n): PurchaseOrderModel => {\n const order = {\n typename: purchaseOrder?.__typename ?? '',\n uid: purchaseOrder?.uid ?? '',\n number: purchaseOrder?.number ?? '',\n status: purchaseOrder?.status ?? '',\n availableActions: purchaseOrder?.available_actions ?? [],\n approvalFlow: purchaseOrder?.approval_flow?.length\n ? purchaseOrder.approval_flow.map((flow: any) => ({\n ruleName: flow?.rule_name ?? '',\n events:\n flow?.events?.map((event: any) => ({\n message: event?.message ?? '',\n name: event?.name ?? '',\n role: event?.role ?? '',\n status: event?.status ?? '',\n updatedAt: event?.updated_at ?? '',\n })) ?? [],\n }))\n : [],\n comments:\n purchaseOrder?.comments?.map((comment: any) => ({\n uid: comment?.uid ?? '',\n createdAt: comment?.created_at ?? '',\n author: {\n firstname: comment?.author?.firstname ?? '',\n lastname: comment?.author?.lastname ?? '',\n email: comment?.author?.email ?? '',\n },\n text: comment?.text ?? '',\n })) ?? [],\n createdAt: purchaseOrder?.created_at ?? '',\n updatedAt: purchaseOrder?.updated_at ?? '',\n createdBy: {\n firstname: purchaseOrder?.created_by?.firstname ?? '',\n lastname: purchaseOrder?.created_by?.lastname ?? '',\n email: purchaseOrder?.created_by?.email ?? '',\n },\n historyLog:\n purchaseOrder?.history_log?.map((log: any) => ({\n activity: log?.activity ?? '',\n createdAt: log?.created_at ?? '',\n message: log?.message ?? '',\n uid: log?.uid ?? '',\n })) ?? [],\n quote: transformQuoteToOrder(purchaseOrder?.quote),\n order: {\n id: purchaseOrder?.order?.id ?? '',\n orderNumber: purchaseOrder?.order?.number ?? '',\n },\n };\n\n return order;\n};\n\nfunction transformQuoteToOrder(quote: any) {\n if (!quote) return null;\n\n // Helper functions\n const parseNumber = (value: number | undefined | null) => {\n return value || 0;\n };\n\n const transformUserInformation = (user: any) => {\n return {\n firstName: user?.firstname ?? '',\n lastName: user?.lastname ?? '',\n middleName: user?.middlename ?? '',\n };\n };\n\n const transformAddress = (address: any) => {\n const { firstName, lastName, middleName } =\n transformUserInformation(address);\n\n return {\n firstName,\n lastName,\n middleName,\n city: address?.city ?? '',\n company: address?.company ?? '',\n country: address?.country?.label ?? '',\n countryCode: address?.country?.code ?? '',\n fax: address?.fax ?? '',\n postCode: address?.postcode ?? '',\n prefix: address?.prefix ?? '',\n region: address?.region?.label ?? '',\n regionId: address?.region?.code ?? '',\n street: address?.street ?? [],\n suffix: address?.suffix ?? '',\n telephone: address?.telephone ?? '',\n vatId: address?.vat_id ?? '',\n customAttributes: address?.custom_attributes ?? [],\n };\n };\n\n const transformProduct = (product: any) => {\n return {\n __typename: product?.__typename || '',\n uid: product?.uid || '',\n onlyXLeftInStock: product?.only_x_left_in_stock ?? 0,\n stockStatus: product?.stock_status ?? '',\n priceRange: {\n maximumPrice: {\n regularPrice: {\n currency:\n product?.price_range?.maximum_price?.regular_price?.currency ??\n '',\n value:\n product?.price_range?.maximum_price?.regular_price?.value ?? 0,\n },\n },\n },\n canonicalUrl: product?.canonical_url ?? '',\n urlKey: product?.url_key || '',\n id: product?.uid ?? '',\n name: product?.name || '',\n sku: product?.sku || '',\n image: product?.image?.url || '',\n imageAlt: product?.image?.label || '',\n productType: product?.__typename || '',\n thumbnail: {\n label: product?.thumbnail?.label || '',\n url: product?.thumbnail?.url || '',\n },\n };\n };\n\n const transformConfigurableOptions = (item: any) => {\n if (!item) return;\n\n // GraphQL returns configurable_options (not selected_options)\n if (!('configurable_options' in item)) return;\n\n const configurableOptions: Record<string, string> = {};\n\n for (const option of item.configurable_options!) {\n // GraphQL fields: option_label and value_label\n configurableOptions[option!.option_label] = option!.value_label;\n }\n\n return configurableOptions;\n };\n const transformBundleOptions = (data: any) => {\n const bundle = data?.map((option: any) => ({\n uid: option.uid,\n label: option.label,\n values: option.values.map((value: any) => value.product_name).join(', '),\n }));\n\n const bundleOptions: { [key: string]: any } = {};\n\n bundle?.forEach((option: any) => {\n bundleOptions[option.label] = option.values;\n });\n\n return Object.keys(bundleOptions).length > 0 ? bundleOptions : null;\n };\n\n const transformLinks = (links: { title: string }[]) => {\n return links?.length > 0\n ? {\n count: links.length,\n result: links.map((link: any) => link.title).join(', '),\n }\n : null;\n };\n\n const transformGiftCard = (item: any) => {\n return {\n senderName: item?.gift_card?.sender_name || '',\n senderEmail: item?.gift_card?.sender_email || '',\n recipientEmail: item?.gift_card?.recipient_email || '',\n recipientName: item?.gift_card?.recipient_name || '',\n message: item?.gift_card?.message || '',\n };\n };\n\n const transformGiftMessage = (data: any) => {\n return {\n senderName: data?.gift_message?.from ?? '',\n recipientName: data?.gift_message?.to ?? '',\n message: data?.gift_message?.message ?? '',\n };\n };\n\n const transformGiftWrapping = (data: any) => {\n return {\n design: data?.gift_wrapping?.design ?? '',\n uid: data?.gift_wrapping?.uid ?? '',\n selected: Boolean(data?.gift_wrapping?.uid),\n image: {\n url: data?.gift_wrapping?.image?.url ?? '',\n label: data?.gift_wrapping?.image?.label ?? '',\n },\n price: {\n currency: data?.gift_wrapping?.price?.currency ?? 'USD',\n value: data?.gift_wrapping?.price?.value ?? 0,\n },\n };\n };\n\n const transformWrappingPrice = (data: any) => {\n return {\n currency: data?.currency ?? 'USD',\n value: data?.value ?? 0,\n };\n };\n\n const transformTaxCalculations = (\n itemPrices: any,\n productPrice: { value: number; currency: string }\n ) => {\n const price = itemPrices?.price;\n const priceIncludingTax = itemPrices?.priceIncludingTax;\n const originalPrice = itemPrices?.originalPrice;\n\n // For quote, discounted is always false since there are no discounts yet\n const discounted = false;\n const baseOriginalPriceValue = discounted\n ? originalPrice?.value\n : priceIncludingTax?.value;\n\n const includeAndExcludeTax = {\n originalPrice,\n baseOriginalPrice: {\n value: baseOriginalPriceValue,\n currency: originalPrice?.currency,\n },\n baseDiscountedPrice: {\n value: priceIncludingTax?.value,\n currency: priceIncludingTax?.currency,\n },\n baseExcludingTax: {\n value: price?.value,\n currency: price?.currency,\n },\n };\n\n const excludeTax = {\n originalPrice,\n baseOriginalPrice: {\n value: originalPrice?.value,\n currency: priceIncludingTax?.currency,\n },\n baseDiscountedPrice: {\n value: productPrice?.value,\n currency: price?.currency,\n },\n baseExcludingTax: {\n value: price?.value,\n currency: price?.currency,\n },\n };\n\n const includeTax = {\n singleItemPrice: {\n value: discounted ? originalPrice.value : priceIncludingTax.value,\n currency: priceIncludingTax.currency,\n },\n baseOriginalPrice: {\n value: baseOriginalPriceValue,\n currency: priceIncludingTax.currency,\n },\n baseDiscountedPrice: {\n value: priceIncludingTax.value,\n currency: priceIncludingTax.currency,\n },\n };\n\n return {\n includeAndExcludeTax,\n excludeTax,\n includeTax,\n };\n };\n\n const transformQuoteItem = (item: any) => {\n const product = item?.product;\n const prices = item?.prices;\n const quantity = parseNumber(item?.quantity);\n\n const itemPrices = {\n price: prices?.price ?? { value: 0, currency: 'USD' },\n priceIncludingTax: prices?.price_including_tax ?? {\n value: 0,\n currency: 'USD',\n },\n originalPrice: prices?.original_item_price ?? {\n value: 0,\n currency: 'USD',\n },\n originalPriceIncludingTax: prices?.original_item_price ?? {\n value: 0,\n currency: 'USD',\n },\n discounts: prices?.discounts ?? [],\n };\n\n const discounted =\n (prices?.original_item_price?.value ?? 0) > (prices?.price?.value ?? 0);\n\n const price = prices?.price ?? { value: 0, currency: 'USD' };\n\n return {\n giftMessage: transformGiftMessage(item),\n giftWrappingPrice: transformWrappingPrice(item?.gift_wrapping?.price),\n productGiftWrapping: [transformGiftWrapping(item)],\n taxCalculations: transformTaxCalculations(itemPrices, price),\n productSalePrice: price,\n status: item?.is_available ? 'available' : 'unavailable',\n currentReturnOrderQuantity: 0,\n eligibleForReturn: false,\n productSku: product?.sku ?? '',\n type: product?.__typename ?? '',\n discounted,\n id: item?.uid ?? '',\n productName: product?.name ?? '',\n productUrlKey: product?.url_key ?? '',\n regularPrice: {\n value: product?.price_range?.maximum_price?.regular_price?.value ?? 0,\n currency:\n product?.price_range?.maximum_price?.regular_price?.currency ?? 'USD',\n },\n price,\n product: transformProduct(product),\n selectedOptions: item?.customizable_options ?? [],\n thumbnail: {\n label: product?.thumbnail?.label || '',\n url: product?.thumbnail?.url || '',\n },\n downloadableLinks:\n product?.__typename === 'DownloadableProduct' &&\n item?.downloadable_links\n ? transformLinks(item.downloadable_links)\n : null,\n prices: itemPrices,\n itemPrices,\n bundleOptions:\n product?.__typename === 'BundleProduct' && item?.bundle_options\n ? transformBundleOptions(item.bundle_options)\n : null,\n totalInclTax: prices?.row_total_including_tax ?? {\n value: 0,\n currency: 'USD',\n },\n priceInclTax: prices?.price_including_tax ?? {\n value: 0,\n currency: 'USD',\n },\n total: prices?.row_total ?? { value: 0, currency: 'USD' },\n configurableOptions:\n product?.__typename === 'ConfigurableProduct'\n ? transformConfigurableOptions(item)\n : undefined,\n giftCard:\n product?.__typename === 'GiftCardProduct'\n ? transformGiftCard(item)\n : undefined,\n quantityCanceled: 0,\n quantityInvoiced: 0,\n quantityOrdered: quantity,\n quantityRefunded: 0,\n quantityReturned: 0,\n quantityShipped: 0,\n requestQuantity: 0,\n totalQuantity: quantity,\n returnableQuantity: 0,\n quantityReturnRequested: 0,\n };\n };\n\n const transformGiftOptions = (giftOptions: any) => {\n return {\n giftWrappingForItems: giftOptions?.gift_wrapping_for_items ?? {\n value: 0,\n currency: 'USD',\n },\n giftWrappingForItemsInclTax:\n giftOptions?.gift_wrapping_for_items_incl_tax ?? {\n value: 0,\n currency: 'USD',\n },\n giftWrappingForOrder: giftOptions?.gift_wrapping_for_order ?? {\n value: 0,\n currency: 'USD',\n },\n giftWrappingForOrderInclTax:\n giftOptions?.gift_wrapping_for_order_incl_tax ?? {\n value: 0,\n currency: 'USD',\n },\n printedCard: giftOptions?.printed_card ?? {\n value: 0,\n currency: 'USD',\n },\n printedCardInclTax: giftOptions?.printed_card_incl_tax ?? {\n value: 0,\n currency: 'USD',\n },\n };\n };\n\n const transformAppliedGiftCards = (appliedGiftCards: any[] = []) => {\n if (!appliedGiftCards || appliedGiftCards.length === 0) return [];\n\n return appliedGiftCards.map((giftCard: any) => ({\n code: giftCard?.code ?? '',\n appliedBalance: {\n value: giftCard?.applied_balance?.value ?? 0,\n currency: giftCard?.applied_balance?.currency ?? 'USD',\n },\n }));\n };\n\n const transformTaxes = (appliedTaxes: any[] = []) => {\n if (!appliedTaxes || appliedTaxes.length === 0) return [];\n\n return appliedTaxes.map((tax: any) => ({\n amount: {\n value: tax?.amount?.value ?? 0,\n currency: tax?.amount?.currency ?? 'USD',\n },\n rate: tax?.rate ?? 0,\n title: tax?.title ?? tax?.label ?? '',\n }));\n };\n\n // Get shipping address (first one if multiple)\n const shippingAddressData = quote?.shipping_addresses?.[0];\n const billingAddressData = quote?.billing_address;\n const selectedShippingMethod = shippingAddressData?.selected_shipping_method;\n const selectedPaymentMethod = quote?.selected_payment_method;\n const prices = quote?.prices;\n\n // Transform items from quote\n const items = quote?.itemsV2?.items?.map(transformQuoteItem) ?? [];\n\n // Calculate total quantity\n const totalQuantity = items.reduce(\n (accum: number, item: any) => accum + item.totalQuantity,\n 0\n );\n\n // Build OrderDataModel structure from quote\n // Build shipping method string like in order: \"carrier_title - method_title\"\n const shippingMethodString = selectedShippingMethod\n ? `${selectedShippingMethod.carrier_title ?? ''} - ${\n selectedShippingMethod.method_title ?? ''\n }`.trim()\n : '';\n\n const appliedGiftCards = transformAppliedGiftCards(quote?.applied_gift_cards);\n\n return {\n giftReceiptIncluded: quote?.gift_receipt_included ?? false,\n printedCardIncluded: quote?.printed_card_included ?? false,\n giftWrappingOrder: {\n price: {\n value: quote?.gift_wrapping?.price?.value ?? 0,\n currency: quote?.gift_wrapping?.price?.currency ?? 'USD',\n },\n uid: quote?.gift_wrapping?.uid ?? '',\n },\n placeholderImage: '',\n returnNumber: undefined,\n id: quote?.id ?? '',\n orderStatusChangeDate: undefined,\n number: '', // Quotes don't have order numbers yet\n email: quote?.email ?? '',\n token: undefined,\n status: 'pending', // Quote status\n isVirtual: quote?.is_virtual ?? false,\n totalQuantity,\n shippingMethod: shippingMethodString,\n carrier: selectedShippingMethod?.carrier_code ?? '',\n orderDate: '', // Quotes don't have order date yet\n returns: [],\n discounts: prices?.discounts ?? [],\n coupons: quote?.applied_coupons ?? [],\n payments: [\n {\n code: selectedPaymentMethod?.code ?? '',\n name: selectedPaymentMethod?.title ?? '',\n },\n ],\n shipping: {\n code: shippingMethodString,\n amount: selectedShippingMethod?.amount?.value ?? 0,\n currency: selectedShippingMethod?.amount?.currency ?? 'USD',\n },\n shipments: [],\n items,\n totalGiftCard: appliedGiftCards.length\n ? appliedGiftCards.reduce(\n (acc, gc) => ({\n value: acc.value + (gc?.appliedBalance?.value ?? 0),\n currency: gc?.appliedBalance?.currency ?? acc.currency,\n }),\n {\n value: 0,\n currency: appliedGiftCards[0]?.appliedBalance?.currency ?? 'USD',\n }\n )\n : { value: 0, currency: 'USD' },\n grandTotal: prices?.grand_total ?? { value: 0, currency: 'USD' },\n grandTotalExclTax: prices?.grand_total_excluding_tax ?? {\n value: 0,\n currency: 'USD',\n },\n totalShipping: selectedShippingMethod?.amount ?? {\n value: 0,\n currency: 'USD',\n },\n subtotalExclTax: prices?.subtotal_excluding_tax ?? {\n value: 0,\n currency: 'USD',\n },\n subtotalInclTax: prices?.subtotal_including_tax ?? {\n value: 0,\n currency: 'USD',\n },\n totalTax: {\n value:\n (prices?.grand_total?.value ?? 0) -\n (prices?.grand_total_excluding_tax?.value ?? 0),\n currency: prices?.grand_total?.currency ?? 'USD',\n },\n shippingAddress: shippingAddressData\n ? transformAddress(shippingAddressData)\n : null,\n totalGiftOptions: transformGiftOptions(prices?.gift_options),\n billingAddress: billingAddressData\n ? transformAddress(billingAddressData)\n : null,\n availableActions: [],\n taxes: transformTaxes(prices?.applied_taxes),\n appliedGiftCards,\n };\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '@/b2b-purchase-order/api/fetch-graphql';\nimport { handleNetworkError } from '@/b2b-purchase-order/lib/network-error';\nimport { handleFetchError } from '@/b2b-purchase-order/lib/fetch-error';\nimport { GET_PURCHASE_ORDER } from '@/b2b-purchase-order/api/getPurchaseOrder/graphql/getPurchaseOrder.graphql';\nimport { transformPurchaseOrder } from '@/b2b-purchase-order/data/transforms/transform-purchase-order';\nimport { PurchaseOrderModel } from '@/b2b-purchase-order/data/models';\n\nexport const getPurchaseOrder = async (\n uid: string\n): Promise<{\n purchaseOrder: PurchaseOrderModel;\n}> => {\n if (!uid || uid.trim() === '') {\n throw new Error('Purchase Order UID is required');\n }\n\n return fetchGraphQl(GET_PURCHASE_ORDER, {\n variables: { uid },\n })\n .then((response: any) => {\n if (response.errors?.length) {\n handleFetchError(response.errors);\n }\n\n const result = response.data?.customer?.purchase_order;\n if (!result) {\n throw new Error('Failed to get purchase order');\n }\n\n return {\n purchaseOrder: transformPurchaseOrder(result),\n };\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { Initializer } from '@adobe-commerce/elsie/lib';\nimport { Lang } from '@adobe-commerce/elsie/i18n';\nimport { getPurchaseOrder } from '../getPurchaseOrder';\nimport { events } from '@adobe-commerce/event-bus';\n\ntype ConfigProps = {\n langDefinitions?: Lang;\n poRef?: string;\n};\n\nconst fetchAndEmitPurchaseOrderData = async (poRef: string) => {\n const result = await getPurchaseOrder(poRef);\n\n if (result?.purchaseOrder?.quote) {\n events.emit('order/data', {\n ...result.purchaseOrder.quote,\n });\n events.emit('purchase-order/data', {\n ...result.purchaseOrder,\n });\n } else {\n console.error('Failed to fetch purchase order data.');\n }\n};\n\nexport const initialize = new Initializer<ConfigProps>({\n init: async (config) => {\n const defaultConfig = {};\n\n initialize.config.setConfig({ ...defaultConfig, ...config });\n\n const isValidPoRef =\n typeof config?.poRef === 'string' && config.poRef.trim() !== '';\n\n if (isValidPoRef) {\n await fetchAndEmitPurchaseOrderData(config!.poRef!);\n }\n },\n\n listeners: () => [\n events.on('purchase-order/refresh', async () => {\n const config = initialize.config.getConfig();\n const isValidPoRef =\n typeof config?.poRef === 'string' && config.poRef.trim() !== '';\n\n if (isValidPoRef) {\n await fetchAndEmitPurchaseOrderData(config!.poRef!);\n }\n }),\n ],\n});\n\nexport const config = initialize.config;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { PURCHASE_ORDERS_FRAGMENT } from '@/b2b-purchase-order/api/graphql/PurchaseOrdersFragment.graphql';\n\nexport const APPROVE_PURCHASE_ORDERS = /* GraphQL */ `\n mutation APPROVE_PURCHASE_ORDERS($input: PurchaseOrdersActionInput!) {\n approvePurchaseOrders(input: $input) {\n purchase_orders {\n ...PURCHASE_ORDERS_FRAGMENT\n }\n errors {\n message\n type\n }\n }\n }\n ${PURCHASE_ORDERS_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { fetchGraphQl } from '@/b2b-purchase-order/api/fetch-graphql';\nimport { handleNetworkError } from '@/b2b-purchase-order/lib/network-error';\nimport { handleFetchError } from '@/b2b-purchase-order/lib/fetch-error';\nimport { APPROVE_PURCHASE_ORDERS } from '@/b2b-purchase-order/api/approvePurchaseOrders/graphql/approvePurchaseOrders.graphql';\nimport { transformPurchaseOrder } from '@/b2b-purchase-order/data/transforms/transform-purchase-order';\nimport { PurchaseOrderModel } from '@/b2b-purchase-order/data/models';\n\nexport const approvePurchaseOrders = async (\n uids: string | string[]\n): Promise<{\n errors: { message: string; type: string }[];\n purchaseOrders: PurchaseOrderModel[];\n}> => {\n const uidArray = Array.isArray(uids) ? uids : [uids];\n\n if (!uidArray || uidArray.length === 0) {\n throw new Error('Purchase Order UID(s) are required');\n }\n\n if (uidArray.some((uid) => !uid || uid.trim() === '')) {\n throw new Error('All Purchase Order UIDs must be valid');\n }\n\n const input = {\n purchase_order_uids: uidArray,\n };\n\n return fetchGraphQl(APPROVE_PURCHASE_ORDERS, {\n variables: { input },\n })\n .then((response: any) => {\n if (response.errors?.length) {\n handleFetchError(response.errors);\n }\n\n const data = response.data?.approvePurchaseOrders;\n if (!data) {\n throw new Error('Failed to approve purchase orders');\n }\n\n return {\n errors: (data?.errors ?? []).map((error: any) => ({\n message: error?.message ?? '',\n type: error?.type ?? '',\n })),\n purchaseOrders:\n data?.purchase_orders?.map((order: any) =>\n transformPurchaseOrder(order)\n ) ?? [],\n };\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { PURCHASE_ORDERS_FRAGMENT } from '@/b2b-purchase-order/api/graphql/PurchaseOrdersFragment.graphql';\n\nexport const CANCEL_PURCHASE_ORDERS = /* GraphQL */ `\n mutation CANCEL_PURCHASE_ORDERS($input: PurchaseOrdersActionInput!) {\n cancelPurchaseOrders(input: $input) {\n purchase_orders {\n ...PURCHASE_ORDERS_FRAGMENT\n }\n errors {\n message\n type\n }\n }\n }\n ${PURCHASE_ORDERS_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { fetchGraphQl } from '@/b2b-purchase-order/api/fetch-graphql';\nimport { handleNetworkError } from '@/b2b-purchase-order/lib/network-error';\nimport { handleFetchError } from '@/b2b-purchase-order/lib/fetch-error';\nimport { CANCEL_PURCHASE_ORDERS } from '@/b2b-purchase-order/api/cancelPurchaseOrders/graphql/cancelPurchaseOrders.graphql';\nimport { transformPurchaseOrder } from '@/b2b-purchase-order/data/transforms/transform-purchase-order';\nimport { PurchaseOrderModel } from '@/b2b-purchase-order/data/models';\n\nexport const cancelPurchaseOrders = async (\n uids: string | string[]\n): Promise<{\n errors: { message: string; type: string }[];\n purchaseOrders: PurchaseOrderModel[];\n}> => {\n const uidArray = Array.isArray(uids) ? uids : [uids];\n\n if (!uidArray || uidArray.length === 0) {\n throw new Error('Purchase Order UID(s) are required');\n }\n\n if (uidArray.some((uid) => !uid || uid.trim() === '')) {\n throw new Error('All Purchase Order UIDs must be valid');\n }\n\n const input = {\n purchase_order_uids: uidArray,\n };\n\n return fetchGraphQl(CANCEL_PURCHASE_ORDERS, {\n variables: { input },\n })\n .then((response: any) => {\n if (response.errors?.length) {\n handleFetchError(response.errors);\n }\n\n const data = response.data?.cancelPurchaseOrders;\n if (!data) {\n throw new Error('Failed to cancel purchase orders');\n }\n\n return {\n errors: (data?.errors ?? []).map((error: any) => ({\n message: error?.message ?? '',\n type: error?.type ?? '',\n })),\n purchaseOrders:\n data?.purchase_orders?.map((order: any) =>\n transformPurchaseOrder(order)\n ) ?? [],\n };\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { PURCHASE_ORDERS_FRAGMENT } from '@/b2b-purchase-order/api/graphql/PurchaseOrdersFragment.graphql';\n\nexport const REJECT_PURCHASE_ORDERS = /* GraphQL */ `\n mutation REJECT_PURCHASE_ORDERS($input: PurchaseOrdersActionInput!) {\n rejectPurchaseOrders(input: $input) {\n purchase_orders {\n ...PURCHASE_ORDERS_FRAGMENT\n }\n errors {\n message\n type\n }\n }\n }\n ${PURCHASE_ORDERS_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { fetchGraphQl } from '@/b2b-purchase-order/api/fetch-graphql';\nimport { handleNetworkError } from '@/b2b-purchase-order/lib/network-error';\nimport { handleFetchError } from '@/b2b-purchase-order/lib/fetch-error';\nimport { REJECT_PURCHASE_ORDERS } from '@/b2b-purchase-order/api/rejectPurchaseOrders/graphql/rejectPurchaseOrders.graphql';\nimport { transformPurchaseOrder } from '@/b2b-purchase-order/data/transforms/transform-purchase-order';\nimport { PurchaseOrderModel } from '@/b2b-purchase-order/data/models';\n\nexport const rejectPurchaseOrders = async (\n uids: string | string[]\n): Promise<{\n errors: { message: string; type: string }[];\n purchaseOrders: PurchaseOrderModel[];\n}> => {\n const uidArray = Array.isArray(uids) ? uids : [uids];\n\n if (!uidArray || uidArray.length === 0) {\n throw new Error('Purchase Order UID(s) are required');\n }\n\n if (uidArray.some((uid) => !uid || uid.trim() === '')) {\n throw new Error('All Purchase Order UIDs must be valid');\n }\n\n const input = {\n purchase_order_uids: uidArray,\n };\n\n return fetchGraphQl(REJECT_PURCHASE_ORDERS, {\n variables: { input },\n })\n .then((response: any) => {\n if (response.errors?.length) {\n handleFetchError(response.errors);\n }\n\n const data = response.data?.rejectPurchaseOrders;\n\n return {\n errors: (data?.errors ?? []).map((error: any) => ({\n message: error?.message ?? '',\n type: error?.type ?? '',\n })),\n purchaseOrders: (data?.purchase_orders ?? []).map(\n transformPurchaseOrder\n ),\n };\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { PURCHASE_ORDERS_FRAGMENT } from '@/b2b-purchase-order/api/graphql/PurchaseOrdersFragment.graphql';\n\nexport const VALIDATE_PURCHASE_ORDERS = /* GraphQL */ `\n mutation VALIDATE_PURCHASE_ORDERS($input: ValidatePurchaseOrdersInput!) {\n validatePurchaseOrders(input: $input) {\n errors {\n message\n type\n }\n purchase_orders {\n ...PURCHASE_ORDERS_FRAGMENT\n }\n }\n }\n ${PURCHASE_ORDERS_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { fetchGraphQl } from '@/b2b-purchase-order/api/fetch-graphql';\nimport { handleNetworkError } from '@/b2b-purchase-order/lib/network-error';\nimport { handleFetchError } from '@/b2b-purchase-order/lib/fetch-error';\nimport { VALIDATE_PURCHASE_ORDERS } from '@/b2b-purchase-order/api/validatePurchaseOrders/graphql/validatePurchaseOrders.graphql';\nimport { PurchaseOrderModel } from '@/b2b-purchase-order/data/models';\nimport { transformPurchaseOrder } from '@/b2b-purchase-order/data/transforms/transform-purchase-order';\n\nexport const validatePurchaseOrders = async (\n uids: string | string[]\n): Promise<{\n errors: { message: string; type: string }[];\n purchaseOrders: PurchaseOrderModel[];\n}> => {\n const uidArray = Array.isArray(uids) ? uids : [uids];\n\n if (!uidArray || uidArray.length === 0) {\n throw new Error('Purchase Order UID(s) are required');\n }\n\n if (uidArray.some((uid) => !uid || uid.trim() === '')) {\n throw new Error('All Purchase Order UIDs must be valid');\n }\n\n const input = {\n purchase_order_uids: uidArray,\n };\n\n return fetchGraphQl(VALIDATE_PURCHASE_ORDERS, {\n variables: { input },\n })\n .then((response: any) => {\n if (response.errors?.length) {\n handleFetchError(response.errors);\n }\n\n const data = response.data?.validatePurchaseOrders;\n\n return {\n errors: (data?.errors ?? []).map((error: any) => ({\n message: error?.message ?? '',\n type: error?.type ?? '',\n })),\n purchaseOrders: (data?.purchase_orders || []).map(\n transformPurchaseOrder\n ),\n };\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const ADD_PURCHASE_ORDER_COMMENT = /* GraphQL */ `\n mutation ADD_PURCHASE_ORDER_COMMENT(\n $purchaseOrderUid: ID!\n $comment: String!\n ) {\n addPurchaseOrderComment(\n input: { purchase_order_uid: $purchaseOrderUid, comment: $comment }\n ) {\n comment {\n created_at\n text\n uid\n author {\n allow_remote_shopping_assistance\n confirmation_status\n created_at\n date_of_birth\n email\n firstname\n gender\n job_title\n lastname\n middlename\n prefix\n status\n structure_id\n suffix\n telephone\n }\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CartModel } from '@/b2b-purchase-order/data/models';\n\nexport const transformCart = (data: any): CartModel => {\n const cartItems = data?.cart?.itemsV2?.items ?? [];\n\n return {\n cart: {\n id: data?.cart?.id ?? '',\n items: cartItems.map((item: any) => ({\n uid: item?.uid ?? '',\n quantity: item?.quantity ?? 0,\n product: {\n uid: item?.product?.uid ?? '',\n name: item?.product?.name ?? '',\n sku: item?.product?.sku ?? '',\n },\n })),\n pagination: {\n currentPage: data?.cart?.itemsV2?.page_info?.current_page ?? 1,\n pageSize: data?.cart?.itemsV2?.page_info?.page_size ?? 20,\n totalPages: data?.cart?.itemsV2?.page_info?.total_pages ?? 0,\n totalCount: data?.cart?.itemsV2?.total_count ?? 0,\n },\n },\n userErrors:\n data?.user_errors?.map((error: any) => ({\n message: error?.message ?? '',\n })) ?? [],\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n CustomerOrderModel,\n Money,\n Coupon,\n GiftCard,\n CustomerAddress,\n PaymentMethod,\n OrderItem,\n Shipment,\n ShipmentTracking,\n ShipmentComment,\n ShipmentItem,\n CustomerInfo,\n OrderTotal,\n OrderDiscount,\n} from '@/b2b-purchase-order/data/models/customer-order-model';\n\nexport const transformCustomerOrder = (response: any): CustomerOrderModel => {\n const orderData = response.data?.placeOrderForPurchaseOrder?.order;\n\n const transformMoney = (money: any): Money => ({\n value: money?.value || 0,\n currency: money?.currency || '',\n });\n\n const transformCoupon = (coupon: any): Coupon => ({\n code: coupon?.code || '',\n label: coupon?.label || '',\n });\n\n const transformGiftCard = (giftCard: any): GiftCard => ({\n code: giftCard?.code || '',\n appliedBalance: transformMoney(giftCard?.applied_balance),\n currentBalance: transformMoney(giftCard?.current_balance),\n });\n\n const transformAddress = (address: any): CustomerAddress => ({\n firstname: address?.firstname || '',\n lastname: address?.lastname || '',\n street: address?.street || [],\n city: address?.city || '',\n region: address?.region || '',\n postcode: address?.postcode || '',\n countryCode: address?.country_code || '',\n telephone: address?.telephone || '',\n company: address?.company || '',\n });\n\n const transformPaymentMethod = (payment: any): PaymentMethod => ({\n name: payment?.name || '',\n type: payment?.type || '',\n additionalData: payment?.additional_data || {},\n });\n\n const transformOrderItem = (item: any): OrderItem => ({\n id: item?.id || '',\n productName: item?.product_name || '',\n productSku: item?.product_sku || '',\n quantityOrdered: item?.quantity_ordered || 0,\n quantityShipped: item?.quantity_shipped || 0,\n quantityInvoiced: item?.quantity_invoiced || 0,\n quantityRefunded: item?.quantity_refunded || 0,\n price: transformMoney(item?.price),\n total: transformMoney(item?.total),\n });\n\n const transformShipmentTracking = (tracking: any): ShipmentTracking => ({\n number: tracking?.number || '',\n carrier: tracking?.carrier || '',\n title: tracking?.title || '',\n });\n\n const transformShipmentComment = (comment: any): ShipmentComment => ({\n message: comment?.message || '',\n timestamp: comment?.timestamp || '',\n });\n\n const transformShipmentItem = (item: any): ShipmentItem => ({\n id: item?.id || '',\n productName: item?.product_name || '',\n productSku: item?.product_sku || '',\n quantityShipped: item?.quantity_shipped || 0,\n });\n\n const transformShipment = (shipment: any): Shipment => ({\n id: shipment?.id || '',\n number: shipment?.number || '',\n tracking: (shipment?.tracking || []).map(transformShipmentTracking),\n comments: (shipment?.comments || []).map(transformShipmentComment),\n items: (shipment?.items || []).map(transformShipmentItem),\n });\n\n const transformCustomerInfo = (customerInfo: any): CustomerInfo => ({\n firstname: customerInfo?.firstname || '',\n lastname: customerInfo?.lastname || '',\n email: customerInfo?.email || '',\n });\n\n const transformOrderDiscount = (discount: any): OrderDiscount => ({\n label: discount?.label || '',\n amount: transformMoney(discount?.amount),\n });\n\n const transformOrderTotal = (total: any): OrderTotal => ({\n baseGrandTotal: transformMoney(total?.base_grand_total),\n grandTotal: transformMoney(total?.grand_total),\n subtotal: transformMoney(total?.subtotal),\n totalTax: transformMoney(total?.total_tax),\n totalShipping: transformMoney(total?.total_shipping),\n discounts: (total?.discounts || []).map(transformOrderDiscount),\n });\n\n const transformOrderData = (data: any): CustomerOrderModel => ({\n appliedCoupons: (data?.applied_coupons || []).map(transformCoupon),\n appliedGiftCards: (data?.applied_gift_cards || []).map(transformGiftCard),\n availableActions: data?.available_actions || [],\n billingAddress: data?.billing_address\n ? transformAddress(data.billing_address)\n : {\n firstname: '',\n lastname: '',\n street: [],\n city: '',\n region: '',\n postcode: '',\n countryCode: '',\n telephone: '',\n company: '',\n },\n carrier: data?.carrier || '',\n comments: data?.comments || [],\n creditMemos: data?.credit_memos || [],\n customerInfo: data?.customer_info\n ? transformCustomerInfo(data.customer_info)\n : {\n firstname: '',\n lastname: '',\n email: '',\n },\n email: data?.email || '',\n giftMessage: data?.gift_message || '',\n giftReceiptIncluded: data?.gift_receipt_included || false,\n giftWrapping: data?.gift_wrapping || null,\n id: data?.id || '',\n invoices: data?.invoices || [],\n isVirtual: data?.is_virtual || false,\n items: (data?.items || []).map(transformOrderItem),\n itemsEligibleForReturn: data?.items_eligible_for_return || [],\n number: data?.number || '',\n orderDate: data?.order_date || '',\n orderStatusChangeDate: data?.order_status_change_date || '',\n paymentMethods: (data?.payment_methods || []).map(transformPaymentMethod),\n printedCardIncluded: data?.printed_card_included || false,\n returns: data?.returns || null,\n shipments: (data?.shipments || []).map(transformShipment),\n shippingAddress: data?.shipping_address\n ? transformAddress(data.shipping_address)\n : {\n firstname: '',\n lastname: '',\n street: [],\n city: '',\n region: '',\n postcode: '',\n countryCode: '',\n telephone: '',\n company: '',\n },\n shippingMethod: data?.shipping_method || '',\n status: data?.status || '',\n token: data?.token || '',\n total: data?.total\n ? transformOrderTotal(data.total)\n : {\n baseGrandTotal: transformMoney(null),\n grandTotal: transformMoney(null),\n subtotal: transformMoney(null),\n totalTax: transformMoney(null),\n totalShipping: transformMoney(null),\n discounts: [],\n },\n });\n\n return orderData ? transformOrderData(orderData) : transformOrderData(null);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n PurchaseOrderApprovalRuleMetadataModel,\n CompanyRolePermissionsTree,\n CompanyRole,\n} from '@/b2b-purchase-order/data/models/purchase-order-approval-rule-metadata-model';\n\nexport const transformPurchaseOrderApprovalRuleMetadata = (\n response: any\n): PurchaseOrderApprovalRuleMetadataModel => {\n const metadata =\n response?.data?.customer?.purchase_order_approval_rule_metadata;\n\n const transformCompanyRolePermission = (\n permission: any\n ): CompanyRolePermissionsTree => ({\n id: permission?.id || '',\n sortOrder: permission?.sort_order || 0,\n text: permission?.text || '',\n children:\n permission?.children?.map(transformCompanyRolePermission) || undefined,\n });\n\n const transformCompanyRole = (role: any): CompanyRole => ({\n id: role?.id || '',\n name: role?.name || '',\n usersCount: role?.users_count || 0,\n permissions: (role?.permissions || []).map(transformCompanyRolePermission),\n });\n\n const availableAppliesTo = (metadata?.available_applies_to || []).map(\n transformCompanyRole\n );\n\n const availableRequiresApprovalFrom = (\n metadata?.available_requires_approval_from || []\n ).map(transformCompanyRole);\n\n return {\n availableAppliesTo,\n availableRequiresApprovalFrom,\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { PurchaseOrderApprovalRuleModel } from '../models/purchase-order-approval-rule-model';\n\nexport const transformPurchaseOrderApprovalRule = (\n approvalRule: any\n): PurchaseOrderApprovalRuleModel => {\n // Transform company role helper function\n const transformCompanyRole = (role: any) => ({\n id: role?.id || '',\n name: role?.name || '',\n usersCount: role?.users_count || 0,\n permissions: (role?.permissions || []).map((permission: any) => ({\n id: permission?.id || '',\n sortOrder: permission?.sort_order || 0,\n text: permission?.text || '',\n })),\n });\n\n // Transform condition helper function\n const transformCondition = (condition: any) => ({\n attribute: condition?.attribute,\n operator: condition?.operator,\n quantity: condition?.quantity || 0,\n amount: {\n currency: condition?.amount?.currency || 'USD',\n value: condition?.amount?.value || 0,\n },\n });\n\n return {\n uid: approvalRule?.uid || '',\n name: approvalRule?.name || '',\n description: approvalRule?.description || '',\n status: approvalRule?.status,\n createdAt: approvalRule?.created_at || '',\n updatedAt: approvalRule?.updated_at || '',\n createdBy: approvalRule?.created_by,\n appliesToRoles: (approvalRule?.applies_to_roles || []).map(\n transformCompanyRole\n ),\n approverRoles: (approvalRule?.approver_roles || []).map(\n transformCompanyRole\n ),\n condition: transformCondition(approvalRule?.condition || {}),\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { PurchaseOrderCommentModel } from '@/b2b-purchase-order/data/models';\n\nexport const transformPurchaseOrderComment = (\n comment: any\n): PurchaseOrderCommentModel => {\n return {\n createdAt: comment?.created_at ?? '',\n text: comment?.text ?? '',\n uid: comment?.uid ?? '',\n author: {\n allowRemoteShoppingAssistance:\n comment?.author?.allow_remote_shopping_assistance ?? false,\n confirmationStatus: comment?.author?.confirmation_status ?? '',\n createdAt: comment?.author?.created_at ?? '',\n dateOfBirth: comment?.author?.date_of_birth ?? '',\n email: comment?.author?.email ?? '',\n firstname: comment?.author?.firstname ?? '',\n gender: comment?.author?.gender ?? 0,\n jobTitle: comment?.author?.job_title ?? '',\n lastname: comment?.author?.lastname ?? '',\n middlename: comment?.author?.middlename ?? '',\n prefix: comment?.author?.prefix ?? '',\n status: comment?.author?.status ?? '',\n structureId: comment?.author?.structure_id ?? '',\n suffix: comment?.author?.suffix ?? '',\n telephone: comment?.author?.telephone ?? '',\n },\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '@/b2b-purchase-order/api/fetch-graphql';\nimport { handleNetworkError } from '@/b2b-purchase-order/lib/network-error';\nimport { handleFetchError } from '@/b2b-purchase-order/lib/fetch-error';\nimport { ADD_PURCHASE_ORDER_COMMENT } from '@/b2b-purchase-order/api/addPurchaseOrderComment/graphql/addPurchaseOrderComment.graphql';\nimport { transformPurchaseOrderComment } from '@/b2b-purchase-order/data/transforms';\nimport { PurchaseOrderCommentModel } from '@/b2b-purchase-order/data/models';\n\nexport const addPurchaseOrderComment = async (\n uid: string,\n comment: string\n): Promise<PurchaseOrderCommentModel> => {\n if (!uid) {\n throw new Error('Purchase Order ID is required');\n }\n\n if (!comment) {\n throw new Error('Comment text is required');\n }\n\n const variables = {\n purchaseOrderUid: uid,\n comment,\n };\n\n return fetchGraphQl(ADD_PURCHASE_ORDER_COMMENT, {\n variables,\n })\n .then((response: any) => {\n if (response.errors?.length) {\n handleFetchError(response.errors);\n }\n\n return transformPurchaseOrderComment(\n response.data?.addPurchaseOrderComment?.comment\n );\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const ADD_PURCHASE_ORDER_ITEMS_TO_CART = /* GraphQL */ `\n mutation ADD_PURCHASE_ORDER_ITEMS_TO_CART(\n $purchaseOrderUid: ID!\n $cartId: String!\n $replaceExistingCartItems: Boolean!\n ) {\n addPurchaseOrderItemsToCart(\n input: {\n purchase_order_uid: $purchaseOrderUid\n cart_id: $cartId\n replace_existing_cart_items: $replaceExistingCartItems\n }\n ) {\n cart {\n id\n itemsV2 {\n items {\n uid\n quantity\n product {\n uid\n name\n sku\n }\n }\n page_info {\n current_page\n page_size\n total_pages\n }\n total_count\n }\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '@/b2b-purchase-order/api/fetch-graphql';\nimport { handleNetworkError } from '@/b2b-purchase-order/lib/network-error';\nimport { handleFetchError } from '@/b2b-purchase-order/lib/fetch-error';\nimport { transformCart } from '@/b2b-purchase-order/data/transforms';\nimport { ADD_PURCHASE_ORDER_ITEMS_TO_CART } from '@/b2b-purchase-order/api/addPurchaseOrderItemsToCart/graphql/addPurchaseOrderItemsToCart.graphql';\nimport { CartModel } from '@/b2b-purchase-order/data/models';\n\nexport const addPurchaseOrderItemsToCart = async (\n purchaseOrderUid: string,\n cartId: string,\n replaceExistingCartItems: boolean = false\n): Promise<CartModel> => {\n if (!purchaseOrderUid) {\n throw new Error('Purchase Order UID is required');\n }\n\n if (!cartId) {\n throw new Error('Cart ID is required');\n }\n\n const variables = {\n purchaseOrderUid,\n cartId,\n replaceExistingCartItems,\n };\n\n return fetchGraphQl(ADD_PURCHASE_ORDER_ITEMS_TO_CART, {\n variables,\n })\n .then((response: any) => {\n if (response.errors?.length) {\n handleFetchError(response.errors);\n }\n\n const cartData = response.data?.addPurchaseOrderItemsToCart;\n if (!cartData?.cart) {\n throw new Error('Failed to add purchase order items to cart');\n }\n\n return transformCart(cartData);\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const CREATE_PURCHASE_ORDER_APPROVAL_RULE = /* GraphQL */ `\n mutation CREATE_PURCHASE_ORDER_APPROVAL_RULE(\n $input: PurchaseOrderApprovalRuleInput!\n ) {\n createPurchaseOrderApprovalRule(input: $input) {\n created_at\n created_by\n description\n name\n status\n uid\n updated_at\n applies_to_roles {\n id\n name\n users_count\n permissions {\n id\n sort_order\n text\n }\n }\n condition {\n attribute\n operator\n }\n approver_roles {\n id\n name\n users_count\n permissions {\n id\n sort_order\n text\n }\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { fetchGraphQl } from '@/b2b-purchase-order/api/fetch-graphql';\nimport { handleNetworkError } from '@/b2b-purchase-order/lib/network-error';\nimport { handleFetchError } from '@/b2b-purchase-order/lib/fetch-error';\nimport { CREATE_PURCHASE_ORDER_APPROVAL_RULE } from '@/b2b-purchase-order/api/createPurchaseOrderApprovalRule/graphql/createPurchaseOrderApprovalRule.graphql';\nimport { PurchaseOrderApprovalRuleModel } from '@/b2b-purchase-order/data/models/purchase-order-approval-rule-model';\nimport { transformPurchaseOrderApprovalRule } from '@/b2b-purchase-order/data/transforms';\n\nexport const createPurchaseOrderApprovalRule = async (\n input: any\n): Promise<PurchaseOrderApprovalRuleModel> => {\n if (!input.name || input.name.trim() === '') {\n throw new Error('Rule name is required');\n }\n\n return fetchGraphQl(CREATE_PURCHASE_ORDER_APPROVAL_RULE, {\n variables: { input },\n })\n .then((response: any) => {\n if (response.errors?.length) {\n handleFetchError(response.errors);\n }\n\n const result = response.data?.createPurchaseOrderApprovalRule;\n if (!result) {\n throw new Error('Failed to create purchase order approval rule');\n }\n\n return transformPurchaseOrderApprovalRule(\n response.data.createPurchaseOrderApprovalRule\n );\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const DELETE_PURCHASE_ORDER_APPROVAL_RULE = /* GraphQL */ `\n mutation DELETE_PURCHASE_ORDER_APPROVAL_RULE(\n $input: DeletePurchaseOrderApprovalRuleInput!\n ) {\n deletePurchaseOrderApprovalRule(input: $input) {\n errors {\n message\n type\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { fetchGraphQl } from '@/b2b-purchase-order/api/fetch-graphql';\nimport { handleNetworkError } from '@/b2b-purchase-order/lib/network-error';\nimport { handleFetchError } from '@/b2b-purchase-order/lib/fetch-error';\nimport { DELETE_PURCHASE_ORDER_APPROVAL_RULE } from '@/b2b-purchase-order/api/deletePurchaseOrderApprovalRule/graphql/deletePurchaseOrderApprovalRule.graphql';\n\nexport const deletePurchaseOrderApprovalRule = async (\n uids: string | string[]\n): Promise<{\n deletePurchaseOrderApprovalRule: {\n errors: { message?: string; type?: string }[];\n };\n}> => {\n const uidArray = Array.isArray(uids) ? uids : [uids];\n\n if (!uidArray || uidArray.length === 0) {\n throw new Error('Approval Rule UID(s) are required');\n }\n\n if (uidArray.some((uid) => !uid || uid.trim() === '')) {\n throw new Error('All Approval Rule UIDs must be valid');\n }\n\n const input = {\n approval_rule_uids: uidArray,\n };\n\n return fetchGraphQl(DELETE_PURCHASE_ORDER_APPROVAL_RULE, {\n variables: { input },\n })\n .then((response: any) => {\n if (response.errors?.length) {\n handleFetchError(response.errors);\n }\n\n const result = response.data?.deletePurchaseOrderApprovalRule;\n if (!result) {\n throw new Error('Failed to delete purchase order approval rule');\n }\n\n const data = response?.data?.deletePurchaseOrderApprovalRule;\n\n return {\n deletePurchaseOrderApprovalRule: {\n errors: (data?.errors ?? []).map((error: any) => ({\n message: error?.message,\n type: error?.type,\n })),\n },\n };\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const UPDATE_PURCHASE_ORDER_APPROVAL_RULE = /* GraphQL */ `\n mutation UPDATE_PURCHASE_ORDER_APPROVAL_RULE(\n $input: UpdatePurchaseOrderApprovalRuleInput!\n ) {\n updatePurchaseOrderApprovalRule(input: $input) {\n created_at\n created_by\n description\n name\n status\n uid\n updated_at\n applies_to_roles {\n id\n name\n users_count\n permissions {\n id\n sort_order\n text\n }\n }\n condition {\n attribute\n operator\n }\n approver_roles {\n id\n name\n users_count\n permissions {\n id\n sort_order\n text\n }\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport { fetchGraphQl } from '@/b2b-purchase-order/api/fetch-graphql';\nimport { handleNetworkError } from '@/b2b-purchase-order/lib/network-error';\nimport { handleFetchError } from '@/b2b-purchase-order/lib/fetch-error';\nimport { UPDATE_PURCHASE_ORDER_APPROVAL_RULE } from '@/b2b-purchase-order/api/updatePurchaseOrderApprovalRule/graphql/updatePurchaseOrderApprovalRule.graphql';\nimport { transformPurchaseOrderApprovalRule } from '@/b2b-purchase-order/data/transforms';\nimport { PurchaseOrderApprovalRuleModel } from '@/b2b-purchase-order/data/models/purchase-order-approval-rule-model';\n\nexport const updatePurchaseOrderApprovalRule = async (\n input: any\n): Promise<PurchaseOrderApprovalRuleModel> => {\n if (!input.uid || input.uid.trim() === '') {\n throw new Error('Approval Rule UID is required');\n }\n\n return fetchGraphQl(UPDATE_PURCHASE_ORDER_APPROVAL_RULE, {\n variables: { input },\n })\n .then((response: any) => {\n if (response.errors?.length) {\n handleFetchError(response.errors);\n }\n\n return transformPurchaseOrderApprovalRule(\n response.data?.updatePurchaseOrderApprovalRule || {}\n );\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { PURCHASE_ORDERS_FRAGMENT } from '@/b2b-purchase-order/api/fragments';\n\nexport const GET_PURCHASE_ORDERS = /* GraphQL */ `\n query GET_PURCHASE_ORDERS(\n $filter: PurchaseOrdersFilterInput\n $pageSize: Int\n $currentPage: Int\n ) {\n customer {\n purchase_orders(\n filter: $filter\n pageSize: $pageSize\n currentPage: $currentPage\n ) {\n total_count\n page_info {\n current_page\n page_size\n total_pages\n }\n items {\n ...PURCHASE_ORDERS_FRAGMENT\n }\n }\n }\n }\n ${PURCHASE_ORDERS_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const isValidUrl = (url: string): boolean => {\n try {\n const parsed = new URL(url, window.location.origin);\n // Only allow relative paths or same-origin URLs\n return parsed.origin === window.location.origin;\n } catch {\n // If it's not a valid URL, check if it's a relative path\n return url.startsWith('/') || url.startsWith('./') || url.startsWith('../');\n }\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { getGlobalLocale } from '@adobe-commerce/elsie/lib';\n\n/**\n * Determines the effective locale to use for price formatting\n * Priority: prop locale > global locale > browser locale > default 'en-US'\n */\nexport function getEffectiveLocale(locale?: string): string {\n if (locale) {\n return locale;\n }\n const globalLocale = getGlobalLocale();\n if (globalLocale) {\n return globalLocale;\n }\n // Fallback to browser locale or default\n return process.env.LOCALE && process.env.LOCALE !== 'undefined'\n ? process.env.LOCALE\n : 'en-US';\n}\n\n/**\n * Format a date string to a localized format like \"Sep 8, 2025 6:32:13 AM\"\n * @param dateString - ISO date string or date string\n * @param locale - Locale for formatting (defaults to 'en-US')\n * @returns Formatted date string\n */\nexport const formatDate = (\n dateString: string,\n locale: string = 'en-US'\n): string => {\n try {\n const date = new Date(dateString);\n\n if (isNaN(date.getTime())) {\n return dateString; // Return original if invalid\n }\n\n const effectiveLocale = getEffectiveLocale(locale);\n\n return date.toLocaleString(effectiveLocale, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n second: '2-digit',\n hour12: true,\n });\n } catch (error) {\n return dateString; // Return original on error\n }\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\n/**\n * Converts camelCase object keys to snake_case recursively\n */\nexport const toSnakeCase = (obj: any): any => {\n if (obj === null || obj === undefined || typeof obj !== 'object') {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map(toSnakeCase);\n }\n\n const result: any = {};\n for (const [key, value] of Object.entries(obj)) {\n const snakeKey = key.replace(\n /[A-Z]/g,\n (letter) => `_${letter.toLowerCase()}`\n );\n result[snakeKey] = toSnakeCase(value);\n }\n return result;\n};\n\n/**\n * Converts snake_case object keys to camelCase recursively\n */\nexport const toCamelCase = (obj: any): any => {\n if (obj === null || obj === undefined || typeof obj !== 'object') {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map(toCamelCase);\n }\n\n const result: any = {};\n for (const [key, value] of Object.entries(obj)) {\n const camelKey = key.replace(/_([a-z])/g, (_, letter) =>\n letter.toUpperCase()\n );\n result[camelKey] = toCamelCase(value);\n }\n return result;\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const getRange = (\n currentPage: number,\n pageSize: number,\n total: number\n) => {\n if (total <= 0) return { from: 0, to: 0, total: 0 };\n const maxPage = Math.max(1, Math.ceil(total / pageSize));\n const p = Math.min(Math.max(currentPage, 1), maxPage);\n const from = (p - 1) * pageSize + 1;\n const to = Math.min(p * pageSize, total);\n\n return { from, to, total };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n ConditionAttributeType,\n ConditionOperatorType,\n FormValuesParams,\n} from '../types/hooks';\n\nexport const updateFormFieldValue = (\n formValues: FormValuesParams,\n key: string,\n value: string | number | boolean | string[]\n): FormValuesParams => {\n const newFormValues = { ...formValues };\n\n switch (key) {\n case 'status':\n newFormValues.status = value ? 'ENABLED' : 'DISABLED';\n break;\n case 'name':\n newFormValues.name = value as string;\n break;\n case 'description':\n newFormValues.description = value as string;\n break;\n case 'ruleType':\n newFormValues.condition.attribute = value as ConditionAttributeType;\n break;\n case 'ruleCondition':\n newFormValues.condition.operator = value as ConditionOperatorType;\n break;\n case 'ruleValue': {\n let numericValue =\n typeof value === 'string' ? value.replace(/[^\\d]/g, '') : String(value);\n\n if (numericValue === '') {\n if (newFormValues.condition.attribute === 'NUMBER_OF_SKUS') {\n newFormValues.condition.quantity = '';\n } else {\n newFormValues.condition.amount.value = '';\n }\n } else if (newFormValues.condition.attribute === 'NUMBER_OF_SKUS') {\n newFormValues.condition.quantity = +numericValue;\n } else {\n newFormValues.condition.amount.value = +numericValue;\n }\n break;\n }\n case 'ruleConditionCurrency':\n newFormValues.condition.amount.currency = value as string;\n break;\n case 'approvers':\n newFormValues.approvers = value as string[];\n break;\n case 'roleType':\n newFormValues.roleType = value as string;\n break;\n case 'appliesTo':\n newFormValues.appliesTo = value as string[];\n break;\n default:\n break;\n }\n\n return newFormValues;\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n FormValuesParams,\n ValidationApprovalFormError,\n} from '@/b2b-purchase-order/types/hooks';\n\n/**\n * Validates all form fields and returns validation errors\n * This function contains the core validation logic for the approval rule form\n */\nexport const validateFormFields = (\n values: FormValuesParams\n): ValidationApprovalFormError => {\n const errors: ValidationApprovalFormError = {};\n\n // Validate rule name (required)\n if (!values.name || values.name.trim() === '') {\n errors.name = 'PurchaseOrders.approvalRuleForm.errorsMessages.required';\n }\n\n // Validate appliesTo when specific roles are selected\n if (\n values.roleType === 'specific_roles' &&\n (!values.appliesTo || values.appliesTo.length === 0)\n ) {\n errors.appliesTo =\n 'PurchaseOrders.approvalRuleForm.errorsMessages.approvers';\n }\n\n // Validate rule value based on condition type\n if (values.condition.attribute === 'NUMBER_OF_SKUS') {\n if (values.condition.quantity === '') {\n errors.ruleValue =\n 'PurchaseOrders.approvalRuleForm.errorsMessages.required';\n }\n } else if (values.condition.amount.value === '') {\n errors.ruleValue =\n 'PurchaseOrders.approvalRuleForm.errorsMessages.required';\n }\n\n // Validate approvers (required)\n if (!values.approvers || values.approvers.length === 0) {\n errors.approvers =\n 'PurchaseOrders.approvalRuleForm.errorsMessages.approvers';\n }\n\n return errors;\n};\n\n/**\n * Returns only the errors for fields that have been touched by the user\n * This prevents showing validation errors for fields the user hasn't interacted with yet\n */\nexport const getVisibleErrors = (\n allErrors: ValidationApprovalFormError,\n touchedFields: { [key: string]: boolean }\n): ValidationApprovalFormError => {\n const visibleErrors: ValidationApprovalFormError = {};\n\n // Only include errors for touched fields\n Object.keys(allErrors).forEach((errorKey) => {\n if (touchedFields[errorKey]) {\n visibleErrors[errorKey] = allErrors[errorKey];\n }\n });\n\n return visibleErrors;\n};\n\n/**\n * Updates errors based on new validation results and touched fields\n * This is used for incremental validation as the user fills out the form\n */\nexport const updateValidationErrors = (\n newErrors: ValidationApprovalFormError,\n currentErrors: ValidationApprovalFormError,\n touchedFields: { [key: string]: boolean }\n): ValidationApprovalFormError => {\n const updatedErrors: ValidationApprovalFormError = { ...currentErrors };\n\n // Add new errors for touched fields\n Object.keys(newErrors).forEach((errorKey) => {\n if (touchedFields[errorKey]) {\n updatedErrors[errorKey] = newErrors[errorKey];\n }\n });\n\n // Remove errors for fields that became valid\n Object.keys(updatedErrors).forEach((errorKey) => {\n if (touchedFields[errorKey] && !newErrors[errorKey]) {\n delete updatedErrors[errorKey];\n }\n });\n\n return updatedErrors;\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FormValuesParams, FormState } from '@/b2b-purchase-order/types/hooks';\n\nexport const RULE_TYPE_OPTIONS_KEYS = {\n GRAND_TOTAL: 'ruleTypeGrandTotal',\n SHIPPING_INCL_TAX: 'ruleTypeShippingInclTax',\n NUMBER_OF_SKUS: 'ruleTypeNumberOfSkus',\n} as const;\n\nexport const CONDITION_OPERATORS_KEYS = {\n MORE_THAN: 'conditionOperatorMoreThan',\n LESS_THAN: 'conditionOperatorLessThan',\n MORE_THAN_OR_EQUAL_TO: 'conditionOperatorMoreThanOrEqualTo',\n LESS_THAN_OR_EQUAL_TO: 'conditionOperatorLessThanOrEqualTo',\n} as const;\n\nexport const APPLIES_TO_OPTIONS_KEYS = {\n ALL_USERS: 'appliesToAllUsers',\n SPECIFIC_ROLES: 'appliesToSpecificRoles',\n} as const;\n\n/**\n * Initial values for the approval rule form\n * Used when creating a new rule\n */\nexport const INITIAL_FORM_VALUES: FormValuesParams = {\n status: 'ENABLED',\n name: '',\n description: '',\n roleType: 'all_users',\n appliesTo: [],\n condition: {\n quantity: '',\n amount: {\n currency: 'USD',\n value: '',\n },\n attribute: 'GRAND_TOTAL',\n operator: 'MORE_THAN',\n },\n approvers: [],\n};\n\n/**\n * Initial state for the form reducer\n * Includes form values, loading states, and validation\n */\nexport const INITIAL_FORM_STATE: FormState = {\n formValues: INITIAL_FORM_VALUES,\n isLoading: false,\n submitError: null,\n availableAppliesTo: [],\n availableRequiresApprovalFrom: [],\n errors: {},\n touched: {},\n currencyCodesList: [{ text: 'USD', value: 'USD' }],\n};\n\n/**\n * Fields that must be touched (validated) on form submission\n */\nexport const REQUIRED_FIELDS_ON_SUBMIT = {\n name: true,\n appliesTo: true,\n ruleValue: true,\n approvers: true,\n} as const;\n\n/**\n * Translation keys for validation error messages\n */\nexport const VALIDATION_ERROR_KEYS = {\n REQUIRED: 'PurchaseOrders.approvalRuleForm.errorsMessages.required',\n APPROVERS: 'PurchaseOrders.approvalRuleForm.errorsMessages.approvers',\n FAILED_TO_LOAD: 'Failed to load metadata. Please try again.',\n FAILED_TO_CREATE: 'Failed to create approval rule. Please try again.',\n} as const;\n\n/**\n * Creates rule type options for the dropdown\n * @param t - Translation function\n */\n/**\n * Creates rule type options for the dropdown\n * @param t - Translation function\n */\nexport const createRuleTypeOptions = (t: Record<string, string>) => [\n {\n text: t[RULE_TYPE_OPTIONS_KEYS.GRAND_TOTAL],\n value: 'GRAND_TOTAL',\n },\n {\n text: t[RULE_TYPE_OPTIONS_KEYS.SHIPPING_INCL_TAX],\n value: 'SHIPPING_INCL_TAX',\n },\n {\n text: t[RULE_TYPE_OPTIONS_KEYS.NUMBER_OF_SKUS],\n value: 'NUMBER_OF_SKUS',\n },\n];\n\n/**\n * Creates condition operator options for the dropdown\n * @param t - Translation function\n */\nexport const createConditionOperators = (t: Record<string, string>) => [\n { text: t[CONDITION_OPERATORS_KEYS.MORE_THAN], value: 'MORE_THAN' },\n {\n text: t[CONDITION_OPERATORS_KEYS.LESS_THAN],\n value: 'LESS_THAN',\n },\n {\n text: t[CONDITION_OPERATORS_KEYS.MORE_THAN_OR_EQUAL_TO],\n value: 'MORE_THAN_OR_EQUAL_TO',\n },\n {\n text: t[CONDITION_OPERATORS_KEYS.LESS_THAN_OR_EQUAL_TO],\n value: 'LESS_THAN_OR_EQUAL_TO',\n },\n];\n\n/**\n * Creates \"applies to\" options for the dropdown\n * @param t - Translation function\n */\nexport const createAppliesToOptions = (t: Record<string, string>) => [\n { text: t[APPLIES_TO_OPTIONS_KEYS.ALL_USERS], value: 'all_users' },\n {\n text: t[APPLIES_TO_OPTIONS_KEYS.SPECIFIC_ROLES],\n value: 'specific_roles',\n },\n];\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { PurchaseOrderApprovalRuleModel } from '@/b2b-purchase-order/data/models';\nimport {\n ConditionAttributeType,\n ConditionOperatorType,\n FormValuesParams,\n} from '@/b2b-purchase-order/types/hooks';\nimport {\n RULE_TYPE_OPTIONS_KEYS,\n CONDITION_OPERATORS_KEYS,\n} from '@/b2b-purchase-order/configs/approvalRuleForm.config';\n\n// Default values for form fields\nconst DEFAULT_STATUS = 'ENABLED';\nconst DEFAULT_ATTRIBUTE: ConditionAttributeType = 'GRAND_TOTAL';\nconst DEFAULT_OPERATOR: ConditionOperatorType = 'MORE_THAN';\nconst DEFAULT_CURRENCY = 'USD';\nconst DEFAULT_QUANTITY = 0;\nconst DEFAULT_AMOUNT_VALUE = 0;\n\n/**\n * Checks if the given attribute is a valid condition attribute type\n */\nconst isValidAttribute = (\n attribute: any\n): attribute is ConditionAttributeType => {\n return Object.keys(RULE_TYPE_OPTIONS_KEYS).includes(attribute);\n};\n\n/**\n * Checks if the given operator is a valid condition operator type\n */\nconst isValidOperator = (operator: any): operator is ConditionOperatorType => {\n return Object.keys(CONDITION_OPERATORS_KEYS).includes(operator);\n};\n\n/**\n * Transforms API response data to form values format\n * Handles all the necessary data conversions and provides safe defaults\n */\nexport const transformToFormValues = (\n data: PurchaseOrderApprovalRuleModel\n): FormValuesParams => {\n return {\n status: (data.status as 'ENABLED' | 'DISABLED') || DEFAULT_STATUS,\n name: data.name || '',\n description: data.description || '',\n roleType: data.appliesToRoles?.length > 0 ? 'specific_roles' : 'all_users',\n appliesTo: data.appliesToRoles?.map((role) => role.id) || [],\n condition: {\n quantity: data.condition?.quantity ?? DEFAULT_QUANTITY,\n amount: {\n currency: data.condition?.amount?.currency || DEFAULT_CURRENCY,\n value: data.condition?.amount?.value ?? DEFAULT_AMOUNT_VALUE,\n },\n attribute: isValidAttribute(data.condition?.attribute)\n ? data.condition.attribute\n : DEFAULT_ATTRIBUTE,\n operator: isValidOperator(data.condition?.operator)\n ? data.condition.operator\n : DEFAULT_OPERATOR,\n },\n approvers: data.approverRoles?.map((role) => role.id) || [],\n };\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { toSnakeCase } from './case-converter';\n\n/**\n * Checks if a value should be considered as \"has value\" for form submission\n * Empty strings and null/undefined are considered as no value\n * Zero (0) is considered as no value to match existing behavior\n */\nconst hasValue = (value: any): boolean => {\n return value !== null && value !== undefined && value !== '' && value !== 0;\n};\n\n/**\n * Cleans form values and converts to snake_case for API submission\n * - Handles role type logic (all_users vs specific_roles)\n * - Removes empty condition values (amount or quantity)\n * - Converts camelCase keys to snake_case\n */\nexport function cleanAndDeep(formValues: Record<string, any>): any {\n const { roleType, appliesTo, condition, ...restAll } = formValues;\n\n // Handle role type logic: all_users means empty appliesTo array\n const roleConfig =\n roleType === 'all_users' ? { appliesTo: [] } : { appliesTo };\n\n // Build condition config with only non-empty values\n let conditionConfig = {};\n\n if (condition) {\n const { amount, quantity, ...restCondition } = condition;\n\n const newCondition = { ...restCondition };\n\n // Only include amount if it has a valid value\n if (hasValue(amount?.value)) {\n newCondition.amount = amount;\n }\n\n // Only include quantity if it has a valid value\n if (hasValue(quantity)) {\n newCondition.quantity = quantity;\n }\n\n conditionConfig = newCondition;\n }\n\n // Convert to snake_case for API\n const result = toSnakeCase({\n ...restAll,\n ...roleConfig,\n condition: conditionConfig,\n });\n\n return result;\n}\n","export const getStatusVariant = (status: string): string => {\n const statusUpper = status.toUpperCase();\n\n // Positive statuses\n if (\n [\n 'APPROVED',\n 'ORDER_PLACED',\n 'APPROVED_PENDING_PAYMENT',\n 'ENABLED',\n ].includes(statusUpper)\n ) {\n return 'positive';\n }\n\n // Negative statuses\n if (\n ['REJECTED', 'CANCELED', 'ORDER_FAILED', 'DISABLED'].includes(statusUpper)\n ) {\n return 'negative';\n }\n\n // Waiting statuses (default)\n return 'waiting';\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '@/b2b-purchase-order/api/fetch-graphql';\nimport { handleNetworkError } from '@/b2b-purchase-order/lib/network-error';\nimport { handleFetchError } from '@/b2b-purchase-order/lib/fetch-error';\nimport { GET_PURCHASE_ORDERS } from '@/b2b-purchase-order/api/getPurchaseOrders/graphql/getPurchaseOrders.graphql';\nimport { transformPurchaseOrder } from '@/b2b-purchase-order/data/transforms/transform-purchase-order';\nimport { PurchaseOrderModel } from '@/b2b-purchase-order/data/models';\nimport { toSnakeCase } from '@/b2b-purchase-order/lib';\n\nexport const getPurchaseOrders = async (\n filter?: any,\n pageSize: number = 20,\n currentPage: number = 1\n): Promise<{\n totalCount: number;\n pageInfo: {\n currentPage: number;\n pageSize: number;\n totalPages: number;\n };\n purchaseOrderItems: PurchaseOrderModel[];\n}> => {\n return fetchGraphQl(GET_PURCHASE_ORDERS, {\n variables: {\n filter: toSnakeCase(filter),\n pageSize,\n currentPage,\n },\n })\n .then((response: any) => {\n if (response.errors?.length) {\n handleFetchError(response.errors);\n }\n\n if (!response.data?.customer?.purchase_orders) {\n throw new Error('Failed to get purchase orders');\n }\n\n const purchaseOrdersData = response?.data?.customer?.purchase_orders;\n const totalCount = purchaseOrdersData?.total_count ?? 0;\n const pageInfo = {\n currentPage: purchaseOrdersData?.page_info?.current_page ?? 1,\n pageSize: purchaseOrdersData?.page_info?.page_size ?? 20,\n totalPages: purchaseOrdersData?.page_info?.total_pages ?? 1,\n };\n\n return {\n totalCount,\n pageInfo,\n purchaseOrderItems: (purchaseOrdersData?.items || []).map(\n transformPurchaseOrder\n ),\n };\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const PLACE_ORDER_FOR_PURCHASE_ORDER = /* GraphQL */ `\n mutation PLACE_ORDER_FOR_PURCHASE_ORDER(\n $input: PlaceOrderForPurchaseOrderInput!\n ) {\n placeOrderForPurchaseOrder(input: $input) {\n order {\n available_actions\n carrier\n email\n gift_receipt_included\n id\n is_virtual\n number\n order_date\n order_status_change_date\n printed_card_included\n shipping_method\n status\n token\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '@/b2b-purchase-order/api/fetch-graphql';\nimport { handleNetworkError } from '@/b2b-purchase-order/lib/network-error';\nimport { handleFetchError } from '@/b2b-purchase-order/lib/fetch-error';\nimport { PLACE_ORDER_FOR_PURCHASE_ORDER } from '@/b2b-purchase-order/api/placeOrderForPurchaseOrder/graphql/placeOrderForPurchaseOrder.graphql';\nimport { transformCustomerOrder } from '@/b2b-purchase-order/data/transforms/transform-customer-order';\nimport { CustomerOrderModel } from '@/b2b-purchase-order/data/models';\n\nexport const placeOrderForPurchaseOrder = async (\n purchaseOrderUid: string\n): Promise<CustomerOrderModel> => {\n if (!purchaseOrderUid || purchaseOrderUid.trim() === '') {\n throw new Error('Purchase Order UID is required');\n }\n\n const input = {\n purchase_order_uid: purchaseOrderUid,\n };\n\n try {\n const response: any = await fetchGraphQl(PLACE_ORDER_FOR_PURCHASE_ORDER, {\n variables: { input },\n });\n\n if (response.errors?.length) {\n handleFetchError(response.errors);\n }\n\n return transformCustomerOrder(response);\n } catch (error) {\n throw handleNetworkError(error as Error);\n }\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { PURCHASE_ORDERS_FRAGMENT } from '@/b2b-purchase-order/api/graphql/PurchaseOrdersFragment.graphql';\n\nexport const PLACE_PURCHASE_ORDER = /* GraphQL */ `\n mutation PLACE_PURCHASE_ORDER($input: PlacePurchaseOrderInput!) {\n placePurchaseOrder(input: $input) {\n purchase_order {\n ...PURCHASE_ORDERS_FRAGMENT\n }\n }\n }\n ${PURCHASE_ORDERS_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '@/b2b-purchase-order/api/fetch-graphql';\nimport { handleNetworkError } from '@/b2b-purchase-order/lib/network-error';\nimport { handleFetchError } from '@/b2b-purchase-order/lib/fetch-error';\nimport { PLACE_PURCHASE_ORDER } from '@/b2b-purchase-order/api/placePurchaseOrder/graphql/placePurchaseOrder.graphql';\nimport { transformPurchaseOrder } from '@/b2b-purchase-order/data/transforms/transform-purchase-order';\nimport { PurchaseOrderModel } from '@/b2b-purchase-order/data/models';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport const placePurchaseOrder = async (\n cartId: string\n): Promise<{ purchaseOrder: PurchaseOrderModel }> => {\n if (!cartId || cartId.trim() === '') {\n throw new Error('Cart ID is required');\n }\n\n const input = {\n cart_id: cartId,\n };\n\n return fetchGraphQl(PLACE_PURCHASE_ORDER, {\n variables: { input },\n })\n .then((response: any) => {\n if (response.errors?.length) {\n handleFetchError(response.errors);\n }\n\n const rawPurchaseOrder =\n response.data?.placePurchaseOrder?.purchase_order;\n\n const purchaseOrder = transformPurchaseOrder(rawPurchaseOrder);\n\n events.emit('purchase-order/placed', purchaseOrder);\n\n return {\n purchaseOrder,\n };\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const GET_PURCHASE_ORDER_APPROVAL_RULE_METADATA = /* GraphQL */ `\n query GET_PURCHASE_ORDER_APPROVAL_RULE_METADATA {\n customer {\n purchase_order_approval_rule_metadata {\n available_applies_to {\n id\n name\n users_count\n permissions {\n id\n sort_order\n text\n children {\n id\n sort_order\n text\n }\n }\n }\n available_requires_approval_from {\n id\n name\n users_count\n permissions {\n id\n sort_order\n text\n children {\n id\n sort_order\n text\n }\n }\n }\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '@/b2b-purchase-order/api/fetch-graphql';\nimport { handleNetworkError } from '@/b2b-purchase-order/lib/network-error';\nimport { handleFetchError } from '@/b2b-purchase-order/lib/fetch-error';\nimport { GET_PURCHASE_ORDER_APPROVAL_RULE_METADATA } from '@/b2b-purchase-order/api/getPurchaseOrderApprovalRuleMetadata/graphql/getPurchaseOrderApprovalRuleMetadata.graphql';\nimport { transformPurchaseOrderApprovalRuleMetadata } from '@/b2b-purchase-order/data/transforms/transform-purchase-order-approval-rule-metadata';\nimport { PurchaseOrderApprovalRuleMetadataModel } from '@/b2b-purchase-order/data/models';\n\nexport const getPurchaseOrderApprovalRuleMetadata =\n async (): Promise<PurchaseOrderApprovalRuleMetadataModel> => {\n return fetchGraphQl(GET_PURCHASE_ORDER_APPROVAL_RULE_METADATA, {\n variables: {},\n })\n .then((response: any) => {\n if (response.errors?.length) {\n handleFetchError(response.errors);\n }\n\n return transformPurchaseOrderApprovalRuleMetadata(response);\n })\n .catch(handleNetworkError);\n };\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const GET_CURRENCY_INFO = /* GraphQL */ `\n query GET_CURRENCY_INFO {\n currency {\n base_currency_code\n available_currency_codes\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '@/b2b-purchase-order/api/fetch-graphql';\nimport { handleNetworkError } from '@/b2b-purchase-order/lib/network-error';\nimport { handleFetchError } from '@/b2b-purchase-order/lib/fetch-error';\nimport { GET_CURRENCY_INFO } from './graphql/currencyInfo.graphql';\n\nexport const currencyInfo = async (): Promise<{\n baseCurrencyCode: string;\n availableCurrencyCodes: { text: string; value: string }[];\n}> => {\n return fetchGraphQl(GET_CURRENCY_INFO, {})\n .then((response) => {\n // Handle null/undefined response\n if (!response) {\n return {\n baseCurrencyCode: 'USD',\n availableCurrencyCodes: [],\n };\n }\n\n if (response.errors?.length) {\n handleFetchError(response.errors);\n }\n\n const codeList = response?.data?.currency?.available_currency_codes ?? [];\n const baseCurrency = response?.data?.currency?.base_currency_code;\n\n return {\n baseCurrencyCode: baseCurrency || 'USD',\n availableCurrencyCodes: codeList.length\n ? codeList.map((code: any) => ({\n text: String(code),\n value: String(code),\n }))\n : [],\n };\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const GET_PURCHASE_ORDER_APPROVAL_RULE = /* GraphQL */ `\n query GET_PURCHASE_ORDER_APPROVAL_RULE($uid: ID!) {\n customer {\n purchase_order_approval_rule(uid: $uid) {\n created_at\n created_by\n description\n name\n status\n uid\n updated_at\n applies_to_roles {\n id\n name\n users_count\n }\n approver_roles {\n id\n name\n users_count\n }\n condition {\n attribute\n operator\n ... on PurchaseOrderApprovalRuleConditionAmount {\n attribute\n operator\n amount {\n currency\n value\n }\n }\n ... on PurchaseOrderApprovalRuleConditionQuantity {\n attribute\n operator\n quantity\n }\n }\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '@/b2b-purchase-order/api/fetch-graphql';\nimport { handleNetworkError } from '@/b2b-purchase-order/lib/network-error';\nimport { handleFetchError } from '@/b2b-purchase-order/lib';\nimport { GET_PURCHASE_ORDER_APPROVAL_RULE } from '@/b2b-purchase-order/api/getPurchaseOrderApprovalRule/graphql/getPurchaseOrderApprovalRule.graphql';\nimport { transformPurchaseOrderApprovalRule } from '@/b2b-purchase-order/data/transforms';\nimport { PurchaseOrderApprovalRuleModel } from '@/b2b-purchase-order/data/models';\n\nexport const getPurchaseOrderApprovalRule = async (\n id: string\n): Promise<PurchaseOrderApprovalRuleModel> => {\n return fetchGraphQl(GET_PURCHASE_ORDER_APPROVAL_RULE, {\n variables: { uid: id },\n })\n .then((response: any) => {\n if (response.errors?.length) {\n handleFetchError(response.errors);\n }\n\n const rulesData = response?.data?.customer?.purchase_order_approval_rule;\n\n return transformPurchaseOrderApprovalRule(rulesData);\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const GET_PURCHASE_ORDER_APPROVAL_RULES = /* GraphQL */ `\n query GET_PURCHASE_ORDER_APPROVAL_RULES($currentPage: Int!, $pageSize: Int!) {\n customer {\n email\n purchase_order_approval_rules(\n currentPage: $currentPage\n pageSize: $pageSize\n ) {\n items {\n applies_to_roles {\n id\n name\n users_count\n permissions {\n id\n sort_order\n text\n children {\n id\n sort_order\n text\n }\n }\n }\n approver_roles {\n id\n name\n users_count\n permissions {\n id\n sort_order\n text\n children {\n id\n sort_order\n text\n }\n }\n }\n condition {\n attribute\n operator\n }\n created_at\n created_by\n description\n name\n status\n uid\n updated_at\n }\n total_count\n page_info {\n page_size\n current_page\n total_pages\n }\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '@/b2b-purchase-order/api/fetch-graphql';\nimport { handleNetworkError } from '@/b2b-purchase-order/lib/network-error';\nimport { handleFetchError } from '@/b2b-purchase-order/lib/fetch-error';\nimport { GET_PURCHASE_ORDER_APPROVAL_RULES } from '@/b2b-purchase-order/api/getPurchaseOrderApprovalRules/graphql/getPurchaseOrderApprovalRules.graphql';\nimport { transformPurchaseOrderApprovalRule } from '@/b2b-purchase-order/data/transforms';\nimport { PurchaseOrderApprovalRuleModel } from '@/b2b-purchase-order/data/models';\n\nconst DEFAULT_PAGE_INFO = {\n currentPage: 1,\n pageSize: 20,\n totalPages: 1,\n};\n\nexport const getPurchaseOrderApprovalRules = async (\n currentPage: number = DEFAULT_PAGE_INFO.currentPage,\n pageSize: number = DEFAULT_PAGE_INFO.pageSize\n): Promise<{\n totalCount: number;\n pageInfo: {\n currentPage: number;\n pageSize: number;\n totalPages: number;\n };\n items: PurchaseOrderApprovalRuleModel[];\n}> => {\n return fetchGraphQl(GET_PURCHASE_ORDER_APPROVAL_RULES, {\n variables: {\n currentPage,\n pageSize,\n },\n })\n .then((response: any) => {\n if (response.errors?.length) {\n handleFetchError(response.errors);\n }\n\n const rulesData = response?.data?.customer?.purchase_order_approval_rules;\n const totalCount = rulesData?.total_count ?? 0;\n const pageInfo = {\n currentPage:\n rulesData?.page_info?.current_page ?? DEFAULT_PAGE_INFO.currentPage,\n pageSize: rulesData?.page_info?.page_size ?? DEFAULT_PAGE_INFO.pageSize,\n totalPages:\n rulesData?.page_info?.total_pages ?? DEFAULT_PAGE_INFO.totalPages,\n };\n\n return {\n totalCount,\n pageInfo,\n items: (rulesData?.items || []).map(transformPurchaseOrderApprovalRule),\n };\n })\n .catch(handleNetworkError);\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const PO_PERMISSIONS = {\n PO_ALL: 'Magento_PurchaseOrder::all',\n VIEW_CUSTOMER: 'Magento_PurchaseOrder::view_purchase_orders',\n VIEW_SUBORDINATES:\n 'Magento_PurchaseOrder::view_purchase_orders_for_subordinates',\n VIEW_COMPANY: 'Magento_PurchaseOrder::view_purchase_orders_for_company',\n AUTO_APPROVE: 'Magento_PurchaseOrder::autoapprove_purchase_order',\n SUPER_APPROVE: 'Magento_PurchaseOrderRule::super_approve_purchase_order',\n VIEW_RULES: 'Magento_PurchaseOrderRule::view_approval_rules',\n MANAGE_RULES: 'Magento_PurchaseOrderRule::manage_approval_rules',\n};\n"],"names":["setEndpoint","setFetchGraphQlHeader","removeFetchGraphQlHeader","setFetchGraphQlHeaders","fetchGraphQl","getConfig","FetchGraphQL","handleNetworkError","error","isAbortError","isPlaceOrderError","events","handleFetchError","errors","_b","_a","lastStep","errorMessage","e","PURCHASE_ORDER_QUOTE_FRAGMENT","PURCHASE_ORDERS_FRAGMENT","GET_PURCHASE_ORDER","transformPurchaseOrder","purchaseOrder","flow","event","comment","_c","_d","_e","_f","log","transformQuoteToOrder","_g","_h","quote","parseNumber","value","transformUserInformation","user","transformAddress","address","firstName","lastName","middleName","transformProduct","product","_i","_j","transformConfigurableOptions","item","configurableOptions","option","transformBundleOptions","data","bundle","bundleOptions","transformLinks","links","link","transformGiftCard","transformGiftMessage","transformGiftWrapping","_k","transformWrappingPrice","transformTaxCalculations","itemPrices","productPrice","price","priceIncludingTax","originalPrice","discounted","baseOriginalPriceValue","includeAndExcludeTax","excludeTax","includeTax","transformQuoteItem","prices","quantity","transformGiftOptions","giftOptions","transformAppliedGiftCards","appliedGiftCards","giftCard","transformTaxes","appliedTaxes","tax","shippingAddressData","billingAddressData","selectedShippingMethod","selectedPaymentMethod","items","totalQuantity","accum","shippingMethodString","acc","gc","_l","_m","_n","_o","getPurchaseOrder","uid","response","result","fetchAndEmitPurchaseOrderData","poRef","initialize","Initializer","config","defaultConfig","APPROVE_PURCHASE_ORDERS","approvePurchaseOrders","uids","uidArray","order","CANCEL_PURCHASE_ORDERS","cancelPurchaseOrders","REJECT_PURCHASE_ORDERS","rejectPurchaseOrders","VALIDATE_PURCHASE_ORDERS","validatePurchaseOrders","ADD_PURCHASE_ORDER_COMMENT","transformCart","cartItems","transformCustomerOrder","orderData","transformMoney","money","transformCoupon","coupon","transformPaymentMethod","payment","transformOrderItem","transformShipmentTracking","tracking","transformShipmentComment","transformShipmentItem","transformShipment","shipment","transformCustomerInfo","customerInfo","transformOrderDiscount","discount","transformOrderTotal","total","transformOrderData","transformPurchaseOrderApprovalRuleMetadata","metadata","transformCompanyRolePermission","permission","transformCompanyRole","role","availableAppliesTo","availableRequiresApprovalFrom","transformPurchaseOrderApprovalRule","approvalRule","transformCondition","condition","transformPurchaseOrderComment","addPurchaseOrderComment","ADD_PURCHASE_ORDER_ITEMS_TO_CART","addPurchaseOrderItemsToCart","purchaseOrderUid","cartId","replaceExistingCartItems","cartData","CREATE_PURCHASE_ORDER_APPROVAL_RULE","createPurchaseOrderApprovalRule","input","DELETE_PURCHASE_ORDER_APPROVAL_RULE","deletePurchaseOrderApprovalRule","UPDATE_PURCHASE_ORDER_APPROVAL_RULE","updatePurchaseOrderApprovalRule","GET_PURCHASE_ORDERS","isValidUrl","url","getEffectiveLocale","locale","globalLocale","getGlobalLocale","define_process_env_default","formatDate","dateString","date","effectiveLocale","toSnakeCase","obj","key","snakeKey","letter","getRange","currentPage","pageSize","maxPage","p","from","to","updateFormFieldValue","formValues","newFormValues","numericValue","validateFormFields","values","updateValidationErrors","newErrors","currentErrors","touchedFields","updatedErrors","errorKey","RULE_TYPE_OPTIONS_KEYS","CONDITION_OPERATORS_KEYS","APPLIES_TO_OPTIONS_KEYS","INITIAL_FORM_VALUES","INITIAL_FORM_STATE","REQUIRED_FIELDS_ON_SUBMIT","VALIDATION_ERROR_KEYS","createRuleTypeOptions","t","createConditionOperators","createAppliesToOptions","DEFAULT_STATUS","DEFAULT_ATTRIBUTE","DEFAULT_OPERATOR","DEFAULT_CURRENCY","DEFAULT_QUANTITY","DEFAULT_AMOUNT_VALUE","isValidAttribute","attribute","isValidOperator","operator","transformToFormValues","hasValue","cleanAndDeep","roleType","appliesTo","restAll","roleConfig","conditionConfig","amount","restCondition","newCondition","getStatusVariant","status","statusUpper","getPurchaseOrders","filter","purchaseOrdersData","totalCount","pageInfo","PLACE_ORDER_FOR_PURCHASE_ORDER","placeOrderForPurchaseOrder","PLACE_PURCHASE_ORDER","placePurchaseOrder","rawPurchaseOrder","GET_PURCHASE_ORDER_APPROVAL_RULE_METADATA","getPurchaseOrderApprovalRuleMetadata","GET_CURRENCY_INFO","currencyInfo","codeList","code","GET_PURCHASE_ORDER_APPROVAL_RULE","getPurchaseOrderApprovalRule","id","rulesData","GET_PURCHASE_ORDER_APPROVAL_RULES","DEFAULT_PAGE_INFO","getPurchaseOrderApprovalRules","PO_PERMISSIONS"],"mappings":"gMAmBO,KAAM,CACX,YAAAA,GACA,sBAAAC,GACA,yBAAAC,GACA,uBAAAC,GACA,aAAAC,EACA,UAAAC,EACF,EAAI,IAAIC,GAAA,EAAe,WAAA,ECHVC,EAAsBC,GAAiB,CAClD,MAAMC,EACJD,aAAiB,eAAgBA,GAAA,YAAAA,EAAO,QAAS,aAE7CE,GAAoBF,GAAA,YAAAA,EAAO,QAAS,kBAE1C,KAAI,CAACC,GAAgB,CAACC,GACpBC,EAAO,KAAK,uBAAwB,CAClC,OAAQ,iBACR,KAAM,UACN,MAAOH,EAAM,OAAA,CACd,EAEGA,CACR,ECnBaI,EACXC,GACG,SAWH,GATsBA,EAAO,SAAW,KASnBC,GAAAC,EAAAF,EAAO,CAAC,IAAR,YAAAE,EAAW,OAAX,YAAAD,EAAiB,QAAS,EAAG,CAChD,MAAME,EAAWH,EAAO,CAAC,EAAE,KAAKA,EAAO,CAAC,EAAE,KAAK,OAAS,CAAC,EASzD,GAP0B,CACxB,kBACA,qBACA,2BAAA,EAIoB,SAASG,CAAQ,EACrC,MAEJ,CAEA,MAAMC,EAAeJ,EAAO,IAAKK,GAAWA,EAAE,OAAO,EAAE,KAAK,GAAG,EAE/D,MAAM,MAAMD,CAAY,CAC1B,EC5BaE,GAA8C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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"}