@yoryoboy/bi-mcp 1.16.0 → 1.17.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 (27) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/index.js +34 -1
  3. package/dist/index.js.map +2 -2
  4. package/dist/mcp-use.json +2 -2
  5. package/dist/src/services/mercadolibre/__tests__/mercadolibre-payments.test.js +137 -0
  6. package/dist/src/services/mercadolibre/__tests__/mercadolibre-payments.test.js.map +7 -0
  7. package/dist/src/services/mercadolibre/mercadolibre-api.js +2 -2
  8. package/dist/src/services/mercadolibre/mercadolibre-api.js.map +2 -2
  9. package/dist/src/services/mercadolibre/mercadolibre-billing.js +93 -1
  10. package/dist/src/services/mercadolibre/mercadolibre-billing.js.map +2 -2
  11. package/dist/src/services/mercadolibre/mercadolibre-payments.js +60 -0
  12. package/dist/src/services/mercadolibre/mercadolibre-payments.js.map +7 -0
  13. package/dist/src/tools/mercadolibre/get-billing-provisions-by-order.js +284 -0
  14. package/dist/src/tools/mercadolibre/get-billing-provisions-by-order.js.map +7 -0
  15. package/dist/src/tools/mercadolibre/get-full-storage-charges.js +183 -0
  16. package/dist/src/tools/mercadolibre/get-full-storage-charges.js.map +7 -0
  17. package/dist/src/tools/mercadolibre/get-payment-details.js +322 -0
  18. package/dist/src/tools/mercadolibre/get-payment-details.js.map +7 -0
  19. package/dist/src/tools/mercadolibre/index.js +20 -0
  20. package/dist/src/tools/mercadolibre/index.js.map +2 -2
  21. package/dist/tests/meli/mercadolibre-billing-provisions.test.js +176 -0
  22. package/dist/tests/meli/mercadolibre-billing-provisions.test.js.map +2 -2
  23. package/dist/tests/meli/mercadolibre-payment-details.test.js +356 -0
  24. package/dist/tests/meli/mercadolibre-payment-details.test.js.map +7 -0
  25. package/dist/tests/meli/mercadolibre-payments.test.js +62 -0
  26. package/dist/tests/meli/mercadolibre-payments.test.js.map +7 -0
  27. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../tests/meli/mercadolibre-billing-provisions.test.ts"],
4
- "sourcesContent": ["import { beforeEach, describe, expect, it, vi } from \"vitest\";\n\n// \u2500\u2500 Hoisted mocks (named functions avoid hoist issues) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst { axiosGetMock, errorMock, objectMock, resolveProfileMock, formatErrorMock, apiContextMock } = vi.hoisted(() => ({\n axiosGetMock: vi.fn(),\n errorMock: vi.fn((message: string) => ({ kind: \"error\", message })),\n objectMock: vi.fn((payload: unknown) => ({ kind: \"object\", payload })),\n resolveProfileMock: vi.fn(),\n formatErrorMock: vi.fn(\n (err: unknown, fallback: string) =>\n `formatted:${fallback}:${err instanceof Error ? err.message : String(err)}`\n ),\n apiContextMock: vi.fn((profileId: string) =>\n Promise.resolve({\n sellerId: `seller-${profileId}`,\n scopes: [\"read\"],\n expiresAt: \"2026-12-31T00:00:00.000Z\",\n api: { get: axiosGetMock },\n })\n ),\n}));\n\nvi.mock(\"mcp-use/server\", () => ({\n object: objectMock,\n error: errorMock,\n}));\n\nvi.mock(\"../../src/services/mercadolibre/mercadolibre-api.js\", () => ({\n getMercadoLibreApiContext: apiContextMock,\n formatMercadoLibreError: formatErrorMock,\n}));\n\nvi.mock(\"../../src/tools/mercadolibre/profile-resolution.js\", () => ({\n resolveMercadoLibreProfileOrSelection: resolveProfileMock,\n}));\n\n// \u2500\u2500 Imports after mocks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nimport {\n getMercadoLibreBillingProvisionPage,\n getMercadoLibreBillingProvisions,\n scopeToGroupPath,\n} from \"../../src/services/mercadolibre/mercadolibre-billing.js\";\nimport {\n meliGetBillingProvisionsSummaryHandler,\n meliGetBillingProvisionsSummarySchema,\n detailsSchema,\n detailsSalesSchema,\n detailsItemsSchema,\n} from \"../../src/tools/mercadolibre/get-billing-provisions-summary.js\";\n\n// \u2500\u2500 Real MELI nested row factory \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Creates a row matching the real MELI Billing provisioning payload shape. */\nfunction nestedRow(overrides: Record<string, unknown> = {}): Record<string, unknown> {\n const chargeInfo = (overrides.charge_info as Record<string, unknown>) ?? {};\n const currencyInfo = (overrides.currency_info as Record<string, unknown>) ?? {};\n const salesInfo = overrides.sales_info as Array<Record<string, unknown>> | undefined;\n const itemsInfo = overrides.items_info as Array<Record<string, unknown>> | undefined;\n const marketplaceInfo = overrides.marketplace_info as Record<string, unknown> | undefined;\n\n return {\n charge_info: {\n detail_id: chargeInfo.detail_id ?? `id-${Math.random().toString(36).slice(2, 8)}`,\n detail_amount: chargeInfo.detail_amount ?? 0,\n detail_sub_type: chargeInfo.detail_sub_type ?? \"\",\n concept_type: chargeInfo.concept_type ?? \"\",\n transaction_detail: chargeInfo.transaction_detail ?? \"\",\n detail_type: chargeInfo.detail_type ?? \"\",\n creation_date_time: chargeInfo.creation_date_time ?? \"\",\n ...chargeInfo,\n },\n currency_info: {\n currency_id: currencyInfo.currency_id ?? \"ARS\",\n ...currencyInfo,\n },\n sales_info: salesInfo ?? [],\n items_info: itemsInfo ?? [],\n marketplace_info: marketplaceInfo ?? {},\n ...overrides,\n };\n}\n\n// \u2500\u2500 Service-level unit tests \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ndescribe(\"scopeToGroupPath\", () => {\n it(\"maps ml to ML\", () => {\n expect(scopeToGroupPath(\"ml\")).toBe(\"ML\");\n });\n it(\"maps mp to MP\", () => {\n expect(scopeToGroupPath(\"mp\")).toBe(\"MP\");\n });\n it(\"maps flex to ML/flex\", () => {\n expect(scopeToGroupPath(\"flex\")).toBe(\"ML/flex\");\n });\n it(\"maps full to ML/full\", () => {\n expect(scopeToGroupPath(\"full\")).toBe(\"ML/full\");\n });\n});\n\ndescribe(\"getMercadoLibreBillingProvisionPage\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n function mockApiResponse(results: Record<string, unknown>[] = [], overrides: Record<string, unknown> = {}) {\n const total = overrides.total ?? results.length;\n const limit = overrides.limit ?? 1000;\n const last_id = overrides.last_id ?? (results.length > 0 ? \"last-99\" : null);\n return {\n data: { results, last_id, total, limit },\n };\n }\n\n it(\"builds correct URL for flex scope\", async () => {\n axiosGetMock.mockResolvedValue(mockApiResponse());\n\n await getMercadoLibreBillingProvisionPage(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"flex\",\n documentType: \"BILL\",\n limit: 1000,\n });\n\n const call = axiosGetMock.mock.calls[0];\n expect(call[0]).toContain(\"/group/ML/flex/details\");\n expect(call[1].params.document_type).toBe(\"BILL\");\n expect(call[1].params.limit).toBe(1000);\n });\n\n it(\"builds correct URL for mp scope\", async () => {\n axiosGetMock.mockResolvedValue(mockApiResponse());\n\n await getMercadoLibreBillingProvisionPage(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"mp\",\n documentType: \"BILL\",\n limit: 1000,\n });\n\n expect(axiosGetMock.mock.calls[0][0]).toContain(\"/group/MP/details\");\n });\n\n it(\"passes from_id when provided\", async () => {\n axiosGetMock.mockResolvedValue(mockApiResponse());\n\n await getMercadoLibreBillingProvisionPage(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n limit: 1000,\n fromId: \"abc-123\",\n });\n\n expect(axiosGetMock.mock.calls[0][1].params.from_id).toBe(\"abc-123\");\n });\n\n it(\"passes optional filter params\", async () => {\n axiosGetMock.mockResolvedValue(mockApiResponse());\n\n await getMercadoLibreBillingProvisionPage(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n limit: 1000,\n detailType: \"sale\",\n detailSubTypes: [\"commission\"],\n marketplaceType: \"classic\",\n orderIds: [\"O1\"],\n itemIds: [\"I1\"],\n });\n\n const p = axiosGetMock.mock.calls[0][1].params;\n expect(p.detail_type).toBe(\"sale\");\n expect(p.detail_sub_types).toBe(\"commission\");\n expect(p.marketplace_type).toBe(\"classic\");\n expect(p.order_ids).toBe(\"O1\");\n expect(p.item_ids).toBe(\"I1\");\n });\n\n it(\"reads flat total/limit from real MELI envelope (no paging nesting)\", async () => {\n axiosGetMock.mockResolvedValue({\n data: {\n results: [nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 10 } })],\n last_id: \"last-1\",\n total: 42,\n limit: 500,\n },\n });\n\n const page = await getMercadoLibreBillingProvisionPage(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n limit: 1000,\n });\n\n expect(page.total).toBe(42);\n expect(page.limit).toBe(500);\n expect((page as unknown as Record<string, unknown>).paging).toBeUndefined();\n });\n});\n\ndescribe(\"getMercadoLibreBillingProvisions\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n function mockApi(results: Record<string, unknown>[], last_id: string | null, total: number, limit = 1000) {\n return { data: { results, last_id, total, limit } };\n }\n\n it(\"deduplicates by charge_info.detail_id across pages\", async () => {\n axiosGetMock\n .mockResolvedValueOnce(mockApi([\n nestedRow({ charge_info: { detail_id: \"a\", detail_amount: 10 } }),\n nestedRow({ charge_info: { detail_id: \"b\", detail_amount: 20 } }),\n ], \"last-1\", 3))\n .mockResolvedValueOnce(mockApi([\n nestedRow({ charge_info: { detail_id: \"b\", detail_amount: 20 } }), // duplicate\n nestedRow({ charge_info: { detail_id: \"c\", detail_amount: 30 } }),\n ], null, 3));\n\n const result = await getMercadoLibreBillingProvisions(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n expect(result.detail_count_total).toBe(3);\n expect(result.coverage_complete).toBe(true);\n expect(result.rows.length).toBe(3);\n });\n\n it(\"stops when last_id does not advance\", async () => {\n axiosGetMock\n .mockResolvedValueOnce(mockApi([\n nestedRow({ charge_info: { detail_id: \"a\", detail_amount: 10 } }),\n ], \"stuck-id\", 1))\n .mockResolvedValueOnce(mockApi([\n nestedRow({ charge_info: { detail_id: \"b\", detail_amount: 20 } }),\n ], \"stuck-id\", 2));\n\n const result = await getMercadoLibreBillingProvisions(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n expect(result.pages_requested).toBe(2);\n expect(result.detail_count_total).toBe(2);\n expect(result.coverage_complete).toBe(false);\n });\n\n it(\"returns coverage_complete=false with failures and breaks on error\", async () => {\n axiosGetMock\n .mockResolvedValueOnce(mockApi([\n nestedRow({ charge_info: { detail_id: \"a\", detail_amount: 10 } }),\n ], \"page-1-last\", 10))\n .mockRejectedValueOnce(new Error(\"Network error\"));\n\n const result = await getMercadoLibreBillingProvisions(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"mp\",\n documentType: \"BILL\",\n });\n\n expect(result.pages_requested).toBe(2);\n expect(result.pages_succeeded).toBe(1);\n expect(result.pages_failed).toBe(1);\n expect(result.coverage_complete).toBe(false);\n expect(result.failures).toHaveLength(1);\n expect(result.failures[0].page).toBe(2);\n expect(result.rows.length).toBe(1);\n });\n\n it(\"handles empty results gracefully\", async () => {\n axiosGetMock.mockResolvedValueOnce(mockApi([], null, 0));\n\n const result = await getMercadoLibreBillingProvisions(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"full\",\n documentType: \"BILL\",\n });\n\n expect(result.pages_requested).toBe(1);\n expect(result.detail_count_total).toBe(0);\n expect(result.coverage_complete).toBe(true);\n });\n});\n\n// \u2500\u2500 Tool handler unit tests \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ndescribe(\"meliGetBillingProvisionsSummaryHandler\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n vi.mocked(resolveProfileMock).mockResolvedValue({\n ok: true,\n value: { profileId: \"meli-profile-1\" },\n } as never);\n });\n\n function mockApi(results: Record<string, unknown>[], last_id: string | null = null, total?: number) {\n return { data: { results, last_id, total: total ?? results.length, limit: 1000 } };\n }\n\n it(\"validates schema: periodKey must be YYYY-MM-01 format\", () => {\n const valid = \"2026-06-01\";\n const invalid = \"2026-06-15\";\n\n expect(() => meliGetBillingProvisionsSummarySchema.parse({ periodKey: valid, scope: \"ml\" })).not.toThrow();\n expect(() => meliGetBillingProvisionsSummarySchema.parse({ periodKey: invalid, scope: \"ml\" })).toThrow();\n });\n\n it(\"validates schema: scope must be valid enum\", () => {\n expect(() =>\n meliGetBillingProvisionsSummarySchema.parse({ periodKey: \"2026-06-01\", scope: \"ml\" })\n ).not.toThrow();\n expect(() =>\n meliGetBillingProvisionsSummarySchema.parse({ periodKey: \"2026-06-01\", scope: \"invalid\" })\n ).toThrow();\n });\n\n it(\"aggregates single scope with currency totals using nested payload shape\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: { detail_id: \"d1\", detail_amount: 100, detail_sub_type: \"CVFV\", transaction_detail: \"Cargo por vender\" },\n sales_info: [{ order_id: \"O1\" }],\n items_info: [{ item_id: \"I1\" }],\n }),\n nestedRow({\n charge_info: { detail_id: \"d2\", detail_amount: 25, detail_sub_type: \"CFF\", transaction_detail: \"Cargo por env\u00EDos de Mercado Libre\" },\n sales_info: [{ order_id: \"O2\" }],\n }),\n nestedRow({\n charge_info: { detail_id: \"d3\", detail_amount: 150, detail_sub_type: \"CVFV\", transaction_detail: \"Cargo por vender\" },\n currency_info: { currency_id: \"USD\" },\n sales_info: [{ order_id: \"O3\" }],\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n expect(result).toHaveProperty(\"kind\", \"object\");\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n\n expect(payload.profile_id).toBe(\"meli-profile-1\");\n expect(payload.scope).toBe(\"ml\");\n\n // \u2500\u2500 details_schema \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n expect(payload.details_schema).toEqual(detailsSchema);\n\n // \u2500\u2500 details (compact rows) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const details = payload.details as unknown[][];\n expect(details).toHaveLength(3);\n // Each row must be an array\n for (const row of details) {\n expect(Array.isArray(row)).toBe(true);\n expect(row).toHaveLength(detailsSchema.length);\n }\n // Row 0: detail_id=\"d1\", amount=100, currency=\"ARS\"\n expect(details[0][0]).toBe(\"d1\"); // detail_id\n expect(details[0][4]).toBe(100); // detail_amount\n expect(details[0][5]).toBe(\"ARS\"); // currency_id\n expect(details[0][8]).toBe(\"O1\"); // order_id\n expect(details[0][10]).toBe(\"I1\"); // item_id\n\n // Row 2: currency_id=\"USD\"\n expect(details[2][5]).toBe(\"USD\");\n\n // \u2500\u2500 summary \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const summary = payload.summary as Record<string, unknown>;\n expect(summary.detail_count).toBe(3);\n expect(summary.order_count_detected).toBe(3);\n expect(summary.item_count_detected).toBe(1);\n\n const currTotals = summary.currency_totals as Record<string, Record<string, unknown>>;\n expect(currTotals).toHaveProperty(\"ARS\");\n expect(currTotals).toHaveProperty(\"USD\");\n\n // Verify monetary field names (only the four aggregate fields)\n const arsBucket = currTotals.ARS;\n expect(Object.keys(arsBucket).sort()).toEqual([\n \"bonus_amount_total\", \"charge_amount_total\", \"discount_amount_total\", \"net_effect_total\",\n ]);\n expect(arsBucket.charge_amount_total).toBe(125);\n expect(arsBucket.bonus_amount_total).toBe(0);\n expect(arsBucket.discount_amount_total).toBe(0);\n expect(arsBucket.net_effect_total).toBe(125);\n\n expect(currTotals.USD.charge_amount_total).toBe(150);\n\n // Verify OLD fields are absent\n expect(summary.totals_by_concept).toBeUndefined();\n expect(summary.totals_by_concept_by_currency).toBeUndefined();\n expect(payload.raw_sections).toBeUndefined();\n expect(payload.enriched_sections).toBeUndefined();\n expect(payload.classification_diagnostics).toBeUndefined();\n expect(payload.summary_by_scope).toBeUndefined();\n\n // \u2500\u2500 diagnostics \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const diag = payload.diagnostics as Record<string, unknown>;\n expect(diag).toHaveProperty(\"detail_sub_types_observed\");\n expect(diag).toHaveProperty(\"marketplaces_observed\");\n expect(diag).toHaveProperty(\"concept_types_observed\");\n expect(Array.isArray(diag.detail_sub_types_observed)).toBe(true);\n\n // \u2500\u2500 metadata \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const metadata = payload.metadata as Record<string, unknown>;\n expect(metadata.coverage_complete).toBe(true);\n expect(metadata.coverage_by_scope).toBeDefined();\n });\n\n it(\"handles scope=all by calling all four scopes with nested payload\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: { detail_id: \"shared-1\", detail_amount: 50, detail_sub_type: \"sale\" },\n sales_info: [{ order_id: \"O-COMMON\" }],\n items_info: [{ item_id: \"I-COMMON\" }],\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"all\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n expect(payload.scope).toBe(\"all\");\n\n const summary = payload.summary as Record<string, unknown>;\n expect(summary.detail_count).toBe(4);\n expect(summary.order_count_detected).toBe(1);\n expect(summary.item_count_detected).toBe(1);\n\n const details = payload.details as unknown[][];\n expect(details).toHaveLength(4);\n\n const metadata = payload.metadata as Record<string, unknown>;\n expect(metadata.sources_called).toBe(4);\n expect(metadata.pages_succeeded).toBe(4);\n expect(metadata.coverage_complete).toBe(true);\n expect(metadata.coverage_by_scope).toBeDefined();\n });\n\n it(\"handles credit notes with negative amounts \u2014 nested shape\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 500, detail_sub_type: \"CVFV\", transaction_detail: \"Cargo por vender\" } }),\n nestedRow({ charge_info: { detail_id: \"d2\", detail_amount: -150, detail_sub_type: \"BVFV\", transaction_detail: \"Anulaci\u00F3n del cargo por vender\" } }),\n nestedRow({ charge_info: { detail_id: \"d3\", detail_amount: -50, detail_sub_type: \"BFF\", transaction_detail: \"Anulaci\u00F3n del cargo por env\u00EDos\" } }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"CREDIT_NOTE\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n expect(payload.document_type).toBe(\"CREDIT_NOTE\");\n\n const currTotals = (payload.summary as Record<string, unknown>).currency_totals as Record<string, Record<string, unknown>>;\n expect(currTotals.ARS.charge_amount_total).toBe(500);\n expect(currTotals.ARS.bonus_amount_total).toBe(-200);\n expect(currTotals.ARS.discount_amount_total).toBe(0);\n expect(currTotals.ARS.net_effect_total).toBe(300);\n });\n\n it(\"handles mixed positive and negative amounts within same concept (nested)\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 200, detail_sub_type: \"CVFV\", transaction_detail: \"Cargo por vender\" } }),\n nestedRow({ charge_info: { detail_id: \"d2\", detail_amount: -80, detail_sub_type: \"BVFF\", transaction_detail: \"Anulaci\u00F3n del costo por unidad vendida\" } }),\n nestedRow({ charge_info: { detail_id: \"d3\", detail_amount: 50, detail_sub_type: \"CFF\", transaction_detail: \"Cargo por env\u00EDos de Mercado Libre\" } }),\n nestedRow({ charge_info: { detail_id: \"d4\", detail_amount: -20, detail_sub_type: \"BXD\", transaction_detail: \"Anulaci\u00F3n del cargo por env\u00EDos\" } }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const currTotals = (payload.summary as Record<string, unknown>).currency_totals as Record<string, Record<string, unknown>>;\n\n expect(currTotals.ARS.charge_amount_total).toBe(250);\n expect(currTotals.ARS.bonus_amount_total).toBe(-100);\n expect(currTotals.ARS.discount_amount_total).toBe(0);\n expect(currTotals.ARS.net_effect_total).toBe(150);\n });\n\n it(\"deduplicates order and item counts globally across scopes\", async () => {\n let callCount = 0;\n axiosGetMock.mockImplementation(() => {\n callCount++;\n const scopeIndex = callCount - 1;\n const scopes = [\"ml\", \"mp\", \"flex\", \"full\"];\n const isPayment = scopes[scopeIndex] === \"mp\";\n return Promise.resolve(mockApi([\n nestedRow({\n charge_info: {\n detail_id: `d-${scopes[scopeIndex]}`,\n detail_amount: 50,\n detail_sub_type: isPayment ? \"payment\" : \"sale\",\n },\n sales_info: [{ order_id: \"ORDER-1\" }],\n items_info: [{ item_id: scopeIndex < 2 ? \"ITEM-A\" : \"ITEM-B\" }],\n }),\n ]));\n });\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"all\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const summary = payload.summary as Record<string, unknown>;\n expect(summary.detail_count).toBe(4);\n expect(summary.order_count_detected).toBe(1);\n expect(summary.item_count_detected).toBe(2);\n });\n\n it(\"includes coverage_by_scope with per-scope operational metadata\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 10 } }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const covByScope = (payload.metadata as Record<string, unknown>).coverage_by_scope as Record<string, Record<string, unknown>>;\n\n expect(covByScope).toHaveProperty(\"ml\");\n expect(covByScope.ml.coverage_complete).toBe(true);\n expect(covByScope.ml.last_id_seen).toBeUndefined();\n expect(typeof covByScope.ml.pages_requested).toBe(\"number\");\n expect(typeof covByScope.ml.pages_succeeded).toBe(\"number\");\n expect(typeof covByScope.ml.pages_failed).toBe(\"number\");\n expect(typeof covByScope.ml.detail_count).toBe(\"number\");\n });\n\n it(\"continuation_by_scope is absent when coverage is complete\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 10 } }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n expect((payload.metadata as Record<string, unknown>).continuation_by_scope).toBeUndefined();\n });\n\n it(\"reports coverage_complete=false and continuation_by_scope when a scope has partial coverage\", async () => {\n axiosGetMock\n .mockResolvedValueOnce(mockApi([\n nestedRow({ charge_info: { detail_id: \"a\", detail_amount: 10 } }),\n ], \"page-1-last\", 10))\n .mockRejectedValueOnce(new Error(\"Network error\"));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const metadata = payload.metadata as Record<string, unknown>;\n expect(metadata.coverage_complete).toBe(false);\n expect(metadata.pages_succeeded).toBe(1);\n expect(metadata.pages_failed).toBe(1);\n expect(metadata.coverage_by_scope).toBeDefined();\n\n const covByScope = metadata.coverage_by_scope as Record<string, Record<string, unknown>>;\n expect(covByScope.ml.coverage_complete).toBe(false);\n expect(covByScope.ml.last_id_seen).toBe(\"page-1-last\");\n\n expect(metadata.continuation_by_scope).toBeDefined();\n const continuation = metadata.continuation_by_scope as Record<string, Record<string, unknown>>;\n expect(continuation.ml.last_id).toBe(\"page-1-last\");\n expect(typeof continuation.ml.hint).toBe(\"string\");\n expect(continuation.ml.hint).toContain(\"fromIdByScope\");\n expect(continuation.ml.hint).toContain(\"page-1-last\");\n });\n\n it(\"multi-currency: totals_by_concept is absent \u2014 only currency_totals with four fields\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 1000, detail_sub_type: \"CVFV\", transaction_detail: \"Cargo por vender\" } }),\n nestedRow({ charge_info: { detail_id: \"d2\", detail_amount: 200, detail_sub_type: \"CFF\", transaction_detail: \"Cargo por env\u00EDos de Mercado Libre\" } }),\n nestedRow({\n charge_info: { detail_id: \"d3\", detail_amount: 50, detail_sub_type: \"CVFV\", transaction_detail: \"Cargo por vender\" },\n currency_info: { currency_id: \"USD\" },\n }),\n nestedRow({\n charge_info: { detail_id: \"d4\", detail_amount: 10, detail_sub_type: \"CVFN\", transaction_detail: \"Costo por ofrecer cuotas\" },\n currency_info: { currency_id: \"USD\" },\n }),\n nestedRow({\n charge_info: { detail_id: \"d5\", detail_amount: -5, detail_sub_type: \"BVFV\", transaction_detail: \"Anulaci\u00F3n del cargo por vender\" },\n currency_info: { currency_id: \"USD\" },\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const summary = payload.summary as Record<string, unknown>;\n\n // OLD fields must be absent\n expect(summary.totals_by_concept).toBeUndefined();\n expect(summary.totals_by_concept_by_currency).toBeUndefined();\n\n // currency_totals should have only the four aggregate fields\n const currTotals = summary.currency_totals as Record<string, Record<string, unknown>>;\n expect(currTotals.ARS.charge_amount_total).toBe(1200);\n expect(currTotals.ARS.bonus_amount_total).toBe(0);\n expect(currTotals.ARS.net_effect_total).toBe(1200);\n expect(currTotals.USD.charge_amount_total).toBe(60);\n expect(currTotals.USD.bonus_amount_total).toBe(-5);\n expect(currTotals.USD.net_effect_total).toBe(55);\n // No by_concept in currency buckets\n expect(currTotals.ARS.by_concept).toBeUndefined();\n expect(currTotals.USD.by_concept).toBeUndefined();\n });\n\n it(\"details rows are reversible with compact schema\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: {\n detail_id: \"rev-1\",\n detail_amount: 500,\n detail_sub_type: \"CVFV\",\n transaction_detail: \"Cargo por vender\",\n detail_type: \"CHARGE\",\n concept_type: \"sale\",\n creation_date_time: \"2026-06-15T10:30:00Z\",\n },\n currency_info: { currency_id: \"ARS\" },\n marketplace_info: { marketplace: \"MCLICS\" },\n sales_info: [{ order_id: \"ORD-100\", operation_id: \"OP-200\", shipping_id: \"SH-300\", pack_id: \"PK-400\" }],\n items_info: [{ item_id: \"MLB-500\", item_title: \"Zapatillas Nike\" }],\n document_id: \"DOC-999\",\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const schema = payload.details_schema as string[];\n const details = payload.details as unknown[][];\n\n // Reconstruct: index each row by schema\n const row = details[0];\n const reconstructed: Record<string, unknown> = {};\n schema.forEach((key, i) => { reconstructed[key] = row[i]; });\n\n expect(reconstructed.detail_id).toBe(\"rev-1\");\n expect(reconstructed.detail_type).toBe(\"CHARGE\");\n expect(reconstructed.detail_sub_type).toBe(\"CVFV\");\n expect(reconstructed.transaction_detail).toBe(\"Cargo por vender\");\n expect(reconstructed.detail_amount).toBe(500);\n expect(reconstructed.currency_id).toBe(\"ARS\");\n expect(reconstructed.marketplace).toBe(\"MCLICS\");\n expect(reconstructed.concept_type).toBe(\"sale\");\n expect(reconstructed.order_id).toBe(\"ORD-100\");\n expect(reconstructed.operation_id).toBe(\"OP-200\");\n expect(reconstructed.item_id).toBe(\"MLB-500\");\n expect(reconstructed.item_title).toBe(\"Zapatillas Nike\");\n expect(reconstructed.shipping_id).toBe(\"SH-300\");\n expect(reconstructed.pack_id).toBe(\"PK-400\");\n expect(reconstructed.document_id).toBe(\"DOC-999\");\n expect(reconstructed.creation_date_time).toBe(\"2026-06-15T10:30:00Z\");\n expect(reconstructed.sales_info_count).toBe(1);\n expect(reconstructed.items_info_count).toBe(1);\n });\n\n it(\"returns profile selection when profileId is missing\", async () => {\n vi.mocked(resolveProfileMock).mockResolvedValue({\n ok: false,\n response: { selection_required: true },\n } as never);\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n expect(result).toEqual({ selection_required: true });\n });\n\n it(\"defaults documentType to BILL when omitted\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 10 } }),\n ]));\n\n await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n });\n\n const call = axiosGetMock.mock.calls[0];\n expect(call[1].params.document_type).toBe(\"BILL\");\n });\n\n it(\"passes fromIdByScope cursor to the service layer\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 10 } }),\n ]));\n\n await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n fromIdByScope: { ml: \"cursor-ml-99\" },\n });\n\n const call = axiosGetMock.mock.calls[0];\n expect(call[1].params.from_id).toBe(\"cursor-ml-99\");\n });\n\n it(\"passes fromIdByScope for scope=all with per-scope cursors\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 10 } }),\n ]));\n\n await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"all\",\n documentType: \"BILL\",\n fromIdByScope: {\n ml: \"ml-cursor-1\",\n mp: \"mp-cursor-2\",\n },\n });\n\n const allCalls = axiosGetMock.mock.calls;\n expect(allCalls[0][1].params.from_id).toBe(\"ml-cursor-1\");\n expect(allCalls[1][1].params.from_id).toBe(\"mp-cursor-2\");\n expect(allCalls[2][1].params.from_id).toBeUndefined();\n expect(allCalls[3][1].params.from_id).toBeUndefined();\n });\n\n // \u2500\u2500 Diagnostics tests \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n it(\"diagnostics reports observed detail_sub_types\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"1\", detail_amount: 100, detail_sub_type: \"CVFV\" } }),\n nestedRow({ charge_info: { detail_id: \"2\", detail_amount: 50, detail_sub_type: \"CFF\" } }),\n nestedRow({ charge_info: { detail_id: \"3\", detail_amount: 30, detail_sub_type: \"PADS\" } }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const diag = payload.diagnostics as Record<string, string[]>;\n expect(diag.detail_sub_types_observed).toContain(\"CVFV\");\n expect(diag.detail_sub_types_observed).toContain(\"CFF\");\n expect(diag.detail_sub_types_observed).toContain(\"PADS\");\n expect(diag.detail_sub_types_observed).toHaveLength(3);\n });\n\n it(\"diagnostics reports observed marketplaces\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: { detail_id: \"1\", detail_amount: 100, detail_sub_type: \"CVFV\" },\n marketplace_info: { marketplace: \"MCLICS\" },\n }),\n nestedRow({\n charge_info: { detail_id: \"2\", detail_amount: 50, detail_sub_type: \"CFF\" },\n marketplace_info: { marketplace: \"TAXES\" },\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"mp\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const diag = payload.diagnostics as Record<string, string[]>;\n expect(diag.marketplaces_observed).toContain(\"MCLICS\");\n expect(diag.marketplaces_observed).toContain(\"TAXES\");\n expect(diag.marketplaces_observed).toHaveLength(2);\n });\n\n it(\"diagnostics reports observed concept_types\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"1\", detail_amount: 100, detail_sub_type: \"CVFV\", concept_type: \"sale\" } }),\n nestedRow({ charge_info: { detail_id: \"2\", detail_amount: 50, detail_sub_type: \"CFF\", concept_type: \"shipping\" } }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const diag = payload.diagnostics as Record<string, string[]>;\n expect(diag.concept_types_observed).toContain(\"sale\");\n expect(diag.concept_types_observed).toContain(\"shipping\");\n expect(diag.concept_types_observed).toHaveLength(2);\n });\n\n it(\"details_schema is exact and in correct order\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 10 } }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n\n expect(payload.details_schema).toEqual([\n \"detail_id\",\n \"detail_type\",\n \"detail_sub_type\",\n \"transaction_detail\",\n \"detail_amount\",\n \"currency_id\",\n \"marketplace\",\n \"concept_type\",\n \"order_id\",\n \"operation_id\",\n \"item_id\",\n \"item_title\",\n \"shipping_id\",\n \"pack_id\",\n \"document_id\",\n \"creation_date_time\",\n \"sales_info_count\",\n \"items_info_count\",\n ]);\n });\n\n it(\"empty details produces empty details array and zero summary with currency_totals and secondary blocks\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([], null, 0));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const details = payload.details as unknown[];\n expect(details).toHaveLength(0);\n\n const summary = payload.summary as Record<string, unknown>;\n expect(summary.detail_count).toBe(0);\n expect(summary.order_count_detected).toBe(0);\n expect(summary.item_count_detected).toBe(0);\n\n // currency_totals MUST be present even when empty (contract stability)\n expect(summary.currency_totals).toBeDefined();\n expect(summary.currency_totals).toEqual({});\n\n // Secondary multiplicity blocks MUST be present even when empty\n expect(payload.details_sales).toEqual([]);\n expect(payload.details_items).toEqual([]);\n expect(payload.details_sales_schema).toEqual(detailsSalesSchema);\n expect(payload.details_items_schema).toEqual(detailsItemsSchema);\n\n const diag = payload.diagnostics as Record<string, string[]>;\n expect(diag.detail_sub_types_observed).toHaveLength(0);\n expect(diag.marketplaces_observed).toHaveLength(0);\n expect(diag.concept_types_observed).toHaveLength(0);\n });\n\n // \u2500\u2500 TDD: Multiplicity and null preservation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n it(\"details_schema includes sales_info_count and items_info_count\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: { detail_id: \"d1\", detail_amount: 10 },\n sales_info: [{ order_id: \"O1\" }, { order_id: \"O2\" }, { order_id: \"O3\" }],\n items_info: [{ item_id: \"I1\" }, { item_id: \"I2\" }],\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const details = payload.details as unknown[][];\n const row = details[0];\n\n // Column 16: sales_info_count\n expect(row[16]).toBe(3);\n // Column 17: items_info_count\n expect(row[17]).toBe(2);\n // First sale/item still accessible as forward-compat shortcut\n expect(row[8]).toBe(\"O1\"); // order_id from first sale\n expect(row[10]).toBe(\"I1\"); // item_id from first item\n });\n\n it(\"multiple sales_info produces secondary details_sales block with all entries\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: { detail_id: \"multi-sale\", detail_amount: 100, detail_sub_type: \"CVFV\" },\n sales_info: [\n { order_id: \"ORD-A\", operation_id: \"OP-A\" },\n { order_id: \"ORD-B\", operation_id: \"OP-B\" },\n { order_id: \"ORD-C\" },\n ],\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n\n // Secondary schema present\n expect(payload.details_sales_schema).toEqual(detailsSalesSchema);\n\n const salesRows = payload.details_sales as unknown[][];\n expect(salesRows).toHaveLength(3);\n\n // Each row references the same detail_id\n for (const sr of salesRows) {\n expect(sr[0]).toBe(\"multi-sale\"); // detail_id\n }\n\n // Row 0: ORD-A / OP-A\n expect(salesRows[0][1]).toBe(\"ORD-A\");\n expect(salesRows[0][2]).toBe(\"OP-A\");\n // Row 1: ORD-B / OP-B\n expect(salesRows[1][1]).toBe(\"ORD-B\");\n expect(salesRows[1][2]).toBe(\"OP-B\");\n // Row 2: ORD-C, operation_id null\n expect(salesRows[2][1]).toBe(\"ORD-C\");\n expect(salesRows[2][2]).toBeNull();\n\n // Summary still correct\n const summary = payload.summary as Record<string, unknown>;\n expect(summary.order_count_detected).toBe(3);\n });\n\n it(\"multiple items_info produces secondary details_items block with all entries\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: { detail_id: \"multi-item\", detail_amount: 200, detail_sub_type: \"CVFV\" },\n items_info: [\n { item_id: \"ITEM-1\", item_title: \"Producto A\" },\n { item_id: \"ITEM-2\", item_title: \"Producto B\" },\n { item_id: \"ITEM-3\", item_title: \"Producto C\" },\n { item_id: \"ITEM-4\" },\n ],\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n\n // Secondary schema present\n expect(payload.details_items_schema).toEqual(detailsItemsSchema);\n\n const itemsRows = payload.details_items as unknown[][];\n expect(itemsRows).toHaveLength(4);\n\n // Each row references the same detail_id\n for (const ir of itemsRows) {\n expect(ir[0]).toBe(\"multi-item\"); // detail_id\n }\n\n // Row 0\n expect(itemsRows[0][1]).toBe(\"ITEM-1\");\n expect(itemsRows[0][2]).toBe(\"Producto A\");\n // Row 3: item_title null\n expect(itemsRows[3][1]).toBe(\"ITEM-4\");\n expect(itemsRows[3][2]).toBeNull();\n\n // Summary still correct\n const summary = payload.summary as Record<string, unknown>;\n expect(summary.item_count_detected).toBe(4);\n });\n\n it(\"preserves null values at correct positions without column shift\", async () => {\n // Row with many missing fields should keep nulls in the right places\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: {\n detail_id: \"null-test\",\n detail_amount: 0,\n // detail_type, detail_sub_type, transaction_detail, concept_type, creation_date_time all missing\n },\n currency_info: {}, // no currency_id\n marketplace_info: {}, // no marketplace\n sales_info: [], // no sales\n items_info: [], // no items\n // document_id missing\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const details = payload.details as unknown[][];\n const row = details[0];\n\n // Verify null positions: schema index \u2192 expected null\n // 0: detail_id \u2192 \"null-test\" (not null)\n expect(row[0]).toBe(\"null-test\");\n // 1: detail_type \u2192 null (missing)\n expect(row[1]).toBeNull();\n // 2: detail_sub_type \u2192 null\n expect(row[2]).toBeNull();\n // 3: transaction_detail \u2192 null\n expect(row[3]).toBeNull();\n // 4: detail_amount \u2192 0\n expect(row[4]).toBe(0);\n // 5: currency_id \u2192 null\n expect(row[5]).toBeNull();\n // 6: marketplace \u2192 null\n expect(row[6]).toBeNull();\n // 7: concept_type \u2192 null\n expect(row[7]).toBeNull();\n // 8-13: order_id, operation_id, item_id, item_title, shipping_id, pack_id \u2192 null (no sales/items)\n expect(row[8]).toBeNull();\n expect(row[9]).toBeNull();\n expect(row[10]).toBeNull();\n expect(row[11]).toBeNull();\n expect(row[12]).toBeNull();\n expect(row[13]).toBeNull();\n // 14: document_id \u2192 null\n expect(row[14]).toBeNull();\n // 15: creation_date_time \u2192 null\n expect(row[15]).toBeNull();\n // 16: sales_info_count \u2192 0\n expect(row[16]).toBe(0);\n // 17: items_info_count \u2192 0\n expect(row[17]).toBe(0);\n\n // No column shift: total length matches schema\n expect(row).toHaveLength(detailsSchema.length);\n\n // Secondary blocks should be empty\n const salesRows = payload.details_sales as unknown[];\n const itemsRows = payload.details_items as unknown[];\n expect(salesRows).toHaveLength(0);\n expect(itemsRows).toHaveLength(0);\n });\n\n it(\"secondary blocks populated even with single sale/item (contract stability)\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: { detail_id: \"single-1\", detail_amount: 50, detail_sub_type: \"CVFV\" },\n sales_info: [{ order_id: \"O-SINGLE\" }],\n items_info: [{ item_id: \"I-SINGLE\", item_title: \"Solo\" }],\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n\n // Secondary blocks should always exist\n const salesRows = payload.details_sales as unknown[][];\n const itemsRows = payload.details_items as unknown[][];\n expect(salesRows).toHaveLength(1);\n expect(itemsRows).toHaveLength(1);\n\n expect(salesRows[0][0]).toBe(\"single-1\");\n expect(salesRows[0][1]).toBe(\"O-SINGLE\");\n expect(itemsRows[0][0]).toBe(\"single-1\");\n expect(itemsRows[0][1]).toBe(\"I-SINGLE\");\n expect(itemsRows[0][2]).toBe(\"Solo\");\n });\n});\n\n// \u2500\u2500 Schema validation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ndescribe(\"meliGetBillingProvisionsSummarySchema validation\", () => {\n it(\"requires profileId and periodKey and scope\", () => {\n const result = meliGetBillingProvisionsSummarySchema.safeParse({});\n expect(result.success).toBe(false);\n expect(result.error?.issues.length).toBeGreaterThanOrEqual(2);\n });\n\n it(\"accepts full valid payload including fromIdByScope\", () => {\n const result = meliGetBillingProvisionsSummarySchema.safeParse({\n profileId: \"my-profile\",\n periodKey: \"2025-01-01\",\n scope: \"all\",\n documentType: \"CREDIT_NOTE\",\n detailType: \"sale\",\n detailSubTypes: [\"commission\"],\n orderIds: [\"O123\"],\n itemIds: [\"I456\"],\n fromIdByScope: { ml: \"abc-123\", mp: \"def-456\" },\n });\n expect(result.success).toBe(true);\n });\n\n it(\"rejects non-string values in fromIdByScope keys\", () => {\n const result = meliGetBillingProvisionsSummarySchema.safeParse({\n profileId: \"my-profile\",\n periodKey: \"2025-01-01\",\n scope: \"ml\",\n fromIdByScope: { ml: 123 },\n });\n expect(result.success).toBe(false);\n });\n\n it(\"accepts empty fromIdByScope\", () => {\n const result = meliGetBillingProvisionsSummarySchema.safeParse({\n profileId: \"my-profile\",\n periodKey: \"2025-01-01\",\n scope: \"ml\",\n fromIdByScope: {},\n });\n expect(result.success).toBe(true);\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { beforeEach, describe, expect, it, vi } from \"vitest\";\n\n// \u2500\u2500 Hoisted mocks (named functions avoid hoist issues) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst { axiosGetMock, errorMock, objectMock, resolveProfileMock, formatErrorMock, apiContextMock } = vi.hoisted(() => ({\n axiosGetMock: vi.fn(),\n errorMock: vi.fn((message: string) => ({ kind: \"error\", message })),\n objectMock: vi.fn((payload: unknown) => ({ kind: \"object\", payload })),\n resolveProfileMock: vi.fn(),\n formatErrorMock: vi.fn(\n (err: unknown, fallback: string) =>\n `formatted:${fallback}:${err instanceof Error ? err.message : String(err)}`\n ),\n apiContextMock: vi.fn((profileId: string) =>\n Promise.resolve({\n sellerId: `seller-${profileId}`,\n scopes: [\"read\"],\n expiresAt: \"2026-12-31T00:00:00.000Z\",\n api: { get: axiosGetMock },\n })\n ),\n}));\n\nvi.mock(\"mcp-use/server\", () => ({\n object: objectMock,\n error: errorMock,\n}));\n\nvi.mock(\"../../src/services/mercadolibre/mercadolibre-api.js\", () => ({\n getMercadoLibreApiContext: apiContextMock,\n formatMercadoLibreError: formatErrorMock,\n}));\n\nvi.mock(\"../../src/tools/mercadolibre/profile-resolution.js\", () => ({\n resolveMercadoLibreProfileOrSelection: resolveProfileMock,\n}));\n\n// \u2500\u2500 Imports after mocks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nimport {\n getMercadoLibreBillingProvisionPage,\n getMercadoLibreBillingProvisions,\n getMercadoLibreBillingProvisionsByOrder,\n scopeToGroupPath,\n} from \"../../src/services/mercadolibre/mercadolibre-billing.js\";\nimport {\n meliGetBillingProvisionsByOrderHandler,\n meliGetBillingProvisionsByOrderSchema,\n ordersSchema,\n paymentInfoSchema,\n detailsSchema as byOrderDetailsSchema,\n detailsSalesSchema as byOrderDetailsSalesSchema,\n detailsItemsSchema as byOrderDetailsItemsSchema,\n} from \"../../src/tools/mercadolibre/get-billing-provisions-by-order.js\";\nimport {\n meliGetBillingProvisionsSummaryHandler,\n meliGetBillingProvisionsSummarySchema,\n detailsSchema,\n detailsSalesSchema,\n detailsItemsSchema,\n} from \"../../src/tools/mercadolibre/get-billing-provisions-summary.js\";\n\n// \u2500\u2500 Real MELI nested row factory \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** Creates a row matching the real MELI Billing provisioning payload shape. */\nfunction nestedRow(overrides: Record<string, unknown> = {}): Record<string, unknown> {\n const chargeInfo = (overrides.charge_info as Record<string, unknown>) ?? {};\n const currencyInfo = (overrides.currency_info as Record<string, unknown>) ?? {};\n const salesInfo = overrides.sales_info as Array<Record<string, unknown>> | undefined;\n const itemsInfo = overrides.items_info as Array<Record<string, unknown>> | undefined;\n const marketplaceInfo = overrides.marketplace_info as Record<string, unknown> | undefined;\n\n return {\n charge_info: {\n detail_id: chargeInfo.detail_id ?? `id-${Math.random().toString(36).slice(2, 8)}`,\n detail_amount: chargeInfo.detail_amount ?? 0,\n detail_sub_type: chargeInfo.detail_sub_type ?? \"\",\n concept_type: chargeInfo.concept_type ?? \"\",\n transaction_detail: chargeInfo.transaction_detail ?? \"\",\n detail_type: chargeInfo.detail_type ?? \"\",\n creation_date_time: chargeInfo.creation_date_time ?? \"\",\n ...chargeInfo,\n },\n currency_info: {\n currency_id: currencyInfo.currency_id ?? \"ARS\",\n ...currencyInfo,\n },\n sales_info: salesInfo ?? [],\n items_info: itemsInfo ?? [],\n marketplace_info: marketplaceInfo ?? {},\n ...overrides,\n };\n}\n\n// \u2500\u2500 Service-level unit tests \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ndescribe(\"scopeToGroupPath\", () => {\n it(\"maps ml to ML\", () => {\n expect(scopeToGroupPath(\"ml\")).toBe(\"ML\");\n });\n it(\"maps mp to MP\", () => {\n expect(scopeToGroupPath(\"mp\")).toBe(\"MP\");\n });\n it(\"maps flex to ML/flex\", () => {\n expect(scopeToGroupPath(\"flex\")).toBe(\"ML/flex\");\n });\n it(\"maps full to ML/full\", () => {\n expect(scopeToGroupPath(\"full\")).toBe(\"ML/full\");\n });\n});\n\ndescribe(\"getMercadoLibreBillingProvisionPage\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n function mockApiResponse(results: Record<string, unknown>[] = [], overrides: Record<string, unknown> = {}) {\n const total = overrides.total ?? results.length;\n const limit = overrides.limit ?? 1000;\n const last_id = overrides.last_id ?? (results.length > 0 ? \"last-99\" : null);\n return {\n data: { results, last_id, total, limit },\n };\n }\n\n it(\"builds correct URL for flex scope\", async () => {\n axiosGetMock.mockResolvedValue(mockApiResponse());\n\n await getMercadoLibreBillingProvisionPage(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"flex\",\n documentType: \"BILL\",\n limit: 1000,\n });\n\n const call = axiosGetMock.mock.calls[0];\n expect(call[0]).toContain(\"/group/ML/flex/details\");\n expect(call[1].params.document_type).toBe(\"BILL\");\n expect(call[1].params.limit).toBe(1000);\n });\n\n it(\"builds correct URL for mp scope\", async () => {\n axiosGetMock.mockResolvedValue(mockApiResponse());\n\n await getMercadoLibreBillingProvisionPage(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"mp\",\n documentType: \"BILL\",\n limit: 1000,\n });\n\n expect(axiosGetMock.mock.calls[0][0]).toContain(\"/group/MP/details\");\n });\n\n it(\"passes from_id when provided\", async () => {\n axiosGetMock.mockResolvedValue(mockApiResponse());\n\n await getMercadoLibreBillingProvisionPage(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n limit: 1000,\n fromId: \"abc-123\",\n });\n\n expect(axiosGetMock.mock.calls[0][1].params.from_id).toBe(\"abc-123\");\n });\n\n it(\"passes optional filter params\", async () => {\n axiosGetMock.mockResolvedValue(mockApiResponse());\n\n await getMercadoLibreBillingProvisionPage(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n limit: 1000,\n detailType: \"sale\",\n detailSubTypes: [\"commission\"],\n marketplaceType: \"classic\",\n orderIds: [\"O1\"],\n itemIds: [\"I1\"],\n });\n\n const p = axiosGetMock.mock.calls[0][1].params;\n expect(p.detail_type).toBe(\"sale\");\n expect(p.detail_sub_types).toBe(\"commission\");\n expect(p.marketplace_type).toBe(\"classic\");\n expect(p.order_ids).toBe(\"O1\");\n expect(p.item_ids).toBe(\"I1\");\n expect(p.site_id).toBeUndefined();\n });\n\n it(\"reads flat total/limit from real MELI envelope (no paging nesting)\", async () => {\n axiosGetMock.mockResolvedValue({\n data: {\n results: [nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 10 } })],\n last_id: \"last-1\",\n total: 42,\n limit: 500,\n },\n });\n\n const page = await getMercadoLibreBillingProvisionPage(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n limit: 1000,\n });\n\n expect(page.total).toBe(42);\n expect(page.limit).toBe(500);\n expect((page as unknown as Record<string, unknown>).paging).toBeUndefined();\n });\n});\n\ndescribe(\"getMercadoLibreBillingProvisions\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n function mockApi(results: Record<string, unknown>[], last_id: string | null, total: number, limit = 1000) {\n return { data: { results, last_id, total, limit } };\n }\n\n it(\"deduplicates by charge_info.detail_id across pages\", async () => {\n axiosGetMock\n .mockResolvedValueOnce(mockApi([\n nestedRow({ charge_info: { detail_id: \"a\", detail_amount: 10 } }),\n nestedRow({ charge_info: { detail_id: \"b\", detail_amount: 20 } }),\n ], \"last-1\", 3))\n .mockResolvedValueOnce(mockApi([\n nestedRow({ charge_info: { detail_id: \"b\", detail_amount: 20 } }), // duplicate\n nestedRow({ charge_info: { detail_id: \"c\", detail_amount: 30 } }),\n ], null, 3));\n\n const result = await getMercadoLibreBillingProvisions(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n expect(result.detail_count_total).toBe(3);\n expect(result.coverage_complete).toBe(true);\n expect(result.rows.length).toBe(3);\n });\n\n it(\"stops when last_id does not advance\", async () => {\n axiosGetMock\n .mockResolvedValueOnce(mockApi([\n nestedRow({ charge_info: { detail_id: \"a\", detail_amount: 10 } }),\n ], \"stuck-id\", 1))\n .mockResolvedValueOnce(mockApi([\n nestedRow({ charge_info: { detail_id: \"b\", detail_amount: 20 } }),\n ], \"stuck-id\", 2));\n\n const result = await getMercadoLibreBillingProvisions(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n expect(result.pages_requested).toBe(2);\n expect(result.detail_count_total).toBe(2);\n expect(result.coverage_complete).toBe(false);\n });\n\n it(\"returns coverage_complete=false with failures and breaks on error\", async () => {\n axiosGetMock\n .mockResolvedValueOnce(mockApi([\n nestedRow({ charge_info: { detail_id: \"a\", detail_amount: 10 } }),\n ], \"page-1-last\", 10))\n .mockRejectedValueOnce(new Error(\"Network error\"));\n\n const result = await getMercadoLibreBillingProvisions(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"mp\",\n documentType: \"BILL\",\n });\n\n expect(result.pages_requested).toBe(2);\n expect(result.pages_succeeded).toBe(1);\n expect(result.pages_failed).toBe(1);\n expect(result.coverage_complete).toBe(false);\n expect(result.failures).toHaveLength(1);\n expect(result.failures[0].page).toBe(2);\n expect(result.rows.length).toBe(1);\n });\n\n it(\"handles empty results gracefully\", async () => {\n axiosGetMock.mockResolvedValueOnce(mockApi([], null, 0));\n\n const result = await getMercadoLibreBillingProvisions(\"profile-1\", {\n periodKey: \"2026-06-01\",\n scope: \"full\",\n documentType: \"BILL\",\n });\n\n expect(result.pages_requested).toBe(1);\n expect(result.detail_count_total).toBe(0);\n expect(result.coverage_complete).toBe(true);\n });\n});\n\ndescribe(\"meliGetBillingProvisionsByOrderHandler\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n vi.mocked(resolveProfileMock).mockResolvedValue({\n ok: true,\n value: { profileId: \"meli-profile-1\" },\n } as never);\n });\n\n it(\"requires profileId and at least one orderId\", () => {\n expect(() =>\n meliGetBillingProvisionsByOrderSchema.parse({ orderIds: [\"O1\"] })\n ).toThrow();\n expect(() =>\n meliGetBillingProvisionsByOrderSchema.parse({ profileId: \"profile-1\", orderIds: [\"O1\"] })\n ).not.toThrow();\n });\n\n function officialOrderRow(overrides: Record<string, unknown> = {}): Record<string, unknown> {\n const paymentInfo = (overrides.payment_info as Record<string, unknown>) ?? {};\n const details = overrides.details as Array<Record<string, unknown>> | undefined;\n\n return {\n order_id: overrides.order_id ?? `ORD-${Math.random().toString(36).slice(2, 8)}`,\n sale_fee: overrides.sale_fee ?? 12.34,\n document_id: overrides.document_id ?? \"DOC-1\",\n currency_id: overrides.currency_id ?? \"ARS\",\n marketplace: overrides.marketplace ?? \"MELI\",\n payment_info: {\n payment_id: paymentInfo.payment_id ?? \"PAY-1\",\n payment_type: paymentInfo.payment_type ?? \"credit_card\",\n payment_method_id: paymentInfo.payment_method_id ?? \"visa\",\n installments: paymentInfo.installments ?? 1,\n transaction_amount: paymentInfo.transaction_amount ?? 100,\n total_paid_amount: paymentInfo.total_paid_amount ?? 100,\n shipping_cost: paymentInfo.shipping_cost ?? 0,\n coupon_amount: paymentInfo.coupon_amount ?? 0,\n status: paymentInfo.status ?? \"approved\",\n status_detail: paymentInfo.status_detail ?? \"accredited\",\n ...paymentInfo,\n },\n details: details ?? [\n {\n detail_id: \"detail-1\",\n detail_type: \"sale\",\n detail_sub_type: \"sale\",\n transaction_detail: \"Cargo por vender\",\n detail_amount: 12.34,\n currency_id: \"ARS\",\n concept_type: \"sale\",\n operation_id: \"OP-1\",\n shipping_id: \"SHIP-1\",\n pack_id: \"PACK-1\",\n inventory_id: \"INV-1\",\n sales_info: [\n {\n order_id: overrides.order_id ?? \"ORD-1\",\n operation_id: \"OP-1\",\n sale_date_time: \"2026-06-01T10:00:00Z\",\n payer_nickname: \"buyer-1\",\n transaction_amount: 100,\n },\n ],\n items_info: [\n {\n item_id: \"ITEM-1\",\n item_title: \"Producto 1\",\n item_amount: 1,\n item_price: 100,\n item_kit_id: null,\n store_id: \"STORE-1\",\n order_id: overrides.order_id ?? \"ORD-1\",\n },\n ],\n },\n ],\n ...overrides,\n };\n }\n\n it(\"uses the official order details endpoint without site_id and chunks at 60 IDs\", async () => {\n axiosGetMock\n .mockResolvedValueOnce({ data: { results: [officialOrderRow({ order_id: \"O1\" })], total: 1, limit: 60 } })\n .mockResolvedValueOnce({ data: { results: [officialOrderRow({ order_id: \"O61\" })], total: 1, limit: 1 } });\n\n const orderIds = Array.from({ length: 61 }, (_, index) => `O${index + 1}`);\n const result = await getMercadoLibreBillingProvisionsByOrder(\"profile-1\", {\n orderIds,\n });\n\n expect(axiosGetMock).toHaveBeenCalledTimes(2);\n expect(axiosGetMock.mock.calls[0][0]).toBe(\"/billing/integration/group/ML/order/details\");\n expect(axiosGetMock.mock.calls[0][1]).toEqual({ params: { order_ids: orderIds.slice(0, 60).join(\",\") } });\n expect(axiosGetMock.mock.calls[1][1]).toEqual({ params: { order_ids: [\"O61\"].join(\",\") } });\n expect(result.chunks_total).toBe(2);\n expect(result.chunks_succeeded).toBe(2);\n expect(result.chunks_failed).toBe(0);\n expect(result.order_ids_found).toEqual([\"O1\", \"O61\"]);\n expect(result.order_ids_not_found).toEqual(orderIds.filter((id) => ![\"O1\", \"O61\"].includes(id)));\n });\n\n it(\"deduplicates found order ids from the official per-order payload\", async () => {\n axiosGetMock.mockResolvedValue({\n data: {\n results: [\n officialOrderRow({\n order_id: \"O1\",\n details: [\n {\n detail_id: \"detail-1\",\n sales_info: [\n { order_id: \"O1\", operation_id: \"OP-1\", sale_date_time: \"2026-06-01T10:00:00Z\", payer_nickname: \"buyer-1\", transaction_amount: 100 },\n ],\n items_info: [\n { item_id: \"ITEM-1\", item_title: \"Producto 1\", item_amount: 1, item_price: 100, order_id: \"O1\" },\n ],\n },\n ],\n }),\n ],\n total: 1,\n limit: 60,\n },\n });\n\n const result = await getMercadoLibreBillingProvisionsByOrder(\"profile-1\", {\n orderIds: [\"O1\", \"O2\"],\n });\n\n expect(result.results).toHaveLength(1);\n expect(result.order_ids_found).toEqual([\"O1\"]);\n expect(result.order_ids_not_found).toEqual([\"O2\"]);\n expect(result.coverage_complete).toBe(true);\n });\n\n it(\"returns the compact order, payment and detail blocks from the official payload\", async () => {\n axiosGetMock.mockResolvedValue({\n data: {\n results: [officialOrderRow({ order_id: \"O1\", sale_fee: null })],\n total: 1,\n limit: 60,\n },\n });\n\n const result = await meliGetBillingProvisionsByOrderHandler({\n profileId: \"profile-1\",\n orderIds: [\"O1\"],\n });\n\n expect(result).toHaveProperty(\"kind\", \"object\");\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n\n expect(payload.profile_id).toBe(\"meli-profile-1\");\n expect(payload.endpoint).toBe(\"/billing/integration/group/ML/order/details\");\n expect(payload.orders_schema).toEqual(ordersSchema);\n expect(payload.payment_info_schema).toEqual(paymentInfoSchema);\n expect(payload.details_schema).toEqual(byOrderDetailsSchema);\n expect(payload.details_sales_schema).toEqual(byOrderDetailsSalesSchema);\n expect(payload.details_items_schema).toEqual(byOrderDetailsItemsSchema);\n\n const orders = payload.orders as unknown[][];\n const paymentInfo = payload.payment_info as unknown[][];\n const details = payload.details as unknown[][];\n const detailsSales = payload.details_sales as unknown[][];\n const detailsItems = payload.details_items as unknown[][];\n\n expect(orders).toHaveLength(1);\n expect(orders[0][0]).toBe(\"O1\");\n expect(orders[0][1]).toBeNull();\n expect(paymentInfo).toHaveLength(1);\n expect(paymentInfo[0][0]).toBe(\"O1\");\n expect(details).toHaveLength(1);\n expect(details[0][0]).toBe(\"O1\");\n expect(detailsSales).toHaveLength(1);\n expect(detailsItems).toHaveLength(1);\n\n const metadata = payload.metadata as Record<string, unknown>;\n expect(metadata.order_ids_requested).toEqual([\"O1\"]);\n expect(metadata.order_ids_found).toEqual([\"O1\"]);\n expect(metadata.order_ids_not_found).toEqual([]);\n expect(metadata.coverage_complete).toBe(true);\n });\n});\n\n// \u2500\u2500 Tool handler unit tests \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ndescribe(\"meliGetBillingProvisionsSummaryHandler\", () => {\n beforeEach(() => {\n vi.clearAllMocks();\n vi.mocked(resolveProfileMock).mockResolvedValue({\n ok: true,\n value: { profileId: \"meli-profile-1\" },\n } as never);\n });\n\n function mockApi(results: Record<string, unknown>[], last_id: string | null = null, total?: number) {\n return { data: { results, last_id, total: total ?? results.length, limit: 1000 } };\n }\n\n it(\"validates schema: periodKey must be YYYY-MM-01 format\", () => {\n const valid = \"2026-06-01\";\n const invalid = \"2026-06-15\";\n\n expect(() => meliGetBillingProvisionsSummarySchema.parse({ periodKey: valid, scope: \"ml\" })).not.toThrow();\n expect(() => meliGetBillingProvisionsSummarySchema.parse({ periodKey: invalid, scope: \"ml\" })).toThrow();\n });\n\n it(\"validates schema: scope must be valid enum\", () => {\n expect(() =>\n meliGetBillingProvisionsSummarySchema.parse({ periodKey: \"2026-06-01\", scope: \"ml\" })\n ).not.toThrow();\n expect(() =>\n meliGetBillingProvisionsSummarySchema.parse({ periodKey: \"2026-06-01\", scope: \"invalid\" })\n ).toThrow();\n });\n\n it(\"aggregates single scope with currency totals using nested payload shape\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: { detail_id: \"d1\", detail_amount: 100, detail_sub_type: \"CVFV\", transaction_detail: \"Cargo por vender\" },\n sales_info: [{ order_id: \"O1\" }],\n items_info: [{ item_id: \"I1\" }],\n }),\n nestedRow({\n charge_info: { detail_id: \"d2\", detail_amount: 25, detail_sub_type: \"CFF\", transaction_detail: \"Cargo por env\u00EDos de Mercado Libre\" },\n sales_info: [{ order_id: \"O2\" }],\n }),\n nestedRow({\n charge_info: { detail_id: \"d3\", detail_amount: 150, detail_sub_type: \"CVFV\", transaction_detail: \"Cargo por vender\" },\n currency_info: { currency_id: \"USD\" },\n sales_info: [{ order_id: \"O3\" }],\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n expect(result).toHaveProperty(\"kind\", \"object\");\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n\n expect(payload.profile_id).toBe(\"meli-profile-1\");\n expect(payload.scope).toBe(\"ml\");\n\n // \u2500\u2500 details_schema \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n expect(payload.details_schema).toEqual(detailsSchema);\n\n // \u2500\u2500 details (compact rows) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const details = payload.details as unknown[][];\n expect(details).toHaveLength(3);\n // Each row must be an array\n for (const row of details) {\n expect(Array.isArray(row)).toBe(true);\n expect(row).toHaveLength(detailsSchema.length);\n }\n // Row 0: detail_id=\"d1\", amount=100, currency=\"ARS\"\n expect(details[0][0]).toBe(\"d1\"); // detail_id\n expect(details[0][4]).toBe(100); // detail_amount\n expect(details[0][5]).toBe(\"ARS\"); // currency_id\n expect(details[0][8]).toBe(\"O1\"); // order_id\n expect(details[0][10]).toBe(\"I1\"); // item_id\n\n // Row 2: currency_id=\"USD\"\n expect(details[2][5]).toBe(\"USD\");\n\n // \u2500\u2500 summary \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const summary = payload.summary as Record<string, unknown>;\n expect(summary.detail_count).toBe(3);\n expect(summary.order_count_detected).toBe(3);\n expect(summary.item_count_detected).toBe(1);\n\n const currTotals = summary.currency_totals as Record<string, Record<string, unknown>>;\n expect(currTotals).toHaveProperty(\"ARS\");\n expect(currTotals).toHaveProperty(\"USD\");\n\n // Verify monetary field names (only the four aggregate fields)\n const arsBucket = currTotals.ARS;\n expect(Object.keys(arsBucket).sort()).toEqual([\n \"bonus_amount_total\", \"charge_amount_total\", \"discount_amount_total\", \"net_effect_total\",\n ]);\n expect(arsBucket.charge_amount_total).toBe(125);\n expect(arsBucket.bonus_amount_total).toBe(0);\n expect(arsBucket.discount_amount_total).toBe(0);\n expect(arsBucket.net_effect_total).toBe(125);\n\n expect(currTotals.USD.charge_amount_total).toBe(150);\n\n // Verify OLD fields are absent\n expect(summary.totals_by_concept).toBeUndefined();\n expect(summary.totals_by_concept_by_currency).toBeUndefined();\n expect(payload.raw_sections).toBeUndefined();\n expect(payload.enriched_sections).toBeUndefined();\n expect(payload.classification_diagnostics).toBeUndefined();\n expect(payload.summary_by_scope).toBeUndefined();\n\n // \u2500\u2500 diagnostics \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const diag = payload.diagnostics as Record<string, unknown>;\n expect(diag).toHaveProperty(\"detail_sub_types_observed\");\n expect(diag).toHaveProperty(\"marketplaces_observed\");\n expect(diag).toHaveProperty(\"concept_types_observed\");\n expect(Array.isArray(diag.detail_sub_types_observed)).toBe(true);\n\n // \u2500\u2500 metadata \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n const metadata = payload.metadata as Record<string, unknown>;\n expect(metadata.coverage_complete).toBe(true);\n expect(metadata.coverage_by_scope).toBeDefined();\n });\n\n it(\"handles scope=all by calling all four scopes with nested payload\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: { detail_id: \"shared-1\", detail_amount: 50, detail_sub_type: \"sale\" },\n sales_info: [{ order_id: \"O-COMMON\" }],\n items_info: [{ item_id: \"I-COMMON\" }],\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"all\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n expect(payload.scope).toBe(\"all\");\n\n const summary = payload.summary as Record<string, unknown>;\n expect(summary.detail_count).toBe(4);\n expect(summary.order_count_detected).toBe(1);\n expect(summary.item_count_detected).toBe(1);\n\n const details = payload.details as unknown[][];\n expect(details).toHaveLength(4);\n\n const metadata = payload.metadata as Record<string, unknown>;\n expect(metadata.sources_called).toBe(4);\n expect(metadata.pages_succeeded).toBe(4);\n expect(metadata.coverage_complete).toBe(true);\n expect(metadata.coverage_by_scope).toBeDefined();\n });\n\n it(\"handles credit notes with negative amounts \u2014 nested shape\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 500, detail_sub_type: \"CVFV\", transaction_detail: \"Cargo por vender\" } }),\n nestedRow({ charge_info: { detail_id: \"d2\", detail_amount: -150, detail_sub_type: \"BVFV\", transaction_detail: \"Anulaci\u00F3n del cargo por vender\" } }),\n nestedRow({ charge_info: { detail_id: \"d3\", detail_amount: -50, detail_sub_type: \"BFF\", transaction_detail: \"Anulaci\u00F3n del cargo por env\u00EDos\" } }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"CREDIT_NOTE\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n expect(payload.document_type).toBe(\"CREDIT_NOTE\");\n\n const currTotals = (payload.summary as Record<string, unknown>).currency_totals as Record<string, Record<string, unknown>>;\n expect(currTotals.ARS.charge_amount_total).toBe(500);\n expect(currTotals.ARS.bonus_amount_total).toBe(-200);\n expect(currTotals.ARS.discount_amount_total).toBe(0);\n expect(currTotals.ARS.net_effect_total).toBe(300);\n });\n\n it(\"handles mixed positive and negative amounts within same concept (nested)\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 200, detail_sub_type: \"CVFV\", transaction_detail: \"Cargo por vender\" } }),\n nestedRow({ charge_info: { detail_id: \"d2\", detail_amount: -80, detail_sub_type: \"BVFF\", transaction_detail: \"Anulaci\u00F3n del costo por unidad vendida\" } }),\n nestedRow({ charge_info: { detail_id: \"d3\", detail_amount: 50, detail_sub_type: \"CFF\", transaction_detail: \"Cargo por env\u00EDos de Mercado Libre\" } }),\n nestedRow({ charge_info: { detail_id: \"d4\", detail_amount: -20, detail_sub_type: \"BXD\", transaction_detail: \"Anulaci\u00F3n del cargo por env\u00EDos\" } }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const currTotals = (payload.summary as Record<string, unknown>).currency_totals as Record<string, Record<string, unknown>>;\n\n expect(currTotals.ARS.charge_amount_total).toBe(250);\n expect(currTotals.ARS.bonus_amount_total).toBe(-100);\n expect(currTotals.ARS.discount_amount_total).toBe(0);\n expect(currTotals.ARS.net_effect_total).toBe(150);\n });\n\n it(\"deduplicates order and item counts globally across scopes\", async () => {\n let callCount = 0;\n axiosGetMock.mockImplementation(() => {\n callCount++;\n const scopeIndex = callCount - 1;\n const scopes = [\"ml\", \"mp\", \"flex\", \"full\"];\n const isPayment = scopes[scopeIndex] === \"mp\";\n return Promise.resolve(mockApi([\n nestedRow({\n charge_info: {\n detail_id: `d-${scopes[scopeIndex]}`,\n detail_amount: 50,\n detail_sub_type: isPayment ? \"payment\" : \"sale\",\n },\n sales_info: [{ order_id: \"ORDER-1\" }],\n items_info: [{ item_id: scopeIndex < 2 ? \"ITEM-A\" : \"ITEM-B\" }],\n }),\n ]));\n });\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"all\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const summary = payload.summary as Record<string, unknown>;\n expect(summary.detail_count).toBe(4);\n expect(summary.order_count_detected).toBe(1);\n expect(summary.item_count_detected).toBe(2);\n });\n\n it(\"includes coverage_by_scope with per-scope operational metadata\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 10 } }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const covByScope = (payload.metadata as Record<string, unknown>).coverage_by_scope as Record<string, Record<string, unknown>>;\n\n expect(covByScope).toHaveProperty(\"ml\");\n expect(covByScope.ml.coverage_complete).toBe(true);\n expect(covByScope.ml.last_id_seen).toBeUndefined();\n expect(typeof covByScope.ml.pages_requested).toBe(\"number\");\n expect(typeof covByScope.ml.pages_succeeded).toBe(\"number\");\n expect(typeof covByScope.ml.pages_failed).toBe(\"number\");\n expect(typeof covByScope.ml.detail_count).toBe(\"number\");\n });\n\n it(\"continuation_by_scope is absent when coverage is complete\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 10 } }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n expect((payload.metadata as Record<string, unknown>).continuation_by_scope).toBeUndefined();\n });\n\n it(\"reports coverage_complete=false and continuation_by_scope when a scope has partial coverage\", async () => {\n axiosGetMock\n .mockResolvedValueOnce(mockApi([\n nestedRow({ charge_info: { detail_id: \"a\", detail_amount: 10 } }),\n ], \"page-1-last\", 10))\n .mockRejectedValueOnce(new Error(\"Network error\"));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const metadata = payload.metadata as Record<string, unknown>;\n expect(metadata.coverage_complete).toBe(false);\n expect(metadata.pages_succeeded).toBe(1);\n expect(metadata.pages_failed).toBe(1);\n expect(metadata.coverage_by_scope).toBeDefined();\n\n const covByScope = metadata.coverage_by_scope as Record<string, Record<string, unknown>>;\n expect(covByScope.ml.coverage_complete).toBe(false);\n expect(covByScope.ml.last_id_seen).toBe(\"page-1-last\");\n\n expect(metadata.continuation_by_scope).toBeDefined();\n const continuation = metadata.continuation_by_scope as Record<string, Record<string, unknown>>;\n expect(continuation.ml.last_id).toBe(\"page-1-last\");\n expect(typeof continuation.ml.hint).toBe(\"string\");\n expect(continuation.ml.hint).toContain(\"fromIdByScope\");\n expect(continuation.ml.hint).toContain(\"page-1-last\");\n });\n\n it(\"multi-currency: totals_by_concept is absent \u2014 only currency_totals with four fields\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 1000, detail_sub_type: \"CVFV\", transaction_detail: \"Cargo por vender\" } }),\n nestedRow({ charge_info: { detail_id: \"d2\", detail_amount: 200, detail_sub_type: \"CFF\", transaction_detail: \"Cargo por env\u00EDos de Mercado Libre\" } }),\n nestedRow({\n charge_info: { detail_id: \"d3\", detail_amount: 50, detail_sub_type: \"CVFV\", transaction_detail: \"Cargo por vender\" },\n currency_info: { currency_id: \"USD\" },\n }),\n nestedRow({\n charge_info: { detail_id: \"d4\", detail_amount: 10, detail_sub_type: \"CVFN\", transaction_detail: \"Costo por ofrecer cuotas\" },\n currency_info: { currency_id: \"USD\" },\n }),\n nestedRow({\n charge_info: { detail_id: \"d5\", detail_amount: -5, detail_sub_type: \"BVFV\", transaction_detail: \"Anulaci\u00F3n del cargo por vender\" },\n currency_info: { currency_id: \"USD\" },\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const summary = payload.summary as Record<string, unknown>;\n\n // OLD fields must be absent\n expect(summary.totals_by_concept).toBeUndefined();\n expect(summary.totals_by_concept_by_currency).toBeUndefined();\n\n // currency_totals should have only the four aggregate fields\n const currTotals = summary.currency_totals as Record<string, Record<string, unknown>>;\n expect(currTotals.ARS.charge_amount_total).toBe(1200);\n expect(currTotals.ARS.bonus_amount_total).toBe(0);\n expect(currTotals.ARS.net_effect_total).toBe(1200);\n expect(currTotals.USD.charge_amount_total).toBe(60);\n expect(currTotals.USD.bonus_amount_total).toBe(-5);\n expect(currTotals.USD.net_effect_total).toBe(55);\n // No by_concept in currency buckets\n expect(currTotals.ARS.by_concept).toBeUndefined();\n expect(currTotals.USD.by_concept).toBeUndefined();\n });\n\n it(\"details rows are reversible with compact schema\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: {\n detail_id: \"rev-1\",\n detail_amount: 500,\n detail_sub_type: \"CVFV\",\n transaction_detail: \"Cargo por vender\",\n detail_type: \"CHARGE\",\n concept_type: \"sale\",\n creation_date_time: \"2026-06-15T10:30:00Z\",\n },\n currency_info: { currency_id: \"ARS\" },\n marketplace_info: { marketplace: \"MCLICS\" },\n sales_info: [{ order_id: \"ORD-100\", operation_id: \"OP-200\", shipping_id: \"SH-300\", pack_id: \"PK-400\" }],\n items_info: [{ item_id: \"MLB-500\", item_title: \"Zapatillas Nike\" }],\n document_id: \"DOC-999\",\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const schema = payload.details_schema as string[];\n const details = payload.details as unknown[][];\n\n // Reconstruct: index each row by schema\n const row = details[0];\n const reconstructed: Record<string, unknown> = {};\n schema.forEach((key, i) => { reconstructed[key] = row[i]; });\n\n expect(reconstructed.detail_id).toBe(\"rev-1\");\n expect(reconstructed.detail_type).toBe(\"CHARGE\");\n expect(reconstructed.detail_sub_type).toBe(\"CVFV\");\n expect(reconstructed.transaction_detail).toBe(\"Cargo por vender\");\n expect(reconstructed.detail_amount).toBe(500);\n expect(reconstructed.currency_id).toBe(\"ARS\");\n expect(reconstructed.marketplace).toBe(\"MCLICS\");\n expect(reconstructed.concept_type).toBe(\"sale\");\n expect(reconstructed.order_id).toBe(\"ORD-100\");\n expect(reconstructed.operation_id).toBe(\"OP-200\");\n expect(reconstructed.item_id).toBe(\"MLB-500\");\n expect(reconstructed.item_title).toBe(\"Zapatillas Nike\");\n expect(reconstructed.shipping_id).toBe(\"SH-300\");\n expect(reconstructed.pack_id).toBe(\"PK-400\");\n expect(reconstructed.document_id).toBe(\"DOC-999\");\n expect(reconstructed.creation_date_time).toBe(\"2026-06-15T10:30:00Z\");\n expect(reconstructed.sales_info_count).toBe(1);\n expect(reconstructed.items_info_count).toBe(1);\n });\n\n it(\"returns profile selection when profileId is missing\", async () => {\n vi.mocked(resolveProfileMock).mockResolvedValue({\n ok: false,\n response: { selection_required: true },\n } as never);\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n });\n\n expect(result).toEqual({ selection_required: true });\n });\n\n it(\"defaults documentType to BILL when omitted\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 10 } }),\n ]));\n\n await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n });\n\n const call = axiosGetMock.mock.calls[0];\n expect(call[1].params.document_type).toBe(\"BILL\");\n });\n\n it(\"passes fromIdByScope cursor to the service layer\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 10 } }),\n ]));\n\n await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"ml\",\n documentType: \"BILL\",\n fromIdByScope: { ml: \"cursor-ml-99\" },\n });\n\n const call = axiosGetMock.mock.calls[0];\n expect(call[1].params.from_id).toBe(\"cursor-ml-99\");\n });\n\n it(\"passes fromIdByScope for scope=all with per-scope cursors\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 10 } }),\n ]));\n\n await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\",\n scope: \"all\",\n documentType: \"BILL\",\n fromIdByScope: {\n ml: \"ml-cursor-1\",\n mp: \"mp-cursor-2\",\n },\n });\n\n const allCalls = axiosGetMock.mock.calls;\n expect(allCalls[0][1].params.from_id).toBe(\"ml-cursor-1\");\n expect(allCalls[1][1].params.from_id).toBe(\"mp-cursor-2\");\n expect(allCalls[2][1].params.from_id).toBeUndefined();\n expect(allCalls[3][1].params.from_id).toBeUndefined();\n });\n\n // \u2500\u2500 Diagnostics tests \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n it(\"diagnostics reports observed detail_sub_types\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"1\", detail_amount: 100, detail_sub_type: \"CVFV\" } }),\n nestedRow({ charge_info: { detail_id: \"2\", detail_amount: 50, detail_sub_type: \"CFF\" } }),\n nestedRow({ charge_info: { detail_id: \"3\", detail_amount: 30, detail_sub_type: \"PADS\" } }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const diag = payload.diagnostics as Record<string, string[]>;\n expect(diag.detail_sub_types_observed).toContain(\"CVFV\");\n expect(diag.detail_sub_types_observed).toContain(\"CFF\");\n expect(diag.detail_sub_types_observed).toContain(\"PADS\");\n expect(diag.detail_sub_types_observed).toHaveLength(3);\n });\n\n it(\"diagnostics reports observed marketplaces\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: { detail_id: \"1\", detail_amount: 100, detail_sub_type: \"CVFV\" },\n marketplace_info: { marketplace: \"MCLICS\" },\n }),\n nestedRow({\n charge_info: { detail_id: \"2\", detail_amount: 50, detail_sub_type: \"CFF\" },\n marketplace_info: { marketplace: \"TAXES\" },\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"mp\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const diag = payload.diagnostics as Record<string, string[]>;\n expect(diag.marketplaces_observed).toContain(\"MCLICS\");\n expect(diag.marketplaces_observed).toContain(\"TAXES\");\n expect(diag.marketplaces_observed).toHaveLength(2);\n });\n\n it(\"diagnostics reports observed concept_types\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"1\", detail_amount: 100, detail_sub_type: \"CVFV\", concept_type: \"sale\" } }),\n nestedRow({ charge_info: { detail_id: \"2\", detail_amount: 50, detail_sub_type: \"CFF\", concept_type: \"shipping\" } }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const diag = payload.diagnostics as Record<string, string[]>;\n expect(diag.concept_types_observed).toContain(\"sale\");\n expect(diag.concept_types_observed).toContain(\"shipping\");\n expect(diag.concept_types_observed).toHaveLength(2);\n });\n\n it(\"details_schema is exact and in correct order\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({ charge_info: { detail_id: \"d1\", detail_amount: 10 } }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n\n expect(payload.details_schema).toEqual([\n \"detail_id\",\n \"detail_type\",\n \"detail_sub_type\",\n \"transaction_detail\",\n \"detail_amount\",\n \"currency_id\",\n \"marketplace\",\n \"concept_type\",\n \"order_id\",\n \"operation_id\",\n \"item_id\",\n \"item_title\",\n \"shipping_id\",\n \"pack_id\",\n \"document_id\",\n \"creation_date_time\",\n \"sales_info_count\",\n \"items_info_count\",\n ]);\n });\n\n it(\"empty details produces empty details array and zero summary with currency_totals and secondary blocks\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([], null, 0));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const details = payload.details as unknown[];\n expect(details).toHaveLength(0);\n\n const summary = payload.summary as Record<string, unknown>;\n expect(summary.detail_count).toBe(0);\n expect(summary.order_count_detected).toBe(0);\n expect(summary.item_count_detected).toBe(0);\n\n // currency_totals MUST be present even when empty (contract stability)\n expect(summary.currency_totals).toBeDefined();\n expect(summary.currency_totals).toEqual({});\n\n // Secondary multiplicity blocks MUST be present even when empty\n expect(payload.details_sales).toEqual([]);\n expect(payload.details_items).toEqual([]);\n expect(payload.details_sales_schema).toEqual(detailsSalesSchema);\n expect(payload.details_items_schema).toEqual(detailsItemsSchema);\n\n const diag = payload.diagnostics as Record<string, string[]>;\n expect(diag.detail_sub_types_observed).toHaveLength(0);\n expect(diag.marketplaces_observed).toHaveLength(0);\n expect(diag.concept_types_observed).toHaveLength(0);\n });\n\n // \u2500\u2500 TDD: Multiplicity and null preservation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n it(\"details_schema includes sales_info_count and items_info_count\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: { detail_id: \"d1\", detail_amount: 10 },\n sales_info: [{ order_id: \"O1\" }, { order_id: \"O2\" }, { order_id: \"O3\" }],\n items_info: [{ item_id: \"I1\" }, { item_id: \"I2\" }],\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const details = payload.details as unknown[][];\n const row = details[0];\n\n // Column 16: sales_info_count\n expect(row[16]).toBe(3);\n // Column 17: items_info_count\n expect(row[17]).toBe(2);\n // First sale/item still accessible as forward-compat shortcut\n expect(row[8]).toBe(\"O1\"); // order_id from first sale\n expect(row[10]).toBe(\"I1\"); // item_id from first item\n });\n\n it(\"multiple sales_info produces secondary details_sales block with all entries\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: { detail_id: \"multi-sale\", detail_amount: 100, detail_sub_type: \"CVFV\" },\n sales_info: [\n { order_id: \"ORD-A\", operation_id: \"OP-A\" },\n { order_id: \"ORD-B\", operation_id: \"OP-B\" },\n { order_id: \"ORD-C\" },\n ],\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n\n // Secondary schema present\n expect(payload.details_sales_schema).toEqual(detailsSalesSchema);\n\n const salesRows = payload.details_sales as unknown[][];\n expect(salesRows).toHaveLength(3);\n\n // Each row references the same detail_id\n for (const sr of salesRows) {\n expect(sr[0]).toBe(\"multi-sale\"); // detail_id\n }\n\n // Row 0: ORD-A / OP-A\n expect(salesRows[0][1]).toBe(\"ORD-A\");\n expect(salesRows[0][2]).toBe(\"OP-A\");\n // Row 1: ORD-B / OP-B\n expect(salesRows[1][1]).toBe(\"ORD-B\");\n expect(salesRows[1][2]).toBe(\"OP-B\");\n // Row 2: ORD-C, operation_id null\n expect(salesRows[2][1]).toBe(\"ORD-C\");\n expect(salesRows[2][2]).toBeNull();\n\n // Summary still correct\n const summary = payload.summary as Record<string, unknown>;\n expect(summary.order_count_detected).toBe(3);\n });\n\n it(\"multiple items_info produces secondary details_items block with all entries\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: { detail_id: \"multi-item\", detail_amount: 200, detail_sub_type: \"CVFV\" },\n items_info: [\n { item_id: \"ITEM-1\", item_title: \"Producto A\" },\n { item_id: \"ITEM-2\", item_title: \"Producto B\" },\n { item_id: \"ITEM-3\", item_title: \"Producto C\" },\n { item_id: \"ITEM-4\" },\n ],\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n\n // Secondary schema present\n expect(payload.details_items_schema).toEqual(detailsItemsSchema);\n\n const itemsRows = payload.details_items as unknown[][];\n expect(itemsRows).toHaveLength(4);\n\n // Each row references the same detail_id\n for (const ir of itemsRows) {\n expect(ir[0]).toBe(\"multi-item\"); // detail_id\n }\n\n // Row 0\n expect(itemsRows[0][1]).toBe(\"ITEM-1\");\n expect(itemsRows[0][2]).toBe(\"Producto A\");\n // Row 3: item_title null\n expect(itemsRows[3][1]).toBe(\"ITEM-4\");\n expect(itemsRows[3][2]).toBeNull();\n\n // Summary still correct\n const summary = payload.summary as Record<string, unknown>;\n expect(summary.item_count_detected).toBe(4);\n });\n\n it(\"preserves null values at correct positions without column shift\", async () => {\n // Row with many missing fields should keep nulls in the right places\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: {\n detail_id: \"null-test\",\n detail_amount: 0,\n // detail_type, detail_sub_type, transaction_detail, concept_type, creation_date_time all missing\n },\n currency_info: {}, // no currency_id\n marketplace_info: {}, // no marketplace\n sales_info: [], // no sales\n items_info: [], // no items\n // document_id missing\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n const details = payload.details as unknown[][];\n const row = details[0];\n\n // Verify null positions: schema index \u2192 expected null\n // 0: detail_id \u2192 \"null-test\" (not null)\n expect(row[0]).toBe(\"null-test\");\n // 1: detail_type \u2192 null (missing)\n expect(row[1]).toBeNull();\n // 2: detail_sub_type \u2192 null\n expect(row[2]).toBeNull();\n // 3: transaction_detail \u2192 null\n expect(row[3]).toBeNull();\n // 4: detail_amount \u2192 0\n expect(row[4]).toBe(0);\n // 5: currency_id \u2192 null\n expect(row[5]).toBeNull();\n // 6: marketplace \u2192 null\n expect(row[6]).toBeNull();\n // 7: concept_type \u2192 null\n expect(row[7]).toBeNull();\n // 8-13: order_id, operation_id, item_id, item_title, shipping_id, pack_id \u2192 null (no sales/items)\n expect(row[8]).toBeNull();\n expect(row[9]).toBeNull();\n expect(row[10]).toBeNull();\n expect(row[11]).toBeNull();\n expect(row[12]).toBeNull();\n expect(row[13]).toBeNull();\n // 14: document_id \u2192 null\n expect(row[14]).toBeNull();\n // 15: creation_date_time \u2192 null\n expect(row[15]).toBeNull();\n // 16: sales_info_count \u2192 0\n expect(row[16]).toBe(0);\n // 17: items_info_count \u2192 0\n expect(row[17]).toBe(0);\n\n // No column shift: total length matches schema\n expect(row).toHaveLength(detailsSchema.length);\n\n // Secondary blocks should be empty\n const salesRows = payload.details_sales as unknown[];\n const itemsRows = payload.details_items as unknown[];\n expect(salesRows).toHaveLength(0);\n expect(itemsRows).toHaveLength(0);\n });\n\n it(\"secondary blocks populated even with single sale/item (contract stability)\", async () => {\n axiosGetMock.mockResolvedValue(mockApi([\n nestedRow({\n charge_info: { detail_id: \"single-1\", detail_amount: 50, detail_sub_type: \"CVFV\" },\n sales_info: [{ order_id: \"O-SINGLE\" }],\n items_info: [{ item_id: \"I-SINGLE\", item_title: \"Solo\" }],\n }),\n ]));\n\n const result = await meliGetBillingProvisionsSummaryHandler({\n periodKey: \"2026-06-01\", scope: \"ml\", documentType: \"BILL\",\n });\n\n const payload = (result as unknown as { kind: string; payload: Record<string, unknown> }).payload;\n\n // Secondary blocks should always exist\n const salesRows = payload.details_sales as unknown[][];\n const itemsRows = payload.details_items as unknown[][];\n expect(salesRows).toHaveLength(1);\n expect(itemsRows).toHaveLength(1);\n\n expect(salesRows[0][0]).toBe(\"single-1\");\n expect(salesRows[0][1]).toBe(\"O-SINGLE\");\n expect(itemsRows[0][0]).toBe(\"single-1\");\n expect(itemsRows[0][1]).toBe(\"I-SINGLE\");\n expect(itemsRows[0][2]).toBe(\"Solo\");\n });\n});\n\n// \u2500\u2500 Schema validation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ndescribe(\"meliGetBillingProvisionsSummarySchema validation\", () => {\n it(\"requires profileId and periodKey and scope\", () => {\n const result = meliGetBillingProvisionsSummarySchema.safeParse({});\n expect(result.success).toBe(false);\n expect(result.error?.issues.length).toBeGreaterThanOrEqual(2);\n });\n\n it(\"accepts full valid payload including fromIdByScope\", () => {\n const result = meliGetBillingProvisionsSummarySchema.safeParse({\n profileId: \"my-profile\",\n periodKey: \"2025-01-01\",\n scope: \"all\",\n documentType: \"CREDIT_NOTE\",\n detailType: \"sale\",\n detailSubTypes: [\"commission\"],\n orderIds: [\"O123\"],\n itemIds: [\"I456\"],\n fromIdByScope: { ml: \"abc-123\", mp: \"def-456\" },\n });\n expect(result.success).toBe(true);\n });\n\n it(\"rejects non-string values in fromIdByScope keys\", () => {\n const result = meliGetBillingProvisionsSummarySchema.safeParse({\n profileId: \"my-profile\",\n periodKey: \"2025-01-01\",\n scope: \"ml\",\n fromIdByScope: { ml: 123 },\n });\n expect(result.success).toBe(false);\n });\n\n it(\"accepts empty fromIdByScope\", () => {\n const result = meliGetBillingProvisionsSummarySchema.safeParse({\n profileId: \"my-profile\",\n periodKey: \"2025-01-01\",\n scope: \"ml\",\n fromIdByScope: {},\n });\n expect(result.success).toBe(true);\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }