首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >发布的命名冲突最佳实践?Quickbooks允许客户帐户名称与保留帐户类型名称相同

发布的命名冲突最佳实践?Quickbooks允许客户帐户名称与保留帐户类型名称相同
EN

Stack Overflow用户
提问于 2021-06-29 11:43:06
回答 1查看 46关注 0票数 0

这个问题是特定于QuickBooks帐户命名的,但是它是如此的特别,所以我想以更一般的方式来问这个问题。我知道,当企业管理数据转换时,名称冲突总是会发生,所以我希望一些名称冲突的最佳实践可以提供指导。名字很重要。

我的代码的业务层使用帐户名作为字典键来访问数据。大多数会计师和人类都是这样看待这个世界的,所以重要的是要保持:

代码语言:javascript
运行
复制
global accounts
accounts['Fixed Assets'].data

把它留给Intuit让它变得奇怪..。

当QuickBooks用户创建帐户时,默认帐户名称有时与保留帐户类型名称相同。我将提供一个例子:

“固定资产”是一种保留帐户类型:这意味着它在资产负债表报告中以特定顺序显示为一个节。当有子帐户时,部分标题以“固定资产”开头,然后缩进并显示用户帐户名称,以“总固定资产”结尾。这是奇怪的地方。

用户帐户名称可以与保留帐户类型相同!QuickBooks并不阻止用户拥有一个与该帐户所在的类别完全相同的用户名。所以报告是这样的:

代码语言:javascript
运行
复制
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“(客户名或冲突名称)预装到任何与保留类型冲突的用户帐户名中.这需要一些相当活跃的名称管理,但它是可行的。对于用户:

代码语言:javascript
运行
复制
accounts['cnFixed Assets']
accounts['Fixed Assets']

嗯..。这是好的,默认的使用将是确定的,因为当用户选择“固定资产”时,他们通常会想要得到的。这将造成一些混乱,需要特定的文档。

选项2:要求用户始终根据枚举指定类型

代码语言:javascript
运行
复制
class AccountType(Enum)
   FIXED_ASSETS = x
   CURRENT_ASSETS = y

accounts('Fixed Assets',AccountType.FIXED_ASSETS)

呃..。这就失去了字典的感觉和意图。另外,当我从具有不同保留类型的非quickbooks会计系统中获得数据时,又会怎样呢?

备选方案3:将类型准备给坏的行为者

代码语言:javascript
运行
复制
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>,你是怎么解决的?

是否有最佳实践标准在这里提供一些指导?我知道,在系统之间进行接口时,总是会发生保留名称冲突。有没有人有处理这些冲突的方法,并且有一个你不讨厌的解决方案?

EN

回答 1

Stack Overflow用户

发布于 2021-07-27 21:45:17

你的问题中有很多很好的信息,但我不清楚你需要解决哪些具体的用例。如果您允许用户从可能具有重复帐户名称的列表中选择一个帐户,则使用冒号或缩进来列出每个帐户的层次结构(从而区分它)是一种传统标准(请参阅其他与QuickBooks联机集成并显示QuickBooks帐户列表的应用程序;Bill.com、Hubdoc等)。

在使用API创建日记条目时,您还提到将这些帐户名称作为唯一标识符传递--这是一个单独的用例,还是与我前面提到的第一个用例有关?如果这指的是不直接涉及用户的单独后端函数,我建议在API调用中使用帐户的内部id,而不是名称值作为其唯一标识符。为后端函数使用帐户名称(或任何可编辑的字段)是有风险的,因为用户通常会修改他们能够修改的任何值,这会导致您的代码以您不想要的方式运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68178030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档