Пример #1
0
        private void Page_Load(object sender, System.EventArgs e)
        {
            litPageTitle.Text = L10n.Term("ProductTemplates.LBL_LIST_FORM_TITLE");
            try
            {
                DbProviderFactory dbf = DbProviderFactories.GetFactory();
                using (IDbConnection con = dbf.CreateConnection())
                {
                    string sSQL;
                    sSQL = "select *                       " + ControlChars.CrLf
                           + "  from vwPRODUCT_TEMPLATES_List" + ControlChars.CrLf
                           + " where 1 = 1                   " + ControlChars.CrLf;
                    using (IDbCommand cmd = con.CreateCommand())
                    {
                        cmd.CommandText = sSQL;
                        ctlSearch.SqlSearchClause(cmd);
#if DEBUG
                        Page.RegisterClientScriptBlock("SQLCode", Sql.ClientScriptBlock(cmd));
#endif
                        using (DbDataAdapter da = dbf.CreateDataAdapter())
                        {
                            ((IDbDataAdapter)da).SelectCommand = cmd;
                            using (DataTable dt = new DataTable())
                            {
                                da.Fill(dt);
                                foreach (DataRow row in dt.Rows)
                                {
                                    row["STATUS"]            = L10n.Term(".product_template_status_dom.", row["STATUS"]);
                                    row["COST_USDOLLAR"]     = C10n.ToCurrency(Sql.ToFloat(row["COST_USDOLLAR"]));
                                    row["LIST_USDOLLAR"]     = C10n.ToCurrency(Sql.ToFloat(row["LIST_USDOLLAR"]));
                                    row["DISCOUNT_USDOLLAR"] = C10n.ToCurrency(Sql.ToFloat(row["DISCOUNT_USDOLLAR"]));
                                }

                                vwMain             = dt.DefaultView;
                                grdMain.DataSource = vwMain;
                                if (!IsPostBack)
                                {
                                    grdMain.SortColumn = "NAME";
                                    grdMain.SortOrder  = "asc";
                                    grdMain.ApplySort();
                                    grdMain.DataBind();
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex.Message);
                lblError.Text = ex.Message;
            }
            if (!IsPostBack)
            {
                Page.DataBind();
            }
        }
        public void CURRENCY_ID_Changed(object sender, System.EventArgs e)
        {
            // 03/31/2007 Paul.  When the currency changes, use the default exchange rate.
            Guid gCURRENCY_ID = Sql.ToGuid(CURRENCY_ID.SelectedValue);

            SetC10n(gCURRENCY_ID);
            EXCHANGE_RATE.Value = C10n.CONVERSION_RATE.ToString();

            foreach (DataRow row in dtLineItems.Rows)
            {
                if (row.RowState != DataRowState.Deleted)
                {
                    row["AMOUNT"] = C10n.ToCurrency(Sql.ToDecimal(row["AMOUNT_USDOLLAR"]));
                }
            }
            grdMain.DataBind();

            UpdateTotals();
        }
        protected void CURRENCY_ID_Changed(object sender, System.EventArgs e)
        {
            // 03/31/2007 Paul.  When the currency changes, use the default exchange rate.
            Guid gCURRENCY_ID = Sql.ToGuid(CURRENCY_ID.SelectedValue);

            SetC10n(gCURRENCY_ID);
            EXCHANGE_RATE.Text = C10n.CONVERSION_RATE.ToString();

            DISCOUNT.Text = C10n.ToCurrency(Sql.ToDecimal(DISCOUNT_USDOLLAR.Value)).ToString("0.00");
            SHIPPING.Text = C10n.ToCurrency(Sql.ToDecimal(SHIPPING_USDOLLAR.Value)).ToString("0.00");
            foreach (DataRow row in dtLineItems.Rows)
            {
                if (row.RowState != DataRowState.Deleted)
                {
                    row["COST_PRICE"]     = C10n.ToCurrency(Sql.ToDecimal(row["COST_USDOLLAR"]));
                    row["LIST_PRICE"]     = C10n.ToCurrency(Sql.ToDecimal(row["LIST_USDOLLAR"]));
                    row["UNIT_PRICE"]     = C10n.ToCurrency(Sql.ToDecimal(row["UNIT_USDOLLAR"]));
                    row["EXTENDED_PRICE"] = C10n.ToCurrency(Sql.ToDecimal(row["EXTENDED_USDOLLAR"]));
                }
            }
            grdMain.DataBind();

            UpdateTotals();
        }
        public void LoadLineItems(Guid gID, Guid gDuplicateID, IDbConnection con, IDataReader rdr)
        {
            if (!IsPostBack)
            {
                GetCurrencyControl();
                try
                {
                    // 03/15/2007 Paul.  Set the default currency to the current user currency.
                    CURRENCY_ID.SelectedValue = C10n.ID.ToString();
                    EXCHANGE_RATE.Value       = C10n.CONVERSION_RATE.ToString();
                }
                catch
                {
                }
                foreach (DataControlField col in grdMain.Columns)
                {
                    if (!Sql.IsEmptyString(col.HeaderText))
                    {
                        col.HeaderText = L10n.Term(col.HeaderText);
                    }
                    CommandField cf = col as CommandField;
                    if (cf != null)
                    {
                        cf.EditText   = L10n.Term(cf.EditText);
                        cf.DeleteText = L10n.Term(cf.DeleteText);
                        cf.UpdateText = L10n.Term(cf.UpdateText);
                        cf.CancelText = L10n.Term(cf.CancelText);
                    }
                }

                if ((!Sql.IsEmptyGuid(gID) || !Sql.IsEmptyGuid(gDuplicateID)) && (con != null) && (rdr != null))
                {
                    try
                    {
                        CURRENCY_ID.SelectedValue = Sql.ToString(rdr["CURRENCY_ID"]);
                        // 05/26/2007 Paul.  Make sure to update the exchange rate.
                        EXCHANGE_RATE.Value = C10n.CONVERSION_RATE.ToString();
                    }
                    catch
                    {
                    }
                    // 03/31/2007 Paul.  The exchange rate might be an old value.
                    float fEXCHANGE_RATE = Sql.ToFloat(rdr["EXCHANGE_RATE"]);
                    if (fEXCHANGE_RATE == 0.0f)
                    {
                        fEXCHANGE_RATE = 1.0f;
                    }
                    EXCHANGE_RATE.Value = fEXCHANGE_RATE.ToString();
                    if (CURRENCY_ID.Items.Count > 0)
                    {
                        // 03/31/2007 Paul.  Replace the user currency with the form currency, but use the old exchange rate.
                        Guid gCURRENCY_ID = Sql.ToGuid(CURRENCY_ID.SelectedValue);
                        SetC10n(gCURRENCY_ID, fEXCHANGE_RATE);
                        EXCHANGE_RATE.Value = C10n.CONVERSION_RATE.ToString();
                    }
                    // 05/26/2007 Paul.  ALLOCATED field is not returned, just TOTAL_ALLOCATED_USDOLLAR.
                    // Don't convert TOTAL_ALLOCATED_USDOLLAR in the hidden variable.
                    ALLOCATED.Text           = C10n.ToCurrency(Sql.ToDecimal(rdr["TOTAL_ALLOCATED_USDOLLAR"])).ToString("c");
                    ALLOCATED_USDOLLAR.Value = Sql.ToDecimal(rdr["TOTAL_ALLOCATED_USDOLLAR"]).ToString("0.00");
                    rdr.Close();

                    string sSQL;
                    sSQL = "select *                  " + ControlChars.CrLf
                           + "  from vwPAYMENTS_INVOICES" + ControlChars.CrLf
                           + " where 1 = 1              " + ControlChars.CrLf;
                    using (IDbCommand cmd = con.CreateCommand())
                    {
                        cmd.CommandText = sSQL;
                        Sql.AppendParameter(cmd, gID, "PAYMENT_ID", false);
                        cmd.CommandText += " order by DATE_MODIFIED asc" + ControlChars.CrLf;

                        if (bDebug)
                        {
                            RegisterClientScriptBlock("vwPAYMENTS_INVOICES", Sql.ClientScriptBlock(cmd));
                        }

                        DbProviderFactory dbf = DbProviderFactories.GetFactory();
                        using (DbDataAdapter da = dbf.CreateDataAdapter())
                        {
                            ((IDbDataAdapter)da).SelectCommand = cmd;
                            dtLineItems = new DataTable();
                            da.Fill(dtLineItems);

                            // 04/01/2007 Paul.  If we are duplicating a quote, then we must create new IDs for the line items.
                            // Otherwise, edits to the line items will change the old quote.
                            if (!Sql.IsEmptyGuid(gDuplicateID))
                            {
                                foreach (DataRow row in dtLineItems.Rows)
                                {
                                    row["ID"] = Guid.NewGuid();
                                }
                            }
                            // 03/27/2007 Paul.  Always add blank line to allow quick editing.
                            DataRow rowNew = dtLineItems.NewRow();
                            dtLineItems.Rows.Add(rowNew);

                            ViewState["LineItems"] = dtLineItems;
                            grdMain.DataSource     = dtLineItems;
                            // 03/27/2007 Paul.  Start with last line enabled for editing.
                            grdMain.EditIndex = dtLineItems.Rows.Count - 1;
                            grdMain.DataBind();
                        }
                    }
                }
                else
                {
                    dtLineItems = new DataTable();
                    DataColumn colID              = new DataColumn("ID", Type.GetType("System.Guid"));
                    DataColumn colINVOICE_NAME    = new DataColumn("INVOICE_NAME", Type.GetType("System.String"));
                    DataColumn colINVOICE_ID      = new DataColumn("INVOICE_ID", Type.GetType("System.Guid"));
                    DataColumn colAMOUNT          = new DataColumn("AMOUNT", Type.GetType("System.Decimal"));
                    DataColumn colAMOUNT_USDOLLAR = new DataColumn("AMOUNT_USDOLLAR", Type.GetType("System.Decimal"));
                    dtLineItems.Columns.Add(colID);
                    dtLineItems.Columns.Add(colINVOICE_NAME);
                    dtLineItems.Columns.Add(colINVOICE_ID);
                    dtLineItems.Columns.Add(colAMOUNT);
                    dtLineItems.Columns.Add(colAMOUNT_USDOLLAR);
                    // 03/27/2007 Paul.  Always add blank line to allow quick editing.
                    DataRow rowNew = null;

                    DbProviderFactory dbf = DbProviderFactories.GetFactory();
                    using (IDbConnection conInvoice = dbf.CreateConnection())
                    {
                        conInvoice.Open();
                        string sSQL;
                        sSQL = "select *              " + ControlChars.CrLf
                               + "  from vwINVOICES_Edit" + ControlChars.CrLf
                               + " where 1 = 1          " + ControlChars.CrLf;
                        using (IDbCommand cmd = conInvoice.CreateCommand())
                        {
                            cmd.CommandText = sSQL;
                            Guid gPARENT_ID = Sql.ToGuid(Request["PARENT_ID"]);
                            Sql.AppendParameter(cmd, gPARENT_ID, "ID", false);

                            if (bDebug)
                            {
                                RegisterClientScriptBlock("vwINVOICES_Edit", Sql.ClientScriptBlock(cmd));
                            }

                            using (IDataReader rdrInvoice = cmd.ExecuteReader(CommandBehavior.SingleRow))
                            {
                                if (rdrInvoice.Read())
                                {
                                    rowNew = dtLineItems.NewRow();
                                    rowNew["INVOICE_NAME"]    = Sql.ToString(rdrInvoice["NAME"]);
                                    rowNew["INVOICE_ID"]      = Sql.ToGuid(rdrInvoice["ID"]);
                                    rowNew["AMOUNT"]          = Sql.ToDecimal(rdrInvoice["AMOUNT_DUE"]);
                                    rowNew["AMOUNT_USDOLLAR"] = Sql.ToDecimal(rdrInvoice["AMOUNT_DUE_USDOLLAR"]);
                                    dtLineItems.Rows.Add(rowNew);
                                }
                            }
                        }
                    }
                    rowNew = dtLineItems.NewRow();
                    dtLineItems.Rows.Add(rowNew);

                    ViewState["LineItems"] = dtLineItems;
                    grdMain.DataSource     = dtLineItems;
                    // 02/03/2007 Paul.  Start with last line enabled for editing.
                    grdMain.EditIndex = dtLineItems.Rows.Count - 1;
                    grdMain.DataBind();

                    UpdateTotals();
                }
            }
        }
        private void Page_Load(object sender, System.EventArgs e)
        {
            SetPageTitle(L10n.Term(".moduleList." + m_sMODULE));
            // 06/04/2006 Paul.  Visibility is already controlled by the ASPX page, but it is probably a good idea to skip the load.
            this.Visible = (SplendidCRM.Security.GetUserAccess(m_sMODULE, "edit") >= 0);
            if (!this.Visible)
            {
                return;
            }

            try
            {
                // 06/09/2006 Paul.  Remove data binding in the user controls.  Binding is required, but only do so in the ASPX pages.
                //Page.DataBind();
                gID = Sql.ToGuid(Request["ID"]);
                if (!IsPostBack)
                {
                    Guid gDuplicateID = Sql.ToGuid(Request["DuplicateID"]);
                    if (!Sql.IsEmptyGuid(gID) || !Sql.IsEmptyGuid(gDuplicateID))
                    {
                        DbProviderFactory dbf = DbProviderFactories.GetFactory();
                        using (IDbConnection con = dbf.CreateConnection())
                        {
                            string sSQL;
                            sSQL = "select *                   " + ControlChars.CrLf
                                   + "  from vwOPPORTUNITIES_Edit" + ControlChars.CrLf;
                            using (IDbCommand cmd = con.CreateCommand())
                            {
                                cmd.CommandText = sSQL;
                                // 11/24/2006 Paul.  Use new Security.Filter() function to apply Team and ACL security rules.
                                Security.Filter(cmd, m_sMODULE, "edit");
                                if (!Sql.IsEmptyGuid(gDuplicateID))
                                {
                                    Sql.AppendParameter(cmd, gDuplicateID, "ID", false);
                                    gID = Guid.Empty;
                                }
                                else
                                {
                                    Sql.AppendParameter(cmd, gID, "ID", false);
                                }
                                con.Open();

                                if (bDebug)
                                {
                                    RegisterClientScriptBlock("SQLCode", Sql.ClientScriptBlock(cmd));
                                }

                                using (IDataReader rdr = cmd.ExecuteReader(CommandBehavior.SingleRow))
                                {
                                    if (rdr.Read())
                                    {
                                        ctlModuleHeader.Title = Sql.ToString(rdr["NAME"]);
                                        SetPageTitle(L10n.Term(".moduleList." + m_sMODULE) + " - " + ctlModuleHeader.Title);
                                        Utils.UpdateTracker(Page, m_sMODULE, gID, ctlModuleHeader.Title);
                                        ViewState["ctlModuleHeader.Title"] = ctlModuleHeader.Title;

                                        this.AppendEditViewFields(m_sMODULE + ".EditView", tblMain, rdr);
                                    }
                                    else
                                    {
                                        // 11/25/2006 Paul.  If item is not visible, then don't allow save
                                        ctlEditButtons.DisableAll();
                                        ctlEditButtons.ErrorText = L10n.Term("ACL.LBL_NO_ACCESS");
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        this.AppendEditViewFields(m_sMODULE + ".EditView", tblMain, null);
                        // 04/28/2007 Paul.  If created from a Quote, then load quote values.
                        Guid gQUOTE_ID        = Sql.ToGuid(Request["QUOTE_ID"]);
                        DbProviderFactory dbf = DbProviderFactories.GetFactory();
                        using (IDbConnection con = dbf.CreateConnection())
                        {
                            string sSQL;
                            sSQL = "select *       " + ControlChars.CrLf
                                   + "  from vwQUOTES" + ControlChars.CrLf;
                            using (IDbCommand cmd = con.CreateCommand())
                            {
                                cmd.CommandText = sSQL;
                                // 11/24/2006 Paul.  Use new Security.Filter() function to apply Team and ACL security rules.
                                Security.Filter(cmd, m_sMODULE, "edit");
                                Sql.AppendParameter(cmd, gQUOTE_ID, "ID", false);
                                con.Open();

                                if (bDebug)
                                {
                                    RegisterClientScriptBlock("SQLCode", Sql.ClientScriptBlock(cmd));
                                }

                                using (IDataReader rdr = cmd.ExecuteReader(CommandBehavior.SingleRow))
                                {
                                    if (rdr.Read())
                                    {
                                        new DynamicControl(this, "ACCOUNT_ID").ID       = Sql.ToGuid(rdr["BILLING_ACCOUNT_ID"]);
                                        new DynamicControl(this, "ACCOUNT_NAME").Text   = Sql.ToString(rdr["BILLING_ACCOUNT_NAME"]);
                                        new DynamicControl(this, "AMOUNT").DecimalValue = C10n.ToCurrency(Sql.ToDecimal(rdr["TOTAL_USDOLLAR"]));
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    // 12/02/2005 Paul.  When validation fails, the header title does not retain its value.  Update manually.
                    ctlModuleHeader.Title = Sql.ToString(ViewState["ctlModuleHeader.Title"]);
                    SetPageTitle(L10n.Term(".moduleList." + m_sMODULE) + " - " + ctlModuleHeader.Title);
                }
            }
            catch (Exception ex)
            {
                SplendidError.SystemError(new StackTrace(true).GetFrame(0), ex);
                ctlEditButtons.ErrorText = ex.Message;
            }
        }