2017-10-20 11 views
0

우리는 현재 Acumatica Mobile에 Warehouse/Bin Transfer를 추가하여 사용자가 Mobile과 Acumatica를 사용하여 bin 전송을 할 수 있도록했습니다.Acumatica 모바일의 셀렉터에 필터 추가

SelectorContainer 문을 사용하여 From 및 To Bin 선택기에 QtyAvailable을 추가했습니다. 그러나 모든 저장소/위치를 표시하는 대신 항목에 대한 레코드 만 필터링하는 방법이 있습니다. 이 필터는 보낸 사람 위치에만 있습니다. 도착 위치는 여전히 모든 위치를 표시합니다.

답변

0

빈/위치 만 으로 표시하려면 수량. LocationAvailCstAttribute가 INTran.LocationID 필드에 추가 한 사용자 정의로

using PX.Data; 
using System; 

namespace PX.Objects.IN 
{ 
    public class INTransferEntryExt : PXGraphExtension<INTransferEntry> 
    { 
     [PXRemoveBaseAttribute(typeof(LocationAvailAttribute))] 
     [PXMergeAttributes(Method = MergeMethod.Append)] 
     [LocationAvailCst(typeof(INTran.inventoryID), typeof(INTran.subItemID), 
      typeof(INTran.siteID), typeof(INTran.tranType), typeof(INTran.invtMult))] 
     public virtual void INTran_LocationID_CacheAttached(PXCache sender) 
     { 
     } 

     public class LocationAvailCstAttribute : LocationAvailAttribute 
     { 
      public LocationAvailCstAttribute(Type inventoryType, Type subItemType, 
       Type siteIDType, Type TranType, Type InvtMultType) 
       : base(inventoryType, subItemType, siteIDType, TranType, InvtMultType) 
      { 
       var attr = _Attributes[_SelAttrIndex] as PXDimensionSelectorAttribute; 
       var dimAttr = attr.GetAttribute<PXDimensionAttribute>(); 
       var selAttr = attr.GetAttribute<PXSelectorAttribute>(); 
       var select = selAttr.GetSelect(); 
       select = select.WhereAnd<Where<INLocationStatus.qtyAvail, Greater<Zero>>>(); 
       var newAttr = new PXDimensionSelectorAttribute(DimensionName, 
        select.GetType(), typeof(INLocation.locationCD), 
        new Type[] 
        { 
         typeof(INLocation.locationCD), 
         typeof(INLocationStatus.qtyOnHand), 
         typeof(INLocationStatus.qtyAvail), 
         typeof(INLocationStatus.active), 
         typeof(INLocation.primaryItemID), 
         typeof(INLocation.primaryItemClassID), 
         typeof(INLocation.receiptsValid), 
         typeof(INLocation.salesValid), 
         typeof(INLocation.transfersValid), 
         typeof(INLocation.projectID), 
         typeof(INLocation.taskID) 
        }); 
       _Attributes[_SelAttrIndex] = newAttr; 
       newAttr.ValidComboRequired = attr.ValidComboRequired; 
       newAttr.CacheGlobal = attr.CacheGlobal; 
       newAttr.DirtyRead = attr.DirtyRead; 
       newAttr.DescriptionField = attr.DescriptionField; 
      } 
     } 
    } 
} 

, 위치 선택은 빈/위치 표시됩니다,하는 : LocationAvailAttribute가 INTran.LocationID 필드를 장식하는 조건이 가능한 경우 0보다 큰, 당신은 확장해야 현재 재고 품목 수량 사용할 수있는 값이 0보다 큰 것 같습니다. enter image description here

+0

이 방법이 Acumatica에서 어떻게 구현 될 수 있는지 알고 있습니다. 내 질문은 어떻게이 Acumatica 모바일 제품에서 할 것이라고합니다. Acumatica에서 변경을하면 논리가 어떻게 든 모바일 제품에서도 작동합니다. 귀하의 게시물에 대해 확실하게 알고 싶습니다. Acumatica 코드에서이 작업을 수행하는 방법에 대해 꽤 분명했습니다. Acumatica Mobile에서도 동일한 작업을 수행하고 싶습니다. –

+0

Acumatica 모바일 앱이 플레이어로 작동하기 때문에 비즈니스 로직 내부에서 무언가를 변경해야 할 때마다 (이 시나리오 중 하나임) 확장 클래스를 통해 변경해야합니다. 이러한 변경 사항은 웹 브라우저와 모바일 앱 모두에 적용됩니다. – RuslanDev

+0

정보를 제공해 주셔서 감사합니다. 나는 이미 약간의 변화를 가졌다. 모바일 제품에서 제대로 작동하는지 확인하겠습니다. –