bonditka/export1c

1c 的 Xml 生成器。

安装: 15

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

类型:yii2-extension

dev-master 2018-05-17 09:14 UTC

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