Acumatica 针灸扫描条码
在Acumatica项目中,在收据屏幕上有一个查找按钮“添加项目”。当“库存查找”对话框显示的是“详细信息模板”时,我将扫描账单中的条形码。但是,我必须第二次扫描它才能工作。 如何过滤网格详细信息并设置根据条形码过滤的选中行?如何才能知道已过滤的行数。请帮帮我 下图说明了这一点Acumatica 针灸扫描条码,acumatica,Acumatica,在Acumatica项目中,在收据屏幕上有一个查找按钮“添加项目”。当“库存查找”对话框显示的是“详细信息模板”时,我将扫描账单中的条形码。但是,我必须第二次扫描它才能工作。 如何过滤网格详细信息并设置根据条形码过滤的选中行?如何才能知道已过滤的行数。请帮帮我 下图说明了这一点 通过以下方式实现FieldVerification处理程序,您将处于一个更好的位置:INSiteStatusFilter.BarCode字段拆分扫描的条形码,并通过PXFieldVerificationEventArgs
通过以下方式实现FieldVerification处理程序,您将处于一个更好的位置:INSiteStatusFilter.BarCode字段拆分扫描的条形码,并通过PXFieldVerificationEventArgs.new属性和自定义unbound FilterQtySelected字段将新值分配给条形码字段。然后在FieldUpdated处理程序中,您将从详细信息网格中选择满足筛选条件并设置数量的所有记录。根据未绑定过滤器QTYSelected字段选择:
我有一个条形码模式P01X377;421364-N;10 . 我想在扫描仪拆分时将其设置为Qtyselected=10,条形码字段=421364-N。如何操作?感谢您的支持。它正在工作,在从ScanR分割字符串输入之前,我使用缓存的Setvalueobj、obj方法更新条形码字段
public class INReceiptEntryExt : PXGraphExtension<INReceiptEntry>
{
public class INSiteStatusFilterExt : PXCacheExtension<INSiteStatusFilter>
{
#region QtySelected
public abstract class filterQtySelected : PX.Data.IBqlField
{
}
[PXQuantity]
public virtual decimal? FilterQtySelected { get; set; }
#endregion
}
public void INSiteStatusFilter_BarCode_FieldVerifying(PXCache sender, PXFieldVerifyingEventArgs e)
{
var barCode = (string)e.NewValue;
string[] codes = barCode.Split(';');
decimal qtySelected;
if (codes.Length == 3 && decimal.TryParse(codes[2], out qtySelected))
{
e.NewValue = codes[1];
sender.GetExtension<INSiteStatusFilterExt>(e.Row).FilterQtySelected = qtySelected;
return;
}
sender.GetExtension<INSiteStatusFilterExt>(e.Row).FilterQtySelected = null;
}
public void INSiteStatusFilter_BarCode_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)
{
INSiteStatusFilter filter = e.Row as INSiteStatusFilter;
var filterExt = filter.GetExtension<INSiteStatusFilterExt>();
if (string.IsNullOrEmpty(filter.BarCode) || !filterExt.FilterQtySelected.HasValue) return;
foreach(INSiteStatusSelected record in Base.sitestatus.Select())
{
record.Selected = true;
record.QtySelected = sender.GetExtension<INSiteStatusFilterExt>(e.Row).FilterQtySelected;
Base.sitestatus.Update(record);
}
}
}