<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class LiquidacionesTable extends AbstractMigration
{
    public function change(): void
    {
        $table = $this->table('liquidaciones');
        $table
            ->addColumn('repartidor_id', 'integer', ['null' => true, 'signed' => false])
            ->addColumn('tienda_id', 'integer', ['null' => true, 'signed' => false])
            ->addColumn('tipo', 'enum', ['values' => ['repartidor', 'tienda']])
            ->addColumn('periodo_inicio', 'date')
            ->addColumn('periodo_fin', 'date')
            ->addColumn('total_pedidos', 'integer', ['default' => 0])
            ->addColumn('monto_bruto', 'decimal', ['precision' => 12, 'scale' => 2, 'default' => 0])
            ->addColumn('comision', 'decimal', ['precision' => 12, 'scale' => 2, 'default' => 0])
            ->addColumn('monto_neto', 'decimal', ['precision' => 12, 'scale' => 2, 'default' => 0])
            ->addColumn('estado', 'enum', ['values' => ['pendiente', 'pagada'], 'default' => 'pendiente'])
            ->addColumn('created_at', 'timestamp', ['default' => 'CURRENT_TIMESTAMP'])
            ->addColumn('pagada_at', 'timestamp', ['null' => true])
            ->addForeignKey('repartidor_id', 'repartidores', 'id', ['delete' => 'SET_NULL', 'update' => 'CASCADE'])
            ->addForeignKey('tienda_id', 'tiendas', 'id', ['delete' => 'SET_NULL', 'update' => 'CASCADE'])
            ->create();
    }
}
