@classytic/commerce-sdk 0.1.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.
Potentially problematic release.
This version of @classytic/commerce-sdk might be problematic. Click here for more details.
- package/LICENSE +14 -0
- package/README.md +104 -0
- package/dist/adjustment-DTSLM7AN.js +5 -0
- package/dist/adjustment-DTSLM7AN.js.map +1 -0
- package/dist/analytics/index.d.ts +27 -0
- package/dist/analytics/index.js +6 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/analytics-DMcD-o8w.d.ts +76 -0
- package/dist/api-factory-B_h4RKBm.d.ts +280 -0
- package/dist/auth/index.d.ts +39 -0
- package/dist/auth/index.js +5 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/catalog/index.d.ts +479 -0
- package/dist/catalog/index.js +9 -0
- package/dist/catalog/index.js.map +1 -0
- package/dist/chunk-4ZQK3FFN.js +40 -0
- package/dist/chunk-4ZQK3FFN.js.map +1 -0
- package/dist/chunk-5L6EXDGH.js +465 -0
- package/dist/chunk-5L6EXDGH.js.map +1 -0
- package/dist/chunk-5ZFW3FEI.js +183 -0
- package/dist/chunk-5ZFW3FEI.js.map +1 -0
- package/dist/chunk-66OQAZSL.js +94 -0
- package/dist/chunk-66OQAZSL.js.map +1 -0
- package/dist/chunk-6RYGA6MF.js +123 -0
- package/dist/chunk-6RYGA6MF.js.map +1 -0
- package/dist/chunk-B6MPVOV7.js +328 -0
- package/dist/chunk-B6MPVOV7.js.map +1 -0
- package/dist/chunk-BDA2WSJA.js +148 -0
- package/dist/chunk-BDA2WSJA.js.map +1 -0
- package/dist/chunk-EIVYT3HM.js +126 -0
- package/dist/chunk-EIVYT3HM.js.map +1 -0
- package/dist/chunk-EPQN7ZKZ.js +27 -0
- package/dist/chunk-EPQN7ZKZ.js.map +1 -0
- package/dist/chunk-FA7QFJ2G.js +177 -0
- package/dist/chunk-FA7QFJ2G.js.map +1 -0
- package/dist/chunk-I5TIKUIQ.js +261 -0
- package/dist/chunk-I5TIKUIQ.js.map +1 -0
- package/dist/chunk-ILQUH444.js +135 -0
- package/dist/chunk-ILQUH444.js.map +1 -0
- package/dist/chunk-IXMWZJLV.js +616 -0
- package/dist/chunk-IXMWZJLV.js.map +1 -0
- package/dist/chunk-KZIGRIQG.js +75 -0
- package/dist/chunk-KZIGRIQG.js.map +1 -0
- package/dist/chunk-OF5M6R2S.js +769 -0
- package/dist/chunk-OF5M6R2S.js.map +1 -0
- package/dist/chunk-PYYLHUV6.js +3 -0
- package/dist/chunk-PYYLHUV6.js.map +1 -0
- package/dist/chunk-QO5AGZFP.js +159 -0
- package/dist/chunk-QO5AGZFP.js.map +1 -0
- package/dist/chunk-QUMTBLNE.js +76 -0
- package/dist/chunk-QUMTBLNE.js.map +1 -0
- package/dist/chunk-R5Z7NYLH.js +126 -0
- package/dist/chunk-R5Z7NYLH.js.map +1 -0
- package/dist/chunk-SZYWG5IB.js +75 -0
- package/dist/chunk-SZYWG5IB.js.map +1 -0
- package/dist/chunk-U3XT35GZ.js +202 -0
- package/dist/chunk-U3XT35GZ.js.map +1 -0
- package/dist/chunk-UGELTUIZ.js +830 -0
- package/dist/chunk-UGELTUIZ.js.map +1 -0
- package/dist/chunk-VR36QVX2.js +122 -0
- package/dist/chunk-VR36QVX2.js.map +1 -0
- package/dist/chunk-WUOQK7BO.js +13 -0
- package/dist/chunk-WUOQK7BO.js.map +1 -0
- package/dist/chunk-X6PV5MHG.js +582 -0
- package/dist/chunk-X6PV5MHG.js.map +1 -0
- package/dist/chunk-ZWLMFLLH.js +534 -0
- package/dist/chunk-ZWLMFLLH.js.map +1 -0
- package/dist/content/index.d.ts +309 -0
- package/dist/content/index.js +6 -0
- package/dist/content/index.js.map +1 -0
- package/dist/core/index.d.ts +107 -0
- package/dist/core/index.js +5 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/react.d.ts +107 -0
- package/dist/core/react.js +5 -0
- package/dist/core/react.js.map +1 -0
- package/dist/coupon-CHFcw7cd.d.ts +632 -0
- package/dist/coupon-zGkvO-Xx.d.ts +129 -0
- package/dist/crud.factory-DyKaPHcU.d.ts +181 -0
- package/dist/finance/index.d.ts +81 -0
- package/dist/finance/index.js +5 -0
- package/dist/finance/index.js.map +1 -0
- package/dist/finance-BJdfKRw0.d.ts +135 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/inventory/index.d.ts +512 -0
- package/dist/inventory/index.js +16 -0
- package/dist/inventory/index.js.map +1 -0
- package/dist/inventory-DCiIZh8P.d.ts +742 -0
- package/dist/logistics/index.d.ts +226 -0
- package/dist/logistics/index.js +7 -0
- package/dist/logistics/index.js.map +1 -0
- package/dist/logistics-V8a9lUN3.d.ts +428 -0
- package/dist/media-CNLJK93J.d.ts +721 -0
- package/dist/movement-7MV3ADY5.js +5 -0
- package/dist/movement-7MV3ADY5.js.map +1 -0
- package/dist/payment-BRboLqvU.d.ts +127 -0
- package/dist/payments/index.d.ts +55 -0
- package/dist/payments/index.js +6 -0
- package/dist/payments/index.js.map +1 -0
- package/dist/platform/index.d.ts +645 -0
- package/dist/platform/index.js +8 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/pos-D1jkkFl0.d.ts +885 -0
- package/dist/product-p09zXkXB.d.ts +260 -0
- package/dist/purchase-24BGT2HA.js +5 -0
- package/dist/purchase-24BGT2HA.js.map +1 -0
- package/dist/request-652PS6VR.js +5 -0
- package/dist/request-652PS6VR.js.map +1 -0
- package/dist/sales/index.d.ts +585 -0
- package/dist/sales/index.js +9 -0
- package/dist/sales/index.js.map +1 -0
- package/dist/server.d.ts +120 -0
- package/dist/server.js +27 -0
- package/dist/server.js.map +1 -0
- package/dist/size-guide-DgjzjM5P.d.ts +554 -0
- package/dist/stock-DEApGC-w.d.ts +632 -0
- package/dist/stock-OOUW57VQ.js +5 -0
- package/dist/stock-OOUW57VQ.js.map +1 -0
- package/dist/supplier-OC6JAWV6.js +5 -0
- package/dist/supplier-OC6JAWV6.js.map +1 -0
- package/dist/transaction/index.d.ts +104 -0
- package/dist/transaction/index.js +8 -0
- package/dist/transaction/index.js.map +1 -0
- package/dist/transaction-BTmoHpWh.d.ts +428 -0
- package/dist/transaction-u5oaNuav.d.ts +84 -0
- package/dist/transfer-7SYSH3RG.js +5 -0
- package/dist/transfer-7SYSH3RG.js.map +1 -0
- package/dist/user-data-DdLjAGwO.d.ts +132 -0
- package/package.json +146 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/inventory/api/index.ts","../src/inventory/hooks/inventory.ts","../src/inventory/hooks/stock.ts","../src/inventory/hooks/purchase.ts","../src/inventory/hooks/transfer.ts","../src/inventory/hooks/adjustment.ts","../src/inventory/hooks/movement.ts","../src/inventory/hooks/request.ts","../src/inventory/hooks/supplier.ts"],"names":["useStockActions","useQueryClient","useMutation","useQuery","useMemo"],"mappings":"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","file":"chunk-IXMWZJLV.js","sourcesContent":["/**\r\n * Inventory API - Barrel Export\r\n *\r\n * Modular inventory API following Bangladesh retail flow:\r\n * - Head Office purchases stock (purchaseApi)\r\n * - Transfers distribute to sub-branches (transferApi)\r\n * - Sub-branches request stock (requestApi)\r\n * - Stock movements tracked for audit (movementApi)\r\n * - Manual corrections via adjustments (adjustmentApi)\r\n * - Supplier management (supplierApi)\r\n */\r\n\r\n// Stock Entry\r\nexport { stockApi, StockApi } from \"./stock\";\r\n\r\n// Purchases\r\nexport { purchaseApi, PurchaseApi } from \"./purchase\";\r\n\r\n// Transfers (Challan)\r\nexport { transferApi, TransferApi } from \"./transfer\";\r\n\r\n// Stock Requests\r\nexport { requestApi, RequestApi } from \"./request\";\r\n\r\n// Stock Movements (Audit)\r\nexport { movementApi, MovementApi } from \"./movement\";\r\n\r\n// Adjustments\r\nexport { adjustmentApi, AdjustmentApi } from \"./adjustment\";\r\n\r\n// Suppliers\r\nexport { supplierApi, SupplierApi } from \"./supplier\";\r\nexport type { SupplierQueryParams } from \"./supplier\";\r\n\r\n// Legacy compatibility - unified API object\r\n// (Use individual APIs for new code)\r\nexport const inventoryApis = {\r\n stock: () => import(\"./stock\").then((m) => m.stockApi),\r\n purchase: () => import(\"./purchase\").then((m) => m.purchaseApi),\r\n transfer: () => import(\"./transfer\").then((m) => m.transferApi),\r\n request: () => import(\"./request\").then((m) => m.requestApi),\r\n movement: () => import(\"./movement\").then((m) => m.movementApi),\r\n adjustment: () => import(\"./adjustment\").then((m) => m.adjustmentApi),\r\n supplier: () => import(\"./supplier\").then((m) => m.supplierApi),\r\n} as const;\r\n","\"use client\";\r\n\r\n/**\r\n * Inventory Hooks\r\n *\r\n * React hooks for inventory management with branch-specific stock.\r\n * These hooks use the POS API internally for product/stock data.\r\n */\r\n\r\nimport { useQuery, useMutation, useQueryClient } from \"@tanstack/react-query\";\r\nimport { posApi } from \"../../sales/api/pos\";\r\nimport { adjustmentApi } from \"../api/adjustment\";\r\nimport { getToastHandler } from \"../../core/react/mutation.factory\";\r\nimport type { PosProduct, PosProductsResponse, PosLookupResponse } from \"../../sales/types/pos\";\r\nimport type { CreateAdjustmentPayload, BulkAdjustmentPayload } from \"../types\";\r\n\r\n// ============================================\r\n// Query Keys\r\n// ============================================\r\n\r\nexport const INVENTORY_KEYS = {\r\n all: [\"inventory\"] as const,\r\n products: (branchId?: string) => [...INVENTORY_KEYS.all, \"products\", branchId] as const,\r\n productsList: (branchId?: string, params?: Record<string, unknown>) =>\r\n [...INVENTORY_KEYS.products(branchId), params] as const,\r\n lookup: (code: string, branchId?: string) =>\r\n [...INVENTORY_KEYS.all, \"lookup\", code, branchId] as const,\r\n};\r\n\r\n// ============================================\r\n// Types\r\n// ============================================\r\n\r\nexport interface InventoryFilters {\r\n category?: string;\r\n parentCategory?: string;\r\n search?: string;\r\n inStockOnly?: boolean;\r\n lowStockOnly?: boolean;\r\n outOfStockOnly?: boolean;\r\n after?: string;\r\n limit?: number;\r\n sort?: string;\r\n [key: string]: unknown;\r\n}\r\n\r\nexport interface InventorySummary {\r\n totalItems: number;\r\n totalQuantity: number;\r\n lowStockCount: number;\r\n outOfStockCount: number;\r\n}\r\n\r\nexport interface UseInventoryReturn {\r\n items: PosProduct[];\r\n summary: InventorySummary;\r\n branch: PosProductsResponse[\"branch\"];\r\n hasMore: boolean;\r\n nextCursor: string | null;\r\n isLoading: boolean;\r\n isFetching: boolean;\r\n error: Error | null;\r\n refetch: () => void;\r\n}\r\n\r\nexport interface UseStockActionsReturn {\r\n adjust: (data: CreateAdjustmentPayload) => Promise<unknown>;\r\n isAdjusting: boolean;\r\n setStock: (params: {\r\n productId: string;\r\n quantity: number;\r\n branchId?: string;\r\n variantSku?: string;\r\n notes?: string;\r\n }) => Promise<unknown>;\r\n isSettingStock: boolean;\r\n bulkAdjust: (data: BulkAdjustmentPayload) => Promise<unknown>;\r\n isBulkAdjusting: boolean;\r\n isLoading: boolean;\r\n}\r\n\r\ninterface QueryOptions {\r\n enabled?: boolean;\r\n}\r\n\r\n// ============================================\r\n// Hooks\r\n// ============================================\r\n\r\n/**\r\n * Hook to fetch inventory products with branch stock\r\n * Uses POS API: GET /pos/products\r\n *\r\n * @param token - Auth token\r\n * @param branchId - Branch to get stock for\r\n * @param filters - Product filters\r\n * @param options - Query options\r\n *\r\n * @example\r\n * ```tsx\r\n * function InventoryTable({ branchId }) {\r\n * const { items, summary, isLoading } = useInventory(token, branchId, {\r\n * category: 'electronics',\r\n * lowStockOnly: true,\r\n * });\r\n *\r\n * return (\r\n * <Table data={items} />\r\n * );\r\n * }\r\n * ```\r\n */\r\nexport function useInventory(\r\n token: string,\r\n branchId: string | undefined,\r\n filters: InventoryFilters = {},\r\n options: QueryOptions = {}\r\n): UseInventoryReturn {\r\n const queryKey = INVENTORY_KEYS.productsList(branchId, filters);\r\n\r\n const { data, isLoading, isFetching, error, refetch } = useQuery({\r\n queryKey,\r\n queryFn: () =>\r\n posApi.getProducts({\r\n token,\r\n branchId,\r\n category: filters.category,\r\n search: filters.search,\r\n inStockOnly: filters.inStockOnly,\r\n lowStockOnly: filters.lowStockOnly,\r\n after: filters.after,\r\n limit: filters.limit || 50,\r\n sort: filters.sort || \"name\",\r\n }),\r\n enabled: !!token && options.enabled !== false,\r\n staleTime: 30 * 1000, // 30 seconds - inventory changes frequently\r\n refetchOnWindowFocus: true,\r\n });\r\n\r\n return {\r\n items: data?.docs || [],\r\n summary: data?.summary || { totalItems: 0, totalQuantity: 0, lowStockCount: 0, outOfStockCount: 0 },\r\n branch: data?.branch || { _id: \"\", code: \"\", name: \"\" },\r\n hasMore: data?.hasMore || false,\r\n nextCursor: data?.next || null,\r\n isLoading,\r\n isFetching,\r\n error: error as Error | null,\r\n refetch,\r\n };\r\n}\r\n\r\n/**\r\n * Hook for barcode/SKU lookup\r\n *\r\n * @param token - Auth token\r\n * @param code - Barcode or SKU to lookup\r\n * @param branchId - Branch for stock info\r\n * @param options - Query options\r\n *\r\n * @example\r\n * ```tsx\r\n * function BarcodeScanner({ branchId }) {\r\n * const [code, setCode] = useState('');\r\n * const { data, isFetching } = useInventoryLookup(token, code, branchId, {\r\n * enabled: code.length >= 2,\r\n * });\r\n *\r\n * return <Input value={code} onChange={e => setCode(e.target.value)} />;\r\n * }\r\n * ```\r\n */\r\nexport function useInventoryLookup(\r\n token: string,\r\n code: string,\r\n branchId?: string,\r\n options: QueryOptions = {}\r\n) {\r\n return useQuery<PosLookupResponse>({\r\n queryKey: INVENTORY_KEYS.lookup(code, branchId),\r\n queryFn: () => posApi.lookup({ token, code, branchId }),\r\n enabled: !!token && !!code && code.length >= 2 && options.enabled !== false,\r\n staleTime: 10 * 1000, // 10 seconds\r\n retry: false,\r\n });\r\n}\r\n\r\n/**\r\n * Hook for stock adjustment actions\r\n *\r\n * @param token - Auth token\r\n *\r\n * @example\r\n * ```tsx\r\n * function StockAdjuster({ product, branchId }) {\r\n * const { adjust, isAdjusting } = useStockActions(token);\r\n *\r\n * const handleAdjust = async (quantity: number) => {\r\n * await adjust({\r\n * productId: product._id,\r\n * quantity,\r\n * mode: 'set',\r\n * branchId,\r\n * });\r\n * };\r\n *\r\n * return <Button onClick={() => handleAdjust(10)} disabled={isAdjusting}>Set Stock</Button>;\r\n * }\r\n * ```\r\n */\r\nexport function useStockActions(token: string): UseStockActionsReturn {\r\n const queryClient = useQueryClient();\r\n const toast = getToastHandler();\r\n\r\n /**\r\n * Invalidate all queries affected by stock adjustments.\r\n */\r\n const invalidateStockQueries = (branchId?: string) => {\r\n queryClient.invalidateQueries({\r\n queryKey: INVENTORY_KEYS.products(branchId),\r\n });\r\n // Also invalidate POS queries for consistency\r\n queryClient.invalidateQueries({\r\n queryKey: [\"pos\", \"products\", branchId],\r\n });\r\n };\r\n\r\n // Single item adjustment\r\n const adjustMutation = useMutation({\r\n mutationFn: (data: CreateAdjustmentPayload) =>\r\n adjustmentApi.create({ token, data }),\r\n onSuccess: (_, variables) => {\r\n invalidateStockQueries(variables.branchId);\r\n toast.success(\"Stock adjusted successfully\");\r\n },\r\n onError: (error: Error) => {\r\n toast.error(error.message || \"Failed to adjust stock\");\r\n },\r\n });\r\n\r\n // Set stock directly\r\n const setStockMutation = useMutation({\r\n mutationFn: ({\r\n productId,\r\n quantity,\r\n branchId,\r\n variantSku,\r\n notes,\r\n }: {\r\n productId: string;\r\n quantity: number;\r\n branchId?: string;\r\n variantSku?: string;\r\n notes?: string;\r\n }) =>\r\n adjustmentApi.create({\r\n token,\r\n data: {\r\n productId,\r\n quantity,\r\n branchId,\r\n variantSku,\r\n mode: \"set\",\r\n notes,\r\n },\r\n }),\r\n onSuccess: (_, variables) => {\r\n invalidateStockQueries(variables.branchId);\r\n toast.success(\"Stock level updated\");\r\n },\r\n onError: (error: Error) => {\r\n toast.error(error.message || \"Failed to update stock\");\r\n },\r\n });\r\n\r\n // Bulk adjustment\r\n const bulkAdjustMutation = useMutation({\r\n mutationFn: (data: BulkAdjustmentPayload) =>\r\n adjustmentApi.create({\r\n token,\r\n data: {\r\n adjustments: data.adjustments,\r\n branchId: data.branchId,\r\n reason: data.reason,\r\n },\r\n }),\r\n onSuccess: (_, variables) => {\r\n invalidateStockQueries(variables.branchId);\r\n toast.success(\"Bulk adjustment completed\");\r\n },\r\n onError: (error: Error) => {\r\n toast.error(error.message || \"Failed to bulk adjust stock\");\r\n },\r\n });\r\n\r\n return {\r\n // Adjust stock (add/remove/set)\r\n adjust: adjustMutation.mutateAsync,\r\n isAdjusting: adjustMutation.isPending,\r\n\r\n // Set stock directly\r\n setStock: setStockMutation.mutateAsync,\r\n isSettingStock: setStockMutation.isPending,\r\n\r\n // Bulk operations\r\n bulkAdjust: bulkAdjustMutation.mutateAsync,\r\n isBulkAdjusting: bulkAdjustMutation.isPending,\r\n\r\n // Combined loading state\r\n isLoading: adjustMutation.isPending || setStockMutation.isPending || bulkAdjustMutation.isPending,\r\n };\r\n}\r\n\r\n/**\r\n * Helper to determine stock status\r\n */\r\nexport function getStockStatus(quantity: number, lowThreshold = 10): \"out\" | \"low\" | \"ok\" {\r\n if (quantity === 0) return \"out\";\r\n if (quantity <= lowThreshold) return \"low\";\r\n return \"ok\";\r\n}\r\n\r\n/**\r\n * Helper to format stock status badge props\r\n */\r\nexport function getStockStatusBadge(status: \"out\" | \"low\" | \"ok\") {\r\n switch (status) {\r\n case \"out\":\r\n return { variant: \"destructive\" as const, label: \"Out of Stock\" };\r\n case \"low\":\r\n return { variant: \"warning\" as const, label: \"Low Stock\" };\r\n case \"ok\":\r\n return { variant: \"success\" as const, label: \"In Stock\" };\r\n }\r\n}\r\n","\"use client\";\n\n/**\n * Stock Hooks\n *\n * React hooks for stock entry operations using the factory pattern.\n */\n\nimport { createCrudHooks, type CrudApi } from \"../../core/react\";\nimport { stockApi } from \"../api/stock\";\nimport type { StockEntry } from \"../types\";\n\n// Type helper for API compatibility\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyApi = CrudApi<any, any, any>;\n\n/**\n * Stock hooks using createCrudHooks factory\n *\n * Provides:\n * - useStock: List stock entries with filtering/pagination\n * - useStockDetail: Get single stock entry\n * - useStockActions: CRUD mutations (limited for stock)\n * - useStockNavigation: Navigation between stock entries\n */\nexport const stockHooks = createCrudHooks<StockEntry, Partial<StockEntry>, Partial<StockEntry>>({\n api: stockApi as AnyApi,\n entityKey: \"stock\",\n singular: \"Stock Entry\",\n plural: \"Stock Entries\",\n defaults: {\n staleTime: 2 * 60 * 1000, // 2 minutes\n },\n});\n\nexport const {\n KEYS: STOCK_KEYS,\n useList: useStock,\n useDetail: useStockDetail,\n useActions: useStockActions,\n useNavigation: useStockNavigation,\n} = stockHooks;\n","\"use client\";\n\n/**\n * Purchase Hooks\n *\n * React hooks for purchase CRUD operations using the factory pattern.\n */\n\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport { createCrudHooks, type CrudApi } from \"../../core/react\";\nimport { getToastHandler } from \"../../core/react/mutation.factory\";\nimport { purchaseApi } from \"../api/purchase\";\nimport type { Purchase, CreatePurchasePayload, UpdatePurchasePayload } from \"../types\";\n\n// Type helper for API compatibility\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyApi = CrudApi<any, any, any>;\n\n/**\n * Purchase hooks using createCrudHooks factory\n *\n * Provides:\n * - usePurchases: List purchases with filtering/pagination\n * - usePurchaseDetail: Get single purchase\n * - usePurchaseActions: Create, update, delete mutations (basic CRUD)\n * - usePurchaseNavigation: Navigation between purchases\n */\nexport const purchaseHooks = createCrudHooks<Purchase, CreatePurchasePayload, UpdatePurchasePayload>({\n api: purchaseApi as AnyApi,\n entityKey: \"purchases\",\n singular: \"Purchase\",\n plural: \"Purchases\",\n});\n\nexport const {\n KEYS: PURCHASE_KEYS,\n useList: usePurchases,\n useDetail: usePurchaseDetail,\n useActions: usePurchaseActions,\n useNavigation: usePurchaseNavigation,\n} = purchaseHooks;\n\n// ============================================\n// Purchase State Actions Hook (receive, pay, cancel)\n// ============================================\n\nexport interface UsePurchaseStateActionsReturn {\n receive: ReturnType<typeof useMutation<Purchase, Error, string>>;\n pay: ReturnType<typeof useMutation<Purchase, Error, {\n id: string;\n amount: number;\n method: string;\n reference?: string;\n }>>;\n cancel: ReturnType<typeof useMutation<Purchase, Error, { id: string; reason?: string }>>;\n isReceiving: boolean;\n isPaying: boolean;\n isCancelling: boolean;\n isLoading: boolean;\n}\n\n/**\n * Hook for purchase state actions (receive, pay, cancel)\n *\n * @param token - Auth token\n * @returns Purchase state action mutations\n *\n * @example\n * ```tsx\n * const { receive, pay, cancel, isReceiving } = usePurchaseStateActions(token);\n *\n * // Receive a purchase (adds stock)\n * await receive.mutateAsync(purchaseId);\n *\n * // Record payment\n * await pay.mutateAsync({ id: purchaseId, amount: 1000, method: 'cash' });\n *\n * // Cancel purchase\n * await cancel.mutateAsync({ id: purchaseId, reason: 'Duplicate entry' });\n * ```\n */\nexport function usePurchaseStateActions(token: string): UsePurchaseStateActionsReturn {\n const queryClient = useQueryClient();\n const toast = getToastHandler();\n\n const invalidateAll = () => {\n queryClient.invalidateQueries({ queryKey: PURCHASE_KEYS.all });\n // Also invalidate inventory queries that might be affected\n queryClient.invalidateQueries({ queryKey: [\"inventory\"] });\n queryClient.invalidateQueries({ queryKey: [\"stock\"] });\n };\n\n const receive = useMutation<Purchase, Error, string>({\n mutationFn: async (id: string) => {\n const response = await purchaseApi.receive({ token, id });\n return response.data as Purchase;\n },\n onSuccess: () => {\n invalidateAll();\n toast.success(\"Purchase received - stock added\");\n },\n onError: (err: Error) => {\n toast.error(err.message || \"Failed to receive purchase\");\n },\n });\n\n const pay = useMutation<Purchase, Error, {\n id: string;\n amount: number;\n method: string;\n reference?: string;\n }>({\n mutationFn: async ({ id, amount, method, reference }) => {\n const response = await purchaseApi.pay({ token, id, amount, method, reference });\n return response.data as Purchase;\n },\n onSuccess: () => {\n invalidateAll();\n toast.success(\"Payment recorded\");\n },\n onError: (err: Error) => {\n toast.error(err.message || \"Failed to record payment\");\n },\n });\n\n const cancel = useMutation<Purchase, Error, { id: string; reason?: string }>({\n mutationFn: async ({ id, reason }) => {\n const response = await purchaseApi.cancel({ token, id, reason });\n return response.data as Purchase;\n },\n onSuccess: () => {\n invalidateAll();\n toast.success(\"Purchase cancelled\");\n },\n onError: (err: Error) => {\n toast.error(err.message || \"Failed to cancel purchase\");\n },\n });\n\n return {\n receive,\n pay,\n cancel,\n isReceiving: receive.isPending,\n isPaying: pay.isPending,\n isCancelling: cancel.isPending,\n isLoading: receive.isPending || pay.isPending || cancel.isPending,\n };\n}\n","\"use client\";\n\n/**\n * Transfer Hooks\n *\n * React hooks for inventory transfer (challan) operations using the factory pattern.\n */\n\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { createCrudHooks, type CrudApi } from \"../../core/react\";\nimport { getToastHandler } from \"../../core/react/mutation.factory\";\nimport { transferApi } from \"../api/transfer\";\nimport type { Transfer, CreateTransferPayload, UpdateTransferPayload, DispatchTransferPayload, ReceiveTransferPayload, TransferStats } from \"../types\";\n\n// Type helper for API compatibility\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyApi = CrudApi<any, any, any>;\n\n/**\n * Transfer hooks using createCrudHooks factory\n *\n * Provides:\n * - useTransfers: List transfers with filtering/pagination\n * - useTransferDetail: Get single transfer\n * - useTransferActions: Create, update, delete mutations (basic CRUD)\n * - useTransferNavigation: Navigation between transfers\n */\nexport const transferHooks = createCrudHooks<Transfer, CreateTransferPayload, UpdateTransferPayload>({\n api: transferApi as AnyApi,\n entityKey: \"transfers\",\n singular: \"Transfer\",\n plural: \"Transfers\",\n});\n\nexport const {\n KEYS: TRANSFER_KEYS,\n useList: useTransfers,\n useDetail: useTransferDetail,\n useActions: useTransferActions,\n useNavigation: useTransferNavigation,\n} = transferHooks;\n\n// ============================================\n// Transfer State Actions Hook (approve, dispatch, inTransit, receive, cancel)\n// ============================================\n\nexport interface UseTransferStateActionsReturn {\n approve: (id: string) => Promise<Transfer>;\n isApproving: boolean;\n dispatch: (params: { id: string; data?: DispatchTransferPayload }) => Promise<Transfer>;\n isDispatching: boolean;\n inTransit: (id: string) => Promise<Transfer>;\n isMarkingInTransit: boolean;\n receive: (params: { id: string; data?: ReceiveTransferPayload }) => Promise<Transfer>;\n isReceiving: boolean;\n cancel: (params: { id: string; reason?: string }) => Promise<Transfer>;\n isCancelling: boolean;\n isLoading: boolean;\n}\n\n/**\n * Hook for transfer state actions (approve, dispatch, inTransit, receive, cancel)\n *\n * @param token - Auth token\n * @returns Transfer state action functions\n *\n * @example\n * ```tsx\n * const { approve, dispatch, receive, cancel, isApproving } = useTransferStateActions(token);\n *\n * // Approve a transfer\n * await approve(transferId);\n *\n * // Dispatch with transport details\n * await dispatch({ id: transferId, data: { transport: { vehicleNumber: 'ABC123' } } });\n *\n * // Receive a transfer\n * await receive({ id: transferId, data: {} });\n *\n * // Cancel transfer\n * await cancel({ id: transferId, reason: 'Duplicate entry' });\n * ```\n */\nexport function useTransferStateActions(token: string): UseTransferStateActionsReturn {\n const queryClient = useQueryClient();\n const toast = getToastHandler();\n\n const invalidateAll = () => {\n queryClient.invalidateQueries({ queryKey: TRANSFER_KEYS.all });\n queryClient.invalidateQueries({ queryKey: [\"inventory\"] });\n queryClient.invalidateQueries({ queryKey: [\"stock\"] });\n };\n\n const approveMutation = useMutation<Transfer, Error, string>({\n mutationFn: async (id: string) => {\n const response = await transferApi.approve({ token, id });\n return response.data as Transfer;\n },\n onSuccess: () => {\n invalidateAll();\n toast.success(\"Transfer approved\");\n },\n onError: (err: Error) => {\n toast.error(err.message || \"Failed to approve transfer\");\n },\n });\n\n const dispatchMutation = useMutation<Transfer, Error, { id: string; data?: DispatchTransferPayload }>({\n mutationFn: async ({ id, data }) => {\n const response = await transferApi.dispatch({ token, id, data });\n return response.data as Transfer;\n },\n onSuccess: () => {\n invalidateAll();\n toast.success(\"Transfer dispatched - stock deducted\");\n },\n onError: (err: Error) => {\n toast.error(err.message || \"Failed to dispatch transfer\");\n },\n });\n\n const inTransitMutation = useMutation<Transfer, Error, string>({\n mutationFn: async (id: string) => {\n const response = await transferApi.markInTransit({ token, id });\n return response.data as Transfer;\n },\n onSuccess: () => {\n invalidateAll();\n toast.success(\"Transfer marked in transit\");\n },\n onError: (err: Error) => {\n toast.error(err.message || \"Failed to mark transfer in transit\");\n },\n });\n\n const receiveMutation = useMutation<Transfer, Error, { id: string; data?: ReceiveTransferPayload }>({\n mutationFn: async ({ id, data }) => {\n const response = await transferApi.receive({ token, id, data });\n return response.data as Transfer;\n },\n onSuccess: () => {\n invalidateAll();\n toast.success(\"Transfer received - stock added\");\n },\n onError: (err: Error) => {\n toast.error(err.message || \"Failed to receive transfer\");\n },\n });\n\n const cancelMutation = useMutation<Transfer, Error, { id: string; reason?: string }>({\n mutationFn: async ({ id, reason }) => {\n const response = await transferApi.cancel({ token, id, reason });\n return response.data as Transfer;\n },\n onSuccess: () => {\n invalidateAll();\n toast.success(\"Transfer cancelled\");\n },\n onError: (err: Error) => {\n toast.error(err.message || \"Failed to cancel transfer\");\n },\n });\n\n return {\n approve: async (id) => {\n return approveMutation.mutateAsync(id);\n },\n isApproving: approveMutation.isPending,\n dispatch: async (params) => {\n return dispatchMutation.mutateAsync(params);\n },\n isDispatching: dispatchMutation.isPending,\n inTransit: async (id) => {\n return inTransitMutation.mutateAsync(id);\n },\n isMarkingInTransit: inTransitMutation.isPending,\n receive: async (params) => {\n return receiveMutation.mutateAsync(params);\n },\n isReceiving: receiveMutation.isPending,\n cancel: async (params) => {\n return cancelMutation.mutateAsync(params);\n },\n isCancelling: cancelMutation.isPending,\n isLoading:\n approveMutation.isPending ||\n dispatchMutation.isPending ||\n inTransitMutation.isPending ||\n receiveMutation.isPending ||\n cancelMutation.isPending,\n };\n}\n\n// ============================================\n// Transfer Stats Hook\n// ============================================\n\n// Query keys for transfer stats\nexport const TRANSFER_STATS_KEYS = {\n all: [\"transfers\", \"stats\"] as const,\n byBranch: (branchId?: string) => [\"transfers\", \"stats\", branchId] as const,\n};\n\n/**\n * Hook to fetch transfer statistics\n *\n * @param token - Auth token\n * @param branchId - Optional branch filter\n * @param options - React Query options\n *\n * @example\n * ```tsx\n * const { data: stats, isLoading } = useTransferStats(token, branchId);\n * ```\n */\nexport function useTransferStats(\n token: string,\n branchId?: string,\n options: { enabled?: boolean } = {}\n) {\n return useQuery({\n queryKey: TRANSFER_STATS_KEYS.byBranch(branchId),\n queryFn: () => transferApi.stats({ token, params: branchId ? { branchId } : {} }),\n enabled: !!token && options.enabled !== false,\n staleTime: 30 * 1000, // 30 seconds\n select: (data) => data?.data as TransferStats,\n });\n}\n","\"use client\";\n\n/**\n * Adjustment Hooks\n *\n * React hooks for stock adjustment operations using the factory pattern.\n */\n\nimport { createCrudHooks, type CrudApi } from \"../../core/react\";\nimport { adjustmentApi } from \"../api/adjustment\";\nimport type { AdjustStockResult, CreateAdjustmentPayload } from \"../types\";\n\n// Type helper for API compatibility\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyApi = CrudApi<any, any, any>;\n\n/**\n * Adjustment hooks using createCrudHooks factory\n *\n * Provides:\n * - useAdjustments: List adjustments with filtering/pagination\n * - useAdjustmentDetail: Get single adjustment\n * - useAdjustmentActions: Create mutations\n * - useAdjustmentNavigation: Navigation between adjustments\n */\nexport const adjustmentHooks = createCrudHooks<AdjustStockResult, CreateAdjustmentPayload, Partial<CreateAdjustmentPayload>>({\n api: adjustmentApi as AnyApi,\n entityKey: \"adjustments\",\n singular: \"Adjustment\",\n plural: \"Adjustments\",\n});\n\nexport const {\n KEYS: ADJUSTMENT_KEYS,\n useList: useAdjustments,\n useDetail: useAdjustmentDetail,\n useActions: useAdjustmentActions,\n useNavigation: useAdjustmentNavigation,\n} = adjustmentHooks;\n","\"use client\";\r\n\r\n/**\r\n * Movement Hooks\r\n *\r\n * React hooks for stock movement (audit trail) queries.\r\n */\r\n\r\nimport { useMemo } from \"react\";\r\nimport { useQuery } from \"@tanstack/react-query\";\r\nimport { movementApi } from \"../api/movement\";\r\nimport type { StockMovement, MovementQueryParams, LowStockItem } from \"../types\";\r\nimport type { PaginatedResponse, ApiResponse } from \"../../core/api-factory\";\r\n\r\n// ============================================\r\n// Query Keys\r\n// ============================================\r\n\r\nexport const MOVEMENT_KEYS = {\r\n all: [\"inventory\", \"movements\"] as const,\r\n list: (params?: Record<string, unknown>) => [...MOVEMENT_KEYS.all, \"list\", params] as const,\r\n lowStock: (params?: Record<string, unknown>) => [...MOVEMENT_KEYS.all, \"low-stock\", params] as const,\r\n};\r\n\r\n// ============================================\r\n// Types\r\n// ============================================\r\n\r\ninterface QueryOptions {\r\n enabled?: boolean;\r\n staleTime?: number;\r\n}\r\n\r\ninterface PaginationData {\r\n page: number;\r\n limit: number;\r\n total: number;\r\n pages: number;\r\n hasNext: boolean;\r\n hasPrev: boolean;\r\n}\r\n\r\nexport interface UseMovementsReturn {\r\n movements: StockMovement[];\r\n pagination: PaginationData | null;\r\n isLoading: boolean;\r\n isFetching: boolean;\r\n error: Error | null;\r\n refetch: () => void;\r\n}\r\n\r\n// ============================================\r\n// Movement Hooks\r\n// ============================================\r\n\r\n/**\r\n * Fetch stock movements (audit trail)\r\n *\r\n * @param token - Auth token\r\n * @param params - Query parameters (productId, branchId, type, dates, etc.)\r\n * @param options - Query options\r\n *\r\n * @example\r\n * ```tsx\r\n * function MovementHistory({ productId }) {\r\n * const { movements, isLoading } = useMovements(token, {\r\n * productId,\r\n * limit: 50,\r\n * });\r\n *\r\n * return <Timeline events={movements} />;\r\n * }\r\n * ```\r\n */\r\nexport function useMovements(\r\n token: string,\r\n params?: MovementQueryParams,\r\n options: QueryOptions = {}\r\n): UseMovementsReturn {\r\n const { data, isLoading, isFetching, error, refetch } = useQuery<PaginatedResponse<StockMovement>>({\r\n queryKey: MOVEMENT_KEYS.list(params as Record<string, unknown>),\r\n queryFn: () => movementApi.list({ token, params }),\r\n enabled: !!token && options.enabled !== false,\r\n staleTime: options.staleTime ?? 15 * 1000, // 15 seconds\r\n });\r\n\r\n const movements = useMemo(() => {\r\n if (!data) return [];\r\n // Handle both { docs: [...] } and { data: [...] } response formats\r\n return (data as { docs?: StockMovement[] }).docs ||\r\n (data as unknown as { data?: StockMovement[] }).data ||\r\n [];\r\n }, [data]);\r\n\r\n const pagination = useMemo(() => {\r\n if (!data) return null;\r\n const d = data as { page?: number; limit?: number; total?: number; pages?: number; hasNext?: boolean; hasPrev?: boolean };\r\n if (d.page === undefined) return null;\r\n return {\r\n page: d.page || 1,\r\n limit: d.limit || 20,\r\n total: d.total || 0,\r\n pages: d.pages || 1,\r\n hasNext: d.hasNext || false,\r\n hasPrev: d.hasPrev || false,\r\n };\r\n }, [data]);\r\n\r\n return {\r\n movements,\r\n pagination,\r\n isLoading,\r\n isFetching,\r\n error: error as Error | null,\r\n refetch,\r\n };\r\n}\r\n\r\n/**\r\n * Fetch low stock items\r\n *\r\n * @param token - Auth token\r\n * @param params - Query parameters (branchId, threshold)\r\n * @param options - Query options\r\n */\r\nexport function useLowStock(\r\n token: string,\r\n params?: { branchId?: string; threshold?: number },\r\n options: QueryOptions = {}\r\n) {\r\n return useQuery<ApiResponse<LowStockItem[]>>({\r\n queryKey: MOVEMENT_KEYS.lowStock(params),\r\n queryFn: () => movementApi.lowStock({ token, params }),\r\n enabled: !!token && options.enabled !== false,\r\n staleTime: options.staleTime ?? 60 * 1000, // 1 minute\r\n });\r\n}\r\n\r\n// ============================================\r\n// Invalidation Helpers\r\n// ============================================\r\n\r\n/**\r\n * Get all keys that should be invalidated when stock quantities change.\r\n * Use for: receive transfer, dispatch, adjustments, purchases.\r\n */\r\nexport function getStockChangeInvalidationKeys() {\r\n return [\r\n [\"inventory\"] as const, // All inventory product queries\r\n MOVEMENT_KEYS.all, // Audit trail (new movements created)\r\n ];\r\n}\r\n","\"use client\";\n\n/**\n * Stock Request Hooks\n *\n * React hooks for stock request operations.\n */\n\nimport { useMemo } from \"react\";\nimport { useQuery, useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport { requestApi } from \"../api/request\";\nimport { getToastHandler } from \"../../core/react/mutation.factory\";\nimport type { StockRequest, CreateStockRequestPayload } from \"../types\";\nimport type { PaginatedResponse, ApiResponse } from \"../../core/api-factory\";\nimport { TRANSFER_KEYS } from \"./transfer\";\n\n// ============================================\n// Query Keys\n// ============================================\n\nexport const REQUEST_KEYS = {\n all: [\"inventory\", \"requests\"] as const,\n list: (params?: Record<string, unknown>) => [...REQUEST_KEYS.all, \"list\", params] as const,\n pending: () => [...REQUEST_KEYS.all, \"pending\"] as const,\n detail: (id: string) => [...REQUEST_KEYS.all, \"detail\", id] as const,\n};\n\n// ============================================\n// Types\n// ============================================\n\ninterface QueryOptions {\n enabled?: boolean;\n staleTime?: number;\n}\n\nexport interface UseStockRequestsReturn {\n requests: StockRequest[];\n isLoading: boolean;\n isFetching: boolean;\n error: Error | null;\n refetch: () => void;\n}\n\nexport interface UseStockRequestActionsReturn {\n create: (data: CreateStockRequestPayload) => Promise<StockRequest>;\n isCreating: boolean;\n approve: (params: {\n id: string;\n items?: { productId: string; variantSku?: string; quantityApproved: number }[];\n reviewNotes?: string;\n }) => Promise<StockRequest>;\n isApproving: boolean;\n reject: (params: { id: string; reason: string }) => Promise<StockRequest>;\n isRejecting: boolean;\n fulfill: (params: {\n id: string;\n remarks?: string;\n items?: { productId: string; variantSku?: string; quantity: number; cartonNumber?: string }[];\n transport?: { vehicleNumber?: string; driverName?: string; driverPhone?: string };\n }) => Promise<StockRequest>;\n isFulfilling: boolean;\n cancel: (params: { id: string; reason?: string }) => Promise<StockRequest>;\n isCancelling: boolean;\n isLoading: boolean;\n}\n\n// ============================================\n// Stock Request Hooks\n// ============================================\n\n/**\n * Fetch stock requests\n *\n * @param token - Auth token\n * @param params - Query parameters (status, branchId, etc.)\n * @param options - Query options\n */\nexport function useStockRequests(\n token: string,\n params?: Record<string, unknown>,\n options: QueryOptions = {}\n): UseStockRequestsReturn {\n const { data, isLoading, isFetching, error, refetch } = useQuery<PaginatedResponse<StockRequest>>({\n queryKey: REQUEST_KEYS.list(params),\n queryFn: () => requestApi.list({ token, params }),\n enabled: !!token && options.enabled !== false,\n staleTime: options.staleTime ?? 15 * 1000,\n });\n\n const requests = useMemo(() => {\n if (!data) return [];\n return (data as { docs?: StockRequest[] }).docs ||\n (data as unknown as { data?: StockRequest[] }).data ||\n [];\n }, [data]);\n\n return {\n requests,\n isLoading,\n isFetching,\n error: error as Error | null,\n refetch,\n };\n}\n\n/**\n * Fetch pending stock requests\n *\n * @param token - Auth token\n * @param options - Query options\n */\nexport function usePendingStockRequests(\n token: string,\n options: QueryOptions = {}\n): UseStockRequestsReturn {\n const { data, isLoading, isFetching, error, refetch } = useQuery<PaginatedResponse<StockRequest>>({\n queryKey: REQUEST_KEYS.pending(),\n queryFn: () => requestApi.listPending({ token }),\n enabled: !!token && options.enabled !== false,\n staleTime: options.staleTime ?? 15 * 1000,\n });\n\n const requests = useMemo(() => {\n if (!data) return [];\n return (data as { docs?: StockRequest[] }).docs ||\n (data as unknown as { data?: StockRequest[] }).data ||\n [];\n }, [data]);\n\n return {\n requests,\n isLoading,\n isFetching,\n error: error as Error | null,\n refetch,\n };\n}\n\n/**\n * Stock request detail\n *\n * @param token - Auth token\n * @param id - Request ID\n * @param options - Query options\n */\nexport function useStockRequestDetail(\n token: string,\n id: string | null,\n options: QueryOptions = {}\n) {\n return useQuery<ApiResponse<StockRequest>>({\n queryKey: REQUEST_KEYS.detail(id || \"\"),\n queryFn: () => requestApi.getById({ token, id: id! }),\n enabled: !!token && !!id && options.enabled !== false,\n staleTime: options.staleTime ?? 30 * 1000,\n });\n}\n\n/**\n * Stock request actions (create, approve, reject, fulfill, cancel)\n *\n * @param token - Auth token\n *\n * @example\n * ```tsx\n * function RequestActions({ request }) {\n * const { approve, reject, fulfill, isLoading } = useStockRequestActions(token);\n *\n * return (\n * <>\n * <Button onClick={() => approve({ id: request._id })}>Approve</Button>\n * <Button onClick={() => reject({ id: request._id, reason: 'Out of stock' })}>Reject</Button>\n * </>\n * );\n * }\n * ```\n */\nexport function useStockRequestActions(token: string): UseStockRequestActionsReturn {\n const queryClient = useQueryClient();\n const toast = getToastHandler();\n\n const createMutation = useMutation({\n mutationFn: (data: CreateStockRequestPayload) => requestApi.create({ token, data }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: REQUEST_KEYS.all });\n toast.success(\"Stock request created\");\n },\n onError: (err: Error) => toast.error(err.message || \"Failed to create request\"),\n });\n\n const approveMutation = useMutation({\n mutationFn: ({\n id,\n items,\n reviewNotes,\n }: {\n id: string;\n items?: { productId: string; variantSku?: string; quantityApproved: number }[];\n reviewNotes?: string;\n }) => requestApi.approve({ token, id, items, reviewNotes }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: REQUEST_KEYS.all });\n toast.success(\"Request approved\");\n },\n onError: (err: Error) => toast.error(err.message || \"Failed to approve request\"),\n });\n\n const rejectMutation = useMutation({\n mutationFn: ({ id, reason }: { id: string; reason: string }) =>\n requestApi.reject({ token, id, reason }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: REQUEST_KEYS.all });\n toast.success(\"Request rejected\");\n },\n onError: (err: Error) => toast.error(err.message || \"Failed to reject request\"),\n });\n\n const fulfillMutation = useMutation({\n mutationFn: ({\n id,\n remarks,\n items,\n transport,\n }: {\n id: string;\n remarks?: string;\n items?: { productId: string; variantSku?: string; quantity: number; cartonNumber?: string }[];\n transport?: { vehicleNumber?: string; driverName?: string; driverPhone?: string };\n }) =>\n requestApi.fulfill({\n token,\n id,\n remarks,\n items,\n transport,\n documentType: \"delivery_challan\",\n }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: REQUEST_KEYS.all });\n queryClient.invalidateQueries({ queryKey: TRANSFER_KEYS.all });\n toast.success(\"Request fulfilled (transfer created)\");\n },\n onError: (err: Error) => toast.error(err.message || \"Failed to fulfill request\"),\n });\n\n const cancelMutation = useMutation({\n mutationFn: ({ id, reason }: { id: string; reason?: string }) =>\n requestApi.cancel({ token, id, reason }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: REQUEST_KEYS.all });\n toast.success(\"Request cancelled\");\n },\n onError: (err: Error) => toast.error(err.message || \"Failed to cancel request\"),\n });\n\n return {\n create: async (data) => {\n const result = await createMutation.mutateAsync(data);\n return result.data as StockRequest;\n },\n isCreating: createMutation.isPending,\n approve: async (params) => {\n const result = await approveMutation.mutateAsync(params);\n return result.data as StockRequest;\n },\n isApproving: approveMutation.isPending,\n reject: async (params) => {\n const result = await rejectMutation.mutateAsync(params);\n return result.data as StockRequest;\n },\n isRejecting: rejectMutation.isPending,\n fulfill: async (params) => {\n const result = await fulfillMutation.mutateAsync(params);\n return result.data as StockRequest;\n },\n isFulfilling: fulfillMutation.isPending,\n cancel: async (params) => {\n const result = await cancelMutation.mutateAsync(params);\n return result.data as StockRequest;\n },\n isCancelling: cancelMutation.isPending,\n isLoading:\n createMutation.isPending ||\n approveMutation.isPending ||\n rejectMutation.isPending ||\n fulfillMutation.isPending ||\n cancelMutation.isPending,\n };\n}\n\n// ============================================\n// Invalidation Helpers\n// ============================================\n\n/**\n * Get all keys that should be invalidated when a transfer state changes.\n * Use for: approve, dispatch, receive, cancel.\n */\nexport function getTransferStateInvalidationKeys() {\n return [\n TRANSFER_KEYS.all, // Transfer list and details\n REQUEST_KEYS.all, // If transfer was from request fulfillment\n ];\n}\n","\"use client\";\n\n/**\n * Supplier Hooks\n *\n * React hooks for supplier CRUD operations using the factory pattern.\n */\n\nimport { createCrudHooks, type CrudApi } from \"../../core/react\";\nimport { supplierApi } from \"../api/supplier\";\nimport type { Supplier, SupplierCreatePayload, SupplierUpdatePayload } from \"../types\";\n\n// Type helper for API compatibility\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyApi = CrudApi<any, any, any>;\n\n/**\n * Supplier hooks using createCrudHooks factory\n *\n * Provides:\n * - useSuppliers: List suppliers with filtering/pagination\n * - useSupplierDetail: Get single supplier\n * - useSupplierActions: Create, update, delete mutations\n * - useSupplierNavigation: Navigation between suppliers\n */\nexport const supplierHooks = createCrudHooks<Supplier, SupplierCreatePayload, SupplierUpdatePayload>({\n api: supplierApi as AnyApi,\n entityKey: \"suppliers\",\n singular: \"Supplier\",\n plural: \"Suppliers\",\n});\n\nexport const {\n KEYS: SUPPLIER_KEYS,\n useList: useSuppliers,\n useDetail: useSupplierDetail,\n useActions: useSupplierActions,\n useNavigation: useSupplierNavigation,\n} = supplierHooks;\n"]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { BaseApi } from './chunk-I5TIKUIQ.js';
|
|
2
|
+
import { handleApiRequest } from './chunk-VR36QVX2.js';
|
|
3
|
+
|
|
4
|
+
// src/inventory/api/stock.ts
|
|
5
|
+
var StockApi = class extends BaseApi {
|
|
6
|
+
constructor(config = {}) {
|
|
7
|
+
super("inventory", config);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* List stock entries
|
|
11
|
+
* GET /inventory
|
|
12
|
+
*/
|
|
13
|
+
async list({
|
|
14
|
+
token,
|
|
15
|
+
params = {},
|
|
16
|
+
options = {}
|
|
17
|
+
}) {
|
|
18
|
+
const processedParams = this.prepareParams(params);
|
|
19
|
+
const queryString = this.createQueryString(processedParams);
|
|
20
|
+
return handleApiRequest("GET", `${this.baseUrl}?${queryString}`, {
|
|
21
|
+
token,
|
|
22
|
+
cache: this.config.cache,
|
|
23
|
+
...options
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get stock entry by ID
|
|
28
|
+
* GET /inventory/:id
|
|
29
|
+
*/
|
|
30
|
+
async getById({
|
|
31
|
+
token,
|
|
32
|
+
id,
|
|
33
|
+
options = {}
|
|
34
|
+
}) {
|
|
35
|
+
if (!id) {
|
|
36
|
+
throw new Error("Stock entry ID is required");
|
|
37
|
+
}
|
|
38
|
+
return handleApiRequest("GET", `${this.baseUrl}/${id}`, {
|
|
39
|
+
token,
|
|
40
|
+
cache: this.config.cache,
|
|
41
|
+
...options
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get stock for a specific product
|
|
46
|
+
* GET /inventory?productId=<id>
|
|
47
|
+
*/
|
|
48
|
+
async getByProduct({
|
|
49
|
+
token,
|
|
50
|
+
productId,
|
|
51
|
+
branchId,
|
|
52
|
+
options = {}
|
|
53
|
+
}) {
|
|
54
|
+
const params = { productId };
|
|
55
|
+
if (branchId) params.branchId = branchId;
|
|
56
|
+
return this.list({ token, params, options });
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get stock for a specific branch
|
|
60
|
+
* GET /inventory?branchId=<id>
|
|
61
|
+
*/
|
|
62
|
+
async getByBranch({
|
|
63
|
+
token,
|
|
64
|
+
branchId,
|
|
65
|
+
params = {},
|
|
66
|
+
options = {}
|
|
67
|
+
}) {
|
|
68
|
+
return this.list({ token, params: { ...params, branchId }, options });
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
var stockApi = new StockApi();
|
|
72
|
+
|
|
73
|
+
export { StockApi, stockApi };
|
|
74
|
+
//# sourceMappingURL=chunk-KZIGRIQG.js.map
|
|
75
|
+
//# sourceMappingURL=chunk-KZIGRIQG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/inventory/api/stock.ts"],"names":[],"mappings":";;;;AAaA,IAAM,QAAA,GAAN,cAAuB,OAAA,CAAoB;AAAA,EACzC,WAAA,CAAY,MAAA,GAAS,EAAC,EAAG;AACvB,IAAA,KAAA,CAAM,aAAa,MAAM,CAAA;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,IAAA,CAAK;AAAA,IACT,KAAA;AAAA,IACA,SAAS,EAAC;AAAA,IACV,UAAU;AAAC,GACb,EAI2C;AACzC,IAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,aAAA,CAAc,MAAM,CAAA;AACjD,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,iBAAA,CAAkB,eAAe,CAAA;AAE1D,IAAA,OAAO,iBAAiB,KAAA,EAAO,CAAA,EAAG,KAAK,OAAO,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,EAAI;AAAA,MAC/D,KAAA;AAAA,MACA,KAAA,EAAO,KAAK,MAAA,CAAO,KAAA;AAAA,MACnB,GAAG;AAAA,KACJ,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,OAAA,CAAQ;AAAA,IACZ,KAAA;AAAA,IACA,EAAA;AAAA,IACA,UAAU;AAAC,GACb,EAIqC;AACnC,IAAA,IAAI,CAAC,EAAA,EAAI;AACP,MAAA,MAAM,IAAI,MAAM,4BAA4B,CAAA;AAAA,IAC9C;AAEA,IAAA,OAAO,iBAAiB,KAAA,EAAO,CAAA,EAAG,KAAK,OAAO,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI;AAAA,MACtD,KAAA;AAAA,MACA,KAAA,EAAO,KAAK,MAAA,CAAO,KAAA;AAAA,MACnB,GAAG;AAAA,KACJ,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,YAAA,CAAa;AAAA,IACjB,KAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAU;AAAC,GACb,EAK2C;AACzC,IAAA,MAAM,MAAA,GAAkC,EAAE,SAAA,EAAU;AACpD,IAAA,IAAI,QAAA,SAAiB,QAAA,GAAW,QAAA;AAEhC,IAAA,OAAO,KAAK,IAAA,CAAK,EAAE,KAAA,EAAO,MAAA,EAAQ,SAAS,CAAA;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,WAAA,CAAY;AAAA,IAChB,KAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAS,EAAC;AAAA,IACV,UAAU;AAAC,GACb,EAK2C;AACzC,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,EAAE,KAAA,EAAO,MAAA,EAAQ,EAAE,GAAG,MAAA,EAAQ,QAAA,EAAS,EAAG,OAAA,EAAS,CAAA;AAAA,EACtE;AACF;AAEO,IAAM,QAAA,GAAW,IAAI,QAAA","file":"chunk-KZIGRIQG.js","sourcesContent":["/**\r\n * Stock API - Stock Entry Management\r\n *\r\n * Provides access to stock entry records.\r\n * Stock entries track quantity per product/variant/branch combination.\r\n */\r\n\r\nimport { BaseApi, type ApiResponse, type PaginatedResponse, type RequestOptions } from \"../../core/api-factory\";\r\nimport { handleApiRequest } from \"../../core/api-handler\";\r\nimport type { StockEntry } from \"../types\";\r\n\r\ntype FetchOptions = Omit<RequestOptions, \"token\" | \"organizationId\">;\r\n\r\nclass StockApi extends BaseApi<StockEntry> {\r\n constructor(config = {}) {\r\n super(\"inventory\", config);\r\n }\r\n\r\n /**\r\n * List stock entries\r\n * GET /inventory\r\n */\r\n async list({\r\n token,\r\n params = {},\r\n options = {},\r\n }: {\r\n token: string;\r\n params?: Record<string, unknown>;\r\n options?: FetchOptions;\r\n }): Promise<PaginatedResponse<StockEntry>> {\r\n const processedParams = this.prepareParams(params);\r\n const queryString = this.createQueryString(processedParams);\r\n\r\n return handleApiRequest(\"GET\", `${this.baseUrl}?${queryString}`, {\r\n token,\r\n cache: this.config.cache,\r\n ...options,\r\n });\r\n }\r\n\r\n /**\r\n * Get stock entry by ID\r\n * GET /inventory/:id\r\n */\r\n async getById({\r\n token,\r\n id,\r\n options = {},\r\n }: {\r\n token: string;\r\n id: string;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<StockEntry>> {\r\n if (!id) {\r\n throw new Error(\"Stock entry ID is required\");\r\n }\r\n\r\n return handleApiRequest(\"GET\", `${this.baseUrl}/${id}`, {\r\n token,\r\n cache: this.config.cache,\r\n ...options,\r\n });\r\n }\r\n\r\n /**\r\n * Get stock for a specific product\r\n * GET /inventory?productId=<id>\r\n */\r\n async getByProduct({\r\n token,\r\n productId,\r\n branchId,\r\n options = {},\r\n }: {\r\n token: string;\r\n productId: string;\r\n branchId?: string;\r\n options?: FetchOptions;\r\n }): Promise<PaginatedResponse<StockEntry>> {\r\n const params: Record<string, unknown> = { productId };\r\n if (branchId) params.branchId = branchId;\r\n\r\n return this.list({ token, params, options });\r\n }\r\n\r\n /**\r\n * Get stock for a specific branch\r\n * GET /inventory?branchId=<id>\r\n */\r\n async getByBranch({\r\n token,\r\n branchId,\r\n params = {},\r\n options = {},\r\n }: {\r\n token: string;\r\n branchId: string;\r\n params?: Record<string, unknown>;\r\n options?: FetchOptions;\r\n }): Promise<PaginatedResponse<StockEntry>> {\r\n return this.list({ token, params: { ...params, branchId }, options });\r\n }\r\n}\r\n\r\nexport const stockApi = new StockApi();\r\nexport { StockApi };\r\n"]}
|