CREATE OR REPLACE TRIGGER EF_STANDARD_WORK_T
AFTER INSERT OR UPDATE of standard_work_time ON EF_STANDARD_WORK_HOURS 
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
WHEN (NEW.GROUP_ID IN (18,19,23,25,27))
DECLARE
Partno    varchar(20);
standard_time  number(8);
CURSOR C_partno(p_model varchar,ss varchar) is select PART_NO from inv_pn where model=trim(p_model) and SUBSTR (part_no, 1, 2)=trim(ss);
BEGIN
  if :new.group_id in (18,19,23) then
    select sum(standard_work_time) into standard_time from ef_standard_work_hours where model=:new.model and group_id in (18,19,23);
    OPEN c_partno(:new.model,'70');
    fetch c_partno into partno; 
    while c_partno%found 
      loop 
        insert into ef_standard_work values (ERP_STANDARD_WORK_sequence.nextval,:new.model,partno,standard_time,3,sysdate,sysdate,0);
        fetch c_partno into partno; 
      end loop;  
    close c_partno;
  else
    begin 
    select sum(standard_work_time) into standard_time from ef_standard_work_hours where model=:new.model and group_id in (25,27);
    OPEN c_partno(:new.model,'95');
    fetch c_partno into partno; 
    while c_partno%found 
      loop 
        insert into ef_standard_work values (ERP_STANDARD_WORK_sequence.nextval,:new.model,partno,standard_time,3,sysdate,sysdate,0);
        fetch c_partno into partno; 
      end loop;    
    close c_partno;  
    end;  
  end if;  
   
EXCEPTION
 WHEN OTHERS THEN
   null;
END;