@infrab4a/connect 5.3.0-beta.26 → 5.3.0-beta.27

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 (42) hide show
  1. package/index.cjs.js +403 -66
  2. package/index.esm.js +399 -67
  3. package/package.json +1 -1
  4. package/src/domain/catalog/models/enums/shops.enum.d.ts +2 -0
  5. package/src/domain/catalog/models/types/product-competitors-price.d.ts +3 -2
  6. package/src/domain/catalog/repositories/category-product.repository.d.ts +2 -0
  7. package/src/domain/shop-settings/enums/shop-page-name.enum.d.ts +2 -1
  8. package/src/domain/shop-settings/models/shop-page-settings.d.ts +4 -1
  9. package/src/domain/shop-settings/models/types/shop-page-section.type.d.ts +140 -0
  10. package/src/domain/shopping/models/enums/index.d.ts +3 -0
  11. package/src/domain/shopping/models/enums/order-status.enum.d.ts +2 -1
  12. package/src/domain/shopping/models/enums/shopping-recurrence-cycle.enum.d.ts +5 -0
  13. package/src/domain/shopping/models/enums/shopping-recurrence-edition-status.enum.d.ts +11 -0
  14. package/src/domain/shopping/models/enums/shopping-recurrence-status.enum.d.ts +7 -0
  15. package/src/domain/shopping/models/index.d.ts +1 -0
  16. package/src/domain/shopping/models/order.d.ts +12 -0
  17. package/src/domain/shopping/models/recurrence/index.d.ts +2 -0
  18. package/src/domain/shopping/models/recurrence/shopping-recurrence-edition.d.ts +18 -0
  19. package/src/domain/shopping/models/recurrence/shopping-recurrence.d.ts +45 -0
  20. package/src/domain/shopping/models/shipping-method.d.ts +2 -0
  21. package/src/domain/shopping/models/types/index.d.ts +1 -0
  22. package/src/domain/shopping/models/types/line-item-recurrence.type.d.ts +2 -0
  23. package/src/domain/shopping/repositories/index.d.ts +1 -0
  24. package/src/domain/shopping/repositories/recurrence/index.d.ts +2 -0
  25. package/src/domain/shopping/repositories/recurrence/shopping-recurrence-edition.repository.d.ts +4 -0
  26. package/src/domain/shopping/repositories/recurrence/shopping-recurrence.repository.d.ts +9 -0
  27. package/src/domain/shopping/types/create-recurrency-payload.type.d.ts +8 -0
  28. package/src/domain/shopping/types/index.d.ts +1 -0
  29. package/src/domain/shopping/types/payment-card-info.type.d.ts +5 -3
  30. package/src/infra/firebase/firestore/repositories/shopping/index.d.ts +2 -0
  31. package/src/infra/firebase/firestore/repositories/shopping/shopping-recurrence-edition-firestore.repository.d.ts +7 -0
  32. package/src/infra/firebase/firestore/repositories/shopping/shopping-recurrence-firestore.repository.d.ts +10 -0
  33. package/src/infra/hasura-graphql/repositories/catalog/category-product-hasura-graphql.repository.d.ts +2 -0
  34. package/src/infra/mercado-pago/adapters/mercado-pago-base-axios.d.ts +11 -0
  35. package/src/infra/mercado-pago/adapters/mercado-pago-card-payment-axios.adapter.d.ts +5 -4
  36. package/src/infra/mercado-pago/adapters/mercado-pago-pix-payment-axios.adapter.d.ts +4 -3
  37. package/src/infra/mercado-pago/types/mercado-pago-response.type.d.ts +23 -0
  38. package/src/infra/pagarme/adapters/v5/index.d.ts +1 -0
  39. package/src/infra/pagarme/adapters/v5/pagarmev5-base-axios.d.ts +11 -0
  40. package/src/infra/pagarme/adapters/v5/pagarmev5-card-payment-axios.adapter.d.ts +5 -4
  41. package/src/infra/pagarme/adapters/v5/pagarmev5-pix-payment-axios.adapter.d.ts +4 -3
  42. package/src/infra/pagarme/types/v5/pagarmev5-order-response.type.d.ts +115 -0
package/index.cjs.js CHANGED
@@ -715,6 +715,8 @@ exports.Shops = void 0;
715
715
  Shops["MENSMARKET"] = "mensmarket";
716
716
  Shops["GLAMSHOP"] = "Glamshop";
717
717
  Shops["GLAMPOINTS"] = "Glampoints";
718
+ Shops["GLAMBEAUTY"] = "Glambeauty";
719
+ Shops["ELLA"] = "ella";
718
720
  Shops["ALL"] = "ALL";
719
721
  })(exports.Shops || (exports.Shops = {}));
720
722
 
@@ -1691,8 +1693,38 @@ exports.OrderStatus = void 0;
1691
1693
  OrderStatus["ENTREGUE"] = "Entregue";
1692
1694
  OrderStatus["CANCELADO"] = "Cancelado";
1693
1695
  OrderStatus["PENDENTE_REENVIO"] = "Pendente reenvio";
1696
+ OrderStatus["AGUARDANDO_STOCK_REENVIO"] = "Aguardando stock para reenvio";
1694
1697
  })(exports.OrderStatus || (exports.OrderStatus = {}));
1695
1698
 
1699
+ exports.ShoppingRecurrenceCycle = void 0;
1700
+ (function (ShoppingRecurrenceCycle) {
1701
+ ShoppingRecurrenceCycle[ShoppingRecurrenceCycle["MONTHLY"] = 1] = "MONTHLY";
1702
+ ShoppingRecurrenceCycle[ShoppingRecurrenceCycle["BIMONTHLY"] = 2] = "BIMONTHLY";
1703
+ ShoppingRecurrenceCycle[ShoppingRecurrenceCycle["QUARTERLY"] = 3] = "QUARTERLY";
1704
+ })(exports.ShoppingRecurrenceCycle || (exports.ShoppingRecurrenceCycle = {}));
1705
+
1706
+ exports.ShoppingRecurrenceEditionStatus = void 0;
1707
+ (function (ShoppingRecurrenceEditionStatus) {
1708
+ ShoppingRecurrenceEditionStatus["SCHEDULED"] = "scheduled";
1709
+ ShoppingRecurrenceEditionStatus["PAUSED"] = "paused";
1710
+ ShoppingRecurrenceEditionStatus["SKIPPED"] = "skipped";
1711
+ ShoppingRecurrenceEditionStatus["PROCESSING"] = "processing";
1712
+ ShoppingRecurrenceEditionStatus["FINISHED"] = "finished";
1713
+ ShoppingRecurrenceEditionStatus["PAYMENT_FAIL"] = "payment_fail";
1714
+ ShoppingRecurrenceEditionStatus["AWAITING_PAYMENT"] = "awaiting_payment";
1715
+ ShoppingRecurrenceEditionStatus["STOCK_VALIDATION"] = "stock_validation";
1716
+ ShoppingRecurrenceEditionStatus["CANCELLED"] = "cancelled";
1717
+ })(exports.ShoppingRecurrenceEditionStatus || (exports.ShoppingRecurrenceEditionStatus = {}));
1718
+
1719
+ exports.ShoppingRecurrenceStatus = void 0;
1720
+ (function (ShoppingRecurrenceStatus) {
1721
+ ShoppingRecurrenceStatus["ACTIVE"] = "active";
1722
+ ShoppingRecurrenceStatus["PAUSED"] = "paused";
1723
+ ShoppingRecurrenceStatus["CANCELLED"] = "cancelled";
1724
+ ShoppingRecurrenceStatus["PAYMENT_FAILED"] = "payment_failed";
1725
+ ShoppingRecurrenceStatus["WAITING_STOCK"] = "waiting_stock";
1726
+ })(exports.ShoppingRecurrenceStatus || (exports.ShoppingRecurrenceStatus = {}));
1727
+
1696
1728
  class Order extends Checkout {
1697
1729
  }
1698
1730
  tslib.__decorate([
@@ -1706,6 +1738,38 @@ class OrderBlocked extends BaseModel {
1706
1738
  }
1707
1739
  }
1708
1740
 
1741
+ class ShoppingRecurrence extends BaseModel {
1742
+ static get identifiersFields() {
1743
+ return ['id'];
1744
+ }
1745
+ }
1746
+ tslib.__decorate([
1747
+ classTransformer.Type(() => User),
1748
+ tslib.__metadata("design:type", User)
1749
+ ], ShoppingRecurrence.prototype, "user", void 0);
1750
+ tslib.__decorate([
1751
+ classTransformer.Type(() => UserAddress),
1752
+ tslib.__metadata("design:type", UserAddress)
1753
+ ], ShoppingRecurrence.prototype, "shippingAddress", void 0);
1754
+ tslib.__decorate([
1755
+ classTransformer.Type(() => UserAddress),
1756
+ tslib.__metadata("design:type", UserAddress)
1757
+ ], ShoppingRecurrence.prototype, "billingAddress", void 0);
1758
+ tslib.__decorate([
1759
+ classTransformer.Type(() => ShippingMethod),
1760
+ tslib.__metadata("design:type", ShippingMethod)
1761
+ ], ShoppingRecurrence.prototype, "shipping", void 0);
1762
+ tslib.__decorate([
1763
+ classTransformer.Type(() => Coupon),
1764
+ tslib.__metadata("design:type", Coupon)
1765
+ ], ShoppingRecurrence.prototype, "coupon", void 0);
1766
+
1767
+ class ShoppingRecurrenceEdition extends BaseModel {
1768
+ static get identifiersFields() {
1769
+ return ['id'];
1770
+ }
1771
+ }
1772
+
1709
1773
  class CheckoutSubscription extends BaseModel {
1710
1774
  static get identifiersFields() {
1711
1775
  return ['id'];
@@ -2340,6 +2404,7 @@ exports.ShopPageName = void 0;
2340
2404
  ShopPageName["LP_GLAMQUEENS"] = "LP_GLAMQUEENS";
2341
2405
  ShopPageName["LP_INVITE"] = "LP_INVITE";
2342
2406
  ShopPageName["LP_LIVELO"] = "LP_LIVELO";
2407
+ ShopPageName["GLAM_NEW_HOME"] = "GLAM_NEW_HOME";
2343
2408
  })(exports.ShopPageName || (exports.ShopPageName = {}));
2344
2409
 
2345
2410
  class BeautyQuestionsHelper {
@@ -2417,10 +2482,88 @@ class ShopMenu extends BaseModel {
2417
2482
  }
2418
2483
  }
2419
2484
 
2485
+ var ShopPageSectionType;
2486
+ (function (ShopPageSectionType) {
2487
+ ShopPageSectionType["LIVE"] = "LIVE";
2488
+ ShopPageSectionType["CAROUSEL"] = "CAROUSEL";
2489
+ ShopPageSectionType["BANNER"] = "BANNER";
2490
+ ShopPageSectionType["INFOBARS"] = "INFOBARS";
2491
+ ShopPageSectionType["HIGHLIGHTS"] = "HIGHLIGHTS";
2492
+ ShopPageSectionType["SUBSCRIBER_INFO"] = "SUBSCRIBER_INFO";
2493
+ ShopPageSectionType["COLLECTION"] = "COLLECTION";
2494
+ ShopPageSectionType["BEAUTY_PROFILE_COLLECTION"] = "BEAUTY_PROFILE_COLLECTION";
2495
+ ShopPageSectionType["PLANS"] = "PLANS";
2496
+ ShopPageSectionType["SINGLE_PLAN"] = "SINGLE_PLAN";
2497
+ ShopPageSectionType["BRANDS"] = "BRANDS";
2498
+ ShopPageSectionType["NEWSLETTER"] = "NEWSLETTER";
2499
+ })(ShopPageSectionType || (ShopPageSectionType = {}));
2500
+
2501
+ /* eslint-disable max-lines-per-function */
2420
2502
  class ShopSettings extends BaseModel {
2421
2503
  static get identifiersFields() {
2422
2504
  return ['id'];
2423
2505
  }
2506
+ getPageSections(displayRules) {
2507
+ const now = new Date();
2508
+ return (Array.isArray(this.sections) ? this.sections : [])
2509
+ .map((section) => {
2510
+ // Filtra banners dentro de carrousel
2511
+ if (section.type === ShopPageSectionType.CAROUSEL && Array.isArray(section.banners)) {
2512
+ const filteredBanners = section.banners.filter((banner) => {
2513
+ // Filtra por displayRules
2514
+ const rulesMatch = banner.displayRules.length
2515
+ ? banner.displayRules.some((rule) => Object.keys(rule).every((key) => rule[key] === displayRules[key]))
2516
+ : true;
2517
+ // Filtra por publishDate e expirationDate
2518
+ const publishOk = !banner.publishDate || now >= new Date(banner.publishDate);
2519
+ const expireOk = !banner.expirationDate || now <= new Date(banner.expirationDate);
2520
+ return rulesMatch && publishOk && expireOk;
2521
+ });
2522
+ return { ...section, banners: filteredBanners };
2523
+ }
2524
+ // Filtra highlights
2525
+ if (section.type === ShopPageSectionType.HIGHLIGHTS && Array.isArray(section.highlights)) {
2526
+ const filteredHighlights = section.highlights.filter((highlight) => {
2527
+ // Filtra por displayRules
2528
+ const rulesMatch = highlight.displayRules.length
2529
+ ? highlight.displayRules.some((rule) => Object.keys(rule).every((key) => rule[key] === displayRules[key]))
2530
+ : true;
2531
+ return rulesMatch;
2532
+ });
2533
+ const sortedHighlights = !displayRules.beautyProfile
2534
+ ? filteredHighlights.sort((a, b) => (a.starred === b.starred ? 0 : a.starred ? -1 : 1))
2535
+ : filteredHighlights;
2536
+ return { ...section, highlights: sortedHighlights };
2537
+ }
2538
+ // Filtra collections
2539
+ if (section.type === ShopPageSectionType.COLLECTION) {
2540
+ const rulesMatch = section.displayRules.length
2541
+ ? section.displayRules.some((rule) => Object.keys(rule).every((key) => rule[key] === displayRules[key]))
2542
+ : true;
2543
+ const publishOk = !section.publishDate || now >= new Date(section.publishDate);
2544
+ const expireOk = !section.expirationDate || now <= new Date(section.expirationDate);
2545
+ return rulesMatch && publishOk && expireOk ? section : null;
2546
+ }
2547
+ // Filtra banners
2548
+ if (section.type === ShopPageSectionType.BANNER) {
2549
+ const rulesMatch = section.displayRules.length
2550
+ ? section.displayRules.some((rule) => Object.keys(rule).every((key) => rule[key] === displayRules[key]))
2551
+ : true;
2552
+ const publishOk = !section.publishDate || now >= new Date(section.publishDate);
2553
+ const expireOk = !section.expirationDate || now <= new Date(section.expirationDate);
2554
+ return rulesMatch && publishOk && expireOk ? section : null;
2555
+ }
2556
+ if (section.type === ShopPageSectionType.LIVE) {
2557
+ return section.active ? section : null;
2558
+ }
2559
+ if (section.type === ShopPageSectionType.PLANS || section.type === ShopPageSectionType.SINGLE_PLAN) {
2560
+ return displayRules.notSubscriber ? section : null;
2561
+ }
2562
+ // Demais seções retornam normalmente
2563
+ return section;
2564
+ })
2565
+ .filter(Boolean);
2566
+ }
2424
2567
  }
2425
2568
 
2426
2569
  class AdyenBlockedOrderHelper {
@@ -5427,6 +5570,62 @@ class PaymentFirestoreRepository extends withCrudFirestore(withHelpers(withFires
5427
5570
  }
5428
5571
  }
5429
5572
 
5573
+ class ShoppingRecurrenceEditionFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
5574
+ constructor({ firestore, interceptors, cache, }) {
5575
+ super({
5576
+ firestore,
5577
+ collectionName: 'shoppingRecurrenceEditions',
5578
+ model: ShoppingRecurrenceEdition,
5579
+ interceptors,
5580
+ cache,
5581
+ });
5582
+ }
5583
+ }
5584
+
5585
+ class ShoppingRecurrenceFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
5586
+ constructor({ firestore, interceptors, cache, }) {
5587
+ super({
5588
+ firestore,
5589
+ collectionName: 'shoppingRecurrences',
5590
+ model: ShoppingRecurrence,
5591
+ interceptors,
5592
+ cache,
5593
+ });
5594
+ }
5595
+ async findByUserId(userId) {
5596
+ const result = await this.find({
5597
+ filters: {
5598
+ user: {
5599
+ id: userId,
5600
+ },
5601
+ },
5602
+ });
5603
+ return result.data;
5604
+ }
5605
+ async findByUserIdAndStatus(userId, status) {
5606
+ const result = await this.find({
5607
+ filters: {
5608
+ user: {
5609
+ id: userId,
5610
+ },
5611
+ status,
5612
+ },
5613
+ });
5614
+ return result.data;
5615
+ }
5616
+ async findByUserAndShop(userId, shop) {
5617
+ const result = await this.find({
5618
+ filters: {
5619
+ user: {
5620
+ id: userId,
5621
+ },
5622
+ shop,
5623
+ },
5624
+ });
5625
+ return result.data;
5626
+ }
5627
+ }
5628
+
5430
5629
  class SubscriptionPlanFirestoreRepository extends withCrudFirestore(withHelpers(withFirestore(Base))) {
5431
5630
  constructor({ firestore, interceptors, cache, }) {
5432
5631
  super({
@@ -7231,6 +7430,26 @@ class CategoryProductHasuraGraphQLRepository extends withCrudHasuraGraphQL(withH
7231
7430
  },
7232
7431
  });
7233
7432
  }
7433
+ async removeProductFromAllCategories(productId) {
7434
+ this.logger = DebugHelper.from(this, 'removeProductFromAllCategories');
7435
+ await this.mutation('delete_category_product', ['affected_rows'], {
7436
+ where: {
7437
+ type: 'category_product_bool_exp',
7438
+ required: true,
7439
+ value: { product_id: { _eq: productId } },
7440
+ },
7441
+ });
7442
+ }
7443
+ async removeCategoryFromAllProducts(categoryId) {
7444
+ this.logger = DebugHelper.from(this, 'removeCategoryFromAllProducts');
7445
+ await this.mutation('delete_category_product', ['affected_rows'], {
7446
+ where: {
7447
+ type: 'category_product_bool_exp',
7448
+ required: true,
7449
+ value: { category_id: { _eq: categoryId } },
7450
+ },
7451
+ });
7452
+ }
7234
7453
  }
7235
7454
 
7236
7455
  const fieldsConfiguration$3 = [
@@ -9561,7 +9780,7 @@ class MercadoPagoRequestHelper {
9561
9780
  checkoutId: checkout.id,
9562
9781
  },
9563
9782
  payer: this.buildPayer(checkout, card),
9564
- statement_descriptor: checkout.shop === exports.Shops.GLAMSHOP ? 'Glam' : 'Mens Market',
9783
+ statement_descriptor: checkout.shop === exports.Shops.GLAMSHOP ? 'loja glam' : 'mens market',
9565
9784
  additional_info: {
9566
9785
  items: this.buildItems(checkout),
9567
9786
  },
@@ -9777,8 +9996,113 @@ class MercadoPagoBankSlipAxiosAdapter {
9777
9996
  }
9778
9997
  }
9779
9998
 
9780
- class MercadoPagoCardAxiosAdapter {
9999
+ exports.MercadoPagoStatusDetailEnum = void 0;
10000
+ (function (MercadoPagoStatusDetailEnum) {
10001
+ MercadoPagoStatusDetailEnum["accredited"] = "accredited";
10002
+ MercadoPagoStatusDetailEnum["partially_refunded"] = "partially_refunded";
10003
+ MercadoPagoStatusDetailEnum["pending_capture"] = "pending_capture";
10004
+ MercadoPagoStatusDetailEnum["offline_process"] = "offline_process";
10005
+ MercadoPagoStatusDetailEnum["pending_contingency"] = "pending_contingency";
10006
+ MercadoPagoStatusDetailEnum["pending_review_manual"] = "pending_review_manual";
10007
+ MercadoPagoStatusDetailEnum["pending_waiting_transfer"] = "pending_waiting_transfer";
10008
+ MercadoPagoStatusDetailEnum["pending_waiting_payment"] = "pending_waiting_payment";
10009
+ MercadoPagoStatusDetailEnum["pending_challenge"] = "pending_challenge";
10010
+ MercadoPagoStatusDetailEnum["bank_error"] = "bank_error";
10011
+ MercadoPagoStatusDetailEnum["cc_rejected_3ds_mandatory"] = "cc_rejected_3ds_mandatory";
10012
+ MercadoPagoStatusDetailEnum["cc_rejected_bad_filled_card_number"] = "cc_rejected_bad_filled_card_number";
10013
+ MercadoPagoStatusDetailEnum["cc_rejected_bad_filled_date"] = "cc_rejected_bad_filled_date";
10014
+ MercadoPagoStatusDetailEnum["cc_rejected_bad_filled_other"] = "cc_rejected_bad_filled_other";
10015
+ MercadoPagoStatusDetailEnum["cc_rejected_bad_filled_security_code"] = "cc_rejected_bad_filled_security_code";
10016
+ MercadoPagoStatusDetailEnum["cc_rejected_blacklist"] = "cc_rejected_blacklist";
10017
+ MercadoPagoStatusDetailEnum["cc_rejected_call_for_authorize"] = "cc_rejected_call_for_authorize";
10018
+ MercadoPagoStatusDetailEnum["cc_rejected_card_disabled"] = "cc_rejected_card_disabled";
10019
+ MercadoPagoStatusDetailEnum["cc_rejected_card_error"] = "cc_rejected_card_error";
10020
+ MercadoPagoStatusDetailEnum["cc_rejected_duplicated_payment"] = "cc_rejected_duplicated_payment";
10021
+ MercadoPagoStatusDetailEnum["cc_rejected_high_risk"] = "cc_rejected_high_risk";
10022
+ MercadoPagoStatusDetailEnum["cc_rejected_insufficient_amount"] = "cc_rejected_insufficient_amount";
10023
+ MercadoPagoStatusDetailEnum["cc_rejected_invalid_installments"] = "cc_rejected_invalid_installments";
10024
+ MercadoPagoStatusDetailEnum["cc_rejected_max_attempts"] = "cc_rejected_max_attempts";
10025
+ MercadoPagoStatusDetailEnum["cc_rejected_other_reason"] = "cc_rejected_other_reason";
10026
+ MercadoPagoStatusDetailEnum["cc_amount_rate_limit_exceeded"] = "cc_amount_rate_limit_exceeded";
10027
+ MercadoPagoStatusDetailEnum["rejected_insufficient_data"] = "rejected_insufficient_data";
10028
+ MercadoPagoStatusDetailEnum["rejected_by_bank"] = "rejected_by_bank";
10029
+ MercadoPagoStatusDetailEnum["rejected_by_regulations"] = "rejected_by_regulations";
10030
+ MercadoPagoStatusDetailEnum["insufficient_amount"] = "insufficient_amount";
10031
+ MercadoPagoStatusDetailEnum["cc_rejected_card_type_not_allowed"] = "cc_rejected_card_type_not_allowed";
10032
+ })(exports.MercadoPagoStatusDetailEnum || (exports.MercadoPagoStatusDetailEnum = {}));
10033
+
10034
+ exports.MercadoPagoStatusEnum = void 0;
10035
+ (function (MercadoPagoStatusEnum) {
10036
+ MercadoPagoStatusEnum["approved"] = "approved";
10037
+ MercadoPagoStatusEnum["authorized"] = "authorized";
10038
+ MercadoPagoStatusEnum["pending"] = "pending";
10039
+ MercadoPagoStatusEnum["in_process"] = "in_process";
10040
+ MercadoPagoStatusEnum["rejected"] = "rejected";
10041
+ MercadoPagoStatusEnum["cancelled"] = "cancelled";
10042
+ MercadoPagoStatusEnum["refunded"] = "refunded";
10043
+ MercadoPagoStatusEnum["charged_back"] = "charged_back";
10044
+ })(exports.MercadoPagoStatusEnum || (exports.MercadoPagoStatusEnum = {}));
10045
+
10046
+ class MercadoPagoBaseAxiosAdapter {
10047
+ constructor(credentials, paymentRepository) {
10048
+ this.credentials = credentials;
10049
+ this.paymentRepository = paymentRepository;
10050
+ }
10051
+ async refund(order, amount) {
10052
+ const { data } = await axios__default["default"]({
10053
+ method: 'POST',
10054
+ url: `${this.credentials.url}/v1/payments/${order.payment.id}/refunds`,
10055
+ headers: {
10056
+ 'X-Idempotency-Key': `${order.payment.charger_id}-${new Date().getTime()}`,
10057
+ Authorization: `Bearer ${this.credentials.api_key}`,
10058
+ 'Content-Type': 'application/json',
10059
+ },
10060
+ data: {
10061
+ amount: +amount.toFixed(2),
10062
+ },
10063
+ });
10064
+ await this.paymentRepository.create({
10065
+ createdAt: new Date(),
10066
+ updatedAt: new Date(),
10067
+ userId: order.user.id,
10068
+ orderId: order.id,
10069
+ totalPrice: amount,
10070
+ paymentProvider: exports.PaymentProviders.MERCADOPAGO,
10071
+ mercadoPagoId: data.id,
10072
+ transaction: data,
10073
+ });
10074
+ console.warn('[RESPONSE MERCADO PAGO REFUND]', JSON.stringify(data));
10075
+ return {
10076
+ status: this.getRefundStatus(data.status),
10077
+ success: [
10078
+ exports.MercadoPagoStatusEnum.approved,
10079
+ exports.MercadoPagoStatusEnum.refunded,
10080
+ exports.MercadoPagoStatusEnum.cancelled,
10081
+ exports.MercadoPagoStatusEnum.authorized,
10082
+ ].includes(data.status)
10083
+ ? true
10084
+ : false,
10085
+ };
10086
+ }
10087
+ getRefundStatus(status) {
10088
+ if ([exports.MercadoPagoStatusEnum.in_process, exports.MercadoPagoStatusEnum.pending].includes(status)) {
10089
+ return 'processing';
10090
+ }
10091
+ if ([
10092
+ exports.MercadoPagoStatusEnum.approved,
10093
+ exports.MercadoPagoStatusEnum.refunded,
10094
+ exports.MercadoPagoStatusEnum.cancelled,
10095
+ exports.MercadoPagoStatusEnum.authorized,
10096
+ ].includes(status)) {
10097
+ return 'success';
10098
+ }
10099
+ return 'unknown';
10100
+ }
10101
+ }
10102
+
10103
+ class MercadoPagoCardAxiosAdapter extends MercadoPagoBaseAxiosAdapter {
9781
10104
  constructor(credentials, paymentRepository, orderBlockedRepository) {
10105
+ super(credentials, paymentRepository);
9782
10106
  this.credentials = credentials;
9783
10107
  this.paymentRepository = paymentRepository;
9784
10108
  this.orderBlockedRepository = orderBlockedRepository;
@@ -9907,8 +10231,9 @@ class MercadoPagoCardAxiosAdapter {
9907
10231
  }
9908
10232
  }
9909
10233
 
9910
- class MercadoPagoPixAxiosAdapter {
10234
+ class MercadoPagoPixAxiosAdapter extends MercadoPagoBaseAxiosAdapter {
9911
10235
  constructor(credentials, paymentRepository) {
10236
+ super(credentials, paymentRepository);
9912
10237
  this.credentials = credentials;
9913
10238
  this.paymentRepository = paymentRepository;
9914
10239
  }
@@ -9947,53 +10272,6 @@ class MercadoPagoPixAxiosAdapter {
9947
10272
  }
9948
10273
  }
9949
10274
 
9950
- exports.MercadoPagoStatusDetailEnum = void 0;
9951
- (function (MercadoPagoStatusDetailEnum) {
9952
- MercadoPagoStatusDetailEnum["accredited"] = "accredited";
9953
- MercadoPagoStatusDetailEnum["partially_refunded"] = "partially_refunded";
9954
- MercadoPagoStatusDetailEnum["pending_capture"] = "pending_capture";
9955
- MercadoPagoStatusDetailEnum["offline_process"] = "offline_process";
9956
- MercadoPagoStatusDetailEnum["pending_contingency"] = "pending_contingency";
9957
- MercadoPagoStatusDetailEnum["pending_review_manual"] = "pending_review_manual";
9958
- MercadoPagoStatusDetailEnum["pending_waiting_transfer"] = "pending_waiting_transfer";
9959
- MercadoPagoStatusDetailEnum["pending_waiting_payment"] = "pending_waiting_payment";
9960
- MercadoPagoStatusDetailEnum["pending_challenge"] = "pending_challenge";
9961
- MercadoPagoStatusDetailEnum["bank_error"] = "bank_error";
9962
- MercadoPagoStatusDetailEnum["cc_rejected_3ds_mandatory"] = "cc_rejected_3ds_mandatory";
9963
- MercadoPagoStatusDetailEnum["cc_rejected_bad_filled_card_number"] = "cc_rejected_bad_filled_card_number";
9964
- MercadoPagoStatusDetailEnum["cc_rejected_bad_filled_date"] = "cc_rejected_bad_filled_date";
9965
- MercadoPagoStatusDetailEnum["cc_rejected_bad_filled_other"] = "cc_rejected_bad_filled_other";
9966
- MercadoPagoStatusDetailEnum["cc_rejected_bad_filled_security_code"] = "cc_rejected_bad_filled_security_code";
9967
- MercadoPagoStatusDetailEnum["cc_rejected_blacklist"] = "cc_rejected_blacklist";
9968
- MercadoPagoStatusDetailEnum["cc_rejected_call_for_authorize"] = "cc_rejected_call_for_authorize";
9969
- MercadoPagoStatusDetailEnum["cc_rejected_card_disabled"] = "cc_rejected_card_disabled";
9970
- MercadoPagoStatusDetailEnum["cc_rejected_card_error"] = "cc_rejected_card_error";
9971
- MercadoPagoStatusDetailEnum["cc_rejected_duplicated_payment"] = "cc_rejected_duplicated_payment";
9972
- MercadoPagoStatusDetailEnum["cc_rejected_high_risk"] = "cc_rejected_high_risk";
9973
- MercadoPagoStatusDetailEnum["cc_rejected_insufficient_amount"] = "cc_rejected_insufficient_amount";
9974
- MercadoPagoStatusDetailEnum["cc_rejected_invalid_installments"] = "cc_rejected_invalid_installments";
9975
- MercadoPagoStatusDetailEnum["cc_rejected_max_attempts"] = "cc_rejected_max_attempts";
9976
- MercadoPagoStatusDetailEnum["cc_rejected_other_reason"] = "cc_rejected_other_reason";
9977
- MercadoPagoStatusDetailEnum["cc_amount_rate_limit_exceeded"] = "cc_amount_rate_limit_exceeded";
9978
- MercadoPagoStatusDetailEnum["rejected_insufficient_data"] = "rejected_insufficient_data";
9979
- MercadoPagoStatusDetailEnum["rejected_by_bank"] = "rejected_by_bank";
9980
- MercadoPagoStatusDetailEnum["rejected_by_regulations"] = "rejected_by_regulations";
9981
- MercadoPagoStatusDetailEnum["insufficient_amount"] = "insufficient_amount";
9982
- MercadoPagoStatusDetailEnum["cc_rejected_card_type_not_allowed"] = "cc_rejected_card_type_not_allowed";
9983
- })(exports.MercadoPagoStatusDetailEnum || (exports.MercadoPagoStatusDetailEnum = {}));
9984
-
9985
- exports.MercadoPagoStatusEnum = void 0;
9986
- (function (MercadoPagoStatusEnum) {
9987
- MercadoPagoStatusEnum["approved"] = "approved";
9988
- MercadoPagoStatusEnum["authorized"] = "authorized";
9989
- MercadoPagoStatusEnum["pending"] = "pending";
9990
- MercadoPagoStatusEnum["in_process"] = "in_process";
9991
- MercadoPagoStatusEnum["rejected"] = "rejected";
9992
- MercadoPagoStatusEnum["cancelled"] = "cancelled";
9993
- MercadoPagoStatusEnum["refunded"] = "refunded";
9994
- MercadoPagoStatusEnum["charged_back"] = "charged_back";
9995
- })(exports.MercadoPagoStatusEnum || (exports.MercadoPagoStatusEnum = {}));
9996
-
9997
10275
  class PagarmeBankSlipAxiosAdapter {
9998
10276
  constructor(credentials, paymentRepository) {
9999
10277
  this.credentials = credentials;
@@ -10121,6 +10399,14 @@ class PagarMeErrorHelper {
10121
10399
  case '1070':
10122
10400
  case '2001':
10123
10401
  case '2004':
10402
+ case '5025':
10403
+ case '9124':
10404
+ return exports.ErrorsCode.invalidCardError;
10405
+ // Dados obrigatórios ausentes
10406
+ case '1044':
10407
+ case '5034':
10408
+ case '5047':
10409
+ case '5061':
10124
10410
  return exports.ErrorsCode.invalidCardError;
10125
10411
  // Suspeita de fraude, prevenção do banco
10126
10412
  case '1002':
@@ -10132,6 +10418,7 @@ class PagarMeErrorHelper {
10132
10418
  case '2008':
10133
10419
  case '2009':
10134
10420
  case '2010':
10421
+ case '9201':
10135
10422
  return exports.ErrorsCode.fraudPreventionExternal;
10136
10423
  // Recusado pelo banco/emissor
10137
10424
  case '1007':
@@ -10149,19 +10436,10 @@ class PagarMeErrorHelper {
10149
10436
  case '5087':
10150
10437
  return exports.ErrorsCode.insufficientFundsError;
10151
10438
  // Valor solicitado inválido
10439
+ case '5094':
10152
10440
  case '5016':
10153
10441
  case '5092':
10154
10442
  return exports.ErrorsCode.paymentError;
10155
- // Código de segurança inválido ou não enviado
10156
- case '5025':
10157
- case '9124':
10158
- return exports.ErrorsCode.paymentError;
10159
- // Dados obrigatórios ausentes
10160
- case '1044':
10161
- case '5034':
10162
- case '5047':
10163
- case '5061':
10164
- return exports.ErrorsCode.paymentError;
10165
10443
  // Erros internos ou genéricos
10166
10444
  case '5000':
10167
10445
  case '5001':
@@ -10251,10 +10529,9 @@ class PagarMeErrorHelper {
10251
10529
  // Transação não suportada para o banco/emissor
10252
10530
  case '1061':
10253
10531
  return exports.ErrorsCode.paymentError;
10254
- case '5094':
10255
10532
  case '1010':
10256
10533
  case '1046':
10257
- return exports.ErrorsCode.businessError;
10534
+ return exports.ErrorsCode.invalidCheckoutError;
10258
10535
  default:
10259
10536
  return exports.ErrorsCode.paymentError;
10260
10537
  }
@@ -10391,7 +10668,7 @@ class PagarMeV5RequestHelper {
10391
10668
  static getCardOrder(checkout, card) {
10392
10669
  return {
10393
10670
  installments: card.installments,
10394
- statement_descriptor: checkout.shop === exports.Shops.GLAMSHOP ? 'Glam' : 'Mens Market',
10671
+ statement_descriptor: checkout.shop === exports.Shops.GLAMSHOP ? 'loja glam' : 'mens market',
10395
10672
  card_id: card.cardId,
10396
10673
  card: {
10397
10674
  cvv: card.cardCvv,
@@ -10432,7 +10709,7 @@ class PagarMeV5ResponseHelper {
10432
10709
  const charger = response.charges.at(0);
10433
10710
  const transaction = charger.last_transaction;
10434
10711
  return PaymentTransaction.toInstance({
10435
- acquirer_name: 'pagar_me',
10712
+ acquirer_name: exports.PaymentProviders.PAGARME,
10436
10713
  amount: charger.amount,
10437
10714
  currency: charger.currency,
10438
10715
  gateway_id: charger.gateway_id,
@@ -10784,8 +11061,62 @@ class PagarmeV5BankSlipAxiosAdapter {
10784
11061
  }
10785
11062
  }
10786
11063
 
10787
- class PagarmeV5CardAxiosAdapter {
11064
+ class PagarmeV5BaseAxiosAdapter {
11065
+ constructor(credentials, paymentRepository) {
11066
+ this.credentials = credentials;
11067
+ this.paymentRepository = paymentRepository;
11068
+ }
11069
+ async refund(order, amount) {
11070
+ try {
11071
+ console.warn('[PAGARME REFUND] Starting refund process for order', order.id, order.payment, 'with amount', amount);
11072
+ const amountToSend = +amount.toFixed(2) * 100;
11073
+ console.warn('[PAGARME REFUND] Amount to send in cents', amountToSend);
11074
+ const { data } = await axios__default["default"]({
11075
+ method: 'DELETE',
11076
+ url: `${this.credentials.URL}/charges/${order.payment.charger_id}`,
11077
+ headers: {
11078
+ Authorization: 'Basic ' + Buffer.from(`${this.credentials.API_KEY}:`).toString('base64'),
11079
+ 'Content-Type': 'application/json',
11080
+ },
11081
+ data: {
11082
+ amount: amountToSend,
11083
+ },
11084
+ });
11085
+ console.warn('[RESPONSE PAGARME REFUND]', JSON.stringify(data));
11086
+ await this.paymentRepository.create({
11087
+ createdAt: new Date(),
11088
+ updatedAt: new Date(),
11089
+ userId: order.user.id,
11090
+ orderId: order.id,
11091
+ totalPrice: amount,
11092
+ paymentProvider: exports.PaymentProviders.PAGARME,
11093
+ pagarMeOrderId: data.id,
11094
+ transaction: data,
11095
+ });
11096
+ return {
11097
+ status: this.getRefundStatus(data.status),
11098
+ success: [exports.PagarMeV5OrderStatus.Pago, exports.PagarMeV5OrderStatus.Cancelado].includes(data.status) ? true : false,
11099
+ };
11100
+ }
11101
+ catch (error) {
11102
+ console.error('Error during refund process for order', order.id, 'with error', error);
11103
+ throw error;
11104
+ }
11105
+ }
11106
+ getRefundStatus(status) {
11107
+ if ([exports.PagarMeV5PaymentStatus['Em processamento']].includes(status)) {
11108
+ return 'processing';
11109
+ }
11110
+ if ([exports.PagarMeV5OrderStatus.Pago, exports.PagarMeV5OrderStatus.Cancelado].includes(status)) {
11111
+ return 'success';
11112
+ }
11113
+ return 'unknown';
11114
+ }
11115
+ }
11116
+
11117
+ class PagarmeV5CardAxiosAdapter extends PagarmeV5BaseAxiosAdapter {
10788
11118
  constructor(credentials, paymentRepository, orderBlockedRepository) {
11119
+ super(credentials, paymentRepository);
10789
11120
  this.credentials = credentials;
10790
11121
  this.paymentRepository = paymentRepository;
10791
11122
  this.orderBlockedRepository = orderBlockedRepository;
@@ -10955,8 +11286,9 @@ class PagarmeV5CardAxiosAdapter {
10955
11286
  }
10956
11287
  }
10957
11288
 
10958
- class PagarmeV5PixAxiosAdapter {
11289
+ class PagarmeV5PixAxiosAdapter extends PagarmeV5BaseAxiosAdapter {
10959
11290
  constructor(credentials, paymentRepository) {
11291
+ super(credentials, paymentRepository);
10960
11292
  this.credentials = credentials;
10961
11293
  this.paymentRepository = paymentRepository;
10962
11294
  }
@@ -11372,6 +11704,7 @@ exports.PagarmeCardAxiosAdapter = PagarmeCardAxiosAdapter;
11372
11704
  exports.PagarmePaymentMethodFactory = PagarmePaymentMethodFactory;
11373
11705
  exports.PagarmePixAxiosAdapter = PagarmePixAxiosAdapter;
11374
11706
  exports.PagarmeV5BankSlipAxiosAdapter = PagarmeV5BankSlipAxiosAdapter;
11707
+ exports.PagarmeV5BaseAxiosAdapter = PagarmeV5BaseAxiosAdapter;
11375
11708
  exports.PagarmeV5CardAxiosAdapter = PagarmeV5CardAxiosAdapter;
11376
11709
  exports.PagarmeV5PixAxiosAdapter = PagarmeV5PixAxiosAdapter;
11377
11710
  exports.Payment = Payment;
@@ -11418,6 +11751,10 @@ exports.ShopMenu = ShopMenu;
11418
11751
  exports.ShopMenuFirestoreRepository = ShopMenuFirestoreRepository;
11419
11752
  exports.ShopSettings = ShopSettings;
11420
11753
  exports.ShopSettingsFirestoreRepository = ShopSettingsFirestoreRepository;
11754
+ exports.ShoppingRecurrence = ShoppingRecurrence;
11755
+ exports.ShoppingRecurrenceEdition = ShoppingRecurrenceEdition;
11756
+ exports.ShoppingRecurrenceEditionFirestoreRepository = ShoppingRecurrenceEditionFirestoreRepository;
11757
+ exports.ShoppingRecurrenceFirestoreRepository = ShoppingRecurrenceFirestoreRepository;
11421
11758
  exports.SignOut = SignOut;
11422
11759
  exports.StockLimitError = StockLimitError;
11423
11760
  exports.StockOutError = StockOutError;