ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Xxmm_Move_Order_Print

Xxmm_Move_Order_Print

原创 Linux操作系统 作者:shelleywu 时间:2012-04-26 14:55:30 0 删除 编辑
CREATE OR REPLACE Package Xxmm_Move_Order_Print As

    /*每页中允许的最大记录数*/
    Page_Max_Rowcount Constant Number := 7;

    Cursor c_Lines_List(p_Id Number) Is
        Select b.Segment1 Item_Name,
                     b.Description,
                     b.Primary_Unit_Of_Measure Uom,
                     decode(l.back, 'N', '前段', 'Y', '后段', 'S', '共享', '') back,
                     l.Subinventory,
                     l.Required_Qty,
                     l.Issued_Qty,
                     l.Tool_Id,
                     l.Remark
            From Xxmm_Inv_Transaction_Lines l, Mtl_System_Items_b b
         Where l.Organization_Id = b.Organization_Id
             And l.Item_Id = b.Inventory_Item_Id
             And l.Inv_Header_Id = p_Id;

    v_Organization_Id       Number;
    v_Inv_Header_Id         Number;
    v_Req_Num               Varchar2(32);
    v_Cancelled_Flag        Varchar2(1);
    v_Transaction_Type      Varchar2(32);
    v_Transaction_Type_Name Varchar2(128);
    v_Req_Date              Varchar2(32);
    v_Requestor_Name        Varchar2(128);
    v_Req_Section           Varchar2(512);
    v_Cost_Center           Varchar2(32);
    v_Vendor_Name           Varchar2(512);
    v_Move_Order_Type       Varchar2(1);
    v_Rownum                Number := 0;
    v_Rowcount              Number := 0;
    v_Req_Sum               Number := 0;

    v_Err_Msg Varchar2(1024);
    v_Self_Exception Exception;

    Procedure Print(Inv_Header_Id In Varchar2);

    Procedure Html_Table_Head;

    Procedure Html_Table_Lines_Head;

    Procedure Html_Lines_Req_Sum;

    Procedure Html_Lines_Foot(p_Page Varchar2);

    Procedure Html_Style;

    Procedure Html_Table_Open(p_Page Varchar2);

    Procedure Html_Table_Close;

    Procedure Html_Page_Break;

    Procedure Insert_Break_Line(p_Page Varchar2);

    Function Get_Record_Count(p_Id Number) Return Number;

End Xxmm_Move_Order_Print;



CREATE OR REPLACE Package Body Xxmm_Move_Order_Print As

    Procedure Print(Inv_Header_Id In Varchar2) Is
    Begin
        Begin
            Select To_Number(Inv_Header_Id) Into v_Inv_Header_Id From Dual;
        Exception
            When Others Then
                If Sqlcode = '-1722' Then
                    v_Err_Msg := '传入的参数不是数字型字符串!';
                
                    Raise v_Self_Exception;
                Else
                    v_Err_Msg := '在传入的参数是否为数字型字符串时出现异常(' || Sqlerrm || ' )!';
               
                    Raise v_Self_Exception;
                End If;
        End;
   
        Begin
            Select h.Organization_Id,
                         h.Req_Num,
                         h.Transaction_Type,
                         To_Char(h.Creation_Date, 'YYYY/MM/DD') Req_Date,
                         h.Byd_Requestor_Name Requestor_Name,
                         h.Req_Section Requestor_Section,
                         h.Cost_Center,
                         x.Vendor_Name,
                         h.Cancelled_Flag
                Into v_Organization_Id,
                         v_Req_Num,
                         v_Transaction_Type,
                         v_Req_Date,
                         v_Requestor_Name,
                         v_Req_Section,
                         v_Cost_Center,
                         v_Vendor_Name,
                         v_Cancelled_Flag
                From Xxmm_Inv_Transaction_Headers h,
                         (Select Pvs.Org_Id,
                                         Pv.Vendor_Id,
                                         Pv.Vendor_Name,
                                         Pvs.Vendor_Site_Id
                                From Po_Vendor_Sites_All Pvs, Po_Vendors Pv
                             Where Pvs.Vendor_Id = Pv.Vendor_Id) x
             Where h.Org_Id = x.Org_Id(+)
                 And h.Vendor_Id = x.Vendor_Id(+)
                 And h.Vendor_Site_Id = x.Vendor_Site_Id(+)
                 And h.Inv_Header_Id = v_Inv_Header_Id;
        Exception
            When No_Data_Found Then
                v_Err_Msg := '没有找到对应的数据,请确认输入的参数的值是否正确!';
           
                Raise v_Self_Exception;
            When Others Then
                v_Err_Msg := '在查找对应的Header数据时出现异常(' || Sqlerrm || ' )!';
           
                Raise v_Self_Exception;
        End;
   
        /*Transaction_Action_Id =1,表示Issue from stores,即领料,=27,表示Receipt into stores,即缴库*/
        Begin
            Select Decode(Mtt.Transaction_Action_Id, 1, 'I', 27, 'R', Null) Move_Order_Type,
                         Mtt.Transaction_Type_Name
                Into v_Move_Order_Type, v_Transaction_Type_Name
                From Mtl_Transaction_Types Mtt
             Where Mtt.Attribute1 = v_Transaction_Type
                 And Trunc(Nvl(Mtt.Disable_Date, Sysdate + 1)) > Trunc(Sysdate);
        Exception
            When Too_Many_Rows Then
                v_Err_Msg := '该Transaction Type同时存在多笔生效记录。';
           
                Raise v_Self_Exception;
            When Others Then
                v_Err_Msg := '在查询User Define Transaction Type时出现异常(' || Sqlerrm || ')';
           
                Raise v_Self_Exception;
        End;
   
        If v_Cancelled_Flag = 'Y' Then
            v_Err_Msg := '该笔交易已经取消,则不能打印。';
       
            Raise v_Self_Exception;
        End If;
   
        /*取得记录数*/
        v_Rowcount := Get_Record_Count(v_Inv_Header_Id);
   
        Htp.Htmlopen;
        Htp.Headopen;
        Htp.p('');
        Htp.Title(v_Transaction_Type_Name || '单 -- ' || v_Req_Num);
        Html_Style;
        Htp.Headclose;
        Htp.Bodyopen;
   
        If v_Rowcount <= Page_Max_Rowcount Then
            Html_Table_Open('1');
            Html_Table_Head; /*输出Html Header*/
            Html_Table_Lines_Head; /*输出Lines Header*/
            /*循环输出Lines*/
            For Rec In c_Lines_List(v_Inv_Header_Id) Loop
                Htp.p('');
                Htp.p('' || Rec.Item_Name || '');
                Htp.p('' || Rec.Description || '');
                Htp.p('' || Rec.Uom || '');
                Htp.p('' || Rec.back || '');
                Htp.p('' || Rec.Subinventory || '');
                Htp.p('' || Rec.Required_Qty || '');
                Htp.p('' || Rec.Issued_Qty || '');
                Htp.p('' || Rec.Tool_Id || '');
                Htp.p('' || Rec.Remark || '');
                Htp.p('');
           
                v_Req_Sum := v_Req_Sum + Rec.Required_Qty;
            End Loop;
            --Html_Lines_Req_Sum;
            Html_Table_Close;
            Html_Table_Open('1');
            Insert_Break_Line('1');
            Html_Lines_Req_Sum;
            Html_Table_Close;
            Html_Table_Open('1');
            Html_Lines_Foot('1');
            Html_Table_Close;
       
            Html_Table_Open('2');
            Html_Table_Head; /*输出Html Header*/
            Html_Table_Lines_Head; /*输出Lines Header*/
            /*循环输出Lines*/
            For Rec In c_Lines_List(v_Inv_Header_Id) Loop
                Htp.p('');
                Htp.p('' || Rec.Item_Name || '');
                Htp.p('' || Rec.Description || '');
                Htp.p('' || Rec.Uom || '');
                Htp.p('' || Rec.back || '');
                Htp.p('' || Rec.Subinventory || '');
                Htp.p('' || Rec.Required_Qty || '');
                Htp.p('' || Rec.Issued_Qty || '');
                Htp.p('' || Rec.Tool_Id || '');
                Htp.p('' || Rec.Remark || '');
                Htp.p('');
            End Loop;
            --Html_Lines_Req_Sum;
            Html_Table_Close;
            Html_Table_Open('2');
            Insert_Break_Line('2');
            Html_Lines_Req_Sum;
            Html_Table_Close;
            Html_Table_Open('2');
            Html_Lines_Foot('2');
            Html_Table_Close;
        Else
            /*当Lines中的行数超过规定的最大行数,则一式两份*/
            Html_Table_Open('1');
            Html_Table_Head; /*输出Html Header*/
            For Rec In c_Lines_List(v_Inv_Header_Id) Loop
                If Mod(v_Rownum, Page_Max_Rowcount * 2) = 0 Then
                    Html_Table_Lines_Head; /*输出Lines Header*/
                End If;
           
                Htp.p('');
                Htp.p('' || Rec.Item_Name || '');
                Htp.p('' || Rec.Description || '');
                Htp.p('' || Rec.Uom || '');
                Htp.p('' || Rec.back || '');
                Htp.p('' || Rec.Subinventory || '');
                Htp.p('' || Rec.Required_Qty || '');
                Htp.p('' || Rec.Issued_Qty || '');
                Htp.p('' || Rec.Tool_Id || '');
                Htp.p('' || Rec.Remark || '');
                Htp.p('');
           
                v_Rownum  := v_Rownum + 1;
                v_Req_Sum := v_Req_Sum + Rec.Required_Qty;
            End Loop;
            v_Rownum := 0;
            Html_Lines_Req_Sum;
            Html_Lines_Foot('1');
            Html_Table_Close;
            Html_Table_Open('1');
            Html_Table_Close;
       
            Html_Page_Break;
       
            Html_Table_Open('2');
            Html_Table_Head; /*输出Html Header*/
            For Rec In c_Lines_List(v_Inv_Header_Id) Loop
                If Mod(v_Rownum, Page_Max_Rowcount * 2) = 0 Then
                    Html_Table_Lines_Head; /*输出Lines Header*/
                End If;
           
                Htp.p('');
                Htp.p('' || Rec.Item_Name || '');
                Htp.p('' || Rec.Description || '');
                Htp.p('' || Rec.Uom || '');
                Htp.p('' || Rec.back || '');
                Htp.p('' || Rec.Subinventory || '');
                Htp.p('' || Rec.Required_Qty || '');
                Htp.p('' || Rec.Issued_Qty || '');
                Htp.p('' || Rec.Tool_Id || '');
                Htp.p('' || Rec.Remark || '');
                Htp.p('');
           
                v_Rownum := v_Rownum + 1;
            End Loop;
            v_Rownum := 0;
            Html_Lines_Req_Sum;
            Html_Table_Close;
            Html_Table_Open('2');
            Html_Lines_Foot('2');
            Html_Table_Close;
        End If;
   
        Htp.Bodyclose;
        Htp.Htmlclose;
    Exception
        When v_Self_Exception Then
            Htp.p(v_Err_Msg);
        When Others Then
            Htp.p(Sqlerrm);
    End;

    Procedure Html_Table_Head Is
    Begin
        Htp.p('');
        Htp.p('');
        Htp.p('' ||
                    v_Transaction_Type_Name || '单');
        Htp.p('');
   
        Htp.p('');
        Htp.p('申请日期:' || v_Req_Date || '');
        Htp.p('领料单号:' || v_Req_Num || '');
        Htp.p('');
        Htp.p('');
        Htp.p('申  请  人:' ||
                    v_Requestor_Name || '');
        Htp.p('生产厂商:' || v_Vendor_Name || '');
        Htp.p('');
        Htp.p('');
        Htp.p('领料科室:' || v_Req_Section || '');
        Htp.p('发料部门:' || '2200' || '');
        Htp.p('');
        Htp.p('');
        Htp.p('成本中心:' || v_Cost_Center || '');
        Htp.p('');
        Htp.p('');
    End;

    Procedure Html_Table_Lines_Head Is
    Begin
        Htp.p('');
        Htp.p('料号');
        Htp.p('物料描述');
        Htp.p('单位');
        Htp.p('前后段');
        Htp.p('仓库');
        Htp.p('申请数量');
        Htp.p('发料数量');
        Htp.p('Tool ID');
        Htp.p('备注');
        Htp.p('');
    End;

    Procedure Html_Lines_Req_Sum Is
    Begin
        Htp.p('');
        Htp.p('合计:');
        Htp.p('' || To_Char(v_Req_Sum) || '');
        Htp.p('');
    End;

    Procedure Html_Lines_Foot(p_Page Varchar2) Is
    Begin
        Htp.p('');
        Htp.p('');
        Htp.p('申请人:___________');
        Htp.p('领料部门主管:___________');
        Htp.p('物控人员:___________');
        Htp.p('发料人:___________');
        Htp.p('');
        Htp.p('');
        Htp.p('');
   
        If p_Page = '1' Then
            Htp.p('第一联');
        Elsif p_Page = '2' Then
            Htp.p('第二联');
        End If;
        Htp.p('');
        Htp.p('');
        IF v_Move_Order_Type = 'I' Then
            Htp.p('FM-WIK11-M-0010NB-02B');
        Else
            Htp.p('FM-WIK11-M-0010NB-10A');
        End IF;
        Htp.p('');
    End;

    Procedure Html_Style. Is
    Begin
        Htp.p('
#ejiaA1 {
    width: 750px;
    border="0";
    border-color:#E3E3E3;  /*#9FD6FF;*/
    background-color:#fff;
    border-width: 1px;
    border-style. solid;
    border-collapse: collapse;
    font-family:Arial, Helvetica, sans-serif;
}
#ejiaA1 th {
    PADDING-TOP: 5px;
    border="0";
    PADDING-BOTTOM: 5px;
    border-right: #E3E3E3 1px solid;
    border-bottom: #E3E3E3 1px solid;
    font-size:13px;
    height:20px;
    line-height:16px;
}
#ejiaA1 td {
    PADDING-TOP: 5px;
    border="0";
    PADDING-BOTTOM: 5px;
    border-right: #E3E3E3 1px solid;
    border-bottom: #E3E3E3 1px solid;
    font-size: 12px;
    color: #000000;
    height: 20px;
    line-height: 11px;
    text-align: left  /*表格中的字居中*/
}
');
   
        Htp.p('
#ejiaA2 {
    width: 750px;
    border-color:#E3E3E3;  /*#9FD6FF;*/
    background-color:#fff;
    border-width: 1px;
    border-style. solid;
    border-collapse: collapse;
    font-family:Arial, Helvetica, sans-serif;
}
#ejiaA2 th {
    PADDING-TOP: 5px;
    PADDING-BOTTOM: 5px;
    border-right: #E3E3E3 1px solid;
    border-bottom: #E3E3E3 1px solid;
    font-size:13px;
    height:20px;
    line-height:16px;
}
#ejiaA2 td {
    PADDING-TOP: 5px;
    PADDING-BOTTOM: 5px;
    border-right: #E3E3E3 1px solid;
    border-bottom: #E3E3E3 1px solid;
    font-size: 12px;
    color: #000000;
    height: 20px;
    line-height: 11px;
    text-align: left  /*表格中的字居中*/
}
');
   
    End;

    Procedure Html_Table_Open(p_Page Varchar2) Is
    Begin
        Htp.p('');
    End;

    Procedure Html_Table_Close Is
    Begin
        Htp.p('
');
    End;

    Procedure Html_Page_Break Is
    Begin
        Htp.p('

');
    End;

    Procedure Insert_Break_Line(p_Page Varchar2) Is
    Begin
        Htp.p('');
    End;

    Function Get_Record_Count(p_Id Number) Return Number Is
        v_Count Number := 0;
    Begin
        Select Count(1)
            Into v_Count
            From Xxmm_Inv_Transaction_Lines l
         Where l.Inv_Header_Id = p_Id;
   
        Return v_Count;
    End;
End;
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11759632/viewspace-722299/,如需转载,请注明出处,否则将追究法律责任。

上一篇: ALR_PO_HEADERS_ALL_UAR
请登录后发表评论 登录
全部评论

注册时间:2012-04-26

  • 博文量
    5
  • 访问量
    22320