Question

Auto report Qty only on receipt of shop order

  • 4 October 2023
  • 3 replies
  • 124 views

Userlevel 1
Badge +4

Apps 10 UPD 18

 

Currently we manually( via IFS partner integration) receive shop orders, both to handling units and to loose stock. We are utilizing the API Shop_Ord_API.Receive_Part__. In using shop floor work bench, the users start and stop production, and approve operations(labor/machine time and qty).

We want to change this to auto report Qty. 

Steps we’ve taken:

  1. Changed the flag on receive part - Auto Report Operation to True.
  2. On the work center - set the Auto Report Labor/Machine time with qty to Never.
  3. Allow Over reporting on inventory part-Manufacturing.

The qty is correctly reporting to the operation for each shop order receipt. However, if we over produce(go over the Lot Size) the operation clocking gets stopped, and the time is reported. 

 

Again - it works perfect until we hit our lot size, which we do more often than not. Surely there must be a setting we’re missing to never report time on shop order receipt and to allow the clockings to continue until manually stopped.

 

Thanks!


3 replies

Userlevel 7
Badge +23

The clocking is probably stopped since the operations becomes closed as a result of reporting full or higher quantity on them. Maybe integration can be rewritten to first report the operation quantity (corresponding to approve) and then sending the Close Operation as false to make sure the operation remain open. Then perform the receive (without using Auto Report)? 

Userlevel 1
Badge +4

 

 

 

The clocking is probably stopped since the operations becomes closed as a result of reporting full or higher quantity on them. Maybe integration can be rewritten to first report the operation quantity (corresponding to approve) and then sending the Close Operation as false to make sure the operation remain open. Then perform the receive (without using Auto Report)? 

 

This seems like it should be an option that we’re just over looking. And just for clarity - the operation does not close, but the clockings do stop.

The Receive Part API has 2 parameters regarding Operations.

1 is Auto Report( The checkbox on the receive Shop Order screen) which we are sending as True.

The other is Auto Close which we are sending as False.

Userlevel 1
Badge +4

I have found the line of code that is not being addressed.
 

Problem originates on Line 15821 of SHOP_ORDER_OPERATION_API

  1. Variable do_not_close is declared
    1. do_not_close_             VARCHAR2(10);
  2. A debug session reveals that do_not_close is not part of attr_ before the binding, or after. Line 15967 variable do_not_close_ is bound as:

do_not_close_             := Client_SYS.Cut_Item_Value('DO_NOT_CLOSE',

                                                             attr_);

 

  1. Passing do_not_close_ as NULL to SHOP_ORDER_OPERATION_LIST_API.Verify_Status will default to FALSE on line 2625 thus return Oper_Status_Code_API.DB_CLOSED
  2. Code then continues - on Shop_order_operation_api.Update___ line 17189
    1.  Since op_closed_db_ was returned closed from above, and clocking_seq is null because this is a Qty only report, and clockings do exist, as the operation is still in process - causing this was hitting trigger the Stop_operation call everytime as seen below.

IF ((newrec_.oper_status_code = op_closed_db_) AND

         (clocking_seq_ IS NULL) AND (Shop_Oper_Clocking_Util_API.Check_Active_Clk_Exist(newrec_.order_no,

                                                                                          newrec_.release_no,

                                                                                          newrec_.sequence_no,

                                                                                          newrec_.operation_no) =

         'TRUE')) THEN

        Shop_Oper_Clocking_Util_API.Stop_Operation.

 

Below is the fix that works for us, as a business we will never use Auto Close of an operation at any of our facilities.

 

Shop_order_operation_api

Check_Update__

 

Approx. line #: 16582

 

 

IF (vrec_.reported_mach_setup_time != 0) OR

         (vrec_.reported_mach_time != 0) OR (vrec_.reported_qty != 0) OR

         (vrec_.reported_labor_setup_time != 0) OR

         (vrec_.reported_labor_time != 0) OR

         (newrec_.revised_qty_due > oldrec_.revised_qty_due) OR

         ((newrec_.revised_qty_due < oldrec_.revised_qty_due) AND

         (oldrec_.oper_status_code != '90')) THEN

        ----The only code that gets changed for this fix

        do_not_close_            := 'TRUE';

        newrec_.oper_status_code := Shop_Order_Operation_List_API.Verify_Status(newrec_.order_no,

                                                                                newrec_.release_no,

                                                                                newrec_.sequence_no,

                                                                                newrec_.operation_no,

                                                                                vrec_.reported_mach_setup_time,

                                                                                vrec_.reported_mach_time,

                                                                                vrec_.reported_qty,

                                                                                vrec_.reported_scrap_qty,

                                                                                vrec_.reported_labor_setup_time *

                                                                                NVL(reported_setup_crew_size_,

                                                                                    newrec_.setup_crew_size),

                                                                                vrec_.reported_labor_time *

                                                                                NVL(reported_crew_size_,

                                                                                    newrec_.crew_size),

                                                                                do_not_close_,

                                                                                newrec_.oper_status_code,

                                                                                newrec_.revised_qty_due);

     

        IF (Shop_Ord_API.Get_State_Db(newrec_.order_no,

                                      newrec_.release_no,

                                      newrec_.sequence_no) = 'Parked') THEN

          IF (newrec_.oper_status_code != op_closed_db_) THEN

            newrec_.oper_status_code := '60';

          END IF;

        END IF;

     

      END IF;

 

 

Reply