예제 #1
0
        /// <summary>
        /// asks the user to open a csv file and imports the contents according to the config file
        /// </summary>
        /// <param name="AStatementKey">this returns the first key of a statement that was imported. depending on the implementation, several statements can be created from one file</param>
        /// <param name="ALedgerNumber">the current ledger number</param>
        /// <param name="ABankAccountCode">the bank account against which the statement should be stored</param>
        /// <returns></returns>
        public bool ImportBankStatement(out Int32 AStatementKey, Int32 ALedgerNumber, string ABankAccountCode)
        {
            OpenFileDialog DialogOpen = new OpenFileDialog();

            DialogOpen.Filter = Catalog.GetString("bank statement (*.csv)|*.csv");
            DialogOpen.RestoreDirectory = true;
            DialogOpen.Title = Catalog.GetString("Please select the bank statement to import");

            if (DialogOpen.ShowDialog() != DialogResult.OK)
            {
                AStatementKey = -1;
                return false;
            }

            string BankStatementFilename = DialogOpen.FileName;

            TDlgSelectCSVSeparator DlgSeparator = new TDlgSelectCSVSeparator(false);

            Boolean fileCanOpen = DlgSeparator.OpenCsvFile(DialogOpen.FileName);

            if (!fileCanOpen)
            {
                MessageBox.Show(Catalog.GetString("Unable to open file."),
                    Catalog.GetString("Import Bank Statement"),
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Stop);
                AStatementKey = -1;
                return false;
            }

            String dateFormatString = TUserDefaults.GetStringDefault("BankimportCSVDateFormat", "MDY");
            String impOptions = TUserDefaults.GetStringDefault("BankimportCSVNumberFormat", ";" + TDlgSelectCSVSeparator.NUMBERFORMAT_AMERICAN);

            DlgSeparator.DateFormat = dateFormatString;

            if (impOptions.Length > 1)
            {
                DlgSeparator.NumberFormat = impOptions.Substring(1);
            }

            DlgSeparator.SelectedSeparator = impOptions.Substring(0, 1);

            if (DlgSeparator.ShowDialog() != DialogResult.OK)
            {
                AStatementKey = -1;
                return false;
            }

            TUserDefaults.SetDefault("BankimportCSVDateFormat", DlgSeparator.DateFormat);
            TUserDefaults.SetDefault("BankimportCSVNumberFormat", DlgSeparator.SelectedSeparator + DlgSeparator.NumberFormat);

            StreamReader dataFile = new StreamReader(BankStatementFilename, TTextFile.GetFileEncoding(BankStatementFilename), false);
            string StatementData = dataFile.ReadToEnd();
            dataFile.Close();

            BankImportTDS MainDS = ImportBankStatementNonInteractive(
                ALedgerNumber,
                ABankAccountCode,
                DlgSeparator.SelectedSeparator,
                DlgSeparator.DateFormat,
                DlgSeparator.NumberFormat,
                TUserDefaults.GetStringDefault(
                    "BankimportCSVColumnsUsage",
                    "unused,DateEffective,Description,Amount,Currency"),
                BankStatementFilename,
                StatementData);

            if (MainDS != null)
            {
                TMBankimportNamespace PluginRemote = new TMBankimportNamespace();

                if (PluginRemote.WebConnectors.StoreNewBankStatement(
                        MainDS,
                        out AStatementKey) == TSubmitChangesResult.scrOK)
                {
                    return AStatementKey != -1;
                }
            }

            AStatementKey = -1;
            return false;
        }
        private void ProcessStatementsOnServer(BankImportTDS AMainDS)
        {
            TMBankimportNamespace PluginRemote = new TMBankimportNamespace();

            if (PluginRemote.WebConnectors.StoreNewBankStatement(
                    AMainDS,
                    out FStatementKey) == TSubmitChangesResult.scrOK)
            {
            }
        }