Commit Graph
100 Commits
Author SHA1 Message Date
Carlos R. L. RodriguesandGitHub 6c94d0205c Feat(order): return reason and transaction methods (#7303) 2024-05-13 16:15:25 +00:00
Carlos R. L. RodriguesandGitHub 5228b14ca9 feat(medusa): complete cart create reservation (#7250) 2024-05-06 14:36:55 -03:00
Carlos R. L. RodriguesandGitHub 5443c69794 feat(link-module): Order Product link (#7243) 2024-05-05 17:26:16 +00:00
Carlos R. L. RodriguesandGitHub aba194de9a chore: complete cart part 2 (#7227) 2024-05-05 10:35:09 -03:00
Carlos R. L. RodriguesandGitHub c32a31e139 feat(inventory): check stock to create reservation (#7209) 2024-05-05 10:24:52 +02:00
Carlos R. L. RodriguesandGitHub 9d3f495314 feat(fulfillment): shipping options context field (#7169) 2024-05-02 09:59:14 -03:00
Carlos R. L. RodriguesandGitHub 3affcc2525 chore(orchestration): replace workflow definition in v1 (#7181) 2024-04-30 13:19:58 -03:00
Carlos R. L. RodriguesandGitHub 1eeb1e9de3 fix(modules-sdk): load custom modules options (#7176) 2024-04-30 09:05:55 -03:00
Carlos R. L. RodriguesandGitHub edcafa140c fix onStepAwaiting events (#7161) 2024-04-29 18:55:41 +02:00
Carlos R. L. RodriguesandGitHub 4b57c5d286 feat(modules-sdk): remote query context filter (#7153)
What:

- Remote query now handles `context` keywork in the arguments to forward it as a filter to the method `list`
- Pricing module `list` method returning `calculated_price` if requested as a field
2024-04-26 10:20:42 +00:00
Carlos R. L. RodriguesandGitHub d02905cefa feat(order): bundled actions (#7133) 2024-04-25 07:06:23 -03:00
Carlos R. L. RodriguesandGitHub 5c71e8304d feat(orders,utils, cart): orders get endpoints and cart totals (#7010) 2024-04-22 11:06:22 +02:00
Carlos R. L. RodriguesandGitHub cc557c8752 Feat(orders,utils, cart): orders get endpoints and cart totals (#7010) 2024-04-22 09:01:18 +00:00
Carlos R. L. RodriguesandGitHub dd35a4dbff fix(modules-sdk): Remote Query "order" as config options (#6925) 2024-04-08 08:17:53 +02:00
Carlos R. L. RodriguesandGitHub b6879f017a feat: Totals calculation (#6980) 2024-04-07 16:50:40 +02:00
Carlos R. L. RodriguesandGitHub df0751f122 Feat: draft order api (#6797) 2024-04-06 16:35:10 +02:00
Carlos R. L. RodriguesandGitHub d333db0842 chore(orchestration): serialize error (#6967) 2024-04-06 11:22:48 +02:00
01487970b2 chore:(product): renaming vars (#6972)
* feat(product): return parents tree

* query mpath with IN

* more tests

* remove where filters

* revert where

* naming

---------

Co-authored-by: Riqwan Thamir <rmthamir@gmail.com>
2024-04-05 19:22:55 +02:00
Carlos R. L. RodriguesandGitHub 09a2220569 feat(product): return parents tree (#6944)
*What*

include option `include_ancestors_tree` to list products including the parent tree.
2024-04-05 16:46:55 +00:00
Carlos R. L. RodriguesandGitHub 56c04f452c Fix(medusa-test-utils): config loader (#6919) 2024-04-03 09:28:40 -03:00
Carlos R. L. RodriguesandGitHub a164c0d512 feat(workflows-sdk,orchestration): async step as background task (#6886) 2024-04-03 11:17:00 +02:00
Carlos R. L. RodriguesandGitHub 1c6ba4468e feat(modules-sdk): remote query retrieve (#6849)
What:

Remote Joiner options to check if keys exist on entry points or relations
2024-03-29 09:26:24 +00:00
Carlos R. L. RodriguesandGitHub e603726985 fix(workflow-engine-*): subscribe response and error (#6869) 2024-03-29 08:23:41 +00:00
Carlos R. L. RodriguesandGitHub 45c49e89f2 chore(workflows-sdk): add idempotencyKey to shared context (#6860) 2024-03-28 17:51:29 +00:00
Carlos R. L. RodriguesandGitHub 7e93eda1a4 feat(orchestration,workflows-sdk,core-flows): workflow cancel (#6778) 2024-03-22 15:03:06 +01:00
60070fb65f fix(link-modules): recreate dismissed link (#6764)
* fix(link-modules): recreate dismissed link

* rm type

---------

Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
2024-03-20 19:12:48 +01:00
Carlos R. L. RodriguesandGitHub 3ca957ec0f feat(workflows-sdk): additional properties to context (#6760) 2024-03-20 17:59:03 +01:00
Carlos R. L. RodriguesandGitHub a8794d48de fix(orchestrator): inject only if it has decorator (#6666) 2024-03-12 08:11:33 +01:00
d48c076b77 chore(order): big number calculations (#6651)
Co-authored-by: Adrien de Peretti <25098370+adrien2p@users.noreply.github.com>
2024-03-11 17:51:00 +00:00
Carlos R. L. RodriguesandGitHub 4625bd1241 feat(orchestration,modules-sdk): options autoCreateServiceNameAlias (#6622)
What:
 Remote joiner options to register service name declared on joiner configs as alias. Default is true, Remote Query in modules-sdk sets it false.
2024-03-07 21:01:30 +00:00
43399c8d0d Feat(order): order changes (#6614)
This is a PR to keep them relatively small. Very likely changes, validations and other features will be added.

What:
  Basic methods to cancel, confirm or decline order changes
  Apply order changes to modify and create a new version of an order

Things related to calculation, Order and Item totals are not covered in this PR. Properties won't match with definition, etc.

Co-authored-by: Adrien de Peretti <25098370+adrien2p@users.noreply.github.com>
2024-03-07 18:24:05 +00:00
Carlos R. L. RodriguesandGitHub 8a946beb75 Fix(orchestrator): Joiner field alias (#6602) 2024-03-06 15:17:11 -03:00
Carlos R. L. RodriguesandGitHub 03ca5c814e feat(order): order change actions engine (#6467) 2024-02-29 16:22:14 -03:00
Carlos R. L. RodriguesandGitHub 56b0b45304 Feat(order): order changes (#6435)
What:
 - Order DB schema migration
 - BigNumberField Decorator
  
![order_schema](https://github.com/medusajs/medusa/assets/37986729/64ec82ca-5c28-46ef-9a57-614c5a4d25f6)
2024-02-20 23:07:57 +00:00
Carlos R. L. RodriguesandGitHub 586df9da25 fix: Loading custom modules (#6411)
What:
   fix custom modules loading in medusa project
   pass medusa logger reference to MedusaApp
2024-02-15 15:06:02 +00:00
Carlos R. L. RodriguesandGitHub 339a946f38 feat(order): module foundation (#6399)
What:
Initial Order module foundation.
Basic models and methods to manage entites like in Cart Module
2024-02-15 13:26:00 +00:00
Carlos R. L. RodriguesandGitHub 0c2a460751 feat(medusa): workflow engine api (#6330)
What:

   Workflow Engine API.
   Endpoints for:
     - List workflow executions
     - Run a workflow
     - Set async steps as success or failure
     - Retrieve the details of a workflow run
2024-02-13 15:19:10 +00:00
Carlos R. L. RodriguesandGitHub 884428a1b5 feat: event aggregator (#6218)
What:
- Event Aggregator Util
- Preparation for normalizing event in a new format (backward compatible with the current format)
- GQL Schema to joiner config and some Entities configured
- Link modules emmiting events
2024-02-05 11:59:10 +00:00
Carlos R. L. RodriguesandGitHub 96ba49329b fix: load custom modules by path (#6312)
What:
medusa-config.js loading custom modules by their path.

```typescript
{
  modules: {
    internalModule: {
      scope: MODULE_SCOPE.INTERNAL,
      resources: MODULE_RESOURCE_TYPE.SHARED,
      resolve: "./internal_module",
      definition: {
        key: "internalModule",
        registrationName: "internalModule",
      },
    },
  }
}
```
2024-02-04 14:26:34 +00:00
Carlos R. L. RodriguesandGitHub 45134e4d11 chore: local workflow proxying methods to pass context (#6263)
What:
- When calling a module's method inside a Local Workflow the MedusaContext is passed as the last argument to the method if not provided
- Add `requestId` to req
- A couple of fixes on Remote Joiner and the data fetcher for internal services

Why:
- The context used to initialize the workflow has to be shared with all modules. properties like transactionId will be used to emit events and requestId to trace logs for example.
2024-02-01 13:37:26 +00:00
Carlos R. L. RodriguesandGitHub 302323916b feat: Workflow engine modules (#6128) 2024-01-23 10:08:08 -03:00
Carlos R. L. RodriguesandGitHub d85fee42ee chore: use loaded module reference (#5763) 2024-01-23 08:31:02 -03:00
Carlos R. L. RodriguesandGitHub 19bbae61f8 fix(modules-sdk): create workflow returning step transformer (#6102) 2024-01-17 09:17:37 -03:00
Carlos R. L. RodriguesandGitHub ffb0c7b4cd feat(workflows-sdk): get name method (#5714) 2023-11-24 16:39:27 +00:00
Carlos R. L. RodriguesandGitHub 9f9db39698 feat(workflows): Workflow DX (#5607) 2023-11-22 17:23:39 +00:00
Carlos R. L. RodriguesandGitHub 130cbc1f43 feat(*): Modules export entities and fields (#5242) 2023-10-03 14:20:43 -07:00
Carlos R. L. RodriguesandGitHub b3f1135fba chore(medusa): link modules as medusa dependency (#5208) 2023-09-26 08:20:29 -04:00
Carlos R. L. RodriguesandGitHub 25dad081b7 fix(admin-ui): translation pt (#5176)
What:
Fix a couple of words in Portuguese
2023-09-21 18:16:22 +00:00
47603f4797 fix(modules-sdk): medusa app load legacy modules (#5115)
* fix: default module path

* fix: allow legacy modules to be loaded by MedusaApp

* changeset

---------

Co-authored-by: Adrien de Peretti <adrien.deperetti@gmail.com>
2023-09-20 10:20:46 +02:00
Carlos R. L. RodriguesandGitHub 1e5a6d4359 fix(modules-sdk): medusa app default module (#5114) 2023-09-18 12:45:13 +00:00
Carlos R. L. RodriguesandGitHub 5362bfc348 feat(medusa): Drop FKs to isolate products (#5042)
What:
Remove FKs related to product domain tables
2023-09-13 12:05:37 +00:00
Carlos R. L. RodriguesandGitHub 05fcfd803e Fix(medusa): duplicated migration (#5029)
Fix duplicated migration class name
2023-09-12 20:15:47 +00:00
Carlos R. L. RodriguesandGitHub 0953bdfe84 feat(orchestration): Remote Joiner field aliases (#5013)
* initial commit

* chore: unit tests and forward arguments
2023-09-12 08:43:25 +02:00
Carlos R. L. RodriguesandGitHub d8649bacaa chore(modules-sdk,orchestration): to remote joiner query (#4974)
Helper function to transform js/json object into RemoteJoinerQuery format.

```typescript
toRemoteJoinerQuery({
  product: {
    fields: ["id", "title"],
    __args: {
      skip: 0,
    },
    variants: {
      fields: ["id", "title", "handle", "sku"],
      shipping_profile: {
        profile: {
          fields: ["id", "name"],
        },
      },
    },
    collections: {
      fields: ["id", "title"],
    },
  },
})
```

outputs:
```
{
  alias: "product",
  fields: ["id", "title"],
  expands: [
    {
      property: "product.variants",
      fields: ["id", "title", "handle", "sku"],
    },
    {
      property: "product.variants.shipping_profile",
    },
    {
      property: "product.variants.shipping_profile.profile",
      fields: ["id", "name"],
    },
    {
      property: "product.collections",
      fields: ["id", "title"],
    },
  ],
  args: [
    {
      name: "skip",
      value: 0,
    },
  ],
};
```
2023-09-10 13:26:50 +00:00
Carlos R. L. RodriguesandGitHub 4b0e3fb2a7 feat(medusa,orchestration): Decouple Product in Cart domain (#4945) 2023-09-08 17:24:46 +02:00
Carlos R. L. RodriguesandGitHub a4906d0ac0 chore(medusa,orchestration,link-modules,modules-sdk): internal services as modules (#4925) 2023-09-04 11:36:05 -03:00
4d16acf5f0 feat(link-modules,modules-sdk, utils, types, products) - Remote Link and Link modules (#4695)
What:
- Definition of all Modules links
- `link-modules` package to manage the creation of all pre-defined link or custom ones

```typescript
import { initialize as iniInventory } from "@medusajs/inventory";
import { initialize as iniProduct } from "@medusajs/product";

import {
  initialize as iniLinks,
  runMigrations as migrateLinks
} from "@medusajs/link-modules";

await Promise.all([iniInventory(), iniProduct()]);


await migrateLinks(); // create tables based on previous loaded modules

await iniLinks(); // load link based on previous loaded modules

await iniLinks(undefined, [
  {
    serviceName: "product_custom_translation_service_link",
    isLink: true,
    databaseConfig: {
      tableName: "product_transalations",
    },
    alias: [
      {
        name: "translations",
      },
    ],
    primaryKeys: ["id", "product_id", "translation_id"],
    relationships: [
      {
        serviceName: Modules.PRODUCT,
        primaryKey: "id",
        foreignKey: "product_id",
        alias: "product",
      },
      {
        serviceName: "custom_translation_service",
        primaryKey: "id",
        foreignKey: "translation_id",
        alias: "transalation",
        deleteCascade: true,
      },
    ],
    extends: [
      {
        serviceName: Modules.PRODUCT,
        relationship: {
          serviceName: "product_custom_translation_service_link",
          primaryKey: "product_id",
          foreignKey: "id",
          alias: "translations",
          isList: true,
        },
      },
      {
        serviceName: "custom_translation_service",
        relationship: {
          serviceName: "product_custom_translation_service_link",
          primaryKey: "product_id",
          foreignKey: "id",
          alias: "product_link",
        },
      },
    ],
  },
]); // custom links
```

Remote Link

```typescript
import { RemoteLink, Modules } from "@medusajs/modules-sdk";

// [...] initialize modules and links

const remoteLink = new RemoteLink();

// upsert the relationship
await remoteLink.create({ // one (object) or many (array)
  [Modules.PRODUCT]: {
    variant_id: "var_abc",
  },
  [Modules.INVENTORY]: {
    inventory_item_id: "iitem_abc",
  },
  data: { // optional additional fields
    required_quantity: 5
  }
});

// dismiss (doesn't cascade)
await remoteLink.dismiss({ // one (object) or many (array)
  [Modules.PRODUCT]: {
    variant_id: "var_abc",
  },
  [Modules.INVENTORY]: {
    inventory_item_id: "iitem_abc",
  },
});

// delete
await remoteLink.delete({
  // every key is a module
  [Modules.PRODUCT]: {
    // every key is a linkable field
    variant_id: "var_abc", // single or multiple values
  },
});

// restore
await remoteLink.restore({
  // every key is a module
  [Modules.PRODUCT]: {
    // every key is a linkable field
    variant_id: "var_abc", // single or multiple values
  },
});

```

Co-authored-by: Riqwan Thamir <5105988+riqwan@users.noreply.github.com>
2023-08-30 14:31:32 +00:00
Carlos R. L. RodriguesandGitHub d9c5e165cd chore: pipeline node version (#4896) 2023-08-28 19:41:47 +00:00
Carlos R. L. RodriguesandGitHub c53fa6cd3b fix(utils,product): mikro orm connection loader (#4825)
Fix shared connection property check
2023-08-22 12:35:52 +00:00
c0ca002901 feat(orchestration,workflows): pipe oncomplete and workflow preparation (#4697)
* chore: pipe onComplete and workflow preparation step

* changeset

* fix: tests

---------

Co-authored-by: Adrien de Peretti <adrien.deperetti@gmail.com>
Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
2023-08-08 13:06:47 +02:00
Carlos R. L. RodriguesandGitHub f12299deb1 Feat: @medusajs/workflows (#4553)
feat: medusa workflows
2023-07-25 10:13:14 -03:00
Carlos R. L. RodriguesandGitHub f174bb6fa1 fix(modules-sdk): remote query get loaded modules (#4596) 2023-07-24 16:20:30 +00:00
Carlos R. L. RodriguesandGitHub 5a8a889c6d feat(modules-sdk): Remote Query (#4463)
* feat: Remote Query
2023-07-19 15:35:36 -03:00
Carlos R. L. RodriguesandGitHub 43427b8893 Feat(medusa) - Orchestrator builder (#4472)
* chore: Trasanction Orchestrator builder

* Feat(medusa): Workflow Manager (#4506)
2023-07-13 10:53:55 -03:00
Carlos R. L. RodriguesandGitHub 499c3478c9 feat: Remote Joiner (#4098) 2023-06-29 15:29:01 +02:00
Carlos R. L. RodriguesandGitHub e73c3e51c9 feat(modules-sdk): Module as singleton instances (#4065) 2023-05-18 10:12:18 +02:00
Carlos R. L. RodriguesandGitHub bd12a95083 chore: Initialize method for modules (#3649)
What:
- Export initialize methods for all modules to be used as a package.
- Export `runMigrations` and `revertMigration` on modules that DB migrations are available

```typescript
import {
  initialize as initializeInventory,
  InventoryServiceInitializeOptions,
  runMigrations as runMigrationsInventory,
} from "@medusajs/inventory";

import { initialize as eventBusInitialize } from "@medusajs/event-bus-redis";

import { initialize as cacheInitialize } from "@medusajs/cache-redis";

const eventBus = await eventBusInitialize({
  redisUrl: "localhost",
});

const cache = await cacheInitialize({
  redisUrl: "localhost",
});

const options: InventoryServiceInitializeOptions = {
  database: {
    type: "postgres",
    url: `postgres://postgres:@localhost/inventory`,
  },
};

await runMigrationsInventory({
  options,
});

const inventoryService = await initializeInventory(options, {
  eventBusService: eventBus,
});

const sku = "sku_123"
const item = await service.createInventoryItem({
  sku,
});

cache.set(sku, { item });

```
2023-03-31 12:09:04 +00:00
Carlos R. L. RodriguesandGitHub 0e8b3c8efb fix stdio (#3633) 2023-03-29 19:19:18 +02:00
Carlos R. L. RodriguesandGitHub 55e94d0b45 fix(modules-sdk): check if dependency is registered (#3620)
* fix: check if dependency is registered

* changeset
2023-03-29 08:47:12 +02:00
Carlos R. L. RodriguesandGitHub bca1f80dd5 chore(medusa, modules-sdk): default module error message (#3605)
* default module error message

* changeset

* unit test
2023-03-28 17:43:20 +02:00
Carlos R. L. RodriguesandGitHub 4e9d257d3b Chore(medusa,utils,types,inventory,stock-location): remove core dependency modules (#3531) 2023-03-23 08:07:32 -03:00
Carlos R. L. RodriguesandGitHub aa690beed7 feat(medusa): Modules initializer (#3352) 2023-03-17 12:18:52 -03:00
Carlos R. L. RodriguesandGitHub 2869763ea9 fix(medusa): EventBusService.emit using Redis mock (#3491)
* Fix eventBusService.emit using redis mock

* revert gitignore

* enqueuer

* unit test add redis_url

* fix test
2023-03-16 09:29:18 +01:00
Carlos R. L. RodriguesandGitHub 77d46220c2 Feat(modules-sdk,inventory,stock-location): modules isolated connection (#3329)
* feat: scoped container for modules
2023-03-15 12:09:45 -03:00
Carlos R. L. RodriguesandGitHub 54dcc1871c feat(medusa,medusa-core-utils): graceful shutdown server (#3408)
* feat: graceful shutdown
2023-03-10 09:11:45 -03:00
Carlos R. L. RodriguesandGitHub ad7f56506f Feat(medusa,modules-sdk): Modules SDK package (#3294) 2023-02-23 13:09:35 -03:00
80452332d8 fix(medusa): Default sales channel on product create (#3249)
What:
Assign the default sales channel if none is provided while creating a new product.


FIXES: CORE-1114

Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
2023-02-14 08:46:14 +00:00
Carlos R. L. RodriguesandGitHub d859ccf551 Feat(medusa) - delete cascade modules associations (#3190)
* delete cascade sales channel x locations, variant x inventory item
2023-02-08 17:23:47 -03:00
Carlos R. L. RodriguesandGitHub 923ccece24 feat(medusa,stock-location,inventory): Integration tests (#3149) 2023-02-06 09:02:43 -03:00
Carlos R. L. RodriguesandGitHub d50db84a33 Feat: TO variant creation (#3097) 2023-02-02 09:01:10 -03:00
Carlos R. L. RodriguesandGitHub f776ed234f feat(medusa): Run shared module migrations (#3109) 2023-02-01 08:10:59 -03:00
2d525237b6 fix(stock-location): Stock location address required (#3065)
What:
- Removes the requirement to have an address id while creating a new stock location.
- Add field company to Location Address

FIXES: CORE-1018

Co-authored-by: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com>
2023-01-23 12:47:04 +00:00
f65f590a27 feat: inventory items api (#2971)
What:
Admin endpoints to handle inventory items and their stock levels per location

FIXES: CORE-975

Co-authored-by: Sebastian Rindom <7554214+srindom@users.noreply.github.com>
2023-01-23 12:06:23 +00:00
Carlos R. L. RodriguesandGitHub aa54d902e5 chore: added missing withTransacton, create-variant using TO (#3047)
Create variant integrated with Inventory modules
2023-01-18 09:29:06 -03:00
Carlos R. L. RodriguesandGitHub 0175388835 feat(medusa): Transaction Orchestrator (#2861)
* chore: transaction orchestrator
2023-01-16 20:16:41 -03:00
Carlos R. L. RodriguesandGitHub f6ec05f3f9 feat(medusa): Validate module required properties (#3029) 2023-01-15 17:08:08 +01:00
Carlos R. L. RodriguesandGitHub 9dbccd9ca7 feat(medusa, stock-location, inventory): Allow modules to integrate with core (#2997)
* feat: module shared resources
2023-01-13 10:39:43 -03:00
Carlos R. L. RodriguesandGitHub 93ee248493 feat(medusa, inventory): Inventory Management module (#2956)
* feat: inventory module
2023-01-10 14:38:30 -03:00
Carlos R. L. RodriguesandGitHub c07ffb6165 feat(medusa): Stock location module (#2907)
* feat: stock location module
2023-01-04 13:11:59 -03:00
Carlos R. L. RodriguesandGitHub 726858d847 chore: complete payment collection on order edit even if confirmed (#2877) 2022-12-22 13:07:41 -03:00
Carlos R. L. RodriguesandGitHub 8dcc805ccf feat(medusa): Validate required id before retrieving (#2738) 2022-12-19 09:49:18 +01:00
Carlos R. L. RodriguesandGitHub 15c667fbd3 feat(medusa,medusa-react): PaymentCollection support (#2659)
* chore: medusa react, order edit complete fix and single payment session
2022-12-07 12:39:35 -03:00
Carlos R. L. RodriguesandGitHub 01a879ac94 chore: markAsAuthorized and payment collection tests (#2620)
* chore: markAsAuthorized and payment collection tests
2022-11-18 11:23:35 -03:00
Carlos R. L. RodriguesandGitHub ccfc5f666d feat(medusa-js): Add payment and payment collections clients (#2608) 2022-11-15 21:27:00 +01:00
Carlos R. L. RodriguesandGitHub 4baa2e0149 docs: payment and payment collection OAS (#2604) 2022-11-15 14:30:47 +00:00
Carlos R. L. RodriguesandGitHub 755ba90c05 feat(medusa): Payment Collection endpoints (#2525) 2022-11-11 18:28:45 +01:00
Carlos R. L. RodriguesandGitHub c3f8297599 feat(medusa): manage payment sessions from payment collection (#2402)
* feat: manage payment sessions from payment collection
2022-11-02 13:34:29 -03:00
Carlos R. L. RodriguesandGitHub b88cef2b1f feat: Development server for core + plugins (#2448) 2022-10-21 15:53:06 +02:00
Carlos R. L. RodriguesandGitHub d0f274dbe7 feat(medusa): PaymentCollectionService (#2365) 2022-10-07 09:37:10 +02:00
Carlos R. L. RodriguesandGitHub e20f77ac66 feat: payment collection data model (#2343)
* feat: payment collection data model
2022-10-04 15:41:12 -03:00