We are using Intercompany Trading and have had the request that when the sales order ships in company A to auto receive the PO in company B. I have used a UI company to change the company From A to B in Customer shipment entry, and passed a variable to a custom .p file.
My code returns no errors, but seems to be stopping at the first UpdateMaster call and it does not create the Header record.
{bo/Receipt/Receipt_ds.i}
{lib/globals.i}
define input parameter PackNum as character.
DEFINE VAR vPoNum AS INT NO-UNDO.
DEFINE VAR vendnum AS INT NO-UNDO.
DEFINE VAR purPoint AS CHARACTER NO-UNDO.
DEFINE VAR cLCAmtMessage AS CHARACTER NO-UNDO.
DEFINE VAR opUpliftWarnMsg AS CHARACTER NO-UNDO.
DEFINE VAR opReceiptWarnMsg AS CHARACTER NO-UNDO.
DEFINE VAR opArriveWarnMsg AS CHARACTER NO-UNDO.
DEFINE VAR qMessageStr AS CHARACTER NO-UNDO.
DEFINE VAR sMessageStr AS CHARACTER NO-UNDO.
DEFINE VAR lcMessageStr AS CHARACTER NO-UNDO.
DEFINE VAR qDtlComplianceMsgStr AS CHARACTER NO-UNDO.
DEFINE VAR lCompliant AS LOGICAL NO-UNDO.
DEFINE VAR lRequiresUserInput AS LOGICAL NO-UNDO.
DEFINE VAR lUpdateWasRun AS LOGICAL NO-UNDO.
DEFINE VAR serialWarning AS CHARACTER NO-UNDO.
DEFINE VAR warnMsg AS CHARACTER NO-UNDO.
MESSAGE '=====================Starting Create Receipt==================='.
DEFINE VAR hReceipt AS HANDLE NO-UNDO.
IF NOT VALID-HANDLE(hReceipt) THEN DO:
RUN bo/Receipt/Receipt.p PERSISTENT SET hReceipt no-error.
MESSAGE 'hReceipt handle created'.
END.
FOR EACH shiphead WHERE shiphead.company='MJP' AND shiphead.packnum=INT(PackNum) /*AND shiphead.checkbox02 = false*/ EXCLUSIVE-LOCK.
FOR FIRST shipdtl NO-LOCK WHERE shipdtl.company= shiphead.company AND shipdtl.packnum=shiphead.packnum,
FIRST orderdtl NO-LOCK WHERE orderdtl.company = shipdtl.company AND orderdtl.ordernum= shipdtl.ordernum AND orderdtl.orderline= shipdtl.orderline.
vPoNum = orderdtl.icponum.
END.
MESSAGE STRING(vPoNum).
RUN GetNewRcvHead IN hReceipt ({&input-output_dataset_ReceiptDataSet}, INPUT vendnum, INPUT purPoint) NO-ERROR.
RUN GetPOInfo IN hReceipt ({&input-output_dataset_ReceiptDataSet}, INPUT vPoNum, OUTPUT vendnum, OUTPUT purPoint) NO-ERROR.
MESSAGE STRING(vendnum).
MESSAGE purPoint.
RUN GetNewRcvHead IN hReceipt ({&input-output_dataset_ReceiptDataSet}, INPUT vendnum, INPUT purPoint) NO-ERROR.
FOR FIRST ttrcvhead WHERE ttrcvhead.rowmod='A' NO-LOCK.
MESSAGE 'ttrcvhead found'.
ttrcvhead.Packslip = string(shiphead.packnum).
end.
RUN UpdateMaster IN hReceipt (INPUT TRUE, INPUT TRUE, INPUT 0, INPUT "", INPUT STRING(shiphead.packnum), INPUT 0, OUTPUT cLCAmtMessage, OUTPUT opUpliftWarnMsg, OUTPUT opReceiptWarnMsg,OUTPUT opArriveWarnMsg , INPUT FALSE,OUTPUT qMessageStr, OUTPUT sMessageStr, OUTPUT lcMessageStr ,INPUT FALSE, OUTPUT qDtlComplianceMsgStr,INPUT FALSE,OUTPUT lCompliant ,INPUT TRUE,OUTPUT lRequiresUserInput ,INPUT FALSE, INPUT "", INPUT "", INPUT TRUE,OUTPUT lUpdateWasRun,{&input-output_dataset_ReceiptDataSet} ) NO-ERROR.
FOR EACH shipdtl WHERE shipdtl.company= shiphead.company AND shipdtl.packnum=shiphead.packnum /*AND shipdtl.checkbox01=FALSE*/ EXCLUSIVE-LOCK.
FOR EACH orderdtl NO-LOCK WHERE orderdtl.company = shipdtl.company AND orderdtl.ordernum= shipdtl.ordernum AND orderdtl.orderline= shipdtl.orderline,
EACH orderhed NO-LOCK WHERE orderhed.company = orderdtl.company AND orderhed.ordernum=orderdtl.ordernum.
RUN GetNewRcvDtl IN hReceipt ({&input-output_dataset_ReceiptDataSet}, INPUT vendnum, INPUT purPoint, INPUT STRING(shipdtl.packnum)) NO-ERROR.
RUN GetDtlPOLineInfo IN hReceipt ({&input-output_dataset_ReceiptDataSet},INPUT vendnum, INPUT purPoint, INPUT STRING(shipdtl.packnum), INPUT 0, INPUT orderdtl.ICPOLine, OUTPUT serialWarning ) NO-ERROR.
RUN GetDtlQtyInfo IN hReceipt ({&input-output_dataset_ReceiptDataSet},INPUT vendnum, INPUT purPoint, INPUT STRING(shipdtl.packnum), INPUT 0, INPUT shipdtl.SellingInventoryShipQty, INPUT "", INPUT "QTY", OUTPUT warnMsg ) NO-ERROR.
RUN OnChangeDtlReceived IN hReceipt (INPUT vendnum, INPUT purPoint, INPUT STRING(shipdtl.packnum), INPUT 0, INPUT TRUE,{&input-output_dataset_ReceiptDataSet} ) NO-ERROR.
RUN UpdateMaster IN hReceipt (INPUT TRUE, INPUT TRUE,INPUT vendnum, INPUT purPoint , INPUT STRING(shipdtl.packnum), INPUT 0, OUTPUT cLCAmtMessage, OUTPUT opUpliftWarnMsg, OUTPUT opReceiptWarnMsg,OUTPUT opArriveWarnMsg , INPUT True,OUTPUT qMessageStr, OUTPUT sMessageStr, OUTPUT lcMessageStr ,INPUT FALSE, OUTPUT qDtlComplianceMsgStr,INPUT FALSE,OUTPUT lCompliant ,INPUT TRUE,OUTPUT lRequiresUserInput ,INPUT FALSE, INPUT shipdtl.partnum, INPUT "",INPUT TRUE, OUTPUT lUpdateWasRun,{&input-output_dataset_ReceiptDataSet} ) NO-ERROR.
END.
shipdtl.checkbox01 = TRUE.
END.
shiphead.checkbox02 = TRUE.
END.
DELETE OBJECT hReceipt NO-ERROR.