Introduce a comprehensive set of commercial features including a multi-step order approval workflow, customer credit management, and specialized import service invoicing. Key changes: - Implement `pending_approval` and `approved` shipment statuses to allow staff verification before customer payment. - Add a credit system to `User` model with `credit_limit` and `credit_used` to manage customer balances and debts. - Develop a new `importInvoice` PDF generation service following the "Sheet ENG Invoice" specification for import services. - Add Filament resources for managing Audit Logs, Commitment Forms, Customer Credits, and Shipment Checklists. - Implement staff-specific APIs for order approval/rejection and customer financial status monitoring. - Integrate Kavenegar SMS service for mobile verification and notifications. - Add bulk tracking import functionality via CSV/Excel. - Update WordPress bridge assets (CSS/JS) to support the new multi-step order form UI and updated redirection logic. - Update deployment configurations and documentation to reflect new production domains and feature sets.
38 lines
1.1 KiB
PHP
38 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Traits;
|
|
|
|
use App\Models\AuditLog;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
trait Auditable
|
|
{
|
|
protected static function bootAuditable(): void
|
|
{
|
|
static::created(function (Model $model) {
|
|
AuditLog::log('created', $model, [], $model->getAttributes(), "ایجاد رکورد جدید");
|
|
});
|
|
|
|
static::updated(function (Model $model) {
|
|
$changes = $model->getChanges();
|
|
$original = $model->getOriginal();
|
|
|
|
// حذف فیلدهای زمانی از تغییرات
|
|
unset($changes['updated_at'], $original['updated_at']);
|
|
|
|
if (!empty($changes)) {
|
|
AuditLog::log('updated', $model, $original, $changes, "بهروزرسانی رکورد");
|
|
}
|
|
});
|
|
|
|
static::deleted(function (Model $model) {
|
|
AuditLog::log('deleted', $model, $model->getAttributes(), [], "حذف رکورد");
|
|
});
|
|
}
|
|
|
|
public function getAuditableChanges(): array
|
|
{
|
|
return $this->getChanges();
|
|
}
|
|
}
|