protected override String DoIt() { //int C_Contract_ID = 0; String Sql = "SELECT C_OrderLine_ID FROM C_OrderLine WHERE C_Order_ID=" + orderID + " AND CreateServiceContract='N' AND IsContract='Y' AND IsActive='Y'"; dr = DB.ExecuteReader(Sql); try { VAdvantage.Model.X_C_Order order = new VAdvantage.Model.X_C_Order(GetCtx(), orderID, Get_TrxName()); string DocStatus = order.GetDocStatus(); if (DocStatus != "CO") { if (dr != null) { dr.Close(); dr = null; } return(Msg.GetMsg(GetCtx(), "FirstCompleteOrder")); } while (dr.Read()) { line = new VAdvantage.Model.X_C_OrderLine(GetCtx(), Util.GetValueOfInt(dr[0]), Get_TrxName()); if (line.IsContract() && line.GetC_Contract_ID() == 0) { contact = new VAdvantage.Model.X_C_Contract(GetCtx(), 0, Get_TrxName()); int M_PriceList_ID = Util.GetValueOfInt(order.GetM_PriceList_ID()); //Neha---Commented code because object created but not used in further class---04 Sep,2018 //VAdvantage.Model.MProductPricing pp = new VAdvantage.Model.MProductPricing(GetCtx().GetAD_Client_ID(), GetCtx().GetAD_Org_ID(), // line.GetM_Product_ID(), order.GetC_BPartner_ID(), line.GetQtyOrdered(), true); //pp.SetM_PriceList_ID(M_PriceList_ID); //VAdvantage.Model.MProduct prd = new VAdvantage.Model.MProduct(GetCtx(), line.GetM_Product_ID(), null); //pp.SetC_UOM_ID(prd.GetC_UOM_ID()); string sql = "SELECT pl.IsTaxIncluded,pl.EnforcePriceLimit,pl.C_Currency_ID,c.StdPrecision," + "plv.M_PriceList_Version_ID,plv.ValidFrom " + "FROM M_PriceList pl,C_Currency c,M_PriceList_Version plv " + "WHERE pl.C_Currency_ID=c.C_Currency_ID" + " AND pl.M_PriceList_ID=plv.M_PriceList_ID" + " AND pl.M_PriceList_ID=" + M_PriceList_ID // 1 + "ORDER BY plv.ValidFrom DESC"; //int M_PriceList_Version_ID = 0; int C_Currency_ID = 0; DataSet ds = DB.ExecuteDataset(sql, null, Get_TrxName()); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { DataRow dr1 = ds.Tables[0].Rows[i]; // Tax Included isTaxIncluded = Util.GetValueOfString(ds.Tables[0].Rows[i]["IsTaxIncluded"]).Equals("Y"); // Currency C_Currency_ID = Util.GetValueOfInt(ds.Tables[0].Rows[i]["C_Currency_ID"]); // Std Precision StdPrecision = Util.GetValueOfInt(ds.Tables[0].Rows[i]["StdPrecision"]); // int prislst = Util.GetValueOfInt(dr[4].ToString()); // PriceList Version //M_PriceList_Version_ID = Util.GetValueOfInt(ds.Tables[0].Rows[i]["M_PriceList_Version_ID"]); } //int M_PriceList_Version_ID = GetCtx().GetContextAsInt(WindowNo, "M_PriceList_Version_ID"); //pp.SetM_PriceList_Version_ID(M_PriceList_Version_ID); //Neha---Set Tenant,Organization from Sales Order---11 Sep,2018 contact.SetAD_Client_ID(order.GetAD_Client_ID()); contact.SetAD_Org_ID(order.GetAD_Org_ID()); //---------------------End ------------------ contact.SetDescription(order.GetDescription()); contact.SetC_Order_ID(order.GetC_Order_ID()); contact.SetC_OrderLine_ID(line.GetC_OrderLine_ID()); contact.SetStartDate(line.GetStartDate()); contact.SetBillStartDate(line.GetStartDate()); contact.SetEndDate(line.GetEndDate()); contact.SetC_BPartner_ID(order.GetC_BPartner_ID()); contact.SetBill_Location_ID(order.GetBill_Location_ID()); contact.SetBill_User_ID(order.GetBill_User_ID()); contact.SetSalesRep_ID(order.GetSalesRep_ID()); contact.SetC_Currency_ID(line.GetC_Currency_ID()); contact.SetC_ConversionType_ID(order.GetC_ConversionType_ID()); contact.SetC_PaymentTerm_ID(order.GetC_PaymentTerm_ID()); contact.SetM_PriceList_ID(order.GetM_PriceList_ID()); contact.SetC_Frequency_ID(line.GetC_Frequency_ID()); //Neha--Set List Price,Price,Unit Price,Discount from Order Line--4 Sep,2018 //contact.SetPriceList(pp.GetPriceList()); //contact.SetPriceActual(pp.GetPriceStd()); //contact.SetPriceEntered(pp.GetPriceStd()); contact.SetPriceList(line.GetPriceList()); contact.SetPriceActual(line.GetPriceActual()); contact.SetPriceEntered(line.GetPriceEntered()); contact.SetQtyEntered(line.GetQtyPerCycle()); //Decimal discount = Decimal.Round(Decimal.Divide(Decimal.Multiply(Decimal.Subtract(pp.GetPriceList(), pp.GetPriceStd()), new Decimal(100)), pp.GetPriceList()), 2); contact.SetDiscount(line.GetDiscount()); //------------------End---------------------------- //contact.SetGrandTotal( // invoice Count Start //DateTime SDate = (DateTime)(line.GetStartDate()); //DateTime Edate = (DateTime)(line.GetEndDate()); //int frequency = Util.GetValueOfInt(line.GetC_Frequency_ID()); //string PSql = "Select NoOfDays from C_Frequency where C_Frequency_ID=" + frequency; //int days = Util.GetValueOfInt(DB.ExecuteScalar(PSql, null, null)); //int totaldays = (Edate - SDate).Days; //int count = totaldays / days; contact.SetTotalInvoice(line.GetNoofCycle()); //invoice Count end contact.SetC_Project_ID(order.GetC_Project_ID()); // contact.SetPriceList(line.GetPriceList()); //contact.SetPriceActual(line.GetPriceActual()); contact.SetC_UOM_ID(line.GetC_UOM_ID()); contact.SetM_Product_ID(line.GetM_Product_ID()); // Added by Vivek on 21/11/2017 asigned by Pradeep contact.SetM_AttributeSetInstance_ID(line.GetM_AttributeSetInstance_ID()); // contact.SetPriceEntered(line.GetPriceEntered()); //contact.SetQtyEntered(line.GetQtyEntered()); // contact.SetDiscount(line.GetDiscount()); contact.SetC_Tax_ID(line.GetC_Tax_ID()); contact.SetC_Campaign_ID(order.GetC_Campaign_ID()); contact.SetLineNetAmt(Decimal.Multiply(line.GetQtyPerCycle(), line.GetPriceActual())); // if Surcharge Tax is selected on Tax, then set value in Surcharge Amount MTax tax = MTax.Get(GetCtx(), line.GetC_Tax_ID()); if (contact.Get_ColumnIndex("SurchargeAmt") > 0 && tax.GetSurcharge_Tax_ID() > 0) { Decimal surchargeAmt = Env.ZERO; // Calculate Surcharge Amount Decimal TotalRate = tax.CalculateSurcharge(contact.GetLineNetAmt(), isTaxIncluded, StdPrecision, out surchargeAmt); contact.SetTaxAmt(TotalRate); contact.SetSurchargeAmt(surchargeAmt); } else { sql = "SELECT Rate FROM C_Tax WHERE C_Tax_ID = " + line.GetC_Tax_ID(); Decimal?rate = Util.GetValueOfDecimal(DB.ExecuteScalar(sql, null, Get_TrxName())); //Decimal? amt = Decimal.Multiply(pp.GetPriceStd(), (Decimal.Divide(rate.Value, 100))); Decimal?amt = Decimal.Multiply(line.GetPriceActual(), (Decimal.Divide(rate.Value, 100))); amt = Decimal.Round(amt.Value, 2, MidpointRounding.AwayFromZero); Decimal?taxAmt = Decimal.Multiply(amt.Value, line.GetQtyPerCycle()); contact.SetTaxAmt(taxAmt); } // Set Grand Total Amount if (isTaxIncluded) { contact.SetGrandTotal(contact.GetLineNetAmt()); } else { if (contact.Get_ColumnIndex("SurchargeAmt") > 0) { contact.SetGrandTotal(Decimal.Add(Decimal.Add(contact.GetLineNetAmt(), contact.GetTaxAmt()), contact.GetSurchargeAmt())); } else { contact.SetGrandTotal(Decimal.Add(contact.GetLineNetAmt(), contact.GetTaxAmt())); } } //-------------------------End-------------------------- contact.SetDocStatus("DR"); contact.SetRenewContract("N"); if (!contact.Save()) { //Neha----If Service Contract not saved then will show the exception---17 Sep,2018 ValueNamePair pp = VAdvantage.Logging.VLogger.RetrieveError(); if (pp != null) { throw new ArgumentException("Cannot save Service Contract. " + pp.GetName()); } throw new ArgumentException("Cannot save Service Contract"); } else { if (!line.Save()) { //Neha----If Order Line not saved then will show the exception---17 Sep,2018 ValueNamePair pp = VAdvantage.Logging.VLogger.RetrieveError(); if (pp != null) { throw new ArgumentException("Cannot save Order Line. " + pp.GetName()); } throw new ArgumentException("Cannot save Order Line"); } //Neha---Set CreateServiceContract,Order Line ID on Order Line tab---17 Sep,2018 String _qry = "UPDATE C_ORDERLINE SET C_CONTRACT_ID=" + contact.GetC_Contract_ID() + " ,CreateServiceContract='Y' WHERE C_ORDERLINE_ID=" + line.GetC_OrderLine_ID(); DB.ExecuteScalar(_qry, null, Get_TrxName()); } //C_Contract_ID = contact.GetC_Contract_ID(); DocumntNo += contact.GetDocumentNo() + ","; } } dr.Close(); order.SetCreateServiceContract("Y"); if (!order.Save()) { } // Added Document No on Message return(Msg.GetMsg(GetCtx(), "ServiceContractGenerationDone") + DocumntNo.TrimEnd(',')); } catch (Exception ex) { if (dr != null) { dr.Close(); dr = null; } return(Msg.GetMsg(GetCtx(), ex.Message)); } // return ""; }
/// <summary> /// Generate Contract Invoice /// </summary> /// <param name="contSchedule"></param> private void GenerateInvoice(VAdvantage.Model.X_C_ContractSchedule contSchedule) { if (contSchedule.IsActive()) { int res = 0; sql.Clear(); sql.Append(MRole.GetDefault(GetCtx()).AddAccessSQL("SELECT MIN(C_DOCTYPE_ID) FROM C_DocType WHERE DOCBASETYPE='ARI' AND ISACTIVE ='Y'", "C_DocType", true, true)); int C_DocType_ID = Util.GetValueOfInt(DB.ExecuteScalar(sql.ToString(), null, Get_TrxName())); // sql = "select noofdays from c_frequency where c_frequency_id = " + cont.GetC_Frequency_ID(); // Decimal? days = Util.GetValueOfDecimal(DB.ExecuteScalar(sql, null, null)); Decimal?price = null; if (!cont.IsCancel()) { price = Decimal.Multiply(cont.GetPriceEntered(), cont.GetQtyEntered()); } else { sql.Clear(); sql.Append("UPDATE C_Contract SET RenewalType = NULL WHERE C_Contract_ID = " + cont.GetC_Contract_ID()); int res2 = Util.GetValueOfInt(DB.ExecuteQuery(sql.ToString(), null, Get_TrxName())); if (contSchedule.GetEndDate() <= cont.GetCancellationDate()) { price = Decimal.Multiply(cont.GetPriceEntered(), cont.GetQtyEntered()); } else { sql.Clear(); sql.Append("SELECT MAX(C_ContractSchedule_ID) FROM C_ContractSchedule WHERE NVL(C_INVOICE_ID,0) > 0 AND C_Contract_ID = " + cont.GetC_Contract_ID()); int c_contractschedule_id = Util.GetValueOfInt(DB.ExecuteScalar(sql.ToString(), null, Get_TrxName())); if (c_contractschedule_id != 0) { string date = cont.GetCancellationDate().Value.ToString("dd-MMM-yyyy"); sql.Clear(); sql.Append("SELECT DaysBetween('" + date + "', EndDate) FROM C_ContractSchedule WHERE C_ContractSchedule_ID = " + c_contractschedule_id); Decimal?diffDays = Util.GetValueOfDecimal(DB.ExecuteScalar(sql.ToString(), null, Get_TrxName())); price = Decimal.Multiply(cont.GetPriceEntered(), cont.GetQtyEntered()); sql.Clear(); sql.Append("UPDATE C_ContractSchedule SET IsActive = 'N' WHERE EndDate > '" + date + "' AND C_Contract_ID = " + cont.GetC_Contract_ID()); res = Util.GetValueOfInt(DB.ExecuteQuery(sql.ToString(), null, Get_TrxName())); } else { sql.Clear(); sql.Append("SELECT DaysBetween(CancellationDate, StartDate) FROM C_Contract WHERE C_Contract_ID = " + cont.GetC_Contract_ID()); Decimal?diffDays = Util.GetValueOfDecimal(DB.ExecuteScalar(sql.ToString(), null, Get_TrxName())); price = Decimal.Multiply(cont.GetPriceEntered(), cont.GetQtyEntered()); if (diffDays > 0) { sql.Clear(); sql.Append("UPDATE C_ContractSchedule SET IsActive = 'N' WHERE C_Contract_ID = " + cont.GetC_Contract_ID()); res = Util.GetValueOfInt(DB.ExecuteQuery(sql.ToString(), null, Get_TrxName())); } else { sql.Clear(); sql.Append("UPDATE C_ContractSchedule SET IsActive = 'N' WHERE C_Contract_ID = " + cont.GetC_Contract_ID()); res = Util.GetValueOfInt(DB.ExecuteQuery(sql.ToString(), null, Get_TrxName())); } } } } price = Decimal.Round(price.Value, 2, MidpointRounding.AwayFromZero); inv = new VAdvantage.Model.MInvoice(GetCtx(), 0, Get_TrxName()); inv.SetAD_Client_ID(cont.GetAD_Client_ID()); inv.SetAD_Org_ID(cont.GetAD_Org_ID()); inv.SetC_BPartner_ID(cont.GetC_BPartner_ID()); if (Util.GetValueOfInt(cont.GetC_Order_ID()) != 0) { inv.SetC_Order_ID(cont.GetC_Order_ID()); } // JID_0872: System has To pick the Payment Method defined with the Business Partner against whom the Invoice is getting generated. if (Env.IsModuleInstalled("VA009_")) { if (bp.GetVA009_PaymentMethod_ID() > 0) { inv.SetVA009_PaymentMethod_ID(bp.GetVA009_PaymentMethod_ID()); } else { throw new ArgumentException(Msg.GetMsg(GetCtx(), "VIS_PaymentMethodNotDefined") + " : " + bp.GetName()); } } inv.SetC_DocType_ID(C_DocType_ID); inv.SetC_DocTypeTarget_ID(C_DocType_ID); inv.SetC_BPartner_Location_ID(cont.GetBill_Location_ID()); inv.SetC_Currency_ID(cont.GetC_Currency_ID()); inv.SetC_PaymentTerm_ID(cont.GetC_PaymentTerm_ID()); inv.SetC_Campaign_ID(cont.GetC_Campaign_ID()); inv.SetIsSOTrx(true); inv.SetM_PriceList_ID(cont.GetM_PriceList_ID()); inv.SetSalesRep_ID(cont.GetSalesRep_ID()); inv.SetC_Contract_ID(cont.GetC_Contract_ID()); if (!inv.Save()) { //Neha----If Invoice not saved then will show the exception---11 Sep,2018 ValueNamePair pp = VAdvantage.Logging.VLogger.RetrieveError(); if (pp != null) { throw new ArgumentException("Cannot save Invoice. " + pp.GetName()); } throw new ArgumentException("Cannot save Invoice"); } else { VAdvantage.Model.MInvoiceLine invLine = new VAdvantage.Model.MInvoiceLine(GetCtx(), 0, Get_TrxName()); invLine.SetAD_Client_ID(inv.GetAD_Client_ID()); invLine.SetAD_Org_ID(inv.GetAD_Org_ID()); invLine.SetC_Campaign_ID(inv.GetC_Campaign_ID()); invLine.SetC_Invoice_ID(inv.GetC_Invoice_ID()); invLine.SetC_UOM_ID(cont.GetC_UOM_ID()); invLine.SetM_Product_ID(cont.GetM_Product_ID()); // Added by Vivek on 21/11/2017 asigned by Pradeep invLine.SetM_AttributeSetInstance_ID(cont.GetM_AttributeSetInstance_ID()); if (Util.GetValueOfInt(cont.GetC_OrderLine_ID()) != 0) { invLine.SetC_OrderLine_ID(cont.GetC_OrderLine_ID()); } invLine.SetC_Tax_ID(cont.GetC_Tax_ID()); invLine.SetQty(cont.GetQtyEntered()); invLine.SetQtyEntered(cont.GetQtyEntered()); // invLine.SetQtyInvoiced(1); // invLine.SetPrice(price.Value); invLine.SetPriceActual(cont.GetPriceEntered()); invLine.SetPriceEntered(cont.GetPriceEntered()); // invLine.SetPriceLimit(price); invLine.SetPriceList(cont.GetPriceEntered()); if (!invLine.Save()) { //Neha----If Invoice Line not saved then will show the exception---11 Sep,2018 ValueNamePair pp = VAdvantage.Logging.VLogger.RetrieveError(); if (pp != null) { throw new ArgumentException("Cannot save Invoice Line. " + pp.GetName()); } throw new ArgumentException("Cannot save Invoice Line"); } } string comp = inv.CompleteIt(); //Neha---If Invoice Completed then Set Document Action, Document Status and Contract on Invoice Header---11 Sep,2018 if (comp == "CO") { inv.SetDocAction("CL"); inv.SetDocStatus("CO"); //Neha---Set C_Contract_ID on C_invoice table using MClass object--11 Sep,2018 inv.SetC_Contract_ID(cont.GetC_Contract_ID()); if (!inv.Save()) { //Neha----If Invoice not saved then will show the exception---11 Sep,2018 ValueNamePair pp = VAdvantage.Logging.VLogger.RetrieveError(); if (pp != null) { throw new ArgumentException("Cannot save Invoice. " + pp.GetName()); } throw new ArgumentException("Cannot save Invoice"); } } else { //Neha----If Invoice not completed then will show the exception---11 Sep,2018 if (inv.GetProcessMsg() != null) { throw new ArgumentException("Cannot complete the Invoice. " + inv.GetProcessMsg()); } throw new ArgumentException("Cannot complete the Invoice"); } #region Commented Code //Neha---Set C_Contract_ID on C_invoice table using MClass object--11 Sep,2018 //sql = "UPDATE c_invoice SET C_Contract_ID = " + cont.GetC_Contract_ID() + " WHERE c_invoice_id = " + inv.GetC_Invoice_ID(); //res = Util.GetValueOfInt(DB.ExecuteQuery(sql, null, null)); //Neha---taxAmt not used in this class----11 Sep,2018 //sql = "SELECT SUM(taxamt) FROM c_invoicetax WHERE c_invoice_id = " + inv.GetC_Invoice_ID(); //Decimal? taxAmt = Util.GetValueOfDecimal(DB.ExecuteScalar(sql, null, null)); # endregion sql.Clear(); sql.Append("UPDATE C_ContractSchedule SET C_Invoice_ID = " + inv.GetC_Invoice_ID() + ", Processed = 'Y' WHERE C_ContractSchedule_ID = " + contSchedule.GetC_ContractSchedule_ID()); res = Util.GetValueOfInt(DB.ExecuteQuery(sql.ToString(), null, Get_TrxName())); //Neha---Append Document No. in sb----12 Sep,2018 sb.Append(inv.GetDocumentNo() + ", "); //_count++; }
/// <summary> /// /// </summary> /// <returns></returns> protected override string DoIt() { int C_Contract_ID = Util.GetValueOfInt(GetRecord_ID()); if (C_Contract_ID != 0) { cont = new VAdvantage.Model.X_C_Contract(GetCtx(), C_Contract_ID, Get_TrxName()); bp = new MBPartner(GetCtx(), cont.GetC_BPartner_ID(), Get_TrxName()); string date = System.DateTime.Now.ToString("dd-MMM-yyyy"); int[] contSch = VAdvantage.Model.X_C_ContractSchedule.GetAllIDs("C_ContractSchedule", "C_Contract_ID = " + C_Contract_ID + " AND FROMDATE <= '" + date + "' AND NVL(C_INVOICE_ID,0) = 0", Get_TrxName()); //Neha----If Not found any Invoice Schedule against the Contract then it will display the error message--11 Sep,2018 if (contSch != null && contSch.Length > 0) { for (int i = 0; i < contSch.Length; i++) { contSchedule = new VAdvantage.Model.X_C_ContractSchedule(GetCtx(), Util.GetValueOfInt(contSch[i]), Get_TrxName()); GenerateInvoice(contSchedule); } } else { return(Msg.GetMsg(GetCtx(), "VIS_NotFoundInvSchedule.")); } sql.Clear(); sql.Append("SELECT COUNT(C_ContractSchedule_ID) FROM C_ContractSchedule WHERE C_Contract_ID = " + C_Contract_ID + " AND NVL(C_INVOICE_ID,0) > 0"); string sql1 = "UPDATE C_Contract SET InvoicesGenerated = " + Util.GetValueOfInt(DB.ExecuteScalar(sql.ToString(), null, Get_TrxName())) + " WHERE C_Contract_ID = " + C_Contract_ID; int res = DB.ExecuteQuery(sql1, null, Get_TrxName()); } else { sql.Append("SELECT C_Contract_ID FROM C_Contract WHERE IsActive = 'Y' AND AD_Client_ID = " + GetAD_Client_ID()); IDataReader idr = null; try { idr = DB.ExecuteReader(sql.ToString(), null, Get_TrxName()); while (idr.Read()) { cont = new VAdvantage.Model.X_C_Contract(GetCtx(), Util.GetValueOfInt(idr[0]), Get_TrxName()); string date = System.DateTime.Now.ToString("dd-MMM-yyyy"); int[] contSch = VAdvantage.Model.X_C_ContractSchedule.GetAllIDs("C_ContractSchedule", "C_Contract_ID = " + cont.GetC_Contract_ID() + " AND FROMDATE <= '" + date + "' AND NVL(C_INVOICE_ID,0) = 0", Get_TrxName()); if (contSch != null) { for (int i = 0; i < contSch.Length; i++) { contSchedule = new VAdvantage.Model.X_C_ContractSchedule(GetCtx(), Util.GetValueOfInt(contSch[i]), Get_TrxName()); GenerateInvoice(contSchedule); } } sql.Clear(); sql.Append("SELECT COUNT(C_ContractSchedule_ID) FROM C_ContractSchedule WHERE C_Contract_ID = " + cont.GetC_Contract_ID() + " AND NVL(C_INVOICE_ID,0) > 0"); string sql1 = "UPDATE C_Contract SET InvoicesGenerated = " + Util.GetValueOfInt(DB.ExecuteScalar(sql.ToString(), null, Get_TrxName())) + " WHERE C_Contract_ID = " + cont.GetC_Contract_ID(); int res = DB.ExecuteQuery(sql1, null, Get_TrxName()); } if (idr != null) { idr.Close(); idr = null; } } catch { if (idr != null) { idr.Close(); idr = null; } } } //Neha--If Invoice generated sucessfully then it will return sb.Length greater then 0 if (sb.Length > 0) { return(Msg.GetMsg(GetCtx(), "VIS_InvGenerated") + sb.ToString().Substring(0, sb.Length - 2)); } else { return(Msg.GetMsg(GetCtx(), "VIS_InvNotGenerated")); } }
protected override String DoIt() { //int C_Contract_ID = 0; String Sql = "SELECT C_Order_ID FROM C_OrderLine WHERE C_OrderLine_ID=" + orderLineID; int orderID = Util.GetValueOfInt(DB.ExecuteScalar(Sql, null, Get_TrxName())); VAdvantage.Model.X_C_Order order = new VAdvantage.Model.X_C_Order(GetCtx(), orderID, Get_TrxName()); // string DocStatus = order.GetDocStatus(); //if (DocStatus != "CO") //{ // return Msg.GetMsg(GetCtx(), "FirstCompleteOrder"); //} VAdvantage.Model.X_C_OrderLine line = new VAdvantage.Model.X_C_OrderLine(GetCtx(), orderLineID, Get_TrxName()); if (!line.IsProcessed()) { return(Msg.GetMsg(GetCtx(), "FirstCompleteOrder")); } if (line.IsContract() && line.GetC_Contract_ID() == 0) { contact = new VAdvantage.Model.X_C_Contract(GetCtx(), 0, Get_TrxName()); //Neha---Commented code because object created but not used in further class---17 Sep,2018 //VAdvantage.Model.MProductPricing pp = new VAdvantage.Model.MProductPricing(GetCtx().GetAD_Client_ID(), GetCtx().GetAD_Org_ID(), // line.GetM_Product_ID(), order.GetC_BPartner_ID(), line.GetQtyOrdered(), true); int M_PriceList_ID = Util.GetValueOfInt(order.GetM_PriceList_ID()); //pp.SetM_PriceList_ID(M_PriceList_ID); string sql = "SELECT pl.IsTaxIncluded,pl.EnforcePriceLimit,pl.C_Currency_ID,c.StdPrecision," + "plv.M_PriceList_Version_ID,plv.ValidFrom " + "FROM M_PriceList pl,C_Currency c,M_PriceList_Version plv " + "WHERE pl.C_Currency_ID=c.C_Currency_ID" + " AND pl.M_PriceList_ID=plv.M_PriceList_ID" + " AND pl.M_PriceList_ID=" + M_PriceList_ID // 1 + " ORDER BY plv.ValidFrom DESC"; //int M_PriceList_Version_ID = 0; int C_Currency_ID = 0; DataSet ds = DB.ExecuteDataset(sql, null, Get_TrxName()); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { DataRow dr1 = ds.Tables[0].Rows[i]; // Tax Included // bool isTaxIncluded = Util.GetValueOfBool(ds.Tables[0].Rows[i]["IsTaxIncluded"]); // Price Limit Enforce // bool isTaxIncluded = Util.GetValueOfBool(ds.Tables[0].Rows[i]["IsTaxIncluded"]); // Currency // int ii = Util.GetValueOfInt(dr[2].ToString()); C_Currency_ID = Util.GetValueOfInt(ds.Tables[0].Rows[i]["C_Currency_ID"]); // int prislst = Util.GetValueOfInt(dr[4].ToString()); // PriceList Version //M_PriceList_Version_ID = Util.GetValueOfInt(ds.Tables[0].Rows[i]["M_PriceList_Version_ID"]); } //int M_PriceList_Version_ID = GetCtx().GetContextAsInt(WindowNo, "M_PriceList_Version_ID"); //pp.SetM_PriceList_Version_ID(M_PriceList_Version_ID); //Neha---Set Tenant,Organization from Sales Order---19 Sep,2018 contact.SetAD_Client_ID(order.GetAD_Client_ID()); contact.SetAD_Org_ID(order.GetAD_Org_ID()); //---------------------End ------------------ contact.SetDescription(order.GetDescription()); contact.SetC_Order_ID(order.GetC_Order_ID()); contact.SetC_OrderLine_ID(line.GetC_OrderLine_ID()); contact.SetStartDate(line.GetStartDate()); contact.SetEndDate(line.GetEndDate()); contact.SetC_BPartner_ID(order.GetC_BPartner_ID()); contact.SetBill_Location_ID(order.GetBill_Location_ID()); contact.SetBill_User_ID(order.GetBill_User_ID()); contact.SetSalesRep_ID(order.GetSalesRep_ID()); contact.SetC_Currency_ID(line.GetC_Currency_ID()); contact.SetC_ConversionType_ID(order.GetC_ConversionType_ID()); contact.SetC_PaymentTerm_ID(order.GetC_PaymentTerm_ID()); contact.SetM_PriceList_ID(order.GetM_PriceList_ID()); contact.SetC_Frequency_ID(line.GetC_Frequency_ID()); //contact.SetPriceList(pp.GetPriceList()); //contact.SetPriceActual(pp.GetPriceStd()); //contact.SetPriceEntered(pp.GetPriceStd()); contact.SetQtyEntered(line.GetQtyPerCycle()); //Neha--Set List Price,Price,Unit Price,Discount,Total Invoice from Order Line--17 Sep,2018 contact.SetPriceList(line.GetPriceList()); contact.SetPriceActual(line.GetPriceActual()); contact.SetPriceEntered(line.GetPriceEntered()); //Decimal discount = Decimal.Round(Decimal.Divide(Decimal.Multiply(Decimal.Subtract(pp.GetPriceList(), pp.GetPriceStd()), new Decimal(100)), pp.GetPriceList()), 2); //contact.SetDiscount(discount); contact.SetDiscount(line.GetDiscount()); //contact.SetGrandTotal( // invoice Count Start //DateTime SDate = (DateTime)(line.GetStartDate()); //DateTime Edate = (DateTime)(line.GetEndDate()); //int frequency = Util.GetValueOfInt(line.GetC_Frequency_ID()); //string PSql = "Select NoOfDays from C_Frequency where C_Frequency_ID=" + frequency; //int days = Util.GetValueOfInt(DB.ExecuteScalar(PSql, null, Get_TrxName())); //int totaldays = (Edate - SDate).Days; //int count = 1; //if (days > 0) //{ // count = totaldays / days; //} contact.SetTotalInvoice(line.GetNoofCycle()); //invoice Count end contact.SetC_Project_ID(order.GetC_Project_ID()); // contact.SetPriceList(line.GetPriceList()); //contact.SetPriceActual(line.GetPriceActual()); contact.SetC_UOM_ID(line.GetC_UOM_ID()); contact.SetM_Product_ID(line.GetM_Product_ID()); // Added by Vivek on 21/11/2017 asigned by Pradeep contact.SetM_AttributeSetInstance_ID(line.GetM_AttributeSetInstance_ID()); // contact.SetPriceEntered(line.GetPriceEntered()); //contact.SetQtyEntered(line.GetQtyEntered()); // contact.SetDiscount(line.GetDiscount()); contact.SetC_Tax_ID(line.GetC_Tax_ID()); contact.SetC_Campaign_ID(order.GetC_Campaign_ID()); //Neha---Calculate TaxAmt,GrandTotal,Line Amount,Bill Start Date on the basis of Actual Price(Sales Order Line)--17 Sep,2018 sql = "SELECT Rate FROM C_Tax WHERE C_Tax_ID = " + line.GetC_Tax_ID(); Decimal?rate = Util.GetValueOfDecimal(DB.ExecuteScalar(sql, null, Get_TrxName())); Decimal?amt = Decimal.Multiply(line.GetPriceActual(), (Decimal.Divide(rate.Value, 100))); amt = Decimal.Round(amt.Value, 2, MidpointRounding.AwayFromZero); Decimal?taxAmt = Decimal.Multiply(amt.Value, line.GetQtyPerCycle()); contact.SetTaxAmt(taxAmt); contact.SetGrandTotal(Decimal.Add(Decimal.Multiply(line.GetQtyPerCycle(), line.GetPriceActual()), taxAmt.Value)); contact.SetLineNetAmt(Decimal.Multiply(line.GetQtyPerCycle(), line.GetPriceActual())); contact.SetBillStartDate(line.GetStartDate()); contact.SetDocStatus("DR"); contact.SetRenewContract("N"); if (!contact.Save()) { //Neha----If Service Contract not saved then will show the exception---17 Sep,2018 ValueNamePair pp = VAdvantage.Logging.VLogger.RetrieveError(); if (pp != null) { throw new ArgumentException("Cannot save Service Contract. " + pp.GetName()); } throw new ArgumentException("Cannot save Service Contract"); } else { if (!line.Save()) { //Neha----If Order Line not saved then will show the exception---17 Sep,2018 ValueNamePair pp = VAdvantage.Logging.VLogger.RetrieveError(); if (pp != null) { throw new ArgumentException("Cannot save Order Line. " + pp.GetName()); } throw new ArgumentException("Cannot save Order Line"); } //Neha---Set CreateServiceContract,Order Line ID on Order Line tab---17 Sep,2018 String _qry = "UPDATE C_ORDERLINE SET C_CONTRACT_ID=" + contact.GetC_Contract_ID() + " ,CreateServiceContract='Y' WHERE C_ORDERLINE_ID=" + line.GetC_OrderLine_ID(); DB.ExecuteScalar(_qry, null, Get_TrxName()); } } //Neha---Check Contarct_ID on Order line if CreateServiceContract is false then allow to create Service Contract----18 Sep,2018 int _count = Util.GetValueOfInt(DB.ExecuteScalar("SELECT COUNT(C_ORDERLINE_ID) FROM C_ORDERLINE WHERE CREATESERVICECONTRACT='N' AND IsActive='Y' AND C_ORDER_ID =" + line.GetC_Order_ID(), null, Get_TrxName())); if (_count == 0) { String _qry = "UPDATE C_ORDER SET CreateServiceContract='Y' WHERE C_ORDER_ID=" + line.GetC_Order_ID(); DB.ExecuteScalar(_qry, null, Get_TrxName()); } //order.SetCreateServiceContract("Y"); //if (!order.Save()) //{ //} return(Msg.GetMsg(GetCtx(), "ServiceContractGenerationDone") + contact.GetDocumentNo()); }