示例#1
0
        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);
            }
        }
示例#5
0
        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);
        }