【发布时间】:2015-05-06 00:04:30
【问题描述】:
我想在 Acumatica 中为客户导出所有即将到来的约会。我为导出命令创建了两个过滤器:一个用于客户 ID,一个用于日期范围。日期范围过滤器得到适当应用,但客户 ID 过滤器被忽略。所有客户的所有即将到来的约会都将被退回。目前,我正在将自己的客户 ID 过滤器应用于返回的结果,但我认为当所有客户都有大量即将到来的约会时,这会非常慢。这是我的代码:
Public Function GetUpcomingAppointmentList(ByVal customerID As String) As String()()
Dim appt As SD300200Content = m_context.SD300200GetSchema()
m_context.SD300200Clear()
' THIS FILTER IS IGNORED
Dim customerFilter As Filter = New Filter()
customerFilter.Field = appt.ServiceOrderHeader.CustomerID
customerFilter.Condition = FilterCondition.Equals
customerFilter.Value = customerID
Dim dateFilter As Filter = New Filter()
dateFilter.Field = appt.ScheduledDateAndTime.Date
dateFilter.Condition = FilterCondition.GreaterOrEqual
dateFilter.Value = Date.Today
Dim searchfilters() As Filter = {customerFilter, dateFilter}
Dim searchCommands() As Command = {appt.AppointmentRecords.ServiceCommands.EveryAppointmentNbr, appt.ServiceOrderHeader.CustomerID, appt.AppointmentRecords.Status, appt.AppointmentRecords.AppointmentNbr, appt.AppointmentRecords.ServiceOrderNbr, appt.ScheduledDateAndTime.Date, appt.ScheduledDateAndTime.StartTime, appt.Employees.EmployeeName}
Dim searchResult As String()() = m_context.SD300200Export(searchCommands, searchfilters, 0, False, False)
' SINCE ABOVE CUSTOMER FILTER DOESN'T WORK, HAVE TO FILTER OUT OTHER CUSTOMERS
Dim filteredResults As List(Of String()) = New List(Of String())
Dim i As Integer, apptCustomer As String
For i = 0 To searchResult.Length - 1
apptCustomer = searchResult(i)(0)
If apptCustomer = customerID Then
filteredResults.Add(searchResult(i))
End If
Next
Return filteredResults.ToArray()
End Function
我还认为我可能会应用类似于Using filter with Customer screen in Acumatica API 中提供的解决方案的东西。但似乎需要这样一行:
appt.AppointmentRecords.ServiceOrderNbr.FieldName = appt.AppointmentRecords.ServiceOrderNbr.FieldName + "!" + appt.ServiceOrderHeader.ServiceCommands.FilterCustomerID.FieldName
但 appt.ServiceOrderHeader.ServiceCommands 中根本没有任何“过滤器”属性。是否有任何其他方法可以按客户 ID 过滤约会,或者我上面的代码有问题?
另一件有趣的事情是,即使导出返回的许多结果与我尝试应用的 CustomerID 过滤器不匹配,它返回的额外结果也不提供实际的 CustomerID 编号。相反,与过滤器不匹配的记录的 appt.ServiceOrderHeader.CustomerID 作为空字符串返回。
【问题讨论】:
-
不是很清楚,你用的是什么普通屏,什么版本?
-
@acumember 抱歉,我是 Acumatica 的新手,我不确定您所说的“普通”屏幕是什么意思。但我为 API 引用的 Acumatica 屏幕是用于约会的 SD300200。我知道我们有一些自定义,但我不确定那个屏幕是否是其中之一。我们的 Acumatica 版本是 4.20.2063 版
-
您好 Eric,屏幕 SD300200 不是我们开箱即用的,看起来是您自己定制的屏幕,acumatica 不提供 ID 为 SD300200 的屏幕。因此,可能与您的屏幕有关。尝试询问您的开发人员谁准备了屏幕。和数据结构、key等有关。
标签: acumatica