0

谁能解释将MYOB集成到rails应用程序中

4

2 回答 2

0

集成到 MYOB 并不像看起来那么简单。

为了集成到 MYOB,您必须安装 ODBC 驱动程序,安装 MYOB 应用程序并直接访问 MYOB 公司文件。

您的集成要求和目的是什么?

我们选择的解决方案是构建一个桌面应用程序,以促进 Web 应用程序和 MYOB 之间的集成。

希望这可以帮助。

于 2010-05-06T11:19:19.427 回答
0

您可以,但是真正做到这一点的唯一方法是使用 MYOB ODBC 驱动程序。该驱动程序的工作方式是使用 Myobp.exe 作为 ODBC 和 .MYO 文件之间的中间人。

MYOB ODBC 驱动程序为 MYOB 提供了一个 SQL 接口,但是有一些警告。它不是MYOB的真正SQL 接口。您可以输入和输出的数据与 MYOB 在程序本身中提供的导入和导出功能紧密匹配。

为了获取数据,您可以使用 ODBC 接口编写 SQL 查询,甚至一些 SQL 类型的函数也可以在这些查询中,但您可能偶尔会遇到一些让您抓狂的事情。

为了获取数据,ODBC 驱动程序使用前缀为“Import_”的表模式,使用这些表,您所能做的就是导入数据,它们不会返回您刚刚导入的发票编号之类的内容。这也意味着您无法像使用真实 SQL 界面所期望的那样更新现有条目。

但是,如果某些字段匹配,某些数据导入将导致现有数据的更新。我在 MYOB 及其 ODBC 接口方面的经验主要处理从我编写的输入到 MYOB 的系统中获取销售订单,因此可以完成某些事情。

我确实在 Rails 中编写了这个系统的第一个版本,但是你不能在不调整它们的工作方式的情况下使用标准 Rails 模型,因为 Rails 对它期望数据库如何运行非常固执己见。

最近我用 Clojure 重新编写了它并使用了手写查询。

对于多行插入(例如发票的行),MYOB 使用事务作为包装器来指示一张发票上应该包含哪些行。

因此,如果您想使用 Rails,最好的选择是避免使用 Rails 模型,并且可能编写直接 SQL 查询并与您的控制器和视图进行接口。

我现在无法访问我的旧代码,但大致如下:

def create_myob_invoice( iso )
  # We can assume we have the job
  # Now, for each iso line, we add an invoice
  latest_invoice_number = Sale.find( :first, :order => 'InvoiceNumber DESC' ).InvoiceNumber.to_i
  if latest_invoice_number
    # We need to wrap it all in a transaction so MYOB knows they're all the one invoice
    MyobDatabase.transaction do
      iso.lines.each do |line|
        new_service_line = ImportServiceSale.new
        # Map iso fields to MYOB service sale fields
        # e.g. suff like:
        new_service_line.Description = "#{line.sDescription}"
        new_service_line.save
      end
    end
  end
end

您也可以在以下网址找到一些帮助:http: //freelancing-gods.com/posts/talking_to_myob_with_ruby

于 2013-04-11T11:49:47.123 回答