bonditka / export1c
Generator Xml for 1c.
Installs: 15
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Type:yii2-extension
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-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