kairos / zohoinvoiceconnectorbundle
Zoho 发票包 for symfony2
Requires
- php: >=5.4.0
- kairos/zohoinvoiceapiclient: dev-master
- symfony/framework-bundle: ~2.1
Requires (Dev)
- phpunit/phpunit: ~3.7
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 对象(周期性发票、税等。)