All files / src/entities variation_fields_option.ts

58.18% Statements 32/55
0% Branches 0/5
33.33% Functions 1/3
57.69% Lines 30/52

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 106 107 108  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                                                             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 isExtracted?: boolean;
 
  @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;
  };
}