Automated Inventory Transfer on Job Operation Completion

When a particular group of jobs transfer the part to inventory they drop it into non-gettable Q bins (e.g. 01AQ). Once the QA operation is complete they need to have these moved to the nettle bins (01A). These locations are the same shelf. The ‘Q’ bin is just to ensure those items cannot be allocated to a sales order.

I have traced an inventory transfer to see what BO methods it uses :

InvTansferSvcContract

ChangeFromWhse
ChangeLot
ChangeFromBin
ChangeTransferQty
ChangeToWhse
ChangeToBin
PreCommitTransfer
CommitTransfer

Does anyone have code suggestions that would safely invoke the inventory transfer from the Data Directive or Method Directive?

Are you trying to move the WIP inventory between bins (Need AMM module for this) or receive the inventory to stock?

If trying to receive to stock, have you looked at the part method setting Auto receive

image

We receive into a non-nettable stock bin after one operation completes, we then need to move it to a nettable bin when the QA operation is completed (to save the QA department having to do the move manually). We will also need to sort out the material movement queue, but that is another issue.

The two bins 01A and 01AQ are the same physical location, just the Q bin is unable to be used in allocation and picking until after the QA operation completes.

Is the QA oper part of the job to make that part, ie. The last operation on the production job.

yes

The part is manufactured, moved to a warehouse location (‘01AQ’ bin non-nettable) with a sample being sent for testing (using advanced quality module). Last operation is the QA one when completed which we would like an automatic move to the nettable one (‘01A’).

do you want the WIP to move or the part to be received and available automatically?

We have an operation where the part is produced, moved to a warehouse location (‘01AQ’ - not nettable), a material movement is generated. When the QA operation is complete it the part needs to be moved to the nettable bin (‘01A’) but as it the two bins are at the same location the part does not need to physically move.

These are large containers that there is no space in the production are for them to wait for the QA operation to complete, but cannot be allocated to a sales order or job until the QA operation has completed (hence the nettable/non-nettable bins)

To complicate matters we may manually move them to a nettable bin to send them overseas with the QA to follow (nothing is simple here)

Thanks for you time

when you move the inventory before it has been received to Stk with a MFG-STK transaction, it is still in WIP.
you are basically moving between WIP bins. It doesnt matter if they are nettable or not.

If you want to automate getting the inventory into Stock, having it Auto receive (see earlier post) after the final op will trigger the MFG-STK transaction and if you have the output bin be that Non-Nettable bin, it should do what you want.
If you are just wanting to move WIP between a 2 bins, you can still control that with the output bin on the resource / groups.

Thanks,

We have the MFG-STK move and the part is physically move to the non-nettable bin.

When the QA operation after it is completed we want to the have it moved to the nettable in the same physical location .

Unless there is some way other than non-nettable bins to allow us to keep it from being allocated to an order?Cheers

Jim

here is the code

if (this.FromBin.EndsWith("Q"))
    {
        Erp.Contracts.InvTransferSvcContract svcInvTransfer = null;

        svcInvTransfer = Ice.Assemblies.ServiceRenderer.GetService<Erp.Contracts.InvTransferSvcContract>(Db);

        var dsInvTransfer = new Erp.Tablesets.InvTransferTableset();

        svcInvTransfer.GetInvTransferRecords(this.Part, dsInvTransfer);

        var ttInvTrans = (from r in dsInvTransfer.InvTrans select r).FirstOrDefault();
        if (ttInvTrans != null)
        {
            ttInvTrans.TranReference = "QC Bin Move for job " + this.JobNum;

            ttInvTrans.TransferQty = this.TransferQuantity;
            ttInvTrans.TrackingQty = this.TransferQuantity;
            ttInvTrans.RowMod = "U";

            svcInvTransfer.ChangeUOM(ref dsInvTransfer);

            ttInvTrans.FromWarehouseCode = this.Warehouse;
            svcInvTransfer.ChangeFromWhse(this.Warehouse, ref dsInvTransfer);

            ttInvTrans.FromBinNum = this.FromBin;
            svcInvTransfer.ChangeFromBin(this.FromBin, ref dsInvTransfer);

            ttInvTrans.ToWarehouseCode = this.Warehouse;
            svcInvTransfer.ChangeToWhse(this.Warehouse, ref dsInvTransfer);

            string strToBinNum = this.FromBin.Remove(this.FromBin.Length - 1, 1);
            ttInvTrans.ToBinNum = strToBinNum;
            svcInvTransfer.ChangeToBin(strToBinNum, ref dsInvTransfer);

            bool RequiresUserInput = false;

            svcInvTransfer.PreCommitTransfer(ref dsInvTransfer, out RequiresUserInput);
            ttInvTrans.RowMod = "U";
            string LegalNumberMessage, partTranPKs;

            svcInvTransfer.CommitTransfer(ref dsInvTransfer, out LegalNumberMessage, out partTranPKs);

            svcInvTransfer.Dispose();
            dsInvTransfer = null;

        }
    }

}

1 Like

Is this the correct way to invoke the inventory transfer, it crashes out one of the method calls?

You could have the last operation flag it as non conformance which would generate a move request through the material request queue. Once inspection has looked at it, then can then pass/fail and it would generate a move request through the material request queue again to put it where you want it.