var-lab/lexoffice-bundle

一个用于集成lexoffice API的Symfony扩展包。

安装: 468

依赖项: 0

建议者: 0

安全: 0

星标: 1

关注者: 2

分支: 0

开放问题: 0

类型:symfony-bundle


README

简介

此扩展包将lexoffice公共API集成到Symfony中,利用Symfony的序列化器将API响应转换为对象。兼容Symfony 6.4。

安装

  1. 下载扩展包

将扩展包添加到您的 composer.json

composer require var-lab/lexoffice-bundle

2. 注册扩展包

(应由composer自动完成)

    return [
        // ...
        VarLabIT\LexofficeBundle\VarLabITLexofficeBundle::class => ['all' => true],
    ];

3. 添加配置

创建配置文件 config/packages/var_lab_it_lexoffice.yaml,内容如下

var_lab_it_lexoffice:
  api_key: '%env(LEXOFFICE_API_KEY)%'

将API密钥添加到您的 .env

# ...
LEXOFFICE_API_KEY=<your-api-key>

用法

以下API函数目前已被覆盖

  • 联系人
    • 获取联系人
    • 创建联系人
    • 更新联系人
  • 发票
    • 创建发票
    • 更新发票
    • 获取发票
    • 下载发票PDF

lexoffice扩展包目前正在进一步开发中。欢迎您提交自己的pull请求。

联系人

创建新的联系人

<?php

use VarLabIT\LexofficeBundle\Entity\Address;
use VarLabIT\LexofficeBundle\Entity\Company as LexofficeCompany;
use VarLabIT\LexofficeBundle\Entity\Contact;
use VarLabIT\LexofficeBundle\Entity\ContactRole;
use VarLabIT\LexofficeBundle\Entity\Enum\AddressType;
use VarLabIT\LexofficeBundle\Entity\Enum\RoleType;
use VarLabIT\LexofficeBundle\Entity\Person;
use VarLabIT\LexofficeBundle\LexofficeClient;

class CityPageController extends AbstractController {
    
    public function __construct(
        private readonly CompanyRepository        $companyRepository,
        private readonly LexofficeClient          $lexofficeClient,
    )
    {
    }

    private function getContactObject(Company $company): Contact
    {
        $contact = new Contact();
        $contact
            ->setVersion(0)
            ->addRole(RoleType::CUSTOMER, new ContactRole())
            ->setCompany(
                (new LexofficeCompany())
                    ->setName($company->getName())
                    ->addContactPerson(
                        (new Person())
                            ->setFirstName($company->getGivenName())
                            ->setLastName($company->getFamilyName())
                            ->setEmailAddress($company->getInvoiceEmail())
                            ->setPrimary(true)
                            ->setPhoneNumber($company->getContactPhone())
                    ),
            )
            ->addAddress(
                AddressType::BILLING,
                (new Address())
                    ->setSupplement('Rechnungsadresse')
                    ->setStreet($company->getAddress())
                    ->setZip($company->getZipcode())
                    ->setCity($company->getCity())
                    ->setCountryCode($company->getCountry())
            );
            
        return $contact;
    }

    public function createContact(int $companyId): Response {
        $company = $this->companyRepository->find($companyId);
        $contact = $this->createContact($company);
        
        $contact = $this->lexofficeClient->createContact($contact);
        
        $company
            ->setVersion($contact->getVersion())
            ->setLexofficeId($contact->getId());
    }
}

更新联系人

    public function createContact(int $companyId): Response {
        $company = $this->companyRepository->find($companyId);
        $contact = $this->createContact($company);
        
        $contact = $this->lexofficeClient->updateContact($contact);
        
        $company
            ->setVersion($contact->getVersion())
            ->setLexofficeId($contact->getId());
    }

维护者

此扩展包由 var-lab IT GmbH 和贡献者维护和创建。