Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        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"));
        }
Esempio n. 3
0
        /// <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));
            }
        }
Esempio n. 4
0
        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"));
        }