vk-payments 0.2.28 → 0.2.30

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.
@@ -54,4 +54,4 @@ if (false) {
54
54
  */
55
55
  BankTransferApiService.prototype.http;
56
56
  }
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay10cmFuc2Zlci5hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3ZrLXBheW1lbnRzLyIsInNvdXJjZXMiOlsibGliL2JhbmstdHJhbnNmZXIvc2VydmljZXMvYmFuay10cmFuc2Zlci5hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBSS9EO0lBS0UsZ0NBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7SUFBSSxDQUFDOzs7Ozs7O0lBRWxDLDhDQUFhOzs7Ozs7SUFBcEIsVUFBcUIsV0FBbUIsRUFBRSxPQUFtQyxFQUFFLFFBQWdCOztZQUN2RixPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUM7WUFDOUIsY0FBYyxFQUFFLGtCQUFrQjtZQUNsQyxhQUFhLEVBQUUsWUFBVSxXQUFhO1NBQ3ZDLENBQUM7OztZQUdJLEdBQUcsR0FBTSxRQUFRLHlDQUFzQztRQUU3RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUE4QixHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxTQUFBLEVBQUUsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7O2dCQWpCRixVQUFVLFNBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzs7O2dCQU5RLFVBQVU7OztpQ0FEbkI7Q0F1QkMsQUFsQkQsSUFrQkM7U0FmWSxzQkFBc0I7Ozs7OztJQUVyQixzQ0FBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhbmtUcmFuc2ZlclBheW1lbnRSZXF1ZXN0LCBCYW5rVHJhbnNmZXJQYXltZW50UmVzcG9uc2UgfSBmcm9tICcuLi9tb2RlbHMvYmFuay10cmFuc2Zlci5tb2RlbHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCYW5rVHJhbnNmZXJBcGlTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHsgfVxuXG4gIHB1YmxpYyBjcmVhdGVQYXltZW50KGFjY2Vzc1Rva2VuOiBzdHJpbmcsIHJlcXVlc3Q6IEJhbmtUcmFuc2ZlclBheW1lbnRSZXF1ZXN0LCB2a0FwaVVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxCYW5rVHJhbnNmZXJQYXltZW50UmVzcG9uc2U+IHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7YWNjZXNzVG9rZW59YFxuICAgIH0pO1xuXG4gICAgLy8gQ29uc3RydWltb3MgbGEgVVJMIGFncmVnYW5kbyBsYSBydXRlIGRlbCBDb250cm9sbGVyIGRlIEJhbmtUcmFuc2ZlclxuICAgIGNvbnN0IHVybCA9IGAke3ZrQXBpVXJsfXBheW1lbnRzL0JhbmtUcmFuc2Zlci9jcmVhdGUtcGF5bWVudGA7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QmFua1RyYW5zZmVyUGF5bWVudFJlc3BvbnNlPih1cmwsIHJlcXVlc3QsIHsgaGVhZGVycyB9KTtcbiAgfVxufSJdfQ==
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuay10cmFuc2Zlci5hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3ZrLXBheW1lbnRzLyIsInNvdXJjZXMiOlsibGliL2JhbmstdHJhbnNmZXIvc2VydmljZXMvYmFuay10cmFuc2Zlci5hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBSS9EO0lBS0UsZ0NBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7SUFBSSxDQUFDOzs7Ozs7O0lBRWxDLDhDQUFhOzs7Ozs7SUFBcEIsVUFBcUIsV0FBbUIsRUFBRSxPQUFtQyxFQUFFLFFBQWdCOztZQUN2RixPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUM7WUFDOUIsY0FBYyxFQUFFLGtCQUFrQjtZQUNsQyxhQUFhLEVBQUUsWUFBVSxXQUFhO1NBQ3ZDLENBQUM7OztZQUdJLEdBQUcsR0FBTSxRQUFRLHlDQUFzQztRQUU3RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUE4QixHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxTQUFBLEVBQUUsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7O2dCQWpCRixVQUFVLFNBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzs7O2dCQU5RLFVBQVU7OztpQ0FEbkI7Q0F1QkMsQUFsQkQsSUFrQkM7U0FmWSxzQkFBc0I7Ozs7OztJQUVyQixzQ0FBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhbmtUcmFuc2ZlclBheW1lbnRSZXF1ZXN0LCBCYW5rVHJhbnNmZXJQYXltZW50UmVzcG9uc2UgfSBmcm9tICcuLi9tb2RlbHMvYmFuay10cmFuc2Zlci5tb2RlbHMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBCYW5rVHJhbnNmZXJBcGlTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHsgfVxuXG4gIHB1YmxpYyBjcmVhdGVQYXltZW50KGFjY2Vzc1Rva2VuOiBzdHJpbmcsIHJlcXVlc3Q6IEJhbmtUcmFuc2ZlclBheW1lbnRSZXF1ZXN0LCB2a0FwaVVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxCYW5rVHJhbnNmZXJQYXltZW50UmVzcG9uc2U+IHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7YWNjZXNzVG9rZW59YFxuICAgIH0pO1xuXG4gICAgLy8gQ29uc3RydWltb3MgbGEgVVJMIGFncmVnYW5kbyBsYSBydXRlIGRlbCBDb250cm9sbGVyIGRlIEJhbmtUcmFuc2ZlclxuICAgIGNvbnN0IHVybCA9IGAke3ZrQXBpVXJsfXBheW1lbnRzL0JhbmtUcmFuc2Zlci9jcmVhdGUtcGF5bWVudGA7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QmFua1RyYW5zZmVyUGF5bWVudFJlc3BvbnNlPih1cmwsIHJlcXVlc3QsIHsgaGVhZGVycyB9KTtcbiAgfVxufVxuIl19
@@ -1,6 +1,6 @@
1
1
  import { Injectable, ɵɵdefineInjectable, ɵɵinject, EventEmitter, Component, Input, Output, ViewChild, NgModule } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
- import { FormsModule, ReactiveFormsModule, FormGroup, FormControl, Validators } from '@angular/forms';
3
+ import { FormsModule, ReactiveFormsModule, FormGroup, FormControl } from '@angular/forms';
4
4
  import { Router, RouterModule } from '@angular/router';
5
5
  import { HttpHeaders, HttpClient, HttpClientModule } from '@angular/common/http';
6
6
  import sha256 from 'sha256';
@@ -3243,41 +3243,80 @@ class BankTransferComponent {
3243
3243
  */
3244
3244
  constructor(bankTransferApi) {
3245
3245
  this.bankTransferApi = bankTransferApi;
3246
+ this.discountRate = 0.10; // Tasa de descuento (10% por defecto)
3247
+ // Tasa de descuento (10% por defecto)
3246
3248
  this.statusPay = new EventEmitter();
3247
3249
  this.isLoading = false;
3248
3250
  this.errorMessage = '';
3251
+ this.submittedSuccessfully = false;
3252
+ this.amountCopied = false;
3253
+ // CUIT no se pide al usuario por ahora — se envía valor genérico
3249
3254
  this.paymentForm = new FormGroup({
3250
- cuit: new FormControl('', [
3251
- Validators.required,
3252
- Validators.minLength(11),
3253
- Validators.maxLength(11),
3254
- Validators.pattern('^[0-9]*$')
3255
- ]),
3255
+ cuit: new FormControl('00000000000')
3256
3256
  });
3257
3257
  }
3258
+ // Calculados a partir de `amount` (que ya tiene el descuento aplicado)
3258
3259
  /**
3259
3260
  * @return {?}
3260
3261
  */
3261
- ngOnInit() {
3262
+ get subtotalAmount() {
3263
+ return this.amount ? Math.round(this.amount / (1 - this.discountRate)) : 0;
3264
+ }
3265
+ /**
3266
+ * @return {?}
3267
+ */
3268
+ get discountAmount() {
3269
+ return this.subtotalAmount - (this.amount || 0);
3270
+ }
3271
+ /**
3272
+ * @return {?}
3273
+ */
3274
+ ngOnInit() { }
3275
+ /**
3276
+ * @param {?} text
3277
+ * @return {?}
3278
+ */
3279
+ copyToClipboard(text) {
3280
+ navigator.clipboard.writeText(text).catch((/**
3281
+ * @return {?}
3282
+ */
3283
+ () => {
3284
+ /** @type {?} */
3285
+ const el = document.createElement('textarea');
3286
+ el.value = text;
3287
+ document.body.appendChild(el);
3288
+ el.select();
3289
+ document.execCommand('copy');
3290
+ document.body.removeChild(el);
3291
+ }));
3292
+ }
3293
+ /**
3294
+ * @return {?}
3295
+ */
3296
+ copyAmount() {
3297
+ /** @type {?} */
3298
+ const amountStr = this.amount ? this.amount.toFixed(2) : '0';
3299
+ this.copyToClipboard(amountStr);
3300
+ this.amountCopied = true;
3301
+ setTimeout((/**
3302
+ * @return {?}
3303
+ */
3304
+ () => this.amountCopied = false), 2000);
3262
3305
  }
3263
3306
  /**
3264
3307
  * @return {?}
3265
3308
  */
3266
3309
  onSubmit() {
3267
- if (this.paymentForm.invalid) {
3268
- this.paymentForm.markAllAsTouched();
3310
+ if (this.submittedSuccessfully || this.isLoading)
3269
3311
  return;
3270
- }
3271
3312
  this.isLoading = true;
3272
3313
  this.errorMessage = '';
3273
3314
  /** @type {?} */
3274
- const cuitControl = this.paymentForm.get('cuit');
3275
- /** @type {?} */
3276
- const cuitValue = cuitControl ? cuitControl.value : '';
3277
- /** @type {?} */
3278
3315
  const request = {
3279
- cuit: cuitValue.toString(),
3316
+ cuit: '00000000000',
3317
+ // Valor genérico mientras no se pide al usuario
3280
3318
  checkoutId: this.checkoutId,
3319
+ checkoutAdditionalData: this.checkoutAdditionalData,
3281
3320
  storeName: this.storeName || 'Tienda VK',
3282
3321
  storeId: this.storeId
3283
3322
  };
@@ -3288,7 +3327,7 @@ class BankTransferComponent {
3288
3327
  (response) => {
3289
3328
  this.isLoading = false;
3290
3329
  if (response && response.success) {
3291
- // Exito!
3330
+ this.submittedSuccessfully = true;
3292
3331
  this.statusPay.emit({
3293
3332
  success: true,
3294
3333
  paymentId: (response.data && response.data.bankTransferEcommId) ? response.data.bankTransferEcommId : '',
@@ -3296,8 +3335,9 @@ class BankTransferComponent {
3296
3335
  });
3297
3336
  }
3298
3337
  else {
3299
- // El API respondió HTTP 200 pero success: false
3300
- this.errorMessage = (response.errorsMessages && response.errorsMessages.length > 0) ? response.errorsMessages[0] : 'Ocurrió un error al registrar la transferencia.';
3338
+ this.errorMessage = (response.errorsMessages && response.errorsMessages.length > 0)
3339
+ ? response.errorsMessages[0]
3340
+ : 'Ocurrió un error al registrar la transferencia.';
3301
3341
  this.statusPay.emit({
3302
3342
  success: false,
3303
3343
  paymentId: '',
@@ -3309,9 +3349,10 @@ class BankTransferComponent {
3309
3349
  * @return {?}
3310
3350
  */
3311
3351
  (error) => {
3312
- // Error HTTP (500, 400, etc)
3313
3352
  this.isLoading = false;
3314
- this.errorMessage = (error && error.error && error.error.errorsMessages && error.error.errorsMessages.length > 0) ? error.error.errorsMessages[0] : 'Ocurrió un error de conexión al registrar la transferencia.';
3353
+ this.errorMessage = (error && error.error && error.error.errorsMessages && error.error.errorsMessages.length > 0)
3354
+ ? error.error.errorsMessages[0]
3355
+ : 'Ocurrió un error de conexión al registrar la transferencia.';
3315
3356
  this.statusPay.emit({
3316
3357
  success: false,
3317
3358
  paymentId: '',
@@ -3320,7 +3361,6 @@ class BankTransferComponent {
3320
3361
  console.error('Error BankTransferApiService:', error);
3321
3362
  }));
3322
3363
  }
3323
- // Helper para validación visual en el template
3324
3364
  /**
3325
3365
  * @return {?}
3326
3366
  */
@@ -3331,8 +3371,8 @@ class BankTransferComponent {
3331
3371
  BankTransferComponent.decorators = [
3332
3372
  { type: Component, args: [{
3333
3373
  selector: 'vk-bank-transfer',
3334
- template: "<form\n [formGroup]=\"paymentForm\"\n (ngSubmit)=\"onSubmit()\"\n class=\"bt-payment\"\n id=\"formularioBT\"\n autocomplete=\"off\"\n>\n\n <div class=\"formRow\">\n <p class=\"description\">\n Complet\u00E1 tu CUIT/CUIL para registrar el pago por transferencia. \n Una vez confirmado, tu pedido quedar\u00E1 sujeto a la aprobaci\u00F3n del pago.\n </p>\n </div>\n\n <div class=\"formRow\">\n <label for=\"cuit\">CUIT / CUIL del titular de la cuenta origen *</label>\n <span>\n <input\n id=\"cuit\"\n type=\"text\"\n formControlName=\"cuit\"\n name=\"cuit\"\n required\n maxlength=\"11\"\n placeholder=\"Ej: 20112223334 (Sin guiones)\"\n [ngClass]=\"{'is-invalid': cuitControl?.invalid && (cuitControl?.dirty || cuitControl?.touched)}\"\n />\n </span>\n \n <p\n class=\"alert-text\"\n *ngIf=\"cuitControl?.invalid && (cuitControl?.dirty || cuitControl?.touched)\"\n >\n <span *ngIf=\"cuitControl?.errors?.required\">El CUIT/CUIL es obligatorio.</span>\n <span *ngIf=\"cuitControl?.errors?.pattern\">Debe contener solo n\u00FAmeros.</span>\n <span *ngIf=\"cuitControl?.errors?.minlength || cuitControl?.errors?.maxlength\">Debe tener exactamente 11 d\u00EDgitos.</span>\n </p>\n </div>\n\n <div class=\"summary-box\">\n <div class=\"summary-row total\">\n <span>Total a transferir:</span>\n <span class=\"amount\">${{ amount | number:'1.2-2' }}</span>\n </div>\n <small>* El 10% de descuento extra ya se encuentra aplicado a este total.</small>\n </div>\n\n <!-- Loading State -->\n <div *ngIf=\"isLoading\" class=\"pay-message info\">\n <i class=\"material-icons\">info</i>\n <p>Procesando informaci\u00F3n de transferencia...</p>\n </div>\n\n <!-- Error devuelto por la API -->\n <div class=\"pay-message error\" *ngIf=\"errorMessage && !isLoading\">\n <i class=\"material-icons\">error</i>\n <p>{{ errorMessage }}</p>\n </div>\n\n <div>\n <button type=\"submit\" [disabled]=\"paymentForm.invalid || isLoading\">\n Confirmar Transferencia\n </button>\n </div>\n\n</form>\n",
3335
- styles: [".bt-payment{background-color:transparent;font-family:inherit,sans-serif}.bt-payment p.description{font-size:14px;color:#888;margin-bottom:5px}.bt-payment .formRow{margin-top:10px}.bt-payment .formRow label{font-size:14px;color:#888}.bt-payment .formRow span{background-color:#fff;border:.5px solid #707070;border-radius:2px;padding:2px 10px;display:block;margin-top:4px}.bt-payment .formRow span input[type=text]{background:0 0;border:none;color:#000;font-size:15px;height:23px;width:100%;text-transform:uppercase;vertical-align:top;padding:0;margin:0}.bt-payment .formRow span input[type=text]:focus{outline:0}.bt-payment .alert-text{font-size:13px;color:#009ee3;margin-top:7px;margin-bottom:0}.bt-payment .summary-box{margin-top:20px;margin-bottom:20px;text-align:right}.bt-payment .summary-box .summary-row{display:flex;justify-content:flex-end;align-items:center;font-size:16px;color:#333}.bt-payment .summary-box .summary-row span.amount{font-weight:700;color:#000;margin-left:10px}.bt-payment .summary-box small{display:block;color:#888;font-size:12px;margin-top:5px}.bt-payment button{background-color:#009ee3;color:#fff;font-size:18px;text-align:center;padding:10px 0;width:100%;border:none;border-radius:20px;margin-top:20px;cursor:pointer}.bt-payment button:disabled{background-color:#525252;cursor:not-allowed}.bt-payment .pay-message{margin-top:10px;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:20px}.bt-payment .pay-message p{font-size:1.1rem;text-align:center;line-height:130%;margin-bottom:10px}.bt-payment .pay-message i.data{font-size:.9rem;text-align:center}.bt-payment .pay-message i.material-icons{font-size:2rem;margin-bottom:5px}.bt-payment .success{background-color:#dff2bf;color:#4f8a10}.bt-payment .error{color:#d8000c;background-color:#ffd2d2}.bt-payment .info{color:#00529b;background-color:#bde5f8}:focus{outline:0}"]
3374
+ template: "<form\n [formGroup]=\"paymentForm\"\n (ngSubmit)=\"onSubmit()\"\n class=\"bt-payment\"\n id=\"formularioBT\"\n autocomplete=\"off\"\n>\n\n <!-- Datos bancarios -->\n <div class=\"bank-info-box\">\n <div class=\"bank-info-header\">\n <i class=\"material-icons\">account_balance</i>\n <span>Datos para la transferencia</span>\n </div>\n <div class=\"bank-info-row\">\n <span class=\"bank-info-label\"><i class=\"material-icons\">tag</i>N\u00FAmero de cuenta</span>\n <span class=\"bank-info-value\">2-311972/1</span>\n </div>\n <div class=\"bank-info-row\">\n <span class=\"bank-info-label\"><i class=\"material-icons\">qr_code</i>CBU</span>\n <span class=\"bank-info-value bank-info-copy\">\n <span class=\"bank-info-copy-text\">4150002012003119720013</span>\n <button class=\"copy-btn\" type=\"button\" title=\"Copiar CBU\" (click)=\"copyToClipboard('4150002012003119720013')\">\n <i class=\"material-icons\">content_copy</i>\n </button>\n </span>\n </div>\n <div class=\"bank-info-row\">\n <span class=\"bank-info-label\"><i class=\"material-icons\">alternate_email</i>Alias</span>\n <span class=\"bank-info-value bank-info-copy\">\n <span class=\"bank-info-copy-text\">reba.vitnik</span>\n <button class=\"copy-btn\" type=\"button\" title=\"Copiar alias\" (click)=\"copyToClipboard('reba.vitnik')\">\n <i class=\"material-icons\">content_copy</i>\n </button>\n </span>\n </div>\n <div class=\"bank-info-row\">\n <span class=\"bank-info-label\"><i class=\"material-icons\">badge</i>CUIT/CUIL</span>\n <span class=\"bank-info-value\">30708777893</span>\n </div>\n <div class=\"bank-info-row\">\n <span class=\"bank-info-label\"><i class=\"material-icons\">attach_money</i>Moneda</span>\n <span class=\"bank-info-value\">Peso Argentino</span>\n </div>\n </div>\n\n <!-- Resumen con desglose del descuento -->\n <div class=\"summary-box\">\n <div class=\"summary-row\">\n <span class=\"summary-label\">Subtotal</span>\n <span class=\"summary-value\">${{ subtotalAmount | number:'1.2-2' }}</span>\n </div>\n <div class=\"summary-row discount\">\n <span class=\"summary-label\">\n <i class=\"material-icons\">local_offer</i>\n Descuento transferencia ({{ discountRate * 100 | number:'1.0-0' }}%)\n </span>\n <span class=\"summary-value discount-value\">-${{ discountAmount | number:'1.2-2' }}</span>\n </div>\n <div class=\"summary-row total\">\n <span class=\"summary-label\">Total a transferir</span>\n <span class=\"summary-value total-value\">\n ${{ amount | number:'1.2-2' }}\n <button\n class=\"copy-btn copy-amount-btn\"\n type=\"button\"\n [title]=\"amountCopied ? 'Copiado!' : 'Copiar monto'\"\n (click)=\"copyAmount()\"\n >\n <i class=\"material-icons\">{{ amountCopied ? 'check' : 'content_copy' }}</i>\n </button>\n </span>\n </div>\n </div>\n\n <!-- Leyenda de monto exacto -->\n <div class=\"exact-amount-notice\">\n <i class=\"material-icons notice-icon\">info</i>\n <p>\n <strong>\u00A1Ya casi es tuyo!</strong> Para que podamos procesar tu pedido sin demoras,\n asegurate de que el importe de la transferencia sea <strong>id\u00E9ntico</strong> al total indicado arriba.\n </p>\n </div>\n\n <!-- Error devuelto por la API -->\n <div class=\"pay-message error\" *ngIf=\"errorMessage && !isLoading\">\n <i class=\"material-icons\">error</i>\n <p>{{ errorMessage }}</p>\n </div>\n\n <!-- Loading -->\n <div *ngIf=\"isLoading\" class=\"pay-message info\">\n <i class=\"material-icons\">info</i>\n <p>Procesando informaci\u00F3n de transferencia...</p>\n </div>\n\n <!-- Bot\u00F3n confirmar (oculto tras \u00E9xito) -->\n <div *ngIf=\"!submittedSuccessfully\">\n <button type=\"submit\" [disabled]=\"paymentForm.invalid || isLoading\">\n Confirmar Transferencia\n </button>\n </div>\n\n</form>\n",
3375
+ styles: [".bt-payment{background-color:transparent;font-family:inherit,sans-serif;padding:0 12px}.bt-payment p.description{font-size:16px;color:#888;margin-bottom:5px}.bt-payment .bank-info-box{border:1px solid #c8e0f0;border-radius:8px;overflow:hidden;margin-bottom:18px}.bt-payment .bank-info-box .bank-info-header{display:flex;align-items:center;gap:8px;background-color:#009ee3;color:#fff;padding:10px 14px;font-size:18px;font-weight:600;letter-spacing:.4px;text-transform:uppercase}.bt-payment .bank-info-box .bank-info-header i.material-icons{font-size:18px}.bt-payment .bank-info-box .bank-info-row{display:flex;justify-content:space-between;align-items:center;font-size:18px;padding:8px 14px;background-color:#fff;border-bottom:1px solid #eef3f7}.bt-payment .bank-info-box .bank-info-row:last-child{border-bottom:none}.bt-payment .bank-info-box .bank-info-label{display:flex;align-items:center;gap:6px;color:#777;flex-shrink:0;margin-right:8px}.bt-payment .bank-info-box .bank-info-label i.material-icons{font-size:15px;color:#009ee3}.bt-payment .bank-info-box .bank-info-value{font-weight:600;color:#1a1a1a;text-align:right}.bt-payment .bank-info-box .bank-info-value.bank-info-copy{display:flex;align-items:center;gap:4px}.bt-payment .bank-info-box .bank-info-value .bank-info-copy-text{font-family:\"Courier New\",monospace;font-size:18px;letter-spacing:.3px}.bt-payment .bank-info-box .copy-btn{background:0 0;border:none;cursor:pointer;padding:2px 4px;border-radius:4px;color:#009ee3;display:flex;align-items:center;margin-top:0;width:auto;min-width:unset}.bt-payment .bank-info-box .copy-btn i.material-icons{font-size:16px}.bt-payment .bank-info-box .copy-btn:hover{background-color:#e8f4fb}.bt-payment .bank-info-box .copy-btn:disabled{background-color:transparent;cursor:default}.bt-payment .summary-box{margin:20px 0;border:1px solid #e0e0e0;border-radius:8px;overflow:hidden}.bt-payment .summary-box .summary-row{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;font-size:16px;background-color:#fff;border-bottom:1px solid #f0f0f0}.bt-payment .summary-box .summary-row:last-child{border-bottom:none}.bt-payment .summary-box .summary-row .summary-label{display:flex;align-items:center;gap:6px;color:#555}.bt-payment .summary-box .summary-row .summary-label i.material-icons{font-size:14px}.bt-payment .summary-box .summary-row .summary-value{font-weight:600;color:#1a1a1a;display:flex;align-items:center;gap:6px}.bt-payment .summary-box .summary-row.discount{background-color:#f0fdf4}.bt-payment .summary-box .summary-row.discount .summary-label{color:#16a34a;font-weight:500}.bt-payment .summary-box .summary-row.discount .summary-label i.material-icons{color:#16a34a}.bt-payment .summary-box .summary-row.discount .discount-value{color:#16a34a;font-weight:700}.bt-payment .summary-box .summary-row.total{background-color:#f8f9fa;border-top:2px solid #009ee3}.bt-payment .summary-box .summary-row.total .summary-label{font-size:17px;font-weight:700;color:#1a1a1a}.bt-payment .summary-box .summary-row.total .total-value{font-size:20px;font-weight:800;color:#009ee3}.bt-payment .summary-box .copy-amount-btn{background:0 0;border:1px solid #009ee3;border-radius:6px;cursor:pointer;padding:2px 6px;color:#009ee3;display:flex;align-items:center;width:auto;min-width:unset;margin-top:0;transition:background-color .2s}.bt-payment .summary-box .copy-amount-btn i.material-icons{font-size:16px}.bt-payment .summary-box .copy-amount-btn:hover{background-color:#e8f4fb}.bt-payment .exact-amount-notice{display:flex;align-items:flex-start;gap:10px;background-color:#fffbeb;border:1px solid #fcd34d;border-radius:8px;padding:12px 14px;margin-bottom:20px}.bt-payment .exact-amount-notice .notice-icon{font-size:20px;color:#d97706;flex-shrink:0;margin-top:2px}.bt-payment .exact-amount-notice p{font-size:14px;color:#78350f;margin:0;line-height:1.5}.bt-payment .formRow{margin-top:10px;display:none}.bt-payment .formRow label{font-size:16px;color:#888}.bt-payment .formRow span{background-color:#fff;border:.5px solid #707070;border-radius:2px;padding:2px 10px;display:block;margin-top:4px}.bt-payment .formRow span input[type=text]{background:0 0;border:none;color:#000;font-size:16px;height:23px;width:100%;text-transform:uppercase;vertical-align:top;padding:0;margin:0}.bt-payment .formRow span input[type=text]:focus{outline:0}.bt-payment .alert-text{font-size:16px;color:#009ee3;margin-top:7px;margin-bottom:0}.bt-payment button[type=submit]{background-color:#009ee3;color:#fff;font-size:18px;text-align:center;padding:10px 0;width:100%;border:none;border-radius:20px;margin-top:20px;cursor:pointer}.bt-payment button[type=submit]:disabled{background-color:#525252;cursor:not-allowed}.bt-payment .pay-message{margin-top:10px;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:20px;border-radius:8px}.bt-payment .pay-message p{font-size:1.1rem;text-align:center;line-height:130%;margin-bottom:10px}.bt-payment .pay-message i.material-icons{font-size:2rem;margin-bottom:5px}.bt-payment .success{background-color:#dff2bf;color:#4f8a10}.bt-payment .error{color:#d8000c;background-color:#ffd2d2}.bt-payment .info{color:#00529b;background-color:#bde5f8}:focus{outline:0}"]
3336
3376
  }] }
3337
3377
  ];
3338
3378
  /** @nocollapse */
@@ -3346,6 +3386,8 @@ BankTransferComponent.propDecorators = {
3346
3386
  storeId: [{ type: Input }],
3347
3387
  storeName: [{ type: Input }],
3348
3388
  checkoutId: [{ type: Input }],
3389
+ checkoutAdditionalData: [{ type: Input }],
3390
+ discountRate: [{ type: Input }],
3349
3391
  statusPay: [{ type: Output }]
3350
3392
  };
3351
3393
  if (false) {
@@ -3362,6 +3404,10 @@ if (false) {
3362
3404
  /** @type {?} */
3363
3405
  BankTransferComponent.prototype.checkoutId;
3364
3406
  /** @type {?} */
3407
+ BankTransferComponent.prototype.checkoutAdditionalData;
3408
+ /** @type {?} */
3409
+ BankTransferComponent.prototype.discountRate;
3410
+ /** @type {?} */
3365
3411
  BankTransferComponent.prototype.statusPay;
3366
3412
  /** @type {?} */
3367
3413
  BankTransferComponent.prototype.paymentForm;
@@ -3369,6 +3415,10 @@ if (false) {
3369
3415
  BankTransferComponent.prototype.isLoading;
3370
3416
  /** @type {?} */
3371
3417
  BankTransferComponent.prototype.errorMessage;
3418
+ /** @type {?} */
3419
+ BankTransferComponent.prototype.submittedSuccessfully;
3420
+ /** @type {?} */
3421
+ BankTransferComponent.prototype.amountCopied;
3372
3422
  /**
3373
3423
  * @type {?}
3374
3424
  * @private