bonditka / export1c
1c 的 Xml 生成器。
dev-master
2018-05-17 09:14 UTC
Requires
- yiisoft/yii2: ~2.0.0
Requires (Dev)
- codeception/codeception: ~2.2.0
- codeception/specify: ~0.4.3
- codeception/verify: ~0.3.1
- vlucas/phpdotenv: ^2.0
- yiisoft/yii2-faker: ~2.0.0
This package is auto-updated.
Last update: 2024-09-20 21:36:01 UTC
README
该模块允许通过 EnterpriseData 格式生成描述文档的 xml 文件。关于交换格式的更详细信息,可以在 EnterpriseData 网站上阅读。在 1с 网站上也可以找到更详细的格式交换描述 。
目前实现了以下文档的生成
安装
推荐通过 composer 安装。
要安装,请执行以下命令
php composer.phar require --prefer-dist bonditka/export1c "*"
或者
"bonditka/export1c": "*"
在您的 composer.json
文件的 require 块中添加以下内容。
使用方法
使用 dto 模型将数据传递到模块。对于所有文档,以下字段是必需的
'companyInfo' => [ 'name' => 'Lorem name', 'nameShort' => 'Lorem name short', 'nameFull' => 'Lorem name full', 'inn' => 'Lorem inn', 'kpp' => 'Lorem kpp', 'formOrganization' => 'Lorem formOrganization' ], 'partnerInfo' => [ 'name' => 'Lorem name', 'nameShort' => 'Lorem name short', 'inn' => 'Lorem inn', 'kpp' => 'Lorem kpp', 'formOrganization' => 'Lorem formOrganization' ], 'counterparty' => [ 'name' => 'Lorem name', 'nameShort' => 'Lorem name short', 'inn' => 'Lorem inn', 'kpp' => 'Lorem kpp', 'formOrganization' => 'Lorem formOrganization' ], 'tableItems' => [ [ 'name' => 'Lorem name', 'code' => 'Lorem code', 'unitCode' => 'Lorem unitCode', 'quantity' => 2, 'amount' => 150, 'price' => 75, 'vat' => 18, 'vatAmount' => 27 ], [ 'name' => 'Lorem name', 'code' => 'Lorem code', 'unitCode' => 'Lorem unitCode', 'quantity' => 2, 'amount' => 150, 'price' => 75, 'vat' => 18, 'vatAmount' => 27 ], ]
对于“商品和服务进货”文档,还需要额外传递
'documentNumber' => [ 'number' => 'Lorem number', 'date' => 'Lorem date' ], 'store' => [ 'name' => 'Lorem name', 'typeStore' => 'Lorem name short', ]
对于“商品和服务实施”文档
'companyAccountant' => [ 'fio' => 'Lorem fio', 'birthDay' => 'Lorem birthDay', 'inn' => 'Lorem inn', ], 'companyBank' => [ 'accountNumber' => 'Lorem accountNumber', 'bik' => 'Lorem bik', 'korrAccount' => 'Lorem korrAccount', 'name' => 'Lorem name' ], 'companyHead' => [ 'fio' => 'Lorem fio', 'birthDay' => 'Lorem birthDay', 'inn' => 'Lorem inn', ], 'releaseProduced' => [ 'fio' => 'Lorem fio', 'birthDay' => 'Lorem birthDay', 'inn' => 'Lorem inn', ]
可以通过相应的构造函数从数组生成所需的 dto 模型
//для документа ПоступлениеТоваровУслуг $documentDto = new dto\DocumentDto($arData); //для документа РеализацияТоваровУслуг $documentDto = new dto\SellingDto($arData);
要生成整个文档,需要调用 addDocument
方法。同时,还有生成文档标题(方法 addDocumentHeader
)和文档表格部分(方法 addDocumentTable
)的可能性。当所需的 dto 模型形成后,可以通过特殊服务启动 xml 生成
$action = 'addDocument'; $generatorService = new GeneratorDocumentService($dto); $response = $generatorService->run($action, $param); //проверка ответа на наличие ошибок if($response->hasError()){ print_r($response->getErrors()); }
或者直接通过模型
$documentDto = new dto\DocumentDto($arData); $generator = new GeneratorDocument(); $generator->setParam($param); $generator->addDocumentTable($documentDto->tableItems);
在 $param
数组中可以传递额外的执行参数。目前只处理具有键 filePath
的数组元素,其中应包含输出 xml 文件的路径。
测试
可以使用以下命令启动测试
vendor/bin/codecept build vendor/bin/codecept run