oromedialab/php-file-manager

dev-master 2016-08-07 16:25 UTC

This package is not auto-updated.

Last update: 2024-09-14 17:37:24 UTC


README

由 Ibrahim Azhar Armar 开发和维护

Gitter

简介

PHP 文件管理和操作实用工具类

使用 composer 安装

composer require oromedialab/php-file-manager dev-master

使用 GIT 克隆安装

git clone https://github.com/oromedialab/php-file-manager.git
  1. 加拿大支付协会 - CPA-005 编写器

此库对 CPA-005 文件执行写入操作

加拿大银行在与其他加拿大银行交换电子 CAD 或 USD 支付详情时使用加拿大支付协会 (CPA) 布局。建议主要系统为大型机系统且只处理加拿大境内支付的客户端。

CPA 格式不能用于目的地为美国的电子支付。

说明

  • 任何文件的第一个和最后一个逻辑记录必须是逻辑记录类型 "A" 和 "Z"。所有其他逻辑记录包含交易信息。
  • 逻辑文件必须按以下顺序包含逻辑记录:A, D, Z。
  • 在一次物理传输中可以提交多达 1000 个逻辑文件。
  • 加拿大金融机构的储蓄或支票账户号码的最大长度为 12 位数字。此 12 位数字限制由加拿大支付协会 (CPA) 设置。
  • 每个逻辑记录类型允许最多 6 个分段,具有可分段接口
  • 文件名长度不得超过 27 个字符(不允许有空格或特殊符号)
  • 信用和借记交易不能在单个文件中混合。
  • 交易价值日期不能超过从导入日期起过去七天或未来六十天。
  • 文件中的交易总数、文件中的交易总金额和文件中的总行数将与尾记录中输入的值进行验证。如果数字不匹配,则文件将被拒绝。

示例

// Use statement
use Oml\PHPFileManager\Document\CPA005\LogicalRecord;
use Oml\PHPFileManager\Document\CPA005\Segment;
use Oml\PHPFileManager\Document\CPA005\Writer;
use Oml\PHPFileManager\Document\CPA005\File;
use Oml\PHPFileManager\Document\CPA005\Utility\TransactionType;
// Intialize file writer
$file = new File\DAT();
$file->setFileName('1111');
// Intialize logical record type "A"
$typeA = new LogicalRecord\TypeA;
$typeA->setLogicalRecordCount(1);
$typeA->setOriginatorAccountNumber('1111111111');
$typeA->setFileCreationNumber('1111');
$typeA->setFileCreationDate(new \DateTime('now'));
$typeA->setFileProcessingCentre('11111');

// Add logical record type to file for writing
$file->addLogicalRecord($typeA, 'A');

// Intialize logical record type "C"
$typeC = new LogicalRecord\TypeC;
$typeC->setLogicalRecordCount(2);
$typeC->setOriginatorAccountNumber('1111111111');
$typeC->setFileCreationNumber('1111');

// Add segments to logical record type "C" (Maximum of 6 segments can be added to each of segmentable logical record)
$segment = new Segment\TypeC;
$segment->setTransactionType(TransactionType::ACCOUNTS_PAYABLE);
$segment->setAmount('111.11');
$segment->setPaymentDate(new \DateTime('now'));
$segment->setInstitutionCode('111');
$segment->setTransitNumber('11111');
$segment->setBankAccountNumber('1111111');
$segment->setOriginatorShortName('XXXX.YYY');
$segment->setCustomerName('XXXXXXXX XXXX');
$segment->setOriginatorLongName('XXXXXXXXXXXX.YYYY');
$segment->setOriginatorDirectClearerUserId('1111111111');
$segment->setOriginatorCrossReferenceNumber('XXXXXXX XXX');
$segment->setReturnInstitutionCode('111');
$segment->setReturnBranchTransitNumber('11111');
$segment->setReturnBranchAccountNumber('111111');

// Add first segment to logical record type C
$typeC->addSegment($segment);

// Add logical record type to file for writing
$file->addLogicalRecord($typeC);

// Intialize logical record type "Z" (Pass "C" for Credit and "D" for Debit in the constructor)
$typeZ = new LogicalRecord\TypeZ('C');
$typeZ->setLogicalRecordCount(3);
$typeZ->setOriginatorAccountNumber('1111111111');
$typeZ->setFileCreationNumber('1111');
$typeZ->setTotalAmountOfCredits('111.11');
$typeZ->setTotalAmountOfDebits('0');
$typeZ->setTotalNumberOfCredits('1');
$typeZ->setTotalNumberOfDebits('1');
// Add logical record type to file for writing
$file->addLogicalRecord($typeZ, 'Z');

// Write content to file for download
$writer = new Writer;
$writer->setFile($file);
$writer->download();
// If you want to dump file content
$writer->dump();
  1. Xls

使用简单的语法将数组内容写入 XLS 文件、格式化和下载

use Oml\PHPFileManager\Document\Xls;

// Init XLS Writer
$doc = new Xls\Writer;
// Add Rows
$doc->addRows(array('Ibrahim', 'Azhar', 'azhar@iarmar.com'));
$doc->addRows(array('John', 'Doe', 'john@doe.com'));
// Set width for column
$doc->setWidthForColumn('A', 10);
// Set background color for column range (without hash symbol)
$doc->setBackgroundColorForColumnRange('A1:D1', '000000');
// Set font color for column range  (without hash symbol)
$doc->setFontColorForColumnRange('A1:D1', 'FFFFFF');
// Align text for column range (HORIZONTAL_CENTER, HORIZONTAL_LEFT, HORIZONTAL_RIGHT)
$doc->alignTextForColumnRange('A1:D1', 'HORIZONTAL_CENTER');
// Trigger download
$doc->download();

// Init XLS Reader
$doc = new Xls\Reader('/file/path/document.xlsx');
// Replace column with indexes
$doc->replaceColumnWithIndex('0', 'last_name');
$doc->replaceColumnWithIndex('1', 'first_name');
$doc->replaceColumnWithIndex('2', 'email');
// Remove column with indexes
$doc->removeColumnWithIndexes(array('25, 26, 27'));
// Dump content
$content = $doc->toArray();