Module DUPBPO.PKG

     1// Create a Duplicate Order based on passed item. Use current
     2// Invt pricing (and not original order pricing).
     3//
     4// access method is:
     5//
     6// Send DoDuplicateOrder of DuplicateOrder iOrderRec
     7//
     8
     9Object DuplicateOrder is a BusinessProcess
    10    Set Status_Panel_State to False
    11    set display_Error_State to true
    12
    13    // create minimal source DD structure
    14    Object Source_Orderhea_DD is a Orderhea_DataDictionary
    15    End_Object    // Orderhea_DD
    16
    17    Object Source_Orderdtl_DD is a ORDERDTL_DataDictionary
    18        Set DDO_Server to (Source_Orderhea_DD(self))
    19        Set Constrain_File to Orderhea.File_Number
    20    End_Object    // Orderdtl_DD
    21
    22    // create full destination DD structure
    23    Object Vendor_DD is a VENDOR_DataDictionary
    24    End_Object    // Vendor_DD
    25
    26    Object Invt_DD is a INVT_DataDictionary
    27        Set DDO_Server to (Vendor_DD(self))
    28    End_Object    // Invt_DD
    29
    30    Object Customer_DD is a CUSTOMER_DataDictionary
    31    End_Object    // Customer_DD
    32
    33    Object Salesp_DD is a SALESP_DataDictionary
    34    End_Object    // Salesp_DD
    35
    36    Object Orderhea_DD is a Orderhea_DataDictionary
    37        Set DDO_Server to (Customer_DD(self))
    38        Set DDO_Server to (Salesp_DD(self))
    39    End_Object    // Orderhea_DD
    40
    41    Object Orderdtl_DD is a ORDERDTL_DataDictionary
    42        Set DDO_Server to (Orderhea_DD(self))
    43        Set DDO_Server to (Invt_DD(self))
    44        Set Constrain_File to Orderhea.File_Number
    45    End_Object    // Orderdtl_DD
    46
    47    Procedure DoOneDtl
    48        integer hDtlDD hInvtDD hSrcDD bErr iQty
    49        number nPrice
    50        Move Source_OrderDtl_DD to hSrcDD
    51        Move OrderDtl_DD to hDtlDD
    52        Move Invt_DD to hInvtDD
    53        Send Clear of hDtlDD
    54        Get Field_Current_Value of hSrcDD field orderdtl.item_Id to Invt.Item_id
    55        Send Find of hInvtDD EQ 1
    56        If (Found) Begin
    57            Get field_Current_Value of hSrcDD FIELD Orderdtl.Qty_Ordered to iQty
    58            Set field_Changed_Value of hDtlDD FIELD Orderdtl.Qty_Ordered to iQty
    59            Get field_current_Value of hInvtDD Field Invt.unit_price to nPrice
    60            Set field_Changed_Value of hDtlDD FIELD Orderdtl.Price to nPrice
    61            Get Request_Validate of hDtlDD to bErr
    62            if not bErr Send request_save of hDtlDD
    63            Send Log_Status ("Adding dtl" * string(Orderhea.Order_number) * string(Orderdtl.Detail_Number))
    64        End
    65    End_Procedure
    66
    67    Procedure OnProcess
    68        date    today
    69        integer hOrdDD hSrcOrdDD hSrcDtlDD
    70        integer bErr
    71
    72        Move OrderHea_DD        to hOrdDD
    73        Move Source_OrderHea_DD to hSrcOrdDD
    74        Move Source_OrderDtl_DD to hSrcDtlDD
    75
    76        Send Clear of hOrdDD
    77        Send Refind_records of hSrcOrdDD
    78        Begin_transaction
    79          Send request_assign of hOrdDD Customer.File_Number
    80          Send request_assign of hOrdDD Salesp.File_Number
    81          Sysdate today
    82          Set Field_Changed_Value of hOrdDD Field ORDERHEA.ORDER_DATE to Today
    83          Set Field_Changed_Value of hOrdDD Field ORDERHEA.Terms to ORDERHEA.TERMS
    84          Set Field_Changed_Value of hOrdDD Field ORDERHEA.Ship_Via to ORDERHEA.Ship_Via
    85          Set Field_Changed_Value of hOrdDD Field ORDERHEA.Ordered_by to ORDERHEA.Ordered_By
    86          Get Request_Validate of hOrdDD to bErr
    87          if not bErr Send request_save of hOrdDD
    88
    89          Send Refind_records of hSrcOrdDD
    90          Send Find of hSrcDtlDD First_Record 1
    91          While (found)
    92                Send DoOneDtl
    93                Send Refind_records of hSrcDtlDD
    94                Send Find of hSrcDtlDD GT 1
    95          Loop
    96        End_Transaction
    97    End_Procedure
    98
    99    function DoDuplicateOrder integer iOrder returns integer
   100        integer hSrcHeaDD iRec
   101        Move Source_OrderHea_DD to hSrcHeaDD
   102        Move iOrder to OrderHea.Recnum
   103        Send find of hSrcHeaDD eq 0
   104        If (current_record(hSrcHeaDD)=0) Function_return 0
   105        Send DoProcess
   106        Get Current_record of OrderHea_DD to iRec
   107        Function_return iRec
   108    End_Procedure
   109
   110
   111End_Object
   112