private bool IsApplicable(APTran transaction, APRegister payment)
        {
            var projectId = LienWaiverProjectDataProvider.GetProjectId(Graph, transaction);

            return(AreThereAnyLienWaiverRecipientsForVendorClass(payment.VendorID, projectId) &&
                   DoesCommitmentAmountExceedMinimumCommitmentAmount(payment.VendorID, transaction));
        }
        public virtual bool AddPOOrderLines(IEnumerable <POLineRS> lines)
        {
            bool hasAdded = false;

            foreach (POLineRS line in lines.Where(l =>
                                                  (l.CuryExtCost + l.CuryRetainageAmt > l.CuryReqPrepaidAmt) &&
                                                  (l.Billed == false || l.LineType == POLineType.Service && l.Closed == false)))
            {
                var tran = new APTran
                {
                    InventoryID        = line.InventoryID,
                    ProjectID          = line.ProjectID,
                    TaskID             = line.TaskID,
                    CostCodeID         = line.CostCodeID,
                    TaxID              = line.TaxID,
                    TaxCategoryID      = line.TaxCategoryID,
                    TranDesc           = line.TranDesc,
                    UOM                = line.UOM,
                    CuryUnitCost       = line.CuryUnitCost,
                    DiscPct            = line.DiscPct,
                    ManualPrice        = true,
                    ManualDisc         = true,
                    FreezeManualDisc   = true,
                    DiscountID         = line.DiscountID,
                    DiscountSequenceID = line.DiscountSequenceID,
                    RetainagePct       = line.RetainagePct,
                    POOrderType        = line.OrderType,
                    PONbr              = line.OrderNbr,
                    POLineNbr          = line.LineNbr,
                };

                decimal?billedAndPrepaidQty = line.ReqPrepaidQty + line.OrderBilledQty;
                tran.Qty = (line.OrderQty <= billedAndPrepaidQty) ? line.OrderQty : line.OrderQty - billedAndPrepaidQty;

                decimal?billedAndPrepaidAmt = line.CuryReqPrepaidAmt + line.CuryOrderBilledAmt;
                if (billedAndPrepaidAmt == 0m)
                {
                    tran.CuryLineAmt = line.CuryLineAmt;
                    tran.CuryDiscAmt = line.CuryDiscAmt;
                }
                else if (line.CuryExtCost + line.CuryRetainageAmt <= billedAndPrepaidAmt)
                {
                    tran.CuryLineAmt      = 0m;
                    tran.CuryDiscAmt      = 0m;
                    tran.CuryRetainageAmt = 0m;
                    tran.CuryTranAmt      = 0m;
                }
                else
                {
                    decimal?prepaymentRatio = (line.CuryExtCost + line.CuryRetainageAmt - billedAndPrepaidAmt) / (line.CuryExtCost + line.CuryRetainageAmt);
                    tran.CuryLineAmt = PXCurrencyAttribute.Round(Base.Transactions.Cache, tran, (prepaymentRatio * line.CuryLineAmt) ?? 0m, CMPrecision.TRANCURY);
                    tran.CuryDiscAmt = PXCurrencyAttribute.Round(Base.Transactions.Cache, tran, (prepaymentRatio * line.CuryDiscAmt) ?? 0m, CMPrecision.TRANCURY);
                }

                Base.Transactions.Insert(tran);
                hasAdded = true;
            }
            Base.AutoRecalculateDiscounts();
            return(hasAdded);
        }
Exemple #3
0
        private IEnumerable <LienWaiverGenerationKey> CreateGroupingKeysForPaymentByLines(
            IEnumerable <JointPayee> jointPayees, APRegister payment, APTran transaction)
        {
            var payees = jointPayees.Where(jp => jp.BillLineNumber == transaction.LineNbr).ToList();

            return(CreateGroupingKeys(payees, payment, transaction));
        }
Exemple #4
0
        public static void ClearInvoiceDetailsBalance(this APTran tran)
        {
            tran.CuryCashDiscBal = 0m;
            tran.CashDiscBal     = 0m;

            tran.CuryRetainedTaxableAmt = 0m;
            tran.RetainedTaxableAmt     = 0m;
            tran.CuryRetainedTaxAmt     = 0m;
            tran.RetainedTaxAmt         = 0m;

            tran.CuryRetainageBal     = 0m;
            tran.RetainageBal         = 0m;
            tran.CuryOrigRetainageAmt = 0m;
            tran.OrigRetainageAmt     = 0m;

            tran.CuryOrigTranAmt = 0m;
            tran.OrigTranAmt     = 0m;
            tran.CuryTranBal     = 0m;
            tran.TranBal         = 0m;

            tran.CuryOrigTaxableAmt = 0m;
            tran.OrigTaxableAmt     = 0m;
            tran.CuryOrigTaxAmt     = 0m;
            tran.OrigTaxAmt         = 0m;
        }
        public virtual IAddressBase GetToAddress(APInvoice invoice, APTran tran, GetToAddressLineDelegate del)
        {
            int?SOID = GetSOIDRelated(tran);

            if (SOID != null)
            {
                IAddressBase returnAddress = null;

                returnAddress = PXSelectJoin <FSAddress,
                                              InnerJoin <
                                                  FSBranchLocation,
                                                  On <FSBranchLocation.branchLocationAddressID, Equal <FSAddress.addressID> >,
                                                  InnerJoin <FSServiceOrder,
                                                             On <FSServiceOrder.branchLocationID, Equal <FSBranchLocation.branchLocationID> > > >,
                                              Where <
                                                  FSServiceOrder.sOID, Equal <Required <FSServiceOrder.sOID> > > >
                                .Select(Base, SOID)
                                .RowCast <FSAddress>()
                                .FirstOrDefault();

                return(returnAddress);
            }

            return(del(invoice, tran));
        }
        public virtual decimal?GetVendorPreparedBalance(APAdjust adjustment)
        {
            FinDocumentExtKey actualDocLineKey = InvoiceDataProvider.GetSourceEntityKeyByRetainage(Graph,
                                                                                                   adjustment.AdjdDocType, adjustment.AdjdRefNbr, adjustment.AdjdLineNbr);

            decimal?fullAmount;

            if (adjustment.AdjdLineNbr == 0)
            {
                APInvoice bill = InvoiceDataProvider.GetInvoice(Graph, actualDocLineKey.Type, actualDocLineKey.RefNbr);

                fullAmount = bill.CuryOrigDocAmt + bill.CuryRetainageTotal;
            }
            else
            {
                APTran tran = TransactionDataProvider.GetTransaction(Graph, actualDocLineKey.Type, actualDocLineKey.RefNbr, actualDocLineKey.LineNbr);

                fullAmount = tran.CuryOrigTranAmt + tran.CuryRetainageAmt;
            }

            var totalJointAmountOwed = JointPayeeDataProvider.GetJointPayees(Graph, actualDocLineKey.RefNbr, actualDocLineKey.LineNbr)
                                       .Sum(jp => jp.JointAmountOwed.GetValueOrDefault());
            var totalVendorPaymentAmount   = GetTotalVendorPaymentAmount(adjustment, actualDocLineKey.RefNbr, actualDocLineKey.LineNbr);
            var currentVendorPaymentAmount = GetVendorPaymentAmount(adjustment);
            var reversedRetainageAmount    = GetReversedRetainageAmount(actualDocLineKey.RefNbr, actualDocLineKey.LineNbr);

            return(fullAmount + reversedRetainageAmount - totalJointAmountOwed
                   - (totalVendorPaymentAmount - currentVendorPaymentAmount));
        }
        public virtual void CheckQtyFromPO(PXCache sender, APTran tran, Action <PXCache, APTran> baseMethod)
        {
            baseMethod(sender, tran);

            if (tran.TranType == APDocType.Prepayment && !string.IsNullOrEmpty(tran.PONbr) && tran.POLineNbr != null)
            {
                POLine poLine = PXSelectReadonly <POLine,
                                                  Where <POLine.orderType, Equal <Required <POLine.orderType> >, And <POLine.orderNbr, Equal <Required <POLine.orderNbr> >,
                                                                                                                      And <POLine.lineNbr, Equal <Required <POLine.lineNbr> > > > > >
                                .SelectWindowed(Base, 0, 1, tran.POOrderType, tran.PONbr, tran.POLineNbr);

                if (tran.Qty > poLine.OrderQty)
                {
                    sender.RaiseExceptionHandling <APTran.qty>(tran, tran.Qty, new PXSetPropertyException(Messages.PrepaidQtyCantExceedPOLine));
                }
                if ((poLine.CuryReqPrepaidAmt > poLine.CuryBilledAmt ? poLine.CuryReqPrepaidAmt : poLine.CuryBilledAmt)
                    + tran.CuryTranAmt + tran.CuryRetainageAmt
                    > poLine.CuryExtCost + poLine.CuryRetainageAmt)
                {
                    sender.RaiseExceptionHandling <APTran.curyTranAmt>(tran, tran.CuryTranAmt,
                                                                       new PXSetPropertyException(Messages.PrepaidAmtCantExceedPOLine));
                }
                else if (poLine.CuryReqPrepaidAmt + poLine.CuryBilledAmt
                         + tran.CuryTranAmt + tran.CuryRetainageAmt
                         > poLine.CuryExtCost + poLine.CuryRetainageAmt)
                {
                    sender.RaiseExceptionHandling <APTran.curyTranAmt>(tran, tran.CuryTranAmt,
                                                                       new PXSetPropertyException(Messages.PrepaidAmtMayExceedPOLine, PXErrorLevel.Warning, poLine.OrderNbr));
                }
            }
        }
Exemple #8
0
        private bool IsRelatedToCommitment(APTran transaction, int?projectId, string commitmentNumber)
        {
            var originalTransaction = TransactionDataProvider.GetOriginalTransaction(graph, transaction);
            var subcontractNumber   = GetSubcontractNumber(originalTransaction);

            return(originalTransaction.ProjectID == projectId &&
                   commitmentNumber.IsIn(originalTransaction.PONbr, subcontractNumber));
        }
Exemple #9
0
        public static void RecoverInvoiceDetailsBalance(this APTran tran)
        {
            tran.CuryRetainageBal = tran.CuryOrigRetainageAmt;
            tran.RetainageBal     = tran.OrigRetainageAmt;

            tran.CuryTranBal = tran.CuryOrigTranAmt;
            tran.TranBal     = tran.OrigTranAmt;
        }
        private POOrder GetPurchaseOrder(APTran apTran)
        {
            var query = new PXSelect <POOrder,
                                      Where <POOrder.orderType, Equal <Required <POOrder.orderType> >,
                                             And <POOrder.orderNbr, Equal <Required <POOrder.orderNbr> > > > >(Base);

            return(query.SelectSingle(apTran.POOrderType, apTran.PONbr));
        }
Exemple #11
0
        private IEnumerable <LienWaiverGenerationKey> CreateLienWaiverGroupingKeys(
            IReadOnlyCollection <JointPayee> jointPayees, APRegister payment, APTran transaction)
        {
            var adjustments = AdjustmentDataProvider.GetInvoiceAdjustments(Graph, transaction.RefNbr);

            return(adjustments.Any()
                ? CreateGroupingKeys(jointPayees, payment, transaction)
                : CreateGroupingKeysForPaymentByLines(jointPayees, payment, transaction));
        }
Exemple #12
0
        protected virtual APTran GenerateAPTran(SomeDetail detail, GenerateAPTranDel del)
        {
            //Get the APTran your base code would have generated
            APTran tran = del(detail);

            //Add our custom field data to APTranExtension

            return(tran);
        }
Exemple #13
0
 public virtual void SetReferenceKeyTo(APTran aTran)
 {
     aTran.POAccrualType      = this.POAccrualType;
     aTran.PONbr              = this.OrderNbr;
     aTran.POOrderType        = this.OrderType;
     aTran.POLineNbr          = this.LineNbr;
     aTran.POAccrualRefNoteID = ((IAPTranSource)this).POAccrualRefNoteID;
     aTran.POAccrualLineNbr   = ((IAPTranSource)this).POAccrualLineNbr;
 }
Exemple #14
0
        public virtual APTran GenerateAPTran(USSimpleInvoiceLine detail)
        {
            APTran tran = new APTran();

            tran.InventoryID = detail.InventoryID;
            tran.Qty         = detail.Qty;
            tran.ProjectID   = NonProject.ID;
            return(tran);
        }
        public virtual IEnumerable LinkLineOrderTran()
        {
            APTran currentAPTran = Base.Transactions.Current;

            if (currentAPTran == null)
            {
                yield break;
            }

            PXSelectBase <LinkLineOrder> cmd = new PXSelect <LinkLineOrder,
                                                             Where2 <
                                                                 Where <Current <LinkLineFilter.pOOrderNbr>, Equal <LinkLineOrder.orderNbr>,
                                                                        Or <Current <LinkLineFilter.pOOrderNbr>, IsNull> >,
                                                                 And2 <Where <Current <LinkLineFilter.siteID>, IsNull,
                                                                              Or <LinkLineOrder.orderSiteID, Equal <Current <LinkLineFilter.siteID> > > >,
                                                                       And <LinkLineOrder.inventoryID, Equal <Current <APTran.inventoryID> >,
                                                                            And <LinkLineOrder.uOM, Equal <Current <APTran.uOM> >,
                                                                                 And <LinkLineOrder.orderCuryID, Equal <Current <APInvoice.curyID> > > > > > > >(Base);

            if (Base.APSetup.Current.RequireSingleProjectPerDocument == true)
            {
                cmd.WhereAnd <Where <LinkLineOrder.projectID, Equal <Current <APInvoice.projectID> > > >();
            }

            if (PXAccess.FeatureInstalled <FeaturesSet.vendorRelations>())
            {
                cmd.WhereAnd <Where <LinkLineOrder.vendorID, Equal <Current <APInvoice.suppliedByVendorID> >,
                                     And <LinkLineOrder.vendorLocationID, Equal <Current <APInvoice.suppliedByVendorLocationID> >,
                                          And <LinkLineOrder.payToVendorID, Equal <Current <APInvoice.vendorID> > > > > >();
            }
            else
            {
                cmd.WhereAnd <Where <LinkLineOrder.vendorID, Equal <Current <APInvoice.vendorID> >,
                                     And <LinkLineOrder.vendorLocationID, Equal <Current <APInvoice.vendorLocationID> > > > >();
            }

            var usedPOAccrual = new Lazy <POAccrualSet>(() =>
            {
                var r = Base.GetUsedPOAccrualSet();
                r.Remove(currentAPTran);
                return(r);
            });

            foreach (LinkLineOrder item in cmd.Select().RowCast <LinkLineOrder>().AsEnumerable()
                     .Where(l => !usedPOAccrual.Value.Contains(l)))
            {
                var res = (PXResult <POLineS, POOrder>)POLineLink.Select(item.OrderNbr, item.OrderType, item.OrderLineNbr);
                if (linkLineOrderTran.Cache.GetStatus((POLineS)res) != PXEntryStatus.Updated &&
                    ((POLineS)res).CompareReferenceKey(currentAPTran))
                {
                    linkLineOrderTran.Cache.SetValue <POLineS.selected>((POLineS)res, true);
                    linkLineOrderTran.Cache.SetStatus((POLineS)res, PXEntryStatus.Updated);
                }
                yield return(res);
            }
        }
Exemple #16
0
 public static APTran GetOriginalTransaction(PXGraph graph, APTran transaction)
 {
     if (transaction.OrigLineNbr != null)
     {
         var originalInvoice =
             InvoiceDataProvider.GetOriginalInvoice(graph, transaction.RefNbr, transaction.TranType);
         return(GetTransaction(graph, originalInvoice.DocType, originalInvoice.RefNbr, transaction.OrigLineNbr));
     }
     return(transaction);
 }
Exemple #17
0
 public static void CreateAPBill(System.Collections.Generic.List <FLXCommissionTran> list, FLXSetup setup)
 {
     try
     {
         APInvoiceEntry instance1 = PXGraph.CreateInstance <APInvoiceEntry>();
         string         str       = string.Empty;
         string         format    = "[{0}] Isn't A Vendor.";
         for (int index = 0; index < list.Count; ++index)
         {
             FLXCommissionTran flxCommissionTran = list[index];
             if (FLXGenBillAPInvoice.CheckBAType((PXGraph)instance1, flxCommissionTran.SalesRepID))
             {
                 if (instance1.CurrentDocument.Current == null)
                 {
                     APInvoice instance2 = instance1.Document.Cache.CreateInstance() as APInvoice;
                     instance2.DocType    = "INV";
                     instance2.VendorID   = flxCommissionTran.SalesRepID;
                     instance2.DocDate    = flxCommissionTran.APDate;
                     instance2.InvoiceNbr = string.Format("{0} {1}", (object)flxCommissionTran.CommissionTranID, (object)instance1.vendor.Select((object)instance2.VendorID).TopFirst.AcctCD.Trim());
                     instance1.Document.Insert(instance2);
                 }
                 APTran instance3 = instance1.Transactions.Cache.CreateInstance() as APTran;
                 instance3.BranchID     = flxCommissionTran.BranchID;
                 instance3.InventoryID  = setup.CommissionItem;
                 instance3.Qty          = new Decimal?((Decimal)1);
                 instance3.CuryUnitCost = flxCommissionTran.CommisionAmt;
                 instance3.TranDesc     = string.Format("{0},{1},{2},{3},{4}", (object)flxCommissionTran.CommissionTranID, (object)flxCommissionTran.OrderNbr, (object)flxCommissionTran.ProjectNbr, (object)instance1.nonStockItem.Select((object)flxCommissionTran.InventoryID).TopFirst.InventoryCD.Trim(), (object)instance1.nonStockItem.Select((object)flxCommissionTran.NonStockItem).TopFirst.InventoryCD.Trim());
                 instance3.SubID        = instance1.nonStockItem.Select((object)instance3.InventoryID).TopFirst.COGSSubID;
                 instance1.Transactions.Insert(instance3);
                 str = str + flxCommissionTran.CommissionTranID + "/";
             }
             else
             {
                 throw new PXException(format, new object[1]
                 {
                     (object)SelectFrom <BAccountR> .Where <BAccountR.bAccountID.IsEqual <P.AsInt> > .View.Select((PXGraph)instance1, (object)flxCommissionTran.SalesRepID).TopFirst.AcctCD.Trim()
                 });
             }
         }
         instance1.Document.Current.DocDesc = str.Substring(0, (str.Length > PX.Objects.Common.Constants.TranDescLength ? PX.Objects.Common.Constants.TranDescLength : str.Length) - 1);
         instance1.Document.UpdateCurrent();
         instance1.Save.Press();
         for (int index = 0; index < list.Count; ++index)
         {
             FLXCommissionTran flxCommissionTran = list[index];
             PXUpdate <Set <FLXCommissionTran.aPBillCreated, Required <FLXCommissionTran.aPBillCreated>, Set <FLXCommissionTran.aPBillRefNBr, Required <APInvoice.refNbr> > >, FLXCommissionTran, Where <FLXCommissionTran.commissionTranID, Equal <Required <FLXCommissionTran.commissionTranID> > > > .Update((PXGraph)instance1, (object)true, (object)instance1.Document.Current.RefNbr, (object)flxCommissionTran.CommissionTranID);
         }
     }
     catch (PXException ex)
     {
         PXProcessing.SetError((Exception)ex);
         throw ex;
     }
 }
Exemple #18
0
        /// <summary>
        /// Checks if deferral code has been changed or removed from the line.
        /// If so, ensures the removal of any associated deferral schedules.
        /// </summary>
        public static void DeleteAssociatedScheduleIfDeferralCodeChanged(
            PXCache cache,
            APTran documentLine)
        {
            // Obtain the document line last saved into the database
            // to check if the new line's deferral code differs from it.
            // -
            APTran oldLine = GetOriginal <APTran>(cache, documentLine);

            DeleteAssociatedScheduleIfDeferralCodeChanged(cache.Graph, documentLine, oldLine);
        }
Exemple #19
0
        protected virtual void DRSchedule_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
        {
            DRSchedule row = e.Row as DRSchedule;

            if (row != null)
            {
                row.DocumentType = DRScheduleDocumentType.BuildDocumentType(row.Module, row.DocType);

                if (row.Module == BatchModule.AR)
                {
                    row.BAccountType = CR.BAccountType.CustomerType;

                    ARTran tran = PXSelect <ARTran, Where <ARTran.tranType, Equal <Current <DRSchedule.docType> >,
                                                           And <ARTran.refNbr, Equal <Current <DRSchedule.refNbr> >,
                                                                And <ARTran.lineNbr, Equal <Current <DRSchedule.lineNbr> > > > > > .Select(this);

                    if (tran != null)
                    {
                        row.OrigLineAmt = tran.TranAmt;
                    }
                }
                else
                {
                    row.BAccountType = CR.BAccountType.VendorType;

                    APTran tran = PXSelect <APTran, Where <APTran.tranType, Equal <Current <DRSchedule.docType> >,
                                                           And <APTran.refNbr, Equal <Current <DRSchedule.refNbr> >,
                                                                And <APTran.lineNbr, Equal <Current <DRSchedule.lineNbr> > > > > > .Select(this);

                    if (tran != null)
                    {
                        row.OrigLineAmt = tran.TranAmt;
                    }
                }

                release.SetVisible(row.IsCustom == true);
                release.SetEnabled(row.IsCustom == true);
                PXUIFieldAttribute.SetEnabled <DRSchedule.documentType>(sender, row, row.IsCustom == true);
                PXUIFieldAttribute.SetEnabled <DRSchedule.finPeriodID>(sender, row, row.IsCustom == true);
                PXUIFieldAttribute.SetEnabled <DRSchedule.refNbr>(sender, row, row.IsCustom == true);
                PXUIFieldAttribute.SetEnabled <DRSchedule.lineNbr>(sender, row, row.IsCustom == true);
                PXUIFieldAttribute.SetEnabled <DRSchedule.docDate>(sender, row, row.IsCustom == true);
                PXUIFieldAttribute.SetEnabled <DRSchedule.bAccountID>(sender, row, row.IsCustom == true);
                PXUIFieldAttribute.SetEnabled <DRSchedule.bAccountLocID>(sender, row, row.IsCustom == true);
                PXUIFieldAttribute.SetEnabled <DRSchedule.projectID>(sender, row, row.IsCustom == true);
                PXUIFieldAttribute.SetEnabled <DRSchedule.taskID>(sender, row, row.IsCustom == true);

                PXUIFieldAttribute.SetVisible <DRSchedule.origLineAmt>(sender, row, row.IsCustom != true);

                Components.Cache.AllowInsert = row.IsDraft == true;
                Components.Cache.AllowUpdate = row.IsDraft == true;
                Components.Cache.AllowDelete = row.IsDraft == true;
            }
        }
Exemple #20
0
 private static APTran GetOriginalTransactionWithRetainageBillReference(APTran originalTransaction,
                                                                        IDocumentTran retainageTransaction)
 {
     if (retainageTransaction == null)
     {
         return(originalTransaction);
     }
     originalTransaction.RefNbr      = retainageTransaction.RefNbr;
     originalTransaction.CuryTranAmt = retainageTransaction.CuryTranAmt;
     return(originalTransaction);
 }
        protected POOrder GetCommitment(APTran transaction)
        {
            var originalTransaction  = TransactionDataProvider.GetOriginalTransaction(Graph, transaction);
            var transactionExtension = PXCache <APTran> .GetExtension <ApTranExt>(originalTransaction);

            return(transactionExtension.SubcontractNbr != null
                ? CommitmentDataProvider.GetCommitment(Graph, transactionExtension.SubcontractNbr,
                                                       POOrderType.RegularSubcontract)
                : originalTransaction.PONbr != null
                    ? CommitmentDataProvider.GetCommitment(Graph, originalTransaction.PONbr, POOrderType.RegularOrder)
                    : null);
        }
Exemple #22
0
        private LienWaiverGenerationKey GetLienWaiverGroupingKey(APTran transaction, int?jointPayeeVendorId,
                                                                 APRegister payment)
        {
            var originalTransaction = TransactionDataProvider.GetOriginalTransaction(Graph, transaction);

            return(new LienWaiverGenerationKey
            {
                ProjectId = originalTransaction.ProjectID,
                VendorId = payment.VendorID,
                JointPayeeVendorId = jointPayeeVendorId,
                OrderNumber = GetCommitment(originalTransaction).OrderNbr
            });
        }
Exemple #23
0
        protected virtual void _(Events.FieldUpdating <APTran, APTran.uOM> e)
        {
            if (e.Row == null || SharedFunctions.isFSSetupSet(Base) == false)
            {
                return;
            }

            APTran apTranRow = (APTran)e.Row;

            if (IsLineCreatedFromAppSO(Base, Base.Document.Current, apTranRow, typeof(APTran.uOM).Name) == true)
            {
                throw new PXSetPropertyException(TX.Error.NO_UPDATE_ALLOWED_DOCLINE_LINKED_TO_APP_SO);
            }
        }
Exemple #24
0
        public virtual void SetReferenceKeyTo(APTran aTran)
        {
            bool orderPOAccrual = (this.POAccrualType == Objects.PO.POAccrualType.Order);

            aTran.POAccrualType      = this.POAccrualType;
            aTran.POAccrualRefNoteID = this.POAccrualRefNoteID;
            aTran.POAccrualLineNbr   = this.POAccrualLineNbr;
            aTran.ReceiptType        = orderPOAccrual ? null : this.ReceiptType;
            aTran.ReceiptNbr         = orderPOAccrual ? null : this.ReceiptNbr;
            aTran.ReceiptLineNbr     = orderPOAccrual ? null : this.LineNbr;
            aTran.POOrderType        = this.POType;
            aTran.PONbr     = this.PONbr;
            aTran.POLineNbr = this.POLineNbr;
        }
Exemple #25
0
        protected virtual void _(Events.RowPersisted <APTran> e)
        {
            if (e.Row == null)
            {
                return;
            }

            APTran apTranRow = (APTran)e.Row;

            // We call here cache.GetStateExt for every field when the transaction is aborted
            // to set the errors in the fields and then the Generate Invoice screen can read them
            if (e.TranStatus == PXTranStatus.Aborted && IsInvoiceProcessRunning == true)
            {
                MessageHelper.GetRowMessage(e.Cache, apTranRow, false, false);
            }
        }
Exemple #26
0
        protected virtual void LandedCostCode_RowDeleting(PXCache sender, PXRowDeletingEventArgs e)
        {
            LandedCostTran costTran = PXSelect <LandedCostTran, Where <LandedCostTran.landedCostCodeID, Equal <Current <LandedCostCode.landedCostCodeID> > > > .SelectWindowed(this, 0, 1);

            if (costTran != null)
            {
                throw new PXException(Messages.ThisEntityNotBeDeletedBecauseItIsUsedIn, Messages.LandedCostCode, Messages.LandedCostTran);
            }

            APTran apTran = PXSelect <APTran, Where <APTran.landedCostCodeID, Equal <Current <LandedCostCode.landedCostCodeID> > > > .SelectWindowed(this, 0, 1);

            if (costTran != null)
            {
                throw new PXException(Messages.ThisEntityNotBeDeletedBecauseItIsUsedIn, Messages.LandedCostCode, AP.Messages.APTran);
            }
        }
        private void ValidateTransaction(APTran transaction)
        {
            var projectHasExpiredCompliance =
                service.ValidateRelatedProjectField <APTran, APTran.projectID>(transaction, transaction.ProjectID);
            var taskHasExpiredCompliance =
                service.ValidateRelatedField <APTran, ComplianceDocument.costTaskID, APTran.taskID>(transaction,
                                                                                                    transaction.TaskID);
            var purchaseOrderOrSubcontractHasExpiredCompliance = IsSubcontract(transaction)
                ? service.ValidateRelatedField <APTran, ComplianceDocument.subcontract,
                                                ApTranExt.subcontractNbr>(transaction, transaction.PONbr)
                : service.ValidateRelatedField <APTran, ComplianceDocument.purchaseOrder, APTran.pONbr>(
                transaction, ComplianceDocumentReferenceRetriever.GetComplianceDocumentReferenceId(Base, transaction));

            service.ValidateRelatedRow <APTran, PX.Objects.CN.Compliance.AP.CacheExtensions.ApTranExt.hasExpiredComplianceDocuments>(transaction,
                                                                                                                                     projectHasExpiredCompliance || taskHasExpiredCompliance || purchaseOrderOrSubcontractHasExpiredCompliance);
        }
Exemple #28
0
        protected virtual void _(Events.RowDeleted <APTran> e)
        {
            if (e.Row == null || SharedFunctions.isFSSetupSet(Base) == false)
            {
                return;
            }

            APTran apTranRow = (APTran)e.Row;

            if (e.ExternalCall == true)
            {
                if (IsLineCreatedFromAppSO(Base, Base.Document.Current, apTranRow, null) == true)
                {
                    throw new PXException(TX.Error.NO_DELETION_ALLOWED_DOCLINE_LINKED_TO_APP_SO);
                }
            }
        }
Exemple #29
0
        protected virtual void APTran_RowPersisted(PXCache cache, PXRowPersistedEventArgs e)
        {
            if (e.Row == null)
            {
                return;
            }

            APTran apTranRow = (APTran)e.Row;

            //The CheckCacheState needs to be run when the transaction is aborted to verify the status of the fields
            //for the current row in order to catch exceptions thrown by other modules to allow them be shown in the
            //Generate Invoice screen.
            if (e.TranStatus == PXTranStatus.Aborted && IsInvoiceProcessRunning == true)
            {
                SharedFunctions.CheckCacheState(cache, apTranRow);
            }
        }
Exemple #30
0
        public virtual List <APRegister> ReleaseInvoice(JournalEntry je, ref APRegister doc, PXResult <APInvoice, CurrencyInfo, Terms, Vendor> res, bool isPrebooking, out List <INRegister> inDocs, ReleaseInvoiceDel del)
        {
            List <APRegister> results = new List <APRegister>();

            using (PXTransactionScope ts = new PXTransactionScope())
            {
                je.RowInserting.AddHandler <GLTran>((sender, e) =>
                {
                    GLTran row = e.Row as GLTran;

                    if (row != null)
                    {
                        if (row.Module == BatchModule.AP)
                        {
                            APTran tranLine = PXSelectReadonly <APTran,
                                                                Where <APTran.tranType, Equal <Required <APTran.tranType> >,
                                                                       And <APTran.refNbr, Equal <Required <APTran.refNbr> >,
                                                                            And <APTran.lineNbr, Equal <Required <APTran.lineNbr> > > > > > .Select(Base, new object[] { row.TranType, row.RefNbr, row.TranLineNbr });

                            if (tranLine != null)
                            {
                                InventoryItem item = PXSelectReadonly <InventoryItem, Where <InventoryItem.inventoryID, Equal <Required <InventoryItem.inventoryID> > > > .Select(je, tranLine.InventoryID);
                                if (item != null)
                                {
                                    InventoryItemExtension itemExt = item.GetExtension <InventoryItemExtension>();
                                    if (!string.IsNullOrEmpty(itemExt?.UsrTDEndpoint))
                                    {
                                        try
                                        {
                                        }
                                        catch
                                        {
                                        }
                                    }
                                }
                            }
                        }
                    }
                });

                results = del(je, ref doc, res, isPrebooking, out inDocs);
                ts.Complete(Base);
            }

            return(results);
        }