import { BaseSchema } from '@adonisjs/lucid/schema'

export default class extends BaseSchema {
  protected tableName = 'credit_notes'

  async up() {
    this.schema.createTable(this.tableName, (table) => {
      table.increments('id')

      table.string('generated_credit_note_id').unique().nullable()
      table
        .integer('customer_id')
        .unsigned()
        .references('id')
        .inTable('customers')
        .onDelete('CASCADE')
        .notNullable()
      table.integer('invoice_type').notNullable()
      table
        .integer('invoice_id')
        .unsigned()
        .references('id')
        .inTable('group_invoices')
        .onDelete('CASCADE')
        .notNullable()
      table.dateTime('credit_note_created_at').notNullable()
      table.decimal('amount', 12, 3).notNullable()
      table.decimal('payable_amount', 12, 3).defaultTo(0)
      table.boolean('is_adjusted').defaultTo(false)
      table.text('notes').nullable()
      table.boolean('is_email_sent').defaultTo(false)
      table.timestamp('email_sent_at').nullable()

      table.timestamp('created_at').notNullable()
      table.timestamp('updated_at').nullable()
    })
  }

  async down() {
    this.schema.dropTable(this.tableName)
  }
}
