Example #1
0
        void gvPreInvoices_ItemCommand(object source, GridCommandEventArgs e)
        {
            string userName = ((Entities.CustomPrincipal)Page.User).UserName;

            switch (e.CommandName.ToLower())
            {
                #region Client Reference Editing

            case "cancelclientreference":
                e.Item.Edit = false;
                gvPreInvoices.Rebind();
                break;

            case "editclientreference":
                e.Item.Edit = true;
                gvPreInvoices.Rebind();
                break;

            case "editpurchaseorderreference":
                e.Item.Edit = true;
                gvPreInvoices.Rebind();
                break;

            case "updateclientreference":
                e.Item.Edit = false;
                string clientReference = string.Empty;

                LinkButton lnkChangeClientReference = e.Item.FindControl("lnkChangeClientReference") as LinkButton;
                TextBox    txtClientReference       = e.Item.FindControl("txtClientReference") as TextBox;

                if (lnkChangeClientReference != null && txtClientReference != null)
                {
                    string oldClientReference = lnkChangeClientReference.Text;
                    clientReference = txtClientReference.Text;

                    // Only apply the change if the client reference has been altered
                    if (oldClientReference != clientReference)
                    {
                        // Update the client reference
                        int preInvoiceID = int.Parse(((GridDataItem)e.Item).GetDataKeyValue("PreInvoiceID").ToString());
                        Facade.IPreInvoice facPreInvoice = new Facade.PreInvoice();
                        facPreInvoice.UpdateClientInvoiceReference(preInvoiceID, clientReference, userName);
                    }
                }
                gvPreInvoices.Rebind();
                break;

            case "updatepurchaseorderreference":
                e.Item.Edit = false;
                string purchaseOrderReference = string.Empty;

                LinkButton lnkChangePurchaseOrderReference = e.Item.FindControl("lnkChangePurchaseOrderReference") as LinkButton;
                TextBox    txtPurchaseOrderReference       = e.Item.FindControl("txtPurchaseOrderReference") as TextBox;

                if (lnkChangePurchaseOrderReference != null && txtPurchaseOrderReference != null)
                {
                    string oldPurchaseOrderReference = lnkChangePurchaseOrderReference.Text;
                    purchaseOrderReference = txtPurchaseOrderReference.Text;

                    // Only apply the change if the client reference has been altered
                    if (oldPurchaseOrderReference != purchaseOrderReference)
                    {
                        // Update the client reference
                        int preInvoiceID = int.Parse(((GridDataItem)e.Item).GetDataKeyValue("PreInvoiceID").ToString());
                        Facade.IPreInvoice facPreInvoice = new Facade.PreInvoice();
                        facPreInvoice.UpdatePurchaseOrderReference(preInvoiceID, purchaseOrderReference, userName);
                    }
                }
                gvPreInvoices.Rebind();
                break;

                #endregion

                #region Rate Editing

            //case "cancelrate":
            //    e.Item.Edit = false;
            //    e.Item.OwnerTableView.Rebind();
            //    gvPreInvoices.MasterTableView.Rebind();
            //    StayOpen = e.Item.OwnerTableView.ParentItem.ItemIndex;
            //    break;
            //case "editrate":
            //    e.Item.Edit = true;
            //    e.Item.OwnerTableView.Rebind();
            //    gvPreInvoices.MasterTableView.Rebind();
            //    StayOpen = e.Item.OwnerTableView.ParentItem.ItemIndex;
            //    break;
            case "update":     // update rate and pallet spaces.
                e.Item.Edit = false;
                decimal rate = 0;

                //LinkButton lnkChangeRate = e.Item.FindControl("lnkChangeRate") as LinkButton;
                HiddenField  hidOldRate = e.Item.FindControl("hidOldRate") as HiddenField;
                TextBox      txtRate    = e.Item.FindControl("txtRate") as TextBox;
                GridDataItem parentItem = e.Item.OwnerTableView.ParentItem;

                int         lcid = int.Parse(parentItem.GetDataKeyValue("LCID").ToString());
                CultureInfo preInvoiceCulture = new CultureInfo(lcid);

                if (Decimal.TryParse(txtRate.Text, System.Globalization.NumberStyles.Currency, preInvoiceCulture, out rate))
                {
                    decimal oldRate = 0;
                    oldRate = decimal.Parse(hidOldRate.Value);

                    // Only apply the rate change if the rate has altered.
                    if (oldRate != rate)
                    {
                        int itemID = int.Parse(txtRate.Attributes["ItemID"]);

                        // Update the rate (depends on item type - depends on invoice type)
                        int          preInvoiceID = int.Parse(parentItem.GetDataKeyValue("PreInvoiceID").ToString());
                        eInvoiceType invoiceType  = (eInvoiceType)int.Parse(parentItem.GetDataKeyValue("InvoiceTypeID").ToString());
                        CultureInfo  culture      = new CultureInfo(Orchestrator.Globals.Configuration.NativeCulture);

                        Facade.IPreInvoice    facPreInvoice = new Facade.PreInvoice();
                        Facade.IExchangeRates facER         = new Facade.ExchangeRates();

                        switch (invoiceType)
                        {
                        case eInvoiceType.ClientInvoicing:
                            Facade.IOrder  facOrder = new Facade.Order();
                            Entities.Order order    = facOrder.GetForOrderID(itemID);
                            order.ForeignRate = rate;

                            if (order.LCID != culture.LCID)
                            {
                                BusinessLogicLayer.IExchangeRates    blER = new BusinessLogicLayer.ExchangeRates();
                                BusinessLogicLayer.CurrencyConverter currencyConverter = blER.CreateCurrencyConverter(order.LCID, order.CollectionDateTime);
                                order.Rate = currencyConverter.ConvertToLocal(order.ForeignRate);
                            }
                            else
                            {
                                order.Rate = decimal.Round(order.ForeignRate, 4, MidpointRounding.AwayFromZero);
                            }

                            //if (order.OrderGroupID > 0)
                            //facPreInvoice.UpdateOrderGroupRate(preInvoiceID, order.OrderGroupID, order.ForeignRate, order.Rate, userName);
                            //else

                            facPreInvoice.UpdateOrderRate(preInvoiceID, itemID, order.ForeignRate, order.Rate, userName);

                            break;

                        case eInvoiceType.SubContractorSelfBill:
                        case eInvoiceType.SubContract:
                            // Needs to be Amended For Currency : TL 12/05/08;
                            Facade.IJobSubContractor  facJSC           = new Facade.Job();
                            Entities.JobSubContractor jobSubContractor = facJSC.GetSubContractorForJobSubContractId(itemID);
                            jobSubContractor.ForeignRate = rate;

                            if (jobSubContractor.LCID != culture.LCID)
                            {
                                jobSubContractor.Rate = facER.GetConvertedRate((int)jobSubContractor.ExchangeRateID, jobSubContractor.ForeignRate);
                            }
                            else
                            {
                                jobSubContractor.Rate = decimal.Round(jobSubContractor.ForeignRate, 4, MidpointRounding.AwayFromZero);
                            }

                            facPreInvoice.UpdateJobSubContractRate(preInvoiceID, itemID, jobSubContractor.ForeignRate, jobSubContractor.Rate, jobSubContractor.ExchangeRateID, userName);
                            break;

                        default:
                            throw new NotSupportedException("You can not alter item rates on invoices of type " + invoiceType.ToString());
                        }

                        this.lblSavedMessage.Text = string.Format("Your changes were saved at {0}", DateTime.Now.ToLongTimeString());
                    }
                }

                e.Item.OwnerTableView.Rebind();
                gvPreInvoices.MasterTableView.Rebind();
                StayOpen = parentItem.ItemIndex;
                break;

                #endregion
            }
        }
Example #2
0
        private void SaveBatchChanges()
        {
            string userName = ((Entities.CustomPrincipal)Page.User).UserName;

            // React to the user's options.
            foreach (GridDataItem row in gvPreInvoices.Items)
            {
                string tableName    = row.OwnerTableView.Name;
                int    preInvoiceId = -1;
                int.TryParse(row.GetDataKeyValue("PreInvoiceID").ToString(), out preInvoiceId);

                if (tableName == PreInvoiceTableName && (row.ItemType == GridItemType.Item || row.ItemType == GridItemType.AlternatingItem))
                {
                    HiddenField hidIsDirty = row.FindControl("hidIsDirty") as HiddenField;
                    bool        isDirty    = false;

                    if (bool.TryParse(hidIsDirty.Value, out isDirty) && isDirty)
                    {
                        #region Update PreInvoice
                        DateTime?invoiceDate = null;
                        string   clientReference = string.Empty, purchaseOrderReference = string.Empty;
                        int      taxRateID = -1;

                        RadDateInput rdiInvoiceDate = row.FindControl("rdiInvoiceDate") as RadDateInput;

                        RadTextBox rtClientReference        = row.FindControl("rtClientReference") as RadTextBox;
                        RadTextBox rtPurchaseOrderReference = row.FindControl("rtPurchaseOrderReference") as RadTextBox;

                        DropDownList cboTaxRate = row.FindControl("cboTaxRate") as DropDownList;

                        if (rdiInvoiceDate.SelectedDate.HasValue)
                        {
                            invoiceDate = rdiInvoiceDate.SelectedDate.Value;
                        }

                        clientReference        = rtClientReference.Text;
                        purchaseOrderReference = rtPurchaseOrderReference.Text;

                        int.TryParse(cboTaxRate.SelectedValue, out taxRateID);

                        Facade.IPreInvoice facPreInvoice = new Facade.PreInvoice();
                        facPreInvoice.UpdatePreinvoiceDetails(preInvoiceId, invoiceDate, clientReference, purchaseOrderReference, taxRateID, userName);
                        #endregion
                    }
                }
                else if (tableName == PreInvoiceItemTableName && (row.ItemType == GridItemType.Item || row.ItemType == GridItemType.AlternatingItem))
                {
                    HiddenField hidInvoiceItemIsDirty = row.FindControl("hidInvoiceItemIsDirty") as HiddenField;
                    bool        isDirty = false;

                    HiddenField hidInvoiceItemPendingDelete = row.FindControl("hidInvoiceItemPendingDelete") as HiddenField;
                    bool        isPendingDelete             = false;

                    if (bool.TryParse(hidInvoiceItemPendingDelete.Value, out isPendingDelete) && isPendingDelete)
                    {
                        Facade.IPreInvoice facPreInvoice = new Facade.PreInvoice();

                        TextBox      txtRate    = row.FindControl("txtRate") as TextBox;
                        GridDataItem parentItem = row.OwnerTableView.ParentItem;

                        int itemID = int.Parse(txtRate.Attributes["ItemID"]);

                        // Update the rate (depends on item type - depends on invoice type)
                        int preInvoiceID = int.Parse(parentItem.GetDataKeyValue("PreInvoiceID").ToString());

                        facPreInvoice.RemovePreInvoiceOrder(preInvoiceID, itemID);
                    }

                    else if (bool.TryParse(hidInvoiceItemIsDirty.Value, out isDirty) && isDirty)
                    {
                        #region Pre Invoice Item

                        decimal      rate       = 0;
                        HiddenField  hidOldRate = row.FindControl("hidOldRate") as HiddenField;
                        TextBox      txtRate    = row.FindControl("txtRate") as TextBox;
                        GridDataItem parentItem = row.OwnerTableView.ParentItem;

                        int         lcid = int.Parse(parentItem.GetDataKeyValue("LCID").ToString());
                        CultureInfo preInvoiceCulture = new CultureInfo(lcid);

                        if (Decimal.TryParse(txtRate.Text, System.Globalization.NumberStyles.Currency, preInvoiceCulture, out rate))
                        {
                            //decimal oldRate = 0;
                            //oldRate = decimal.Parse(hidOldRate.Value);

                            // Only apply the rate change if the rate has altered.
                            //if (oldRate != rate)
                            if (hidOldRate.Value != txtRate.Text)
                            {
                                int itemID = int.Parse(txtRate.Attributes["ItemID"]);

                                // Update the rate (depends on item type - depends on invoice type)
                                int          preInvoiceID = int.Parse(parentItem.GetDataKeyValue("PreInvoiceID").ToString());
                                eInvoiceType invoiceType  = (eInvoiceType)int.Parse(parentItem.GetDataKeyValue("InvoiceTypeID").ToString());
                                CultureInfo  culture      = new CultureInfo(Orchestrator.Globals.Configuration.NativeCulture);

                                Facade.IPreInvoice    facPreInvoice = new Facade.PreInvoice();
                                Facade.IExchangeRates facER         = new Facade.ExchangeRates();

                                switch (invoiceType)
                                {
                                case eInvoiceType.ClientInvoicing:
                                    #region Client Invoice

                                    Facade.IOrder  facOrder = new Facade.Order();
                                    Entities.Order order    = facOrder.GetForOrderID(itemID);
                                    order.ForeignRate = rate;

                                    if (order.LCID != culture.LCID)
                                    {
                                        BusinessLogicLayer.IExchangeRates    blER = new BusinessLogicLayer.ExchangeRates();
                                        BusinessLogicLayer.CurrencyConverter currencyConverter = blER.CreateCurrencyConverter(order.LCID, order.CollectionDateTime);
                                        order.Rate = currencyConverter.ConvertToLocal(order.ForeignRate);
                                    }
                                    else
                                    {
                                        order.Rate = decimal.Round(order.ForeignRate, 4, MidpointRounding.AwayFromZero);
                                    }

                                    facPreInvoice.UpdateOrderRate(preInvoiceID, itemID, order.ForeignRate, order.Rate, userName);

                                    #endregion
                                    break;

                                case eInvoiceType.SubContractorSelfBill:
                                case eInvoiceType.SubContract:
                                    #region Subby Invoicing
                                    // Needs to be Amended For Currency : TL 12/05/08;
                                    Facade.IJobSubContractor  facJSC           = new Facade.Job();
                                    Entities.JobSubContractor jobSubContractor = facJSC.GetSubContractorForJobSubContractId(itemID);
                                    jobSubContractor.ForeignRate = rate;

                                    if (jobSubContractor.LCID != culture.LCID)
                                    {
                                        jobSubContractor.Rate = facER.GetConvertedRate((int)jobSubContractor.ExchangeRateID, jobSubContractor.ForeignRate);
                                    }
                                    else
                                    {
                                        jobSubContractor.Rate = decimal.Round(jobSubContractor.ForeignRate, 4, MidpointRounding.AwayFromZero);
                                    }

                                    facPreInvoice.UpdateJobSubContractRate(preInvoiceID, itemID, jobSubContractor.ForeignRate, jobSubContractor.Rate, jobSubContractor.ExchangeRateID, userName);
                                    #endregion
                                    break;

                                default:
                                    throw new NotSupportedException("You can not alter item rates on invoices of type " + invoiceType.ToString());
                                }
                            }
                        }

                        #endregion
                    }
                }
            }
        }