예제 #1
0
        private void ShowImportForm(ShowViewParameters svp)
        {
            var os         = Application.CreateObjectSpace();
            var paramObj   = ImportArOpenInvoicesParam.GetInstance(os);
            var detailView = Application.CreateDetailView(os, paramObj);

            svp.TargetWindow = TargetWindow.NewModalWindow;
            svp.CreatedView  = detailView;
        }
        public string Execute(ImportArOpenInvoicesParam paramObj)
        {
            var statusMessage = string.Empty;

            Func <string, string> formatSql = delegate(string sql)
            {
                return(Smart.Format(sql, new
                {
                    AsAtDate = string.Format("{0:yyyy-MM-dd}", paramObj.AsAtDate.Date),
                }));
            };

            var conn = (SqlConnection)objSpace.Connection;

            int rowCount = 0;

            using (var csv = new CachedCsvReader(new StreamReader(paramObj.FilePath), true))
                using (var cmd = conn.CreateCommand())
                    using (var bc = new SqlBulkCopy(conn))
                    {
                        //cmd.Transaction = trn;
                        cmd.CommandTimeout = CashDiscipline.Common.Constants.SqlCommandTimeout;

                        cmd.CommandText = createSql;
                        cmd.ExecuteNonQuery();

                        bc.DestinationTableName = "#TmpArOpenInvoice";
                        bc.WriteToServer(csv);

                        cmd.CommandText = "SELECT COUNT(*) FROM #TmpArOpenInvoice";
                        rowCount        = Convert.ToInt32(cmd.ExecuteScalar());

                        cmd.CommandText = formatSql(persistSql);
                        cmd.ExecuteNonQuery();
                    }
            statusMessage = string.Format("{0} rows processed.", rowCount);
            return(statusMessage);
        }