All files / src/entities variation_fields_option.ts

57.4% Statements 31/54
0% Branches 0/5
33.33% Functions 1/3
56.86% Lines 29/51

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105  1x 1x     1x   1x 1x 1x 1x   1x     1x     1x     1x     1x     1x     1x     1x     1x     1x     1x     1x     1x     1x     1x     1x     1x     1x     1x     1x     1x                                                             1x  
import { DiscountGroup } from './discount_group.js';
import { Entity } from '../entity.js';
import { MerchiFile } from './file.js';
import { InventoryUnitVariation } from './inventory_unit_variation.js';
import { Variation } from './variation.js';
import { VariationField } from './variation_field.js';
 
export class VariationFieldsOption extends Entity {
  protected static resourceName = 'variation_fields_options';
  protected static singularName = 'variationFieldsOption';
  protected static pluralName = 'variationFieldsOptions';
 
  @VariationFieldsOption.property({type: Date})
  public archived?: Date | null;
 
  @VariationFieldsOption.property()
  public id?: number;
 
  @VariationFieldsOption.property({type: String})
  public value?: string | null;
 
  @VariationFieldsOption.property({type: String})
  public colour?: string | null;
 
  @VariationFieldsOption.property()
  public currency?: string;
 
  @VariationFieldsOption.property()
  public default?: boolean;
 
  @VariationFieldsOption.property()
  public include?: boolean;
 
  @VariationFieldsOption.property()
  public noInventory?: boolean;
 
  @VariationFieldsOption.property()
  public position?: number;
 
  @VariationFieldsOption.property()
  public deliveryDays?: number;
 
  @VariationFieldsOption.property()
  public variationCost?: number;
 
  @VariationFieldsOption.property({type: 'DiscountGroup'})
  public variationCostDiscountGroup?: DiscountGroup | null;
 
  @VariationFieldsOption.property()
  public variationUnitCost?: number;
 
  @VariationFieldsOption.property({embeddedByDefault: false})
  public buyUnitCost?: number;
 
  @VariationFieldsOption.property({embeddedByDefault: false})
  public buyCost?: number;
 
  @VariationFieldsOption.property({type: 'DiscountGroup'})
  public variationUnitCostDiscountGroup?: DiscountGroup | null;
 
  @VariationFieldsOption.property({type: VariationField})
  public variationField?: VariationField | null;
 
  @VariationFieldsOption.property({type: MerchiFile})
  public linkedFile?: MerchiFile | null;
 
  @VariationFieldsOption.property({arrayType: 'Variation'})
  public selectedByVariations?: Variation[];
 
  @VariationFieldsOption.property({arrayType: 'InventoryUnitVariation'})
  public inventoryUnitVariations?: InventoryUnitVariation[];
 
  @VariationFieldsOption.property({arrayType: 'VariationFieldsOption'})
  public selectedBy?: VariationFieldsOption[];
 
  public totalCost = (quantity: number) => {
    Iif (this.variationCost === undefined) {
      throw new Error('variationCost is unknown');
    }
    Iif (this.variationUnitCost === undefined) {
      throw new Error('variationUnitCost is unknown');
    }
    return this.variationCost + this.variationUnitCost * quantity;
  };
 
  public buildVariationOption = () => {
    const result = new this.merchi.VariationOption(this.merchi);
    result.optionId = this.id;
    result.include = this.include;
    result.value = this.value;
    result.position = this.position;
    result.default = this.default;
    result.colour = this.colour;
    result.linkedFile = this.linkedFile;
    result.quantity = 0;
 
    result.currency = this.currency;
    result.unitCost = this.variationUnitCost;
    result.unitCostTotal = 0;
    result.onceOffCost = this.variationCost;
    result.totalCost = this.variationCost;
    return result;
  };
}