2017 © Pedro Peláez
 

yii2-extension export1c

Generator Xml for 1c.

image

bonditka/export1c

Generator Xml for 1c.

  • Thursday, May 17, 2018
  • by bonditka
  • Repository
  • 1 Watchers
  • 0 Stars
  • 0 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 1 Versions
  • 0 % Grown

The README.md

Экспорт документов из Yii2 в 1с через формат EnterpriseData ("Универсальный формат обмена 1с")

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

На данный момент реализована генерация для следующих документов: - Реализация товаров и услуг - Поступление товаров и услуг, (*2)

Установка

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

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

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

или добавьте, (*5)

"bonditka/export1c": "*"

в блок require вашего composer.json файла., (*6)

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

Для передачи данных в модуль используются dto модели. Для всех документов обязательны следующие поля:, (*7)

'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
    ],
]

Для документа ПоступлениеТоваровУслуг дополнительно необходимо передать:, (*8)

'documentNumber' => [
    'number' => 'Lorem number',
    'date' => 'Lorem date'
],
'store' => [
    'name' => 'Lorem name',
    'typeStore' => 'Lorem name short',
]

Для документа РеализацияТоваровУслуг:, (*9)

'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 модель можно сгенерировать из массива через соответствующий конструктор:, (*10)

//для документа ПоступлениеТоваровУслуг
$documentDto = new dto\DocumentDto($arData);

//для документа РеализацияТоваровУслуг
$documentDto = new dto\SellingDto($arData);

Для генерации всего документа нужно вызвать метод addDocument. Так же существует возможность сгенерировать только шапку (метод addDocumentHeader) и только табличную часть документа (метод addDocumentTable). Когда нужная dto модель сформирована, запустить генерацию xml можно через специальный сервис:, (*11)

$action = 'addDocument';

$generatorService = new GeneratorDocumentService($dto);
$response = $generatorService->run($action, $param);

//проверка ответа на наличие ошибок 
if($response->hasError()){
  print_r($response->getErrors());
}

Или напрямую через модель:, (*12)

$documentDto = new dto\DocumentDto($arData);

$generator = new GeneratorDocument();
$generator->setParam($param);

$generator->addDocumentTable($documentDto->tableItems);

В массиве $param можно передать дополнительные парметры выполнения. На данный момент обрабатывается только один элемен данного массива с ключом filePath, в котором должен содердаться путь до выходного xml-файла., (*13)

Тестирование

Запускать тесты можно следующими командами:, (*14)

vendor/bin/codecept build
vendor/bin/codecept run

The Versions

17/05 2018