这个问题是特定于QuickBooks帐户命名的,但是它是如此的特别,所以我想以更一般的方式来问这个问题。我知道,当企业管理数据转换时,名称冲突总是会发生,所以我希望一些名称冲突的最佳实践可以提供指导。名字很重要。
我的代码的业务层使用帐户名作为字典键来访问数据。大多数会计师和人类都是这样看待这个世界的,所以重要的是要保持:
global accounts
accounts['Fixed Assets'].data
把它留给Intuit让它变得奇怪..。
当QuickBooks用户创建帐户时,默认帐户名称有时与保留帐户类型名称相同。我将提供一个例子:
“固定资产”是一种保留帐户类型:这意味着它在资产负债表报告中以特定顺序显示为一个节。当有子帐户时,部分标题以“固定资产”开头,然后缩进并显示用户帐户名称,以“总固定资产”结尾。这是奇怪的地方。
用户帐户名称可以与保留帐户类型相同!QuickBooks并不阻止用户拥有一个与该帐户所在的类别完全相同的用户名。所以报告是这样的:
Assets
... other sections ...
Fixed Assets #<== reserved type header
user account 1 $100
user account 2 $100
Fixed Assets #<== huh... weird
Vehicles $100
Tools $100
Total Fixed Assets $200 #<== oh good lord...
Total Fixed Assets $400 #<== facepalm
Total Assets
因此,第一个“固定资产总额”是用户帐户“固定资产”下的用户子帐户之和。第二个“固定资产总额”是所有“固定资产”类账户的总和。报告上唯一的描述是缩进,这意味着层次结构。
这里是我试图找到答案的地方: Intuit的没有答案。它们返回的所有对象要么是遵循上述约定的报告,要么是在单独字段中包含名称和类型的对象。
https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/balancesheet https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/account
日志条目的API只需要帐户名..。但你只会在日记条目中与用户名交互.因为会计:https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/journalentry
Ideas:选项1:我可以将一个特殊字符"cn“(客户名或冲突名称)预装到任何与保留类型冲突的用户帐户名中.这需要一些相当活跃的名称管理,但它是可行的。对于用户:
accounts['cnFixed Assets']
accounts['Fixed Assets']
嗯..。这是好的,默认的使用将是确定的,因为当用户选择“固定资产”时,他们通常会想要得到的。这将造成一些混乱,需要特定的文档。
选项2:要求用户始终根据枚举指定类型
class AccountType(Enum)
FIXED_ASSETS = x
CURRENT_ASSETS = y
accounts('Fixed Assets',AccountType.FIXED_ASSETS)
呃..。这就失去了字典的感觉和意图。另外,当我从具有不同保留类型的非quickbooks会计系统中获得数据时,又会怎样呢?
备选方案3:将类型准备给坏的行为者
account['Fixed Assets:Fixed Assets'] # ':' is the standard account delineator used by quickbooks.
这与QuickBooks的子帐户划分标准相冲突。在账户图表中,上面的示例将按照其标准在其中包含"Fixed Assets:Vehicles"
和"Fixed Assets:Tools"
。这种方法会使这种情况不一致,因为"Fixed Assets:Vehicles"
需要成为"Fixed Assets:Fixed Assets:Vehicles"
。
(accountname:subaccountname
vs type:accountname:subaccountname
)
另外,当我从一个非quickbooks系统中获得数据时,这些数据会有所不同。
选项4:将类型预置到所有帐户.基本上是备选方案3但有核武器。这会引起用户的问题..。当我从非quickbooks会计系统获得数据时,这将导致帐户类型不同的问题。
帮助:
有没有人在Quickbook上遇到过这个特定的问题?<I'm not holding my breath>
,你是怎么解决的?
是否有最佳实践标准在这里提供一些指导?我知道,在系统之间进行接口时,总是会发生保留名称冲突。有没有人有处理这些冲突的方法,并且有一个你不讨厌的解决方案?
发布于 2021-07-27 21:45:17
你的问题中有很多很好的信息,但我不清楚你需要解决哪些具体的用例。如果您允许用户从可能具有重复帐户名称的列表中选择一个帐户,则使用冒号或缩进来列出每个帐户的层次结构(从而区分它)是一种传统标准(请参阅其他与QuickBooks联机集成并显示QuickBooks帐户列表的应用程序;Bill.com、Hubdoc等)。
在使用API创建日记条目时,您还提到将这些帐户名称作为唯一标识符传递--这是一个单独的用例,还是与我前面提到的第一个用例有关?如果这指的是不直接涉及用户的单独后端函数,我建议在API调用中使用帐户的内部id,而不是名称值作为其唯一标识符。为后端函数使用帐户名称(或任何可编辑的字段)是有风险的,因为用户通常会修改他们能够修改的任何值,这会导致您的代码以您不想要的方式运行。
https://stackoverflow.com/questions/68178030
复制相似问题