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); } }
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); }
private void UpdateEmptyItem(InventoryItem rec, PMSetup row) { rec.BaseUnit = row.EmptyItemUOM; rec.SalesUnit = row.EmptyItemUOM; rec.PurchaseUnit = row.EmptyItemUOM; EmptyItem.Update(rec); }
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; } } }
private bool IsCommitmentsEnabled() { PMSetup setup = PXSelect <PMSetup> .Select(Base); var result = setup?.CostCommitmentTracking == true; return(result); }
public virtual void EnsureDefaultCostCode(PMSetup row) { PMCostCode costcode = DefaultCostCode.SelectWindowed(0, 1); if (costcode == null) { InsertDefaultCostCode(row); } }
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); }
public virtual void InsertDefaultCostCode(PMSetup row) { PMCostCode rec = new PMCostCode(); rec.CostCodeCD = "000000"; rec.Description = "DEFAULT"; rec.IsDefault = true; rec = DefaultCostCode.Insert(rec); }
public virtual void EnsureEmptyItem(PMSetup row) { InventoryItem item = EmptyItem.SelectWindowed(0, 1); if (item == null) { InsertEmptyItem(row); } }
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); } }
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); }
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); }
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); } }
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); }
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); } } }
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); } }
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); } } }