Exemple #1
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            CCurrency   oCurrency   = Getformdata();
            CCurrencyBO oCurrencyBO = new CCurrencyBO();
            CResult     oresult     = new CResult();

            if (validatedata())
            {
                if (oCurrency.Curr_OID != "")
                {
                    if (DialogResult.OK == MessageBox.Show("Are you wanted to upadte " + txtCode.Text + " ?", "Confirmation!", MessageBoxButtons.OKCancel))
                    {
                        oresult = oCurrencyBO.Update(oCurrency);
                    }
                }
                else
                {
                    oresult = oCurrencyBO.Create(oCurrency);
                }

                if (oresult.IsSuccess)
                {
                    LoadUOMType();
                    Clearformdata();
                }
                else
                {
                    // MessageBox.Show(oresult.ErrMsg);
                    MessageBox.Show("Not Saved" + oresult.ErrMsg + "");
                }
            }
        }
Exemple #2
0
        private void btnDelete_Click(object sender, EventArgs e)
        {
            CCurrency   oCurrency   = Getformdata();
            CCurrencyBO oCurrencyBO = new CCurrencyBO();
            CResult     oResult     = new CResult();

            if (validatedata())
            {
                if (DialogResult.OK == MessageBox.Show("Are you want to delete " + txtCode.Text + " ?", "Confirmation!", MessageBoxButtons.OKCancel))
                {
                    oResult = oCurrencyBO.Delete(oCurrency);
                }
                if (oResult.IsSuccess)
                {
                    if (oResult.Data.ToString() == "0")
                    {
                        MessageBox.Show("Deletion Not Possible", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        Clearformdata();
                        LoadUOMType();
                    }
                    else
                    {
                        MessageBox.Show("Deleted successfully");
                        Clearformdata();
                        LoadUOMType();
                    }
                }

                else
                {
                    MessageBox.Show(oResult.ErrMsg.ToString(), "Error  ", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
Exemple #3
0
        public ctrlCustomerLimit(UniXP.Common.CProfile objProfile, UniXP.Common.MENUITEM objMenuItem)
        {
            InitializeComponent();
            m_objProfile     = objProfile;
            m_objMenuItem    = objMenuItem;
            m_bIsChanged     = false;
            m_bDisableEvents = false;

            m_objSelectedCustomer = null;
            m_objCreditLimitList  = null;

            cboxCurrency.Properties.Items.Clear();
            List <CCurrency> objCurrencyList = CCurrency.GetCurrencyList(m_objProfile, null);

            if (objCurrencyList != null)
            {
                foreach (CCurrency objCurrency in objCurrencyList)
                {
                    cboxCurrency.Properties.Items.Add(objCurrency);
                }
            }
            objCurrencyList = null;
            if (cboxCurrency.Properties.Items.Count > 0)
            {
                cboxCurrency.SelectedItem = cboxCurrency.Properties.Items[0];
            }
            CheckClientsRight();
        }
Exemple #4
0
 private void SetCurrencyValue(System.String strCurrencyAbbr)
 {
     try
     {
         if (m_objAllCurrencyList == null)
         {
             m_objCurrency = null;
         }
         else
         {
             foreach (CCurrency objCurrency in m_objAllCurrencyList)
             {
                 if (objCurrency.CurrencyAbbr == strCurrencyAbbr)
                 {
                     m_objCurrency = objCurrency;
                     break;
                 }
             }
         }
     }
     catch (System.Exception f)
     {
         DevExpress.XtraEditors.XtraMessageBox.Show(
             "Не удалось установить значение валюты.\n\nТекст ошибки: " + f.Message, "Внимание",
             System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
     }
     return;
 }
Exemple #5
0
        private void SetDefaultValue()
        {
            for (int i = 0; i < dgItemList.Rows.Count; i++)
            {
                DataGridViewComboBoxCell cmbSrcLoc = ((DataGridViewComboBoxCell)dgItemList.Rows[i].Cells["colSourceLoc"]);
                foreach (object obj in cmbSrcLoc.Items)
                {
                    CLocation oloc = (CLocation)obj;
                    cmbSrcLoc.Value = oloc.Loc_OID.Trim();
                    break;
                }

                DataGridViewComboBoxCell cmbSrcInvTyp = ((DataGridViewComboBoxCell)dgItemList.Rows[i].Cells["colSrcInvType"]);
                foreach (object obj in cmbSrcInvTyp.Items)
                {
                    cmbSrcInvTyp.Value = obj;
                    break;
                }

                DataGridViewComboBoxCell cmbCurrency = ((DataGridViewComboBoxCell)dgItemList.Rows[i].Cells["colCurrency"]);
                foreach (object obj in cmbCurrency.Items)
                {
                    CCurrency ocur = (CCurrency)obj;
                    cmbCurrency.Value = ocur.Curr_OID;
                    break;
                }
            }
        }
Exemple #6
0
        /// <summary>
        /// Загружает в дерево кредитные лимиты выбранного клиента для указанной валюты
        /// </summary>
        /// <param name="objCurrency">валюта</param>
        private void LoadCustomerLimitByCurrency(CCurrency objCurrency)
        {
            if (objCurrency == null)
            {
                return;
            }
            try
            {
                this.tableLayoutPanelBgrnd.SuspendLayout();
                this.tableLayoutPaneltree.SuspendLayout();
                ((System.ComponentModel.ISupportInitialize)(this.treeList)).BeginInit();
                treeList.Nodes.Clear();
                treeListArjive.Nodes.Clear();
                if (m_objCreditLimitList != null)
                {
                    foreach (CCreditLimit objCreditLimit in m_objCreditLimitList)
                    {
                        if ((objCreditLimit.Currency == null) || (objCreditLimit.Currency.ID.CompareTo(objCurrency.ID) != 0))
                        {
                            continue;
                        }
                        treeList.AppendNode(new object[] { objCreditLimit.Company.Abbr, objCreditLimit.ApprovedCurrencyValue, objCreditLimit.ApprovedDays, objCreditLimit.CurrencyValue, objCreditLimit.Days }, null).Tag = objCreditLimit;
                        foreach (CCompany objItem in listBoxCompany.Items)
                        {
                            if (objItem.ID.CompareTo(objCreditLimit.Company.ID) == 0)
                            {
                                listBoxCompany.Items.Remove(objItem);
                                break;
                            }
                        }
                    }
                }

                SetPropertiesModified(false);

                SetModeReadOnly(true);
                btnEdit.Enabled   = true;
                btnCancel.Enabled = true;
                btnCancel.Focus();

                this.tableLayoutPanelBgrnd.ResumeLayout(false);
                this.tableLayoutPaneltree.ResumeLayout(false);
                ((System.ComponentModel.ISupportInitialize)(this.treeList)).EndInit();
            }
            catch (System.Exception f)
            {
                SendMessageToLog("Ошибка редактирования кредитного лимита клиента. Текст ошибки: " + f.Message);
            }
            finally
            {
                m_bDisableEvents = false;
                EnableCompanyBtns();
            }
            return;
        }
Exemple #7
0
 public CPriceType()
     : base()
 {
     m_bIsActive          = false;
     m_iColumnID          = 0;
     m_objAllCurrencyList = null;
     m_objCurrency        = null;
     m_strAbr             = "";
     m_strDescription     = "";
     m_bIsShowInPrice     = false;
 }
Exemple #8
0
 public CCreditLimit()
 {
     m_uuidID                = System.Guid.Empty;
     m_objCustomer           = null;
     m_objCompany            = null;
     m_objCurrency           = null;
     m_ApprovedCurrencyValue = 0;
     m_CurrencyValue         = 0;
     m_ApprovedDays          = 0;
     m_Days = 0;
 }
Exemple #9
0
 public CCreditLimit(System.Guid uuidID, CCustomer objCustomer, CCompany objCompany, CCurrency objCurrency,
                     double mApprovedCurrencyValue, double mCurrencyValue, int iApprovedDays, int iDays)
 {
     m_uuidID                = uuidID;
     m_objCustomer           = objCustomer;
     m_objCompany            = objCompany;
     m_objCurrency           = objCurrency;
     m_ApprovedCurrencyValue = mApprovedCurrencyValue;
     m_CurrencyValue         = mCurrencyValue;
     m_ApprovedDays          = iApprovedDays;
     m_Days = iDays;
 }
Exemple #10
0
            public CResult ReadAll()
            {
                List <CCurrency> oList = new List <CCurrency>();

                oResult = new CResult();
                conn    = oConnManager.GetConnection(out s_DBError);
                if (conn != null)
                {
                    try
                    {
                        SqlCommand cmd = new SqlCommand();

                        cmd.Connection  = conn;
                        cmd.CommandText = "Select * from t_Curr order by Curr_OID";
                        cmd.CommandType = CommandType.Text;

                        SqlDataReader oReader = cmd.ExecuteReader();
                        if (oReader.HasRows)
                        {
                            while (oReader.Read())
                            {
                                CCurrency objCurr = new CCurrency();
                                objCurr.Curr_OID    = oReader["Curr_OID"].ToString();
                                objCurr.Curr_Branch = oReader["Curr_Branch"].ToString();
                                objCurr.Curr_Code   = oReader["Curr_Code"].ToString();
                                objCurr.Curr_Name   = oReader["Curr_Name"].ToString();
                                oList.Add(objCurr);
                            }
                        }
                        oReader.Close();

                        oResult.IsSuccess = true;
                        oResult.Data      = oList;
                    }
                    catch (SqlException e)
                    {
                        oResult.IsSuccess = false;
                        oResult.ErrMsg    = e.Message;
                    }
                    finally
                    {
                        oConnManager.Close();
                    }
                }
                else
                {
                    oResult.IsSuccess = false;
                    oResult.ErrMsg    = s_DBError;
                }

                return(oResult);
            }
Exemple #11
0
            public CResult Delete(CCurrency oCurrency)
            {
                oResult = new CResult();
                conn    = oConnManager.GetConnection(out s_DBError);
                if (conn != null)
                {
                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = conn;

                    cmd.Transaction = oConnManager.BeginTransaction();
                    try
                    {
                        StringBuilder sBuilder = new StringBuilder();

                        // sBuilder.Append("");
                        //sBuilder.Append("Delete from t_Curr where Curr_OID = @Curr_OID");
                        cmd.CommandText = "sp_Currency_Delete";
                        //cmd.CommandText = sBuilder.ToString();
                        cmd.CommandType = CommandType.StoredProcedure;

                        cmd.Parameters.AddWithValue("@Curr_OID", oCurrency.Curr_OID);
                        cmd.Parameters.Add("@IsSuccess", SqlDbType.Char, 1);
                        cmd.Parameters["@IsSuccess"].Direction = ParameterDirection.ReturnValue;


                        cmd.ExecuteNonQuery();

                        string st = cmd.Parameters["@IsSuccess"].Value.ToString();
                        oConnManager.Commit();
                        oResult.Data      = st;
                        oResult.IsSuccess = true;
                    }
                    catch (SqlException e)
                    {
                        string sRollbackError = oConnManager.Rollback();

                        oResult.IsSuccess = false;
                        oResult.ErrMsg    = sRollbackError.Equals("") ? oConnManager.GetErrorMessage(e) : sRollbackError;
                    }
                    finally
                    {
                        oConnManager.Close();
                    }
                }
                else
                {
                    oResult.IsSuccess = false;
                    oResult.ErrMsg    = s_DBError;
                }

                return(oResult);
            }
Exemple #12
0
 public CPriceType(System.Guid uuidId, System.String strName, System.String strAbr, System.String strDescription,
                   System.Boolean bIsActive, CCurrency objCurrency, System.Int32 iColumnID, System.Boolean bIsShowInPrice
                   )
 {
     ID               = uuidId;
     Name             = strName;
     m_strAbr         = strAbr;
     m_strDescription = strDescription;
     m_bIsActive      = bIsActive;
     m_objCurrency    = objCurrency;
     m_iColumnID      = iColumnID;
     m_bIsShowInPrice = bIsShowInPrice;
 }
Exemple #13
0
        private CCurrency Getformdata()
        {
            CCurrency oCurrency = new CCurrency();

            if (txtCurrOID.Text != "")
            {
                oCurrency.Curr_OID = txtCurrOID.Text.Trim();
            }
            oCurrency.Curr_Branch = currentBranch.CompBrn_Code;
            oCurrency.Curr_Code   = txtCode.Text.Trim();
            oCurrency.Curr_Name   = txtName.Text.Trim();

            return(oCurrency);
        }
Exemple #14
0
 private void LLUOMType_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (lstCurrency.SelectedIndex != -1)
     {
         if (lstCurrency.Items.Count > 0)
         {
             CCurrency oCurrency = (CCurrency)lstCurrency.SelectedItem;
             txtCurrOID.Text = oCurrency.Curr_OID.ToString();
             txtCode.Text    = oCurrency.Curr_Code;
             txtName.Text    = oCurrency.Curr_Name;
             FormControlMode(1);
         }
     }
 }
Exemple #15
0
            public CResult Create(CCurrency oCurrency)
            {
                oResult = new CResult();
                conn    = oConnManager.GetConnection(out s_DBError);
                if (conn != null)
                {
                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = conn;

                    cmd.Transaction = oConnManager.BeginTransaction();
                    try
                    {
                        StringBuilder sBuilder = new StringBuilder();
                        sBuilder.Append("DECLARE @NextId NCHAR(24);");
                        sBuilder.Append("EXEC sp_GetNextId 'Curr_OID','Curr', @Curr_Branch, @NextId OUTPUT;");
                        sBuilder.Append(" Insert into t_Curr values(@NextId,@Curr_Branch,@Curr_Code,@Curr_Name)");

                        cmd.CommandText = sBuilder.ToString();
                        cmd.CommandType = CommandType.Text;

                        cmd.Parameters.AddWithValue("@Curr_Branch", oCurrency.Curr_Branch);
                        cmd.Parameters.AddWithValue("@Curr_Code", oCurrency.Curr_Code);
                        cmd.Parameters.AddWithValue("@Curr_Name", oCurrency.Curr_Name);

                        cmd.ExecuteNonQuery();
                        oConnManager.Commit();
                        oResult.IsSuccess = true;
                    }
                    catch (SqlException e)
                    {
                        string sRollbackError = oConnManager.Rollback();

                        oResult.IsSuccess = false;
                        oResult.ErrMsg    = sRollbackError.Equals("") ? oConnManager.GetErrorMessage(e) : sRollbackError;
                    }
                    finally
                    {
                        oConnManager.Close();
                    }
                }
                else
                {
                    oResult.IsSuccess = false;
                    oResult.ErrMsg    = s_DBError;
                }

                return(oResult);
            }
Exemple #16
0
            public CResult Update(CCurrency oCurrency)
            {
                oResult = new CResult();
                conn    = oConnManager.GetConnection(out s_DBError);
                if (conn != null)
                {
                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = conn;

                    cmd.Transaction = oConnManager.BeginTransaction();
                    try
                    {
                        StringBuilder sBuilder = new StringBuilder();
                        sBuilder.Append("Update t_Curr set Curr_Branch=@Curr_Branch,Curr_Code=@Curr_Code,Curr_Name=@Curr_Name where Curr_OID=@Curr_OID");

                        cmd.CommandText = sBuilder.ToString();
                        cmd.CommandType = CommandType.Text;

                        cmd.Parameters.AddWithValue("@Curr_OID", oCurrency.Curr_OID);
                        cmd.Parameters.AddWithValue("@Curr_Branch", oCurrency.Curr_Branch);
                        cmd.Parameters.AddWithValue("@Curr_Code", oCurrency.Curr_Code);
                        cmd.Parameters.AddWithValue("@Curr_Name", oCurrency.Curr_Name);

                        cmd.ExecuteNonQuery();
                        oConnManager.Commit();
                        oResult.IsSuccess = true;
                    }
                    catch (SqlException e)
                    {
                        string sRollbackError = oConnManager.Rollback();

                        oResult.IsSuccess = false;
                        oResult.ErrMsg    = sRollbackError.Equals("") ? oConnManager.GetErrorMessage(e) : sRollbackError;
                    }
                    finally
                    {
                        oConnManager.Close();
                    }
                }
                else
                {
                    oResult.IsSuccess = false;
                    oResult.ErrMsg    = s_DBError;
                }

                return(oResult);
            }
Exemple #17
0
        public CCreditLimitArjive(System.DateTime dtDateUpdate, System.String strActionTypeName, System.String strUserName,
                                  System.Guid uuidID, CCustomer objCustomer, CCompany objCompany, CCurrency objCurrency,
                                  double mApprovedCurrencyValue, double mCurrencyValue, int iApprovedDays, int iDays)
        {
            m_objDateUpdate     = dtDateUpdate;
            m_strActionTypeName = strActionTypeName;
            m_strUserName       = strUserName;

            ID       = uuidID;
            Customer = objCustomer;
            Company  = objCompany;
            Currency = objCurrency;
            ApprovedCurrencyValue = mApprovedCurrencyValue;
            CurrencyValue         = mCurrencyValue;
            ApprovedDays          = iApprovedDays;
            Days = iDays;
        }
Exemple #18
0
 /// <summary>
 /// Загружает в m_objAllProductLineList список товарных линий
 /// </summary>
 /// <param name="objProfile">профайл</param>
 /// <param name="cmdSQL">SQL-команда</param>
 public void InitCurrencyList(UniXP.Common.CProfile objProfile, System.Data.SqlClient.SqlCommand cmdSQL)
 {
     try
     {
         this.m_objAllCurrencyList = CCurrency.GetCurrencyList(objProfile, cmdSQL);
         if ((this.m_objAllCurrencyList != null) && (this.m_objAllCurrencyList.Count > 0))
         {
             this.Currency = this.m_objAllCurrencyList[0];
         }
     }
     catch (System.Exception f)
     {
         DevExpress.XtraEditors.XtraMessageBox.Show(
             "Не удалось загрузить список валют.\n\nТекст ошибки: " + f.Message, "Внимание",
             System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
     }
     return;
 }
Exemple #19
0
            public CResult Import(CCurrency oCurrency)
            {
                oResult = new CResult();
                conn    = oConnManager.GetConnection(out s_DBError);
                if (conn != null)
                {
                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = conn;

                    cmd.Transaction = oConnManager.BeginTransaction();
                    try
                    {
                        cmd.CommandText = "sp_Currency_Import";
                        cmd.CommandType = CommandType.StoredProcedure;

                        cmd.Parameters.AddWithValue("@Curr_OID", oCurrency.Curr_OID);
                        cmd.Parameters.AddWithValue("@Curr_Branch", oCurrency.Curr_Branch);
                        cmd.Parameters.AddWithValue("@Curr_Code", oCurrency.Curr_Code);
                        cmd.Parameters.AddWithValue("@Curr_Name", oCurrency.Curr_Name);

                        cmd.ExecuteNonQuery();
                        oConnManager.Commit();
                        oResult.IsSuccess = true;
                    }
                    catch (SqlException e)
                    {
                        string sRollbackError = oConnManager.Rollback();

                        oResult.IsSuccess = false;
                        oResult.ErrMsg    = sRollbackError.Equals("") ? oConnManager.GetErrorMessage(e) : sRollbackError;
                    }
                    finally
                    {
                        oConnManager.Close();
                    }
                }
                else
                {
                    oResult.IsSuccess = false;
                    oResult.ErrMsg    = s_DBError;
                }

                return(oResult);
            }
Exemple #20
0
        public static void Main(string[] args)
        {
            // Read the API key from a file. This prevents my personal API key
            // from being uploaded to Github.
            // Normally, I would just do this:
            // var ApiKey = "<My API Key Here>";
            var ApiKey = System.IO.File.ReadAllText(@"/Users/harrison/Projects/HarrisonFinance/HarrisonFinance/QuandlApiKey.txt").Trim();

            /*
             * // Build a new Quandl object.
             * var Quandl = new CQuandl(ApiKey);
             *
             * // Setup a new request.
             * var TimeSeriesRequest = new CTimeSeriesRequest("WIKI", "FB");
             *
             * // Add parameters to the request.
             * TimeSeriesRequest.Collapse = eTimeSeriesCollapse.Monthly;
             * TimeSeriesRequest.Limit = 10;
             *
             * // Go fetch the results from Quandl.
             * var Results = Quandl.GetTimeSeries(TimeSeriesRequest);
             *
             * Console.WriteLine(Results);
             */

            var M1 = new CMoney(100.0, eCurrency.USD);
            var C1 = CCurrency.GetCurrency(eCurrency.USD);


            Console.WriteLine("These two lines should be the same.");
            Console.WriteLine(M1.Currency.ConversionToUSDRate);
            Console.WriteLine(C1.ConversionToUSDRate);


            var Temp = "String";

            Temp.Publish(new CCurrencyUpdate());


            Console.WriteLine("The lines below should be the same BUT different from above.");
            Console.WriteLine(M1.Currency.ConversionToUSDRate);
            Console.WriteLine(C1.ConversionToUSDRate);
        }
Exemple #21
0
        private void LoadUOMType()
        {
            CCurrency   oCurrency   = Getformdata();
            CCurrencyBO oCurrencyBO = new CCurrencyBO();
            CResult     oresult     = new CResult();

            oresult = oCurrencyBO.ReadAll();
            if (oresult.IsSuccess)
            {
                List <CCurrency> oList = new List <CCurrency>();
                oList = oresult.Data as List <CCurrency>;

                //if (oList.Count > 0)
                //{
                lstCurrency.DisplayMember = "Curr_Code";
                lstCurrency.ValueMember   = "Curr_OID";
                lstCurrency.DataSource    = oList;
                //}
            }
            else
            {
                MessageBox.Show(oresult.ErrMsg);
            }
        }
Exemple #22
0
        /// <summary>
        /// Возвращает приложение к расчету
        /// </summary>
        /// <param name="objProfile">профайл</param>
        /// <param name="cmdSQL">SQL-команда</param>
        /// <returns>список расчетов</returns>
        public static List<CCalcOrderItem> GetCalcOrderItemList(UniXP.Common.CProfile objProfile,
            System.Data.SqlClient.SqlCommand cmdSQL, System.Guid CalcOrderID)
        {
            List<CCalcOrderItem> objList = new List<CCalcOrderItem>();
            System.Data.SqlClient.SqlConnection DBConnection = null;
            System.Data.SqlClient.SqlCommand cmd = null;
            try
            {
                if (cmdSQL == null)
                {
                    DBConnection = objProfile.GetDBSource();
                    if (DBConnection == null)
                    {
                        DevExpress.XtraEditors.XtraMessageBox.Show(
                            "Не удалось получить соединение с базой данных.", "Внимание",
                            System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                        return objList;
                    }
                    cmd = new System.Data.SqlClient.SqlCommand();
                    cmd.Connection = DBConnection;
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                }
                else
                {
                    cmd = cmdSQL;
                    cmd.Parameters.Clear();
                }

                cmd.CommandText = System.String.Format("[{0}].[dbo].[usp_GetCalcOrderListItemsFromERP_Report]", objProfile.GetOptionsDllDBName());
                cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, false, ((System.Byte)(0)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null));
                cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@CALCORDER_GUID", System.Data.SqlDbType.UniqueIdentifier));
                cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ERROR_NUM", System.Data.SqlDbType.Int, 8, System.Data.ParameterDirection.Output, false, ((System.Byte)(0)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null));
                cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ERROR_MES", System.Data.SqlDbType.NVarChar, 4000));
                cmd.Parameters["@ERROR_MES"].Direction = System.Data.ParameterDirection.Output;
                cmd.Parameters["@CALCORDER_GUID"].Value = CalcOrderID;
                System.Data.SqlClient.SqlDataReader rs = cmd.ExecuteReader();
                if (rs.HasRows)
                {
                    CProduct objProduct = null;
                    CCurrency objCurrency = null;
                    CCountry objCountry = null;
                    CProductTradeMark objProductTradeMark = null;
                    CProductType objProductType = null;
                    CProductSubType objProductSubType = null;
                    CMeasure objMeasure = null;
                    CCalcOrderItem objCalcOrderItem = null;

                    while (rs.Read())
                    {
                        objCurrency = null;
                        objCountry = null;
                        objProductTradeMark = null;
                        objProductType = null;
                        objProductSubType = null;
                        // товарная марка
                        objProductTradeMark = new CProductTradeMark();
                        objProductTradeMark.Name = (System.String)rs["OWNER_NAME"];
                        objProductTradeMark.ID_Ib = System.Convert.ToInt32(rs["OWNER_ID"]);
                        objProductTradeMark.ProductVtm = new CProductVtm();
                        objProductTradeMark.ProductVtm.ID_Ib = System.Convert.ToInt32(rs["VTM_ID"]);
                        objProductTradeMark.ProductVtm.Name = (System.String)rs["VTM_NAME"];
                        objProductTradeMark.ProcessDayCount = System.Convert.ToInt32(rs["OWNER_PROCESSDAYSCOUNT"]);
                        // товарная группа
                        objProductType = new CProductType();
                        objProductType.ID_Ib = System.Convert.ToInt32(rs["PARTTYPE_ID"]);
                        objProductType.Name = (System.String)rs["PARTTYPE_NAME"];
                        // товарная подгруппа
                        objProductSubType = new CProductSubType();
                        objProductSubType.ID_Ib = System.Convert.ToInt32(rs["PARTSUBTYPE_ID"]);
                        objProductSubType.Name = (System.String)rs["PARTSUBTYPE_NAME"];
                        objProductSubType.ProductLine = new CProductLine();
                        objProductSubType.ProductLine.ID_Ib = System.Convert.ToInt32(rs["PARTSECSUBTYPE_ID"]);    
                        objProductSubType.ProductLine.Name = (System.String)rs["PARTSECSUBTYPE_NAME"];
                        // страна производства
                        objCountry = new CCountry();
                        if (rs["COUNTRY_PROD_ID"] != System.DBNull.Value)
                        {
                            objCountry.Name = (System.String)rs["COUNTRY_NAME"];
                        }
                        // валюта
                        objCurrency = new CCurrency( System.Guid.Empty, "", ( (rs["CURRENCY_CODE"] == System.DBNull.Value) ? "" : (System.String)rs["CURRENCY_CODE"]), ""  );
                        // единица измерения
                        objMeasure = new CMeasure();
                        objMeasure.Name = (System.String)rs["MEASURE_NAME"];

                        // товар
                        objProduct = new CProduct(System.Guid.Empty, System.Convert.ToInt32(rs["PARTS_ID"]),
                            (System.String)rs["PARTS_NAME"], (System.String)rs["PARTS_ORIGNAME"],
                            (System.String)rs["PARTS_NAME"], (System.String)rs["PARTS_ARTICLE"],
                            objProductTradeMark, objProductType, objProductSubType, objCountry, objCurrency,
                            ((rs["PARTS_VENDORPRICE"] == System.DBNull.Value) ? 0 : System.Convert.ToDecimal(rs["PARTS_VENDORPRICE"])),
                            ((rs["PARTS_BOXQTY"] == System.DBNull.Value) ? 0 : System.Convert.ToInt32(rs["PARTS_BOXQTY"])),
                            ((rs["PARTS_PACKQTY"] == System.DBNull.Value) ? 0 : System.Convert.ToInt32(rs["PARTS_PACKQTY"])),
                            ((rs["PARTS_PACKQTYFORCALC"] == System.DBNull.Value) ? 0 : System.Convert.ToInt32(rs["PARTS_PACKQTYFORCALC"])),
                            ((rs["PARTS_WEIGHT"] == System.DBNull.Value) ? 0 : System.Convert.ToDecimal(rs["PARTS_WEIGHT"])),
                            ((rs["PARTS_PAPERCONTAINERWEIGHT"] == System.DBNull.Value) ? 0 : System.Convert.ToDecimal(rs["PARTS_PAPERCONTAINERWEIGHT"])),
                            ((rs["PARTS_PLASTICCONTAINERWEIGHT"] == System.DBNull.Value) ? 0 : System.Convert.ToDecimal(rs["PARTS_PLASTICCONTAINERWEIGHT"])),
                            ((rs["PARTS_ALCOHOLICCONTENTPERCENT"] == System.DBNull.Value) ? 0 : System.Convert.ToDecimal(rs["PARTS_ALCOHOLICCONTENTPERCENT"])),
                            true, // ((rs["Parts_IsActive"] == System.DBNull.Value) ? false : System.Convert.ToBoolean(rs["Parts_IsActive"])),
                            ((rs["PARTS_NOTVALID"] == System.DBNull.Value) ? false : System.Convert.ToBoolean(rs["PARTS_NOTVALID"])),
                            ((rs["PARTS_ACTUALNOTVALID"] == System.DBNull.Value) ? false : System.Convert.ToBoolean(rs["PARTS_ACTUALNOTVALID"])),
                            "", //((rs["Parts_Certificate"] == System.DBNull.Value) ? "" : (System.String)rs["Parts_Certificate"]),
                            ((rs["PARTS_CODETNVD"] == System.DBNull.Value) ? "" : (System.String)rs["PARTS_CODETNVD"]),
                            ((rs["PARTS_REFERENCE"] == System.DBNull.Value) ? "" : (System.String)rs["PARTS_REFERENCE"]),
                            objMeasure, null, 0
                            );
                        if (rs["PARTS_BARCODE"] != System.DBNull.Value)
                        {
                            objProduct.BarcodeList = new List<string>();
                            objProduct.BarcodeList.Add((System.String)rs["PARTS_BARCODE"]);
                        }
                        objCalcOrderItem = new CCalcOrderItem();
                        objCalcOrderItem.objProduct = objProduct;
                        objCalcOrderItem.PartsIsNew = System.Convert.ToBoolean(rs["PARTS_IS_NEW"]);
                        objCalcOrderItem.PLAN_FOR_3MONTH = ((rs["PLAN_FOR_3MONTH"] == System.DBNull.Value) ? 0 : System.Convert.ToDecimal(rs["PLAN_FOR_3MONTH"]));
                        objCalcOrderItem.PLAN_FOR_3MONTH_IN_WEEK_AVG = ((rs["PLAN_FOR_3MONTH_IN_WEEK_AVG"] == System.DBNull.Value) ? 0 : System.Convert.ToDecimal(rs["PLAN_FOR_3MONTH_IN_WEEK_AVG"]));
                        objCalcOrderItem.PREDICTION_FOR_3MONTH = ((rs["PREDICTION_FOR_3MONTH"] == System.DBNull.Value) ? 0 : System.Convert.ToDecimal(rs["PREDICTION_FOR_3MONTH"]));
                        objCalcOrderItem.PREDICTION_FOR_3MONTH_IN_WEEK_AVG = ((rs["PREDICTION_FOR_3MONTH_IN_WEEK_AVG"] == System.DBNull.Value) ? 0 : System.Convert.ToDecimal(rs["PREDICTION_FOR_3MONTH_IN_WEEK_AVG"]));
                        objCalcOrderItem.SALE_FOR_3MONTH = ((rs["SALE_FOR_3MONTH"] == System.DBNull.Value) ? 0 : System.Convert.ToDecimal(rs["SALE_FOR_3MONTH"]));
                        objCalcOrderItem.SALE_FOR_3MONTH_IN_WEEK_AVG = ((rs["SALE_FOR_3MONTH_IN_WEEK_AVG"] == System.DBNull.Value) ? 0 : System.Convert.ToDecimal(rs["SALE_FOR_3MONTH_IN_WEEK_AVG"]));
                        objCalcOrderItem.QUANTITY_IN_ORDER = ((rs["QUANTITY_IN_ORDER"] == System.DBNull.Value) ? 0 : System.Convert.ToInt32(rs["QUANTITY_IN_ORDER"]));
                        objCalcOrderItem.QUANTITY_IN_STOCK = ((rs["QUANTITY_IN_STOCK"] == System.DBNull.Value) ? 0 : System.Convert.ToInt32(rs["QUANTITY_IN_STOCK"]));
                        objCalcOrderItem.QUANTITY_IN_WAY = ((rs["QUANTITY_IN_WAY"] == System.DBNull.Value) ? 0 : System.Convert.ToInt32(rs["QUANTITY_IN_WAY"]));
                        objCalcOrderItem.QUANTITY_MIN_STOCK_IN_WEEK = ((rs["QUANTITY_MIN_STOCK_IN_WEEK"] == System.DBNull.Value) ? 0 : System.Convert.ToDecimal(rs["QUANTITY_MIN_STOCK_IN_WEEK"]));
                        objCalcOrderItem.KOEFF_SEASON_AVG = ((rs["KOEFF_SEASON_AVG"] == System.DBNull.Value) ? 0 : System.Convert.ToDecimal(rs["KOEFF_SEASON_AVG"]));
                        objCalcOrderItem.KOEFF_DIV = ((rs["KOEFF_DIV"] == System.DBNull.Value) ? 0 : System.Convert.ToDecimal(rs["KOEFF_DIV"]));
                        objCalcOrderItem.ABC = ((rs["ABC"] == System.DBNull.Value) ? "" : System.Convert.ToString(rs["ABC"]));
                        objList.Add(objCalcOrderItem);
                    }
                }
                rs.Dispose();

                if (cmdSQL == null)
                {
                    cmd.Dispose();
                    DBConnection.Close();
                }
            }
            catch (System.Exception f)
            {
                DevExpress.XtraEditors.XtraMessageBox.Show(
                "Не удалось получить приложение к расчету.\n\nТекст ошибки : " + f.Message, "Внимание",
                System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
            }
            return objList;
        }
Exemple #23
0
        static async Task Main(string[] args)
        {
            /***********************/
            /********Example********/
            /***********************/



            /*Public API*/

            string apiName;
            var    apiKey       = new ExmoApi("K", "S");
            string tradeCouples = "LTC_RUB";
            int?   limit        = 10;

            ///<summary>trades
            /// <remarks>Список сделок по валютной паре</remarks>
            /// <param name="tradeCouples">одна или несколько валютных пар разделенных запятой (пример BTC_USD,BTC_EUR)</param>
            /// <param name="limit">кол-во отображаемых позиций (по умолчанию 100, максимум 1000)</param>
            ///<returns>ResultList type=CTrade ></returns>
            /// </summary>
            IHelperPublicAPI <CTrades> testTradesApi = new CHelperPublicAPI <CTrades>();
            await testTradesApi.GetResultAsync("trades", null, tradeCouples, limit);

            //testTradesApiResult.Wait();
            Console.WriteLine($"Список сделок по валютной паре {tradeCouples}:");
            foreach (var tmp in testTradesApi.ResultList)
            {
                Console.WriteLine($"{tmp.TradeId} {tmp.Type} {tmp.Price} {tmp.Quantity} {tmp.Amount} {(new DateTime(1970, 1, 1, 0, 0, 0, 0)).AddSeconds(tmp.Date)}");
            }

            ///<summary>order_book
            /// <remarks>Книга ордеров по валютной паре</remarks>
            /// <param name="tradeCouples">одна или несколько валютных пар разделенных запятой (пример BTC_USD,BTC_EUR)</param>
            /// <param name="limit">кол-во отображаемых позиций (по умолчанию 100, максимум 1000)</param>
            ///<returns>ResultMethod type=COrderBook></returns>
            /// </summary>
            IHelperPublicAPI <COrderBook> testOrderBookApi = new CHelperPublicAPI <COrderBook>();
            await testOrderBookApi.GetResultAsync("order_book", null, tradeCouples, limit);

            //testOrderBookApiTask.Wait();
            Console.WriteLine("\nКнига ордеров по валютной паре:");
            Console.WriteLine($"{testOrderBookApi.ResultMetod.AskQuantity} {testOrderBookApi.ResultMetod.AskAmount} {testOrderBookApi.ResultMetod.AskTop}, {testOrderBookApi.ResultMetod.BidQuantity}, " +
                              $"{testOrderBookApi.ResultMetod.BidAmount}, {testOrderBookApi.ResultMetod.BidTop}");
            Console.WriteLine("\nСписок ордеров на покупку:");
            foreach (var i in testOrderBookApi.ResultMetod.Ask)
            {
                Console.WriteLine($"{i[0]}, {i[1]}, {i[2]}");
            }
            Console.WriteLine("\nСписок ордеров на продажу:");
            foreach (var i in testOrderBookApi.ResultMetod.Bid)
            {
                Console.WriteLine($"{i[0]}, {i[1]}, {i[2]}");
            }

            ///<summary>ticker
            /// <remarks>Cтатистика цен и объемов торгов по валютным парам</remarks>
            ///<returns>ResultMethod type=CTicker</returns>
            /// </summary>
            IHelperPublicAPI <CTicker> testTickerApi = new CHelperPublicAPI <CTicker>();
            await testTickerApi.GetResultAsync("ticker", null, tradeCouples);

            //testTickerApiTask.Wait();
            Console.WriteLine($"\nCтатистика цен и объемов торгов по валютной паре {tradeCouples}:");
            Console.WriteLine($"{testTickerApi.ResultMetod.High}, {testTickerApi.ResultMetod.Low}, {testTickerApi.ResultMetod.Avg}, " +
                              $"{testTickerApi.ResultMetod.Vol}, {testTickerApi.ResultMetod.VolCurr}, {testTickerApi.ResultMetod.LastTrade}, " +
                              $"{testTickerApi.ResultMetod.BuyPrice}, {testTickerApi.ResultMetod.SellPrice}, " +
                              $"{(new DateTime(1970, 1, 1, 0, 0, 0, 0)).AddSeconds(testTickerApi.ResultMetod.Updated)}");

            ///<summary>pair_settings
            /// <remarks>Настройки валютных пар</remarks>
            /// <param name="tradeCouples">одна или несколько валютных пар разделенных запятой (пример BTC_USD,BTC_EUR)</param>
            ///<returns>ResultMethod type=CPairSettings></returns>
            /// </summary>
            IHelperPublicAPI <CPairSettings> testPairSettingApi = new CHelperPublicAPI <CPairSettings>();
            await testPairSettingApi.GetResultAsync("pair_settings", null, tradeCouples);

            //testPairSettingApiTask.Wait();
            Console.WriteLine($"\nНастройки валютной пары {tradeCouples}:");
            Console.WriteLine($"{testPairSettingApi.ResultMetod.MinQuantity}, {testPairSettingApi.ResultMetod.MaxQuantity} " +
                              $"{testPairSettingApi.ResultMetod.MinPrice}, {testPairSettingApi.ResultMetod.MaxPrice}, " +
                              $"{testPairSettingApi.ResultMetod.MinAmount}, {testPairSettingApi.ResultMetod.MaxAmount}");

            ///<summary>currency
            /// <remarks>Cписок валют биржи</remarks>
            ///<returns>CurrencyList type=IList<string>></returns>
            /// </summary>
            await CCurrency.GetCurrencyAsync(null);

            //currencyTask.Wait();
            Console.WriteLine("\nCписок валют биржи:");
            foreach (var i in CCurrency.CurrencyList)
            {
                Console.WriteLine(i);
            }

            //<summary>currencyPair
            /// <remarks>Cписок валютных пар (не входит в ExmoApi)</remarks>
            ///<returns>CurrencyPairList type=IList<string>></returns>
            /// </summary>
            await CCurrency.GetCurrencyPairListAsync(null);

            //currencyPairTaskTask.Wait();
            Console.WriteLine("\nCписок валютных пар биржи:");
            foreach (var i in CCurrency.CurrencyPairList)
            {
                Console.WriteLine(i);
            }


            /*Authenticated  API*/

            apiKey       = new ExmoApi("K", "S-");
            tradeCouples = "BTC_USD";
            limit        = 10;
            decimal quantity = 0.001M; //BTC
            decimal price    = 20000M; //Для продажи BTC
            string  type     = "sell";


            ///<summary>user_info
            /// <remarks>Получение информации об аккаунте пользователя</remarks>
            /// <param name="apiKey">Идентификатор пользователя на бирже</param>
            ///<returns>ResultMethod type=CUserInfo ></returns>
            /// </summary>
            IHelperAuthAPI <CUserInfo> testUserInfoApi = new CHelperAuthAPI <CUserInfo>();
            await testUserInfoApi.GetResultAsync("user_info", apiKey);

            Console.WriteLine("\nИнформация об аккаунте пользователя");
            Console.WriteLine($"{testUserInfoApi.ResultMetod.Uid} {testUserInfoApi.ResultMetod.ServerDate}");
            //Проход по свойствам класса Balances
            Console.WriteLine("\nБаланс:");
            foreach (var propInfo in testUserInfoApi.ResultMetod.Balances.GetType().GetProperties())
            {
                Console.WriteLine($"{propInfo.Name}: {propInfo.GetValue(testUserInfoApi.ResultMetod.Balances, null)}");
            }
            //Проход по свойствам класса Reserved
            Console.WriteLine($"\nВ ордерах:");
            foreach (var propInfo in testUserInfoApi.ResultMetod.Reserved.GetType().GetProperties())
            {
                Console.WriteLine($"{propInfo.Name}: {propInfo.GetValue(testUserInfoApi.ResultMetod.Reserved, null)}");
            }

            ///<summary>order_create
            /// <remarks>Создание ордера</remarks>
            /// <param name="apiKey">Идентификатор пользователя на бирже</param>
            /// <param name="Dictionary">Словарь, содержащий следующие параметры:
            ///         tradeCouples - валютная пара
            ///         quantity - кол-во по ордеру
            ///         price - цена по ордеру
            ///         type - тип ордера, может принимать следующие значения:
            ///             buy - ордер на покупку
            ///             sell - ордер на продажу
            ///             market_buy - ордера на покупку по рынку
            ///             market_sell - ордер на продажу по рынку
            ///             market_buy_total - ордер на покупку по рынку на определенную сумму
            ///             market_sell_total - ордер на продажу по рынку на определенную сумму</param>
            /// <param name="tradeCouples">Валютная пара</param>
            ///<returns>ResultMethod type=COrderCreate ></returns>
            /// </summary>
            IHelperAuthAPI <COrderCreate> testOrderCreateApi = new CHelperAuthAPI <COrderCreate>();
            await testOrderCreateApi.GetResultAsync("order_create", apiKey,
                                                    new Dictionary <string, string>()
            {
                { "pair", tradeCouples.ToString(CultureInfo.InvariantCulture) },
                { "quantity", quantity.ToString(CultureInfo.InvariantCulture) },
                { "price", price.ToString(CultureInfo.InvariantCulture) },
                { "type", type }
            }, tradeCouples);

            Console.WriteLine("\nСоздание ордера:");
            if (testOrderCreateApi.ResultMetod.Result)
            {
                Console.WriteLine($"\nОрдер создан:" +
                                  $"\nПара: {tradeCouples}" +
                                  $"\norder_id: {testOrderCreateApi.ResultMetod.OrderId}" +
                                  $"\nОперация: {type}" +
                                  $"\nЦена: {price}" +
                                  $"\nКоличество: {quantity}" +
                                  $"\nСумма: {price*quantity}");
            }
            else
            {
                Console.WriteLine($"\nОрдер не создан!!!" +
                                  $"\nОшибка: {testOrderCreateApi.ResultMetod.Error}");
            }

            var orderId = testOrderCreateApi.ResultMetod.OrderId;

            //<summary>order_cancel
            /// <remarks>Отмена ордера</remarks>
            /// <param name="apiKey">Идентификатор пользователя на бирже</param>
            /// <param name="Dictionary">Словарь, содержащий следующие параметры:
            ///         order_id -  идентификатор ордера </param>
            ///<returns>ResultMethod type=COrderCancel ></returns>
            /// </summary>
            IHelperAuthAPI <COrderCancel> testOrderCancelApi = new CHelperAuthAPI <COrderCancel>();
            await testOrderCancelApi.GetResultAsync("order_cancel", apiKey,
                                                    new Dictionary <string, string>()
            {
                { "order_id", orderId.ToString(CultureInfo.InvariantCulture) }
            });

            Console.WriteLine($"\nОтмена ордера {orderId}:");
            if (testOrderCancelApi.ResultMetod.Result)
            {
                Console.WriteLine($"\nОрдер c номером {orderId} - отменен.");
            }
            else
            {
                Console.WriteLine($"\nОрдер не отменен!!!" +
                                  $"\nОшибка: {testOrderCancelApi.ResultMetod.Error}");
            }


            //<summary>user_open_orders
            /// <remarks>Отмена ордера</remarks>
            /// <param name="apiKey">Идентификатор пользователя на бирже</param>
            ///<returns>ResultMethod type=CUserOpenOrders ></returns>
            /// </summary>
            IHelperAuthAPI <CUserOpenOrders> testUserOpenOrdersApi = new CHelperAuthAPI <CUserOpenOrders>();
            await testUserOpenOrdersApi.GetResultAsync("user_open_orders", apiKey);

            foreach (var res in testUserOpenOrdersApi.ResultList)
            {
                Console.WriteLine($"\nСписок открытых ордеров пользователя:" +
                                  $"\nВалютная пара: {res.TradeCouples}" +
                                  $"\nOrder_id: {res.OrderId}" +
                                  $"\nСоздан: {(new DateTime(1970, 1, 1, 0, 0, 0, 0)).AddSeconds(res.CreatedTime)}" +
                                  $"\nТип: {res.Type}" +
                                  $"\nЦена: {res.Price}" +
                                  $"\nКоличество: {res.Quantity}" +
                                  $"\nСумма: {res.Amount}");
            }

            //<summary>user_trades
            /// <remarks>Получение сделок пользователя</remarks>
            /// <param name="apiKey">Идентификатор пользователя на бирже</param>
            /// <param name="Dictionary">Словарь, содержащий следующие параметры:
            ///         tradeCouples - одна или несколько валютных пар разделенных запятой (пример BTC_USD,BTC_EUR)
            ///         limit - кол-во возвращаемых сделок (по умолчанию 100, максимум 10 000)
            ///         offset - смещение от последней сделки (по умолчанию 0)</param>
            ///<returns>ResultMethod type=CUserTrades ></returns>
            /// </summary>
            IHelperAuthAPI <CUserTrades> testUserTradesApi = new CHelperAuthAPI <CUserTrades>();
            await testUserTradesApi.GetResultAsync("user_trades", apiKey,
                                                   new Dictionary <string, string>()
            {
                { "pair", "ETC_USD, BTC_USD" },
                { "limit", "100" },
                { "offset", "0" }
            });

            Console.WriteLine("\nСделки пользователя:");
            foreach (var uT in testUserTradesApi.ResultList)
            {
                Console.WriteLine($"\nВалютная пара: {uT.TradeCouples}" +
                                  $"\ntrade_id: {uT.TradeId}" +
                                  $"\ndate : {uT.Date}" +
                                  $"\ntype : {uT.Type}" +
                                  $"\norder_id: {uT.OrderId}" +
                                  $"\nquantity : {uT.Quantity}" +
                                  $"\nprice : {uT.Price}" +
                                  $"\namount : {uT.Amount}");
            }

            //<summary>user_cancelled_orders
            /// <remarks>Получение отмененных ордеров пользователя</remarks>
            /// <param name="apiKey">Идентификатор пользователя на бирже</param>
            /// <param name="Dictionary">Словарь, содержащий следующие параметры:
            ///         limit - кол-во возвращаемых сделок (по умолчанию 100, максимум 10 000)
            ///         offset - смещение от последней сделки (по умолчанию 0)</param>
            ///<returns>ResultMethod type=CUserTrades ></returns>
            /// </summary>
            IHelperAuthAPI <CUserCancelledOrders> testUserCansOrdersApi = new CHelperAuthAPI <CUserCancelledOrders>();
            await testUserCansOrdersApi.GetResultAsync("user_cancelled_orders", apiKey,
                                                       new Dictionary <string, string>()
            {
                { "limit", "10" },
                { "offset", "0" }
            });

            Console.WriteLine("\nОтмененные сделки пользователя:");
            foreach (var canceledOrder in testUserTradesApi.ResultList)
            {
                Console.WriteLine($"\nВалютная пара: {canceledOrder.TradeCouples}" +
                                  $"\ndate : {canceledOrder.Date}" +
                                  $"\ntype : {canceledOrder.Type}" +
                                  $"\norder_id: {canceledOrder.OrderId}" +
                                  $"\nquantity : {canceledOrder.Quantity}" +
                                  $"\nprice : {canceledOrder.Price}" +
                                  $"\namount : {canceledOrder.Amount}");
            }
            Console.ReadLine();
        }
Exemple #24
0
        static async Task Main(string[] args)
        {
            /***********************/
            /********Example********/
            /***********************/



            /*Public API*/

            var    apiKey       = new ExmoApi("K", "S");
            string tradeCouples = "LTC_RUB";
            int?   limit        = 10;

            ///<summary>trades
            /// <remarks>Список сделок по валютной паре</remarks>
            /// </summary>
            IHelperPublicAPI <CTrades> testTradesApi = new CHelperPublicAPI <CTrades>();
            await testTradesApi.GetResultAsync("trades", null, tradeCouples, limit);

            //testTradesApiResult.Wait();
            Console.WriteLine($"Список сделок по валютной паре {tradeCouples}:");
            foreach (var tmp in testTradesApi.ResultList)
            {
                Console.WriteLine($"{tmp.TradeId} {tmp.Type} {tmp.Price} {tmp.Quantity} {tmp.Amount} {(new DateTime(1970, 1, 1, 0, 0, 0, 0)).AddSeconds(tmp.Date)}");
            }

            ///<summary>order_book
            /// <remarks>Книга ордеров по валютной паре</remarks>>
            /// </summary>
            IHelperPublicAPI <COrderBook> testOrderBookApi = new CHelperPublicAPI <COrderBook>();
            await testOrderBookApi.GetResultAsync("order_book", null, tradeCouples, limit);

            //testOrderBookApiTask.Wait();
            Console.WriteLine("\nКнига ордеров по валютной паре:");
            Console.WriteLine($"{testOrderBookApi.ResultMetod.AskQuantity} {testOrderBookApi.ResultMetod.AskAmount} {testOrderBookApi.ResultMetod.AskTop}, {testOrderBookApi.ResultMetod.BidQuantity}, " +
                              $"{testOrderBookApi.ResultMetod.BidAmount}, {testOrderBookApi.ResultMetod.BidTop}");
            Console.WriteLine("\nСписок ордеров на покупку:");
            foreach (var i in testOrderBookApi.ResultMetod.Ask)
            {
                Console.WriteLine($"{i[0]}, {i[1]}, {i[2]}");
            }
            Console.WriteLine("\nСписок ордеров на продажу:");
            foreach (var i in testOrderBookApi.ResultMetod.Bid)
            {
                Console.WriteLine($"{i[0]}, {i[1]}, {i[2]}");
            }

            ///<summary>ticker
            /// <remarks>Cтатистика цен и объемов торгов по валютным парам</remarks>
            /// </summary>
            IHelperPublicAPI <CTicker> testTickerApi = new CHelperPublicAPI <CTicker>();
            await testTickerApi.GetResultAsync("ticker", null, tradeCouples);

            //testTickerApiTask.Wait();
            Console.WriteLine($"\nCтатистика цен и объемов торгов по валютной паре {tradeCouples}:");
            Console.WriteLine($"{testTickerApi.ResultMetod.High}, {testTickerApi.ResultMetod.Low}, {testTickerApi.ResultMetod.Avg}, " +
                              $"{testTickerApi.ResultMetod.Vol}, {testTickerApi.ResultMetod.VolCurr}, {testTickerApi.ResultMetod.LastTrade}, " +
                              $"{testTickerApi.ResultMetod.BuyPrice}, {testTickerApi.ResultMetod.SellPrice}, " +
                              $"{(new DateTime(1970, 1, 1, 0, 0, 0, 0)).AddSeconds(testTickerApi.ResultMetod.Updated)}");

            ///<summary>pair_settings
            /// <remarks>Настройки валютных пар</remarks>
            /// </summary>
            IHelperPublicAPI <CPairSettings> testPairSettingApi = new CHelperPublicAPI <CPairSettings>();
            await testPairSettingApi.GetResultAsync("pair_settings", null, tradeCouples);

            //testPairSettingApiTask.Wait();
            Console.WriteLine($"\nНастройки валютной пары {tradeCouples}:");
            Console.WriteLine($"{testPairSettingApi.ResultMetod.MinQuantity}, {testPairSettingApi.ResultMetod.MaxQuantity} " +
                              $"{testPairSettingApi.ResultMetod.MinPrice}, {testPairSettingApi.ResultMetod.MaxPrice}, " +
                              $"{testPairSettingApi.ResultMetod.MinAmount}, {testPairSettingApi.ResultMetod.MaxAmount}");

            ///<summary>currency
            /// <remarks>Cписок валют биржи</remarks>
            /// </summary>
            await CCurrency.GetCurrencyAsync(null);

            //currencyTask.Wait();
            Console.WriteLine("\nCписок валют биржи:");
            foreach (var i in CCurrency.CurrencyList)
            {
                Console.WriteLine(i);
            }

            //<summary>currencyPair
            /// <remarks>Cписок валютных пар (не входит в ExmoApi)</remarks>
            /// </summary>
            await CCurrency.GetCurrencyPairListAsync(null);

            //currencyPairTaskTask.Wait();
            Console.WriteLine("\nCписок валютных пар биржи:");
            foreach (var i in CCurrency.CurrencyPairList)
            {
                Console.WriteLine(i);
            }


            /*Authenticated  API*/


            tradeCouples = "BTC_USD";
            limit        = 10;
            decimal quantity = 0.001M; //BTC
            decimal price    = 20000M; //Для продажи BTC
            string  type     = "sell";


            ///<summary>user_info
            /// <remarks>Получение информации об аккаунте пользователя</remarks>
            /// </summary>
            IHelperAuthAPI <CUserInfo> testUserInfoApi = new CHelperAuthAPI <CUserInfo>();
            await testUserInfoApi.GetResultAsync("user_info", apiKey);

            Console.WriteLine("\nИнформация об аккаунте пользователя");
            Console.WriteLine($"{testUserInfoApi.ResultMetod.Uid} {testUserInfoApi.ResultMetod.ServerDate}");
            //Проход по свойствам класса Balances
            Console.WriteLine("\nБаланс:");
            foreach (var propInfo in testUserInfoApi.ResultMetod.Balances.GetType().GetProperties())
            {
                Console.WriteLine($"{propInfo.Name}: {propInfo.GetValue(testUserInfoApi.ResultMetod.Balances, null)}");
            }
            //Проход по свойствам класса Reserved
            Console.WriteLine($"\nВ ордерах:");
            foreach (var propInfo in testUserInfoApi.ResultMetod.Reserved.GetType().GetProperties())
            {
                Console.WriteLine($"{propInfo.Name}: {propInfo.GetValue(testUserInfoApi.ResultMetod.Reserved, null)}");
            }

            ///<summary>order_create
            /// <remarks>Создание ордера</remarks>
            /// </summary>
            IHelperAuthAPI <COrderCreate> testOrderCreateApi = new CHelperAuthAPI <COrderCreate>();
            await testOrderCreateApi.GetResultAsync("order_create", apiKey,
                                                    new Dictionary <string, string>()
            {
                { "pair", tradeCouples.ToString(CultureInfo.InvariantCulture) },
                { "quantity", quantity.ToString(CultureInfo.InvariantCulture) },
                { "price", price.ToString(CultureInfo.InvariantCulture) },
                { "type", type }
            }, tradeCouples);

            Console.WriteLine("\nСоздание ордера:");
            if (testOrderCreateApi.ResultMetod.Result)
            {
                Console.WriteLine($"\nОрдер создан:" +
                                  $"\nПара: {tradeCouples}" +
                                  $"\norder_id: {testOrderCreateApi.ResultMetod.OrderId}" +
                                  $"\nОперация: {type}" +
                                  $"\nЦена: {price}" +
                                  $"\nКоличество: {quantity}" +
                                  $"\nСумма: {price*quantity}");
            }
            else
            {
                Console.WriteLine($"\nОрдер не создан!!!" +
                                  $"\nОшибка: {testOrderCreateApi.ResultMetod.Error}");
            }

            var orderId = testOrderCreateApi.ResultMetod.OrderId;

            //<summary>user_open_orders
            /// <remarks>Получение списока открытых ордеров пользователя</remarks>
            /// </summary>
            IHelperAuthAPI <CUserOpenOrders> testUserOpenOrdersApi = new CHelperAuthAPI <CUserOpenOrders>();
            await testUserOpenOrdersApi.GetResultAsync("user_open_orders", apiKey);

            foreach (var res in testUserOpenOrdersApi.ResultList)
            {
                Console.WriteLine($"\nСписок открытых ордеров пользователя:" +
                                  $"\nВалютная пара: {res.TradeCouples}" +
                                  $"\nOrder_id: {res.OrderId}" +
                                  $"\nСоздан: {(new DateTime(1970, 1, 1, 0, 0, 0, 0)).AddSeconds(res.CreatedTime)}" +
                                  $"\nТип: {res.Type}" +
                                  $"\nЦена: {res.Price}" +
                                  $"\nКоличество: {res.Quantity}" +
                                  $"\nСумма: {res.Amount}");
            }

            /* ///<summary>order_cancel
             * /// <remarks>Отмена ордера</remarks>
             * /// </summary>
             * IHelperAuthAPI<COrderCancel> testOrderCancelApi = new CHelperAuthAPI<COrderCancel>();
             * await testOrderCancelApi.GetResultAsync("order_cancel", apiKey,
             *   new Dictionary<string, string>()
             *   {
             *       {"order_id", orderId.ToString(CultureInfo.InvariantCulture)}
             *   });
             * Console.WriteLine($"\nОтмена ордера {orderId}:");
             * if (testOrderCancelApi.ResultMetod.Result)
             *   Console.WriteLine($"\nОрдер c номером {orderId} - отменен.");
             * else
             * {
             *   Console.WriteLine($"\nОрдер не отменен!!!" +
             *                     $"\nОшибка: {testOrderCancelApi.ResultMetod.Error}");
             * }
             */
            //<summary>user_trades
            /// <remarks>Получение сделок пользователя</remarks>
            /// </summary>
            IHelperAuthAPI <CUserTrades> testUserTradesApi = new CHelperAuthAPI <CUserTrades>();
            await testUserTradesApi.GetResultAsync("user_trades", apiKey,
                                                   new Dictionary <string, string>()
            {
                { "pair", "ETC_USD, BTC_USD" },
                { "limit", "1000" },
                { "offset", "100" }
            });

            Console.WriteLine("\nСделки пользователя:");
            foreach (var uT in testUserTradesApi.ResultList)
            {
                Console.WriteLine($"\nВалютная пара: {uT.TradeCouples}" +
                                  $"\ntrade_id: {uT.TradeId}" +
                                  $"\ndate : {uT.Date}" +
                                  $"\ntype : {uT.Type}" +
                                  $"\norder_id: {uT.OrderId}" +
                                  $"\nquantity : {uT.Quantity}" +
                                  $"\nprice : {uT.Price}" +
                                  $"\namount : {uT.Amount}");
            }

            ///<summary>user_cancelled_orders
            /// <remarks>Получение отмененных ордеров пользователя</remarks>
            ///</summary>
            IHelperAuthAPI <CUserCancelledOrders> testUserCansOrdersApi = new CHelperAuthAPI <CUserCancelledOrders>();
            await testUserCansOrdersApi.GetResultAsync("user_cancelled_orders", apiKey,
                                                       new Dictionary <string, string>()
            {
                { "limit", "100" },
                { "offset", "0" }
            });

            Console.WriteLine("\nОтмененные сделки пользователя:");
            foreach (var canceledOrder in testUserTradesApi.ResultList)
            {
                Console.WriteLine($"\nВалютная пара: {canceledOrder.TradeCouples}" +
                                  $"\ndate : {canceledOrder.Date}" +
                                  $"\ntype : {canceledOrder.Type}" +
                                  $"\norder_id: {canceledOrder.OrderId}" +
                                  $"\nquantity : {canceledOrder.Quantity}" +
                                  $"\nprice : {canceledOrder.Price}" +
                                  $"\namount : {canceledOrder.Amount}");
            }

            ///<summary>order_trades
            /// <remarks>Получение истории сделок ордера</remarks>
            /// </summary>
            IHelperAuthAPI <COrderTrades> testCOrderTradesApi = new CHelperAuthAPI <COrderTrades>();
            await testCOrderTradesApi.GetResultAsync("order_trades", apiKey,
                                                     new Dictionary <string, string>()
            {
                { "ordr_id", orderId.ToString(CultureInfo.InvariantCulture) }
            });

            Console.WriteLine($"История сделок ордера");
            Console.ReadLine();
        }
Exemple #25
0
        /// <summary>
        /// Возвращает список типов цен
        /// </summary>
        /// <param name="objProfile">профайл</param>
        /// <param name="cmdSQL">SQL-команда</param>
        /// <returns>список типов цен</returns>
        public static List <CPriceType> GetPriceTypeList(UniXP.Common.CProfile objProfile, System.Data.SqlClient.SqlCommand cmdSQL)
        {
            List <CPriceType> objList = new List <CPriceType>();

            System.Data.SqlClient.SqlConnection DBConnection = null;
            System.Data.SqlClient.SqlCommand    cmd          = null;
            try
            {
                if (cmdSQL == null)
                {
                    DBConnection = objProfile.GetDBSource();
                    if (DBConnection == null)
                    {
                        DevExpress.XtraEditors.XtraMessageBox.Show(
                            "Не удалось получить соединение с базой данных.", "Внимание",
                            System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                        return(objList);
                    }
                    cmd             = new System.Data.SqlClient.SqlCommand();
                    cmd.Connection  = DBConnection;
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                }
                else
                {
                    cmd = cmdSQL;
                    cmd.Parameters.Clear();
                }

                cmd.CommandText = System.String.Format("[{0}].[dbo].[usp_GetPartsubtypePriceType]", objProfile.GetOptionsDllDBName());
                cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, false, ((System.Byte)(0)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null));
                cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ERROR_NUM", System.Data.SqlDbType.Int, 8, System.Data.ParameterDirection.Output, false, ((System.Byte)(0)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null));
                cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ERROR_MES", System.Data.SqlDbType.NVarChar, 4000));
                cmd.Parameters["@ERROR_MES"].Direction = System.Data.ParameterDirection.Output;
                System.Data.SqlClient.SqlDataReader rs = cmd.ExecuteReader();
                if (rs.HasRows)
                {
                    while (rs.Read())
                    {
                        objList.Add(new CPriceType(
                                        (System.Guid)rs["PartsubtypePriceType_Guid"],
                                        (System.String)rs["PartsubtypePriceType_Name"],
                                        (System.String)rs["PartsubtypePriceType_Abbr"],
                                        ((rs["PartsubtypePriceType_Description"] == System.DBNull.Value) ? "" : (System.String)rs["PartsubtypePriceType_Description"]),
                                        System.Convert.ToBoolean(rs["PartsubtypePriceType_IsActive"]),
                                        new CCurrency(
                                            (System.Guid)rs["Currency_Guid"],
                                            (System.String)rs["Currency_Name"],
                                            (System.String)rs["Currency_Abbr"],
                                            (System.String)rs["Currency_Code"]
                                            ),
                                        System.Convert.ToInt32(rs["PartsubtypePriceType_ColumnIdDefault"]),
                                        System.Convert.ToBoolean(rs["PartsubtypePriceType_ShowInPriceList"])
                                        ));
                    }
                }
                rs.Dispose();

                List <CCurrency> objCurrencyList = CCurrency.GetCurrencyList(objProfile, cmd);
                if ((objList != null) && (objCurrencyList != null))
                {
                    foreach (CPriceType objSPriceType in objList)
                    {
                        objSPriceType.m_objAllCurrencyList = objCurrencyList;
                    }
                }
                if (cmdSQL == null)
                {
                    cmd.Dispose();
                    DBConnection.Close();
                }
            }
            catch (System.Exception f)
            {
                DevExpress.XtraEditors.XtraMessageBox.Show(
                    "Не удалось получить список типов цен.\n\nТекст ошибки: " + f.Message, "Внимание",
                    System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
            }
            return(objList);
        }
Exemple #26
0
        public async Task GetResultAsync(string method, ExmoApi api, Dictionary <string, string> dic = null, string tradeCouples = "BTC_USD")
        {
            if (dic == null)
            {
                dic = new Dictionary <string, string>();
            }
            string  jsonQuery = default;
            JObject objQuery  = default;

            switch (method)
            {
            case "user_info":
                await AssistingMethod(method, api, dic);

                return;

            case "order_create":
                await AssistingMethod(method, api, dic);

                return;

            case "order_cancel":
                await AssistingMethod(method, api, dic);

                return;

            case "user_open_orders":
                jsonQuery = await api.ApiQueryAsync(method, dic);

                objQuery = JObject.Parse(jsonQuery.ToString());
                IList <T> resultUserOpenOrders = new List <T>();
                await CCurrency.GetCurrencyPairListAsync(null);

                foreach (var c in CCurrency.CurrencyPairList)
                {
                    if (objQuery.ToString().Contains(c))
                    {
                        IList <T> tempList = JsonConvert.DeserializeObject <T[]>(objQuery[c].ToString());
                        foreach (var tmp in tempList)
                        {
                            resultUserOpenOrders.Add(tmp);
                        }
                    }
                }
                ResultList = resultUserOpenOrders;
                return;

            case "user_trades":
                List <T> resultUserTrades = new List <T>();
                tradeCouples = dic["pair"];
                tradeCouples = tradeCouples.Replace(" ", string.Empty).Trim().Replace(" ", string.Empty);
                string[] pairs = tradeCouples.Split(',');
                foreach (var p in pairs)
                {
                    dic["pair"] = p;
                    jsonQuery   = await api.ApiQueryAsync(method, dic);

                    objQuery = JObject.Parse(jsonQuery.ToString());
                    IList <T> tempList = JsonConvert.DeserializeObject <T[]>(objQuery[p].ToString());
                    resultUserTrades.AddRange(tempList);
                    dic.Remove("nonce");
                }
                ResultList = resultUserTrades;
                return;

            case "user_cancelled_orders":
                jsonQuery = await api.ApiQueryAsync(method, dic);

                var jarray = JArray.Parse(jsonQuery);
                ResultList = JsonConvert.DeserializeObject <T[]>(jarray.ToString());
                return;

            default:
                //return;
                break;
            }

#if DEBUG
            jsonQuery = await api.ApiQueryAsync(method, dic);

            //JArray ttt=JArray.Parse(jsonQuery);
            objQuery = JObject.Parse(jsonQuery.ToString());



            //var jsonQuery = await api.ApiQueryAsync(method, dic);
            //var objQuery = JObject.Parse(jsonQuery.ToString());
            ResultMetod = JsonConvert.DeserializeObject <T>(objQuery.ToString());
            //ResultMetod = objResult;
#endif
        }
Exemple #27
0
        /// <summary>
        /// Возвращает список кредитных лимитов для заданного клиента
        /// </summary>
        /// <param name="objProfile">профайл</param>
        /// <param name="cmdSQL">SQL-команда</param>
        /// <param name="objCustomer">клиент</param>
        /// <returns>список кредитных лимитов</returns>
        public static List <CCreditLimitArjive> GetCreditLimitArjiveList(UniXP.Common.CProfile objProfile,
                                                                         System.Data.SqlClient.SqlCommand cmdSQL, CCustomer objCustomer, System.DateTime BeginDate, System.DateTime EndDate)
        {
            List <CCreditLimitArjive> objList = new List <CCreditLimitArjive>();

            System.Data.SqlClient.SqlConnection DBConnection = null;
            System.Data.SqlClient.SqlCommand    cmd          = null;
            try
            {
                if (cmdSQL == null)
                {
                    DBConnection = objProfile.GetDBSource();
                    if (DBConnection == null)
                    {
                        DevExpress.XtraEditors.XtraMessageBox.Show(
                            "Не удалось получить соединение с базой данных.", "Внимание",
                            System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                        return(objList);
                    }
                    cmd             = new System.Data.SqlClient.SqlCommand();
                    cmd.Connection  = DBConnection;
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                }
                else
                {
                    cmd = cmdSQL;
                    cmd.Parameters.Clear();
                }

                cmd.CommandText = System.String.Format("[{0}].[dbo].[sp_GetCustomerLimitArjiveForCustomer]", objProfile.GetOptionsDllDBName());
                cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Customer_Guid", System.Data.SqlDbType.UniqueIdentifier));
                cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@BeginDate", System.Data.SqlDbType.DateTime));
                cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@EndDate", System.Data.SqlDbType.DateTime));
                cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, false, ((System.Byte)(0)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null));
                cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ERROR_NUM", System.Data.SqlDbType.Int, 8, System.Data.ParameterDirection.Output, false, ((System.Byte)(0)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null));
                cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ERROR_MES", System.Data.SqlDbType.NVarChar, 4000));
                cmd.Parameters["@ERROR_MES"].Direction = System.Data.ParameterDirection.Output;
                cmd.Parameters["@Customer_Guid"].Value = objCustomer.ID;
                cmd.Parameters["@BeginDate"].Value     = BeginDate;
                cmd.Parameters["@EndDate"].Value       = EndDate;
                System.Data.SqlClient.SqlDataReader rs = cmd.ExecuteReader();
                if (rs.HasRows)
                {
                    CCompany  objCompany  = null;
                    CCurrency objCurrency = null;

                    while (rs.Read())
                    {
                        objCurrency = new CCurrency((System.Guid)rs["Currency_Guid"], (System.String)rs["Currency_Name"],
                                                    (System.String)rs["Currency_Abbr"], (System.String)rs["Currency_Code"]);
                        objCompany = new CCompany((System.Guid)rs["Company_Guid"],
                                                  (System.String)rs["Company_Name"], (System.String)rs["Company_Acronym"]);
                        objList.Add(new CCreditLimitArjive(System.Convert.ToDateTime(rs["Record_Updated"]),
                                                           (System.String)rs["Action_TypeName"], (System.String)rs["Record_UserUdpated"],
                                                           (System.Guid)rs["CustomerLimit_Guid"], objCustomer, objCompany, objCurrency,
                                                           System.Convert.ToDouble(rs["CustomerLimit_ApprovedCurrencyValue"]),
                                                           System.Convert.ToDouble(rs["CustomerLimit_CurrencyValue"]),
                                                           System.Convert.ToInt32(rs["CustomerLimit_ApprovedDays"]),
                                                           System.Convert.ToInt32(rs["CustomerLimit_Days"])));
                    }
                }
                rs.Close();
                rs.Dispose();
                if (cmdSQL == null)
                {
                    cmd.Dispose();
                    DBConnection.Close();
                }
            }
            catch (System.Exception f)
            {
                DevExpress.XtraEditors.XtraMessageBox.Show(
                    "Не удалось получить список кредитных лимитов для заданного клиента из архива.\n\nТекст ошибки: " + f.Message, "Внимание",
                    System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
            }
            return(objList);
        }
Exemple #28
0
        /// <summary>
        /// Сохраняет в БД информацию о кредитных лимитах
        /// </summary>
        /// <param name="objProfile">профайл</param>
        /// <param name="cmdSQL">SQL-команда</param>
        /// <param name="objCreditLimitList">список кредитных лимитов</param>
        /// <param name="strErr">сообщение об ошибке</param>
        /// <returns>true - удачное завершение; false - ошибка</returns>
        public static System.Boolean SaveCreditLimitList(UniXP.Common.CProfile objProfile, System.Data.SqlClient.SqlCommand cmdSQL,
                                                         List <CCreditLimit> objCreditLimitList, CCustomer objCustomer, CCurrency objCurrency, ref System.String strErr)
        {
            System.Boolean bRet = false;
            System.Data.SqlClient.SqlConnection  DBConnection  = null;
            System.Data.SqlClient.SqlCommand     cmd           = null;
            System.Data.SqlClient.SqlTransaction DBTransaction = null;
            try
            {
                if (objCreditLimitList == null)
                {
                    return(bRet);
                }

                if (cmdSQL == null)
                {
                    DBConnection = objProfile.GetDBSource();
                    if (DBConnection == null)
                    {
                        strErr = "Не удалось получить соединение с базой данных.";
                        return(bRet);
                    }
                    DBTransaction   = DBConnection.BeginTransaction();
                    cmd             = new System.Data.SqlClient.SqlCommand();
                    cmd.Connection  = DBConnection;
                    cmd.Transaction = DBTransaction;
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                }
                else
                {
                    cmd = cmdSQL;
                    cmd.Parameters.Clear();
                }
                System.Data.DataTable addedCategories = new System.Data.DataTable();
                addedCategories.Columns.Add(new System.Data.DataColumn("Customer_Guid", typeof(System.Data.SqlTypes.SqlGuid)));
                addedCategories.Columns.Add(new System.Data.DataColumn("Company_Guid", typeof(System.Data.SqlTypes.SqlGuid)));
                addedCategories.Columns.Add(new System.Data.DataColumn("Currency_Guid", typeof(System.Data.SqlTypes.SqlGuid)));
                addedCategories.Columns.Add(new System.Data.DataColumn("CustomerLimit_ApprovedCurrencyValue", typeof(System.Data.SqlTypes.SqlMoney)));
                addedCategories.Columns.Add(new System.Data.DataColumn("CustomerLimit_CurrencyValue", typeof(System.Data.SqlTypes.SqlMoney)));
                addedCategories.Columns.Add(new System.Data.DataColumn("CustomerLimit_ApprovedDays", typeof(float)));
                addedCategories.Columns.Add(new System.Data.DataColumn("CustomerLimit_Days", typeof(float)));

                System.Data.DataRow newRow = null;
                foreach (CCreditLimit objItem in objCreditLimitList)
                {
                    newRow = addedCategories.NewRow();
                    newRow["Customer_Guid"] = objCustomer.ID;
                    newRow["Company_Guid"]  = objItem.Company.ID;
                    newRow["Currency_Guid"] = objCurrency.ID;
                    newRow["CustomerLimit_ApprovedCurrencyValue"] = System.Convert.ToDecimal(objItem.ApprovedCurrencyValue);
                    newRow["CustomerLimit_CurrencyValue"]         = System.Convert.ToDecimal(objItem.CurrencyValue);
                    newRow["CustomerLimit_ApprovedDays"]          = objItem.ApprovedDays;
                    newRow["CustomerLimit_Days"] = objItem.Days;
                    addedCategories.Rows.Add(newRow);
                }
                if (objCreditLimitList.Count > 0)
                {
                    addedCategories.AcceptChanges();
                }

                cmd.Parameters.Clear();
                cmd.CommandText = System.String.Format("[{0}].[dbo].[usp_AssignCustomerLimit]", objProfile.GetOptionsDllDBName());
                cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, false, ((System.Byte)(0)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null));
                cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Customer_Guid", System.Data.SqlDbType.UniqueIdentifier));
                cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Currency_Guid", System.Data.SqlDbType.UniqueIdentifier));
                cmd.Parameters.AddWithValue("@tCreditLimitList", addedCategories);
                cmd.Parameters["@tCreditLimitList"].SqlDbType = System.Data.SqlDbType.Structured;
                cmd.Parameters["@tCreditLimitList"].TypeName  = "dbo.udt_CreditLimitList";
                cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ERROR_NUM", System.Data.SqlDbType.Int, 8, System.Data.ParameterDirection.Output, false, ((System.Byte)(0)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null));
                cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ERROR_MES", System.Data.SqlDbType.NVarChar, 4000));
                cmd.Parameters["@ERROR_MES"].Direction = System.Data.ParameterDirection.Output;
                cmd.Parameters["@Customer_Guid"].Value = objCustomer.ID;
                cmd.Parameters["@Currency_Guid"].Value = objCurrency.ID;
                cmd.ExecuteNonQuery();
                System.Int32 iRes = (System.Int32)cmd.Parameters["@RETURN_VALUE"].Value;
                if (iRes != 0)
                {
                    strErr = (System.String)cmd.Parameters["@ERROR_MES"].Value;
                }

                if (cmdSQL == null)
                {
                    if (iRes == 0)
                    {
                        // подтверждаем транзакцию
                        if (DBTransaction != null)
                        {
                            DBTransaction.Commit();

                            // 2010.04.22
                            // временно пишем в ERP
                            cmd.Parameters.Clear();
                            cmd.CommandText = System.String.Format("[{0}].[dbo].[usp_AssignCustomerLimit_ERP]", objProfile.GetOptionsDllDBName());
                            cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, false, ((System.Byte)(0)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null));
                            cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Customer_Guid", System.Data.SqlDbType.UniqueIdentifier));
                            cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Currency_Guid", System.Data.SqlDbType.UniqueIdentifier));
                            cmd.Parameters.AddWithValue("@tCreditLimitList", addedCategories);
                            cmd.Parameters["@tCreditLimitList"].SqlDbType = System.Data.SqlDbType.Structured;
                            cmd.Parameters["@tCreditLimitList"].TypeName  = "dbo.udt_CreditLimitList";
                            cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ERROR_NUM", System.Data.SqlDbType.Int, 8, System.Data.ParameterDirection.Output, false, ((System.Byte)(0)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null));
                            cmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ERROR_MES", System.Data.SqlDbType.NVarChar, 4000));
                            cmd.Parameters["@ERROR_MES"].Direction = System.Data.ParameterDirection.Output;
                            cmd.Parameters["@Customer_Guid"].Value = objCustomer.ID;
                            cmd.Parameters["@Currency_Guid"].Value = objCurrency.ID;
                            cmd.ExecuteNonQuery();
                            iRes = (System.Int32)cmd.Parameters["@RETURN_VALUE"].Value;
                        }
                    }
                    else
                    {
                        // откатываем транзакцию
                        if (DBTransaction != null)
                        {
                            DBTransaction.Rollback();
                        }
                    }
                    DBConnection.Close();
                }
                bRet = (iRes == 0);
            }
            catch (System.Exception f)
            {
                if ((cmdSQL == null) && (DBTransaction != null))
                {
                    DBTransaction.Rollback();
                }
                strErr = f.Message;
            }
            finally
            {
                if (DBConnection != null)
                {
                    DBConnection.Close();
                }
            }
            return(bRet);
        }