bonditka/export1c

Generator Xml for 1c.

Installs: 15

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 0

Type:yii2-extension

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

This package is auto-updated.

Last update: 2024-04-20 20:30:19 UTC


README

Модуль позволяет генерировать xml файлы с описанием документов через формат EnterpriseData. Более детальное описание формата обмена можно почитать на сайте 1с.

На данный момент реализована генерация для следующих документов:

Установка

Предпочтительный вариант установки через composer.

Чтобы установить, выполните следующую команду:

php composer.phar require --prefer-dist bonditka/export1c "*"

или добавьте

"bonditka/export1c": "*"

в блок require вашего composer.json файла.

Использование

Для передачи данных в модуль используются 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