public static AdvanceReport CreateAdvanceReport(string dataAreaId,
                                                        string advanceReportId,
                                                        global::System.DateTimeOffset transactionDate,
                                                        global::System.DateTimeOffset checkingDate,
                                                        global::System.DateTimeOffset firmingDate,
                                                        decimal amount)
        {
            AdvanceReport advanceReport = new AdvanceReport();

            advanceReport.dataAreaId      = dataAreaId;
            advanceReport.AdvanceReportId = advanceReportId;
            advanceReport.TransactionDate = transactionDate;
            advanceReport.CheckingDate    = checkingDate;
            advanceReport.FirmingDate     = firmingDate;
            advanceReport.Amount          = amount;
            return(advanceReport);
        }
Example #2
0
        public override void UpdateNodes()
        {
            AccountableDebtsVMNode resultAlias = null;
            Expense       operationAddAlias    = null;
            Income        operationReturnAlias = null;
            AdvanceReport operationRemoveAlias = null;
            Employee      employeeAlias        = null;

            var subqueryAdd = QueryOver.Of <Expense>(() => operationAddAlias)
                              .Where(() => operationAddAlias.Employee.Id == employeeAlias.Id && operationAddAlias.TypeOperation == ExpenseType.Advance)
                              .Select(Projections.Sum <Expense> (o => o.Money));

            var subqueryReturn = QueryOver.Of <Income>(() => operationReturnAlias)
                                 .Where(() => operationReturnAlias.Employee.Id == employeeAlias.Id && operationReturnAlias.TypeOperation == IncomeType.Return)
                                 .Select(Projections.Sum <Income> (o => o.Money));

            var subqueryRemove = QueryOver.Of <AdvanceReport>(() => operationRemoveAlias)
                                 .Where(() => operationRemoveAlias.Accountable.Id == employeeAlias.Id)
                                 .Select(Projections.Sum <AdvanceReport> (o => o.Money));

            if (Filter.RestrictExpenseCategory != null)
            {
                subqueryAdd.Where(e => e.ExpenseCategory == Filter.RestrictExpenseCategory);
                subqueryReturn.Where(e => e.ExpenseCategory == Filter.RestrictExpenseCategory);
                subqueryRemove.Where(e => e.ExpenseCategory == Filter.RestrictExpenseCategory);
            }

            var stocklist = UoW.Session.QueryOver <Employee> (() => employeeAlias)
                            .SelectList(list => list
                                        .SelectGroup(() => employeeAlias.Id).WithAlias(() => resultAlias.Id)
                                        .Select(() => employeeAlias.Name).WithAlias(() => resultAlias.EmployeeName)
                                        .Select(() => employeeAlias.LastName).WithAlias(() => resultAlias.EmployeeSurname)
                                        .Select(() => employeeAlias.Patronymic).WithAlias(() => resultAlias.EmployeePatronymic)
                                        .SelectSubQuery(subqueryAdd).WithAlias(() => resultAlias.Append)
                                        .SelectSubQuery(subqueryRemove).WithAlias(() => resultAlias.Removed)
                                        .SelectSubQuery(subqueryReturn).WithAlias(() => resultAlias.Returned)
                                        )
                            .TransformUsing(Transformers.AliasToBean <AccountableDebtsVMNode>())
                            .List <AccountableDebtsVMNode>().Where(r => r.Debt != 0).ToList();

            SetItemsSource(stocklist);
        }
Example #3
0
        public override void UpdateNodes()
        {
            AccountableSlipsVMNode resultAlias   = null;
            Expense       operationRecivedAlias  = null;
            Income        operationReturnedAlias = null;
            AdvanceReport operationReportedAlias = null;

            List <AccountableSlipsVMNode> result = new List <AccountableSlipsVMNode> ();

            var recived = UoW.Session.QueryOver <Expense> (() => operationRecivedAlias)
                          .Where(e => e.Employee == Filter.RestrictAccountable && e.TypeOperation == ExpenseType.Advance);

            var returned = UoW.Session.QueryOver <Income> (() => operationReturnedAlias)
                           .Where(e => e.Employee == Filter.RestrictAccountable && e.TypeOperation == IncomeType.Return);

            var reported = UoW.Session.QueryOver <AdvanceReport> (() => operationReportedAlias)
                           .Where(e => e.Accountable == Filter.RestrictAccountable);


            //Добавляем условия по фильтру
            if (Filter.RestrictExpenseCategory != null)
            {
                recived.Where(o => o.ExpenseCategory == Filter.RestrictExpenseCategory);
                returned.Where(o => o.ExpenseCategory == Filter.RestrictExpenseCategory);
                reported.Where(o => o.ExpenseCategory == Filter.RestrictExpenseCategory);
            }

            if (Filter.RestrictStartDate.HasValue)
            {
                recived.Where(o => o.Date >= Filter.RestrictStartDate.Value);
                returned.Where(o => o.Date >= Filter.RestrictStartDate.Value);
                reported.Where(o => o.Date >= Filter.RestrictStartDate.Value);
            }

            if (Filter.RestrictEndDate.HasValue)
            {
                recived.Where(o => o.Date <= Filter.RestrictEndDate.Value);
                returned.Where(o => o.Date <= Filter.RestrictEndDate.Value);
                reported.Where(o => o.Date <= Filter.RestrictEndDate.Value);
            }

            if (!Filter.RestrictEndDate.HasValue && !Filter.RestrictEndDate.HasValue)
            {
                recived.OrderBy(e => e.Date).Desc.Take(20);
                returned.OrderBy(e => e.Date).Desc.Take(20);
                reported.OrderBy(e => e.Date).Desc.Take(20);
            }

            var recivedList = recived.SelectList(list => list
                                                 .Select(e => e.Id).WithAlias(() => resultAlias.Id)
                                                 .Select(e => e.Date).WithAlias(() => resultAlias.Date)
                                                 .Select(e => e.Money).WithAlias(() => resultAlias.Append)
                                                 .Select(e => e.Description).WithAlias(() => resultAlias.Description)
                                                 )
                              .TransformUsing(Transformers.AliasToBean <AccountableSlipsVMNode>())
                              .List <AccountableSlipsVMNode>();

            recivedList.ToList().ForEach(i => i.DocType = CashDocumentType.Expense);
            result.AddRange(recivedList);

            var returnedList = returned.SelectList(list => list
                                                   .Select(e => e.Id).WithAlias(() => resultAlias.Id)
                                                   .Select(e => e.Date).WithAlias(() => resultAlias.Date)
                                                   .Select(e => e.Money).WithAlias(() => resultAlias.Removed)
                                                   .Select(e => e.Description).WithAlias(() => resultAlias.Description)
                                                   )
                               .TransformUsing(Transformers.AliasToBean <AccountableSlipsVMNode>())
                               .List <AccountableSlipsVMNode>();

            returnedList.ToList().ForEach(i => i.DocType = CashDocumentType.Income);
            result.AddRange(returnedList);

            var reportedList = reported.SelectList(list => list
                                                   .Select(e => e.Id).WithAlias(() => resultAlias.Id)
                                                   .Select(e => e.Date).WithAlias(() => resultAlias.Date)
                                                   .Select(e => e.Money).WithAlias(() => resultAlias.Removed)
                                                   .Select(e => e.Description).WithAlias(() => resultAlias.Description)
                                                   )
                               .TransformUsing(Transformers.AliasToBean <AccountableSlipsVMNode>())
                               .List <AccountableSlipsVMNode>();

            reportedList.ToList().ForEach(i => i.DocType = CashDocumentType.AdvanceReport);
            result.AddRange(reportedList);

            result.Sort((x, y) => {
                if (x.Date > y.Date)
                {
                    return(1);
                }
                if (x.Date == y.Date)
                {
                    return(0);
                }
                return(-1);
            });

            SetItemsSource(result);
        }