/// <summary> /// Perform Process. /// </summary> /// <returns>Message (clear text)</returns> protected override String DoIt() { log.Info("C_Order_ID=" + _C_Order_ID + ", C_DocType_ID=" + _C_DocType_ID + ", CloseDocument=" + _IsCloseDocument); if (_C_Order_ID == 0) { throw new ArgumentException("No Order"); } VAdvantage.Model.MDocType dt = VAdvantage.Model.MDocType.Get(GetCtx(), _C_DocType_ID); if (dt.Get_ID() == 0) { throw new ArgumentException("No DocType"); } if (_DateDoc == null) { _DateDoc = Util.GetValueOfDateTime(DateTime.Now); } // VAdvantage.Model.MOrder from = new VAdvantage.Model.MOrder(GetCtx(), _C_Order_ID, Get_Trx()); VAdvantage.Model.MOrder newOrder = VAdvantage.Model.MOrder.CopyFrom(from, _DateDoc, dt.GetC_DocType_ID(), false, true, null); // copy ASI newOrder.SetC_DocTypeTarget_ID(_C_DocType_ID); int C_Bpartner_ID = newOrder.GetC_BPartner_ID(); //Update New Order Refrence From Sales Qutation in Sales order newOrder.SetPOReference(Util.GetValueOfString(from.GetDocumentNo())); String sqlbp = "update c_project set c_bpartner_id=" + C_Bpartner_ID + " where ref_order_id=" + _C_Order_ID + ""; int value = DB.ExecuteQuery(sqlbp, null, Get_Trx()); bool OK = newOrder.Save(); if (!OK) { throw new Exception("Could not create new Order"); } if (OK) { string sql = "select C_Project_id from c_project where c_order_id = " + from.GetC_Order_ID(); int C_Project_ID = Util.GetValueOfInt(DB.ExecuteScalar(sql, null, Get_Trx())); if (C_Project_ID != 0) { VAdvantage.Model.X_C_Project project = new VAdvantage.Model.X_C_Project(GetCtx(), C_Project_ID, Get_Trx()); project.SetC_BPartner_ID(project.GetC_BPartnerSR_ID()); project.SetC_BPartnerSR_ID(0); if (!project.Save()) { } } from.SetRef_Order_ID(newOrder.GetC_Order_ID()); from.Save(); int bp = newOrder.GetC_BPartner_ID(); VAdvantage.Model.X_C_BPartner prosp = new VAdvantage.Model.X_C_BPartner(GetCtx(), bp, Get_Trx()); prosp.SetIsCustomer(true); prosp.SetIsProspect(false); prosp.Save(); } // if (_IsCloseDocument) { VAdvantage.Model.MOrder original = new VAdvantage.Model.MOrder(GetCtx(), _C_Order_ID, Get_Trx()); original.SetDocAction(VAdvantage.Model.MOrder.DOCACTION_Complete); original.ProcessIt(VAdvantage.Model.MOrder.DOCACTION_Complete); original.Save(); original.SetDocAction(VAdvantage.Model.MOrder.DOCACTION_Close); original.ProcessIt(VAdvantage.Model.MOrder.DOCACTION_Close); original.Save(); } // return(Msg.GetMsg(GetCtx(), "OrderCreatedSuuccessfully")); //return dt.GetName() + ": " + newOrder.GetDocumentNo(); }
/// <summary> /// Generate Shipments /// </summary> /// <returns>info</returns> protected override String DoIt() { bool isExpense = false; if (ConsolidateDocument == "Y") { string sqlSelect = "select * from s_timeexpenseline where processed = 'Y' and (ARInvoice = 'Y' or billtocustomer = 'Y') and Ref_C_Invoice_ID is null"; StringBuilder sqlWhere = new StringBuilder(); if (C_Order_ID != 0) { sqlWhere.Append(" AND C_Order_ID = " + C_Order_ID); } else { if (_C_BPartner_ID != 0) { sqlWhere.Append(" AND C_BPartner_ID = " + _C_BPartner_ID); } if (AD_Org_ID != 0) { sqlWhere.Append(" AND AD_Org_ID = " + AD_Org_ID); } } if (sqlWhere.Length > 0) { sql = sqlSelect + sqlWhere.ToString(); } else { sql = sqlSelect; } sql = sql + " order by C_order_ID, c_bpartner_id"; IDataReader idr = null; try { idr = DB.ExecuteReader(sql, null, null); while (idr.Read()) { if (C_BPartner_ID.Contains(Util.GetValueOfInt(idr["C_BPartner_ID"]))) { VAdvantage.Model.MOrder ord = new VAdvantage.Model.MOrder(GetCtx(), Util.GetValueOfInt(idr["C_Order_ID"]), null); bool chk = false; for (int i = 0; i < invoices.Count; i++) { VAdvantage.Model.MInvoice inv = new VAdvantage.Model.MInvoice(GetCtx(), Util.GetValueOfInt(invoices[i]), null); if ((inv.GetC_PaymentTerm_ID() == ord.GetC_PaymentTerm_ID()) && (inv.GetM_PriceList_ID() == ord.GetM_PriceList_ID())) { chk = true; break; } } if (!chk) { VAdvantage.Model.X_S_TimeExpenseLine tLine = new VAdvantage.Model.X_S_TimeExpenseLine(GetCtx(), Util.GetValueOfInt(idr["s_timeexpenseline_id"]), null); VAdvantage.Model.X_S_TimeExpense tExp = new VAdvantage.Model.X_S_TimeExpense(GetCtx(), Util.GetValueOfInt(tLine.GetS_TimeExpense_ID()), null); int C_Invoice_ID = GenerateInvoice(tLine, tExp, isExpense); invoices.Add(C_Invoice_ID); } } else { C_BPartner_ID.Add(Util.GetValueOfInt(idr["C_BPartner_ID"])); VAdvantage.Model.X_S_TimeExpenseLine tLine = new VAdvantage.Model.X_S_TimeExpenseLine(GetCtx(), Util.GetValueOfInt(idr["s_timeexpenseline_id"]), null); VAdvantage.Model.X_S_TimeExpense tExp = new VAdvantage.Model.X_S_TimeExpense(GetCtx(), Util.GetValueOfInt(tLine.GetS_TimeExpense_ID()), null); int C_Invoice_ID = GenerateInvoice(tLine, tExp, isExpense); invoices.Add(C_Invoice_ID); } } if (idr != null) { idr.Close(); idr = null; } // isExpense = false; if (invoices.Count > 0) { for (int k = 0; k < invoices.Count; k++) // foreach (KeyValuePair<int, int> pair in BPInvoice) { sqlWhere = new StringBuilder(); if (C_Order_ID != 0) { sqlWhere.Append(" AND C_Order_ID = " + C_Order_ID); } else { if (_C_BPartner_ID != 0) { sqlWhere.Append(" AND C_BPartner_ID = " + _C_BPartner_ID); } if (AD_Org_ID != 0) { sqlWhere.Append(" AND AD_Org_ID = " + AD_Org_ID); } } if (sqlWhere.Length > 0) { sql = sqlSelect + sqlWhere.ToString(); } else { sql = sqlSelect; } sql = sql + " order by C_order_ID, c_bpartner_id"; DataSet ds = DB.ExecuteDataset(sql, null, null); if (ds != null) { if (ds.Tables[0].Rows.Count > 0) { for (int j = 0; j < ds.Tables[0].Rows.Count; j++) { int invID = 0; bool chk1 = false; for (int l = 0; l < invoices.Count; l++) { VAdvantage.Model.MOrder ord = new VAdvantage.Model.MOrder(GetCtx(), Util.GetValueOfInt(ds.Tables[0].Rows[j]["C_Order_ID"]), null); VAdvantage.Model.MInvoice inv1 = new VAdvantage.Model.MInvoice(GetCtx(), Util.GetValueOfInt(invoices[l]), null); if ((inv1.GetC_PaymentTerm_ID() == ord.GetC_PaymentTerm_ID()) && (inv1.GetC_BPartner_ID() == ord.GetC_BPartner_ID()) && (inv1.GetM_PriceList_ID() == ord.GetM_PriceList_ID())) { chk1 = true; invID = inv1.GetC_Invoice_ID(); break; } } if (chk1) { //CreateLine(Util.GetValueOfInt(ds.Tables[0].Rows[j]["S_TimeExpenseLine_ID"]), Util.GetValueOfInt(pair.Value)); CreateLine(Util.GetValueOfInt(ds.Tables[0].Rows[j]["S_TimeExpenseLine_ID"]), invID); } } for (int m = 0; m < invoices.Count; m++) { //MInvoice inv = new MInvoice(GetCtx(), Util.GetValueOfInt(pair.Value), null); VAdvantage.Model.MInvoice inv = new VAdvantage.Model.MInvoice(GetCtx(), Util.GetValueOfInt(invoices[m]), null); if (docAction == "CO") { string comp = inv.CompleteIt(); if (comp == "CO") { inv.SetDocAction("CL"); inv.SetDocStatus("CO"); inv.Save(); } } else if (docAction == "PR") { string prp = inv.PrepareIt(); if (prp == "IP") { inv.SetDocAction("PR"); inv.SetDocStatus("IP"); inv.Save(); } } } } } } } } catch { if (idr != null) { idr.Close(); idr = null; } return(Msg.GetMsg(GetCtx(), "ProcessTerminated")); } } // If Consolidate Document is Not Checked else { string sqlSelect = "select * from s_timeexpenseline where processed = 'Y' and (ARInvoice = 'Y' or billtocustomer = 'Y') and Ref_C_Invoice_ID is null"; StringBuilder sqlWhere = new StringBuilder(); if (C_Order_ID != 0) { sqlWhere.Append(" AND C_Order_ID = " + C_Order_ID); } else { if (_C_BPartner_ID != 0) { sqlWhere.Append(" AND C_BPartner_ID = " + _C_BPartner_ID); } if (AD_Org_ID != 0) { sqlWhere.Append(" AND AD_Org_ID = " + AD_Org_ID); } } if (sqlWhere.Length > 0) { sql = sqlSelect + sqlWhere.ToString(); } else { sql = sqlSelect; } sql = sql + " order by C_order_ID, c_bpartner_id"; IDataReader idr = null; try { idr = DB.ExecuteReader(sql, null, null); int C_Invoice_ID = 0; while (idr.Read()) { if (orders.Contains(Util.GetValueOfInt(idr["C_Order_ID"]))) { CreateLine(Util.GetValueOfInt(idr["s_timeexpenseline_id"]), C_Invoice_ID); } else { orders.Add(Util.GetValueOfInt(idr["C_Order_ID"])); VAdvantage.Model.X_S_TimeExpenseLine tLine = new VAdvantage.Model.X_S_TimeExpenseLine(GetCtx(), Util.GetValueOfInt(idr["s_timeexpenseline_id"]), null); VAdvantage.Model.X_S_TimeExpense tExp = new VAdvantage.Model.X_S_TimeExpense(GetCtx(), Util.GetValueOfInt(tLine.GetS_TimeExpense_ID()), null); C_Invoice_ID = GenerateInvoice(tLine, tExp, isExpense); invoices.Add(C_Invoice_ID); CreateLine(Util.GetValueOfInt(idr["s_timeexpenseline_id"]), C_Invoice_ID); } } for (int m = 0; m < invoices.Count; m++) { //MInvoice inv = new MInvoice(GetCtx(), Util.GetValueOfInt(pair.Value), null); VAdvantage.Model.MInvoice inv = new VAdvantage.Model.MInvoice(GetCtx(), Util.GetValueOfInt(invoices[m]), null); if (docAction == "CO") { string comp = inv.CompleteIt(); if (comp == "CO") { inv.SetDocAction("CL"); inv.SetDocStatus("CO"); inv.Save(); } } else if (docAction == "PR") { string prp = inv.PrepareIt(); if (prp == "IP") { inv.SetDocAction("PR"); inv.SetDocStatus("IP"); inv.Save(); } } } if (idr != null) { idr.Close(); idr = null; } } catch { if (idr != null) { idr.Close(); idr = null; } } } string docNo = ""; for (int i = 0; i < invoices.Count; i++) { VAdvantage.Model.MInvoice inv = new VAdvantage.Model.MInvoice(GetCtx(), Util.GetValueOfInt(invoices[i]), null); docNo = docNo + ", " + inv.GetDocumentNo(); } if (docNo != "") { docNo = docNo.Remove(0, 2); } return(Msg.GetMsg(GetCtx(), "InvoicesCreated" + " : " + docNo)); // return Msg.GetMsg(GetCtx(), "ProcessCompleted"); }
/// <summary> /// Perform Process. /// </summary> /// <returns>Message (clear text)</returns> protected override String DoIt() { log.Info("C_Order_ID=" + _C_Order_ID + ", C_DocType_ID=" + _C_DocType_ID + ", CloseDocument=" + _IsCloseDocument); if (_C_Order_ID == 0) { throw new ArgumentException("No Order"); } VAdvantage.Model.MDocType dt = VAdvantage.Model.MDocType.Get(GetCtx(), _C_DocType_ID); if (dt.Get_ID() == 0) { throw new ArgumentException("No DocType"); } if (_DateDoc == null) { _DateDoc = Util.GetValueOfDateTime(DateTime.Now); } // VAdvantage.Model.MOrder from = new VAdvantage.Model.MOrder(GetCtx(), _C_Order_ID, Get_Trx()); if (from.GetDocStatus() != "DR" && from.GetDocStatus() != "IP" && from.GetDocStatus() != "CO") { throw new Exception("Order Closed"); } VAdvantage.Model.MOrder newOrder = VAdvantage.Model.MOrder.CopyFrom(from, _DateDoc, dt.GetC_DocType_ID(), false, true, null); // copy ASI newOrder.SetC_DocTypeTarget_ID(_C_DocType_ID); int C_Bpartner_ID = newOrder.GetC_BPartner_ID(); newOrder.Set_Value("IsSalesQuotation", false); // Added by Bharat on 05 Jan 2018 to set Values on Blanket Sales Order from Sales Quotation. if (dt.GetDocBaseType() == "BOO") { newOrder.Set_Value("IsBlanketTrx", true); } else // Added by Bharat on 29 March 2018 to set Blanket Order zero in case of Sales order Creation. { newOrder.SetC_Order_Blanket(0); } if (newOrder.Get_ColumnIndex("C_Order_Quotation") > 0) { newOrder.SetC_Order_Quotation(_C_Order_ID); } //Update New Order Refrence From Sales Qutation in Sales order newOrder.SetPOReference(Util.GetValueOfString(from.GetDocumentNo())); // Added by Bharat on 31 Jan 2018 to set Inco Term from Quotation if (newOrder.Get_ColumnIndex("C_IncoTerm_ID") > 0) { newOrder.SetC_IncoTerm_ID(from.GetC_IncoTerm_ID()); } String sqlbp = "update c_project set c_bpartner_id=" + C_Bpartner_ID + " where ref_order_id=" + _C_Order_ID + ""; int value = DB.ExecuteQuery(sqlbp, null, Get_Trx()); bool OK = newOrder.Save(); if (!OK) { //return GetReterivedError( newOrder, "Could not create new Order"); throw new Exception("Could not create new Order"); } if (OK) { string sql = "select C_Project_id from c_project where c_order_id = " + from.GetC_Order_ID(); int C_Project_ID = Util.GetValueOfInt(DB.ExecuteScalar(sql, null, Get_Trx())); if (C_Project_ID != 0) { VAdvantage.Model.X_C_Project project = new VAdvantage.Model.X_C_Project(GetCtx(), C_Project_ID, Get_Trx()); project.SetC_BPartner_ID(project.GetC_BPartnerSR_ID()); project.SetC_BPartnerSR_ID(0); if (!project.Save()) { log.SaveError("Error on " + project.Get_TableName(), ""); } } if (dt.GetDocBaseType() == "BOO") { from.SetC_Order_Blanket(newOrder.GetC_Order_ID()); } else { from.SetRef_Order_ID(newOrder.GetC_Order_ID()); } from.Save(); int bp = newOrder.GetC_BPartner_ID(); VAdvantage.Model.X_C_BPartner prosp = new VAdvantage.Model.X_C_BPartner(GetCtx(), bp, Get_Trx()); prosp.SetIsCustomer(true); prosp.SetIsProspect(false); if (!prosp.Save()) { log.SaveError("Error on " + prosp.Get_TableName(), ""); } } // if (_IsCloseDocument) { VAdvantage.Model.MOrder original = new VAdvantage.Model.MOrder(GetCtx(), _C_Order_ID, Get_Trx()); //Edited by Arpit Rai on 8th of Nov,2017 if (original.GetDocStatus() != "CO") //to check if document is already completed { original.SetDocAction(VAdvantage.Model.MOrder.DOCACTION_Complete); original.ProcessIt(VAdvantage.Model.MOrder.DOCACTION_Complete); original.Save(); } //Arpit original.SetDocAction(VAdvantage.Model.MOrder.DOCACTION_Close); original.ProcessIt(VAdvantage.Model.MOrder.DOCACTION_Close); original.Save(); } // return(Msg.GetMsg(GetCtx(), "OrderCreatedSuccessfully") + " - " + dt.GetName() + ": " + newOrder.GetDocumentNo()); }