コード例 #1
0
        } //	prepare

        /// <summary>
        ///	Process
        /// </summary>
        /// <returns>info</returns>
        protected override String DoIt()
        {
            int lenth = 1;

            log.Info("R_RequestType_ID=" + _R_RequestType_ID + ", R_Group_ID=" + _R_Group_ID
                     + ", R_Category_ID=" + _R_Category_ID + ", C_BPartner_ID=" + _C_BPartner_ID
                     + ", _M_Product_ID=" + _M_Product_ID);

            MRequestType type = MRequestType.Get(GetCtx(), _R_RequestType_ID);

            if (type.Get_ID() == 0)
            {
                throw new Exception("@R_RequestType_ID@ @NotFound@ " + _R_RequestType_ID);
            }

            if (!type.IsInvoiced())
            {
                throw new Exception("@R_RequestType_ID@ <> @IsInvoiced@");
            }

            String sql = "SELECT * FROM R_Request r"
                         + " INNER JOIN R_Status s ON (r.R_Status_ID=s.R_Status_ID) "
                         + "WHERE s.IsClosed='Y'"
                         + " AND r.R_RequestType_ID=@Param1";

            if (_R_Group_ID != 0 && _R_Group_ID != -1)
            {
                sql  += " AND r.R_Group_ID=@Param2";
                lenth = lenth + 1;
            }
            if (_R_Category_ID != 0 && _R_Category_ID != -1)
            {
                sql  += " AND r.R_Category_ID=@Param3";
                lenth = lenth + 1;
            }
            if (_C_BPartner_ID != 0)
            {
                sql  += " AND r.C_BPartner_ID=@Param4";
                lenth = lenth + 1;
            }
            sql += " AND r.IsInvoiced='Y' "
                   + "ORDER BY C_BPartner_ID";
            SqlParameter[] Param = new SqlParameter[lenth];
            IDataReader    idr   = null;
            DataTable      dt    = null;

            try
            {
                int index = 0;
                Param[index] = new SqlParameter("@Param1", _R_RequestType_ID);
                if (_R_Group_ID != 0 && _R_Group_ID != -1)
                {
                    index++;
                    Param[index] = new SqlParameter("@Param2", _R_Group_ID);
                }
                if (_R_Category_ID != 0 && _R_Category_ID != -1)
                {
                    index++;
                    Param[index] = new SqlParameter("@Param3", _R_Category_ID);
                }
                if (_C_BPartner_ID != 0)
                {
                    index++;
                    Param[index] = new SqlParameter("@Param4", _C_BPartner_ID);
                }
                idr = DataBase.DB.ExecuteReader(sql, Param, Get_TrxName());
                dt  = new DataTable();
                dt.Load(idr);
                idr.Close();
                int oldC_BPartner_ID = 0;
                foreach (DataRow dr in dt.Rows)
                {
                    MRequest request = new MRequest(GetCtx(), dr, Get_TrxName());
                    if (!request.IsInvoiced())
                    {
                        continue;
                    }
                    if (oldC_BPartner_ID != request.GetC_BPartner_ID())
                    {
                        InvoiceDone();
                    }
                    if (_m_invoice == null)
                    {
                        InvoiceNew(request);
                        oldC_BPartner_ID = request.GetC_BPartner_ID();
                    }
                    InvoiceLine(request);
                }
                InvoiceDone();
                //
            }
            catch (Exception e)
            {
                if (idr != null)
                {
                    idr.Close();
                }
                log.Log(Level.SEVERE, sql, e);
            }
            finally
            {
                dt = null;
                if (idr != null)
                {
                    idr.Close();
                }
            }
            if (string.IsNullOrEmpty(_msg))
            {
                _msg = "No Invoice Generated";
            }
            //	R_Category_ID
            return(_msg);
        } //	doIt