Customer shipment entry Packslip Serial Number creation using BPM

The serial numbers need to end up into your CustShip dataset - in your case is CT.SelectedSerialNumbers (I used tsCustShip instead of CT). Here is what I did:

First, I use the SelectedSerialNumbersSvcContract to create the table with all the serials (note below is from a function). Something like this (I have the serials incoming from a 3rd party system in a string vSerials separated by commas):

        // call ssn service
        this.CallService<Erp.Contracts.SelectedSerialNumbersSvcContract>(ssnc => {
          // get sn format
          ssnc.GetSerialNumFormat(ref tsSelSerials, vPartNo, String.Empty, String.Empty, 0, "yourplanthere");
          
          // split the serials string by ,
          tstr = ",";
          char[] splto = tstr.ToCharArray();
          string[] snos = vSerials.Split(splto, System.StringSplitOptions.RemoveEmptyEntries);
          
          // add each serial to the tableset
          int acnt = 0;
          foreach (string sno in snos)
          {
            ssnc.AddSerialNum(ref tsSelSerials, vPartNo, String.Empty, String.Empty, 0, sno, Guid.Empty.ToString(), "STK-PCK", "yourplanthere");
            acnt = acnt + 1;
          }

Note that the SelectedSerialNumbers.SelectedSerialNumbers is NOT the same as CustShip.SelectedSerialNumbers. So, just before I call the second UpdateMaster to save the line, I populate the serials in the CustShip dataset based on the one above:

// copy all selected serials to custship tableset
        for (int i=0; i<tsSelSerials.SelectedSerialNumbers.Count; i++)
        {
          var ssnrow = tsCustShip.SelectedSerialNumbers.NewRow();
          ssnrow["Company"] = tsSelSerials.SelectedSerialNumbers[i].Company;
          ssnrow["SerialNumber"] = tsSelSerials.SelectedSerialNumbers[i].SerialNumber;
          ssnrow["Scrapped"] = tsSelSerials.SelectedSerialNumbers[i].Scrapped;
          ssnrow["ScrappedReasonCode"] = tsSelSerials.SelectedSerialNumbers[i].ScrappedReasonCode;
          ssnrow["Voided"] = tsSelSerials.SelectedSerialNumbers[i].Voided;
          ssnrow["Reference"] = tsSelSerials.SelectedSerialNumbers[i].Reference;
          ssnrow["ReasonCodeType"] = tsSelSerials.SelectedSerialNumbers[i].ReasonCodeType;
          ssnrow["ReasonCodeDesc"] = tsSelSerials.SelectedSerialNumbers[i].ReasonCodeDesc;
          ssnrow["PartNum"] = tsSelSerials.SelectedSerialNumbers[i].PartNum;
          ssnrow["SNPrefix"] = tsSelSerials.SelectedSerialNumbers[i].SNPrefix;
          ssnrow["SNBaseNumber"] = tsSelSerials.SelectedSerialNumbers[i].SNBaseNumber;
          ssnrow["SourceRowID"] = Guid.Empty; //tsSelSerials.SelectedSerialNumbers[i].SourceRowID;
          ssnrow["TransType"] = tsSelSerials.SelectedSerialNumbers[i].TransType;
          ssnrow["PassedInspection"] = tsSelSerials.SelectedSerialNumbers[i].PassedInspection;
          ssnrow["Deselected"] = tsSelSerials.SelectedSerialNumbers[i].Deselected;
          ssnrow["KitWhseList"] = tsSelSerials.SelectedSerialNumbers[i].KitWhseList;
          ssnrow["RawSerialNum"] = tsSelSerials.SelectedSerialNumbers[i].RawSerialNum;
          ssnrow["KBLbrAction"] = tsSelSerials.SelectedSerialNumbers[i].KBLbrAction;
          ssnrow["KBLbrActionDesc"] = tsSelSerials.SelectedSerialNumbers[i].KBLbrActionDesc;
          ssnrow["PreventDeselect"] = tsSelSerials.SelectedSerialNumbers[i].PreventDeselect;
          ssnrow["XRefPartNum"] = tsSelSerials.SelectedSerialNumbers[i].XRefPartNum;
          ssnrow["XRefPartType"] = tsSelSerials.SelectedSerialNumbers[i].XRefPartType;
          ssnrow["PreDeselected"] = tsSelSerials.SelectedSerialNumbers[i].PreDeselected;
          ssnrow["poLinkValues"] = tsSelSerials.SelectedSerialNumbers[i].poLinkValues;
          ssnrow["SNMask"] = tsSelSerials.SelectedSerialNumbers[i].SNMask;
          ssnrow["NotSavedToDB"] = tsSelSerials.SelectedSerialNumbers[i].NotSavedToDB;
          ssnrow["RowSelected"] = tsSelSerials.SelectedSerialNumbers[i].RowSelected;
          ssnrow["SysRowID"] = Guid.Empty; //tsSelSerials.SelectedSerialNumbers[i].SysRowID;
          ssnrow["RowMod"] = "A";
          tsCustShip.SelectedSerialNumbers.Add(ssnrow);
        }

Or you could just create the serials directly into the CustShip dataset (if possible or easier for you).

2 Likes