feat: Implement financial engine for commission and tax calculations
- Added new configuration keys for appointment and upgrade commissions, tax settings, and SMS panel fee in SiteConfigController and SiteConfigRepository. - Introduced CommissionService to handle commission calculations for appointments and subscriptions, including tax deductions and SMS fees. - Created FinancialBreakdown entity and repository to log financial transactions. - Updated PaymentController to process commissions upon successful payments for appointments and subscriptions. - Developed FinancialReportPage in the admin panel to display financial breakdowns and summaries. - Added database migration for the new financial_breakdowns table.
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DoctrineMigrations;
|
||||
|
||||
use Doctrine\DBAL\Schema\Schema;
|
||||
use Doctrine\Migrations\AbstractMigration;
|
||||
|
||||
/**
|
||||
* Auto-generated Migration: Please modify to your needs!
|
||||
*/
|
||||
final class Version20260624092459 extends AbstractMigration
|
||||
{
|
||||
public function getDescription(): string
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
public function up(Schema $schema): void
|
||||
{
|
||||
// this up() migration is auto-generated, please modify it to your needs
|
||||
$this->addSql('CREATE TABLE financial_breakdowns (id INT AUTO_INCREMENT NOT NULL, uuid VARCHAR(36) NOT NULL, source VARCHAR(20) NOT NULL, gross_rials INT NOT NULL, sms_fee_rials INT NOT NULL, tax_percent NUMERIC(5, 2) NOT NULL, tax_rials INT NOT NULL, net_after_tax_rials INT NOT NULL, commission_percent NUMERIC(5, 2) NOT NULL, representation_share_rials INT NOT NULL, system_share_rials INT NOT NULL, representation_id INT DEFAULT NULL, doctor_id INT DEFAULT NULL, clinic_id INT DEFAULT NULL, created_at INT NOT NULL, payment_id INT NOT NULL, user_id INT NOT NULL, UNIQUE INDEX UNIQ_D66D9FF4D17F50A6 (uuid), INDEX IDX_D66D9FF44C3A3BB (payment_id), INDEX IDX_D66D9FF4A76ED395 (user_id), INDEX idx_breakdown_rep_date (representation_id, created_at), INDEX idx_breakdown_source_date (source, created_at), PRIMARY KEY (id)) DEFAULT CHARACTER SET utf8mb4');
|
||||
$this->addSql('ALTER TABLE financial_breakdowns ADD CONSTRAINT FK_D66D9FF44C3A3BB FOREIGN KEY (payment_id) REFERENCES payments (id) ON DELETE CASCADE');
|
||||
$this->addSql('ALTER TABLE financial_breakdowns ADD CONSTRAINT FK_D66D9FF4A76ED395 FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE RESTRICT');
|
||||
}
|
||||
|
||||
public function down(Schema $schema): void
|
||||
{
|
||||
// this down() migration is auto-generated, please modify it to your needs
|
||||
$this->addSql('ALTER TABLE financial_breakdowns DROP FOREIGN KEY FK_D66D9FF44C3A3BB');
|
||||
$this->addSql('ALTER TABLE financial_breakdowns DROP FOREIGN KEY FK_D66D9FF4A76ED395');
|
||||
$this->addSql('DROP TABLE financial_breakdowns');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user