【发布时间】:2012-02-10 14:25:15
【问题描述】:
这个问题适用于任何数据库表设计,您将拥有相同类型的系统默认项和自定义用户默认值(即用户可以添加自己的自定义项/设置)。
这是发票和付款类型的示例,默认情况下,发票可以具有 DueOnReceipt、NET10、NET15、NET30 的付款条件(这是所有用户的默认设置!)因此您将有两个表“INVOICE”和“PAYMENT_TERM” "
INVOICE
Id
...
PaymentTermId
PAYMENT_TERM (System default)
Id
Name
现在,让用户存储自己的自定义“PaymentTerms”的最佳方式是什么?为什么? (即用户可以使用系统默认付款条件或用户自己创建/添加的自定义付款条件)
选项1)将UserId添加到PaymentTerm,为添加自定义项目的用户设置userid,系统默认userid设置为null。
INVOICE
Id
...
PaymentTermId
PaymentTerm
Id
Name
UserId (System Default, UserId=null)
选项 2) 向发票“IsPaymentTermCustom”添加标志并创建自定义表“PAYMENT_TERM_CUSTOM”
INVOICE
Id
...
PaymentTermId
PaymentTermCustomId
IsPaymentTermCustom (True for custom, otherwise false for system default)
PaymentTerm
Id
Name
PAYMENT_TERM_CUSTOM
Id
Name
UserId
现在通过 SQL 查询检查用户是否使用自定义付款条件,如果 IsPaymentTermCustom=True,则表示用户正在使用自定义付款条件,否则为假。
选项 3) ??????
...
【问题讨论】:
-
你能解释一下用户体验流程吗?用户如何实际选择“自定义”付款条件?当他们浏览结帐流程并准备提交发票时?
-
当用户创建发票时,用户可以选择“PaymentTerms”,系统默认的付款条件被加载到下拉列表中,用户可以选择默认的付款条件或添加一个新的付款条件,(他自己的),因此下次下拉列表将加载系统默认值和用户的付款条件。
-
如果某个特定用户创建了 PaymentTerm,其他人可以使用它,还是只能他们使用?
-
@WW 只是创建付款条件的单个用户,因此 UserId 将等于付款条件的所有者。
-
系统默认付款条件的详细信息以后会更改吗?喜欢从 2012 年 1 月 1 日开始更改 NET10 的条款吗?如果是这样,那会是一种新的系统支付类型,还是旧的会与所有以前的发票一起更新?新条款会出现,旧条款会失效吗?是否有与 PAYMENT_TERM 相关的其他数据?发票与特定的 UserID 相关联,对吧?