60 lines
3.3 KiB
PHP
60 lines
3.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use Phinx\Migration\AbstractMigration;
|
|
|
|
/**
|
|
* Righe ordini cliente da MA_SaleOrdDetails (Mago4) e date di consegna
|
|
* calcolate dalle righe sulla testata.
|
|
*/
|
|
final class CreateMagoSaleOrdDetail extends AbstractMigration
|
|
{
|
|
public function change(): void
|
|
{
|
|
$this->table('mago_sale_ord_detail', [
|
|
'id' => false,
|
|
'primary_key' => ['sale_ord_id', 'sub_id'],
|
|
'comment' => 'Copia locale MA_SaleOrdDetails (Mago4) - sola lettura',
|
|
])
|
|
->addColumn('sale_ord_id', 'integer', ['signed' => false])
|
|
->addColumn('sub_id', 'integer')
|
|
->addColumn('line', 'integer', ['default' => 0])
|
|
->addColumn('position', 'integer', ['default' => 0])
|
|
->addColumn('line_type', 'integer', ['default' => 0])
|
|
->addColumn('item', 'string', ['limit' => 30, 'default' => ''])
|
|
->addColumn('description', 'string', ['limit' => 255, 'default' => ''])
|
|
->addColumn('uom', 'string', ['limit' => 10, 'default' => ''])
|
|
->addColumn('qty', 'decimal', ['precision' => 15, 'scale' => 3, 'default' => 0])
|
|
->addColumn('delivered_qty', 'decimal', ['precision' => 15, 'scale' => 3, 'default' => 0])
|
|
->addColumn('invoiced_qty', 'decimal', ['precision' => 15, 'scale' => 3, 'default' => 0])
|
|
->addColumn('unit_value', 'decimal', ['precision' => 15, 'scale' => 5, 'default' => 0])
|
|
->addColumn('discount_amount', 'decimal', ['precision' => 15, 'scale' => 2, 'default' => 0])
|
|
->addColumn('taxable_amount', 'decimal', ['precision' => 15, 'scale' => 2, 'default' => 0])
|
|
->addColumn('total_amount', 'decimal', ['precision' => 15, 'scale' => 2, 'default' => 0])
|
|
->addColumn('expected_delivery_date', 'date', ['null' => true])
|
|
->addColumn('confirmed_delivery_date', 'date', ['null' => true])
|
|
->addColumn('delivered', 'boolean', ['default' => false])
|
|
->addColumn('invoiced', 'boolean', ['default' => false])
|
|
->addColumn('cancelled', 'boolean', ['default' => false])
|
|
->addColumn('customer', 'string', ['limit' => 20, 'default' => ''])
|
|
->addColumn('order_date', 'date', ['null' => true])
|
|
->addColumn('internal_ord_no', 'string', ['limit' => 30, 'default' => ''])
|
|
->addColumn('notes', 'text', ['null' => true])
|
|
->addColumn('tb_modified', 'datetime', ['null' => true])
|
|
->addColumn('synced_at', 'datetime', ['null' => true])
|
|
->addIndex(['item'])
|
|
->addIndex(['order_date'])
|
|
->addIndex(['expected_delivery_date'])
|
|
->addIndex(['customer'])
|
|
->create();
|
|
|
|
// Date di consegna ricavate dalle righe (la data in testata spesso resta = data ordine)
|
|
$this->table('mago_sale_ord')
|
|
->addColumn('line_expected_date', 'date', ['null' => true, 'after' => 'compulsory_delivery_date', 'comment' => 'Prima data prevista tra le righe aperte'])
|
|
->addColumn('line_confirmed_date', 'date', ['null' => true, 'after' => 'line_expected_date', 'comment' => 'Prima data confermata tra le righe aperte'])
|
|
->addColumn('lines_count', 'integer', ['default' => 0, 'after' => 'line_confirmed_date'])
|
|
->update();
|
|
}
|
|
}
|