예제 #1
0
        private void RunReportHelper()
        {
            Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Send, (SendOrPostCallback) delegate { View.StartSyncAnimation(); }, null);


            SqlConnection con = new SqlConnection(PosSettings.Default.possiteConnectionString); //DataModule.CurrDataSourcePath);

            try
            {
                con.Open();
                string query = "select store_name,  trans_sales_person.employee_no as emp, employee.fname, " +
                               "cast( [possite].[dbo].[ufn_GetDateOnly](start_time) as varchar(12 ) ) as sales_date,  " +
                               "[possite].[dbo].[ufn_Addition](sum(ext_amount), sum(promo.amt) ) as net_sales " +
                               "from trans_item join trans on " +
                               "(trans.trans_no = trans_item.trans_no and trans.organization_no = trans_item.organization_no and " +
                               "trans.store_no = trans_item.store_no ) " +
                               "left  outer join " +
                               "trans_sales_person " +
                               "on (trans.organization_no=trans_sales_person.organization_no and trans.store_no = trans_sales_person.store_no and trans.trans_no=trans_sales_person.trans_no and trans.pos_no = trans_sales_person.pos_no) " +
                               "left outer join " +
                               "(SELECT trans_promotion.organization_no, trans_promotion.store_no,  trans_promotion.trans_no, trans_promotion.line_no, sum(trans_promotion.promotion_amount) amt " +
                               "FROM trans_promotion " +
                               "group by trans_promotion.organization_no, trans_promotion.store_no, trans_promotion.trans_no, trans_promotion.line_no) " +
                               "AS promo " +
                               "on (trans_item.organization_no=promo.organization_no and trans_item.store_no = promo.store_no and trans_item.trans_no=promo.trans_no and trans_item.line_no = promo.line_no) " +
                               "left outer join retail_store on " +
                               "(trans.store_no=retail_store.store_no and trans.organization_no = retail_store.organization_no ) " +
                               "left outer join employee on " +
                               "(trans_sales_person.organization_no = employee.organization_no and trans_sales_person.employee_no = employee.employee_no) " +
                               "where trans.state = 2 " +
                               " and trans_item.state = 2 " +
                               " and trans.organization_no >= @organizationFrom and trans.organization_no <= @organizationTo " +
                               " and trans.store_no >= @storeFrom and trans.store_no <= @storeTo " +
                               " and [possite].[dbo].[ufn_GetDateOnly](start_time) >= @salesDateFrom and [possite].[dbo].[ufn_GetDateOnly](start_time) <= @salesDateTo " +
                               " and trans_sales_person.employee_no >= @employeeFrom and trans_sales_person.employee_no <= @employeeTo " +
                               " group by store_name, trans_sales_person.employee_no, employee.fname, " +
                               " [possite].[dbo].[ufn_GetDateOnly](start_time) " +
                               " order by store_name, trans_sales_person.employee_no, [possite].[dbo].[ufn_GetDateOnly](start_time) ";


                SqlCommand comm = new SqlCommand(query, con);
                comm.Parameters.Add("@organizationFrom", SqlDbType.Char).Value  = View.OrganizationNoFrom;
                comm.Parameters.Add("@organizationTo", SqlDbType.Char).Value    = View.OrganizationNoTo;
                comm.Parameters.Add("@storeFrom", SqlDbType.Char).Value         = View.StoreNoFrom;
                comm.Parameters.Add("@storeTo", SqlDbType.Char).Value           = View.StoreNoTo;
                comm.Parameters.Add("@salesDateFrom", SqlDbType.DateTime).Value = View.SalesDateFrom;
                comm.Parameters.Add("@salesDateTo", SqlDbType.DateTime).Value   = View.SalesDateTo;
                //comm.Parameters.Add("@storeFrom", SqlDbType.Char).Value = View.StoreNoFrom;
                //comm.Parameters.Add("@storeTo", SqlDbType.Char).Value = View.StoreNoTo;


                comm.Parameters.Add("@employeeFrom", SqlDbType.Char).Value = View.EmployeeFrom;
                comm.Parameters.Add("@employeeTo", SqlDbType.Char).Value   = View.EmployeeTo;


                SqlDataAdapter dataAdapter = new SqlDataAdapter(comm);
                DataTable      dataTable1  = new DataTable("trans_items");
                dataAdapter.Fill(dataTable1);
                SqlDataReader dataReader = comm.ExecuteReader();

                // Open the file that contains the FlowDocument...
                // FileStream xamlFile = new FileStream("../Debug/Data/SalesSummaryReport", FileMode.Open, FileAccess.Read);
                // and parse the file with the XamlReader.Load method.
                // FlowDocument fd = XamlReader.Load(xamlFile) as FlowDocument;
                // xamlFile.Close();
                // object obj1 = fd.FindName("reportHeader");
                // MessageBox.Show(obj1.ToString());


                ReportData       rData = DataEngine.Load(dataReader, new string[] { "store_name" });
                ReportDefinition rDef  = new ReportDefinition();
                rDef.ReportName  = "SalesSummaryBySalesPerson";
                rDef.Page.Margin = new Size(40, 70);
                //Header definition
                rDef.HeaderTemplate = "<Section><Paragraph TextAlignment=\"Center\" FontWeight=\"Bold\" FontSize=\"12\">Sales Summay Report</Paragraph></Section>";


                //Table definition
                rDef.TableDefinition = @"<Table>
                                          <Table.Columns>
                                            <TableColumn />
                                            <TableColumn />
                                            <TableColumn />
                                            <TableColumn />
                                           </Table.Columns>
                                         </Table>";

                //Item definition
                rDef.ItemTemplate = "<TableRow>" +
                                    "<TableCell BorderThickness=\"0,0,0,0\" BorderBrush=\"Black\" >" +
                                    "<Paragraph FontSize=\"12\"  TextAlignment=\"Center\" >" +
                                    "<c:FormattedRun PropertyName=\"emp\"/>" +
                                    "</Paragraph>" +
                                    "</TableCell>" +
                                    "<TableCell BorderThickness=\"0,0,0,0\" BorderBrush=\"Black\"  >" +
                                    "<Paragraph FontSize=\"12\"  TextAlignment=\"Center\" >" +
                                    "<c:FormattedRun PropertyName=\"fname\"/>" +
                                    "</Paragraph>" +
                                    "</TableCell>" +
                                    "<TableCell BorderThickness=\"0,0,0,0\" BorderBrush=\"Black\"  >" +
                                    "<Paragraph FontSize=\"12\"  TextAlignment=\"Center\" >" +
                                    "<c:FormattedRun PropertyName=\"sales_date\"/>" +
                                    "</Paragraph>" +
                                    "</TableCell>" +
                                    "<TableCell BorderThickness=\"0,0,0,0\" BorderBrush=\"Black\"  >" +
                                    "<Paragraph FontSize=\"12\"  TextAlignment=\"Center\" >" +
                                    "<c:FormattedRun PropertyName=\"net_sales\"/>" +
                                    "</Paragraph>" +
                                    "</TableCell>" +
                                    "</TableRow>";

                //Footer definition
                rDef.FooterTemplate = "<Section>" +
                                      "<Paragraph TextAlignment=\"Center\" FontSize=\"12\">*** End of Sales Summary Report ***</Paragraph> " +
                                      "</Section>";


                rDef.Page.HeaderTemplate = "<Section>" +
                                           "<Paragraph TextAlignment=\"Right\" FontSize=\"12\" >" +
                                           "Page @PageNumber from @PageCount" +
                                           "</Paragraph>" +
                                           "</Section>";

                string strDate = System.DateTime.Now.ToShortDateString();
                string strTime = System.DateTime.Now.ToShortTimeString();
                // string strUser = InfrastructureModule.GetCurrentUser();
                rDef.Page.FooterTemplate = "<Section>" +
                                           "<Paragraph TextAlignment=\"Right\" FontSize=\"12\" >" +
                                           "Date: " + strDate + "  " + "Time: " + strTime +
                                           "</Paragraph>" +
                                           "</Section>";
                //rDef.Page.Margin = new Size(96, 96);



                //Group definitions
                GroupDefinition def1 = new GroupDefinition();
                def1.HeaderTemplate = "<TableRowGroup>" +
                                      "<TableRow>" +
                                      "<TableCell ColumnSpan=\"3\">" +
                                      "<Paragraph FontWeight=\"Bold\" FontSize=\"12\">Store :" +
                                      "<c:FormattedRun PropertyName=\"store_no\"/> " +
                                      "</Paragraph>" +
                                      "</TableCell>" +
                                      "</TableRow>" +
                                      "<TableRow>" +
                                      "<TableCell >" +
                                      "</TableCell>" +
                                      "</TableRow>" +
                                      "<TableRow>" +
                                      "<TableCell BorderThickness=\"0,0,0,0\" BorderBrush=\"Black\" >" +
                                      "<Paragraph FontWeight=\"Bold\" FontSize=\"12\" TextAlignment=\"Center\">Employee ID</Paragraph>" +
                                      "</TableCell>" +
                                      "<TableCell BorderThickness=\"0,0,0,0\" BorderBrush=\"Black\">" +
                                      "<Paragraph FontWeight=\"Bold\" FontSize=\"12\" TextAlignment=\"Center\" >Name</Paragraph>" +
                                      "</TableCell>" +
                                      "<TableCell BorderThickness=\"0,0,0,0\" BorderBrush=\"Black\">" +
                                      "<Paragraph FontWeight=\"Bold\" FontSize=\"12\" TextAlignment=\"Center\" >Date</Paragraph>" +
                                      "</TableCell>" +
                                      "<TableCell BorderThickness=\"0,0,0,0\" BorderBrush=\"Black\">" +
                                      "<Paragraph FontWeight=\"Bold\" FontSize=\"12\" TextAlignment=\"Center\" >Sales Amount</Paragraph>" +
                                      "</TableCell>" +
                                      "</TableRow>" +
                                      "</TableRowGroup>";



                def1.FooterTemplate = "<TableRowGroup > " +
                                      "<TableRow>" +
                                      "<TableCell> " +
                                      "</TableCell>" +
                                      "</TableRow> " +
                                      "<TableRow>" +
                                      "<TableCell BorderThickness=\"0,0,0,0\" BorderBrush=\"Black\">" +
                                      "<Paragraph FontWeight=\"Bold\" FontSize=\"12\" TextAlignment=\"Center\">" +
                                      "Total Sales:" +
                                      "</Paragraph>" +
                                      "</TableCell>" +
                                      "<TableCell BorderThickness=\"0,0,0,0\" BorderBrush=\"Black\">" +
                                      "<Paragraph FontWeight=\"Bold\" FontSize=\"12\" TextAlignment=\"Center\" >" +
                                      "<c:FormattedRun PropertyName=\"amt\"/>" +
                                      "</Paragraph>" +
                                      "</TableCell>" +
                                      "<TableCell BorderThickness=\"0,0,0,0\" BorderBrush=\"Black\">" +
                                      "<Paragraph FontWeight=\"Bold\" FontSize=\"12\" TextAlignment=\"Center\" >" +
                                      "<c:FormattedRun PropertyName=\"promo_amt\"/>" +
                                      "</Paragraph>" +
                                      "</TableCell>" +
                                      "<TableCell BorderThickness=\"0,0,0,0\" BorderBrush=\"Black\">" +
                                      "<Paragraph FontWeight=\"Bold\" FontSize=\"12\" TextAlignment=\"Center\" >" +
                                      "<c:FormattedRun PropertyName=\"net_sales\"/>" +
                                      "</Paragraph>" +
                                      "</TableCell>" +
                                      "</TableRow>" +
                                      "</TableRowGroup>";


                def1.NewPageOnGroupBreak = true;

                /*
                 * GroupDefinition def2 = new GroupDefinition();
                 * def2.HeaderTemplate = "<TableRowGroup>" +
                 *                  "<TableRow>" +
                 *                  "<TableCell ColumnSpan=\"3\">" +
                 *                      "<Paragraph FontWeight=\"Bold\">Trans id: " +
                 *                          "<c:FormattedRun PropertyName=\"Trans id\"/> " +
                 *                      "</Paragraph>" +
                 *                  "</TableCell>" +
                 *              "</TableRow>" +
                 *
                 *              "<TableRow>" +
                 *                  "<TableCell>" +
                 *                      "<Paragraph FontWeight=\"Bold\">Trans Id</Paragraph>" +
                 *                  "</TableCell>" +
                 *                  "<TableCell>" +
                 *                      "<Paragraph FontWeight=\"Bold\">SKU</Paragraph>" +
                 *                  "</TableCell>" +
                 *                  "<TableCell>" +
                 *                      "<Paragraph FontWeight=\"Bold\" TextAlignment=\"Right\">Amount</Paragraph>" +
                 *                  "</TableCell>" +
                 *              "</TableRow>" +
                 *                  "</TableRowGroup>";
                 *
                 *
                 *
                 *
                 * def2.FooterTemplate = @"<TableRowGroup >
                 *                          <TableRow>
                 *                              <TableCell>
                 *                                  <Paragraph>
                 *                                  Total:
                 *                                  </Paragraph>
                 *                              </TableCell>
                 *                          </TableRow>
                 *                          <TableRow>
                 *                              <TableCell ></TableCell>
                 *                          </TableRow>
                 *                      </TableRowGroup>";
                 * def2.NewPageOnGroupBreak = true;
                 *
                 */

                List <GroupDefinition> grpDef = new List <GroupDefinition>();
                grpDef.Add(def1);
                //grpDef.Add(def2);

                rDef.Groups = grpDef;



                ReportEngine repEngine = _container.Resolve <ReportEngine>() as ReportEngine;
                //View.DisplayDocument(repEngine.CreateReport.CreateFlowDocumentReport(rDef, rData) );
                // View.DisplayDocument(repEngine.CreateReport(rDef, rData));
                this.xpsRep = repEngine.CreateReport(rDef, rData);
                this.fdRep  = repEngine.CreateFlowDocumentReport(rDef, rData);


                con.Close();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }

            Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Send, (SendOrPostCallback) delegate { this.DisplayReport(); }, null);
            Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Send, (SendOrPostCallback) delegate { View.EndSyncAnimation(); }, null);
        }