Monday, May 18, 2015

Agreement Creation API in R12


DECLARE

 out_return_status varchar2(1) := NULL;
 out_msg_count number := 0;
 out_msg_data varchar2(2000);

 in_Agreement_rec              OE_Pricing_Cont_PUB.Agreement_Rec_Type;
 in_Agreement_val_rec         OE_Pricing_Cont_PUB.Agreement_Val_Rec_Type;

 in_price_list_rec QP_PRICE_LIST_PUB.Price_List_Rec_Type;
 in_price_list_val_rec QP_PRICE_LIST_PUB.Price_List_Val_Rec_Type;

 in_price_list_line_tbl QP_PRICE_LIST_PUB.Price_List_Line_Tbl_Type;
 in_price_list_line_val_tbl QP_PRICE_LIST_PUB.Price_List_Line_Val_Tbl_Type;

 in_pricing_attr_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Tbl_Type;
 in_pricing_attr_val_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Val_Tbl_Type;

 out_Agreement_rec             OE_Pricing_Cont_PUB.Agreement_Rec_Type;
 out_Agreement_val_rec         OE_Pricing_Cont_PUB.Agreement_Val_Rec_Type;

 out_price_list_rec QP_PRICE_LIST_PUB.Price_List_Rec_Type;
 out_price_list_val_rec QP_PRICE_LIST_PUB.Price_List_Val_Rec_Type;

 out_price_list_line_tbl QP_PRICE_LIST_PUB.Price_List_Line_Tbl_Type;
 out_price_list_line_val_tbl QP_PRICE_LIST_PUB.Price_List_Line_Val_Tbl_Type;

 out_pricing_attr_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Tbl_Type;
 out_pricing_attr_val_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Val_Tbl_Type;

 K number := 1;
 j number := 1;

begin

--dbms_output.put_line('Creating an Agreement record');

-- Creating an Agreement record

--- Agreement creation rec

in_Agreement_rec.name :='Testing_123_ABC';
in_Agreement_rec.creation_date :=sysdate;
in_Agreement_rec.created_by := 1738;
in_Agreement_rec.last_update_date := sysdate;
in_Agreement_rec.last_updated_by := 1738;
in_Agreement_rec.agreement_type_code := 'STANDARD';
in_Agreement_rec.agreement_num := '2001- XMP2';
in_Agreement_rec.sold_to_org_id := 3801;
in_Agreement_rec.revision := '1';
in_Agreement_rec.revision_date := sysdate;
in_Agreement_rec.term_id := 1000;
in_Agreement_rec.OVERRIDE_IRULE_FLAG := 'Y';
in_Agreement_rec.OVERRIDE_ARULE_FLAG := 'Y';
in_Agreement_rec.agreement_id := FND_API.G_MISS_NUM;
in_Agreement_rec.operation    := QP_GLOBALS.G_OPR_CREATE;  


   /* set the list_header_id to g_miss_num */

----- Price List creaation rec

   in_price_list_rec.list_header_id := FND_API.G_MISS_NUM;
   in_price_list_rec.name := 'Testing_123_ABC';
   in_price_list_rec.list_type_code := 'AGR';
   in_price_list_rec.description := 'Testing_123_ABC';
   in_price_list_rec.currency_code := 'INR';
    --in_price_list_rec.QUALIFICATION_IND:=22;
   in_price_list_rec.operation := QP_GLOBALS.G_OPR_CREATE;
     

------ List Line creation rec

    in_price_list_line_tbl(1).list_line_id := FND_API.G_MISS_NUM;
    in_price_list_line_tbl(1).list_line_type_code := 'PLL';
    in_price_list_line_tbl(1).operation := QP_GLOBALS.G_OPR_CREATE;
    in_price_list_line_tbl(1).operand := 200;
    in_price_list_line_tbl(1).arithmetic_operator := 'UNIT_PRICE';
    in_price_list_line_tbl(1).REVISION_REASON_CODE:=100;
    in_price_list_line_tbl(1).QUALIFICATION_IND:=22;
    --    in_price_list_line_tbl(K).COMPARISON_OPERATOR_CODE:='-';

---- Price Attribute creation recc

 -----1st record

 --
    in_pricing_attr_tbl(1).pricing_attribute_id := FND_API.G_MISS_NUM;
    in_pricing_attr_tbl(1).list_line_id := FND_API.G_MISS_NUM;
    in_pricing_attr_tbl(1).PRODUCT_ATTRIBUTE_CONTEXT := 'ITEM';
    in_pricing_attr_tbl(1).PRODUCT_ATTRIBUTE := 'PRICING_ATTRIBUTE1';
    in_pricing_attr_tbl(1).PRODUCT_ATTR_VALUE := '100487';
    in_pricing_attr_tbl(1).PRODUCT_UOM_CODE := 'EA';
    in_pricing_attr_tbl(1).EXCLUDER_FLAG := 'N';
    in_pricing_attr_tbl(1).ATTRIBUTE_GROUPING_NO := 1;
    in_pricing_attr_tbl(1).comparison_operator_code := '=';
    in_pricing_attr_tbl(1).PRICE_LIST_LINE_INDEX := 1;
    in_pricing_attr_tbl(1).operation := QP_GLOBALS.G_OPR_CREATE;


  ---- 2nd price attribute record
    in_pricing_attr_tbl(2).pricing_attribute_id := FND_API.G_MISS_NUM;
    in_pricing_attr_tbl(2).list_line_id := FND_API.G_MISS_NUM;
    in_pricing_attr_tbl(2).PRODUCT_ATTRIBUTE_CONTEXT := 'ITEM';
    in_pricing_attr_tbl(2).PRODUCT_ATTRIBUTE := 'PRICING_ATTRIBUTE1';
    in_pricing_attr_tbl(2).PRODUCT_ATTR_VALUE := '100487';
    in_pricing_attr_tbl(2).PRODUCT_UOM_CODE := 'EA';
    in_pricing_attr_tbl(2).ATTRIBUTE_GROUPING_NO := 1;
    in_pricing_attr_tbl(2).PRICE_LIST_LINE_INDEX := 1;
    in_pricing_attr_tbl(2).pricing_attribute_context := 'PRICING ATTRIBUTE';
    in_pricing_attr_tbl(2).pricing_attribute := 'PRICING_ATTRIBUTE19';
    in_pricing_attr_tbl(2).PRICING_ATTRIBUTE_DATATYPE:='C';
    in_pricing_attr_tbl(2).pricing_attr_value_from := 200;
    in_pricing_attr_tbl(2).comparison_operator_code := '=';
    in_pricing_attr_tbl(2).operation := QP_GLOBALS.G_OPR_CREATE;
    in_pricing_attr_tbl(2).QUALIFICATION_IND:=22;



oe_debug_pub.add('Calling the process Agreements API');

   OE_Pricing_Cont_PUB.Process_Agreement
(   p_api_version_number            => 1.0
,   p_init_msg_list                 => FND_API.G_FALSE
,   p_return_values                 => FND_API.G_FALSE
,   p_commit                        => FND_API.G_FALSE
,   x_return_status                 => out_return_status
,   x_msg_count                     => out_msg_count
,   x_msg_data                      => out_msg_data
,   p_Agreement_rec                 => in_Agreement_rec
,   p_Price_LHeader_rec             => in_price_list_rec
,   p_Price_LLine_tbl               => in_price_list_line_tbl
,   p_Pricing_Attr_tbl              => in_pricing_attr_tbl
,   x_Agreement_rec                 => out_Agreement_rec
,   x_Agreement_val_rec             => out_Agreement_val_rec
,   x_Price_LHeader_rec             => out_price_list_rec
,   x_Price_LHeader_val_rec         => out_price_list_val_rec
,   x_Price_LLine_tbl             => out_price_list_line_tbl
,   x_Price_LLine_val_tbl         => out_price_list_line_val_tbl
,   x_Pricing_Attr_tbl              => out_pricing_attr_tbl
,   x_Pricing_Attr_val_tbl          => out_pricing_attr_val_tbl
);

dbms_output.put_line ('Status '||out_return_status);

  IF out_return_status <> FND_API.G_RET_STS_SUCCESS THEN

      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;

  END IF;

oe_debug_pub.add('after process agreement ');

EXCEPTION

    WHEN FND_API.G_EXC_ERROR THEN

        out_return_status := FND_API.G_RET_STS_ERROR;
        rollback;

        --  Get message count and data

        --dbms_output.put_line('err msg 1 is : ' || out_msg_data);

    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN

       out_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
        rollback;
       --dbms_output.put_line(' msg count 2 is : ' || out_msg_count);

       for k in 1 .. out_msg_count loop
             out_msg_data := oe_msg_pub.get( p_msg_index => k,
                                p_encoded => 'F'
                                                    );
           --  Get message count and data
           --dbms_output.put_line('err msg ' || k ||'is:  ' || out_msg_data);
          null;
       end loop;

   
    WHEN OTHERS THEN

        out_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
        rollback;

        --  Get message count and data
       --dbms_output.put_line('err msg 3 is : ' || out_msg_data);

    for k in 1 .. out_msg_count loop
        out_msg_data := oe_msg_pub.get( p_msg_index => k,
                         p_encoded => 'F'
                         );
    --  Get message count and data
    --dbms_output.put_line('err msg ' || k ||'is:  ' || out_msg_data);
    null;
    end loop;



end;
/