}       //	prepare

        /// <summary>
        /// Perrform Process.
        /// </summary>
        /// <returns>Message (clear text)</returns>
        protected override String DoIt()
        {
            _C_Project_ID = GetRecord_ID();
            log.Info("doIt - C_Project_ID=" + _C_Project_ID + ", C_ProjectType_ID=" + _C_ProjectType_ID);
            //
            MProject project = new MProject(GetCtx(), _C_Project_ID, Get_Trx());

            if (project.GetC_Project_ID() == 0 || project.GetC_Project_ID() != _C_Project_ID)
            {
                throw new ArgumentException("Project not found C_Project_ID=" + _C_Project_ID);
            }

            if (project.GetC_ProjectType_ID_Int() > 0)
            {
                throw new ArgumentException("Project already has Type (Cannot overwrite) " + project.GetC_ProjectType_ID());
            }
            //
            MProjectType type = new MProjectType(GetCtx(), _C_ProjectType_ID, Get_Trx());

            if (type.GetC_ProjectType_ID() == 0 || type.GetC_ProjectType_ID() != _C_ProjectType_ID)
            {
                throw new ArgumentException("Project Type not found C_ProjectType_ID=" + _C_ProjectType_ID);
            }
            //	Set & Copy if Service
            project.SetProjectType(type);
            if (!project.Save())
            {
                return(GetRetrievedError(project, "@Error@"));
                // throw new Exception("@Error@");
            }
            //
            return("@OK@");
        } //	doIt
예제 #2
0
        }       //	doIt

        /// <summary>
        /// Get and validate Project
        /// </summary>
        /// <param name="ctx">context</param>
        /// <param name="C_Project_ID">id</param>
        /// <param name="trxName">transaction</param>
        /// <returns>valid project</returns>
        static protected MProject GetProject(Ctx ctx, int C_Project_ID, Trx trxName)
        {
            MProject fromProject = new MProject(ctx, C_Project_ID, trxName);

            if (fromProject.GetC_Project_ID() == 0)
            {
                throw new ArgumentException("Project not found C_Project_ID=" + C_Project_ID);
            }
            if (fromProject.GetM_PriceList_Version_ID() == 0)
            {
                throw new ArgumentException("Project has no Price List");
            }
            if (fromProject.GetM_Warehouse_ID() == 0)
            {
                throw new ArgumentException("Project has no Warehouse");
            }
            if (fromProject.GetC_BPartner_ID() == 0 || fromProject.GetC_BPartner_Location_ID() == 0)
            {
                throw new ArgumentException("Project has no Business Partner/Location");
            }
            return(fromProject);
        } //	getProject
        protected override string DoIt()
        {
            ds = new DataSet();

            ds = DB.ExecuteDataset("SELECT C_Recurring_ID From C_Recurring Where IsActive='Y' AND AD_Client_ID=" + GetAD_Client_ID()
                                   + " AND TRUNC(DateNextRun)=" + GlobalVariable.TO_DATE(DateTime.Now, true));
            if (ds != null && ds.Tables[0].Rows.Count > 0)
            {
                for (Int32 i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    Recurring = new MRecurring(GetCtx(), Util.GetValueOfInt(ds.Tables[0].Rows[i]["C_Recurring_ID"]), Get_Trx());
                    dateDoc   = Recurring.GetDateNextRun();
                    if (dateDoc != null && Recurring.CalculateRuns())
                    {
                        //  throw new Exception("No Runs Left");
                        MRecurringRun run = new MRecurringRun(GetCtx(), Recurring);
                        String        msg = "@Created@ ";
                        // if (Recurring.GetDateNextRun() == DateTime.Now.Date || Recurring.GetDateNextRun() == null)
                        //{
                        //	Copy
                        if (Recurring.GetRecurringType().Equals(MRecurring.RECURRINGTYPE_Order))
                        {
                            MOrder from  = new MOrder(GetCtx(), Recurring.GetC_Order_ID(), Get_TrxName());
                            MOrder order = MOrder.CopyFrom(from, dateDoc,
                                                           from.GetC_DocType_ID(), false, false, Get_TrxName());
                            run.SetC_Order_ID(order.GetC_Order_ID());
                            msg += order.GetDocumentNo();
                        }
                        else if (Recurring.GetRecurringType().Equals(MRecurring.RECURRINGTYPE_Invoice))
                        {
                            MInvoice from    = new MInvoice(GetCtx(), Recurring.GetC_Invoice_ID(), Get_TrxName());
                            MInvoice invoice = MInvoice.CopyFrom(from, dateDoc,
                                                                 from.GetC_DocType_ID(), false, Get_TrxName(), false);
                            run.SetC_Invoice_ID(invoice.GetC_Invoice_ID());
                            msg += invoice.GetDocumentNo();
                        }
                        else if (Recurring.GetRecurringType().Equals(MRecurring.RECURRINGTYPE_Project))
                        {
                            MProject project = MProject.CopyFrom(GetCtx(), Recurring.GetC_Project_ID(), dateDoc, Get_TrxName());
                            run.SetC_Project_ID(project.GetC_Project_ID());
                            msg += project.GetValue();
                        }
                        else if (Recurring.GetRecurringType().Equals(MRecurring.RECURRINGTYPE_GLJournalBatch))
                        {
                            MJournalBatch journal = MJournalBatch.CopyFrom(GetCtx(), Recurring.GetGL_JournalBatch_ID(), dateDoc, Get_TrxName());
                            run.SetGL_JournalBatch_ID(journal.GetGL_JournalBatch_ID());
                            msg += journal.GetDocumentNo();
                        }
                        else if (Recurring.GetRecurringType().Equals(MRecurring.RECURRINGTYPE_GLJournal))
                        {
                            MJournal Journal = MJournal.CopyFrom(GetCtx(), Recurring.GetGL_Journal_ID(), dateDoc, Get_TrxName());
                            run.SetGL_Journal_ID(Journal.GetGL_Journal_ID());
                            msg += Journal.GetDocumentNo();
                        }
                        else if (Recurring.GetRecurringType().Equals(MRecurring.RECURRINGTYPE_Payment))
                        {
                            MPayment from    = new MPayment(GetCtx(), Recurring.GetC_Payment_ID(), Get_TrxName());
                            MPayment payment = MPayment.CopyFrom(from, dateDoc,
                                                                 from.GetC_DocType_ID(), Get_TrxName());
                            run.SetC_Payment_ID(payment.GetC_Payment_ID());
                            msg += payment.GetDocumentNo();
                        }
                        //else
                        //  return "Invalid @RecurringType@ = " + Recurring.GetRecurringType();
                        if (run.Save(Get_TrxName()))
                        {
                            Recurring.SetDateLastRun(run.GetUpdated());
                            Recurring.SetRunsRemaining(Recurring.GetRunsRemaining() - 1);
                            SetDateNextRun();
                            Recurring.Save(Get_TrxName());
                        }
                        // }
                    }
                }
            }
            DisposeVariables();
            return("");
            //  throw new NotImplementedException();
        }
예제 #4
0
        /**
         *	Issue Receipt
         *	@return Message (clear text)
         */
        private String IssueReceipt()
        {
            MInOut inOut = new MInOut(GetCtx(), m_M_InOut_ID, null);

            if (inOut.IsSOTrx() || !inOut.IsProcessed() ||
                !(MInOut.DOCSTATUS_Completed.Equals(inOut.GetDocStatus()) || MInOut.DOCSTATUS_Closed.Equals(inOut.GetDocStatus())))
            {
                throw new ArgumentException("Receipt not valid - " + inOut);
            }
            log.Info(inOut.ToString());
            //	Set Project of Receipt
            if (inOut.GetC_Project_ID() == 0)
            {
                inOut.SetC_Project_ID(m_project.GetC_Project_ID());
                inOut.Save();
            }
            else if (inOut.GetC_Project_ID() != m_project.GetC_Project_ID())
            {
                throw new ArgumentException("Receipt for other Project (" + inOut.GetC_Project_ID() + ")");
            }

            MInOutLine[] inOutLines = inOut.GetLines(false);
            int          counter    = 0;

            for (int i = 0; i < inOutLines.Length; i++)
            {
                //	Need to have a Product
                if (inOutLines[i].GetM_Product_ID() == 0)
                {
                    continue;
                }
                //	Need to have Quantity
                if (Env.Signum(inOutLines[i].GetMovementQty()) == 0)
                {
                    continue;
                }
                //	not issued yet
                if (ProjectIssueHasReceipt(inOutLines[i].GetM_InOutLine_ID()))
                {
                    continue;
                }
                //	Create Issue
                MProjectIssue pi = new MProjectIssue(m_project);
                pi.SetMandatory(inOutLines[i].GetM_Locator_ID(), inOutLines[i].GetM_Product_ID(), inOutLines[i].GetMovementQty());
                if (m_MovementDate != null)             //	default today
                {
                    pi.SetMovementDate(m_MovementDate);
                }
                if (m_Description != null && m_Description.Length > 0)
                {
                    pi.SetDescription(m_Description);
                }
                else if (inOutLines[i].GetDescription() != null)
                {
                    pi.SetDescription(inOutLines[i].GetDescription());
                }
                else if (inOut.GetDescription() != null)
                {
                    pi.SetDescription(inOut.GetDescription());
                }
                pi.SetM_InOutLine_ID(inOutLines[i].GetM_InOutLine_ID());
                pi.Process();

                //	Find/Create Project Line
                MProjectLine   pl  = null;
                MProjectLine[] pls = m_project.GetLines();
                for (int ii = 0; ii < pls.Length; ii++)
                {
                    //	The Order we generated is the same as the Order of the receipt
                    if (pls[ii].GetC_OrderPO_ID() == inOut.GetC_Order_ID() &&
                        pls[ii].GetM_Product_ID() == inOutLines[i].GetM_Product_ID() &&
                        pls[ii].GetC_ProjectIssue_ID() == 0)            //	not issued
                    {
                        pl = pls[ii];
                        break;
                    }
                }
                if (pl == null)
                {
                    pl = new MProjectLine(m_project);
                }
                pl.SetMProjectIssue(pi);                //	setIssue
                pl.Save();
                AddLog(pi.GetLine(), pi.GetMovementDate(), pi.GetMovementQty(), null);
                counter++;
            }   //	all InOutLines

            return("@Created@ " + counter);
        }       //	issueReceipt