/// <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, null); 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 c_invoice_id is null", null); if (contSch != null) { for (int i = 0; i < contSch.Length; i++) { VAdvantage.Model.X_C_ContractSchedule contSchedule = new VAdvantage.Model.X_C_ContractSchedule(GetCtx(), Util.GetValueOfInt(contSch[i]), null); GenerateInvoice(contSchedule); } } sql = "select count(*) from c_contractschedule where c_contract_id = " + C_Contract_ID + " and c_invoice_id is not null"; string sql1 = "update c_contract set invoicesgenerated = " + Util.GetValueOfInt(DB.ExecuteScalar(sql, null, null)) + " where c_contract_id = " + C_Contract_ID; int res = DB.ExecuteQuery(sql1, null, null); } else { sql = "select C_Contract_id from c_contract where isactive = 'Y' and ad_client_id = " + GetCtx().GetAD_Client_ID(); IDataReader idr = null; try { idr = DB.ExecuteReader(sql, null, null); while (idr.Read()) { cont = new VAdvantage.Model.X_C_Contract(GetCtx(), Util.GetValueOfInt(idr[0]), null); 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 c_invoice_id is null", null); if (contSch != null) { for (int i = 0; i < contSch.Length; i++) { VAdvantage.Model.X_C_ContractSchedule contSchedule = new VAdvantage.Model.X_C_ContractSchedule(GetCtx(), Util.GetValueOfInt(contSch[i]), null); GenerateInvoice(contSchedule); } } sql = "select count(*) from c_contractschedule where c_contract_id = " + cont.GetC_Contract_ID() + " and c_invoice_id is not null"; string sql1 = "update c_contract set invoicesgenerated = " + Util.GetValueOfInt(DB.ExecuteScalar(sql, null, null)) + " where c_contract_id = " + cont.GetC_Contract_ID(); int res = DB.ExecuteQuery(sql1, null, null); } if (idr != null) { idr.Close(); idr = null; } } catch { if (idr != null) { idr.Close(); idr = null; } } } msg = Msg.GetMsg(GetCtx(), "RecordsGenerated"); return(msg); }
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, null)); VAdvantage.Model.X_C_Order order = new VAdvantage.Model.X_C_Order(GetCtx(), orderID, null); // 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, null); if (!line.IsProcessed()) { return(Msg.GetMsg(GetCtx(), "FirstCompleteOrder")); } if (line.IsContract() && line.GetC_Contract_ID() == 0) { VAdvantage.Model.X_C_Contract contact = new VAdvantage.Model.X_C_Contract(GetCtx(), 0, null); 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); 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); 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()); Decimal discount = Decimal.Round(Decimal.Divide(Decimal.Multiply(Decimal.Subtract(pp.GetPriceList(), pp.GetPriceStd()), new Decimal(100)), pp.GetPriceList()), 2); contact.SetDiscount(discount); //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 = 1; if (days > 0) { count = totaldays / days; } contact.SetTotalInvoice(count); //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()); // 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()); sql = "select rate from c_tax where c_tax_id = " + line.GetC_Tax_ID(); Decimal?rate = Util.GetNullableDecimal(DB.ExecuteScalar(sql, null, null)); Decimal?amt = Decimal.Multiply(pp.GetPriceStd(), (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(), pp.GetPriceStd()), taxAmt.Value)); contact.SetLineNetAmt(Decimal.Multiply(line.GetQtyPerCycle(), pp.GetPriceStd())); contact.SetDocStatus("DR"); contact.SetRenewContract("N"); if (contact.Save()) { line.SetC_Contract_ID(contact.GetC_Contract_ID()); if (line.Save()) { } } C_Contract_ID = contact.GetC_Contract_ID(); } //order.SetCreateServiceContract("Y"); //if (!order.Save()) //{ //} return(Msg.GetMsg(GetCtx(), "ServiceContractGenerationDone")); }
/// <summary> /// /// </summary> /// <param name="contSchedule"></param> private void GenerateInvoice(VAdvantage.Model.X_C_ContractSchedule contSchedule) { if (contSchedule.IsActive()) { int res = 0; sql = "select c_doctype_id from c_doctype where name = 'AR Invoice' and ad_client_id = " + GetCtx().GetAD_Client_ID(); int C_DocType_ID = Util.GetValueOfInt(DB.ExecuteScalar(sql, null, null)); // 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 = "update c_contract set renewaltype = null where c_contract_id = " + cont.GetC_Contract_ID(); int res2 = Util.GetValueOfInt(DB.ExecuteQuery(sql, null, null)); if (contSchedule.GetEndDate() <= cont.GetCancellationDate()) { price = Decimal.Multiply(cont.GetPriceEntered(), cont.GetQtyEntered()); } else { sql = "select max(c_contractschedule_id) from c_contractschedule where c_invoice_id is not null and c_contract_id = " + cont.GetC_Contract_ID(); int c_contractschedule_id = Util.GetValueOfInt(DB.ExecuteScalar(sql, null, null)); if (c_contractschedule_id != 0) { string date = cont.GetCancellationDate().Value.ToString("dd-MMM-yyyy"); // int contsch = Util.GetValueOfInt(contSchedule.GetC_ContractSchedule_ID()) - 1; sql = "select daysbetween('" + date + "', enddate) from c_contractschedule where c_contractschedule_id = " + c_contractschedule_id; Decimal?diffDays = Util.GetValueOfDecimal(DB.ExecuteScalar(sql, null, null)); // price = Decimal.Multiply(cont.GetPriceEntered(), diffDays.Value); price = Decimal.Multiply(cont.GetPriceEntered(), cont.GetQtyEntered()); sql = "update c_contractschedule set isactive = 'N' where enddate > '" + date + "' and c_contract_id = " + cont.GetC_Contract_ID(); res = Util.GetValueOfInt(DB.ExecuteQuery(sql, null, null)); } else { sql = "select daysbetween(cancellationdate, startdate) from c_contract where c_contract_id = " + cont.GetC_Contract_ID(); Decimal?diffDays = Util.GetValueOfDecimal(DB.ExecuteScalar(sql, null, null)); //price = Decimal.Multiply(Decimal.Divide(cont.GetPriceEntered(), days.Value), diffDays.Value); price = Decimal.Multiply(cont.GetPriceEntered(), cont.GetQtyEntered()); if (diffDays > 0) { sql = "update c_contractschedule set isactive = 'N' where c_contract_id = " + cont.GetC_Contract_ID(); res = Util.GetValueOfInt(DB.ExecuteQuery(sql, null, null)); } else { sql = "update c_contractschedule set isactive = 'N' where c_contract_id = " + cont.GetC_Contract_ID(); res = Util.GetValueOfInt(DB.ExecuteQuery(sql, null, null)); } // sql = "update c_contractschedule set isactive = 'N' where enddate > '" + System.DateTime.Now + "' and c_contract_id = " + cont.GetC_Contract_ID(); } } } price = Decimal.Round(price.Value, 2, MidpointRounding.AwayFromZero); VAdvantage.Model.MInvoice inv = new VAdvantage.Model.MInvoice(GetCtx(), 0, null); inv.SetAD_Client_ID(GetCtx().GetAD_Client_ID()); inv.SetAD_Org_ID(GetCtx().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()); } 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()) { } if (inv.GetC_Invoice_ID() != 0) { VAdvantage.Model.MInvoiceLine invLine = new VAdvantage.Model.MInvoiceLine(GetCtx(), 0, null); 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()); 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()) { } } string comp = inv.CompleteIt(); inv.SetDocAction("CL"); inv.SetDocStatus("CO"); if (!inv.Save()) { } 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)); sql = "select sum(taxamt) from c_invoicetax where c_invoice_id = " + inv.GetC_Invoice_ID(); Decimal?taxAmt = Util.GetValueOfDecimal(DB.ExecuteScalar(sql, null, null)); sql = "update c_contractschedule set c_invoice_id = " + inv.GetC_Invoice_ID() + ", processed = 'Y' where c_contractschedule_id = " + contSchedule.GetC_ContractSchedule_ID(); // sql = "update c_contractschedule set c_invoice_id = " + inv.GetC_Invoice_ID() + ", processed = 'Y', TotalAmt = " + inv.GetTotalLines() + ", taxamt = " + taxAmt + ", grandtotal = " + inv.GetGrandTotal() + " where c_contractschedule_id = " + contSchedule.GetC_ContractSchedule_ID(); res = Util.GetValueOfInt(DB.ExecuteQuery(sql, null, null)); } }
protected override String DoIt() { string Sql, newcon = ""; String date = string.Format("{0:dd/MM/yy}", today); int Record_id = GetRecord_ID(); VAdvantage.Model.X_C_Contract con = new VAdvantage.Model.X_C_Contract(GetCtx(), Record_id, null); if (Record_id != 0) { // Sql = "Select C_Contract_id From C_Contract where to_char(EndDate,'dd/mm/yy')='" + date + "' and C_Contract_id=" + Record_id + " and RenewContract = 'N'"; //Sql = "Select C_Contract_id From C_Contract where to_char(EndDate,'dd/mm/yy')='" + date + "' and C_Contract_id=" + Record_id; Sql = "select RenewalType from c_contract where C_Contract_id=" + Record_id + " and RenewContract = 'N' and isactive = 'Y' and ad_client_id = " + GetCtx().GetAD_Client_ID(); string renewType = Util.GetValueOfString(DB.ExecuteScalar(Sql)); if (renewType == "M") { Sql = "select C_Contract_id from c_contract where C_Contract_id=" + Record_id + " and RenewContract = 'N' and ad_client_id = " + GetCtx().GetAD_Client_ID(); } else { Sql = "select C_Contract_id from c_contract where (enddate- nvl(cancelbeforedays,0)) <= sysdate and C_Contract_id=" + Record_id + " and RenewContract = 'N' and ad_client_id = " + GetCtx().GetAD_Client_ID(); } } else { //Sql = "Select C_Contract_id From C_Contract where to_char(EndDate,'dd/mm/yy')='" + date + "' and RenewContract = 'N'"; Sql = "select C_Contract_id from c_contract where (enddate- nvl(cancelbeforedays,0)) <= sysdate and RenewalType='A' and RenewContract = 'N' and ad_client_id = " + GetCtx().GetAD_Client_ID(); } IDataReader dr = DB.ExecuteReader(Sql); int COUNT = 0; while (dr.Read()) { VAdvantage.Model.X_C_Contract contact = new VAdvantage.Model.X_C_Contract(GetCtx(), Util.GetValueOfInt(dr[0]), null); string type = Util.GetValueOfString(contact.GetRenewalType()); if (type == "M") { DateTime?CDate = Util.GetValueOfDateTime(contact.GetCancellationDate()); int cycles = Util.GetValueOfInt(contact.GetCycles()); string RType = contact.GetRenewalType(); if (CDate != null) { continue; } VAdvantage.Model.X_C_Contract New = new VAdvantage.Model.X_C_Contract(GetCtx(), 0, null); New.SetRefContract(contact.GetDocumentNo()); New.SetC_Order_ID(contact.GetC_Order_ID()); New.SetC_OrderLine_ID(contact.GetC_OrderLine_ID()); DateTime OldStart = (DateTime)(contact.GetStartDate()); DateTime Start = (DateTime)(contact.GetEndDate()); int duration = (Start - OldStart).Days; DateTime End = Start.AddDays(duration); New.SetStartDate(Start.AddDays(1)); // New.SetEndDate(End.AddDays(1)); New.SetC_BPartner_ID(contact.GetC_BPartner_ID()); New.SetBill_Location_ID(contact.GetBill_Location_ID()); New.SetBill_User_ID(contact.GetBill_User_ID()); New.SetSalesRep_ID(contact.GetSalesRep_ID()); New.SetC_Currency_ID(contact.GetC_Currency_ID()); New.SetC_ConversionType_ID(contact.GetC_ConversionType_ID()); New.SetC_PaymentTerm_ID(contact.GetC_PaymentTerm_ID()); New.SetC_Frequency_ID(contact.GetC_Frequency_ID()); // invoice Count Start //DateTime SDate = Start; //DateTime Edate = End; int frequency = Util.GetValueOfInt(contact.GetC_Frequency_ID()); string PSql = "Select NoOfMonths from C_Frequency where C_Frequency_ID=" + frequency; int months = Util.GetValueOfInt(DB.ExecuteScalar(PSql, null, null)); int dur = months * cycles; DateTime endDate = Start.AddMonths(dur); endDate = endDate.AddDays(-1); New.SetEndDate(endDate); //int totaldays = (Edate - SDate).Days; //int count = totaldays / days; New.SetTotalInvoice(cycles); //invoice Count end if (Record_id != 0) { New.SetM_PriceList_ID(contact.GetRef_PriceList_ID()); String Query = "Select M_PriceList_Version_id from M_PriceList_Version where IsActive='Y' and M_PriceList_Id=" + contact.GetRef_PriceList_ID(); int Version = Util.GetValueOfInt(DB.ExecuteScalar(Query)); Query = "Select PriceList from M_ProductPrice where M_PriceList_Version_id=" + Version + " and M_Product_ID=" + contact.GetM_Product_ID(); decimal Listprice = Util.GetValueOfInt(DB.ExecuteScalar(Query)); Query = "Select PriceStd from M_ProductPrice where M_PriceList_Version_id=" + Version + " and M_Product_ID=" + contact.GetM_Product_ID(); decimal Stdprice = Util.GetValueOfInt(DB.ExecuteScalar(Query)); if (Stdprice == 0 && Listprice == 0) { dr.Close(); return(Msg.GetMsg(GetCtx(), "ProductNotINPriceList")); } New.SetPriceEntered(Stdprice); New.SetPriceActual(Stdprice); New.SetPriceList(Listprice); } else { New.SetM_PriceList_ID(contact.GetM_PriceList_ID()); New.SetPriceEntered(contact.GetPriceEntered()); New.SetPriceActual(contact.GetPriceActual()); New.SetPriceList(contact.GetPriceList()); } New.SetC_UOM_ID(contact.GetC_UOM_ID()); New.SetM_Product_ID(contact.GetM_Product_ID()); // New.SetLineNetAmt(contact.GetLineNetAmt()); New.SetQtyEntered(contact.GetQtyEntered()); // New.SetDiscount(contact.GetDiscount()); New.SetC_Tax_ID(contact.GetC_Tax_ID()); New.SetC_Campaign_ID(contact.GetC_Campaign_ID()); New.SetRef_Contract_ID(contact.GetC_Contract_ID()); New.SetC_Project_ID(contact.GetC_Project_ID()); New.SetDescription(contact.GetDescription()); // New.SetLineNetAmt(contact.GetLineNetAmt()); // New.SetGrandTotal(contact.GetGrandTotal()); New.SetTaxAmt(contact.GetTaxAmt()); New.SetCancelBeforeDays(contact.GetCancelBeforeDays()); New.SetCycles(contact.GetCycles()); New.SetRenewContract("N"); New.SetScheduleContract("N"); New.SetDocStatus("DR"); New.SetRenewalType("M"); String sqltax = "select rate from c_tax WHERE c_tax_id=" + contact.GetC_Tax_ID() + ""; Decimal?Rate = Util.GetValueOfDecimal(DB.ExecuteScalar(sqltax, null, null)); New.SetLineNetAmt(Decimal.Multiply(New.GetPriceEntered(), New.GetQtyEntered())); Decimal?TotalRate = Util.GetValueOfDecimal((Util.GetValueOfDecimal(New.GetLineNetAmt()) * Util.GetValueOfDecimal(Rate)) / 100); TotalRate = Decimal.Round(TotalRate.Value, 2); Decimal?dis = Decimal.Multiply(Decimal.Divide(Decimal.Subtract(New.GetPriceList(), New.GetPriceEntered()), New.GetPriceList()), 100); //Decimal? Discount = Util.GetValueOfDecimal(((Decimal.ToDouble(PriceList.Value) - Decimal.ToDouble(PriceActual.Value)) / Decimal.ToDouble(PriceList.Value) * 100.0)); New.SetDiscount(dis); New.SetTaxAmt(TotalRate); New.SetGrandTotal(Decimal.Add(New.GetLineNetAmt(), New.GetTaxAmt())); if (New.Save()) { newcon = New.GetDocumentNo(); ++COUNT; if (Record_id != 0) { contact.SetRef_Contract_ID(New.GetC_Contract_ID()); contact.SetRenewContract("Y"); if (contact.Save()) { } } } } else { DateTime?CDate = Util.GetValueOfDateTime(contact.GetCancellationDate()); int cycles = Util.GetValueOfInt(contact.GetCycles()); string RType = contact.GetRenewalType(); if (CDate != null) { continue; } VAdvantage.Model.X_C_Contract New = new VAdvantage.Model.X_C_Contract(GetCtx(), 0, null); New.SetRefContract(contact.GetDocumentNo()); New.SetC_Order_ID(contact.GetC_Order_ID()); New.SetC_OrderLine_ID(contact.GetC_OrderLine_ID()); DateTime OldStart = (DateTime)(contact.GetStartDate()); DateTime Start = (DateTime)(contact.GetEndDate()); int duration = (Start - OldStart).Days; DateTime End = Start.AddDays(duration); New.SetStartDate(Start.AddDays(1)); int frequency = Util.GetValueOfInt(contact.GetC_Frequency_ID()); string PSql = "Select NoOfMonths from C_Frequency where C_Frequency_ID=" + frequency; int months = Util.GetValueOfInt(DB.ExecuteScalar(PSql, null, null)); int total = months * cycles; DateTime?endDate = New.GetStartDate().Value.AddMonths(total); endDate = endDate.Value.AddDays(-1); //int totaldays = (Edate - SDate).Days; New.SetEndDate(endDate); New.SetC_BPartner_ID(contact.GetC_BPartner_ID()); New.SetBill_Location_ID(contact.GetBill_Location_ID()); New.SetBill_User_ID(contact.GetBill_User_ID()); New.SetSalesRep_ID(contact.GetSalesRep_ID()); New.SetC_Currency_ID(contact.GetC_Currency_ID()); New.SetC_ConversionType_ID(contact.GetC_ConversionType_ID()); New.SetC_PaymentTerm_ID(contact.GetC_PaymentTerm_ID()); New.SetC_Frequency_ID(contact.GetC_Frequency_ID()); // invoice Count Start DateTime SDate = Start; DateTime Edate = End; //int frequency = Util.GetValueOfInt(contact.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; if (Record_id != 0) { if (contact.GetRef_PriceList_ID() == 0) { return(Msg.GetMsg(GetCtx(), "FirstSelectPriceList")); } New.SetM_PriceList_ID(contact.GetRef_PriceList_ID()); String Query = "Select M_PriceList_Version_id from M_PriceList_Version where IsActive='Y' and M_PriceList_Id=" + contact.GetRef_PriceList_ID(); int Version = Util.GetValueOfInt(DB.ExecuteScalar(Query)); Query = "Select PriceList,PriceStd from M_ProductPrice where M_PriceList_Version_id=" + Version + " and M_Product_ID=" + contact.GetM_Product_ID(); decimal Listprice = Util.GetValueOfInt(DB.ExecuteScalar(Query)); Query = "Select PriceList,PriceStd from M_ProductPrice where M_PriceList_Version_id=" + Version + " and M_Product_ID=" + contact.GetM_Product_ID(); decimal Stdprice = Util.GetValueOfInt(DB.ExecuteScalar(Query)); if (Stdprice == 0 && Listprice == 0) { dr.Close(); return(Msg.GetMsg(GetCtx(), "ProductNotINPriceList")); } New.SetPriceEntered(Stdprice); New.SetPriceActual(Stdprice); New.SetPriceList(Listprice); } else { New.SetPriceActual(contact.GetPriceActual()); New.SetPriceList(contact.GetPriceList()); New.SetPriceEntered(contact.GetPriceEntered()); New.SetM_PriceList_ID(contact.GetM_PriceList_ID()); } New.SetTotalInvoice(contact.GetCycles()); //invoice Count end New.SetC_UOM_ID(contact.GetC_UOM_ID()); New.SetM_Product_ID(contact.GetM_Product_ID()); // New.SetLineNetAmt(contact.GetLineNetAmt()); New.SetQtyEntered(contact.GetQtyEntered()); New.SetDiscount(contact.GetDiscount()); New.SetC_Tax_ID(contact.GetC_Tax_ID()); New.SetC_Campaign_ID(contact.GetC_Campaign_ID()); New.SetRef_Contract_ID(contact.GetC_Contract_ID()); New.SetC_Project_ID(contact.GetC_Project_ID()); New.SetDescription(contact.GetDescription()); New.SetLineNetAmt(contact.GetLineNetAmt()); New.SetGrandTotal(contact.GetGrandTotal()); New.SetTaxAmt(contact.GetTaxAmt()); New.SetCancelBeforeDays(contact.GetCancelBeforeDays()); New.SetCycles(contact.GetCycles()); New.SetRenewContract("N"); New.SetScheduleContract("Y"); New.SetRenewalType("A"); New.SetDocStatus("DR"); if (contact.GetBillStartDate() != null) { New.SetBillStartDate(contact.GetBillStartDate().Value.AddMonths(contact.GetTotalInvoice())); } else { New.SetBillStartDate(New.GetStartDate()); } if (New.Save()) { newcon = New.GetDocumentNo(); ++COUNT; //if (Record_id != 0) //{ contact.SetRef_Contract_ID(New.GetC_Contract_ID()); contact.SetRenewContract("Y"); if (contact.Save()) { } //} EnterSchedules(New.GetC_Contract_ID(), cycles); New.SetProcessed(true); New.Save(); } } } dr.Close(); // X_C_Contract contract = new X_C_Contract(GetCtx(),id, null); if (COUNT != 0 && Record_id != 0) { return(Msg.GetMsg(GetCtx(), "ContractReNewed :" + newcon)); } if (COUNT != 0) { return(Msg.GetMsg(GetCtx(), "ContractReNewed")); } return(Msg.GetMsg(GetCtx(), "NoContractReNewed")); }