61 lines
3.1 KiB
PHP
61 lines
3.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use Phinx\Migration\AbstractMigration;
|
|
|
|
/**
|
|
* Preventivi per matrice:
|
|
* - permesso sales.quote.view (pagina sales_preventivo.php: mostra costi e margini)
|
|
* - tabella sales_quotes: preventivi salvati con costo, ricarico, prezzo e commento
|
|
*/
|
|
final class AddSalesQuotes extends AbstractMigration
|
|
{
|
|
public function up(): void
|
|
{
|
|
if (!$this->fetchRow("SELECT id FROM auth_permissions WHERE name = 'sales.quote.view'")) {
|
|
$this->table('auth_permissions')->insert([
|
|
'name' => 'sales.quote.view',
|
|
'display_name' => 'Preventivi matrici',
|
|
'description' => 'Calcolare preventivi: costo mescola, ricarico, prezzo suggerito',
|
|
'removable' => 1,
|
|
'created_at' => date('Y-m-d H:i:s'),
|
|
'updated_at' => date('Y-m-d H:i:s'),
|
|
])->saveData();
|
|
}
|
|
|
|
if (!$this->hasTable('sales_quotes')) {
|
|
$this->table('sales_quotes', ['collation' => 'utf8mb4_general_ci'])
|
|
->addColumn('created_at', 'datetime')
|
|
->addColumn('user_id', 'integer', ['null' => true])
|
|
->addColumn('idmatrice', 'integer')
|
|
->addColumn('matrice_name', 'string', ['limit' => 150])
|
|
->addColumn('customer_code', 'string', ['limit' => 20, 'null' => true])
|
|
->addColumn('customer_name', 'string', ['limit' => 200, 'null' => true])
|
|
->addColumn('uom', 'string', ['limit' => 4])
|
|
->addColumn('cost_mix', 'decimal', ['precision' => 12, 'scale' => 4, 'null' => true])
|
|
->addColumn('scrap_pct', 'decimal', ['precision' => 6, 'scale' => 2, 'default' => 0])
|
|
->addColumn('other_costs', 'decimal', ['precision' => 12, 'scale' => 4, 'default' => 0])
|
|
->addColumn('cost_total', 'decimal', ['precision' => 12, 'scale' => 4, 'null' => true])
|
|
->addColumn('markup_pct', 'decimal', ['precision' => 7, 'scale' => 2, 'null' => true])
|
|
->addColumn('price_suggested', 'decimal', ['precision' => 12, 'scale' => 4, 'null' => true])
|
|
->addColumn('price_offered', 'decimal', ['precision' => 12, 'scale' => 4, 'null' => true])
|
|
->addColumn('ref_last_price', 'decimal', ['precision' => 12, 'scale' => 4, 'null' => true])
|
|
->addColumn('ref_avg_price', 'decimal', ['precision' => 12, 'scale' => 4, 'null' => true])
|
|
->addColumn('mix_detail', 'text', ['null' => true])
|
|
->addColumn('comment', 'text', ['null' => true])
|
|
->addIndex(['idmatrice'])
|
|
->addIndex(['customer_code'])
|
|
->addIndex(['created_at'])
|
|
->create();
|
|
}
|
|
}
|
|
|
|
public function down(): void
|
|
{
|
|
if ($this->hasTable('sales_quotes')) $this->table('sales_quotes')->drop()->save();
|
|
$this->execute("DELETE pr FROM auth_permission_role pr JOIN auth_permissions p ON p.id = pr.permission_id WHERE p.name = 'sales.quote.view'");
|
|
$this->execute("DELETE FROM auth_permissions WHERE name = 'sales.quote.view'");
|
|
}
|
|
}
|