101 lines
5.4 KiB
PHP
101 lines
5.4 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use Phinx\Migration\AbstractMigration;
|
|
|
|
/**
|
|
* Tabelle locali (copia in sola lettura) dei dati Mago4 per le statistiche ordini cliente.
|
|
*
|
|
* - mago_sale_ord : testate ordini cliente (MA_SaleOrd)
|
|
* - mago_cust_supp : anagrafica clienti (MA_CustSupp, solo clienti)
|
|
* - mago_sync_state : stato dell'ultima sincronizzazione per ogni entità
|
|
*/
|
|
final class CreateMagoSalesTables extends AbstractMigration
|
|
{
|
|
public function change(): void
|
|
{
|
|
// ---------- ORDINI CLIENTE (testate) ----------
|
|
$this->table('mago_sale_ord', [
|
|
'id' => false,
|
|
'primary_key' => ['sale_ord_id'],
|
|
'comment' => 'Copia locale MA_SaleOrd (Mago4) - sola lettura',
|
|
])
|
|
->addColumn('sale_ord_id', 'integer', ['signed' => false])
|
|
->addColumn('internal_ord_no', 'string', ['limit' => 30, 'default' => ''])
|
|
->addColumn('external_ord_no', 'string', ['limit' => 60, 'default' => ''])
|
|
->addColumn('order_date', 'date', ['null' => true])
|
|
->addColumn('expected_delivery_date', 'date', ['null' => true])
|
|
->addColumn('confirmed_delivery_date', 'date', ['null' => true])
|
|
->addColumn('compulsory_delivery_date', 'date', ['null' => true])
|
|
->addColumn('customer', 'string', ['limit' => 20, 'default' => ''])
|
|
->addColumn('invoicing_customer', 'string', ['limit' => 20, 'default' => ''])
|
|
->addColumn('salesperson', 'string', ['limit' => 20, 'default' => ''])
|
|
->addColumn('area_manager', 'string', ['limit' => 20, 'default' => ''])
|
|
->addColumn('area', 'string', ['limit' => 20, 'default' => ''])
|
|
->addColumn('payment', 'string', ['limit' => 20, 'default' => ''])
|
|
->addColumn('currency', 'string', ['limit' => 8, 'default' => ''])
|
|
->addColumn('our_reference', 'string', ['limit' => 150, 'default' => ''])
|
|
->addColumn('your_reference', 'string', ['limit' => 150, 'default' => ''])
|
|
->addColumn('transport', 'string', ['limit' => 20, 'default' => ''])
|
|
->addColumn('port', 'string', ['limit' => 20, 'default' => ''])
|
|
->addColumn('package', 'string', ['limit' => 40, 'default' => ''])
|
|
->addColumn('storage', 'string', ['limit' => 30, 'default' => ''])
|
|
->addColumn('job', 'string', ['limit' => 30, 'default' => ''])
|
|
->addColumn('delivered', 'boolean', ['default' => false])
|
|
->addColumn('invoiced', 'boolean', ['default' => false])
|
|
->addColumn('cancelled', 'boolean', ['default' => false])
|
|
->addColumn('is_blocked', 'boolean', ['default' => false])
|
|
->addColumn('printed', 'boolean', ['default' => false])
|
|
->addColumn('archived', 'boolean', ['default' => false])
|
|
->addColumn('open_order', 'boolean', ['default' => false])
|
|
->addColumn('priority', 'integer', ['default' => 0])
|
|
->addColumn('notes', 'text', ['null' => true])
|
|
->addColumn('tb_created', 'datetime', ['null' => true])
|
|
->addColumn('tb_modified', 'datetime', ['null' => true])
|
|
->addColumn('raw_json', 'text', ['null' => true, 'limit' => \Phinx\Db\Adapter\MysqlAdapter::TEXT_LONG])
|
|
->addColumn('synced_at', 'datetime', ['null' => true])
|
|
->addIndex(['order_date'])
|
|
->addIndex(['customer'])
|
|
->addIndex(['salesperson'])
|
|
->addIndex(['area'])
|
|
->addIndex(['tb_modified'])
|
|
->addIndex(['internal_ord_no'])
|
|
->create();
|
|
|
|
// ---------- ANAGRAFICA CLIENTI ----------
|
|
$this->table('mago_cust_supp', [
|
|
'id' => false,
|
|
'primary_key' => ['cust_supp_type', 'cust_supp'],
|
|
'comment' => 'Copia locale MA_CustSupp (Mago4) - sola lettura',
|
|
])
|
|
->addColumn('cust_supp_type', 'integer')
|
|
->addColumn('cust_supp', 'string', ['limit' => 20])
|
|
->addColumn('company_name', 'string', ['limit' => 200, 'default' => ''])
|
|
->addColumn('city', 'string', ['limit' => 100, 'default' => ''])
|
|
->addColumn('county', 'string', ['limit' => 10, 'default' => ''])
|
|
->addColumn('region', 'string', ['limit' => 60, 'default' => ''])
|
|
->addColumn('country', 'string', ['limit' => 60, 'default' => ''])
|
|
->addColumn('iso_country_code', 'string', ['limit' => 4, 'default' => ''])
|
|
->addColumn('disabled', 'boolean', ['default' => false])
|
|
->addColumn('tb_modified', 'datetime', ['null' => true])
|
|
->addColumn('synced_at', 'datetime', ['null' => true])
|
|
->addIndex(['company_name'])
|
|
->create();
|
|
|
|
// ---------- STATO SINCRONIZZAZIONE ----------
|
|
$this->table('mago_sync_state', [
|
|
'id' => false,
|
|
'primary_key' => ['entity'],
|
|
])
|
|
->addColumn('entity', 'string', ['limit' => 50])
|
|
->addColumn('last_tb_modified', 'datetime', ['null' => true])
|
|
->addColumn('last_run_at', 'datetime', ['null' => true])
|
|
->addColumn('last_status', 'string', ['limit' => 20, 'default' => ''])
|
|
->addColumn('last_message', 'text', ['null' => true])
|
|
->addColumn('records_last_run', 'integer', ['default' => 0])
|
|
->addColumn('duration_ms', 'integer', ['default' => 0])
|
|
->create();
|
|
}
|
|
}
|