Erp100论坛's Archiver

纵横四海 发表于 2008-8-4 13:18

是否可以批量的禁用,删除或者终止要素的有效日期?

现在有很多员工都被分配了信息要素项:日薪信息
是否有一个地方可以批量的一次性作批量的删除,或者终止操作。或者通过在要素项上关闭这个要素来达到这个目的。
不知道是否可以?

我看要素的定义界面上有一个关闭的选项,不知道这个功能是什么作用的?

gaoyiming 发表于 2008-8-4 13:30

批量的删除和批量的终止都是可以的。
[size=2]
[/size]
[size=2][font=宋体]选择“关闭项”的选择框,如果不允许给员工的一个要素再添加任何分录时使用,[color=red]不影响原有的分录[/color],不适合你当前的业务需求。[/font][/size]

1、如果这个要素没有参与过工资单运行,可以批量删除,如果已经运行过了,建议批量终止
批量删除脚本
[quote]
/*1 必须找到 要删除的element Id
--Select * From pay_element_types_f f Where f.element_name Like 'Shift GME_MAG%'
*/
DECLARE
  --out
  v_object_version_number NUMBER;
  p_effective_start_date  DATE;
  p_effective_end_date    DATE;
  p_delete_warning        BOOLEAN;
  --in
  p_effective_date    DATE;
  p_element_entry_id  NUMBER;
  p_element_name      VARCHAR2(240);
  v_person_id         NUMBER;
  n                   NUMBER;
  m                   NUMBER;
  v_assignment_number VARCHAR2(240);
  CURSOR get_not_entry_id/*(p_element_link_id Number) */IS
  
    SELECT f.object_version_number,
           f.element_entry_id,
           f.element_type_id,
           f.assignment_id,
           f.element_link_id,
           f.effective_start_date start_date,
           f.effective_end_date
    --INTO p_object_version_number
      FROM pay_element_entries_f f
     WHERE 1 = 1
     And f.element_type_id=456 ---
     AND SYSDATE BETWEEN f.effective_start_date AND f.effective_end_date
     -- 先带这个上面的 sysdate 条件执行一次,执行完毕之后,去掉这个条件再执行一次
     ORDER BY f.assignment_id;
BEGIN
  n := 0;
  m := 0;
-- For c1 In g_link Loop
  FOR c2 IN get_not_entry_id/*(c1.element_link_id) */LOOP
    m := m + 1;
  
    v_object_version_number := c2.object_version_number;
    pay_element_entry_api.delete_element_entry(p_validate              => FALSE,
                                               p_datetrack_delete_mode => 'ZAP', -- zap 是清除,和 delete的效果一样。
                                               --'ZAP',
                                               --'CORRECTION' ,
                                               p_effective_date        => c2.start_date,
                                               p_element_entry_id      => c2.element_entry_id,
                                               p_object_version_number => v_object_version_number,
                                               p_effective_start_date  => p_effective_start_date,
                                               p_effective_end_date    => p_effective_end_date,
                                               p_delete_warning        => p_delete_warning);
  
  
  END LOOP;
  -- End Loop;
  dbms_output.put_line(n);
  dbms_output.put_line(m);
EXCEPTION
  WHEN OTHERS THEN
    --  O_ERR_CODE := -20001;
    -- O_ERR_MSG  := '調用API删除錯誤!';
  
    dbms_output.put_line(substrb(SQLERRM, 1, 230));
  
END;
[/quote]
2、批量终止,详情见下面的帖子
[url=http://bbs.erp100.com/thread-31209-1-2.html][color=#000000]通过公式来终止循环性要素[/color][/url]
[url=http://bbs.erp100.com/thread-31209-1-2.html]http://bbs.erp100.com/thread-31209-1-2.html[/url]

码砖头的人 发表于 2008-8-4 15:03

该关闭项用于临时关闭某个项用的。以后还可以再打开使用。

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2007 Comsenz Inc.