import * as plugins from './plugins.js';
import * as interfaces from './interfaces/index.js';

const fromContact: plugins.tsclass.business.IContact = {
  name: 'Awesome From Company',
  type: 'company',
  description: 'a company that does stuff',
  address: {
    streetName: 'Awesome Street',
    houseNumber: '5',
    city: 'Bremen',
    country: 'Germany',
    postalCode: '28359',
  },
  vatId: 'DE12345678',
  sepaConnection: {
    bic: 'BPOTBEB1',
    iban: 'BE01234567891616'
  },
  email: 'hello@awesome.company',
  phone: '+49 421 1234567',
  fax: '+49 421 1234568',

};

const toContact: plugins.tsclass.business.IContact = {
  name: 'Awesome To GmbH',
  type: 'company',
  customerNumber: 'LL-CLIENT-123',
  description: 'a company that does stuff',
  address: {
    streetName: 'Awesome Street',
    houseNumber: '5',
    city: 'Bremen',
    country: 'Germany',
    postalCode: '28359'
  },
  vatId: 'BE12345678',
}

export const demoLetter: plugins.tsclass.business.ILetter = {
  versionInfo: {
    type: 'draft',
    version: '1.0.0',
  },
  accentColor: null,
  content: {
    textData: null,
    timesheetData: null,
    contractData: {
      contractDate: Date.now(),
      id: 'someid'
    },
    invoiceData: {
      id: 'LL-INV-48765',
      reverseCharge: true,
      dueInDays: 30,
      billedBy: fromContact,
      billedTo: toContact,
      status: null,
      deliveryDate: new Date().getTime(),
      periodOfPerformance: null,
      printResult: null,
      currency: 'EUR',
      notes: [],
      type: 'debitnote',
      items: [
        {
          name: 'Item with 19% VAT',
          unitQuantity: 2,
          unitNetPrice: 100,
          unitType: 'hours',
          vatPercentage: 19,
          position: 0,
        },
        {
          name: 'Item with 7% VAT',
          unitQuantity: 4,
          unitNetPrice: 100,
          unitType: 'hours',
          vatPercentage: 7,
          position: 1,
        },
        {
          name: 'Item with 7% VAT',
          unitQuantity: 3,
          unitNetPrice: 230,
          unitType: 'hours',
          vatPercentage: 7,
          position: 2,
        },
        {
          name: 'Item with 21% VAT',
          unitQuantity: 1,
          unitNetPrice: 230,
          unitType: 'hours',
          vatPercentage: 21,
          position: 3,
        },
        {
          name: 'Item with 0% VAT',
          unitQuantity: 6,
          unitNetPrice: 230,
          unitType: 'hours',
          vatPercentage: 0,
          position: 4,
        },{
          name: 'Item with 19% VAT',
          unitQuantity: 8,
          unitNetPrice: 100,
          unitType: 'hours',
          vatPercentage: 19,
          position: 5,
        },
        {
          name: 'Item with 7% VAT',
          unitQuantity: 9,
          unitNetPrice: 100,
          unitType: 'hours',
          vatPercentage: 7,
          position: 6,
        },
        {
          name: 'Item with 7% VAT',
          unitQuantity: 4,
          unitNetPrice: 230,
          unitType: 'hours',
          vatPercentage: 7,
          position: 8,
        },
        {
          name: 'Item with 21% VAT',
          unitQuantity: 3,
          unitNetPrice: 230,
          unitType: 'hours',
          vatPercentage: 21,
          position: 9,
        },
        {
          name: 'Item with 0% VAT',
          unitQuantity: 1,
          unitNetPrice: 230,
          unitType: 'hours',
          vatPercentage: 0,
          position: 10,
        },
        {
          name: 'Item with 0% VAT',
          unitQuantity: 1,
          unitNetPrice: 230,
          unitType: 'hours',
          vatPercentage: 0,
          position: 10,
        },
        {
          name: 'Item with 0% VAT',
          unitQuantity: 1,
          unitNetPrice: 230,
          unitType: 'hours',
          vatPercentage: 0,
          position: 10,
        },
        {
          name: 'Item with 0% VAT',
          unitQuantity: 1,
          unitNetPrice: 230,
          unitType: 'hours',
          vatPercentage: 0,
          position: 10,
        },
        {
          name: 'Item with 0% VAT',
          unitQuantity: 1,
          unitNetPrice: 230,
          unitType: 'hours',
          vatPercentage: 0,
          position: 10,
        },
        {
          name: 'Item with 0% VAT',
          unitQuantity: 1,
          unitNetPrice: 230,
          unitType: 'hours',
          vatPercentage: 0,
          position: 10,
        },
        {
          name: 'Item with 0% VAT',
          unitQuantity: 1,
          unitNetPrice: 230,
          unitType: 'hours',
          vatPercentage: 0,
          position: 10,
        },
      ],
    }
  },
  
  date: Date.now(),
  type: 'invoice',
  needsCoverSheet: false,
  objectActions: [],
  pdf: null,
  from: fromContact,
  to: toContact,
  incidenceId: null,
  language: null,
  legalContact: null,
  logoUrl: null,
  pdfAttachments: null,
  subject: 'Invoice: LL-INV-48765',
}

export const demoDocumentSettings: interfaces.IDocumentSettings = {
  enableTopDraftText: true,
  enableDefaultHeader: true,
  enableDefaultFooter: true,
  languageCode: 'DE',
};