Recently we had the requirement to disable the direct MR to PR automation. so instead of
creating direct PR from MR, the users will select a store on material requisition to reserve material
from store. When the MR is approved, the inventory usage is created from MR.
If the material is available in-store, storeroom will issue the material otherwise he clicks the option
to create Purchase Requisition (PR) from inventory usage.
So we developed this new functionality.
Note: This script contains a few custom attributes. I have commented those line, In your case please remove them.
Step 1:
First Add new Status for Inventory Usage Application: PR_CREATED
Step 2: Create Automation Script
Launch Point: ACTION
Object: INVUSE
Variable: v_mr
Binding Value: INVUSELINE[MRNUM is null].MRNUM*
Relations: INVUSE --> INVUSELINE -->MRNUM (child object:MR, mrnum=:mrnum)
Body:
from psdi.security import UserInfo
from psdi.mbo import MboServerInterface
from psdi.server import MXServer
if v_mr is None and mbo.getString("STATUS") !="PR_CREATED":
mxServer = MXServer.getMXServer()
userInfo = mbo.getUserInfo()
prSet= mxServer.getMboSet("PR", userInfo );
prSet.add()
if mbo.isNull('INVUSELINE.WONUM'):
prSet.setValue("description" , "PR Created for" + mbo.getString("INVUSELINE.MRNUM") + " and Inv. Usage: "+ mbo.getString("INVUSENUM") )
else:
prSet.setValue("description" , "PR Created for " + mbo.getString("INVUSELINE.MRNUM")+ ", Workorder: "+ mbo.getString("INVUSELINE.WONUM") + ", Inv. Usage: "+ mbo.getString("INVUSENUM") )
#prSet.setValue("SERVICEPROVIDER" ,mbo.getString("SP"))
#prSet.setValue("invusenum" ,mbo.getString("INVUSENUM"))
#prSet.setValue("CONTRACT" , mbo.getString("SPCONTRACT"))
#prSet.setValue("SERVICECODE" , mbo.getString("SERVICECODE"))
prSet.setValue("REQUESTEDBY" , mbo.getString("INVUSELINE.MRNUM.REQUESTEDBY"))
#----------------------------------------------------
InvuselineSet = mbo.getMboSet("INVUSELINE")
inuseline = InvuselineSet.moveFirst()
while (inuseline):
prLines= prSet.getMbo(0).getMboSet("PRLINE");
prLines.add(2l);
prLines.setValue("ITEMNUM" , inuseline.getString("ITEMNUM"))
prLines.setValue("LINETYPE" , inuseline.getString("LINETYPE"))
prLines.setValue("DESCRIPTION" , inuseline.getString("DESCRIPTION"))
prLines.setValue("ORDERQTY" , inuseline.getDouble("QUANTITY"))
prLines.setValue("UNITCOST" , inuseline.getDouble("UNITCOST"))
prLines.setValue("STORELOC" , inuseline.getString("FROMSTORELOC"))
# prLines.setValue("ORDERUNIT" , inuseline.getString("ORDERUNIT"))
prLines.setValue("CONVERSION" , 1)
prLines.setValue("ENTERBY" , "MAXADMIN")
prLines.setValue("REQUESTEDBY" ,mbo.getString("INVUSELINE.MRNUM.REQUESTEDBY"))
# prLines.setValue("PROJECT" , inuseline.getString("PROJECT"))
# prLines.setValue("TASK" , inuseline.getString("TASK"))
inuseline = InvuselineSet.moveNext()
prSet.save()
mbo.changeStatus("PR_CREATED", MXServer.getMXServer().getDate(), '');
mbo.getThisMboSet().save()
Step 3:
Now Go to Application designer and Add a signature option with the same name as action script and then add the select option with the same name also.
Provide access to maxeveryone group for this signature. The option will be ready now.
No comments:
Post a Comment