added quote
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
<?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'");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user