示例#1
0
        protected void _(Events.FieldUpdated <LumShipmentPlan.prodOrdID> e)
        {
            var row = e.Row as LumShipmentPlan;

            if (row == null)
            {
                return;
            }

            AMProdItem prodItem = SelectFrom <AMProdItem> .Where <AMProdItem.prodOrdID.IsEqual <@P.AsString> > .View.Select(this, row.ProdOrdID);

            row.QtyToProd   = prodItem.QtytoProd;
            row.QtyComplete = prodItem.QtyComplete;

            foreach (AMProdAttribute prodAttr in SelectFrom <AMProdAttribute> .Where <AMProdAttribute.prodOrdID.IsEqual <@P.AsString> > .View.Select(this, prodItem.ProdOrdID))
            {
                switch (prodAttr.AttributeID)
                {
                case "PRODLINE":
                    row.ProdLine = SelectFrom <CSAttributeDetail> .Where <CSAttributeDetail.attributeID.IsEqual <@P.AsString>
                                                                          .And <CSAttributeDetail.valueID.IsEqual <@P.AsString> > > .View
                                   .SelectSingleBound(this, null, prodAttr.AttributeID, prodAttr.Value).TopFirst?.Description;

                    break;

                case "LOTNO":
                    row.LotSerialNbr = prodAttr.Value;
                    break;

                case "TOTSHIPWO":
                    row.TotalShipNbr = Convert.ToInt32(prodAttr.Value);
                    break;
                }
            }

            AMProdItemExt prodItemExt = prodItem.GetExtension <AMProdItemExt>();

            if (prodItemExt.UsrSOOrderNbr != null)
            {
                PXResult <SOOrder, SOLine> sOResult = (PXResult <SOOrder, SOLine>)SelectFrom <SOOrder> .InnerJoin <SOLine> .On <SOOrder.orderType.IsEqual <SOLine.orderType>
                                                                                                                                .And <SOOrder.orderNbr.IsEqual <SOLine.orderNbr> > >
                                                      .Where <SOLine.orderType.IsEqual <@P.AsString>
                                                              .And <SOLine.orderNbr.IsEqual <@P.AsString>
                                                                    .And <SOLine.lineNbr.IsEqual <@P.AsInt> > > > .View
                                                      .Select(this, prodItemExt.UsrSOOrderType, prodItemExt.UsrSOOrderNbr, prodItemExt.UsrSOLineNbr);

                SOLine  soLine  = sOResult;
                SOOrder soOrder = sOResult;

                PXFieldState valueExt = Order.Cache.GetValueExt((object)soOrder, PX.Objects.CS.Messages.Attribute + ENDC) as PXFieldState;

                row.Customer           = (string)valueExt.Value;
                row.OrderNbr           = soOrder.OrderNbr;
                row.OrderType          = soOrder.OrderType;
                row.CustomerLocationID = soOrder.CustomerLocationID;
                row.CustomerOrderNbr   = soOrder.CustomerOrderNbr;
                row.OrderDate          = soOrder.OrderDate;
                row.LineNbr            = soLine.LineNbr;
                row.InventoryID        = soLine.InventoryID;
                row.OpenQty            = soLine.OpenQty;
                row.OrderQty           = soLine.OrderQty;
                row.RequestDate        = soLine.RequestDate;
                row.CustomerPN         = soLine.AlternateID;
                row.CartonSize         = CSAnswers.PK.Find(this, InventoryItem.PK.Find(this, row.InventoryID).NoteID, SOShipmentEntry_Extension.CartonSize)?.Value;
            }

            LumShipmentPlan aggrShipPlan = SelectFrom <LumShipmentPlan> .Where <LumShipmentPlan.prodOrdID.IsEqual <@P.AsString> >
                                           .AggregateTo <Max <LumShipmentPlan.nbrOfShipment,
                                                              Max <LumShipmentPlan.endCartonNbr> > > .View.Select(this, row.ProdOrdID);

            row.NbrOfShipment  = aggrShipPlan.NbrOfShipment == null ? 1 : aggrShipPlan.NbrOfShipment + 1;
            row.StartCartonNbr = (aggrShipPlan.EndCartonNbr ?? 0) + 1;
        }