谁能解释将MYOB集成到rails应用程序中
2 回答
集成到 MYOB 并不像看起来那么简单。
为了集成到 MYOB,您必须安装 ODBC 驱动程序,安装 MYOB 应用程序并直接访问 MYOB 公司文件。
您的集成要求和目的是什么?
我们选择的解决方案是构建一个桌面应用程序,以促进 Web 应用程序和 MYOB 之间的集成。
希望这可以帮助。
您可以,但是真正做到这一点的唯一方法是使用 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