fdsfdsf

来源:互联网 发布:苹果mac怎么切换中文 编辑:程序博客网 时间:2024/05/04 22:02
create or replace package JG_DealerInStore is
  -- Author  : tuozhengwei
  -- Created : 2010-9-26 21:29:39
  -- Purpose : 经销商入库
 
    type string_array is table of varchar2(100) index by binary_integer;
  type int_array is table of number index by binary_integer;
  
 --入库入口
   procedure in_store
   (
      p_cid in varchar2,                  --企业编号
    p_actor in varchar2,                --操作员
    p_actordate in date,                --入库时间
    p_leng in number,                   --数组长度
    p_drugCodes in string_array,    --JG码
    p_orderIds in string_array,          --入库单编号
    p_toCorpIds in string_array,        --下游企业编号
    p_fmCorpIds in string_array,       --上游企业编号
    p_owCorpIds in string_array,       --第三方物流企业编号
    p_packLayers in int_array,           --包装级别
    p_orderTypes in int_array,          --单据类型
    p_subTypeNo out string_array,    --子类编码
    p_rets out int_array,                   --操作结果
    p_odrType out int_array,            --单号类型
    p_layer out int_array,                  --包装级别
    p_inno out string_array            --出库单号
   );
  
   --入库
   procedure start_instore
    (
      p_drugCode in varchar2,
     p_orderType in number,
     p_layer in number,
     p_ret out number
    );
end JG_DealerInStore;
create or replace package body JG_DealerInStore is
   v_cid varchar2(4);         --企业编号
   v_actor varchar2(20);      --出库操作员
   v_actorDate  date;         --出库时间
   v_orderId varchar2(20);    --出库单号
   v_orderType number;        --出库单类型
   v_fmCorpId varchar2(20);   --上游经销商编号
   v_toCorpId varchar2(20);   --下游经销商编号
   v_owCorpId varchar2(20);   --第三方物流企业编号
   v_drugCode varchar2(25);   --JG码
    v_subno varchar2(30);  --临时子类编号
    v_outno varchar2(30);   --临时出库单号
    v_ordtype number;       --临时单据类型
    v_layer number;            --临时包装级别
    v_ret number;               --临时操作结果状态
       v_amount number; 
         
      procedure in_store
       (
        p_cid in varchar2,                  --企业编号
        p_actor in varchar2,                --操作员
        p_actordate in date,                --入库时间
        p_leng in number,                   --数组长度
        p_drugCodes in string_array,    --JG码
        p_orderIds in string_array,          --入库单编号
        p_toCorpIds in string_array,        --下游企业编号
        p_fmCorpIds in string_array,       --上游企业编号
        p_owCorpIds in string_array,       --第三方物流企业编号
        p_packLayers in int_array,           --包装级别
        p_orderTypes in int_array,          --单据类型
    p_rets out int_array,                   --操作结果
        p_subTypeNo out string_array,    --子类编码
        p_minAmount out int_array,       --最小包装数
        p_odrType out int_array,            --单号类型
        p_layer out int_array,                  --包装级别
        p_inno out string_array            --出库单号
     )is
   v_count number := 0;
   begin
     v_cid := p_cid;
     if v_cid is null then
      raise_application_error(-20000,'企业编号不能为空!');
    end if;
    
    v_count := p_drugCodes.count;
    if v_count <> p_leng then
       raise_application_error(-20011,'数组长度不正确!');
    end if;
    
    if v_count > 1000 then
      raise_application_error(-20012,'数组长度超过1000!');
    end if;
    
    v_actor := p_actor;
    v_actorDate := p_actordate;
    
    for i in p_drugCodes.first..p_drugCodes.last
      loop
       begin
         v_ret := 0;
        v_subno := '';
        v_amount :=0;
         
        start_instore
        (
             p_drugCodes(i),
             p_orderTypes(i),
          p_packLayers(i),
          v_ret
        );  
        p_rets(i) := v_ret;
        p_subTypeNo(i) := v_subno;
        p_minAmount(i) := v_amount;
        p_odrType(i) := p_orderTypes(i);
        p_layer(i) := p_packLayers(i);
        p_inno(i) := p_orderIds(i);
       end;
      end loop;
   end in_store;
    
     --入库
     procedure start_instore
       (
         p_drugCode in varchar2,
         p_orderType in number,
     p_layer in number,
     p_ret out number
    )
    is
    qrySql varchar2(500) := 'select pid,outsideid,midsideid,insideid from Drug_JG'||v_cid|| ' where DrugCode =:1';
    qrySql2 varchar2(500) := 'select DrugCode,ParentCode from Drug_Dataq'||v_cid|| 'where DrugCode =:1';
    qrySql3 varchar2(500) :='select pstatus,splitflag from Data_Dealer_S'||v_cid|| ' where pid =:1 and outsideid =:2 and midsideid =:3 and insideid =:4';
    updateSql varchar2(800) :='update Data_Dealer_S'||v_cid|| ' set inno';
    updateSql2 varchar2(800) :='update Data_Dealer_S'||v_cid|| ' set pstatus';
    updateSql3 varchar2(800) :='';
   
    type t_cur is ref cursor;
         v_cur t_cur;
    begin
     if p_layer = 1 then
         p_ret := 3; --该码是盒码
     else
           open v_cur for qrySql using p_drugCode;
      end if;
    end start_instore;
end JG_DealerInStore;