public virtual void UpdateOrdersStatus(IEnumerable <Tuple <string, string> > orderCheckClosed) { foreach (Tuple <string, string> orderNbr in orderCheckClosed) { POLineUOpen minStatusLine = PXSelect <POLineUOpen, Where <POLineUOpen.orderType, Equal <Required <POLineUOpen.orderType> >, And <POLineUOpen.orderNbr, Equal <Required <POLineUOpen.orderNbr> >, And <POLineUOpen.lineType, NotEqual <POLineType.description> > > >, OrderBy <Asc <POLineUOpen.completed, Asc <POLineUOpen.closed> > > > .Select(_graph, orderNbr.Item1, orderNbr.Item2); string newStatus = (minStatusLine == null || minStatusLine.Closed == true) ? POOrderStatus.Closed : (minStatusLine.Completed == true) ? POOrderStatus.Completed : POOrderStatus.Open; POOrder order = PXSelect <POOrder, Where <POOrder.orderType, Equal <Required <POOrder.orderType> >, And <POOrder.orderNbr, Equal <Required <POOrder.orderNbr> > > > > .Select(_graph, orderNbr.Item1, orderNbr.Item2); if (order != null && order.Status != newStatus && order.Hold != true) { PXCache orderCache = _graph.Caches[typeof(POOrder)]; POOrder upd = (POOrder)orderCache.CreateCopy(order); upd.Status = newStatus; orderCache.Update(upd); } } }
protected override PMCommitment FromRecord(PXCache sender, object row) { POLineUOpen poline = (POLineUOpen)row; POOrder order = (POOrder)PXParentAttribute.SelectParent(sender.Graph.Caches[detailEntity], row, typeof(POOrder)); PMCommitment commitment = new PMCommitment(); commitment.Type = PMCommitmentType.Internal; commitment.CommitmentID = poline.CommitmentID ?? Guid.NewGuid(); commitment.AccountGroupID = GetAccountGroup(sender, row); commitment.ProjectID = poline.ProjectID; commitment.ProjectTaskID = poline.TaskID; commitment.UOM = poline.UOM; commitment.Qty = poline.OrderQty; commitment.Amount = poline.ExtCost; commitment.OpenQty = poline.OpenQty; commitment.OpenAmount = poline.OpenAmt; commitment.ReceivedQty = poline.ReceivedQty; commitment.InvoicedQty = 0; commitment.InvoicedAmount = 0; commitment.InvoicedIsReadonly = true; commitment.RefNoteID = order.NoteID; commitment.InventoryID = poline.InventoryID ?? PMInventorySelectorAttribute.EmptyInventoryID; commitment.CostCodeID = poline.CostCodeID ?? CostCodeAttribute.GetDefaultCostCode(); return(commitment); }
private bool IsCommitmentSyncRequired(POLineUOpen row, POLineUOpen oldRow) { return(row.OrderQty != oldRow.OrderQty || row.ExtCost != oldRow.ExtCost || row.OpenQty != oldRow.OpenQty || row.OpenAmt != oldRow.OpenAmt || row.RequestedDate != oldRow.RequestedDate || row.ProjectID != oldRow.ProjectID || row.TaskID != oldRow.TaskID || row.ExpenseAcctID != oldRow.ExpenseAcctID || row.InventoryID != oldRow.InventoryID || row.CostCodeID != oldRow.CostCodeID || row.UOM != oldRow.UOM); }
protected override bool EraseCommitment(PXCache sender, object row) { POLineUOpen poline = (POLineUOpen)row; POOrder order = (POOrder)PXParentAttribute.SelectParent(sender.Graph.Caches[detailEntity], row, typeof(POOrder)); if (order.OrderType == POOrderType.Blanket || order.OrderType == POOrderType.StandardBlanket || order.Hold == true || order.Approved != true || order.Cancelled == true || poline.Cancelled == true || poline.TaskID == null) { return(true); } else { return(GetAccountGroup(sender, row) == null); } }
public virtual POAccrualRecord GetAccrualStatusSummary(POLineUOpen poLine) { string orderType = poLine.OrderType; string orderNbr = poLine.OrderNbr; int? orderLineNbr = poLine.LineNbr; string poAccrualType = poLine.POAccrualType; if (!poAccrualType.IsIn(POAccrualType.Order, POAccrualType.Receipt)) { return(new POAccrualRecord()); } // works for both order-based and receipt-based billing var accrualRecords = PXSelect <POAccrualStatus, Where <POAccrualStatus.orderType, Equal <Required <POAccrualStatus.orderType> >, And <POAccrualStatus.orderNbr, Equal <Required <POAccrualStatus.orderNbr> >, And <POAccrualStatus.orderLineNbr, Equal <Required <POAccrualStatus.orderLineNbr> > > > > > .Select(_graph, orderType, orderNbr, orderLineNbr) .RowCast <POAccrualStatus>() .Select(POAccrualRecord.FromPOAccrualStatus) .ToList(); return(this.Accumulate(accrualRecords)); }
protected override int?GetAccountGroup(PXCache sender, object row) { POLineUOpen poline = (POLineUOpen)row; InventoryItem item = PXSelect <InventoryItem, Where <InventoryItem.inventoryID, Equal <Required <InventoryItem.inventoryID> > > > .Select(sender.Graph, poline.InventoryID); if (item != null && item.StkItem == true && item.COGSAcctID != null) { Account account = (Account)PXSelectorAttribute.Select <InventoryItem.cOGSAcctID>(sender.Graph.Caches[typeof(InventoryItem)], item); if (account != null && account.AccountGroupID != null) { return(account.AccountGroupID); } } else { Account account = (Account)PXSelectorAttribute.Select <POLineUOpen.expenseAcctID>(sender.Graph.Caches[detailEntity], row); if (account != null && account.AccountGroupID != null) { return(account.AccountGroupID); } } return(null); }