diff --git a/src/app/core/services/checkout.service.ts b/src/app/core/services/checkout.service.ts index 5e61a0d..5001900 100644 --- a/src/app/core/services/checkout.service.ts +++ b/src/app/core/services/checkout.service.ts @@ -3,7 +3,6 @@ import { firstValueFrom } from 'rxjs'; import { environment } from '../../../environments/environment'; import { BaseApiService } from './base-api.service'; -import { CartItemVariant } from './cart/cart.interface'; export interface UpdatePurchaseCustomerPayload { dni: string; @@ -74,7 +73,6 @@ export interface PurchaseDetailItemResponse { line_total: string; source_catalog_item_id: number | null; source_variant_id: number | null; - variants?: CartItemVariant[]; item_details: { nombre: string; descripcion: string | null; @@ -97,7 +95,7 @@ export interface PurchaseDetailResponse extends PurchaseStatusResponse { telefono: string | null; nombre_apellido: string | null; email: string | null; - items_source: 'purchase' | 'cart'; + items_source: 'purchase'; items: PurchaseDetailItemResponse[]; tickets_count?: number; has_generated_tickets?: boolean; @@ -171,104 +169,6 @@ export class CheckoutService extends BaseApiService { return purchase; } - async updateItemQuantity( - tenantCode: string, - purchaseId: number, - itemId: number, - quantity: number, - cartId: number | null = null, - itemsSource: 'purchase' | 'cart' = 'purchase', - ): Promise { - if (itemsSource === 'cart' && cartId !== null) { - await firstValueFrom( - this.http.patch( - `${environment.url}tenants/${tenantCode}/checkout-carts/${cartId}/items/${itemId}`, - { cantidad: quantity }, - ), - ); - - return this.getPurchase(tenantCode, purchaseId); - } - - const response = await firstValueFrom( - this.http.patch<{ data?: PurchaseDetailResponse } | PurchaseDetailResponse>( - `${environment.url}tenants/${tenantCode}/compras/${purchaseId}/items/${itemId}`, - { quantity }, - ), - ); - - const purchase = this.extractResponseData(response); - if (!purchase) { - throw new Error('Error al actualizar la cantidad del producto.'); - } - - return purchase; - } - - async updateItemVariant( - tenantCode: string, - purchaseId: number, - itemId: number, - variantId: number, - quantity: number, - cartId: number | null = null, - itemsSource: 'purchase' | 'cart' = 'purchase', - ): Promise { - if (itemsSource === 'cart' && cartId !== null) { - await firstValueFrom( - this.http.patch( - `${environment.url}tenants/${tenantCode}/checkout-carts/${cartId}/items/${itemId}`, - { cantidad: quantity, variant_id: variantId }, - ), - ); - } else { - await firstValueFrom( - this.http.patch( - `${environment.url}tenants/${tenantCode}/compras/${purchaseId}/items/${itemId}`, - { quantity, variant_id: variantId }, - ), - ); - } - - return this.getPurchase(tenantCode, purchaseId); - } - - async removeItem( - tenantCode: string, - purchaseId: number, - itemId: number, - cartId: number | null = null, - itemsSource: 'purchase' | 'cart' = 'purchase', - ): Promise { - const url = - itemsSource === 'cart' && cartId !== null - ? `${environment.url}tenants/${tenantCode}/checkout-carts/${cartId}/items/${itemId}` - : `${environment.url}tenants/${tenantCode}/compras/${purchaseId}/items/${itemId}`; - - await firstValueFrom(this.http.delete(url)); - - return this.getPurchase(tenantCode, purchaseId); - } - - async prepareItemEditing( - tenantCode: string, - purchaseId: number, - ): Promise { - const response = await firstValueFrom( - this.http.post<{ data?: PurchaseDetailResponse } | PurchaseDetailResponse>( - `${environment.url}tenants/${tenantCode}/compras/${purchaseId}/edit-items`, - {}, - ), - ); - - const purchase = this.extractResponseData(response); - if (!purchase) { - throw new Error('Error al preparar la compra para editarla.'); - } - - return purchase; - } - async completePurchase(tenantCode: string, purchaseId: number): Promise { const response = await firstValueFrom( this.http.post<{ data?: PurchaseStatusResponse } | PurchaseStatusResponse>( diff --git a/src/app/core/services/tenant.interface.ts b/src/app/core/services/tenant.interface.ts index 6255c8c..146c26b 100644 --- a/src/app/core/services/tenant.interface.ts +++ b/src/app/core/services/tenant.interface.ts @@ -10,6 +10,14 @@ export interface CartEditingPolicy { allow_update_variant: boolean; } +export interface CheckoutEditingPolicy extends CartEditingPolicy { + code: 'disabled'; + allow_modify: false; + allow_delete: false; + allow_update_quantity: false; + allow_update_variant: false; +} + export interface BankAccount { id: number; tenant_code: string; @@ -140,7 +148,7 @@ export interface Tenant { display_seach_bar?: boolean; display_cart?: boolean; cart_editing_policy?: CartEditingPolicy; - checkout_editing_policy?: CartEditingPolicy; + checkout_editing_policy?: CheckoutEditingPolicy; display_cart_item_images?: boolean; social_media?: SocialMedia[]; menues?: Menu[]; diff --git a/src/app/features/store/pages/checkout-page/checkout-page.component.spec.ts b/src/app/features/store/pages/checkout-page/checkout-page.component.spec.ts index beb9e6a..3017dc1 100644 --- a/src/app/features/store/pages/checkout-page/checkout-page.component.spec.ts +++ b/src/app/features/store/pages/checkout-page/checkout-page.component.spec.ts @@ -13,16 +13,13 @@ import { CatalogService } from '../../../../core/services/catalog/catalog.servic import { GlobalLoadingService } from '../../../../core/services/global-loading/global-loading.service'; import { TenantService } from '../../../../core/services/tenant.service'; import { ToastService } from '../../../../core/services/toast.service'; -import { CartEditingPolicy } from '../../../../core/services/tenant.interface'; +import { CheckoutEditingPolicy } from '../../../../core/services/tenant.interface'; import { CheckoutPageComponent } from './checkout-page.component'; describe('CheckoutPageComponent payment validation', () => { let checkoutServiceStub: { startCheckout: ReturnType; updateCustomerData: ReturnType; - updateItemQuantity: ReturnType; - updateItemVariant: ReturnType; - removeItem: ReturnType; cancelPurchase: ReturnType; generatePaymentIntent: ReturnType; submitPurchaseForReview: ReturnType; @@ -46,7 +43,7 @@ describe('CheckoutPageComponent payment validation', () => { let tenantState: ReturnType< typeof signal<{ codigo: string; - checkout_editing_policy?: CartEditingPolicy; + checkout_editing_policy?: CheckoutEditingPolicy; }> >; @@ -69,9 +66,6 @@ describe('CheckoutPageComponent payment validation', () => { total: '0.00', }), updateCustomerData: vi.fn(), - updateItemQuantity: vi.fn(), - updateItemVariant: vi.fn(), - removeItem: vi.fn(), cancelPurchase: vi.fn().mockResolvedValue({ status: 'cancelled' }), generatePaymentIntent: vi.fn().mockResolvedValue({ qr_data: { qr_code: 'qr-value' }, @@ -110,11 +104,11 @@ describe('CheckoutPageComponent payment validation', () => { tenantState = signal({ codigo: 'tenant-test', checkout_editing_policy: { - code: 'full', - allow_modify: true, - allow_delete: true, - allow_update_quantity: true, - allow_update_variant: true, + code: 'disabled', + allow_modify: false, + allow_delete: false, + allow_update_quantity: false, + allow_update_variant: false, }, });