protected void btnOK_Click(object sender, EventArgs e)
    {
        int ParcelId = Convert.ToInt16(Request.QueryString["ParcelId"].ToString());
        ParcelsManager pManager = new ParcelsManager(this);
        Parcel originalParcel = pManager.GetParcel(ParcelId, Company.CompanyId);
        Parcel parcel = pManager.GetParcel(ParcelId, Company.CompanyId);
        parcel.EffectedAmount = Convert.ToDecimal(txtEffectedAmount.Text);
        parcel.EffectedDate = Convert.ToDateTime(txtEffectedDate.Text);

        try
        {
            pManager.Update(originalParcel, parcel);
        }
        catch (Exception ex)
        {
            throw ex;
        }

        if (chkRecurrent.Checked)
        {
            parcel.IsRecurrent = true;
            if (RadioButton1.Checked)
                parcel.RecurrentPeriod = 7;
            else if (RadioButton2.Checked)
                parcel.RecurrentPeriod = 15;
            else if (RadioButton3.Checked)
                parcel.RecurrentPeriod = 30;
            else
                parcel.RecurrentPeriod = 365;

            pManager.Insert(parcel, new FinancierCondition());
        }

        Page.ClientScript.RegisterStartupScript(this.GetType(), "modal", "top.$.modal.Hide();", true);
    }
Example #2
0
 protected void btnExport_Click(object sender, EventArgs e)
 {
     if (rbtExportAutomaticDebit.Checked)
     {
         AccountManager accountManager = new AccountManager(this);
         List <Parcel>  lstParcels     = new ParcelsManager(this).GetInvoiceParcelsByPeriodInAcount(Company.CompanyId, DateTime.Now.Sql2005MinValue(), DateTime.Now, null).ToList();
         Response.Clear();
         Response.ContentType = "text/rtf";
         string headerValue = "attachment;filename=Débito.rtf";
         Response.AddHeader("content-disposition", headerValue);
         Response.ContentEncoding = System.Text.Encoding.Default;
         // Response.Write(accountManager.GenerateAutomaticDebitFile(Company, accountManager.GetAccount(Convert.ToInt32(cboAccount.SelectedValue), Company.CompanyId), lstParcels, 1));
         Response.End();
     }
     else
     {
         try
         {
             var financialManager = new FinancialManager(this);
             Response.Clear();
             financialManager.GerarArquivoRemessa(Company.CompanyId, Convert.ToInt32(cboAccount.SelectedValue), DateTime.MinValue.Sql2005MinValue(), DateTime.MaxValue, Response.OutputStream);
             Response.ContentType = "text/txt";
             string headerValue = "attachment;filename=" + "Arquivo.txt";
             Response.AddHeader("content-disposition", headerValue);
             // Response.Write(Response.OutputStream);
             Response.End();
         }
         catch (Exception ex)
         {
             ShowError(Resources.Exception.InvalidBank);
         }
     }
 }
 public void Update(Invoice original_entity, Invoice entity)
 {
     var parcelsManager = new ParcelsManager(this);
     parcelsManager.UpdateParcels(
         parcelsManager.GetInvoiceParcels(original_entity.CompanyId, original_entity.InvoiceId),
         entity.Parcels.AsQueryable());
     original_entity.CopyPropertiesFrom(entity);
     DbContext.SubmitChanges();
 }
        /// <summary>
        /// This method inserts a new record in the table.
        /// Change this method to alter how records are inserted.
        /// </summary>
        /// <param name=entity>entity</param>
        public void Insert(Invoice entity, IList<Parcel> parcels)
        {
            entity.CreatedDate = entity.ModifiedDate = DateTime.Now;
            InsertInvoice(entity);

            var parcelsManager = new ParcelsManager(this);
            foreach (Parcel item in parcels)
            {
                item.InvoiceId = entity.InvoiceId;
                item.CompanyId = entity.CompanyId;
                DbContext.Parcels.InsertOnSubmit(item);
            }
            DbContext.SubmitChanges();
        }
Example #5
0
    protected void btnOK_Click(object sender, EventArgs e)
    {
        int            ParcelId       = Convert.ToInt16(Request.QueryString["ParcelId"].ToString());
        ParcelsManager pManager       = new ParcelsManager(this);
        Parcel         originalParcel = pManager.GetParcel(ParcelId, Company.CompanyId);
        Parcel         parcel         = pManager.GetParcel(ParcelId, Company.CompanyId);

        parcel.EffectedAmount = Convert.ToDecimal(txtEffectedAmount.Text);
        parcel.EffectedDate   = Convert.ToDateTime(txtEffectedDate.Text);

        try
        {
            pManager.Update(originalParcel, parcel);
        }
        catch (Exception ex)
        {
            throw ex;
        }

        if (chkRecurrent.Checked)
        {
            parcel.IsRecurrent = true;
            if (RadioButton1.Checked)
            {
                parcel.RecurrentPeriod = 7;
            }
            else if (RadioButton2.Checked)
            {
                parcel.RecurrentPeriod = 15;
            }
            else if (RadioButton3.Checked)
            {
                parcel.RecurrentPeriod = 30;
            }
            else
            {
                parcel.RecurrentPeriod = 365;
            }

            pManager.Insert(parcel, new FinancierCondition());
        }

        Page.ClientScript.RegisterStartupScript(this.GetType(), "modal", "top.$.modal.Hide();", true);
    }
Example #6
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            int            ParcelId = Convert.ToInt16(Request.QueryString["ParcelId"].ToString());
            ParcelsManager pManager = new ParcelsManager(this);
            Parcel         parcel   = pManager.GetParcel(ParcelId, Company.CompanyId);
            txtEffectedAmount.Text = parcel.Amount.ToString();
            txtEffectedDate.Text   = DateTime.Today.ToShortDateString().Replace("00:00:00", "");
            if (Request.QueryString["Mode"] != null)
            {
                pnlAccount.Visible = true;
                cboAccount.DataBind();

                if (parcel.RecurrentPeriod == 7)
                {
                    RadioButton1.Checked = true;
                }
                else if (parcel.RecurrentPeriod == 15)
                {
                    RadioButton2.Checked = true;
                }
                else if (parcel.RecurrentPeriod == 30)
                {
                    RadioButton3.Checked = true;
                }
                else if (parcel.RecurrentPeriod == 365)
                {
                    RadioButton4.Checked = true;
                }

                if (Convert.ToBoolean(parcel.IsRecurrent))
                {
                    chkRecurrent.Checked = true;
                    lblRecurrent.Visible = chkRecurrent.Checked;
                    RadioButton1.Visible = chkRecurrent.Checked;
                    RadioButton2.Visible = chkRecurrent.Checked;
                    RadioButton3.Visible = chkRecurrent.Checked;
                    RadioButton4.Visible = chkRecurrent.Checked;
                }
            }
        }
    }
Example #7
0
    protected void btnRegister_Click(object sender, EventArgs e)
    {
        var      parcelsManager = new ParcelsManager(this);
        Parcel   parcel;
        CheckBox registered;

        foreach (GridViewRow row in grdAccountRegister.Rows)
        {
            var parcelId = (Int32)grdAccountRegister.DataKeys[row.RowIndex]["ParcelId"];
            registered = (row.Cells[0].Controls[1] as CheckBox);

            if (registered != null)
            {
                if (registered.Checked)
                {
                    parcel = parcelsManager.GetParcel(parcelId, Company.CompanyId);
                    if (parcel == null)
                    {
                        return;
                    }

                    var ucDtDateMov = (row.Cells[4].Controls[3] as Date);

                    parcel.EffectedAmount = parcel.Amount;

                    parcel.OperationDate = parcel.DueDate;
                    parcel.OperationDate = ucDtDateMov.DateTime;

                    parcel.AccountId = Convert.ToInt32(cboAccount.SelectedValue);
                    parcelsManager.Update(parcel, parcel);
                }
            }
        }
        grdAccountRegister.DataBind();
        CalculateBalance();
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            int ParcelId = Convert.ToInt16(Request.QueryString["ParcelId"].ToString());
            ParcelsManager pManager = new ParcelsManager(this);
            Parcel parcel = pManager.GetParcel(ParcelId, Company.CompanyId);
            txtEffectedAmount.Text = parcel.Amount.ToString();
            txtEffectedDate.Text = DateTime.Today.ToShortDateString().Replace("00:00:00", "");
            if (Request.QueryString["Mode"] != null)
            {
                pnlAccount.Visible = true;
                cboAccount.DataBind();

                if (parcel.RecurrentPeriod == 7)
                    RadioButton1.Checked = true;
                else if (parcel.RecurrentPeriod == 15)
                    RadioButton2.Checked = true;
                else if (parcel.RecurrentPeriod == 30)
                    RadioButton3.Checked = true;
                else if (parcel.RecurrentPeriod == 365)
                    RadioButton4.Checked = true;

                if (Convert.ToBoolean(parcel.IsRecurrent))
                {
                    chkRecurrent.Checked = true;
                    lblRecurrent.Visible = chkRecurrent.Checked;
                    RadioButton1.Visible = chkRecurrent.Checked;
                    RadioButton2.Visible = chkRecurrent.Checked;
                    RadioButton3.Visible = chkRecurrent.Checked;
                    RadioButton4.Visible = chkRecurrent.Checked;
                }

            }
        }
    }
        public void Update(Bill original_entity, Bill entity, IList<Parcel> parcels)
        {
            var parcelsManager = new ParcelsManager(this);

            entity.ModifiedDate = DateTime.Now;
            original_entity.CopyPropertiesFrom(entity);
            DbContext.SubmitChanges();

            foreach (Parcel item in parcels)
                item.BillId = original_entity.BillId;


            parcelsManager.UpdateParcels(
                parcelsManager.GetBillParcels(original_entity.CompanyId, original_entity.BillId), parcels);
        }
        public void Update(Bill original_entity, Bill entity)
        {
            var parcelsManager = new ParcelsManager(this);

            foreach (Parcel parcel in entity.Parcels)
                if (!parcel.BillId.HasValue)
                    parcel.BillId = entity.BillId;

            DbContext.SubmitChanges();
            parcelsManager.UpdateParcels(
                parcelsManager.GetBillParcels(original_entity.CompanyId, original_entity.BillId).AsQueryable(),
                entity.Parcels.AsQueryable());
            original_entity.CopyPropertiesFrom(entity);
            DbContext.SubmitChanges();
        }
        /// <summary>
        /// This method cancels a sale and return the products to inventory
        /// </summary>
        /// <param name="saleId"></param>
        /// <param name="matrixId"></param>
        public void CancelSale(int saleId, int matrixId, Int32 userId)
        {
            var inventoryManager = new InventoryManager(this);
            var receiptManager = new ReceiptManager(this);
            var financialManager = new FinancialManager(this);
            var parcelManager = new ParcelsManager(this);

            Sale sale = GetSale(matrixId, saleId);
            sale.IsCanceled = true;

            if (sale.ReceiptId != null)
            {
                Receipt receipt = receiptManager.GetReceipt((int)sale.ReceiptId, sale.CompanyId);
                sale.ReceiptId = null;
                receiptManager.DeleteReceipt(receipt);
                receipt.IsCanceled = true;
            }

            sale.InvoiceId = null;

            //
            // return the products to inventory
            //
            foreach (SaleItem saleItem in sale.SaleItems)
            {
                if (saleItem.ProductId != null)
                {
                    Inventory inventory = inventoryManager.GetProductInventory(saleItem.CompanyId,
                                                                               (int)saleItem.ProductId,
                                                                               (int)sale.DepositId);
                    if (inventory != null)
                        inventoryManager.StockDeposit(inventory, null, userId);
                }
            }

            //
            // Delete the invoice of sale
            //
            if (sale.InvoiceId.HasValue)
                financialManager.DeleteInvoice((int)sale.InvoiceId, sale.CompanyId);

            DbContext.SubmitChanges();
        }
 /// <summary>
 /// Delete the Bill and the related Parcels from the Database.
 /// </summary>
 /// <param name="billId"></param>
 /// <param name="companyId"></param>
 public void DeleteBill(int billId, int companyId)
 {
     var parcelsManager = new ParcelsManager(this);
     parcelsManager.DeleteBillParcels(companyId, billId);
     DeleteBill(GetBill(billId, companyId));
 }
        /// <summary>
        /// This method replaces the keywords to informations of specified invoice
        /// </summary>
        /// <param name="invoice"></param>
        /// <param name="parcelId"></param>
        /// <param name="documentTemplateId"></param>
        /// <returns>The string with keywords replaced to invoice informations</returns>
        public String ApplyInvoiceTemplate(Invoice invoice, Int32 parcelId, Int32 documentTemplateId)
        {

            var documentTemplate = new CompanyManager(this).GetDocumentTemplate(documentTemplateId);
            var content = new StringBuilder(documentTemplate.Content);

            //
            // Invoice
            //

            content.Replace("[Descrição]", invoice.Description);
            content.Replace("[DataDeCadastro]", invoice.EntryDate.ToString());
            content.Replace("[NomeDoCliente]", invoice.Customer.Name);
            content.Replace("[CentroDeCusto]", invoice.CostCenter.Name);
            content.Replace("[PlanoDeContas]", invoice.AccountingPlan.Name);

            //
            // Parcel 
            //

            var parcel = new ParcelsManager(this).GetParcel(parcelId, invoice.CompanyId);

            content.Replace("[Vencimento]", parcel.DueDate.ToString());
            content.Replace("[ValorDaParcela]", parcel.Amount.ToString());
            content.Replace("[FormaDePagamento]", parcel.PaymentMethod.Name);
            content.Replace("[DescriçaoDaParcela]", parcel.Description);


            if (parcel.EffectedDate.HasValue)
                content.Replace("[DataDoPagamento]", parcel.EffectedDate.ToString());
            else
                content.Replace("[DataDoPagamento]", String.Empty);

            if (parcel.EffectedAmount.HasValue)
                content.Replace("[ValorPago]", parcel.EffectedAmount.ToString());
            else
                content.Replace("[ValorPago]", String.Empty);

            if (!String.IsNullOrEmpty(parcel.IdentificationNumber))
                content.Replace("[Identificação]", parcel.IdentificationNumber);
            else
                content.Replace("[Identificação]", String.Empty);

            if (parcel.AccountId.HasValue)
                content.Replace("[Conta]", parcel.Account.Bank.ShortName + " - " + parcel.Account.AccountNumber);
            else
                content.Replace("[Conta]", String.Empty);

            return content.ToString();
        }
        /// <summary>
        /// this method return all invoices Filtered by specific fields
        /// </summary>
        /// <param name="beginDate">Starting date for consulting</param>
        /// <param name="endDate">Final date for consulting</param>
        /// <param name="closed">if true the account is opened</param>
        /// <param name="companyId"></param>
        /// <param name="sortExpression"></param>
        /// <param name="startRowIndex"></param>
        /// <param name="maximumRows"></param>
        /// <returns></returns>
        ///
#warning mover para o parcelsManager, o método usa os recursos do parcelsManager
        private IQueryable<Parcel> GetOpenInvoiceParcelInPeriodByAccount(Int32 companyId, Int32 accountId,
                                                                         DateTime beginDate, DateTime endDate)
        {
            var parcelsManager = new ParcelsManager(this);
            IQueryable<Parcel> parcels = from parcel in parcelsManager.GetParcels(false)
                                         where
                                             parcel.CompanyId == companyId && parcel.AccountId == accountId &&
                                             parcel.InvoiceId.HasValue
                                             && parcel.DueDate >= beginDate.Date && parcel.DueDate <= endDate.Date
                                         select parcel;
            return parcels;
        }
    protected void btnRegister_Click(object sender, EventArgs e)
    {
        var parcelsManager = new ParcelsManager(this);
        Parcel parcel;
        CheckBox registered;

        foreach (GridViewRow row in grdAccountRegister.Rows)
        {
            var parcelId = (Int32)grdAccountRegister.DataKeys[row.RowIndex]["ParcelId"];
            registered = (row.Cells[0].Controls[1] as CheckBox);

            if (registered != null)
                if (registered.Checked)
                {
                    parcel = parcelsManager.GetParcel(parcelId, Company.CompanyId);
                    if (parcel == null)
                        return;

                    var ucDtDateMov = (row.Cells[4].Controls[3] as Date);

                    parcel.EffectedAmount = parcel.Amount;

                    parcel.OperationDate = parcel.DueDate;
                    parcel.OperationDate = ucDtDateMov.DateTime;

                    parcel.AccountId = Convert.ToInt32(cboAccount.SelectedValue);
                    parcelsManager.Update(parcel, parcel);
                }
        }
        grdAccountRegister.DataBind();
        CalculateBalance();
    }
    protected void btnExport_Click(object sender, EventArgs e)
    {
        if (rbtExportAutomaticDebit.Checked)
        {
            AccountManager accountManager = new AccountManager(this);
            List<Parcel> lstParcels = new ParcelsManager(this).GetInvoiceParcelsByPeriodInAcount(Company.CompanyId, DateTime.Now.Sql2005MinValue(), DateTime.Now, null).ToList();
            Response.Clear();
            Response.ContentType = "text/rtf";
            string headerValue = "attachment;filename=Débito.rtf";
            Response.AddHeader("content-disposition", headerValue);
            Response.ContentEncoding = System.Text.Encoding.Default;
            // Response.Write(accountManager.GenerateAutomaticDebitFile(Company, accountManager.GetAccount(Convert.ToInt32(cboAccount.SelectedValue), Company.CompanyId), lstParcels, 1));
            Response.End();
        }
        else
        {
            try
            {
                var financialManager = new FinancialManager(this);
                Response.Clear();
                financialManager.GerarArquivoRemessa(Company.CompanyId, Convert.ToInt32(cboAccount.SelectedValue), DateTime.MinValue.Sql2005MinValue(), DateTime.MaxValue, Response.OutputStream);
                Response.ContentType = "text/txt";
                string headerValue = "attachment;filename=" + "Arquivo.txt";
                Response.AddHeader("content-disposition", headerValue);
                // Response.Write(Response.OutputStream);
                Response.End();
            }
            catch (Exception ex)
            {

                ShowError(Resources.Exception.InvalidBank);
            }

        }

    }
        /// <summary>
        /// Delete the Invoice and the related Parcels from the Database.
        /// </summary>
        /// <param name="billId"></param>
        /// <param name="companyId"></param>
        public void DeleteInvoice(int invoiceId, int companyId)
        {
            //
            //If exists a sale by this invoice, then set invoiceId with null
            //
            var saleManager = new SaleManager(this);
            Sale original_sale = saleManager.GetSaleByInvoice(companyId, invoiceId);
            if (original_sale != null)
            {
                var sale = new Sale();
                sale.CopyPropertiesFrom(original_sale);
                sale.InvoiceId = null;

                saleManager.Update(original_sale, sale);
            }

            var parcelsManager = new ParcelsManager(this);
            parcelsManager.DeleteInvoiceParcels(invoiceId);

            DbContext.Invoices.DeleteOnSubmit(
                DbContext.Invoices.Where(i => i.CompanyId == companyId && i.InvoiceId == invoiceId).FirstOrDefault());
            DbContext.SubmitChanges();
        }
        /// <summary>
        /// thsi methods returns the amount of bills
        /// </summary>
        /// <param name="companyId"></param>
        /// <returns></returns>
#warning verificar se este método está sendo usado
        public Decimal GetBillAmountByPeriod(Int32 companyId, DateTime? beginDate, DateTime? endDate)
        {
            var parcelsManager = new ParcelsManager(this);
            IQueryable<Parcel> billParcels = parcelsManager.GetBillParcelsByCompany(companyId);
            Decimal billAmount = Decimal.Zero;

            if (beginDate.HasValue)
                billParcels = billParcels.Where(parcel => parcel.DueDate > beginDate);
            if (endDate.HasValue)
                billParcels = billParcels.Where(parcel => parcel.DueDate < endDate);
            if (billParcels.Any())
                billAmount = billParcels.Sum(parcel => parcel.Amount);

            return billAmount;
        }
        public Decimal GetRegisteredInvoiceAmountByPeriod(Int32 companyId, DateTime? beginDate, DateTime? endDate,
                                                          Int32? accountId)
        {
            var parcelsManager = new ParcelsManager(this);
            IQueryable<Parcel> invoiceParcels = parcelsManager.GetInvoiceParcelsByPeriodInAcount(companyId, beginDate,
                                                                                                 endDate, accountId);
            invoiceParcels = invoiceParcels.Where(inv => inv.OperationDate.HasValue);

            Decimal invoiceAmountValue = Decimal.Zero;
            if (invoiceParcels.Any())
                invoiceAmountValue = invoiceParcels.Sum(parcel => parcel.Amount);

            return invoiceAmountValue;
        }
        /// <summary>
        /// this method returns the total amount of bills
        /// </summary>
        /// <param name="companyId"></param>
        /// <param name="beginDate"></param>
        /// <param name="endDate"></param>
        /// <param name="accountId"></param>
        /// <returns></returns>
        public Decimal GetBillAmountByPeriodInAccount(Int32 companyId, DateTime? beginDate, DateTime? endDate,
                                                      Int32? accountId)
        {
            var parcelsManager = new ParcelsManager(this);
            Decimal billAmountValue = Decimal.Zero;
            IQueryable<Parcel> billParcels = parcelsManager.GetBillParcelsByPeriodInAccount(companyId, beginDate,
                                                                                            endDate, accountId);
            if (billParcels.Any())
                billAmountValue = billParcels.Sum(parcel => parcel.Amount);

            return billAmountValue;
        }
        /// <summary>
        /// This method updates invoice's parcel
        /// </summary>
        /// <param name="original_entity"></param>
        /// <param name="entity"></param>
        /// <param name="parcels"></param>
        public void Update(Invoice original_entity, Invoice entity, IList<Parcel> parcels)
        {
            var parcelsManager = new ParcelsManager(this);
            original_entity.CopyPropertiesFrom(entity);
            original_entity.ModifiedDate = DateTime.Now;
            DbContext.SubmitChanges();

            parcelsManager.UpdateParcels(
                parcelsManager.GetInvoiceParcels(original_entity.CompanyId, original_entity.InvoiceId), parcels);
        }
 public Decimal GetRegisteredBillAmountByPeriod(Int32 companyId, DateTime? beginDate, DateTime? endDate,
                                                Int32? accountId)
 {
     var parcelsManager = new ParcelsManager(this);
     IQueryable<Parcel> billParcels = parcelsManager.GetBillParcelsByPeriodInAccount(companyId, beginDate,
                                                                                     endDate, accountId);
     billParcels = billParcels.Where(bill => bill.OperationDate.HasValue);
     if (billParcels.Any())
         return billParcels.Sum(parcel => parcel.Amount);
     return Decimal.Zero;
 }
Example #23
0
    /// <summary>
    /// this functions show a contract
    /// </summary>
    private void ShowContract()
    {
        contractManager = new ContractManager(this);
        contract        = contractManager.GetContract(Company.CompanyId, Convert.ToInt32(Page.ViewState["ContractId"]));
        Parcel         parcel;
        ParcelsManager parcelsManager = new ParcelsManager(this);

        cboContractTemplate.Attributes["onchange"] = "location='ContractTemplateBuilder.aspx?ContractId=" + contract.ContractId + "&ContractTemplateId='+this.value";


        //
        // if exists invoice then show gridview else show parcel fields
        //
        if (contract.InvoiceId.HasValue && contract.Invoice.Parcels.Any())
        {
            parcel = contract.Invoice.Parcels.FirstOrDefault();
            if (parcel != null)
            {
                lnkParcelValue.Text        = "Valor da parcelas: " + parcel.Amount.ToString();
                lnkParcelValue.NavigateUrl = "Invoice.aspx?InvoiceId=" + parcel.InvoiceId;
            }
        }

        contractId = contract.ContractId;

        SelCustomer.ShowCustomer(contract.Customer);
        ucdtIntervalContract.DateInterval = new DateTimeInterval(contract.BeginDate, contract.ExpiresDate);
        txtObservation.Text = contract.Observation;

        ucHH.CurrencyValue = contract.HH;
        if (contract.InterestDeferredPayment.HasValue)
        {
            txtInterestDeferredPayment.Text = contract.InterestDeferredPayment.ToString();
        }

        ucContractValue.CurrencyValue = contract.ContractValue;

        ucContractAdditionalValue1.CurrencyValue = contract.AdditionalValue1;
        ucContractAdditionalValue2.CurrencyValue = contract.AdditionalValue2;
        ucContractAdditionalValue3.CurrencyValue = contract.AdditionalValue3;
        ucContractAdditionalValue4.CurrencyValue = contract.AdditionalValue4;
        ucContractAdditionalValue5.CurrencyValue = contract.AdditionalValue5;

        ucMonthlyFee.CurrencyValue    = contract.MonthlyFee;
        ucInsurance.CurrencyValue     = contract.Insurance;
        ucMoneyReserves.CurrencyValue = contract.MoneyReserves;

        ShowAdditionalValues();

        ucPenalty.CurrencyValue = contract.Penalty;

        if (contract.EmployeeId.HasValue)
        {
            cboVendors.SelectedValue = contract.EmployeeId.ToString();
        }
        if (contract.RepresentantId.HasValue)
        {
            cboRepresentants.SelectedValue = contract.RepresentantId.ToString();
        }

        txtContractNumber.Text = contract.ContractNumber;
        cboContractType.DataBind();
        cboContractType.SelectedValue = contract.ContractTypeId.ToString();

        cboContractStatus.DataBind();
        cboContractStatus.SelectedValue = contract.ContractStatusId.ToString();

        if (contract.FinancierOperationId.HasValue)
        {
            cboPaymentMethods.DataBind();
            cboPaymentMethods.SelectedValue = contract.FinancierOperationId.ToString();
        }

        if (contract.Parcels.HasValue)
        {
            cboParcels.DataBind();
            ListItem item = cboParcels.Items.FindByText(contract.Parcels.ToString());
            if (item != null)
            {
                cboParcels.Items.FindByValue(item.Value).Selected = true;
            }
        }

        ucParcelDueDate.DateTime = contract.FirstParcelDueDate;

        ContractAssociated newContractAssociated;

        foreach (ContractAssociated item in contract.ContractAssociateds)
        {
            newContractAssociated = new ContractAssociated();
            newContractAssociated.CopyPropertiesFrom(item);
            ContractsAssociated.Add(newContractAssociated);
        }

        BindContractsAssociated();
        ShowParcelValue();
    }
        /// <summary>
        /// This method inserts a new record in the table.
        /// Change this method to alter how records are inserted.
        /// </summary>
        /// <param name=entity>entity</param>
        //public void Insert(Bill entity)
        //{
        //    //ParcelsManager parcelsManager = new ParcelsManager(this);
        //    //List<Parcel> billParcels = new List<Parcel>();
        //    //Parcel parcel;
        //    if (entity.CostCenterId.HasValue && new AccountManager(null).GetCostCenter(entity.CostCenterId.Value) == null)
        //        entity.CostCenterId = null;
        //    DbContext.Bills.InsertOnSubmit(entity);
        //    DbContext.SubmitChanges();
        //}
        public void Insert(Bill entity, IList<Parcel> parcels)
        {
            if (entity.CostCenterId.HasValue &&
                new AccountManager(this).GetCostCenter(entity.CostCenterId.Value) == null)
                entity.CostCenterId = null;

            entity.CreatedDate = entity.ModifiedDate = DateTime.Now;
            DbContext.Bills.InsertOnSubmit(entity);
            DbContext.SubmitChanges();

            var parcelsManager = new ParcelsManager(this);

            if (parcels != null)
            {
                foreach (Parcel item in parcels)
                {
                    item.BillId = entity.BillId;
                    item.CompanyId = entity.CompanyId;
                    DbContext.Parcels.InsertOnSubmit(item);
                }
            }
            DbContext.SubmitChanges();
        }
    /// <summary>
    /// this functions show a contract
    /// </summary>
    private void ShowContract()
    {
        contractManager = new ContractManager(this);
        contract = contractManager.GetContract(Company.CompanyId, Convert.ToInt32(Page.ViewState["ContractId"]));
        Parcel parcel;
        ParcelsManager parcelsManager = new ParcelsManager(this);

        cboContractTemplate.Attributes["onchange"] = "location='ContractTemplateBuilder.aspx?ContractId=" + contract.ContractId + "&ContractTemplateId='+this.value";


        //
        // if exists invoice then show gridview else show parcel fields
        //
        if (contract.InvoiceId.HasValue && contract.Invoice.Parcels.Any())
        {
            parcel = contract.Invoice.Parcels.FirstOrDefault();
            if (parcel != null)
            {
                lnkParcelValue.Text = "Valor da parcelas: " + parcel.Amount.ToString();
                lnkParcelValue.NavigateUrl = "Invoice.aspx?InvoiceId=" + parcel.InvoiceId;
            }
        }

        contractId = contract.ContractId;

        SelCustomer.ShowCustomer(contract.Customer);
        ucdtIntervalContract.DateInterval = new DateTimeInterval(contract.BeginDate, contract.ExpiresDate);
        txtObservation.Text = contract.Observation;

        ucHH.CurrencyValue = contract.HH;
        if (contract.InterestDeferredPayment.HasValue)
            txtInterestDeferredPayment.Text = contract.InterestDeferredPayment.ToString();

        ucContractValue.CurrencyValue = contract.ContractValue;

        ucContractAdditionalValue1.CurrencyValue = contract.AdditionalValue1;
        ucContractAdditionalValue2.CurrencyValue = contract.AdditionalValue2;
        ucContractAdditionalValue3.CurrencyValue = contract.AdditionalValue3;
        ucContractAdditionalValue4.CurrencyValue = contract.AdditionalValue4;
        ucContractAdditionalValue5.CurrencyValue = contract.AdditionalValue5;

        ucMonthlyFee.CurrencyValue = contract.MonthlyFee;
        ucInsurance.CurrencyValue = contract.Insurance;
        ucMoneyReserves.CurrencyValue = contract.MoneyReserves;

        ShowAdditionalValues();

        ucPenalty.CurrencyValue = contract.Penalty;

        if (contract.EmployeeId.HasValue)
            cboVendors.SelectedValue = contract.EmployeeId.ToString();
        if (contract.RepresentantId.HasValue)
            cboRepresentants.SelectedValue = contract.RepresentantId.ToString();

        txtContractNumber.Text = contract.ContractNumber;
        cboContractType.DataBind();
        cboContractType.SelectedValue = contract.ContractTypeId.ToString();
        
        cboContractStatus.DataBind();
        cboContractStatus.SelectedValue = contract.ContractStatusId.ToString();

        if (contract.FinancierOperationId.HasValue)
        {
            cboPaymentMethods.DataBind();
            cboPaymentMethods.SelectedValue = contract.FinancierOperationId.ToString();
        }

        if (contract.Parcels.HasValue)
        {
            cboParcels.DataBind();
            ListItem item = cboParcels.Items.FindByText(contract.Parcels.ToString());
            if (item != null)
                cboParcels.Items.FindByValue(item.Value).Selected = true;
        }

        ucParcelDueDate.DateTime = contract.FirstParcelDueDate;

        ContractAssociated newContractAssociated;
        foreach (ContractAssociated item in contract.ContractAssociateds)
        {
            newContractAssociated = new ContractAssociated();
            newContractAssociated.CopyPropertiesFrom(item);
            ContractsAssociated.Add(newContractAssociated);
        }

        BindContractsAssociated();
        ShowParcelValue();
    }
        /// <summary>
        /// this method save the invoice created by Sale
        /// </summary>
        /// <param name="sale"></param>
        private void SaveSaleInvoice(Sale sale, Invoice invoice, List<Parcel> lstParcels)
        {
            //
            // Save Invoice
            //
            var financialManager = new FinancialManager(this);
            sale.InvoiceId = financialManager.InsertRetrievingId(invoice);
            DbContext.SubmitChanges();


            //
            // Save Parcels
            //
            var parcelsManager = new ParcelsManager(this);
            var accountManager = new AccountManager(this);

            var firstParcel = lstParcels.FirstOrDefault();
            var condition = accountManager.GetFinancierConditionByParcelCount(firstParcel.CompanyId, firstParcel.FinancierOperationId.Value, lstParcels.Count());

            foreach (Parcel parcel in lstParcels)
            {
                parcel.InvoiceId = invoice.InvoiceId;
                parcelsManager.Insert(parcel, condition);
            }


        }