Tuesday, 19 April 2011

GL INTERFACE CODE


             GL INTERFACE CODE                                                        
                                                                     
                                                                     
                                             
CREATE OR REPLACE PROCEDURE  GE_Pro(Errbuf  OUT VARCHAR2,
                                                       Retcode OUT VARCHAR2) IS
  -- cursor declaration
  CURSOR gl_cur IS
    SELECT  
        status    ,
        set_of_books_id   ,
        accounting_date   ,
        currency   ,
        date_created   ,
        created_by    ,
        actual_flag    ,
        category       ,
        source     ,
        curr_conversion     ,
          segment1     ,
          segment2        ,
          segment3        ,
          segment4        ,
          segment5        ,
          entered_dr      ,
          entered_cr      ,
          accounted_dr    ,
          accounted_cr    ,
          group_id        
          FROM VENKAT_GL_INBOUND_INTERFACE;
l_currencycode VARCHAR2(25);
l_set_of_books_id NUMBER(3);
l_flag         VARCHAR2(2);
l_error_msg    VARCHAR2(100);
l_err_flag     VARCHAR2(10);
l_category     VARCHAR2(100);
L_USERID       NUMBER(10);
BEGIN
 DELETE FROM  gl_interface;
 COMMIT;
FOR rec_cur IN gl_cur LOOP
     l_flag:='A';
     l_err_flag:='A';
--This  PL/SQL Block will do the currency validation
 --end of the currency validation
--Category Column Validation
BEGIN
 SELECT USER_JE_CATEGORY_NAME
 INTO   l_CATEGORY
 FROM   GL_JE_CATEGORIES
 WHERE  USER_JE_CATEGORY_NAME = REC_CUR.Category;
 EXCEPTION
     WHEN OTHERS THEN
            l_category:=NULL;
            l_flag:='E';
            l_error_msg:='Category does not exist ';
 END;
Fnd_File.put_line (Fnd_File.LOG,'Inserting data into the Interface TABLE'||L_FLAG);
 --End Category Column Validation
 --User ID column validation
BEGIN
SELECT USER_ID
INTO   L_USERID
FROM   FND_USER
WHERE  USER_ID = REC_CUR.created_by;
EXCEPTION
WHEN OTHERS THEN
            L_userid:=NULL;
            l_flag:='E';
            l_error_msg:='User ID does not exist ';
 END;
 Fnd_File.put_line (Fnd_File.LOG,'Inserting data into the Interface TABLE'||L_FLAG);
 --End of Created_by OR UserID column Validation
 --Set of  books Validation
 BEGIN
     SELECT set_of_books_id
     INTO   l_set_of_books_id
     FROM   GL_SETS_OF_BOOKS
     WHERE set_of_books_id=rec_cur.set_of_books_id;
     EXCEPTION
     WHEN OTHERS THEN
            l_set_of_books_id:=NULL;
            l_flag:='E';
            l_error_msg:='set of Books ID does not exist ';
 END;
 Fnd_File.put_line (Fnd_File.LOG,'Inserting data into the Interface TABLE'||L_FLAG);
-- End Set of  books Validation
 --Status Column validation
/* BEGIN
 IF rec_cur.status = 'NEW' THEN
 l_flag:= 'A';
 ELSE
 l_flag:= 'E';
 Fnd_File.put_line (Fnd_File.LOG,'Status column has got invalid data');
 END IF;
 END;*/
 BEGIN
     SELECT currency_code
     INTO   l_currencycode
     FROM   fnd_currencies
     WHERE currency_code=rec_cur.currency
     AND currency_code='USD';
     EXCEPTION
      WHEN OTHERS THEN
            l_currencycode:=NULL;
            l_flag:='E';
            l_error_msg:='currency code does not exists';
 END;
Fnd_File.put_line (Fnd_File.LOG,'Inserting data into the Interface TABLE'||L_FLAG);
Fnd_File.put_line (Fnd_File.LOG,'Inserting data into the Interface TABLE'||L_FLAG);
--End of Actual Flag Column validation
IF   l_flag!='E' THEN
Fnd_File.put_line (Fnd_File.LOG,'Inserting data into the Interface TABLE');
INSERT INTO gl_interface(status,
      set_of_books_id,
      accounting_date,
      currency_code,
      date_created,
      created_by,
      actual_flag,
      user_je_category_name,
      user_je_source_name,
      user_currency_conversion_type,
      segment1,
      segment2,
      segment3,
      segment4,
      segment5,
      entered_dr,
      entered_cr,
      accounted_dr,
      accounted_cr,
      group_id)
      VALUES
      (rec_cur.status    ,
       rec_cur.set_of_books_id   ,
       rec_cur.accounting_date   ,
       rec_cur.currency    ,
       rec_cur.date_created   ,
       rec_cur.created_by    ,
       rec_cur.actual_flag    ,
       rec_cur.category       ,
       rec_cur.source     ,
       rec_cur.curr_conversion                ,
       rec_cur.segment1  ,
       rec_cur.segment2  ,
       rec_cur.segment3  ,
       rec_cur.segment4  ,
       rec_cur.segment5  ,
       rec_cur.entered_dr   ,
       rec_cur.entered_cr   ,
       rec_cur.accounted_dr  ,
       rec_cur.accounted_cr  ,
       rec_cur.group_id);
 END IF;
 l_flag:=NULL;
 l_error_msg:=NULL;
  END LOOP;
COMMIT;
END  GE_Pro;
/

OUTBOUND INTERFACE(INVENTORY)


                         OUTBOUND INTERFACE(INVENTORY)                                            
                                                                     
                                             
CREATE OR REPLACE procedure RAMANA_INV_Out1(Errbuf OUT varchar2,
                                       Retcode ouT varchar2,
            f_id    in number,
            t_id    in varchar2) as
cursor c1 is select
       msi.segment1 item,
    msi.inventory_item_id Itemid,
    msi.description  itemdesc,
    msi.primary_uom_code Uom,
    ood.organization_name name,
    ood.organization_id   id,
    mc . segment1||','||mc.segment2 Category
    from
    mtl_system_items_b           msi,
    org_organization_definitions ood,
    mtl_item_categories          mic,
    mtl_categories               mc
    where
    msi.organization_id       = ood.organization_id
    and msi.inventory_item_id = mic.inventory_item_id
    and msi.organization_id   = mic.organization_id
    and mic.category_id       = mc.category_id
    and msi.purchasing_item_flag = 'Y'
    and msi.organization_id between f_id and t_id;
x_id     utl_file.file_type;
l_count  number(5) default 0;
begin
          x_id:=utl_file.fopen('d:\oracle\proddb\8.1.7\plsql\temp','invoutdata.dat','W');
           --select * from v$parameter where name like '%utl_file%'
for x1 in c1 loop
l_count:=l_count+1;
utl_file.put_line(x_id,x1.item    ||'-'||
        x1.itemid  ||'-'||
        x1.itemdesc||'-'||
        x1.uom   ||'-'||
        x1.name   ||'-'||
        x1.id   ||'-'||
        x1.category   );
end loop;
utl_file.fclose(x_id);
Fnd_file.Put_line(Fnd_file.output,'No of Records transfered to the data file :'||l_count);
Fnd_File.Put_line(fnd_File.Output,' ');
Fnd_File.Put_line(fnd_File.Output,'Submitted User name  '||Fnd_Profile.Value('USERNAME'));
Fnd_File.Put_line(fnd_File.Output,' ');
Fnd_File.Put_line(fnd_File.Output,'Submitted Responsibility name '||Fnd_profile.value('RESP_NAME'));
Fnd_File.Put_line(fnd_File.Output,' ');
Fnd_File.Put_line(fnd_File.Output,'Submission Date :'|| SYSDATE);
Exception
WHEN utl_file.invalid_operation THEN
  fnd_file.put_line(fnd_File.log,'invalid operation');
  utl_file.fclose_all;
WHEN utl_file.invalid_path THEN
  fnd_file.put_line(fnd_File.log,'invalid path');
  utl_file.fclose_all;
WHEN utl_file.invalid_mode THEN
  fnd_file.put_line(fnd_File.log,'invalid mode');
  utl_file.fclose_all;
WHEN utl_file.invalid_filehandle THEN
  fnd_file.put_line(fnd_File.log,'invalid filehandle');

  utl_file.fclose_all;
WHEN utl_file.read_error THEN
  fnd_file.put_line(fnd_File.log,'read error');
  utl_file.fclose_all;
WHEN utl_file.internal_error THEN
  fnd_file.put_line(fnd_File.log,'internal error');
  utl_file.fclose_all;
WHEN OTHERS THEN
  fnd_file.put_line(fnd_File.log,'other error');
  utl_file.fclose_all;
End RAMANA_INV_Out1;


  

How to Set R12 Supplier Page in Read Only Mode?


How to Set R12 Supplier Page in Read Only Mode?



Open System Administrator resp. Navigate to Security->Responsibility->Define
o Query responsibility name(Ex: Payables, HG Operations) you want to use that will have the Supplier page as Read Only.
o Under Menu Exclusions select Type as 'Function' and Name as 'Supplier Full Access : Buyer View'
o Save changes.

Navigation Path: System Administrator->Security->Responsibility->Define 

o Now Now open Suppliers page and check changes open Suppliers page and check changes.
Navigation Path: Payables Resp(Payables, HG Operations)->Suppliers->EntrySupplier page looks like this in read only mode

Prepayment Invoices(AP)


 Prepayment Invoices

A prepayment is a type of invoice you enter to make an advance payment to a supplier or employee. You can enter two types of prepayments: Temporary and Permanent.

Temporary prepayments can be applied to invoices or expense reports you receive. For example, you use a Temporary prepayment to pay a hotel a catering deposit. When the hotel's invoice arrives, apply the prepayment to the invoice to reduce the invoice amount you pay.

Permanent prepayments cannot be applied to invoices. For example, you use a Permanent prepayment to pay a lease deposit for which you do not expect to be invoiced.


Include Prepayment in Invoice:
You can enter supplier invoices where the invoice amount includes prepayments. If you receive a supplier invoice, and the invoice amount has been reduced because of prepayments that the supplier has received, you need to indicate that the invoice amount includes one or more prepayments.

Example:
Prepay Invoice:    200$
Standard Invoice: 500$

Case 1: If you apply Prepay on Standard invoice with 'Apply' check box checked in Apply/Unapply window
Result on Standard Invoice after apply Prepay
Header
   Invoice Amount: 500$
   Paid Amount :    200$
Distributions
   Item                 500$
   Prepay             -200$
In this case distribution total is 500 not 300 and amount paid is 200, remaining amount to pay is 300.

Case 2: If you apply Prepay on Standard invoice with both check boxes selected in Apply/Unapply window
Result on Standard Invoice  after apply Prepay
Header
   Invoice Amount:  300$
   Paid Amount :        0$
Distributions
   Item                  500$
   Prepay              -200$    'Prepayment on Invoice'-Checked
In this case distribution total is 300 because prepay is part of Std invoice. Amount to pay is 300.
Note: Because the Distribution Total includes prepayments, you need to ensure that you have applied prepayments before you submit the invoice for Invoice Validation.


Points To Note:
  1. Settlement date: The date after which the prepayment can be applied to an invoice.
  2. On a prepayment, you can enter any number of distributions, either manually, or automatically by purchase order matching, distribution sets, or allocating. 
  3. You can take discounts on prepayments.
  4. You can create Foreign Currency Prepayments.
  5. You cannot partially pay a prepayment. you must fully pay it.
  6. You can apply prepay on the invoice type is Standard, Mixed, or Expense Report.
  7. You can apply only Item distributions from the prepayment.
  8. You must fully pay a prepayment before you can apply the prepayment to an invoice.
  9. If you want to apply Permanent type prepay then you can change the Prepayment Type to Temporary.
  10. Supplier, invoice currency and payment currency must be same on prepay and to invoice.
  11. If the prepayment has a value in the Prepayment PO Number field, then the invoice must be matched to the same purchase order.
  12. GL Date on Apply/Unapply window, which is the accounting date for the new Prepayment distributions that Payables creates when you apply a prepayment. This date must be after the latest accounting date on any distribution for either prepayment or invoice and must be in an open period.

SUPPLIER AND SITE CREATION API


SUPPLIER CREATION API
DECLARE

l_vendor_rec  ap_vendor_pub_pkg.r_vendor_rec_type;
l_return_status  VARCHAR2(10);
l_msg_count  NUMBER;
l_msg_data  VARCHAR2(1000);
l_vendor_id NUMBER;
l_party_id  NUMBER;

BEGIN

--Required
l_vendor_rec.segment1 := '123'; --ID
l_vendor_rec.vendor_name := 'ABCD'; --Supplier Name
--Optional
l_vendor_rec.match_option:='R' ;

pos_vendor_pub_pkg.create_vendor
(
p_vendor_rec => l_vendor_rec,
x_return_status => l_return_status,
x_msg_count => l_msg_count,
x_msg_data => l_msg_data,
x_vendor_id => l_vendor_id,
x_party_id => l_party_id
);

COMMIT;

dbms_output.put_line('return_status: '||l_return_status);
dbms_output.put_line('msg_data: '||l_msg_data);
dbms_output.put_line('vendor_id: '||l_vendor_id);
dbms_output.put_line('party_id: '||l_party_id);

END;      


##########################################################################
DECLARE

l_vendor_site_rec ap_vendor_pub_pkg.r_vendor_site_rec_type;
l_return_status  VARCHAR2(10);
l_msg_count  NUMBER;
l_msg_data  VARCHAR2(1000);
l_vendor_site_id  NUMBER;
l_party_site_id  NUMBER;
l_location_id  NUMBER;

BEGIN

--Required
l_vendor_site_rec.vendor_id :='37172';
l_vendor_site_rec.vendor_site_code := 'xyz';
l_vendor_site_rec.address_line1 := 'A-602';
l_vendor_site_rec.country := 'IN';
l_vendor_site_rec.org_id := '80';

--Optional

l_vendor_site_rec.purchasing_site_flag:='Y';
l_vendor_site_rec.pay_site_flag :='Y';
l_vendor_site_rec.rfq_only_site_flag :='N';
l_vendor_site_rec.phone := '67615006';

pos_vendor_pub_pkg.create_vendor_site
(
p_vendor_site_rec => l_vendor_site_rec,
x_return_status => l_return_status,
x_msg_count => l_msg_count,
x_msg_data => l_msg_data,
x_vendor_site_id => l_vendor_site_id,
x_party_site_id => l_party_site_id,
x_location_id => l_location_id
);

COMMIT;

dbms_output.put_line('return_status: '||l_return_status);
dbms_output.put_line('msg_data: '||l_msg_data);
dbms_output.put_line('vendor_site_id: '||l_vendor_site_id);
dbms_output.put_line('party_site_id: '||l_party_site_id);
dbms_output.put_line('location_id: '||l_location_id);

END;

SUPPLIER PHONE DETAILS QUERY


SUPPLIER PHONE DETAILS QUERY
SELECT hp.party_id,
  hp.person_first_name,
  hp.person_last_name,
  hp.party_name,
  APS.VENDOR_NAME,
  hcpp.email_address,
  hcpp.phone_number
FROM hz_parties hp,
  hz_contact_points hcpp,
  AP_SUPPLIERS APS
WHERE HP.PARTY_ID=APS.PARTY_ID AND hcpp.owner_table_name(+) = 'HZ_PARTIES'

INVENTORY QUERY


INVENTORY QUERY
SELECT msi.segment1 AS item_code
, mp.organization_code AS org_code
, decode(moq.subinventory_code,sinv.secondary_inventory_name,moq.subinventory_code,sinv.secondary_inventory_name) AS subinv_code
, sum(decode(moq.subinventory_code,sinv.secondary_inventory_name,moq.transaction_quantity,sinv.secondary_inventory_name,moq.transaction_quantity,0))AS ohq
FROM
apps.mtl_system_items_b msi
, apps.mtl_onhand_quantities moq
, apps.mtl_parameters mp
, (SELECT msec.secondary_inventory_name,
msec.organization_id
FROM mtl_secondary_inventories msec
WHERE msec.secondary_inventory_name IN ('Sub_INVA','Sub_INVB')) sinv
WHERE AND msi.inventory_item_status_code = 'Active'
AND msi.inventory_item_id = moq.inventory_item_id(+) 
AND msi.organization_id = moq.organization_id(+)
AND (moq.subinventory_code IN ('Sub_INVA','Sub_INVB') OR (moq.subinventory_code IS NULL AND sinv.secondary_inventory_name IN ('Sub_INVA','Sub_INVB')))
AND msi.organization_id = mp.organization_id
AND msi.organization_id = sinv.organization_id
GROUP BY msi.segment1, 
mp.organization_code, 
decode(moq.subinventory_code,sinv.secondary_inventory_name,moq.subinventory_code,sinv.secondary_inventory_name)
ORDER BY msi.segment1, 
decode(moq.subinventory_code,sinv.secondary_inventory_name,moq.subinventory_code,sinv.secondary_inventory_name), 
msi.segment1;


--------------------------------------------------------------------------------------------------------

SELECT   hou.NAME org, mp.organization_code AS org_code,
            decode(moq.subinventory_code,sinv.secondary_inventory_name,moq.subinventory_code,sinv.secondary_inventory_name) AS subinventory,
            mil.concatenated_segments LOCATOR, mil.segment1 warehouse_id,
            mil.segment2 product_type, mil.segment3 container,
            mil.segment4 aisle, mil.segment5 bay, mil.segment6 shelf,
            mil.segment7 project, msi.segment1 AS item_code,
            msi.description description, msi.primary_uom_code primary_uom,
            sum(decode(moq.subinventory_code,sinv.secondary_inventory_name,moq.transaction_quantity,sinv.secondary_inventory_name,moq.transaction_quantity,0)) AS ohq,
            moq.lot_number lot_number, mln.expiration_date expire_date,
            cic.item_cost standard_cost, msi.list_price_per_unit,
            mil.attribute1 container_seal, fu1.user_name qty_created_by,
            fu2.user_name qty_last_updated_by, msi.attribute1 rotatable,
            msi.attribute2 slep_eligible, msi.attribute3 categoryi_v,
            TO_NUMBER (msi.attribute4) "Case To Bottle",
            TO_NUMBER (msi.attribute5) "Case To Each",
            TO_NUMBER (msi.attribute6) "Pallet QTY",
            mcst.category_set_name category_name,
            mc.concatenated_segments item_category,
            TO_DATE (SUBSTR (mil.attribute2, 1, 10), 'YYYY/MM/DD') seal_date,
            mil.attribute4 seal_color, mil.attribute3 seal_by,
            element10.element_value "Indications",
            element20.element_value "Dose",
            element30.element_value "Customer",
            element40.element_value "Adult/Ped",
            element50.element_value "Pregnancy Class",
            element60.element_value "Product Identifier",
            element70.element_value "Conv UOM", mln.attribute1 slep_status,
            mc.segment1 agent_type, mc.segment2 administrator,
            mc.segment3 drug_type, mc.segment4 drug_strength,
            mcr1.cross_reference, mcr2.cross_reference, mcr3.cross_reference,
            mcr4.cross_reference, misi.min_minmax_quantity,
            misi.max_minmax_quantity, msi.min_minmax_quantity,
            msi.max_minmax_quantity, mln.attribute2 original_expiration_date,
            mln.attribute3 first_extension_project,
            mln.attribute4 first_extension_date,
            mln.attribute5 second_extension_project,
            mln.attribute6 second_extension_date,
            mln.attribute7 third_extension_project,
            mln.attribute8 third_extension_date,
            mln.attribute9 fourth_extension_project,
            mln.attribute10 fourth_extension_date, msi.organization_id,
            msi.inventory_item_id
       FROM apps.mtl_system_items_b msi,
            apps.mtl_onhand_quantities moq,
            apps.mtl_parameters mp,
            apps.hr_organization_units hou,
            apps.mtl_item_locations_kfv mil,
            apps.mtl_lot_numbers mln,
            apps.cst_item_costs cic,
            apps.fnd_user fu1,
            apps.fnd_user fu2,
            apps.mtl_category_sets_tl mcst,
            apps.mtl_category_sets_b mcs,
            apps.mtl_categories_kfv mc,
            apps.mtl_item_categories mic,
            apps.mtl_descr_element_values element10,
            apps.mtl_descr_element_values element20,
            apps.mtl_descr_element_values element30,
            apps.mtl_descr_element_values element40,
            apps.mtl_descr_element_values element50,
            apps.mtl_descr_element_values element60,
            apps.mtl_descr_element_values element70,
            apps.mtl_cross_references mcr1,
            apps.mtl_cross_references mcr2,
            apps.mtl_cross_references mcr3,
            apps.mtl_cross_references mcr4,
            apps.mtl_item_sub_inventories misi,
            (SELECT msec.secondary_inventory_name, msec.organization_id
               FROM apps.mtl_secondary_inventories msec
              WHERE msec.secondary_inventory_name IN ('SUBIN_A','SUBINV_B')) sinv
      WHERE 1 = 1
        AND hou.organization_id = mp.organization_id
        AND moq.locator_id = mil.inventory_location_id(+)
        AND moq.subinventory_code = mil.subinventory_code(+)
        AND moq.organization_id = mil.organization_id(+)
        AND mil.enabled_flag(+) = 'Y'
        AND msi.inventory_item_status_code = 'Active'
        AND msi.inventory_item_id = moq.inventory_item_id(+)
        AND msi.organization_id = moq.organization_id(+)
        AND mln.lot_number(+) = moq.lot_number
        AND mln.organization_id(+) = moq.organization_id
        AND mln.inventory_item_id(+) = moq.inventory_item_id
        AND msi.inventory_item_id = cic.inventory_item_id(+)
        AND msi.organization_id = cic.organization_id(+)
        AND fu2.user_id(+) = moq.last_updated_by
        AND fu1.user_id(+) = moq.created_by
        AND mc.structure_id = mcs.structure_id
        AND mc.category_id = mic.category_id
        AND mic.inventory_item_id(+) = msi.inventory_item_id
        AND mic.organization_id = msi.organization_id
        AND mic.category_set_id = mcs.category_set_id
        AND mcs.category_set_id = mcst.category_set_id
        AND mcst.category_set_name = 'Inventory'
        AND element10.element_name(+) = 'Indications'
        AND element10.inventory_item_id(+) = msi.inventory_item_id
        AND element20.element_name(+) = 'Dose'
        AND element20.inventory_item_id(+) = msi.inventory_item_id
        AND element30.element_name(+) = 'Customer'
        AND element30.inventory_item_id(+) = msi.inventory_item_id
        AND element40.element_name(+) = 'Adult/Ped'
        AND element40.inventory_item_id(+) = msi.inventory_item_id
        AND element50.element_name(+) = 'Pregnancy Class'
        AND element50.inventory_item_id(+) = msi.inventory_item_id
        AND element60.element_name(+) = 'Product Identifier'
        AND element60.inventory_item_id(+) = msi.inventory_item_id
        AND element70.element_name(+) = 'Conv UOM'
        AND element70.inventory_item_id(+) = msi.inventory_item_id
        AND msi.inventory_item_id = mcr1.inventory_item_id(+)
        AND mcr1.cross_reference_type(+) = 'NDC'
        AND msi.inventory_item_id = mcr2.inventory_item_id(+)
        AND mcr2.cross_reference_type(+) = 'NSN'
        AND msi.inventory_item_id = mcr3.inventory_item_id(+)
        AND mcr3.cross_reference_type(+) = 'NDA'
        AND msi.inventory_item_id = mcr4.inventory_item_id(+)
        AND mcr4.cross_reference_type(+) = 'FMCS'
        AND moq.organization_id = misi.organization_id(+)
        AND moq.inventory_item_id = misi.inventory_item_id(+)
        AND moq.subinventory_code = misi.secondary_inventory(+)
        AND (moq.subinventory_code IN ('SUBIN_A','SUBINV_B') OR (moq.subinventory_code IS NULL AND sinv.secondary_inventory_name IN ('SUBIN_A','SUBINV_B')))
        AND msi.organization_id = mp.organization_id
        AND msi.organization_id = sinv.organization_id
   GROUP BY hou.NAME,
            msi.segment1,
            mp.organization_code,
            decode(moq.subinventory_code,sinv.secondary_inventory_name,moq.subinventory_code,sinv.secondary_inventory_name),
            mil.concatenated_segments,
            mil.segment1,
            mil.segment2,
            mil.segment3,
            mil.segment4,
            mil.segment5,
            mil.segment6,
            mil.segment7,
            msi.description,
            msi.primary_uom_code,
            moq.lot_number,
            mln.expiration_date,
            cic.item_cost,
            msi.list_price_per_unit,
            mil.attribute1,
            fu1.user_name,
            fu2.user_name,
            msi.attribute1,
            msi.attribute2,
            msi.attribute3,
            TO_NUMBER (msi.attribute4),
            TO_NUMBER (msi.attribute5),
            TO_NUMBER (msi.attribute6),
            mcst.category_set_name,
            mc.concatenated_segments,
            mil.attribute2,
            mil.attribute3,
            mil.attribute4,
            element10.element_value,
            element20.element_value,
            element30.element_value,
            element40.element_value,
            element50.element_value,
            element60.element_value,
            element70.element_value,
            mln.attribute1,
            mc.segment1,
            mc.segment2,
            mc.segment3,
            mc.segment4,
            mcr1.cross_reference,
            mcr2.cross_reference,
            mcr3.cross_reference,
            mcr4.cross_reference,
            misi.min_minmax_quantity,
            misi.max_minmax_quantity,
            msi.min_minmax_quantity,
            msi.max_minmax_quantity,
            mln.attribute2,
            mln.attribute3,
            mln.attribute4,
            mln.attribute5,
            mln.attribute6,
            mln.attribute7,
            mln.attribute8,
            mln.attribute9,
            mln.attribute10,
            msi.organization_id,
            msi.inventory_item_id
   ORDER BY 4;

SUPPLIER QUERY


SUPPLIER QUERY
SELECT 
  aps.segment1 SUPPLIER_NUMBER,
  aps.vendor_name SUPPLIER_NAME,
  apss.city,apsc.first_name||' '||apsc.last_name AS
"ContactName",
  apsc.PHONE,
  apsc.FAX_AREA_CODE||'-'||apsc.FAX as "FAX NUMBER",
  APSC.EMAIL_ADDRESS EMAIL_ID
  FROM ap_suppliers aps,
  ap_supplier_sites_all apss,
  ap_supplier_contacts apsc
WHERE 1 = 1 AND aps.vendor_id = apss.vendor_id
 AND apss.vendor_site_id = apsc.vendor_site_id


*********************************************************
select
pov.vendor_id,
pov.vendor_name supplier,
pov.vendor_type_lookup_code,
sl.location_code shipto_location,
bl.location_code billto_location,
pov.customer_num,
pov.ship_via_lookup_code,
pov.fob_lookup_code,
rt.name terms,
pov.set_of_books_id,
pov.credit_status_lookup_code,
pov.credit_limit
from ra_terms rt,
hr_locations bl,
hr_locations sl,
po_vendors pov
where pov.vendor_name like ‘Abb%’
and   pov.ship_to_location_id=sl.location_id(+)
and   pov.bill_to_location_id=bl.location_id(+)
and   pov.terms_id=rt.term_id(+)
order by 1
/
select
pov.vendor_name Supplier,
povs.vendor_site_id,
povs.vendor_site_code Site,
povs.address_line1 A1ddress,
povs.address_line2 A2ddress,
povs.address_line3 A3ddress,
povs.city||’, ‘||
povs.state||’ ‘||
povs.zip A4ddress,
povs.ship_to_location_id,
povs.bill_to_location_id,
povs.ship_via_lookup_code,
povs.freight_terms_lookup_code,
povs.fob_lookup_code
from po_vendors pov,
po_vendor_sites povs
where pov.vendor_id=601
and   pov.vendor_id=povs.vendor_id
order by 1
/
Query to find Supplier contacts :
select
vc.vendor_contact_id,
vc.vendor_site_id,
vc.first_name,
vc.middle_name,
vc.last_name,
vc.prefix,
vc.title,
vc.mail_stop,
vc.area_code,
vc.phone,
vc.department,
vc.email_address,
vc.url,
vc.alt_area_code,
vc.alt_phone,
vc.fax_area_code,
vc.inactive_date,
vc.fax
from po_vendor_contacts vc
where vc.vendor_site_id=4556
order by 1

PO_AP LINK QUERIES (2-WAY, 3-WAY,4-WAY)


                                                                     
                                             
AP-PO Link Queries

-- VENDOR, PO AND INVOICE DETAILS (2 WAY MATCH)

SELECT DISTINCT
a.org_id "ORG ID", e.segment1 "VENDOR NUM",
e.vendor_name "SUPPLIER NAME",
UPPER (e.vendor_type_lookup_code) "VENDOR TYPE",
f.vendor_site_code "VENDOR SITE CODE", f.address_line1 "ADDRESS",
f.city "CITY", f.country "COUNTRY",
TO_CHAR (TRUNC (d.creation_date)) "PO DATE", d.segment1 "PO NUM",
d.type_lookup_code "PO TYPE", c.quantity_ordered "QTY ORDERED",
c.quantity_cancelled "QTY CANCELLED", g1.quantity_received, g1.quantity_rejected, g1.quantity_billed,
g.item_id "ITEM ID",
g.item_description "ITEM DESCRIPTION", g.unit_price "UNIT PRICE",
(NVL (c.quantity_ordered, 0) - NVL (c.quantity_cancelled, 0)
)
* NVL (g.unit_price, 0) "PO LINE AMOUNT",
(SELECT DECODE (ph.approved_flag, 'Y', 'Approved')
FROM po.po_headers_all ph
WHERE ph.po_header_id = d.po_header_id) "PO APPROVED?",
a.invoice_type_lookup_code "INVOICE TYPE",
a.invoice_amount "INVOICE AMOUNT",
TO_CHAR (TRUNC (a.invoice_date)) "INVOICE DATE",
a.invoice_num "INVOICE NUMBER",
(SELECT DECODE (x.match_status_flag,
'A', 'Approved'
)
FROM ap.ap_invoice_distributions_all x
WHERE x.invoice_distribution_id = b.invoice_distribution_id)
"INVOICE APPROVED?",
a.amount_paid
FROM ap.ap_invoices_all a,
ap.ap_invoice_distributions_all b,
po.po_distributions_all c,
po.po_headers_all d,
ap.ap_suppliers e,
ap.ap_supplier_sites_all f,
po.po_lines_all g,
po.po_line_locations_all g1
WHERE a.invoice_id = b.invoice_id
AND b.po_distribution_id = c.po_distribution_id(+)
AND c.po_header_id = d.po_header_id(+)
AND e.vendor_id(+) = d.vendor_id
AND f.vendor_site_id(+) = d.vendor_site_id
AND d.po_header_id = g.po_header_id
AND g1.po_header_id = c.po_header_id
AND g1.po_line_id = g.po_line_id
AND c.po_line_id = g.po_line_id
AND c.line_location_id = g1.line_location_id
AND g1.inspection_required_flag = 'N'
AND g1.receipt_required_flag = 'N'

-- VENDOR, PO AND INVOICE DETAILS (3 WAY MATCH)

SELECT DISTINCT
a.org_id "ORG ID", e.segment1 "VENDOR NUM",
e.vendor_name "SUPPLIER NAME",
UPPER (e.vendor_type_lookup_code) "VENDOR TYPE",
f.vendor_site_code "VENDOR SITE CODE", f.address_line1 "ADDRESS",
f.city "CITY", f.country "COUNTRY",
TO_CHAR (TRUNC (d.creation_date)) "PO DATE", d.segment1 "PO NUM",
d.type_lookup_code "PO TYPE", c.quantity_ordered "QTY ORDERED",
c.quantity_cancelled "QTY CANCELLED", g1.quantity_received, g1.quantity_rejected, g1.quantity_billed,
g.item_id "ITEM ID",
g.item_description "ITEM DESCRIPTION", g.unit_price "UNIT PRICE",
(NVL (c.quantity_ordered, 0) - NVL (c.quantity_cancelled, 0)
)
* NVL (g.unit_price, 0) "PO LINE AMOUNT",
(SELECT DECODE (ph.approved_flag, 'Y', 'Approved')
FROM po.po_headers_all ph
WHERE ph.po_header_id = d.po_header_id) "PO APPROVED?",
a.invoice_type_lookup_code "INVOICE TYPE",
a.invoice_amount "INVOICE AMOUNT",
TO_CHAR (TRUNC (a.invoice_date)) "INVOICE DATE",
a.invoice_num "INVOICE NUMBER",
(SELECT DECODE (x.match_status_flag,
'A', 'Approved'
)
FROM ap.ap_invoice_distributions_all x
WHERE x.invoice_distribution_id = b.invoice_distribution_id)
"INVOICE APPROVED?",
a.amount_paid
FROM ap.ap_invoices_all a,
ap.ap_invoice_distributions_all b,
po.po_distributions_all c,
po.po_headers_all d,
ap.ap_suppliers e,
ap.ap_supplier_sites_all f,
po.po_lines_all g,
po.po_line_locations_all g1
WHERE a.invoice_id = b.invoice_id
AND b.po_distribution_id = c.po_distribution_id(+)
AND c.po_header_id = d.po_header_id(+)
AND e.vendor_id(+) = d.vendor_id
AND f.vendor_site_id(+) = d.vendor_site_id
AND d.po_header_id = g.po_header_id
AND g1.po_header_id = c.po_header_id
AND g1.po_line_id = g.po_line_id
AND c.po_line_id = g.po_line_id
AND c.line_location_id = g1.line_location_id
AND g1.inspection_required_flag = 'N'
AND g1.receipt_required_flag = 'Y'

-- VENDOR, PO AND INVOICE DETAILS (4 WAY MATCH)

SELECT DISTINCT
a.org_id "ORG ID", e.segment1 "VENDOR NUM",
e.vendor_name "SUPPLIER NAME",
UPPER (e.vendor_type_lookup_code) "VENDOR TYPE",
f.vendor_site_code "VENDOR SITE CODE", f.address_line1 "ADDRESS",
f.city "CITY", f.country "COUNTRY",
TO_CHAR (TRUNC (d.creation_date)) "PO DATE", d.segment1 "PO NUM",
d.type_lookup_code "PO TYPE", c.quantity_ordered "QTY ORDERED",
c.quantity_cancelled "QTY CANCELLED", g1.quantity_received, g1.quantity_rejected, g1.quantity_billed,
g.item_id "ITEM ID",
g.item_description "ITEM DESCRIPTION", g.unit_price "UNIT PRICE",
(NVL (c.quantity_ordered, 0) - NVL (c.quantity_cancelled, 0)
)
* NVL (g.unit_price, 0) "PO LINE AMOUNT",
(SELECT DECODE (ph.approved_flag, 'Y', 'Approved')
FROM po.po_headers_all ph
WHERE ph.po_header_id = d.po_header_id) "PO APPROVED?",
a.invoice_type_lookup_code "INVOICE TYPE",
a.invoice_amount "INVOICE AMOUNT",
TO_CHAR (TRUNC (a.invoice_date)) "INVOICE DATE",
a.invoice_num "INVOICE NUMBER",
(SELECT DECODE (x.match_status_flag,
'A', 'Approved'
)
FROM ap.ap_invoice_distributions_all x
WHERE x.invoice_distribution_id = b.invoice_distribution_id)
"INVOICE APPROVED?",
a.amount_paid
FROM ap.ap_invoices_all a,
ap.ap_invoice_distributions_all b,
po.po_distributions_all c,
po.po_headers_all d,
ap.ap_suppliers e,
ap.ap_supplier_sites_all f,
po.po_lines_all g,
po.po_line_locations_all g1
WHERE a.invoice_id = b.invoice_id
AND b.po_distribution_id = c.po_distribution_id(+)
AND c.po_header_id = d.po_header_id(+)
AND e.vendor_id(+) = d.vendor_id
AND f.vendor_site_id(+) = d.vendor_site_id
AND d.po_header_id = g.po_header_id
AND g1.po_header_id = c.po_header_id
AND g1.po_line_id = g.po_line_id
AND c.po_line_id = g.po_line_id
AND c.line_location_id = g1.line_location_id
AND g1.inspection_required_flag = 'Y'
AND g1.receipt_required_flag = 'Y'

-- VENDOR, PO, INVOICE AND PAYMENT DETAILS

SELECT DISTINCT a.org_id "ORG ID", e.segment1 "VENDOR NUMBER",
e.vendor_name "VENDOR NAME",
UPPER (e.vendor_type_lookup_code) "VENDOR TYPE",
f.vendor_site_code "VENDOR SITE CODE",
TO_CHAR (TRUNC (d.creation_date)) "PO DATE",
d.segment1 "PO NUM", d.type_lookup_code "PO TYPE",
c.quantity_ordered "QTY ORDERED",
c.quantity_cancelled "QTY CANCELLED",
g.item_description "ITEM DESCRIPTION",
g.unit_price "UNIT PRICE",
(NVL (c.quantity_ordered, 0) - NVL (c.quantity_cancelled, 0)
)
* NVL (g.unit_price, 0) "PO LINE AMOUNT",
(SELECT DECODE (ph.approved_flag,
'Y', 'Approved'
)
FROM po.po_headers_all ph
WHERE ph.po_header_id = d.po_header_id) "PO APPROVED?",
a.invoice_type_lookup_code "INVOICE TYPE",
a.invoice_amount "INVOICE AMOUNT",
TO_CHAR (TRUNC (a.invoice_date)) "INVOICE DATE",
a.invoice_num "INVOICE NUMBER",
(SELECT DECODE (x.match_status_flag,
'A', 'Approved'
)
FROM ap.ap_invoice_distributions_all x
WHERE x.invoice_distribution_id = b.invoice_distribution_id)
"INVOICE APPROVED?",
a.amount_paid, h.check_id, i.check_number,
h.invoice_payment_id,
TO_CHAR (TRUNC (i.check_date)) "PAYMENT DATE"
FROM ap.ap_invoices_all a,
ap.ap_invoice_distributions_all b,
po.po_distributions_all c,
po.po_headers_all d,
ap.ap_suppliers e,
ap.ap_supplier_sites_all f,
po.po_lines_all g,
ap.ap_invoice_payments_all h,
ap.ap_checks_all i
WHERE a.invoice_id = b.invoice_id
AND b.po_distribution_id = c.po_distribution_id(+)
AND c.po_header_id = d.po_header_id(+)
AND e.vendor_id(+) = d.vendor_id
AND f.vendor_site_id(+) = d.vendor_site_id
AND d.po_header_id = g.po_header_id
AND c.po_line_id = g.po_line_id
AND a.invoice_id = h.invoice_id
AND h.check_id = i.check_id
AND c.po_header_id IS NOT NULL
AND a.payment_status_flag = 'Y'
AND d.type_lookup_code != 'BLANKET'
ORDER BY E.VENDOR_NAME

SQL * Loader


SQL * Loader :
==================
It is one of the Oracle Tool  will be used to transfer the data from Flat files into 
Oracle Base tables.
When we are developing the Interfaces or Conversion program in Oracle Applications 
then we will be using the SQL Loader Programs.

while working with SQL * Loader we will come across 5 Files.

1)Flat File OR data File:

Data file contains the data in the specific format which we will receive from the 
client. this file will be generated by the legacy system(Other Systems) program.
It may be either .txt format
   .dat
   .csv(Comma Separated View) Excell sheet.
Most of the times we will receive in the (.csv) format  

2)Control File : 
-----------------
Is nothing but a SQL*Loader Program will be used to load the data from file into table.
we will develop the control File
        Execute the Control File.
While developing the Control file we will specify follwoing things.
1)Data File path
2)Database Table Name
3)Column Mapping.
Control file Extension is (.ctl)

3)Bad File:
-----------
when we execute the COntrol file if any records are rejected by SQL *Loader then we
will find those rejecteds record in the Bad file.
SQl loader recjects the records if there are any datatype mismatch
              Internal Errors
       Data file Format problem
Bad File Extension is (.bad)

4)Discard File:
---------------
when we execute the COntrol file if any records are rejected by Control File then we
will find those rejecteds record in the Discard file.
Control file Recjects the record when the record is not satisfying the record which
are not satisfied the condition specified in the Control file.
Discard File Extension is (.dis)

5)Log File :
-------------

It contains the Log information like Program start time,End Time
No of succesfully records upload
Rejected Records into the Bad file
Rejected records into the Discard file
Any errors are there in the Control file those error message  details we will find.
Log file Extension is (.log)


Control File Syntax:
----------------------

LOAD DATA
INFILE 'Data File Path'
Insert into table <Table Name>
FIELDS TERMINATED by ',' OPTIONALLY ENCLOSED BY'"'
TRAILING NULLCOLS
(Column1    ,
 column2    ,
 column3    ,......)


Execution of Control File :
-----------------------------

Goto Command Prompt where the SQl loader is Installed.

D:Oracle\Proddb\8.1.7\bin\  SQLLDR  Username/Password@PROD
Control = Control file Path.

Request Set , Incompatibility and :$FLEX$ and :$PROFILES


Request Set:
============

Colection of Concurrent Programs which will be used to submit the Cnocurrent Programs
either sequentially or Paraalley multiple programs

It is also like Request group but in Requuest group we can submit only one program at
a time from SRS Window.
where as in Request set we can submit multiple programs at a time.

1)Select the Programs which we would like to group in the set
Ex:
Active Responsibilities
Active Users
Compile Reports
2)Open the Request Set form Select the button called Request set wizard and 
  enter the concurrent Program list.
Concurrent =>Set
3)Open the Request group Form attach the Request set by selecting the Type = Set
  and attach the Request set.
4)Goto the SRS Window select the Option called Request set instead of Single Request.

Incompatibility:
================
Incompatibility is nothing but not compatible with the current concurrent program
For Ex
If we have three program A B C 
If A program is running  in the server system should  not run the B and C programs
that time we wii define the Incompatibility 
While createion of the A Program 
Select the button called Incompatibility and enter the B and C Programs.

Run Alone Check box :if we would like to make the Program is not compatible with all
 other concurrent Program then we will check this check box.

Use in SRS Window: Be default this check box will be enabled we uncheck this we can
  find the Program at SRS window we have to submit from backend by using fnd_request 
  API.

Copy To button: While customizing the Concurrent Programs(Reports,Package.....) 
  we are suppose to create new concurrent Program with diff name then we will
  go for using the Copy To button.

note:  By default every concurrent Program will be executed in the CBO(Cost Based
    Optimizer) if we would like to execute in the RBO(Rule Bases Optimizer)mode then
    we will use the Session control buttion we will set the Rule Option.


:$FLEX$
:$PROFILES$

These two are Oracle apps reserved words will be used in the Value set creation 

:$FLEX$: This will be used to Retrieve the Previous parameter value whatever we have
   selected.

Syntax : :$FLEX$.Previous Parameter VAlue set Name.


For Ex:  We have two Parameters


      Supplier Name      :  Table Value set 
      Supplier Site Code :  Table VAlue set

based on the Suplier name we are suppose to get the Site codes in the Second parameter

SELECT VENDOR_NAME FROM PO_VENDORS  - First VAlue set

SELECT VENDOR_SITE_CODE FROM PO_vendor_sites_All   -Second Value Set
where  vendor_name = Whatever user has selected in the First PArameter
       (To get this value we will use :$FLEX$.Previous Value set name).

23SUPPLIER  - First Value set Name

23SITE
WHERE VENDOR_ID  IN(SELECT VENDOR_ID 
                    FROM    PO_VENDORS
                    WHERE VENDOR_NAME = :$FLEX$.23SUPPLIER)

:$PROFILES$: This will be used to Get the Profile value in the Table Value set or
    from the front end.

To get Profile values from backend we are using Fnd_Profile.Value or Fnd_Profile.get()


Syntax : :$PROFILES$.Profile Name

SELECT SEGMENT1 
FROM   PO_HEADERS_ALL

22USER  : 204
23USER  : 887
24USER  : 911

SELECT SEGMENT1
FROM PO_HEADER_ALL
WHERE ORG_ID = :$PROFILES$.ORG_ID

Ex: Display the PO's which are created by the current User

If 22user ope the LOV it has to display the PO's which are created by 22 user

SELECT SEGMENT1
FROM   PO_HEADERS_ALL
WHERE  CREATED_BY = :$PROFILES$.USER_ID





































Report Registration Steps:


Report Registration Steps:
-------------------
1)Develop the report (.rdf)as per client Requirement by using reports 6i Builder

2)Move the report from Local mechine into Server
    CUS_TOP\11.5.0\Reports\US\ .rdf
     PO_TOP\11.5.0\Reports\US\ .rdf
  
3)Select System Administrator and create EXECUTABLE  
      1)Executable Name
     2)ApplicationName
     3)Execution Method
     4)Report(.rdf) file Name
          
4)Create Concurrent Program and attach  1)EXECUTABLE
      2)PARAMETERS
     3)INCOMPATIBILITIES          
5)Create Request Group and attach  Concurrent Program

6)Create Responsibility    1)Request Group
       2)Data    Group
      3)Menu
7)Create user, attach Responsibility to the user.

8)User will select the Responsibility and goto SRS(Standard Request Submission) Window
  submit the Request.








Navigations:
============

Executable           = Concurrent=>Program=>Executable
Concurrent Program   = Concurrent=>Program=>Define
Request Group      = Security=>Responsibility=>Request
Responsibility       = Security=>responsibility=>Define
User       = Security=>User=>Define
SRS Window      = View Menu=>Request =>Submit New request=>Ok=>Select Program
                       =>Submit=>No=>Find=>View Output























Profiles


Profile :
Profile is one of the changable option it will change the way of
application execution.

When User Log in to the application and select the the resp or Appl 
system will automatically captures all the profile value as per the
profile values application will run.

Ex: If client have three Organizations 1)Hyd
           2)Ban
           3)Chn
If "hyd" users connect to the Application system will retrive the
data from database which is related to the Hyderabad branch.
If user is working for 'CHN' brnach then chennai branch setups or data
will be retrieved.

For every user we will assign the Profile value

Ex: Operation  

Position - Profile Name
Profile Values
--------------
Manager
Supervisior
Clerk
Operator
Trainess

When we want assign any profile value we have four levels 
we have to select any one of the level.


Profile Level   Profile  Profile Value
-------------   -------  --------------
User  - OPERATIONS -  Print  - 10(This is for for Operations)  
Responsibility  - 22Responsi -  Print  -  5(This is for 22resp users)
Application     - GL Applica -  Print  -  4(This is for GL App Users)
Site  - ---        -  Print  -  2(This is for ALL Users)

Site : this is lowest level to assign the Profile values site values
are applicable for all the users.when we install Application by default
site level values will be assigned.

Application: These values are applicable for the users who are having 
the access for the application. If user is eligible for both 
application and site level values then application level value will
override the site level value.

Responsibility:We will select the responsibility name assign the value
which is applicalbe only for the users who are having the access for 
specified responsibility.

Responsibility level value will override both application and site
level values.

User: This is highest level in the profile option.
we will select the user name and assign the profile value which is
applicable only for this user.
User level value will override all other profile level values.

Diff between Application and Responsibility:
============================================
Both are Group of Forms(Menu)
         Group of ConcurrentPrograms(Request Group)
         Group of Users (Data group)
But Application as per the Business functionality requirement
Responsibility will group as per the position requirement.

Some of the Imp Profile Names:

GL:Set Of Books
MO:Operating Unit
Hr:Business Groups
MFG_ORGANIZATION_ID
USER_ID
RESP_ID
USERNAME
RESP_NAME and so on..........



                                                                     
                                             
note: In the Projects most of the profile values will be assigned at the Responsibility
level.


Diff Between Application and Responsibility:
      ===========     ===============

Applciation is nothing Colletion of Forms,Reports and Program which are related for 
specific business functionality.

Responsibility is nothing but Colletion of Forms,Reports and Program which are related for 
specific Position in the Organization.

For Ex : We have to create One Responsibility For the Clerk. Which is accesable by all 
         the Clerks.
     It Contains the Forms and Reports which are required for the Clerk.

We have to Create new Responsibility for the Manager,Which is accesable by all the 
Managers.
It COntains the Forms and Reports which are required for the manager.

Where as Application includes all the Forms,Reports and Programs.If we assign the 
application to the user he will access all the forms and Reports.
Intead of that we will create the responsibility and we will assign to the User.          
          
Common Profiles:
================

Gl:Set of Books: Which is Financial Profile option will be uset to assin SetofBooks
HR:Business Group : Which will used to assign the Business Group
MO:Operating Unit : To assign the Operating Unit (Branch) to the users.
MFG_ORGANIZATION_ID: Will Be used to assign the Manufacturing Organization ID.

USER_ID
USERNAME
RESP_NAME   and so on.........

We can find all the Profile details in Application Developer Responsibility.
We can assign the Profile values in System Administrator Responsibility.

Application Developer=>Profile =>Press CTRL+F11 we can find all the profiles.

System administrator=>profile=>System=> Select Profilename,Level =>Find button
then assign the Profile value.

Set Of Books :SOB is nothing but collection of Currency
             Calendar
             Chart of Accounts.
We will assign the SOB as a profile value to the user as per the Profile value system
will automatically change the application running.

Base on the SOB  name we can find the change in the currency and calendar and accounts

SELECT     NAME,
    CURRENCY_CODE,
    PERIOD_SET_NAME,
    CHART_OF_ACCOUNTS_ID 
FROM GL_SETS_OF_BOOKS

SELECT * FROM GLFV_CHARTS_OF_ACCOUNTS  WHERE CHART_OF_ACCOUNTS_ID = 50713

22USER   GL:Set Of Books   Vision Operations (USA)   USD
23USER   GL:Set Of Books   Vision Korea       KRW
24USER   GL:Set Of Books   Vision Italy       ITL

Create Three users
Assign Profile values from System administrator (Profile=>System)
open the GL Form and verify the curency values  (GL=>Journal=>Enter=>new Journal)

Note: Most of the profile values will be assigned  at Responsibility Level.


Retrieve the Profile Value from Backend:(SQL,PL/SQL,Forms6i,Reports6i)
======================================

Fnd_Profile.Get('ProfileName',
  local Variable);

local Variable:= Fnd_Profile.Value('Profile Name');

Both API's will be used to retrieve the Profile value frombackend

Get()   is Procedure
Value() is Function

Oracle Has provided both Procedure and Function becuase in some of the areas we can not
use procedure then we can use function.

For Ex: in SELECT clause we can not use procedure we have to go for using the Function.




1)We would like to display the Set of Books name 
          User name
          Respname     in the first page of the report.

22USER
23USER
24USER

Ans)

1)Define the Local Variable
2)Goto before Report Trigger write the follwoing API
  

  :P_SOBNAME:= Fnd_Profile.value('GL_SET_OF_BKS_NAME');
  :USERNAME := Fnd_Profile.value('USERNAME');
  Fnd_Profile.Get('RESP_NAME',
       :RESPNAME);
3)Goto Layout model Header section and Display the Variable Name.
4)Submit from Diff Users and test the Output we can find the Difference.



2)Develop the PL/SQL Program for vendor Name updation. Vendor name should be updated
  if "OPERATIONS" user submit the Program for other users should not get update.

Parameters are    VendorID
    VendorName   

Create Or Replace Procedure ven_update(Errbuf  OUT varchar2,
               Retcode OUT varchar2,
          v_id    IN number,
          v_name  IN varchar2)  as
l_name   varchar2(100);
begin
l_name:=Fnd_Profile.value('USERNAME');
If l_name = 'OPERATIONS' then
UPDATE PO_VENDORS
SET VENDOR_NAME = v_name
WHERE VENDOR_ID =v_id;
commit;
Fnd_File.Put_line(Fnd_File.Output,'vendorname has updated succesfully');
Else
Fnd_File.Put_line(Fnd_File.Output,'Access Denied for updateion');
End If;
End;

Note: We can pass the profile value as default value by using Profile default type.
 Select Default type = profile
        Default Value= Profile Name
When we are passing Profile value  as default we are suppose to hide the Parameter 
because profile is confidential Information we are not suppose to give permission for
modifications.

Procedure Registration Steps In APPS


Procedure Registration Steps:


1)Develop the procedure and compile  at SQL prompt
2)Connect application select system administrator Responsbility create
  Executable by selecting the Execution Method as 'PL/SQL Stored Procedure'
3)Create Concurrent Program and attach Executable to the Program and add the
  Parameters and  incompatible programs.
4)Create Request group attach concurrent Progrtam
5)Attach Request group to the reponsibility   
6)Responsiboility  will be added to the user.
 User will submit the request from SRS Window.

Syntax:
Create Or Replace Procedure <ProcedureName> (Errbuf OUT varchar2,
          Retcode OUT varchar2,
          P1    IN NUMBER,
          P2    IN VARCHAR2,
          P3    IN DATE) AS
Local variable,Cursor,Collections Declare;
Begin

If statement
For Loop 
Procedure Calling            
DBMS_OUTPUT.Put_Line - This will not be used instead of this Fnd_File API will be used

FND_FILE.PUT_LINE(Fnd_File.Log   ,'Message'||Variable Name);
FND_FILE.PUT_LINE(Fnd_File.Output,'Message'||Variable Name);
Exception
When Other then
-Exception Statements;
End <Procedure Name>;

PL/SQL Procedure with Parameter:
================================
If we have any user defined Parameters then we have to register these parameters at the
time of Creating the COncurrent Program by selecting the Parameter button
enter the Seqno
   Parameter Name
   Value Set
Note : Token Field will be disabled. 
Here First Parameter value will be passed to the first variable
Second Parameter will be passed to the second variable and so on........

When we are registering the report as C.P then only we required TOKEN field.
Because report builder bind variables may or may not be in the sequence that's why 
we have to map with Token field.

Where as in Procedure variables position is fixed then TOKEN field will be disabled.






















PURCHASE ORDER USE FULL INFORMATION


                   PURCHASE ORDER USE FULL INFORMATION                                                  
                                                                     
                                             
PO Application will be used to capture the purchasing information.
Oracle is developed pre defined forms and as well as Concurrent Programs and other
related programs.Client Directley can use those forms and Programs or client 
can customize the existing objects(Forms,Reports,Programs)

During the PO application flow we can find the three types of people 
1)Requestor : Employee who require the materials
2)Preparer  : Employee who is going to prepare the Document 
3)Buyer     : Employee who is having the authority to purchase the materials from the
              Suppliers.

Requisition: is one of the purchasing document will be prepared by the employee when
   ever he required the materials or Services or Training and so on.
we have two types of Requisitions 1)Internal
     2)Purchase

Internal requisition will be created if materials are receiving from another Inventory
inside of the organization.
Purchase requisition will be created while purchasing the materials from the Suppliers.

Requisitions=>Requisitions

We will enter the Requisition at three level 1)Header
          2)Line
          3)Distributions.

Open the Requisition form enter the Reqno and select the type at Header level
 Enter the Items information at line level like Item name,qty,unitprice,tax and so on
select Distributions button enter the Distributions details.
Save
Select the Button called Approve button to go for approving the Requisition Document
Open the Requisition summary form.
Enter the Reqno select find button we can find the Requisition status wether it is 
approved or not.
select Tools menu => View Action History to find the history details
Select Tools Menu  =>Control option to Cancel the requisition.

RFQ Document:(Request For Quotation)
=============

Once the Requisition is Approved Buyer will prepare thre RFQ document which will be 
delivered to the supplier. Supplier will respond for that with quotation.
we have Three types of RFQ documents

BID RFQ:This will be prepared for the secific fixed quantity and there won't be any 
        PriceBraeaks(Discounts).

catalog RFQ: This will be create for te materials which we will purchase from the 
        suppliers regularley , and large number of quantity. Here we can specify the 
        Price Breaks.

Standard RFQ:  This will be prepared for the Items which we will purchase only once
        not very often,Here we can include the Discounts information at different
        auantity levels.
RFQ Information will be entered at 3 Level
  1)Headers
  2)Lines
  3)Price Breaks(CATALOG,STANDARD) or Shippments (Only for Bid RFQ)

Terms And Conditions:
While creation of the RFQ documents we will select the Terms button and we will enter
the terms abd condition details.

Payment Terms: When Organization is going to make the payment and Interest rates 
Fright  Terms: Who is going to Bear the Tansportation chargers wether Buyer or Supplier
FOB(FreeOnBoard): If any materials damage or any missing quantity is there then the
             the responsiboility of those materials.
Carrier     : In which Transportation Company Organization Required Materials 
              Transportation company Name.

Open the RFQ Form

RFQ and Quotations=>RFQ's 
select TYpe and Dates and so on
enter the Items details at line level
select terms button enter the Terms and Condition Details
Select the Price Braks button enter the Price break details
Save
Select the suppliers button enter the suplier details (Who are receiving this Document)
Select the Button called Add from List to Include the supplier list automatically.

 Buyer Name     : TABLE (Internally buyer ID should pass)  - Optional
     


RFQNo               Shipto
Type         Billto
Due   date        Curr
Close date        Total
creation date       User(created_by)

Lineno    Item     UOM  Price   Shipno   Qty   Price  Discount   
-----     





















Quotations:
===========
Quotation is another purchasing document we will receive from the Supplier which 
contains the supplier quote details , Price, Payment terms and so on.

Whatever the quotations we have received from the supplier we will enter in the system
through form.

We have three types of Quotations 1)Bid 2)Catalog 3)Standard

For Bid RFQ      we will  receive Bid      quotation from the Supplier 
For Catalog RFQ  we will  receive Catalog  quotation from the Supplier 
For Standard RFQ we will  receive Standard quotation from the Supplier.

After enter all the quotations in the system management will do quote analysis as per
that one best quotation will be elected as Purchase Order.

    Quotation Report
    
    Item Name   (Table Value set MTL_SYSTEM_ITEMS_B   Segment1)
    
QuoteNo Type  Cdate Supplier Site ContactPerson Buyer   Created(UserName) 



po_headers_all
po_lines_all
mtl_system_items_b
po_vendors
po_vendor_sites_all
po_vendor_contacts
per_all_people_f
fnd_user


Auto Create:
============
It is one of the Purchasing feature to create the RFQ and  PO documents automatically
by using requisition lines.

1)Create Requisition and approve
2)Open the AutoCreate form
3)Select Clear button enter the RequisitionNO
4)Select find button which will shows all the requisition lines 
  select the lines whatever we want to include into the RFQ
5)select Action = Create to create new RFQ
    AddTo  to add lines to exisiting to RFQ
6)Select DocumentType = RFQ    
7)select Automatic button which will create RFQ document automatically .

Purchase Order : 
================ 
PO is one of the Main document which will be prepared and approved by the buyer and
send it to the supplier. which contains the following information
terms and Conditions
Items deails
Qty,Price
Distiribution and Shipment Details and so on.

We have four types of Purchase Order 1)STANDARD
         2)PLANNED 
         3)BLANKET
         4)CONTRACT  

Purchase Orders=> Purchase Orders
Open the PO form enter the Inforamtion at header level select line level inforamtion
enter the items and quantity,price details
select shippments button enter the shippment details select the Distributions button 
enter the Distribution Detauils.
Save
Select the Button called Approve (Uncheck Email Check Box) , Document will be submitted
for approval.
open the Purchase Order summary form  enter PO number Select Find button we can find
the status of the Purchase order.
Goto Tools menu 
Action History => We can find who hs submitted for Approve /Reject /Cancel details
Copy Document  => To Create Another PO based on this PO
Control        => To Close the Purchase Order or to cancel the Purchase Order.

  Purchase Order Report
  =====================

POno :   Buyer:
Potype :   Supplier:
ShipTo :   Supplier  Site:
BillTo :   Contact :
Cdate :   Status :             POTotal  :

payment Terms:            Fright Charges:        FOB:    Carrier:

Lineno  Item  Desc  Qty  price  Shipno  ShiptoLoc  ShipToOrg Qty Distno Distqty Requestor
-----   ----  ----  ---  -----  ------   --------  --------- ---  -----  ------ ------  


    






















KFF AND KFF vs. DFF: Comparison


KFF (Key fLex Fields)
=====================

KFF will be used to Capture the Key Information in code language for every code
there will be specific meaning in the application.

For Ex: we can find some of the fileds like follows

Code Combination  01-001-1540-1234-0000

  01-Operations
 001-HRMS
1540-Furniture
1234-Sales Account
0000-No Product

 Description     : Operations-HRMS-Furniture-Sales Account-No Prodcut

like this we can find the meaning in the application for every code.

We will use the Segment Columns to Capture the KFF Data.
We can find the Segment coumns in most of the Tables like 
SEGMENT1,SEGMENT2,SEGMENT3,..........SEGMENT30.

Diff Between DFF and KFF

DFF     KFF
-----     ---
1)DFF Will be used to capture the Extra 1)KFF will be used to Capture the Key 
  Information.                            Information

2)ATTRIBUTE Columns will be used         2)SEGMENT columns will be used

3)We can have max DFF in the Application 3)We have 30KFF already defined by Oracle 
  there is no Limit       we can customize existing KFF. We are not
        suppose to define the new KFF. We will not
        get support from Oracle.
4)In DFF we will Context Field to define  4)In KFF we will define Structure Column 
  Multiple Strutures      to define the Multiple Structures.
P_FLEXDATA: Is a Lexical parameter will be used to store the default
 value as concatenation of all the segment columns.
This is required because if client changes the segment structure 
from front end again we have to change all the structure.
instead of that we can concatenate all the segments.

lexical parameter means datatype :char width : min 600

p_struct_num:
It will be used to store the  kff structure number which is required
if KFF is having the multiple structures.
Ex: 101 default value

FNDFLEXSQL: 
----------
This is One of the User exit will be used to retrive the segment 
values from database and will be used in the before report trigger
Parameters:
CODE              -KFF Code
num               -KFF structure Number
appl_short_name   -KFF Application ShortName
OutpuT            -Lexical parameter Name
Display           -Display all the segments
Mode              -'SELECT'


FNDFLEXIDVAL:
-----------
This user exit we will define inside of the formuls column to display
the data in the layout.
define the formula column call the user exit with follwoing parameters
Parameters:
CODE              -KFF Code
num               -KFF structure Number
appl_short_name   -KFF Application ShortName
OutpuT            -Lexical parameter Name
Display           -Display all the segments
Mode              -'SELECT'
data    -Lexical Parameter Name
Value             -Formula Column Name

Note :
To Display the KFF description we will define one more formula column
and we will call again 'FND FLEXIDVAL' user exit with parameter called
'Description' instead of 'Value' Parameter.

Interfaces


Interfaces:
   -------------


Interface is one of the Program which will be used to transfer the data from Oracle
database tables in to flat file   (or)
Flat files      into  Database tables

We have two types of Interfaces.

1)Inbound Interface
2)outbound Interface

Outbound Interface will be used to extract the data from oracle Database tables into 
the flat files.

Inbound Interface will be used to upload the data from legacy system (Flat files) into
Oracle Applications base tables.

While developing the outbound Interface we will use UTL_File to Extract the data.
While Developing the Inbound interface  we will use SQL * loader to import the data 
into base taqbles.
Converstion Vs Interfaces

Interfaces:
It is schedule concurrent Process which will be executed multiple times
We will not be knowing flat file Volume
We need to handle all the expected exceptions
Error Reports and sending mail alerts, If any error occurs
Only in Enhancement or customization projects

Conversion:
One time data transfer
We will be know exact falt file Volume
No need to know the exceptions
Not required to upload all records
Only in Implementation,Migration or up-gradation projects
UTL_FILE Package :
==================

this is One of the PL/SQL Package which will be used to transfer the data
from table to files
from files to tables

But when we are working for file to table we will use SQl *Loader
to transfer from table to file we have no alternative we have to use UTL_FILE.

We will use following three functions to generate the file.

1)Utl_File.fopen     = To open (or) Create the file
2)Utl_File.Put_line  = To Transfer the data into the File.
3)Utl_File.fclose    = To close the File after Data transfer.



outbound Interface Process:
=============================

1)Develop the PL/SQL Program (Either Procedure or Package)
2)Write the Cursor to retrieve the data from database tables.
3)Create file or Open the File by using UTL_File.fopen().
4)Open the Cursor
5)If any validations are there write the validations
6)Transfer the Data into File by using UTL_File.Put_Line().
7)Close the Cursor.
8)Close the File by using UTL_File.fclose();
9)Register the Procedure or Package as Concurrent Program and submit from SRS Window.



For Ex : We required the flat file with following Format.

Supplierno,Supliername,Cdate,Sitename


Develop the Program to Transfer Supplier Purchase orders datainto file


Supplier No from
Supplier No To  

PoNumber,POtype,Amount,Cdate,No,Name,Site


Validations:

1)If Parameters are null select all the supplier details
2)If 'from' is given  'To' is not given take till Last Supplier
3)If 'To' is given and 'from' is not given take from first.
4)If Purchase order amount is more then 3500 then only transfer into file.
 

   




























FLEXFIELDS


FLEXFIELDS:
===========
 Flexfield are made up with Attribute columns or Segment columns . 
which are more flexible than the normal fields.
we have two type of flexfields
1)DFF (Descriptive Flex Field)
2)KFF (Key Flex Field)

DFF: It will be used to capture the Extra information from the end user 
without change the code in the form and without Alter the DB object.
     ATTRIBUTE Columns will be used to Capture the DFF data.

KFF: it will be used to Capture the Key information from the User 
     in code language for every code there will be a specific meaning.
     SEGMENT Columns will be used Capture the KFF Data

We can find all the flexfield details in Application Developer 
Responsibility

Flexfield=>Descriptive=>register=> CTRL+F11 for all DFF
Flexfield=>Key        =>register=> CTRL+F11 for all KFF

We will Use the Segment form to Customize the DFF.

DFF CUSTOMIZATION STEPS


DFF CUSTOMIZATION:
1)Open the form where DFF is Implemented. and Query the Data

2)find the DFF name from Help Menu =>Diagnastcs =>Examine
    Select  $DESCRIPTIVE_FLEXFIELD$ in the Block field
    select  DFF name in the "Field"
    we will get the DFF Title in the Value field.
 Copy the DFF title 

3)goto Application Developer Responsibility.
 flexfield=>Descriptive=>register

4)Query the records by using the  DFF Title.
 Select columns button and find wether Attribute
  columns are enabled or disabled.

5)Goto Segments form and Query the records by using Title.

6)Uncheck the Check box called "freeze Flexfield Defination"

7)Select Segents button and enter the new fields and save transactions.

8)Check the check box called "freeze Flexfield Defination" 
and click the Compile Button.

9)System will change the DFF structure and creates 
a descriptive flexfield View.

Diff Between InboundInterface and Conversion:


Diff Between InboundInterface and Conversion:
===================== ================

Interface         Conversion
=========         ==========

1)Interface will be used to upload the   1)Conversion is one-Time Data Transfer
  data multiple times.
 Regularley every week or month or day

2)Client Will be using Legacy system. 2)Client will use Only ORacle Applications.
  and also Oracle Applications                      once data is uploaed from legacy then legacy 
       system will be closed.

3)We will not be knowing the Data file  3)here we will be knowing the data file volume
  volume.             exactley.
4)In Customization and as well as  4)Normally in the Implementation Porjects we 
 implementation projectes we will be      will be using.
  developing Interface.

PURCHASE ORDER INTERFACE(CODE)


PURCHASE ORDER INTERFACE                                                       
                                                                     
                                                                     
                                             
 CREATE OR REPLACE PROCEDURE PO_Int(Errbuf  OUT VARCHAR2,
                           Retcode OUT VARCHAR2) AS
CURSOR c1 IS SELECT * FROM xx_staging_headers;
CURSOR c2 IS SELECT * FROM xx_staging_lines1;
l_vendor_id number(10);
l_item      varchar2(150);
l_flag     varchar2(4) default 'A';
l_msg      varchar2(200);
BEGIN
DELETE FROM PO_HEADERS_INTERFACE;
DELETE FROM PO_LINES_INTERFACE;
COMMIT;
FOR x1 IN c1 LOOP
 BEGIN
   SELECT vendor_id
   INTO   l_vendor_id
   FROM po_vendors
   WHERE vendor_name = x1.VENDOR_NAME;
--   AND   ORG_ID = Fnd_Profile.Value('ORG_ID');
 EXCEPTION
   WHEN OTHERS THEN
    l_flag        := 'E';
    l_vendor_id := 0;
    l_msg       := 'Vendor id is Not in SYSTEM';
 END;
  IF l_flag != 'E' THEN
     INSERT INTO po_headers_interface
   (
   INTERFACE_HEADER_ID
  ,BATCH_ID
  ,ACTION
   ,ORG_ID
  ,DOCUMENT_TYPE_CODE
  ,CURRENCY_CODE
  ,AGENT_NAME
  ,VENDOR_NAME
  ,VENDOR_SITE_CODE
  ,SHIP_TO_LOCATION
  ,BILL_TO_LOCATION
  ,creation_date
  ,APPROVAL_STATUS
  ,APPROVED_DATE
  ,FREIGHT_CARRIER
  ,FOB
  ,FREIGHT_TERMS
)
VALUES
(
   x1.INTERFACE_HEADER_ID
  ,x1.batch_id
  ,x1.action
  ,x1.org_id                                    --"Puffer-Sweiven"
  ,x1.document_type_code                            --done
  ,x1.CURRENCY_CODE                                              --done
  ,x1.AGENT_NAME                  --done
  ,x1.VENDOR_NAME
  ,x1.VENDOR_SITE_CODE
  ,x1.SHIP_TO_LOCATION
  ,x1.BILL_TO_LOCATION
  ,SYSDATE-10                            --done
  ,x1.APPROVAL_STATUS
  ,SYSDATE                               --done
  ,x1.FREIGHT_CARRIER
  ,x1.FOB
  ,x1.FREIGHT_TERMS
 );
end if;
END LOOP;
FOR x2 IN c2
LOOP
l_flag := 'A';
--Item Validation
begin
select segment1
into   l_item
from mtl_system_items_b 
  where segment1        = x2.item
    AND ORGANIZATION_ID = fnd_profile.value('ORG_ID');
exception
when others then
    l_flag        := 'E';
    l_vendor_id := 0;
    l_msg       := 'Item is not valid Item';
 END;
--End of the Item Validation
 if  l_flag != 'E' then
 INSERT INTO PO_LINES_INTERFACE
 (
 INTERFACE_LINE_ID
  ,INTERFACE_HEADER_ID
  ,LINE_NUM
  ,SHIPMENT_NUM
  ,LINE_TYPE
  ,ITEM
  ,ITEM_DESCRIPTION
  ,item_id
  ,UOM_CODE
  ,QUANTITY
  ,UNIT_PRICE
  ,SHIP_TO_ORGANIZATION_CODE
  ,SHIP_TO_LOCATION
  ,NEED_BY_DATE
  ,PROMISED_DATE
  ,list_price_per_unit
)
VALUES
(
   x2.INTERFACE_LINE_ID
  ,x2.INTERFACE_HEADER_ID
  ,x2.LINE_NUM
  ,x2.SHIPMENT_NUM
  ,x2.LINE_TYPE
  ,x2.item
  ,x2.item_description
  ,x2.item_id
  ,x2.uom_code
  ,x2.quantity
  ,x2.unit_price
  ,x2.SHIP_TO_ORGANIZATION_CODE
  ,x2.ship_to_location
  ,SYSDATE                              --done
  ,SYSDATE                              --done
  ,x2.list_price_per_unit
);
end if;
END LOOP;
COMMIT;
END PO_Int;
/

PURCHASE ORDER QUERY


         PURCHASE ORDER QUERY                                                            
                                                                     
                                             
SELECT PHA.PO_HEADER_ID ,
    pha.SEGMENT1,
    pha.revision_num,
    pha.type_lookup_code,
    trunc(pha.creation_date) Cdate,
    PV.VENDOR_NAME        ,
    PVS.VENDOR_SITE_CODE    ,
    (PVC.last_NAME||','||PVC.firsT_NAME)  ContactName,
    H1.LOCATION_CODE       ShipTO,
    H2.LOCATION_CODE       BillTo,
    pha.currency_code      CUrr,
    PPF.FULL_NAME       Buyer,
    pha.AUTHORIZATION_STATUS     Status,
    pha.COMMENTS        PODesc,
    SUM(pla.quantity*pla.unit_price)         PoTotal
FROM  PO_HEADERS_ALL PHA,
   PO_VENDORS  PV ,
   PO_VENDOR_SITES_ALL PVS,
   PO_VENDOR_CONTACTS  PVC,
   HR_LOCATIONS    H1 ,
   HR_LOCATIONS    H2 ,
   PER_ALL_PEOPLE_F   ppf,
   PO_LINES_ALL    pla
WHERE pha.SEGMENT1         = '3478'
AND   pha.TYPE_LOOKUP_CODE = 'STANDARD'
AND   PV.VENDOR_ID     = PHA.VENDOR_ID
AND   PVS.VENDOR_SITE_ID   = PHA.VENDOR_SITE_ID
AND   PVC.VENDOR_CONTACT_ID= PHA.VENDOR_CONTACT_ID
AND   H1.LOCATION_ID    = PHA.SHIP_TO_LOCATION_ID
AND   H2.LOCATION_ID    = PHA.BILL_TO_LOCATION_ID
AND   ppf.person_id     = PHA.AGENT_ID
AND   pha.po_header_id    = PLA.po_header_id
GROUP BY 
pha.SEGMENT1,
pha.revision_num,
pha.type_lookup_code,
trunc(pha.creation_date), 
PV.VENDOR_NAME        ,
PVS.VENDOR_SITE_CODE    ,
(PVC.last_NAME||','||PVC.firsT_NAME)  ,
H1.LOCATION_CODE       ,
H2.LOCATION_CODE      ,
pha.currency_code     ,
PPF.FULL_NAME      ,
pha.AUTHORIZATION_STATUS    ,
pha.COMMENTS ,
PHA.PO_HEADER_ID     -   12160


Line Level 
===========
SELECT  PLA.LINE_NUM,
  PLT.LINE_TYPE,
  MSI.SEGMENT1  Item,
  (mc.segment1||','||mc.segment2) Category,
  msi.description   Itemdesc,
  MSI.PRIMARY_UOM_CODE UOM,
  pla.quantity,
  pla.unit_price
FROM    PO_LINES_ALL       PLA,
  PO_LINE_TYPES      PLT,
  MTL_SYSTEM_ITEMS_B MSI,
  MTL_CATEGORIES    MC
WHERE   PLA.PO_HEADER_ID      = 12160
AND  PLA.LINE_TYPE_ID      = PLT.LINE_TYPE_ID
AND  MSI.ORGANIZATION_ID   = PLA.ORG_ID
AND  MSI.INVENTORY_ITEM_ID = PLA.ITEM_ID
and  mc.CATEGORY_ID    = pla.CATEGORY_ID




POSITION DEFINE IN HRMS


   POSITION DEFINE :                                          
Job     Positions 
====        ==========     

Director  = Managing Director

Manager   = Finance Manager
            Production Manager

Clerk     = Senior Clerk
     Assisten Clerk

operators = Mechine Operator
            System operator

1)Open the Position Form 
  Work structure=>position=>Description
2)Select New Button =>Set Effective date
3)Enter the Position Name as per the Position KFF structure
4)Select Position type  (Ex : Shared)

Single Incumbent : 
   meaning that only one employee is allowed to hold the position at any time
Shared : 
   meaning there can be several incumbents, up to the value of the FTE field
Pooled (Public Sector only) :
   meaning the position is loosely defined so rules about FTE and hours are not enforced 
   by the system
None : which you can select if you do not need to record position types

5)Select the Organization Name where we can use the Position
6)Select the Job Under which Job we are defining this Position
7)Select Hiring Status = 'Active'
  
Active   : We can Recruit the Employees
Praposed : We can not recruit Employees Position is Under Process.

8)Goto Hirng Information Tab enter the FTE and Heade Count
  FTE        =FUll Time Equivalent
  Head Count =Number of Employes we can recruit under this Position.

Define Position hierarchy:
==========================
Workstructures=>Position=>Hierarchy

1)Enter the Position hierarchy  Name and check the Primary check Box
  Save
2)Enter the Version number and Date From
  save
3)Place the Cursor in the Position Name Field Press CTRL+F11
4)Go for Defining the Subordinates as per the requirement by using Down and Up Arrow marks
  Save.
5)open the Diagrammer form we can find the Position Hierarchy Diagramatically chart wise
  and we can also find the Position Holder Details.

                 MD

FM       PM

SC      MO
JC      SO

Mass Move:
==========
If we are going to Transfer the Position from One organization to Another Organization then
we will go for using the Massmove to transfer the Positions
Enter the Name
and Select Source and Target Organization 
    select Positions Button and select Positions which we would like to transfer
    select the button called Execute.

PURCHASING END TO END SETUP STEPS:


PURCHASING END TO END SETUP STEPS:
Attach the Profile HR:user Type = HR with Payroll User
1)Locations in HRMS
  (US HRMS Manager =.Work Structure=>Location)
2)Business groups in HRMS
  Assign the Profiles
SOB Creation
Create Inventory Work Calendar attach to Inventory organization
Inventory=>Setup=>Organizations=>Calendar=>Create Calendar=>Tool Menu=>build

3)Create all Organization(SOB,LE,OU,IO)
4)Organization hierarchy 
5)jobs
6)Positions
7)Position hierarchy
8)Create Two Employee 1)Clerk 2)Manager Assign the manager to the Clerk.
9)Submit Program from SRS Window Fill Employee Hierarchy.
9)Creation of Combo Responsibility(PO,INV,GL,AP) attach Menus, attach RequestGroup
10)Attach the Profiles
    Businesgroup
    Set of Books
    Operating Units
Attach the Profile called (MO:Operating Unit for the Responsibility) 
11)Run the Porgram called Replicate Seed Data.
12)Goto Purchasing Assign the Set of Books.  
PO=>Setup=>Organization=>Set of Books=>Choose



13)Purchasing Options
14)Recceving Options
15)Financial options
16)Find the Documents and assign the Approval hierarchy (IBM hierarchy)
17)Assign the Approve Hierarchy to the All Documents.
  Purchasing =>Setup=>Purchasing=>Document Types.
18)Define the Approval Group (Setup=>Approval=>approval Groups)
   Assign the Hierarchy to the Document Types.
   Purchasing=>Document Types.
19)Assign Approval groups to the Documents.
20)Item Creation in Inventory (Inv=>item=>master Items)
21)Creation SubInventory      (Inv=>Setup=>Organizations=>Subinventories)
22)Create Users from sytem administrator to the Employees.
  Include the Employee names in the Buyers List. 
23)Login with Clerk and create Requisition if limit crossed then goto manager login
   open the notification summary and Approve.

Employee Creation


Employee Creation :
====================

1)After applicant is accepted the offer we will go for creation of the employeement
  then we will select the Peoiple window

People => Enter and Maintain

Select type = Employee ( we can find three types 1)Applicant (peron who has applied for job)
              2)Contingent Worker = For Placement type
                                                 3)Employee  =>Employement

Select new button enter the employee name and other details
select the Action = Employement and enter 
NI Number National Insurenece Number  for UK Localization
SocialSecurityNumber   for US localization.

save
select assignment button enter the Organization
       Job
       Position
       and Grade.

We are suppose to attach the Supervisior and as well as Payroll and salary details.
If we have defined the payroll for employee then we will attach.
We can also capture employee other information by using Others button

For Example : 

Previou Employement
Workpreference
Qualifications
End Employement.
EMPLOYEE CREATION
1)People=>Enter and Maintain
  Select New Button 
2)Enter the Emp First name Last name and select Action = Create Employement 
  and Enter the NI (National Identifier) number
  WE123456A(2Characters 6Digits 1Character).
3)Enter Date of Birth.
 Save
4)Select Assignment button enter the Organization.
                                     Job.
                                     Position.
                                     Grade.
5)We will also attach the Payroll and Salary information here itself.
6)and we will enter Other Information by select Other button.

Terminate Employee:
====================
To Terminate the Employee we have to go to Others Button => Terminate Employeement
 Specify the reason for Termination and Other.

Salary Detail:
================
Employee Salrary Details will be entered in the Salry and Entries buton after assign the
Payroll to the Employee.
Assignment=>Salary. 

Combo Responsibility :


Combo Responsibility :
HRMS
PO
AP
GL

Combo Responsibility :
======================

Menu                                  
====       
Purchasing SuperUser GUI
AP_NAVIGATE_GUI12
INV_NAVIGATE
GL_SUPERUSER
US HRMS Navigator    

Create New Menu :  (ERPMENU)
==================

System ADministrator=>Application=>Menu=> attach all these menus in the field called
SubMenu : 


Request Group Creation:
=======================
System ADministrator =>Security=>Responsibility=>Request
Enter Any Name
Application : Manufacturing

Type 
Applicatoion   generalledger
application   purchasing
application   payables
application   human resource
application       inventory


Create Responsibility:
=======================
Security=>Responsibility=>Define
Enter Name
Application name : Manufacturing
Datagroup     : Standard
Application name : Manufacturing
Request group : Whatever we have created
Menu          : Whatever we have created

save
Attach the Resp to user.