Explorar o código

feat(admin-ui): Improve cancel modal to allow full order cancellation

Relates to #1414
Michael Bromley %!s(int64=3) %!d(string=hai) anos
pai
achega
3b9088813f
Modificáronse 22 ficheiros con 142 adicións e 47 borrados
  1. 27 27
      packages/admin-ui/i18n-coverage.json
  2. 4 1
      packages/admin-ui/src/lib/core/src/common/generated-types.ts
  3. 11 0
      packages/admin-ui/src/lib/order/src/components/cancel-order-dialog/cancel-order-dialog.component.html
  4. 3 0
      packages/admin-ui/src/lib/order/src/components/cancel-order-dialog/cancel-order-dialog.component.scss
  5. 34 2
      packages/admin-ui/src/lib/order/src/components/cancel-order-dialog/cancel-order-dialog.component.ts
  6. 1 1
      packages/admin-ui/src/lib/order/src/components/order-detail/order-detail.component.ts
  7. 3 0
      packages/admin-ui/src/lib/order/src/components/order-history/order-history.component.html
  8. 4 2
      packages/admin-ui/src/lib/order/src/components/order-table/order-table.component.html
  9. 3 1
      packages/admin-ui/src/lib/order/src/components/refund-order-dialog/refund-order-dialog.component.ts
  10. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/cs.json
  11. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/de.json
  12. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/en.json
  13. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/es.json
  14. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/fr.json
  15. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/it.json
  16. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/pl.json
  17. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/pt_BR.json
  18. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/pt_PT.json
  19. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/ru.json
  20. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/uk.json
  21. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/zh_Hans.json
  22. 4 1
      packages/admin-ui/src/lib/static/i18n-messages/zh_Hant.json

+ 27 - 27
packages/admin-ui/i18n-coverage.json

@@ -1,71 +1,71 @@
 {
-  "generatedOn": "2021-12-01T14:27:05.793Z",
-  "lastCommit": "8f218daf16959f6c8aa6f1d0262aeb124bd4214b",
+  "generatedOn": "2022-02-14T16:02:28.770Z",
+  "lastCommit": "b463dd870fdcc9c3a8d23c8f337e5706d0e985fe",
   "translationStatus": {
     "cs": {
-      "tokenCount": 634,
+      "tokenCount": 637,
       "translatedCount": 591,
       "percentage": 93
     },
     "de": {
-      "tokenCount": 634,
+      "tokenCount": 637,
       "translatedCount": 570,
-      "percentage": 90
+      "percentage": 89
     },
     "en": {
-      "tokenCount": 634,
-      "translatedCount": 628,
-      "percentage": 99
+      "tokenCount": 637,
+      "translatedCount": 636,
+      "percentage": 100
     },
     "es": {
-      "tokenCount": 634,
+      "tokenCount": 637,
       "translatedCount": 623,
       "percentage": 98
     },
     "fr": {
-      "tokenCount": 634,
+      "tokenCount": 637,
       "translatedCount": 613,
-      "percentage": 97
+      "percentage": 96
     },
     "it": {
-      "tokenCount": 634,
+      "tokenCount": 637,
       "translatedCount": 621,
-      "percentage": 98
+      "percentage": 97
     },
     "pl": {
-      "tokenCount": 634,
+      "tokenCount": 637,
       "translatedCount": 405,
       "percentage": 64
     },
     "pt_BR": {
-      "tokenCount": 634,
+      "tokenCount": 637,
       "translatedCount": 588,
-      "percentage": 93
+      "percentage": 92
     },
     "pt_PT": {
-      "tokenCount": 634,
-      "translatedCount": 622,
-      "percentage": 98
+      "tokenCount": 637,
+      "translatedCount": 634,
+      "percentage": 100
     },
     "ru": {
-      "tokenCount": 634,
+      "tokenCount": 637,
       "translatedCount": 621,
-      "percentage": 98
+      "percentage": 97
     },
     "uk": {
-      "tokenCount": 634,
+      "tokenCount": 637,
       "translatedCount": 621,
-      "percentage": 98
+      "percentage": 97
     },
     "zh_Hans": {
-      "tokenCount": 634,
+      "tokenCount": 637,
       "translatedCount": 558,
       "percentage": 88
     },
     "zh_Hant": {
-      "tokenCount": 634,
+      "tokenCount": 637,
       "translatedCount": 385,
-      "percentage": 61
+      "percentage": 60
     }
   }
-}
+}

+ 4 - 1
packages/admin-ui/src/lib/core/src/common/generated-types.ts

@@ -74,7 +74,8 @@ export type Adjustment = {
 
 export enum AdjustmentType {
   PROMOTION = 'PROMOTION',
-  DISTRIBUTED_ORDER_PROMOTION = 'DISTRIBUTED_ORDER_PROMOTION'
+  DISTRIBUTED_ORDER_PROMOTION = 'DISTRIBUTED_ORDER_PROMOTION',
+  OTHER = 'OTHER'
 }
 
 export type Administrator = Node & {
@@ -294,6 +295,8 @@ export type CancelOrderInput = {
   orderId: Scalars['ID'];
   /** Optionally specify which OrderLines to cancel. If not provided, all OrderLines will be cancelled */
   lines?: Maybe<Array<OrderLineInput>>;
+  /** Specify whether the shipping charges should also be cancelled. Defaults to false */
+  cancelShipping?: Maybe<Scalars['Boolean']>;
   reason?: Maybe<Scalars['String']>;
 };
 

+ 11 - 0
packages/admin-ui/src/lib/order/src/components/cancel-order-dialog/cancel-order-dialog.component.html

@@ -16,6 +16,7 @@
             <tr
                 *ngFor="let line of order.lines"
                 class="order-line"
+                [class.is-disabled]="cancelAll"
                 [class.is-cancelled]="line.quantity === 0"
             >
                 <td class="align-middle thumb">
@@ -31,6 +32,8 @@
                     <input
                         *ngIf="line.quantity > 0 && !order.active; else nonEditable"
                         [(ngModel)]="lineQuantities[line.id]"
+                        (input)="checkIfAllSelected()"
+                        [disabled]="cancelAll"
                         type="number"
                         [max]="line.quantity"
                         min="0"
@@ -41,6 +44,14 @@
         </table>
     </div>
     <div class="cancellation-details">
+        <clr-radio-wrapper>
+          <input type="radio" clrRadio [value]="true" [(ngModel)]="cancelAll" name="options" (ngModelChange)="radioChanged()" />
+          <label>{{ 'order.cancel-entire-order' | translate }}</label>
+        </clr-radio-wrapper>
+        <clr-radio-wrapper>
+          <input type="radio" clrRadio [value]="false" [(ngModel)]="cancelAll" name="options" (ngModelChange)="radioChanged()" />
+          <label>{{ 'order.cancel-specified-items' | translate }}</label>
+        </clr-radio-wrapper>
         <label class="clr-control-label">{{ 'order.cancellation-reason' | translate }}</label>
         <ng-select
             [items]="reasons"

+ 3 - 0
packages/admin-ui/src/lib/order/src/components/cancel-order-dialog/cancel-order-dialog.component.scss

@@ -33,4 +33,7 @@
         text-decoration: line-through;
         background-color: var(--color-component-bg-200);
     }
+    .is-disabled td, .is-disabled td input {
+        background-color: var(--color-component-bg-200);
+    }
 }

+ 34 - 2
packages/admin-ui/src/lib/order/src/components/cancel-order-dialog/cancel-order-dialog.component.ts

@@ -1,6 +1,12 @@
 import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
 import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
-import { CancelOrderInput, Dialog, I18nService, OrderDetailFragment, OrderLineInput } from '@vendure/admin-ui/core';
+import {
+    CancelOrderInput,
+    Dialog,
+    I18nService,
+    OrderDetailFragment,
+    OrderLineInput,
+} from '@vendure/admin-ui/core';
 
 @Component({
     selector: 'vdr-cancel-order-dialog',
@@ -10,6 +16,7 @@ import { CancelOrderInput, Dialog, I18nService, OrderDetailFragment, OrderLineIn
 })
 export class CancelOrderDialogComponent implements OnInit, Dialog<CancelOrderInput> {
     order: OrderDetailFragment;
+    cancelAll = true;
     resolveWith: (result?: CancelOrderInput) => void;
     reason: string;
     lineQuantities: { [lineId: string]: number } = {};
@@ -25,15 +32,40 @@ export class CancelOrderDialogComponent implements OnInit, Dialog<CancelOrderInp
 
     ngOnInit() {
         this.lineQuantities = this.order.lines.reduce((result, line) => {
-            return { ...result, [line.id]: 0 };
+            return { ...result, [line.id]: line.quantity };
         }, {});
     }
 
+    radioChanged() {
+        if (this.cancelAll) {
+            for (const line of this.order.lines) {
+                this.lineQuantities[line.id] = line.quantity;
+            }
+        } else {
+            for (const line of this.order.lines) {
+                this.lineQuantities[line.id] = 0;
+            }
+        }
+    }
+
+    checkIfAllSelected() {
+        for (const [lineId, quantity] of Object.entries(this.lineQuantities)) {
+            const quantityInOrder = this.order.lines.find(line => line.id === lineId)?.quantity;
+            if (quantityInOrder && quantity < quantityInOrder) {
+                return;
+            }
+        }
+        // If we got here, all of the selected quantities are equal to the order
+        // line quantities, i.e. everything is selected.
+        this.cancelAll = true;
+    }
+
     select() {
         this.resolveWith({
             orderId: this.order.id,
             lines: this.getLineInputs(),
             reason: this.reason,
+            cancelShipping: this.cancelAll,
         });
     }
 

+ 1 - 1
packages/admin-ui/src/lib/order/src/components/order-detail/order-detail.component.ts

@@ -231,7 +231,7 @@ export class OrderDetailComponent
     canAddFulfillment(order: OrderDetail.Fragment): boolean {
         const allItemsFulfilled = order.lines
             .reduce((items, line) => [...items, ...line.items], [] as OrderLineFragment['items'])
-            .every(item => !!item.fulfillment);
+            .every(item => !!item.fulfillment || item.cancelled);
         return (
             !allItemsFulfilled &&
             !this.hasUnsettledModifications(order) &&

+ 3 - 0
packages/admin-ui/src/lib/order/src/components/order-history/order-history.component.html

@@ -106,6 +106,9 @@
                     <vdr-labeled-data [label]="'order.contents' | translate">
                         <vdr-simple-item-list [items]="items"></vdr-simple-item-list>
                     </vdr-labeled-data>
+                    <vdr-labeled-data [label]="'order.shipping-cancelled' | translate">
+                        {{ entry.data.shippingCancelled }}
+                    </vdr-labeled-data>
                 </vdr-history-entry-detail>
             </ng-container>
             <ng-container *ngSwitchCase="type.ORDER_FULFILLMENT">

+ 4 - 2
packages/admin-ui/src/lib/order/src/components/order-table/order-table.component.html

@@ -84,7 +84,8 @@
                 </div>
             </td>
         </tr>
-        <tr class="order-adjustment" *ngFor="let discount of order.discounts">
+        <ng-container *ngFor="let discount of order.discounts">
+            <tr class="order-adjustment" *ngIf="discount.type !== 'OTHER'">
             <td colspan="5" class="left clr-align-middle">
                 <a [routerLink]="getPromotionLink(discount)">{{ discount.description }}</a>
                 <vdr-chip *ngIf="getCouponCodeForAdjustment(order, discount) as couponCode">{{
@@ -97,7 +98,8 @@
                     {{ discount.amount | localeCurrency: order.currencyCode }}
                 </div>
             </td>
-        </tr>
+            </tr>
+        </ng-container>
         <tr class="sub-total">
             <td class="left clr-align-middle">{{ 'order.sub-total' | translate }}</td>
             <td colspan="4"></td>

+ 3 - 1
packages/admin-ui/src/lib/order/src/components/refund-order-dialog/refund-order-dialog.component.ts

@@ -20,7 +20,8 @@ type SelectionLine = { quantity: number; refund: boolean; cancel: boolean };
     changeDetection: ChangeDetectionStrategy.OnPush,
 })
 export class RefundOrderDialogComponent
-    implements OnInit, Dialog<{ cancel: CancelOrderInput; refund: RefundOrderInput }> {
+    implements OnInit, Dialog<{ cancel: CancelOrderInput; refund: RefundOrderInput }>
+{
     order: OrderDetailFragment;
     resolveWith: (result?: { cancel: CancelOrderInput; refund: RefundOrderInput }) => void;
     reason: string;
@@ -147,6 +148,7 @@ export class RefundOrderDialogComponent
                     lines: cancelLines,
                     orderId: this.order.id,
                     reason: this.reason,
+                    cancelShipping: this.refundShipping,
                 },
             });
         }

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/cs.json

@@ -436,6 +436,7 @@
     "arrange-additional-payment": "",
     "billing-address": "Fakturační adresa",
     "cancel": "Zrušit",
+    "cancel-entire-order": "",
     "cancel-fulfillment": "Zrušit zpracování",
     "cancel-modification": "Zrušit úpravy",
     "cancel-order": "Zrušit objednávku",
@@ -443,6 +444,7 @@
     "cancel-reason-customer-request": "Požadavek zákazníka",
     "cancel-reason-not-available": "Neuveden",
     "cancel-selected-items": "Zrušit vybrané položky",
+    "cancel-specified-items": "",
     "cancellation-reason": "Důvod zrušení",
     "cancelled-order-success": "Objednávka úspěšně zrušena",
     "confirm-modifications": "Potvrdit úpravy",
@@ -547,6 +549,7 @@
     "settle-refund-success": "Úspěšně vypořádana refundace",
     "shipping": "Dodání",
     "shipping-address": "Dodací adresa",
+    "shipping-cancelled": "",
     "shipping-method": "Dodací metoda",
     "state": "Stav",
     "sub-total": "Mezisoučet",
@@ -665,4 +668,4 @@
     "job-result": "Výsledek úlohy",
     "job-state": "Stav úlohy"
   }
-}
+}

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/de.json

@@ -436,6 +436,7 @@
     "arrange-additional-payment": "Zusätzliche Zahlung veranlassen",
     "billing-address": "Rechnungsadresse",
     "cancel": "Abbrechen",
+    "cancel-entire-order": "",
     "cancel-fulfillment": "Ausführung abbrechen",
     "cancel-modification": "Änderungen verwerfen",
     "cancel-order": "Bestellung stornieren",
@@ -443,6 +444,7 @@
     "cancel-reason-customer-request": "Kundenanfrage",
     "cancel-reason-not-available": "Nicht verfügbar",
     "cancel-selected-items": "Auswahl aufheben",
+    "cancel-specified-items": "",
     "cancellation-reason": "Stornierungsgrund",
     "cancelled-order-success": "Bestellung erfolgreich storniert",
     "confirm-modifications": "Änderungen bestätigen",
@@ -547,6 +549,7 @@
     "settle-refund-success": "Rückzahlung erfolgreich durchgeführt",
     "shipping": "Versand",
     "shipping-address": "Lieferadresse",
+    "shipping-cancelled": "",
     "shipping-method": "Versandart",
     "state": "Status",
     "sub-total": "Zwischensumme",
@@ -665,4 +668,4 @@
     "job-result": "Job-Ergebnis",
     "job-state": "Job-Status"
   }
-}
+}

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/en.json

@@ -436,13 +436,15 @@
     "arrange-additional-payment": "Arrange additional payment",
     "billing-address": "Billing address",
     "cancel": "Cancel",
+    "cancel-entire-order": "Cancel entire order",
     "cancel-fulfillment": "Cancel fulfillment",
     "cancel-modification": "Cancel modification",
-    "cancel-order": "Cancel order",
+    "cancel-order": "Cancel order or items",
     "cancel-payment": "Cancel payment",
     "cancel-reason-customer-request": "Customer request",
     "cancel-reason-not-available": "Not available",
     "cancel-selected-items": "Cancel selected items",
+    "cancel-specified-items": "Cancel specified items",
     "cancellation-reason": "Cancellation reason",
     "cancelled-order-success": "Successfully cancelled order",
     "confirm-modifications": "Confirm modifications",
@@ -547,6 +549,7 @@
     "settle-refund-success": "Successfully settled refund",
     "shipping": "Shipping",
     "shipping-address": "Shipping address",
+    "shipping-cancelled": "Shipping cancelled",
     "shipping-method": "Shipping method",
     "state": "State",
     "sub-total": "Sub total",

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/es.json

@@ -436,6 +436,7 @@
     "arrange-additional-payment": "Ordenar pagos adicionales",
     "billing-address": "Dirección de facturación",
     "cancel": "Cancelar",
+    "cancel-entire-order": "",
     "cancel-fulfillment": "Cancelar orden",
     "cancel-modification": "Cancelar modificación",
     "cancel-order": "Cancelar pedido",
@@ -443,6 +444,7 @@
     "cancel-reason-customer-request": "Solicitud del cliente",
     "cancel-reason-not-available": "No disponible",
     "cancel-selected-items": "Cancelar artículos seleccionados",
+    "cancel-specified-items": "",
     "cancellation-reason": "Motivo de la cancelación",
     "cancelled-order-success": "Pedido cancelado con éxito",
     "confirm-modifications": "Confirmar modificaciones",
@@ -547,6 +549,7 @@
     "settle-refund-success": "Reembolso liquidado con éxito",
     "shipping": "Envío",
     "shipping-address": "Dirección de envío",
+    "shipping-cancelled": "",
     "shipping-method": "Método de envío",
     "state": "Estado",
     "sub-total": "Sub total",
@@ -665,4 +668,4 @@
     "job-result": "Resultado",
     "job-state": "Estado"
   }
-}
+}

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/fr.json

@@ -436,6 +436,7 @@
     "arrange-additional-payment": "Arranger un paiment additionnel",
     "billing-address": "Adresse de facturation",
     "cancel": "Annuler",
+    "cancel-entire-order": "",
     "cancel-fulfillment": "Annuler préparation",
     "cancel-modification": "Annuler la modification",
     "cancel-order": "Annuler la commande",
@@ -443,6 +444,7 @@
     "cancel-reason-customer-request": "Demande du client",
     "cancel-reason-not-available": "Pas disponible",
     "cancel-selected-items": "Annuler les articles selectionnés",
+    "cancel-specified-items": "",
     "cancellation-reason": "Raison de l'annulation",
     "cancelled-order-success": "Commande annulée",
     "confirm-modifications": "Confirmer les modifications",
@@ -547,6 +549,7 @@
     "settle-refund-success": "Remboursement réglé",
     "shipping": "Expédition",
     "shipping-address": "Adresse de livraison",
+    "shipping-cancelled": "",
     "shipping-method": "Mode de livraison",
     "state": "Etat",
     "sub-total": "Sous total",
@@ -665,4 +668,4 @@
     "job-result": "Résultat de la tâche",
     "job-state": "Etat de la tâche"
   }
-}
+}

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/it.json

@@ -436,6 +436,7 @@
     "arrange-additional-payment": "Effettua un ulteriore pagamento",
     "billing-address": "Indirizzo di fatturazione",
     "cancel": "Annulla",
+    "cancel-entire-order": "",
     "cancel-fulfillment": "Annulla consegna",
     "cancel-modification": "Annulla modifica",
     "cancel-order": "Annulla ordine",
@@ -443,6 +444,7 @@
     "cancel-reason-customer-request": "Richiesta del cliente",
     "cancel-reason-not-available": "Non disponibile",
     "cancel-selected-items": "Cancella prodotti selezionati",
+    "cancel-specified-items": "",
     "cancellation-reason": "Motivo dell'annullamento",
     "cancelled-order-success": "Ordine cancellato con successo",
     "confirm-modifications": "Conferma modifiche",
@@ -547,6 +549,7 @@
     "settle-refund-success": "Rimborso effettuato con successo",
     "shipping": "Spedizione",
     "shipping-address": "Indirizzo di spedizione",
+    "shipping-cancelled": "",
     "shipping-method": "Metodo di spedizione",
     "state": "Stato",
     "sub-total": "Sub totale",
@@ -665,4 +668,4 @@
     "job-result": "Risultato operazione",
     "job-state": "Stato operazione"
   }
-}
+}

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/pl.json

@@ -436,6 +436,7 @@
     "arrange-additional-payment": "",
     "billing-address": "",
     "cancel": "Anuluj",
+    "cancel-entire-order": "",
     "cancel-fulfillment": "",
     "cancel-modification": "",
     "cancel-order": "Anuluj zamówienie",
@@ -443,6 +444,7 @@
     "cancel-reason-customer-request": "Prośba klienta",
     "cancel-reason-not-available": "Niedostępny",
     "cancel-selected-items": "Anuluj zaznaczone",
+    "cancel-specified-items": "",
     "cancellation-reason": "Powód anulowania",
     "cancelled-order-success": "Pomyślnie anulowano zamówienie",
     "confirm-modifications": "",
@@ -547,6 +549,7 @@
     "settle-refund-success": "Pomyślnie rozliczono zwrot",
     "shipping": "Wysyłka",
     "shipping-address": "Adres wysyłki",
+    "shipping-cancelled": "",
     "shipping-method": "Metoda wysyłki",
     "state": "Status",
     "sub-total": "Sub total",
@@ -665,4 +668,4 @@
     "job-result": "Rezultat zlecenia",
     "job-state": "Status zlecenia"
   }
-}
+}

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/pt_BR.json

@@ -436,6 +436,7 @@
     "arrange-additional-payment": "",
     "billing-address": "Endereço de cobrança",
     "cancel": "Cancelar",
+    "cancel-entire-order": "",
     "cancel-fulfillment": "Cancelar cumprimento",
     "cancel-modification": "Cancelar modificação",
     "cancel-order": "Cancelar Pedido",
@@ -443,6 +444,7 @@
     "cancel-reason-customer-request": "Pedido do cliente",
     "cancel-reason-not-available": "Não disponível",
     "cancel-selected-items": "Cancelar itens selecionados",
+    "cancel-specified-items": "",
     "cancellation-reason": "Motivo do cancelamento",
     "cancelled-order-success": "Pedido cancelado com sucesso",
     "confirm-modifications": "Confirmar modificações",
@@ -547,6 +549,7 @@
     "settle-refund-success": "Reembolso liquidado com sucesso",
     "shipping": "Envio",
     "shipping-address": "Endereço de envio",
+    "shipping-cancelled": "",
     "shipping-method": "Método de envio",
     "state": "Estado",
     "sub-total": "Subtotal",
@@ -665,4 +668,4 @@
     "job-result": "Resultado do trabalho",
     "job-state": "Estado do trabalho"
   }
-}
+}

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/pt_PT.json

@@ -436,6 +436,7 @@
     "arrange-additional-payment": "Configurar pagamento adicional",
     "billing-address": "Morada de faturação",
     "cancel": "Cancelar",
+    "cancel-entire-order": "",
     "cancel-fulfillment": "Cancelar entrega",
     "cancel-modification": "Cancelar modificação",
     "cancel-order": "Cancelar encomenda",
@@ -443,6 +444,7 @@
     "cancel-reason-customer-request": "Encomenda do cliente",
     "cancel-reason-not-available": "Não disponível",
     "cancel-selected-items": "Cancelar itens seleccionados",
+    "cancel-specified-items": "",
     "cancellation-reason": "Motivo do cancelamento",
     "cancelled-order-success": "Encomenda cancelada com sucesso",
     "confirm-modifications": "Confirmar modificações",
@@ -547,6 +549,7 @@
     "settle-refund-success": "Reembolso liquidado com sucesso",
     "shipping": "Envio",
     "shipping-address": "Morada de entrega",
+    "shipping-cancelled": "",
     "shipping-method": "Método de envio",
     "state": "Estado",
     "sub-total": "Subtotal",
@@ -665,4 +668,4 @@
     "job-result": "Resultado do trabalho",
     "job-state": "Estado do trabalho"
   }
-}
+}

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/ru.json

@@ -436,6 +436,7 @@
     "arrange-additional-payment": "Организовать доплату",
     "billing-address": "Платежный адрес",
     "cancel": "Отмена",
+    "cancel-entire-order": "",
     "cancel-fulfillment": "Отменить выполнение",
     "cancel-modification": "Отменить изменение",
     "cancel-order": "Отменить заказ",
@@ -443,6 +444,7 @@
     "cancel-reason-customer-request": "Запрос клиента",
     "cancel-reason-not-available": "Недоступен",
     "cancel-selected-items": "Отменить выбранные позиции",
+    "cancel-specified-items": "",
     "cancellation-reason": "Причина отмены",
     "cancelled-order-success": "Успешно отмененный заказ",
     "confirm-modifications": "Подтвердите изменения",
@@ -547,6 +549,7 @@
     "settle-refund-success": "Возврат успешно осуществлен",
     "shipping": "Доставка",
     "shipping-address": "Адрес доставки",
+    "shipping-cancelled": "",
     "shipping-method": "Способ доставки",
     "state": "Состояние",
     "sub-total": "Промежуточный итог",
@@ -665,4 +668,4 @@
     "job-result": "Результат задания",
     "job-state": "Состояние задания"
   }
-}
+}

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/uk.json

@@ -436,6 +436,7 @@
     "arrange-additional-payment": "Організувати доплату",
     "billing-address": "Платіжна адреса",
     "cancel": "Скасування",
+    "cancel-entire-order": "",
     "cancel-fulfillment": "Скасувати виконання",
     "cancel-modification": "Скасувати зміну",
     "cancel-order": "Скасувати замовлення",
@@ -443,6 +444,7 @@
     "cancel-reason-customer-request": "Запит клієнта",
     "cancel-reason-not-available": "Недоступний",
     "cancel-selected-items": "Скасувати вибрані позиції",
+    "cancel-specified-items": "",
     "cancellation-reason": "Причина скасування",
     "cancelled-order-success": "Успішно скасоване замовлення",
     "confirm-modifications": "Підтвердіть зміни",
@@ -547,6 +549,7 @@
     "settle-refund-success": "Повернення успішно здійснено",
     "shipping": "Доставка",
     "shipping-address": "Адреса доставки",
+    "shipping-cancelled": "",
     "shipping-method": "Спосіб доставки",
     "state": "Стан",
     "sub-total": "Проміжний підсумок",
@@ -665,4 +668,4 @@
     "job-result": "Результат завдання",
     "job-state": "Стан завдання"
   }
-}
+}

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/zh_Hans.json

@@ -436,6 +436,7 @@
     "arrange-additional-payment": "添加额外付款",
     "billing-address": "账单地址",
     "cancel": "取消",
+    "cancel-entire-order": "",
     "cancel-fulfillment": "取消发货",
     "cancel-modification": "取消修改",
     "cancel-order": "取消订单",
@@ -443,6 +444,7 @@
     "cancel-reason-customer-request": "客户要求",
     "cancel-reason-not-available": "产品无库存",
     "cancel-selected-items": "取消已选",
+    "cancel-specified-items": "",
     "cancellation-reason": "取消原因",
     "cancelled-order-success": "订单成功取消",
     "confirm-modifications": "确认修改",
@@ -547,6 +549,7 @@
     "settle-refund-success": "结算退款成功",
     "shipping": "运费",
     "shipping-address": "配送地址",
+    "shipping-cancelled": "",
     "shipping-method": "配送方式",
     "state": "状态",
     "sub-total": "小计金额",
@@ -665,4 +668,4 @@
     "job-result": "任务结果",
     "job-state": "任务状态"
   }
-}
+}

+ 4 - 1
packages/admin-ui/src/lib/static/i18n-messages/zh_Hant.json

@@ -436,6 +436,7 @@
     "arrange-additional-payment": "",
     "billing-address": "",
     "cancel": "取消",
+    "cancel-entire-order": "",
     "cancel-fulfillment": "",
     "cancel-modification": "",
     "cancel-order": "取消訂單",
@@ -443,6 +444,7 @@
     "cancel-reason-customer-request": "客户要求",
     "cancel-reason-not-available": "產品無庫存",
     "cancel-selected-items": "取消已選",
+    "cancel-specified-items": "",
     "cancellation-reason": "取消原因",
     "cancelled-order-success": "訂單取消成功",
     "confirm-modifications": "",
@@ -547,6 +549,7 @@
     "settle-refund-success": "結算退款成功",
     "shipping": "運費",
     "shipping-address": "配送地址",
+    "shipping-cancelled": "",
     "shipping-method": "配送方式",
     "state": "狀態",
     "sub-total": "小計金額",
@@ -665,4 +668,4 @@
     "job-result": "",
     "job-state": ""
   }
-}
+}