Example #1
0
        public virtual void SOLine_IsRUTROTDeductible_FieldVerifying(PXCache sender, PXFieldVerifyingEventArgs e)
        {
            SOLine tran = (SOLine)e.Row;

            if (tran == null)
            {
                return;
            }
            if (Base.Document.Current == null)
            {
                return;
            }
            if (e.NewValue == null || (bool)e.NewValue == false)
            {
                return;
            }

            string              value  = Rutrots.Current?.RUTROTType;
            InventoryItem       item   = (InventoryItem)InventoryItem.Select(tran.InventoryID);
            InventoryItemRUTROT itemRR = RUTROTHelper.GetExtensionNullable <InventoryItem, InventoryItemRUTROT>(item);

            if (!RUTROTHelper.IsItemMatchRUTROTType(value, item, itemRR, (bool)e.NewValue))
            {
                sender.RaiseExceptionHandling <SOLineRUTROT.isRUTROTDeductible>(tran, false, new PXSetPropertyException <SOLineRUTROT.isRUTROTDeductible>(RUTROTMessages.LineDoesNotMatchDoc));
                e.NewValue = false;
                throw new PXSetPropertyException <SOLineRUTROT.isRUTROTDeductible>(RUTROTMessages.LineDoesNotMatchDoc);
            }
        }
Example #2
0
        protected virtual void RUTROT_RUTROTType_FieldVerifying(PXCache sender, PXFieldVerifyingEventArgs e)
        {
            DocExt document = RUTROTHelper.GetExtensionNullable <Doc, DocExt>(Document.Current);
            RUTROT rutrot   = (RUTROT)e.Row;

            if (document != null && document.IsRUTROTDeductible == true)
            {
                string value = (string)e.NewValue;
                foreach (Tran tran in Transactions.Select())
                {
                    TranExt tranRR = RUTROTHelper.GetExtensionNullable <Tran, TranExt>(tran);
                    if (tranRR.GetInventoryID() != null)
                    {
                        InventoryItem item = PXSelect <InventoryItem, Where <InventoryItem.inventoryID, Equal <Required <InventoryItem.inventoryID> > > > .Select(Base, tranRR.GetInventoryID());

                        InventoryItemRUTROT itemRR = PXCache <InventoryItem> .GetExtension <InventoryItemRUTROT>(item);

                        if (!RUTROTHelper.IsItemMatchRUTROTType(value, item, itemRR, itemRR?.IsRUTROTDeductible == true))
                        {
                            sender.RaiseExceptionHandling <RUTROT.rUTROTType>(rutrot, rutrot.RUTROTType, new PXSetPropertyException <RUTROT.rUTROTType>(RUTROTMessages.LineDoesNotMatchDoc));
                            e.NewValue = rutrot.RUTROTType;
                            break;
                        }
                    }
                }
            }
        }
Example #3
0
        protected virtual void SOLine_InventoryID_FieldVerifying(PXCache sender, PXFieldVerifyingEventArgs e)
        {
            if (!e.ExternalCall)
            {
                e.Cancel = true;
            }
            SOLine tran = (SOLine)e.Row;

            if (tran == null)
            {
                return;
            }
            if (Base.Document.Current == null)
            {
                return;
            }
            if (e.NewValue == null)
            {
                return;
            }

            string              value  = Rutrots.Current?.RUTROTType;
            InventoryItem       item   = (InventoryItem)InventoryItem.Select((int)e.NewValue);
            InventoryItemRUTROT itemRR = RUTROTHelper.GetExtensionNullable <InventoryItem, InventoryItemRUTROT>(item);

            if (!RUTROTHelper.IsItemMatchRUTROTType(value, item, itemRR, itemRR?.IsRUTROTDeductible == true))
            {
                sender.RaiseExceptionHandling <SOLine.inventoryID>(tran, item.InventoryCD, new PXSetPropertyException <SOLine.inventoryID>(RUTROTMessages.LineDoesNotMatchDoc));
                e.NewValue = item.InventoryCD;
                throw new PXSetPropertyException <SOLine.inventoryID>(RUTROTMessages.LineDoesNotMatchDoc);
            }
        }
Example #4
0
        protected virtual void RUTROT_RowPersisting(PXCache sender, PXRowPersistingEventArgs e)
        {
            RUTROT rutrot = (RUTROT)e.Row;
            DocExt doc    = RUTROTHelper.GetExtensionNullable <Doc, DocExt>(Document.Current);

            bool         treatAsError = doc?.GetDocumentHold() != true;
            PXErrorLevel errorLevel   = treatAsError ? PXErrorLevel.Error : PXErrorLevel.Warning;

            if (WarnOnDeductionExceedsAllowance(doc, rutrot, errorLevel) && treatAsError)
            {
                sender.RaiseExceptionHandling <RUTROT.curyTotalAmt>(rutrot, rutrot.CuryTotalAmt,
                                                                    new PXSetPropertyException(rutrot.CuryAllowedAmt == 0.0m ? RUTROTMessages.PeopleAreRequiredForDeduction : RUTROTMessages.DeductibleExceedsAllowance, PXErrorLevel.Error));
            }

            if (WarnUndistributedAmount(doc, rutrot, errorLevel, currencyinfo.Current ?? currencyinfo.SelectSingle()) && treatAsError)
            {
                sender.RaiseExceptionHandling <RUTROT.curyTotalAmt>(rutrot, rutrot.CuryTotalAmt,
                                                                    new PXSetPropertyException(RUTROTMessages.UndistributedAmount, PXErrorLevel.Error));
            }

            if (doc != null && doc.IsRUTROTDeductible == true)
            {
                foreach (Tran tran in Transactions.Select())
                {
                    TranExt tranRR = RUTROTHelper.GetExtensionNullable <Tran, TranExt>(tran);
                    if (tranRR.GetInventoryID() != null)
                    {
                        InventoryItem item = PXSelect <InventoryItem, Where <InventoryItem.inventoryID, Equal <Required <InventoryItem.inventoryID> > > > .Select(Base, tranRR.GetInventoryID());

                        InventoryItemRUTROT itemRR = PXCache <InventoryItem> .GetExtension <InventoryItemRUTROT>(item);

                        if (!RUTROTHelper.IsItemMatchRUTROTType(rutrot.RUTROTType, item, itemRR, itemRR?.IsRUTROTDeductible == true))
                        {
                            var exception = new PXSetPropertyException(RUTROTMessages.LineDoesNotMatchDoc, PXErrorLevel.RowError);
                            Transactions.Cache.RaiseExceptionHandling(RUTROTHelper.IsRUTROTDeductible, tran, tranRR.IsRUTROTDeductible, exception);
                            throw exception;
                        }
                    }
                }
            }
        }
Example #5
0
        public void CheckRUTROTLine(PXCache sender, IRUTROTable document, IRUTROTableLine line, RUTROT rutrot)
        {
            if (line != null && document != null && rutrot != null)
            {
                if (document.IsRUTROTDeductible == true)
                {
                    if (line.GetInventoryID() != null)
                    {
                        string        value = rutrot.RUTROTType;
                        InventoryItem item  = (InventoryItem)PXSelect <InventoryItem, Where <InventoryItem.inventoryID, Equal <Required <InventoryItem.inventoryID> > > > .Select(Base, line.GetInventoryID());

                        InventoryItemRUTROT itemRR = RUTROTHelper.GetExtensionNullable <InventoryItem, InventoryItemRUTROT>(item);
                        if (!RUTROTHelper.IsItemMatchRUTROTType(value, item, itemRR, itemRR?.IsRUTROTDeductible == true))
                        {
                            Base.Transactions.Cache.RaiseExceptionHandling <SOLine.inventoryID>(line, item.InventoryCD, new PXSetPropertyException <SOLine.inventoryID>(RUTROTMessages.LineDoesNotMatchDoc));
                            throw new PXSetPropertyException <SOLine.inventoryID>(RUTROTMessages.LineDoesNotMatchDoc);
                        }
                    }
                }
            }
        }