pmfith
pmfith

Reputation: 909

Execute code on confirmation of shipment

I want to execute some code (to change the shipment date) upon the 'Confirm Shipment' action on the Shipments screen (SO302000).

I was thinking that this would be the way to do it:

public class SOShipmentEntryExt : PXGraphExtension<SOShipmentEntry>
{
    [PXOverride]
    public virtual void ConfirmShipment(SOOrderEntry docgraph, SOShipment shiporder)
    {
        Base.ConfirmShipment(docgraph, shiporder);
        //Add my code to do something here...
    }

}

When I try this, I get a shipment counter error. Is there a better way to do this?

Upvotes: 0

Views: 454

Answers (1)

pmfith
pmfith

Reputation: 909

From a similar case: How to add custom business logic to Acumatica framework's Actions?

public class SOShipmentEntryExt : PXGraphExtension<SOShipmentEntry>
{

    public PXAction<SOShipment> action;
    [PXButton]
    [PXUIField(DisplayName = "Actions", MapEnableRights = PXCacheRights.Select)]
    protected IEnumerable Action(PXAdapter adapter
                                ,[PXIntList(new int[] { 1 }
                                ,new string[] { "Confirm Shipment" })
                                ,PXInt] int? actionID)
    {
        //actionID = 1 means the Confirm Shipment action was the one invoked
        if (actionID == 1)
        {

            Base.Document.Current.ShipDate = Base.Accessinfo.BusinessDate;
            Base.Document.Update(Base.Document.Current);
        }

        //calls the basic action that was invoked
        return Base.action.Press(adapter);
    }

}

Upvotes: 2

Related Questions