我正在将QuickBooks(桌面版)与ASP.NET应用程序集成.为此,我使用的是QuickBooks Web Connector.如何为自定义Web服务创建.qwc文件?
我想使用Python从Intuit QuickBooks企业解决方案 - 制造和批发版12.0数据库中提取所有产品信息.
我所指的QB安装是在Intranet服务器上,我只需要在内部访问它(相同的网络ID).
我只需要有人指出我正确的方向,或举例说明通过Python从QB数据库中提取产品信息.我已经搜索并阅读了几个小时关于尝试使用Python和QuickBooks的人,但是有很多QB术语对我来说都是希腊语,例如,我应该使用IDS吗?QB XML怎么样?COM接口方法看起来很糟糕.
我想,最简单的选择是将QB产品数据库/列表导出为IIF,然后筛选/利用该导出.这不是必须经常进行的事情,因此易用性/简单性优先于速度.
如果有人有任何从QB数据库读取/写入数据的敏锐方法,请告诉我!
我有一个关于quickbooks发票的新问题.创建发票后,我会收到我添加的所有商品以及发票中的一个额外订单项.
如何过滤,删除,阻止此行显示?
这是我尝试过的.
//Find Item
var itemQueryService = new QueryService<Item>(qboContextoAuth);
Item item = itemQueryService.ExecuteIdsQuery("Select * From Item StartPosition 1 MaxResults 1").FirstOrDefault();
int idx = 0;
var lines = new List<Line>();
foreach (var orderItem in orderItems)
{
//Line
Line invoiceLine = new Line();
//Line Description
invoiceLine.Description = itemRepository.Get(i => i.ItemID == orderItem.ItemID).First().FullDescription;
//Line Amount
invoiceLine.Amount = orderItem.Price * orderItem.Quantity;
invoiceLine.AmountSpecified = true;
//Line Detail Type
invoiceLine.DetailType = LineDetailTypeEnum.SalesItemLineDetail;
invoiceLine.DetailTypeSpecified = true;
//Line Sales Item Line Detail
SalesItemLineDetail lineSalesItemLineDetail = new SalesItemLineDetail(); …Run Code Online (Sandbox Code Playgroud) 我必须为以下XML创建对象模型:
XML示例1:
<InvoiceAdd>
<TxnDate>2009-01-21</TxnDate>
<RefNumber>1</RefNumber>
<InvoiceLineAdd>
</InvoiceLineAdd>
</InvoiceAdd>
Run Code Online (Sandbox Code Playgroud)
XML示例2:
<SalesOrderAdd>
<TxnDate>2009-01-21</TxnDate>
<RefNumber>1</RefNumber>
<SalesOrderLineAdd>
</SalesOrderLineAdd>
</SalesOrderAdd>
Run Code Online (Sandbox Code Playgroud)
XML输出将基于单个字符串参数或枚举.String txnType ="Invoice"; (或"SalesOrder");
我会使用单个类TransactionAdd:
@XmlRootElement
public class TransactionAdd {
public String txnDate;
public String refNumber;
private String txnType;
...
public List<LineAdd> lines;
}
Run Code Online (Sandbox Code Playgroud)
而不是使用子类或其他任何东西.创建TransactionAdd实例的代码对于两种类型的事务都是相同的,它只在类型上有所不同.
这个XML由一个名为QuickBooks的知名产品使用,并由QuickBooks Web服务使用 - 因此我无法更改XML,但我希望能够轻松地根据属性(txnType)设置元素名称.
我会考虑像确定目标元素名称的方法:
@XmlRootElement
public class TransactionAdd {
public String txnDate;
public String refNumber;
private String txnType;
...
public List<LineAdd> lines;
public String getElementName() {
return txnType + "Add";
}
}
Run Code Online (Sandbox Code Playgroud)
将使用以下代码创建不同的事务:
t = new TransactionAdd();
t.txnDate = …Run Code Online (Sandbox Code Playgroud) 从我的研究看起来基本上有3个选项.
1:使用COM
2:使用Web服务和Web连接器
3:使用第三方组件(并且似乎有很多)
这些选项中的每一个都给我带来了一个问题:
1:我被告知我无法使用COM
2:这个解决方案对我来说似乎非常有用,因为我需要从Windows服务集成
3:这些解决方案中的一些相当昂贵.
我看起来好像要去第三方路线,我脑子里有两个领跑者:
1:QODBC(http://www.qodbc.com/usa.html)
2:AccessBooks(http://www.synergration.com/AccessBooksUpdater/default.aspx)
亲爱的读者,我的问题如下:
1:您将使用哪种解决方案(com,Web服务,第三方)?
2:为什么你会选择其他选项呢?
3:我还有其他选择吗?
我已成功使用POST和Content-Type application/xml创建对象
我也成功使用Content-Type application/x-www-form-urlencoded查询了一个空白请求体,它根据我指定的URI返回所有对象类型.
我也可以在请求体中使用像PageNum = 1和ResultsPerPage = 1这样的东西,并且我已经想出如何将其合并到签名中以便得到有效的响应.
然而,无论我如何格式化,当我尝试使用过滤器时,我都无法获得除401响应之外的任何内容(像Filter = FAMILYNAME:EQUALS:Doe这样的基本内容).我已经阅读了关于如何使用[RFC3986]百分比编码转义所有参数名称和值的OAuth Core 1.0 Revision A规范.但是我觉得我错过了一个步骤或格式错误.我在Intuit的论坛中看到了关于正确格式究竟是什么的不一致信息.
任何有关这方面的帮助将不胜感激.我现在一直在努力工作一周.
尝试使用过滤器时得到的响应是:HTTP状态401 - 消息=异常验证OAuth; 错误码= 003200; 的StatusCode = 401
---- ----更新
当我尝试使用新的IPP开发人员工具 - IPP API Explorer时,我看到同样的错误.我正在使用IDS V2 QBO API Explorer.我能够使用该工具检索所有Post并且响应显示我的所有客户,但是当我尝试使用过滤器时,我得到:服务器错误401 - 未经授权:由于凭据无效而拒绝访问.您无权使用您提供的凭据查看此目录或页面.
有任何想法吗?如果我从API Explorer工具中得到相同的错误,它会让我觉得问题完全不同.
----最后更新----
我终于有了过滤器的成功,我相信我已经弄明白我的问题是什么.我总是怀疑我能得到的查询中包含"页次= 1&ResultsPerPage = 1"工作分页,但无法得到的东西,如"过滤器= FAMILYNAME:等于:李四".我怀疑问题在于过滤格式中的空白区域.是什么让我无法跟踪此问题,因为我无法让过滤器在IDS V2 QBO API Explorer中运行.这让我怀疑还有其他事情发生了.我决定一起忽略API Explorer,并专注于为什么我可以让它以单向工作而不是另一种方式工作.
我相信我的问题归结为签名中过滤器值的不正确编码.这解释了我得到的401无效签名错误.
归一化后,"过滤器=名称:EQUALS:Doe"变为"过滤器=名称%20%3AEQUALS%20%3ADoe".
百分比编码应该给出"Filter%3DName%2520%253AEQUALS%2520%253ADoe".
实质上,你必须"双"编码空格和冒号,但不是等号.我尝试了许多编码的排列,但我相信我的错误是我不是"双重"编码,或者当我进行双重编码时,我包含了'='符号.无论哪种方式打破你的签名.感谢大家的投入.
我的QBWC应用程序一直运行良好,但我今天早上得到通知,说它突然停止了工作.具体来说,它无法进行身份验证.我检查了QWCLog.txt并找到了这个
20130510.14:25:19 UTC:QBWebConnector.SOAPWebService.do_authenticate():QBWC1012:由于以下错误消息,身份验证失败.SOAP-ERROR:解析WSDL:无法从' http://developer.intuit.com/uploadedFiles/Support/QBWebConnectorSvc.wsdl '加载:无法加载外部实体" http://developer.intuit.com/uploadedFiles/支持/ QBWebConnectorSvc.wsdl "
这是一个新的(我已经扩展了错误登录,所以我可以看到完整的调用).所以我去了WSDL文件,发现......它是404?!
我甚至试过我的一个AWS实例来确保它不仅仅是我
wget http://developer.intuit.com/uploadedFiles/Support/QBWebConnectorSvc.wsdl --2013-05-10 15:10:50-- http://developer.intuit.com/uploadedFiles/Support/QBWebConnectorSvc.wsdl 解析developer.intuit.com(developer.intuit.com)... 206.108.40.170连接到developer.intuit.com(developer.intuit.com)| 206.108.40.170 |:80 ...已连接.发送HTTP请求,等待响应... 404 Not Found 2013-05-10 15:10:51 ERROR 404:Not Found.
其他人得到这个吗?是否有我不知道的新网址?我只需要重新开始工作.
我正在使用python-quickbooks. 我正在使用以下代码在中创建多个行条目:
#------------------------------------------------------
# Line Details
#------------------------------------------------------
line_detail = SalesItemLineDetail()
line_detail.UnitPrice = 100 # in dollars
line_detail.Qty = 1 # quantity can be decimal
line_detail.ServiceDate = "2020-03-18"
item_ref = Ref()
item_ref.value = "1"
item_ref.name = "Services"
line = SalesItemLine()
line.Amount = 100 # in dollars
line.Description = "Line Entry Description"
line.SalesItemLineDetail = line_detail
line.SalesItemLineDetail.ItemRef = item_ref
Run Code Online (Sandbox Code Playgroud)
但是,我会为每个行条目启用税,并将总税设置为 12% 的“联邦税”
知道怎么做吗?
有没有人将R包连接到QuickBooks?我知道有一个ODBC驱动程序可以买到.只是想知道是否有人已经走了这条路.
任何见解将不胜感激!
〜布洛克