public static void Run(PMAllocator graph, PMProject item, DateTime?date, DateTime?fromDate, DateTime?toDate)
        {
            PXSelectBase <PMTask> select = new PXSelect <PMTask, Where <PMTask.projectID, Equal <Required <PMTask.projectID> >,
                                                                        And <PMTask.allocationID, IsNotNull,
                                                                             And <PMTask.isActive, Equal <True> > > > >(graph);

            List <PMTask> tasks = new List <PMTask>();

            foreach (PMTask pmTask in select.Select(item.ContractID))
            {
                tasks.Add(pmTask);
            }

            graph.Clear();
            graph.FilterStartDate = fromDate;
            graph.FilterEndDate   = toDate;
            graph.PostingDate     = date;
            graph.Execute(tasks);
            if (graph.Document.Current != null)
            {
                graph.Actions.PressSave();
                PMSetup setup = PXSelect <PMSetup> .Select(graph);

                PMRegister doc = graph.Caches[typeof(PMRegister)].Current as PMRegister;
                if (doc != null && setup.AutoReleaseAllocation == true)
                {
                    RegisterRelease.Release(doc);
                }
            }
            else
            {
                throw new PXSetPropertyException(Warnings.NothingToAllocate, PXErrorLevel.RowWarning);
            }
        }
        public static void ReverseAllocatedTran(PMTran tran)
        {
            RegisterEntry pmEntry = PXGraph.CreateInstance <RegisterEntry>();

            pmEntry.FieldVerifying.AddHandler <PMTran.projectID>((PXCache sender, PXFieldVerifyingEventArgs e) => { e.Cancel = true; });
            pmEntry.FieldVerifying.AddHandler <PMTran.taskID>((PXCache sender, PXFieldVerifyingEventArgs e) => { e.Cancel = true; });
            pmEntry.FieldVerifying.AddHandler <PMTran.inventoryID>((PXCache sender, PXFieldVerifyingEventArgs e) => { e.Cancel = true; });

            PMRegister reversalDoc = (PMRegister)pmEntry.Document.Cache.Insert();

            reversalDoc.OrigDocType  = PMOrigDocType.AllocationReversal;
            reversalDoc.OrigDocNbr   = tran.RefNbr;
            reversalDoc.Description  = "Allocation Reversal to Non-Billable";
            pmEntry.Document.Current = reversalDoc;

            PMBillEngine engine = PXGraph.CreateInstance <PMBillEngine>();

            foreach (PMTran reverse in engine.ReverseTran(tran))
            {
                reverse.Reversed = true;
                pmEntry.Transactions.Insert(reverse);
            }

            tran.Reversed = true;
            pmEntry.Transactions.Update(tran);

            pmEntry.Save.Press();

            PMSetup setup = PXSelect <PMSetup> .Select(pmEntry);

            if (setup.AutoReleaseAllocation == true)
            {
                RegisterRelease.Release(reversalDoc);
            }
        }
Esempio n. 3
0
        public virtual void InsertDefaultProject(PMSetup row)
        {
            PMProject rec = new PMProject();

            rec.CustomerID  = null;
            rec.ContractCD  = row.NonProjectCode;
            rec.Description = PXLocalizer.Localize(Messages.NonProjectDescription);
            PXDBLocalizableStringAttribute.SetTranslationsFromMessage <PMProject.description>
                (Caches[typeof(PMProject)], rec, Messages.NonProjectDescription);
            rec.StartDate       = new DateTime(DateTime.Now.Year, 1, 1);
            rec.CuryID          = Company.Current.BaseCuryID;
            rec.IsActive        = true;
            rec.Status          = ProjectStatus.Active;
            rec.ServiceActivate = false;
            rec.VisibleInAP     = true;
            rec.VisibleInAR     = true;
            rec.VisibleInCA     = true;
            rec.VisibleInCR     = true;
            rec.VisibleInEA     = true;
            rec.VisibleInGL     = true;
            rec.VisibleInIN     = true;
            rec.VisibleInPO     = true;
            rec.VisibleInSO     = true;
            rec.VisibleInTA     = true;
            rec = DefaultProject.Insert(rec);
        }
Esempio n. 4
0
 private void UpdateEmptyItem(InventoryItem rec, PMSetup row)
 {
     rec.BaseUnit     = row.EmptyItemUOM;
     rec.SalesUnit    = row.EmptyItemUOM;
     rec.PurchaseUnit = row.EmptyItemUOM;
     EmptyItem.Update(rec);
 }
Esempio n. 5
0
        public virtual void EnsureDefaultCostCode(PMSetup row)
        {
            PMCostCode costcode = DefaultCostCode.SelectWindowed(0, 1);

            if (costcode == null)
            {
                InsertDefaultCostCode(row);
            }
            else
            {
                if (costcode.CostCodeCD.Length != GetCostCodeLength())
                {
                    costcode.CostCodeCD = new string('0', GetCostCodeLength());
                    if (DefaultCostCode.Cache.GetStatus(costcode) == PXEntryStatus.Notchanged)
                    {
                        DefaultCostCode.Cache.SetStatus(costcode, PXEntryStatus.Updated);
                    }

                    DefaultCostCode.Cache.IsDirty = true;
                }
                if (costcode.NoteID == null)
                {
                    costcode.NoteID = Guid.NewGuid();
                    if (DefaultCostCode.Cache.GetStatus(costcode) == PXEntryStatus.Notchanged)
                    {
                        DefaultCostCode.Cache.SetStatus(costcode, PXEntryStatus.Updated);
                    }

                    DefaultCostCode.Cache.IsDirty = true;
                }
            }
        }
Esempio n. 6
0
        private bool IsCommitmentsEnabled()
        {
            PMSetup setup = PXSelect <PMSetup> .Select(Base);

            var result = setup?.CostCommitmentTracking == true;

            return(result);
        }
Esempio n. 7
0
        public virtual void EnsureDefaultCostCode(PMSetup row)
        {
            PMCostCode costcode = DefaultCostCode.SelectWindowed(0, 1);

            if (costcode == null)
            {
                InsertDefaultCostCode(row);
            }
        }
Esempio n. 8
0
        public virtual void InsertDefaultCostCode(PMSetup row)
        {
            PMCostCode rec = new PMCostCode();

            rec.CostCodeCD  = new string('0', GetCostCodeLength());
            rec.Description = "DEFAULT";
            rec.IsDefault   = true;
            rec             = DefaultCostCode.Insert(rec);
        }
Esempio n. 9
0
        public virtual void InsertDefaultCostCode(PMSetup row)
        {
            PMCostCode rec = new PMCostCode();

            rec.CostCodeCD  = "000000";
            rec.Description = "DEFAULT";
            rec.IsDefault   = true;
            rec             = DefaultCostCode.Insert(rec);
        }
Esempio n. 10
0
        public virtual void EnsureEmptyItem(PMSetup row)
        {
            InventoryItem item = EmptyItem.SelectWindowed(0, 1);

            if (item == null)
            {
                InsertEmptyItem(row);
            }
        }
Esempio n. 11
0
        protected virtual void UpdateEmptyItem(InventoryItem rec, PMSetup row)
        {
            if (rec.BaseUnit != row.EmptyItemUOM || rec.SalesUnit != row.EmptyItemUOM || rec.PurchaseUnit != row.EmptyItemUOM)
            {
                rec.BaseUnit     = row.EmptyItemUOM;
                rec.SalesUnit    = row.EmptyItemUOM;
                rec.PurchaseUnit = row.EmptyItemUOM;

                EmptyItem.Cache.MarkUpdated(rec);
            }
        }
Esempio n. 12
0
        public virtual void InsertEmptyItem(PMSetup row)
        {
            InventoryItem rec = new InventoryItem();

            rec.InventoryCD  = row.EmptyItemCode;
            rec.ItemStatus   = InventoryItemStatus.Unknown;
            rec.ItemType     = INItemTypes.NonStockItem;
            rec.BaseUnit     = "HOUR";
            rec.SalesUnit    = "HOUR";
            rec.PurchaseUnit = "HOUR";
            rec = EmptyItem.Insert(rec);
        }
        private void InsertDefaultProject(PMSetup row)
        {
            PMProject rec = new PMProject();

            rec.CustomerID      = null;
            rec.ContractCD      = row.NonProjectCode;
            rec.Description     = Messages.NonProjectDescription;
            rec.StartDate       = new DateTime(DateTime.Now.Year, 1, 1);
            rec.CuryID          = Company.Current.BaseCuryID;
            rec.IsActive        = true;
            rec.Status          = ProjectStatus.Active;
            rec.ServiceActivate = false;
            rec = DefaultProject.Insert(rec);
        }
Esempio n. 14
0
        public virtual void InsertEmptyItem(PMSetup row)
        {
            InventoryItem rec = new InventoryItem();

            rec.InventoryCD  = row.EmptyItemCode;
            rec.ItemStatus   = InventoryItemStatus.Unknown;
            rec.ItemType     = INItemTypes.NonStockItem;
            rec.BaseUnit     = row.EmptyItemUOM;
            rec.SalesUnit    = row.EmptyItemUOM;
            rec.PurchaseUnit = row.EmptyItemUOM;
            rec.StkItem      = false;
            rec.TaxCalcMode  = TX.TaxCalculationMode.TaxSetting;
            rec = EmptyItem.Insert(rec);
        }
        protected virtual bool IsCommitmentTrackingEnabled(PXCache sender)
        {
            if (!PXAccess.FeatureInstalled <FeaturesSet.projectModule>())
            {
                return(false);
            }

            PMSetup setup = PXSelect <PMSetup> .Select(sender.Graph);

            if (setup == null)
            {
                return(false);
            }

            return(setup.CommitmentTracking == true);
        }
Esempio n. 16
0
        public virtual void PMSetup_RowInserted(PXCache sender, PXRowInsertedEventArgs e)
        {
            PMSetup row = (PMSetup)e.Row;

            if (row == null)
            {
                return;
            }

            PMProject rec = DefaultProject.SelectWindowed(0, 1);

            if (rec == null)
            {
                InsertDefaultProject(row);
            }
            else
            {
                rec.ContractCD             = row.NonProjectCode;
                rec.IsActive               = true;
                rec.Status                 = ProjectStatus.Active;
                rec.VisibleInAP            = true;
                rec.VisibleInAR            = true;
                rec.VisibleInCA            = true;
                rec.VisibleInCR            = true;
                rec.VisibleInEA            = true;
                rec.VisibleInGL            = true;
                rec.VisibleInIN            = true;
                rec.VisibleInPO            = true;
                rec.VisibleInSO            = true;
                rec.VisibleInTA            = true;
                rec.RestrictToEmployeeList = false;
                rec.RestrictToResourceList = false;

                if (DefaultProject.Cache.GetStatus(rec) == PXEntryStatus.Notchanged)
                {
                    DefaultProject.Cache.SetStatus(rec, PXEntryStatus.Updated);
                }
            }

            EnsureDefaultCostCode(row);
            EnsureEmptyItem(row);
        }
        public static void ReverseAllocatedTran(PMTran tran)
        {
            RegisterEntry pmEntry = PXGraph.CreateInstance <RegisterEntry>();

            pmEntry.FieldVerifying.AddHandler <PMTran.projectID>((PXCache sender, PXFieldVerifyingEventArgs e) => { e.Cancel = true; });
            pmEntry.FieldVerifying.AddHandler <PMTran.taskID>((PXCache sender, PXFieldVerifyingEventArgs e) => { e.Cancel = true; });
            pmEntry.FieldVerifying.AddHandler <PMTran.inventoryID>((PXCache sender, PXFieldVerifyingEventArgs e) => { e.Cancel = true; });

            PMRegister reversalDoc = (PMRegister)pmEntry.Document.Cache.Insert();

            reversalDoc.OrigDocType  = PMOrigDocType.AllocationReversal;
            reversalDoc.OrigDocNbr   = tran.RefNbr;
            reversalDoc.Description  = PXMessages.LocalizeNoPrefix(Messages.AllocationReversalNonBilling);
            pmEntry.Document.Current = reversalDoc;

            PMBillEngine engine = PXGraph.CreateInstance <PMBillEngine>();

            foreach (PMTran reverse in engine.ReverseTran(tran))
            {
                reverse.Reversed     = true;
                reverse.Date         = null;
                reverse.FinPeriodID  = null;
                reverse.TranDate     = null;
                reverse.TranPeriodID = null;

                pmEntry.Transactions.Insert(reverse);
            }

            tran.Reversed = true;
            PM.RegisterReleaseProcess.SubtractFromUnbilledSummary(pmEntry, tran);
            pmEntry.Transactions.Update(tran);

            pmEntry.Save.Press();

            PMSetup setup = PXSelect <PMSetup> .Select(pmEntry);

            if (setup.AutoReleaseAllocation == true)
            {
                RegisterRelease.Release(reversalDoc);
            }
        }
Esempio n. 18
0
        public static bool Post(List <ProcessInfo <Batch> > infoList, bool isMassProcess)
        {
            PostGraph pg    = PXGraph.CreateInstance <PostGraph>();
            PMSetup   setup = PXSelect <PMSetup> .Select(pg);

            bool failed = false;

            if (setup != null && setup.AutoPost == true)
            {
                foreach (ProcessInfo <Batch> t in infoList)
                {
                    foreach (Batch batch in t.Batches)
                    {
                        try
                        {
                            pg.Clear();
                            pg.PostBatchProc(batch);
                        }
                        catch (Exception e)
                        {
                            if (isMassProcess)
                            {
                                failed = true;
                                PXProcessing <PMRegister> .SetError(t.RecordIndex,
                                                                    e is PXOuterException
                                                                    ?e.Message + "\r\n" +
                                                                    String.Join("\r\n", ((PXOuterException)e).InnerMessages)
                                                                    : e.Message);
                            }
                            else
                            {
                                var message = PXMessages.LocalizeNoPrefix(Messages.PostToGLFailed) + Environment.NewLine + e.Message;
                                throw new PXMassProcessException(t.RecordIndex, new PXException(message, e));
                            }
                        }
                    }
                }
            }

            return(!failed);
        }
Esempio n. 19
0
        public virtual void PMSetup_RowUpdated(PXCache sender, PXRowUpdatedEventArgs e)
        {
            PMProject rec = DefaultProject.SelectWindowed(0, 1);
            PMSetup   row = (PMSetup)e.Row;

            if (row == null)
            {
                return;
            }

            if (rec == null)
            {
                InsertDefaultProject(row);
            }
            else if (!sender.ObjectsEqual <PMSetup.nonProjectCode>(e.Row, e.OldRow))
            {
                rec.ContractCD = row.NonProjectCode;

                if (DefaultProject.Cache.GetStatus(rec) == PXEntryStatus.Notchanged)
                {
                    DefaultProject.Cache.SetStatus(rec, PXEntryStatus.Updated);
                }
            }

            InventoryItem item = EmptyItem.SelectWindowed(0, 1);

            if (item == null)
            {
                InsertEmptyItem(row);
            }
            else if (!sender.ObjectsEqual <PMSetup.emptyItemCode>(e.Row, e.OldRow))
            {
                item.InventoryCD = row.EmptyItemCode;

                if (EmptyItem.Cache.GetStatus(rec) == PXEntryStatus.Notchanged)
                {
                    EmptyItem.Cache.SetStatus(rec, PXEntryStatus.Updated);
                }
            }
        }
Esempio n. 20
0
        public static void Run(PMAllocator graph, PMTask item, DateTime?date, DateTime?fromDate, DateTime?toDate)
        {
            graph.Clear();
            graph.FilterStartDate = fromDate;
            graph.FilterEndDate   = toDate;
            graph.Execute(item);
            if (graph.Document.Current != null)
            {
                graph.Actions.PressSave();
                PMSetup setup = PXSelect <PMSetup> .Select(graph);

                PMRegister doc = graph.Caches[typeof(PMRegister)].Current as PMRegister;
                if (doc != null && setup.AutoReleaseAllocation == true)
                {
                    RegisterRelease.Release(doc);
                }
            }
            else
            {
                throw new PXSetPropertyException(Warnings.NothingToAllocate, PXErrorLevel.RowWarning);
            }
        }
Esempio n. 21
0
        public static void ReverseAllocatedTran(PMTran tran)
        {
            RegisterEntry pmEntry = PXGraph.CreateInstance <RegisterEntry>();

            pmEntry.FieldVerifying.AddHandler <PMTran.projectID>((PXCache sender, PXFieldVerifyingEventArgs e) => { e.Cancel = true; });
            pmEntry.FieldVerifying.AddHandler <PMTran.taskID>((PXCache sender, PXFieldVerifyingEventArgs e) => { e.Cancel = true; });
            pmEntry.FieldVerifying.AddHandler <PMTran.inventoryID>((PXCache sender, PXFieldVerifyingEventArgs e) => { e.Cancel = true; });

            PMRegister origDoc = PXSelectReadonly <PMRegister, Where <PMRegister.refNbr, Equal <Required <PMRegister.refNbr> > > > .Select(pmEntry, tran.RefNbr);

            PMRegister reversalDoc = (PMRegister)pmEntry.Document.Cache.Insert();

            reversalDoc.OrigDocType  = PMOrigDocType.Reversal;
            reversalDoc.OrigNoteID   = origDoc.NoteID;
            reversalDoc.Description  = PXMessages.LocalizeNoPrefix(Messages.AllocationReversal);
            pmEntry.Document.Current = reversalDoc;

            PMBillEngine engine = PXGraph.CreateInstance <PMBillEngine>();

            foreach (PMTran reverse in engine.ReverseTran(tran))
            {
                pmEntry.Transactions.Insert(reverse);
            }
            tran.ExcludedFromBilling       = true;
            tran.ExcludedFromBillingReason = PXMessages.LocalizeNoPrefix(Messages.ExcludedFromBillingAsReversed);
            PM.RegisterReleaseProcess.SubtractFromUnbilledSummary(pmEntry, tran);
            pmEntry.Transactions.Update(tran);

            pmEntry.Save.Press();

            PMSetup setup = PXSelect <PMSetup> .Select(pmEntry);

            if (setup.AutoReleaseAllocation == true)
            {
                RegisterRelease.Release(reversalDoc);
            }
        }
        public virtual void PMSetup_RowInserted(PXCache sender, PXRowInsertedEventArgs e)
        {
            PMSetup row = (PMSetup)e.Row;

            if (row == null)
            {
                return;
            }

            PMProject rec = DefaultProject.SelectWindowed(0, 1);

            if (rec == null)
            {
                InsertDefaultProject(row);
            }
            else
            {
                rec.ContractCD = row.NonProjectCode;
                if (DefaultProject.Cache.GetStatus(rec) == PXEntryStatus.Notchanged)
                {
                    DefaultProject.Cache.SetStatus(rec, PXEntryStatus.Updated);
                }
            }
        }