/* eslint-disable arrow-body-style */
/* eslint-disable no-unused-vars */
/* eslint-disable no-shadow */

export enum InvoiceModel {
  NFe = 55,

  CTe = 57,

  NFSe = 99,
}

export const InvoiceModelName = (model: InvoiceModel): string => {
  switch (model) {
    case InvoiceModel.NFe:
      return 'NFe';

    case InvoiceModel.NFSe:
      return 'NFSe';

    case InvoiceModel.CTe:
      return 'CTe';

    default:
      return 'unknown';
  }
};

export enum InvoiceSituation {
  Authorized = 'Autorizada',

  Canceled = 'Cancelada',
}

export enum InvoiceDirection {
  In = '0',

  Out = '1',
}

export type Invoice = {
  id: string;

  issueDate: Date;

  model: InvoiceModel;

  direction: InvoiceDirection;

  number: string;

  emitter: {
    name: string;

    document: string;
  };

  recipient: {
    name: string;

    document: string;
  };

  value: number;

  situation: string;

  nfeKey: string;

  natureOfOperation: string;

  digestValue: string;

  integrated: boolean;

  xmlUrl: string;

  pdfUrl: string;

  invoiceMgId: string;

  createdAt: Date;

  updatedAt: Date;
};
