Acumatica 针灸扫描条码

Acumatica 针灸扫描条码,acumatica,Acumatica,在Acumatica项目中,在收据屏幕上有一个查找按钮“添加项目”。当“库存查找”对话框显示的是“详细信息模板”时,我将扫描账单中的条形码。但是,我必须第二次扫描它才能工作。 如何过滤网格详细信息并设置根据条形码过滤的选中行?如何才能知道已过滤的行数。请帮帮我 下图说明了这一点 通过以下方式实现FieldVerification处理程序,您将处于一个更好的位置:INSiteStatusFilter.BarCode字段拆分扫描的条形码,并通过PXFieldVerificationEventArgs

在Acumatica项目中,在收据屏幕上有一个查找按钮“添加项目”。当“库存查找”对话框显示的是“详细信息模板”时,我将扫描账单中的条形码。但是,我必须第二次扫描它才能工作。 如何过滤网格详细信息并设置根据条形码过滤的选中行?如何才能知道已过滤的行数。请帮帮我

下图说明了这一点


通过以下方式实现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);
        }
    }
}