} // 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
} // 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(); }
/** * 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