Auto Create Receipt when Sales order is shipped (intercompany trading)

,

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.
1 Like