Auto-generate Customer Shipment from Picked orders

I am hoping for some coding genius advice here.
I am trying to create a function that when I enter a sales order number on a customer shipment entry screen, it fetches the “Picked” lines without having to go through that extra step.

this is the code…and we get no records selected, although records do exist…Any ideas would be appreciated.

/* Customizing Customer Shipment Entry form */

PickedOrdersAdapter pAdp = new PickedOrdersAdapter(oTrans);
pAdp.BOConnect();
bool ob = false;

SearchOptions opts = new SearchOptions(SearchMode.AutoSearch);
opts.DataSetMode = DataSetMode.RowsDataSet;
opts.PreLoadSearchFilter = “OrderNum = 2187”; // 4 lines exist in PickedOrder table
pAdp.InvokeSearch(opts);
if (pAdp.PickedOrdersData.PickedOrders.Count > 0)
{
string vMsg = “”;
CustShipAdapter cAdp = (CustShipAdapter) oTrans_adapter;
CustShipPickedOrdersDataSet csds = new CustShipPickedOrdersDataSet();
int i = 0;
var row = csds.PickedOrders.NewRow();
row[“Company”] = pAdp.PickedOrdersData.PickedOrders[i].Company;
row[“Plant”] = pAdp.PickedOrdersData.PickedOrders[i].Plant;
row[“OrderNum”] = pAdp.PickedOrdersData.PickedOrders[i].OrderNum;
row[“OrderLine”] = pAdp.PickedOrdersData.PickedOrders[i].OrderLine;
row[“OrderRelNum”] = pAdp.PickedOrdersData.PickedOrders[i].OrderRelNum;
row[“WarehouseCode”] = pAdp.PickedOrdersData.PickedOrders[i].WarehouseCode;
row[“BinNum”] = pAdp.PickedOrdersData.PickedOrders[i].BinNum;
row[“SupplyJobNum”] = pAdp.PickedOrdersData.PickedOrders[i].SupplyJobNum;
row[“LotNum”] = pAdp.PickedOrdersData.PickedOrders[i].LotNum;
row[“Quantity”] = pAdp.PickedOrdersData.PickedOrders[i].Quantity;
row[“UOM”] = pAdp.PickedOrdersData.PickedOrders[i].UOM;
row[“ReqDate”] = pAdp.PickedOrdersData.PickedOrders[i].ReqDate;
row[“CustNum”] = pAdp.PickedOrdersData.PickedOrders[i].CustNum;
row[“ShipToNum”] = pAdp.PickedOrdersData.PickedOrders[i].ShipToNum;
row[“ShipViaCode”] = pAdp.PickedOrdersData.PickedOrders[i].ShipViaCode;
row[“PartNum”] = pAdp.PickedOrdersData.PickedOrders[i].PartNum;
row[“Complete”] = pAdp.PickedOrdersData.PickedOrders[i].Complete;
row[“BTCustNum”] = pAdp.PickedOrdersData.PickedOrders[i].BTCustNum;
row[“BTConNum”] = pAdp.PickedOrdersData.PickedOrders[i].BTConNum;
row[“ShipToCustNum”] = pAdp.PickedOrdersData.PickedOrders[i].ShipToCustNum;
row[“SysRevID”] = pAdp.PickedOrdersData.PickedOrders[i].SysRevID;
row[“SysRowID”] = pAdp.PickedOrdersData.PickedOrders[i].SysRowID;
row[“PCID”] = pAdp.PickedOrdersData.PickedOrders[i].PCID;
row[“ConInvMeth”] = pAdp.PickedOrdersData.PickedOrders[i].ConInvMeth;
row[“HoldPrdInv”] = pAdp.PickedOrdersData.PickedOrders[i].HoldPrdInv;
row[“IsSelected”] = true;
row[“IsVisible”] = pAdp.PickedOrdersData.PickedOrders[i].IsVisible;
row[“OTSAddr”] = pAdp.PickedOrdersData.PickedOrders[i].OTSAddr;
row[“ProjectID”] = pAdp.PickedOrdersData.PickedOrders[i].ProjectID;
row[“ParentPCID”] = pAdp.PickedOrdersData.PickedOrders[i].ParentPCID;
row[“BitFlag”] = pAdp.PickedOrdersData.PickedOrders[i].BitFlag;
row[“BinNumDescription”] = pAdp.PickedOrdersData.PickedOrders[i].BinNumDescription;
row[“CustNumName”] = pAdp.PickedOrdersData.PickedOrders[i].CustNumName;
row[“CustNumBTName”] = pAdp.PickedOrdersData.PickedOrders[i].CustNumBTName;
row[“CustNumCustID”] = pAdp.PickedOrdersData.PickedOrders[i].CustNumCustID;
row[“OrderLineLineDesc”] = pAdp.PickedOrdersData.PickedOrders[i].OrderLineLineDesc;
row[“OrderNumCurrencyCode”] = pAdp.PickedOrdersData.PickedOrders[i].OrderNumCurrencyCode;
row[“OrderNumCardMemberName”] = pAdp.PickedOrdersData.PickedOrders[i].OrderNumCardMemberName;
row[“PartNumTrackDimension”] = pAdp.PickedOrdersData.PickedOrders[i].PartNumTrackDimension;
row[“PartNumTrackSerialNum”] = pAdp.PickedOrdersData.PickedOrders[i].PartNumTrackSerialNum;
row[“PartNumSellingFactor”] = pAdp.PickedOrdersData.PickedOrders[i].PartNumSellingFactor;
row[“PartNumPartDescription”] = pAdp.PickedOrdersData.PickedOrders[i].PartNumPartDescription;
row[“PartNumTrackLots”] = pAdp.PickedOrdersData.PickedOrders[i].PartNumTrackLots;
row[“PartNumIUM”] = pAdp.PickedOrdersData.PickedOrders[i].PartNumIUM;
row[“PartNumPricePerCode”] = pAdp.PickedOrdersData.PickedOrders[i].PartNumPricePerCode;
row[“PartNumSalesUM”] = pAdp.PickedOrdersData.PickedOrders[i].PartNumSalesUM;
row[“ShipViaCodeWebDesc”] = pAdp.PickedOrdersData.PickedOrders[i].ShipViaCodeWebDesc;
row[“ShipViaCodeDescription”] = pAdp.PickedOrdersData.PickedOrders[i].ShipViaCodeDescription;
row[“WarehouseCodeDescription”] = pAdp.PickedOrdersData.PickedOrders[i].WarehouseCodeDescription;
row[“RowMod”] = “U”;
csds.PickedOrders.Rows.Add(row);
cAdp.ProcessPickedOrder(false, out vMsg, csds); // *** returns “No Orders were selected” ***

}

1 Like

I believe you can do this by without code by using Actions->Picked Orders under Customer Shipment Entry. From there you can created a pack from picked orders.

Vinay Kamboj

That is the function I am attempting to automate.

Andrew Fagan
afagan@sonasgrp.com
617-335-0505

I just reviewed this internally and wanted to provide an answer.

When you work with DataSets you cannot specify the RowMod directly as if you were working with TableSets only(server only).

After adding the row you need to call AcceptChanges and then modify the row in any way you want, so the DataRow state goes like this: Detached -> Added -> Unchanged -> Modified.

The DataSet is then copied into a TableSet and two rows will arrive to the server, the original one with RowMod empty and the modified one with RowMod U, ProcessPickedOrder will process the row with RowMod U.