예제 #1
0
파일: WordMail.cs 프로젝트: bamusasoft/fpm
        Dictionary <string, string> BuildValues(LoansStatementReport report)
        {
            Dictionary <string, string> dic = new Dictionary <string, string>();

            dic.Add("R101", report.MemberCode.ToString());
            dic.Add("R102", report.MemberName.ToString());
            dic.Add("R103", report.LoansTotal.ToString("0,0.00"));
            dic.Add("R104", report.PaidTotal.ToString("0,0.00"));
            dic.Add("R105", report.BalanceTotal.ToString("0,0.00"));
            int counter = 101;

            foreach (var detail in report.DetailsCollection)
            {
                var properties = from p in typeof(LoansStatementDetailes).GetProperties()
                                 where
                                 p.GetCustomAttributes(true).Cast <Attribute>()
                                 .Contains(new BindableAttribute(true))
                                 select p;
                foreach (var pro in properties)
                {
                    string key    = "D" + counter.ToString();
                    string lastNo = key.Substring(3, 1);

                    switch (lastNo)
                    {
                    case "1":
                    case "6":
                        dic.Add(key, pro.GetValue(detail).ToString());
                        break;

                    case "2":
                    case "7":
                        dic.Add(key, pro.GetValue(detail).ToString());
                        break;

                    case "3":
                    case "8":
                        dic.Add(key, ((decimal)pro.GetValue(detail)).ToString("0,0.00"));
                        break;

                    case "4":
                    case "9":
                        dic.Add(key, ((decimal)pro.GetValue(detail)).ToString("0,0.00"));
                        break;

                    case "5":
                    case "0":
                        dic.Add(key, ((decimal)pro.GetValue(detail)).ToString("0,0.00"));
                        break;

                    default:
                        throw new NotSupportedException();;
                    }
                    counter++;
                }
            }
            return(dic);
        }
예제 #2
0
파일: WordMail.cs 프로젝트: bamusasoft/fpm
        public void Send(LoansStatementReport report, string fileName, string pdfFileName)
        {
            if (report == null)
            {
                throw new ArgumentNullException("report");
            }
            if (string.IsNullOrEmpty(fileName))
            {
                throw new ArgumentNullException("fileName");
            }
            _Application wordApp  = null;
            Documents    wordDocs = null;
            Document     wordDoc  = null;
            bool         showWord = false;//Properties.Settings.Default.ShowReports;

            try
            {
                wordApp  = StartWord();
                wordDocs = wordApp.Documents;
                wordDoc  = wordDocs.Add(fileName);

                Fields docFields = wordDoc.Fields;
                Values = BuildValues(report);
                string pdf = pdfFileName + "\\" + report.MemberCode.ToString();
                foreach (Field f in docFields)
                {
                    if (!WriteField(f))
                    {
                        f.Result.Text = string.Empty;
                    }
                }
                if (!showWord)
                {
                    wordDoc.ExportAsFixedFormat(pdf, WdExportFormat.wdExportFormatPDF, true, WdExportOptimizeFor.wdExportOptimizeForOnScreen);
                    ReleaseResources(wordApp, wordDocs, wordDoc);
                    return;
                }
                wordApp.Visible = true;
                ReleaseResources(wordApp, wordDocs, wordDoc);
            }
            catch (Exception ex)
            {
                Helper.LogOnly(ex);
                ForceExcleToQuit(wordApp);
                ReleaseResources(wordApp, wordDocs, wordDoc);
                throw;
            }
        }
예제 #3
0
        void Search()
        {
            string s = txtMemberCode.Text;

            if (string.IsNullOrEmpty(s) || SelectedYear == null)
            {
                return;
            }

            int code;

            if (int.TryParse(s, out code))
            {
                var result = _repLoans.Query(
                    l => l.FamilyMember.Code == code
                    &&
                    l.PeriodSetting.Id == SelectedYear.Id
                    ).OrderBy(l => l.LoanNo);
                int     memberCode   = 0;
                string  name         = null;
                decimal loansTotal   = 0.0M;
                decimal paidTotal    = 0.0M;
                decimal balanceTotal = 0.0M;
                List <LoansStatementDetailes> details = new List <LoansStatementDetailes>();
                int counter = 0;
                foreach (var loan in result)
                {
                    if (counter == 0)
                    {
                        memberCode   = loan.FamilyMember.Code;
                        name         = loan.FamilyMember.FullName;
                        loansTotal   = result.Sum(x => x.Amount);
                        paidTotal    = result.Sum(x => x.Paid);
                        balanceTotal = result.Sum(x => x.Balance);
                        counter++;
                    }
                    LoansStatementDetailes d = new LoansStatementDetailes(
                        "1433-01-01", loan.Description,
                        loan.Amount, loan.Paid, loan.Balance);
                    details.Add(d);
                }
                Statement = new LoansStatementReport(
                    memberCode, name, loansTotal, paidTotal, balanceTotal, details);
            }
        }