Litium.Sales.Rma's ApprovalCode

Litium.Sales.Rma has ApprovalCode, and so does each individual RmaRow in its RmaRows. Is it possible/recommended to use this in a way where the Rma itself is approved but some (but not all) the individual rows have its ApprovalCode set to Denied? (meaning for example, it has been agreed to give a refund for one defect but not another)

(I have not used these classes in action yet so I have no idea if ApprovalCode is just a data placeholder for the convenience of the developer or it’s actually used in Litium’s behind-the-scenes logic)

Litium version: 7.2.3

I think it depends on the business logic if you need to worry about ApprovalCode or not but it is used.

        /// Rma innit state.
        /// </summary>
        public static ApprovalCode None = new ApprovalCode("None", 1);
        /// <summary>
        /// Rma got approved.
        /// </summary>
        public static ApprovalCode Approved = new ApprovalCode("Approved", 2);
        /// <summary>
        /// Rma is rejected.
        /// </summary>
        public static ApprovalCode Denied = new ApprovalCode("Denied", 4);

Where and how is it used? The thing I don’t understand is if this is something I use solely for my own business logic or if it is used in some native Litium functionality.

The default business logic for the return management can be found here.

Example of usage is when you have multiple returns for the same order to filter out declined returns when calculating what you can include inte the new return. It should not be possible to return more items (quantity) than exists in the original order. I can’t see direct usage in default implementation for the RmaRow.ApprovalCode but you can build own logic to handle special case, example that one of two items in the returned package is approved and the other one is declined and returned to customer again to handle correct refunding amount.