Example #1
0
        /// <summary>
        /// Get sales detail by personal
        /// </summary>
        /// <param name="model">data table model</param>
        /// <param name="condition">search condition</param>
        /// <param name="TAB_ID">Tab id</param>
        /// <returns>JSON sales detail by personal</returns>
        public ActionResult SalesDetail(DataTablesModel model, SalesDetailByPersonalCondition condition, string TAB_ID)
        {
            if (Request.IsAjaxRequest() && ModelState.IsValid)
            {
                condition.CompanyCode = GetLoginUser().CompanyCode;
                var pageInfo = this.mainService.GetSalesDetailByPersonal(model, condition);
                Session[Constant.SESSION_SEARCH_RESULT + TAB_ID] = pageInfo.Items;
                decimal totalSales  = 0;
                decimal totalCost   = 0;
                decimal totalProfit = 0;

                foreach (var data in pageInfo.Items)
                {
                    totalSales  += data.project_sales;
                    totalCost   += data.actual_cost;
                    totalProfit += data.profit;
                }

                var result = Json(
                    new
                {
                    sEcho                = model.sEcho,
                    iTotalRecords        = pageInfo.TotalItems,
                    iTotalDisplayRecords = pageInfo.TotalItems,
                    aaData               = (from t in pageInfo.Items select new object[]
                    {
                        t.project_no,
                        HttpUtility.HtmlEncode(t.project_name),
                        t.project_sales.ToString("#,##0") + "円",
                        t.actual_cost.ToString("#,##0") + "円",
                        t.profit.ToString("#,##0") + "円",
                    }).ToList(),
                    totalSales  = totalSales.ToString("#,##0") + "円",
                    totalCost   = totalCost.ToString("#,##0") + "円",
                    totalProfit = totalProfit.ToString("#,##0") + "円"
                },
                    JsonRequestBehavior.AllowGet);

                return(result);
            }
            return(new EmptyResult());
        }
Example #2
0
        /// <summary>
        /// Get Sales detail list by personal
        /// </summary>
        /// <param name="startItem"></param>
        /// <param name="itemsPerPage"></param>
        /// <param name="columns"></param>
        /// <param name="sortCol"></param>
        /// <param name="sortDir"></param>
        /// <param name="condition"></param>
        /// <returns></returns>
        public PageInfo <SalesDetailByPersonal> GetSalesDetailByPersonal(
            int startItem,
            int itemsPerPage,
            string columns,
            int?sortCol,
            string sortDir,
            SalesDetailByPersonalCondition condition)
        {
            var sb = new StringBuilder();

            sb.Append(@"
                SELECT * FROM (SELECT *, (tbData.project_sales - tbData.actual_cost) as profit FROM (SELECT tbProject.project_no, tbProject.project_name, (paymentCost + individual_sales) AS project_sales, ");
            sb.AppendFormat(@"
                (paymentCost + (ISNULL(dbo.RoundNumber('{0}', (tbSales.unit_cost * (tbWorkTime.total_work_day / dbo.GetNumberOfWorkDaysInMonth('{0}', {1}, {2})))), 0))) AS actual_cost ", condition.CompanyCode, condition.SelectedMonth, condition.SelectedYear);
            sb.Append(@"
                FROM ( ");
            sb.Append(@"
                    SELECT ISNULL(tbIndividual.project_sys_id, ISNULL(tbSupplier.project_sys_id, tbOverheadCost.project_sys_id)) AS project_sys_id, ");
            sb.Append(@"
                            ISNULL(tbIndividual.individual_sales, 0) AS individual_sales, ");
            sb.Append(@"
                        (ISNULL(tbSupplier.amount, 0) + ISNULL(tbOverheadCost.amount, 0)) AS paymentCost, ");
            sb.Append(@"
                        ISNULL(tbIndividual.unit_cost, 0) AS unit_cost ");
            sb.Append(@"
                        FROM ( ");
            sb.Append(@"
                            SELECT tbMaDetail.project_sys_id, SUM(tbMaDetail.individual_sales) AS individual_sales, ");
            sb.Append(@"
                                    (SELECT TOP 1 base_unit_cost ");
            sb.Append(@"
                                     FROM unit_price_history ");
            sb.AppendFormat(@"
                                     WHERE company_code = '{0}' ", condition.CompanyCode);
            sb.AppendFormat(@"
                                        AND user_sys_id ={0} ", condition.UserID);
            sb.AppendFormat(@"
                                        AND apply_start_date <= CONVERT(date, CAST({0} AS varchar(4)) + '/'+ RIGHT('0' + CAST({1} AS VARCHAR(2)), 2) + '/01') ", condition.SelectedYear, condition.SelectedMonth);
            sb.AppendFormat(@"
                                        AND del_flg = '0' ", Constant.DeleteFlag.NON_DELETE);
            sb.Append(@"
                                    ORDER BY apply_start_date DESC) AS unit_cost ");
            sb.Append(@"
                                FROM member_assignment_detail AS tbMaDetail ");
            sb.AppendFormat(@"
                                WHERE tbMaDetail.company_code = '{0}' ", condition.CompanyCode);
            sb.AppendFormat(@"
                                AND tbMaDetail.user_sys_id = {0} ", condition.UserID);
            sb.AppendFormat(@"
                                AND tbMaDetail.target_year = {0} ", condition.SelectedYear);
            sb.AppendFormat(@"
                                AND tbMaDetail.target_month = {0} ", condition.SelectedMonth);
            sb.Append(@"
                                GROUP BY tbMaDetail.project_sys_id ");
            sb.Append(@"
                            ) AS tbIndividual FULL JOIN ( ");
            sb.Append(@"
                            SELECT tbSupDetail.project_sys_id, SUM(tbSupDetail.amount) AS amount ");
            sb.Append(@"
                                FROM sales_payment_detail AS tbSupDetail INNER JOIN sales_payment AS tbSup ");
            sb.Append(@"
                                ON tbSupDetail.company_code = tbSup.company_code ");
            sb.Append(@"
                                AND tbSupDetail.project_sys_id = tbSup.project_sys_id ");
            sb.Append(@"
                                AND tbSupDetail.customer_id = tbSup.customer_id ");
            sb.Append(@"
                                AND tbSupDetail.ordering_flg = tbSup.ordering_flg ");
            sb.AppendFormat(@"
                                WHERE tbSupDetail.company_code = '{0}' ", condition.CompanyCode);
            sb.Append(@"
                                AND tbSupDetail.ordering_flg = '2' ");
            sb.Append(@"
                                AND (ISNULL(tbSup.charge_person_id, ");
            sb.Append(@"
                                (SELECT charge_person_id FROM project_info WHERE company_code = tbSup.company_code AND project_sys_id = tbSup.project_sys_id)) ");
            sb.AppendFormat(@"
                                ) = {0}", condition.UserID);
            sb.AppendFormat(@"
                                AND tbSupDetail.target_year = {0} ", condition.SelectedYear);
            sb.AppendFormat(@"
                                AND tbSupDetail.target_month = {0} ", condition.SelectedMonth);
            sb.Append(@"
                                GROUP BY tbSupDetail.project_sys_id ");
            sb.Append(@"
                            ) AS tbSupplier ");
            sb.Append(@"
                            ON tbIndividual.project_sys_id = tbSupplier.project_sys_id ");
            sb.Append(@"
                            FULL JOIN ( ");
            sb.Append(@"
                            SELECT tbOvcDetail.project_sys_id, SUM(tbOvcDetail.amount) AS amount ");
            sb.Append(@"
                                FROM overhead_cost_detail AS tbOvcDetail INNER JOIN overhead_cost AS tbOvc ");
            sb.Append(@"
                                ON tbOvcDetail.company_code = tbOvc.company_code ");
            sb.Append(@"
                                AND tbOvcDetail.project_sys_id = tbOvc.project_sys_id ");
            sb.Append(@"
                                AND tbOvcDetail.detail_no = tbOvc.detail_no ");
            sb.AppendFormat(@"
                                WHERE tbOvcDetail.company_code = '{0}' ", condition.CompanyCode);
            sb.AppendFormat(@"
                                AND tbOvc.charge_person_id = {0} ", condition.UserID);
            sb.AppendFormat(@"
                                AND tbOvcDetail.target_year = {0} ", condition.SelectedYear);
            sb.AppendFormat(@"
                                AND tbOvcDetail.target_month = {0} ", condition.SelectedMonth);
            sb.Append(@"
                                GROUP BY tbOvcDetail.project_sys_id ");
            sb.Append(@"
                            ) AS tbOverheadCost ");
            sb.Append(@"
                            ON tbIndividual.project_sys_id = tbOverheadCost.project_sys_id ");
            sb.Append(@"
                            OR tbSupplier.project_sys_id = tbOverheadCost.project_sys_id ");
            sb.Append(@"
                            ) AS tbSales ");
            sb.Append(@"
                            LEFT JOIN ( ");
            sb.AppendFormat(@"
                            SELECT project_sys_id, dbo.Hour2Day('{0}', SUM(actual_work_time)) AS total_work_day ", condition.CompanyCode);
            sb.Append(@"
                                FROM member_actual_work_detail ");
            sb.AppendFormat(@"
                                WHERE company_code = '{0}' ", condition.CompanyCode);
            sb.AppendFormat(@"
                                AND user_sys_id = {0} ", condition.UserID);
            sb.AppendFormat(@"
                                AND actual_work_year = {0} ", condition.SelectedYear);
            sb.AppendFormat(@"
                                AND actual_work_month = {0} ", condition.SelectedMonth);
            sb.Append(@"
                                GROUP BY project_sys_id ");
            sb.Append(@"
                            ) AS tbWorkTime ");
            sb.Append(@"
                            ON tbSales.project_sys_id = tbWorkTime.project_sys_id ");
            sb.Append(@"
                            INNER JOIN project_info AS tbProject ");
            sb.Append(@"
                            ON tbSales.project_sys_id = tbProject.project_sys_id ");
            sb.AppendFormat(@"
                            AND tbProject.company_code = '{0}' ", condition.CompanyCode);
            sb.Append(@"
                            AND tbProject.del_flg = '0' ");

            if (!string.IsNullOrEmpty(condition.ContractTypeID))
            {
                sb.AppendFormat(@"
                            AND tbProject.contract_type_id IN ({0}) ", condition.ContractTypeID);
            }

            sb.Append(@"
                            AND (SELECT sales_type FROM m_status WHERE company_code = tbProject.company_code AND status_id = tbProject.status_id) = '0' ");
            sb.Append(@"
                            ) tbData ) tbFinal");

            var query    = new Sql(sb.ToString());
            var pageInfo = Page <SalesDetailByPersonal>(startItem, int.MaxValue, columns, sortCol, sortDir, query);

            return(pageInfo);
        }
Example #3
0
        /// <summary>
        /// Get Sales detail list by personal
        /// </summary>
        /// <param name="model"></param>
        /// <param name="condition"></param>
        /// <returns>List of sales detail by personal</returns>
        public PageInfo <SalesDetailByPersonal> GetSalesDetailByPersonal(DataTablesModel model, SalesDetailByPersonalCondition condition)
        {
            var pageInfo = this._repository.GetSalesDetailByPersonal(
                model.iDisplayStart,
                model.iDisplayLength,
                model.sColumns,
                model.iSortCol_0,
                model.sSortDir_0,
                condition);

            return(pageInfo);
        }
Example #4
0
        public ActionResult ExportCsv(int UserID = 0, int TargetYear = 0, int TargetMonth = 0, int sortCol = 0, string sortDir = "asc", string ContractTypeID = "", string TAB_ID = "")
        {
            if (UserID > 0 && TargetYear > 0 && TargetMonth > 0)
            {
                List <string> titles = new List <string>()
                {
                    "プロジェクト名",
                    "売上",
                    "原価",
                    "利益"
                };

                DataTablesModel model = new DataTablesModel
                {
                    sEcho          = "1",
                    iColumns       = 5,
                    sColumns       = "project_name,project_name,project_sales,actual_cost,profit",
                    iDisplayStart  = 0,
                    iDisplayLength = int.MaxValue,
                    iSortCol_0     = sortCol,
                    sSortDir_0     = sortDir,
                    iSortingCols   = 1
                };

                SalesDetailByPersonalCondition condition = new SalesDetailByPersonalCondition
                {
                    CompanyCode    = GetLoginUser().CompanyCode,
                    UserID         = UserID,
                    SelectedYear   = TargetYear,
                    SelectedMonth  = TargetMonth,
                    ContractTypeID = ContractTypeID
                };

                var salesDetails = new List <SalesDetailByPersonal>();
                if (Session[Constant.SESSION_SEARCH_RESULT + TAB_ID] != null)
                {
                    salesDetails = Session[Constant.SESSION_SEARCH_RESULT + TAB_ID] as List <SalesDetailByPersonal>;
                }
                else
                {
                    salesDetails = this.mainService.GetSalesDetailByPersonal(model, condition).Items;
                }
                IList <SalesDetailByPersonalExportCSV> datalist = new List <SalesDetailByPersonalExportCSV>();

                foreach (var data in salesDetails)
                {
                    datalist.Add(new SalesDetailByPersonalExportCSV()
                    {
                        project_name = data.project_name,
                        sales        = data.project_sales.ToString("#,##0"),
                        cost         = data.actual_cost.ToString("#,##0"),
                        profit       = (data.project_sales - data.actual_cost).ToString("#,##0")
                    });
                }

                string    fileName = "PersonalSalesDetail_" + Utility.GetCurrentDateTime().ToString("yyyyMMdd") + ".csv";
                DataTable dt       = Utility.ToDataTableT(datalist, titles.ToArray());
                Utility.ExportToCsvData(this, dt, fileName);
            }

            return(new EmptyResult());
        }