kairos/zohoinvoiceconnectorbundle

dev-master 2014-12-18 16:00 UTC

This package is not auto-updated.

Last update: 2024-09-14 15:37:28 UTC


README

这个php 5.4+ 包旨在简化 symfony2 应用中 Zoho 发票 API 的集成。

目前它处理联系人/客户、项目和发票。

包哲学

此包是为了将我们的应用程序发票管理委托给 Zoho 发票而创建的。我们希望将我们的后台办公系统与 Zoho 发票连接起来,例如,我们的用户与 Zoho 联系人相连,我们的计划与 Zoho 项目相连。

  • 我们的用户连接到 Zoho 联系人
  • 我们的计划连接到 Zoho 项目

为了实现这一点,我们构建了一个特性集合,包括本地数据库中所有需要的元素,并实现了生命周期事件以同步本地对象与 Zoho 远程对象。

当你持久化一个连接的实体(例如:一个用户)时,该包将在 Zoho 端创建一个远程对象(例如:一个联系人),然后它将获取 Zoho 对象 ID 并将此引用存储在您的数据库中。

每次你更改实体时,它将与 Zoho 同步。当 API 调用失败时,错误信息将记录为日志中的错误,相应的实体将“已同步”标志设置为 false(如果 API 调用成功,则标志设置为 true)。

包使用

包设置

首先在你的 config.yml 中添加以下信息

kairos_zoho_invoice_connector:
    auth_token: your auth token (mandatory)
    organization_id: your org id (mandatory)
    default_tax_id: default tax id (optional)

然后在你的 AppKernel.php 中添加你的包

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            ...
            new Kairos\ZohoInvoiceConnectorBundle\KairosZohoInvoiceConnectorBundle(),
            ...
        );
    ....
    }
}

实体设置

在你的 用户 实体(应对应于你的客户)中添加相应的特性

namespace Acme\AcmeBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Kairos\ZohoInvoiceConnectorBundle\Model as ZohoInvoiceConnector;

/**
 * @ORM\Table(name="user")
 * @ORM\Entity
 */
class User
{
    use ZohoInvoiceConnector\Contact\ContactConnector;

    ....
}

在你的 产品 实体(应对应于 Zoho 项目)中添加相应的特性

namespace Acme\AcmeBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Kairos\ZohoInvoiceConnectorBundle\Model as ZohoInvoiceConnector;

/**
 * @ORM\Table(name="product")
 * @ORM\Entity
 */
class Product
{
    use ZohoInvoiceConnector\Item\ItemConnector;

    ....
}

在你的 发票 实体(应对应于 Zoho 发票)中添加相应的特性

namespace Acme\AcmeBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Kairos\ZohoInvoiceConnectorBundle\Model as ZohoInvoiceConnector;

/**
 * @ORM\Table(name="invoice")
 * @ORM\Entity
 */
class Invoice
{
    use ZohoInvoiceConnector\Invoice\InvoiceConnector;

    ....
}

创建发票

// get a product
$product = .....


// get a customer
$user = ...

// create an invoice
$invoice  = new Invoice();

$invoice
    ->addItem(array('item_id' => $product->getZohoItemId(), 'quantity' => 1))
    ->setZohoCustomerId($user->getZohoContactId())
    ->addZohoContactPerson($user->getZohoContactPersonId())
    ->setSendInvoice(true); // will send and email with the invoice to the contact person

// then persist and flush
$em->persist($invoice);
$em->flush();

同步命令

有时 Zoho 同步会失败,所以你的实体将“已同步”设置为 false。你可以使用 symfony 命令“php app/console kairos:zohoinvoiceconnector:sync”来触发与 Zoho 发票 API 在所有未同步实体上的手动同步。

待办事项

  • 添加测试
  • 改进 Zoho Api 支持(通过 Zoho 发票 API 客户端)
  • 支持更多类型的 Zoho 对象(周期性发票、税等。)