Changeset 18338

Show
Ignore:
Timestamp:
11/12/08 08:25:46 (2 months ago)
Author:
umesha
Message:

bug-210 Form copy seems to copy only half a form

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/core/db/oracle/create-scripts/versions/8.5.0/packages/forms.bdy

    r17925 r18338  
    1313--                       be able to copy checkboxes information in 
    1414--                       form definition page. 
     15-- Umesh       11-12-08  Modified copy_fields and copy_field to enable copying  
     16--                       of calculated fields and their associated formulas 
     17-- 
    1518--================================================================== 
    1619 
     
    461464        where class_id = i_class_id; 
    462465 
     466    -- cursor for getting all calculated fields which need updates 
     467    cursor cal_field_prop_cur(i_class_id in number) is 
     468        select fp.value as old_id, f.field_id as new_id 
     469        from pn_class_field_property fp, pn_class_field f 
     470        where 
     471        f.class_id = fp.class_id AND 
     472        to_char( f.source_field_id ) = fp.value AND 
     473        fp.class_id = i_class_id; 
     474         
     475    -- cursor for getting all calculated field formulas which need updates 
     476    cursor cal_field_formula_cur(i_class_id in number) is 
     477        select ff.op_value as old_id, f.field_id as new_id 
     478        from pn_calculation_field_formula ff, pn_class_field f 
     479        where 
     480        f.class_id = ff.class_id AND 
     481        to_char( f.source_field_id ) = ff.op_value AND 
     482        ff.class_id = i_class_id; 
     483         
    463484    field_rec field_cur%rowtype; 
    464485    v_new_field_id pn_class_field.field_id%type; 
     
    469490    for field_rec in field_cur(i_from_class_id) 
    470491    loop 
     492      begin 
    471493        copy_field(i_from_space_id, i_to_space_id, i_from_class_id, 
    472494                   i_to_class_id, field_rec.field_id, i_created_by_id, v_new_field_id); 
    473495 
     496      exception -- if there is any error in copying field, log error 
     497        when others then 
     498          BASE.LOG_ERROR ('copy_fields', SQLCODE, 'Error copying field:' || field_rec.field_id || ' - ' || SUBSTR(SQLERRM,1,80)); 
     499      end; 
     500       
    474501    end loop; 
    475502 
     
    480507    and class_id = i_to_class_id; 
    481508 
     509 
     510    -- update calculated field referances 
     511    for cal_field_rec in cal_field_prop_cur(i_to_class_id) 
     512    loop 
     513      update pn_class_field_property  
     514        set value = cal_field_rec.new_id 
     515        where value = cal_field_rec.old_id 
     516        and class_id = i_to_class_id; 
     517    end loop;   
     518 
     519    -- update calculated field formula referances 
     520    for cal_field_formula_rec in cal_field_formula_cur(i_to_class_id) 
     521    loop 
     522      update pn_calculation_field_formula 
     523        set op_value = cal_field_formula_rec.new_id 
     524        where op_value = cal_field_formula_rec.old_id 
     525        and class_id = i_to_class_id; 
     526    end loop; 
     527     
    482528end copy_fields; 
    483529 
     
    505551            field_id = i_field_id; 
    506552 
     553    -- Cursor for field formulas 
     554    cursor field_formula_cur(i_class_id in number, i_field_id in number) is 
     555        select * 
     556        from pn_calculation_field_formula 
     557        where 
     558            class_id = i_class_id and 
     559            field_id = i_field_id; 
     560             
    507561    -- Cursor for reading domain values 
    508562    cursor domain_value_cur(i_domain_id in number) is 
     
    662716    end loop; -- field properties 
    663717 
     718    -- Copy all formulas for this field (if available) 
     719    for field_formula_rec in field_formula_cur(i_from_class_id, v_source_field_id) 
     720    loop 
     721        insert into pn_calculation_field_formula ( 
     722            CLASS_ID, 
     723            FIELD_ID, 
     724            ORDER_ID, 
     725            OP_VALUE, 
     726            OP_TYPE) 
     727        values ( 
     728             i_to_class_id, 
     729             v_field_id, 
     730             field_formula_rec.ORDER_ID, 
     731             field_formula_rec.OP_VALUE, 
     732             field_formula_rec.OP_TYPE); 
     733    end loop; -- field formulas 
     734 
    664735    -- Copy the domain values if the domain is not null. 
    665736    if (v_from_domain_id IS NOT NULL) then