saeid-khaleghi / police-reporter
一个用于安全地向新西兰警方报告商业交易,以符合透明度的包。
V1.3.0
2024-01-08 19:12 UTC
Requires
- nesbot/carbon: ^2.71
README
此包将帮助您生成新西兰警方报告的XML文件。
安装
您可以通过Composer安装此包
composer require saeid-khaleghi/police-reporter
用法
use SaeidKhaleghi\PoliceReporter\XMLGenerator; $transactions = Transaction::all(); $reporter = XMLGenerator::create($transactions)->writeToFile($path);
您可以通过实现
use SaeidKhaleghi\PoliceReporter\Contracts\Reportable; class Transaction extends Model implements Reportable { public function toReportTransaction(): Url | string | array { return (new ReportTransaction($this))->transaction(); } }
您的PoliceReportTransactionMaker应该像这样
use SaeidKhaleghi\PoliceReporter\Tags\Person; use SaeidKhaleghi\PoliceReporter\Tags\Signatory; use SaeidKhaleghi\PoliceReporter\Tags\ToAccount; use SaeidKhaleghi\PoliceReporter\Tags\FromAccount; use SaeidKhaleghi\PoliceReporter\Tags\TransactionTo; use SaeidKhaleghi\PoliceReporter\Tags\TransactionFrom; use SaeidKhaleghi\PoliceReporter\Tags\Transaction as ReportTransaction; class PoliceReportTransactionMaker { private Transaction $transaction; public function __construct(Transaction $transaction) { $this->transaction = $transaction; } public function transactionFrom() { return new TransactionFrom('From fund code', 'From country'); } public function fromAccount() { return new FromAccount(env('APP_FORMAL_NAME'), env('APP_INSTITUTION_CODE'), 'Branch', 'Account', 'Account_name'); } public function signatory() { $identification = new PersonIdentification('Type', 'id_number', 'country', 'Expiry date'); $user = new Person('Gender', 'First name', 'Last name', 'Birthdate', 'Passport number', 'Passport Country (Two-Letter Country Code)', $identification); return new Signatory($user); } public function transactionTo() { return new TransactionTo('To fund code', 'To country'); } public function toAccount() { return ToAccount::create('Institution name', 'Account', 'Account_name', 'swift'); } public function transaction() { return ReportTransaction::create($this->transfer->reference, $this->transfer->updated_at, $this->transfer->origin_amount) ->addFromMyClient($this->transactionFrom()->addFromAccount($this->fromAccount()->addSignatory($this->signatory()))) ->addTransactionTo($this->transactionTo()->addToAccount($this->toAccount())); } }
生成的XML将类似于这样
<reportdata> <transactions> <transaction> <transactionnumber>TW01182606-101023</transactionnumber> <transaction_location>web</transaction_location> <date_transaction>2023-10-11T11:03:51</date_transaction> <transmode_code>BA</transmode_code> <amount_local>129.06</amount_local> <t_from_my_client> <from_funds_code>N</from_funds_code> <from_account> <institution_name>Your Company</institution_name> <institution_code>12345</institution_code> <branch>web</branch> <account>ABC123</account> <account_name>Saeid Khaleghi</account_name> <signatory> <t_person> <gender>M</gender> <first_name>Saeid</first_name> <last_name>Khaleghi</last_name> <birthdate>1980-06-24T00:00:00</birthdate> <id_number>ZYXWV123</id_number> <identification> <type>A</type> <number>ZYXWV123</number> <issue_country>NZ</issue_country> </identification> </t_person> </signatory> </from_account> <from_country>NZ</from_country> </t_from_my_client> <t_to> <to_funds_code>N</to_funds_code> <to_account> <institution_name>BNZ</institution_name> <swift>BSIRIRTH</swift> <account>ABCDEFGHIJK1234567890</account> <account_name>RECIPIENT NAME</account_name> </to_account> <to_country>US</to_country> </t_to> </transaction> <transaction> ... </transaction> </transactions> </reportdata>
鸣谢
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。