Пример #1
0
        public async Task <AccountTransferExtractResult> Extract(AccountTransferSearch option, CancellationToken token)
        {
            var result = new AccountTransferExtractResult();

            result.Details = (await accounttransferProcessor.ExtractAsync(option, token)).ToArray();
            result.Logs    = result.Details.SelectMany(x => x.GetInvalidLogs()).ToArray();
            return(result);
        }
Пример #2
0
 public async Task <AccountTransferDetailsResult> ExtractAsync(string SessionKey,
                                                               AccountTransferSearch SearchOption)
 {
     return(await authorizationProcessor.DoAuthorizeAsync(SessionKey, async token =>
     {
         var result = (await accounttransferProcessor.ExtractAsync(SearchOption, token)).ToList();
         return new AccountTransferDetailsResult
         {
             ProcessResult = new ProcessResult {
                 Result = true
             },
             AccountTransferDetail = result,
         };
     }, logger));
 }
Пример #3
0
 public async Task <IEnumerable <AccountTransferDetail> > ExtractAsync(AccountTransferSearch option, CancellationToken token = default(CancellationToken))
 {
     option.CurrencyId = (await currencyGetByIdQueryProcessor.GetByCodesAsync(option.CompanyId, new[] { DefaultCurrencyCode }, token)).First().Id;
     return(await accountTransferDetailQueryProcessor.GetAsync(option, token));
 }
        public Task <IEnumerable <AccountTransferDetail> > GetAsync(AccountTransferSearch option, CancellationToken token = default(CancellationToken))
        {
            var history = option.AccountTransferLogIds?.Any() ?? false;
            var builder = new StringBuilder(history ? @"
SELECT atd.[Id]
     , atd.[AccountTransferLogId]
     , atd.[BillingId]
     , atd.[CompanyId]
     , atd.[CustomerId]
     , atd.[DepartmentId]
     , atd.[StaffId]
     , atd.[BilledAt]
     , atd.[SalesAt]
     , atd.[ClosingAt]
     , atd.[DueAt]
     , atd.[DueAt2nd]
     , atd.[BillingAmount]
     , atd.[InvoiceCode]
     , atd.[Note1]
     , atd.[TransferBankCode]
     , atd.[TransferBankName]
     , atd.[TransferBranchCode]
     , atd.[TransferBranchName]
     , atd.[TransferAccountTypeId]
     , atd.[TransferAccountNumber]
     , atd.[TransferAccountName]
     , atd.[TransferCustomerCode]
     , atd.[TransferNewCode]
     , COALESCE(cs.[Code], N'') [CustomerCode]
     , COALESCE(cs.[Name], N'') [CustomerName]
     , COALESCE(dp.[Code], N'') [DepartmentCode]
     , COALESCE(dp.[Name], N'') [DepartmentName]
     , COALESCE(st.[Code], N'') [StaffCode]
     , COALESCE(st.[Name], N'') [StaffName]
     , atl.[CollectCategoryId]
     , atl.[PaymentAgencyId]
     , cc.[Code]    [CollectCategoryCode]
     , cc.[Name]    [CollectCategoryName]
     , pa.[Code]    [PaymentAgencyCode]
     , pa.[Name]    [PaymentAgencyName]
     , pa.[FileFormatId]
     , atl.[DueAt] [NewDueAt]
  FROM [dbo].[AccountTransferDetail] atd
 INNER JOIN [dbo].[AccountTransferLog] atl  ON atl.[Id] = atd.[AccountTransferLogId]
 INNER JOIN [dbo].[Category] cc             ON cc.[Id]  = atl.[CollectCategoryId]
 INNER JOIN [dbo].[PaymentAgency] pa        ON pa.[Id]  = atl.[PaymentAgencyId]
  LEFT JOIN [dbo].[Customer] cs             ON cs.[Id]  = atd.[CustomerId]
  LEFT JOIN [dbo].[Department] dp           ON dp.[Id]  = atd.[DepartmentId]
  LEFT JOIN [dbo].[Staff] st                ON st.[Id]  = atd.[StaffId]
 WHERE atl.[Id] IN (SELECT [Id] FROM @Ids)
" : @"
SELECT ROW_NUMBER() OVER ( ORDER BY b.[Id] ) [Id]
     , 0 [AccountTransferLogId]
     , b.[Id] [BillingId]
     , b.[CompanyId]
     , b.[CustomerId]
     , b.[DepartmentId]
     , b.[StaffId]
     , b.[BilledAt]
     , b.[SalesAt]
     , b.[ClosingAt]
     , b.[DueAt]
     , b.[BillingAmount] - b.[OffsetAmount] [BillingAmount]
     , b.[InvoiceCode]
     , b.[Note1]
     , cs.[TransferBankCode]
     , cs.[TransferBankName]
     , cs.[TransferBranchCode]
     , cs.[TransferBranchName]
     , cs.[TransferAccountTypeId]
     , cs.[TransferAccountNumber]
     , cs.[TransferAccountName]
     , cs.[TransferCustomerCode]
     , cs.[TransferNewCode]
     , b.[ResultCode]
     , b.[UpdateAt] [BillingUpdateAt]
     , cs.[Code]    [CustomerCode]
     , cs.[Name]    [CustomerName]
     , dp.[Code]    [DepartmentCode]
     , dp.[Name]    [DepartmentName]
     , st.[Code]    [StaffCode]
     , st.[Name]    [StaffName]
     , b.[CollectCategoryId]
     , cc.[PaymentAgencyId]
     , cc.[Code]    [CollectCategoryCode]
     , cc.[Name]    [CollectCategoryName]
     , pa.[Code]    [PaymentAgencyCode]
     , pa.[Name]    [PaymentAgencyName]
     , pa.[FileFormatId]
  FROM [dbo].[Billing] b
  LEFT JOIN [dbo].[Customer] cs             ON cs.[Id]  = b.[CustomerId]
  LEFT JOIN [dbo].[Department] dp           ON dp.[Id]  = b.[DepartmentId]
  LEFT JOIN [dbo].[Staff] st                ON st.[Id]  = b.[StaffId]
  LEFT JOIN [dbo].[Category] cc             ON cc.[Id]  = b.[CollectCategoryId]
  LEFT JOIN [dbo].[PaymentAgency] pa        ON pa.[Id]  = cc.[PaymentAgencyId]
  LEFT JOIN [dbo].[Currency] cy             ON cy.[Id]  = b.[Id]
 WHERE b.[CompanyId]            = @CompanyId
   AND b.[InputType]            <> 3
   AND b.[CollectCategoryId]    = @CollectCategoryId
   AND b.[CurrencyId]           = @CurrencyId
   AND b.[DeleteAt]             IS NULL
   AND b.[AccountTransferLogId] IS NULL
   AND (b.[ResultCode] IS NULL OR b.[ResultCode] <> N'0')
");

            if (!history)
            {
                if (option.DueAtFrom.HasValue)
                {
                    builder.Append(@"
   AND b.[DueAt]                >= @DueAtFrom");
                }
                if (option.DueAtTo.HasValue)
                {
                    builder.Append(@"
   AND b.[DueAt]                <= @DueAtTo");
                }
            }

            var param = history
                ? (object)new { Ids = option.AccountTransferLogIds.GetTableParameter() }
                : option;

            return(dbHelper.GetItemsAsync <AccountTransferDetail>(builder.ToString(), param, token));
        }
Пример #5
0
        private async Task <List <AccountTransferDetail> > GetAccountTransferDetailAsync(AccountTransferSearch SearchOption)
        {
            List <AccountTransferDetail> list = null;
            await ServiceProxyFactory.DoAsync <AccountTransferServiceClient>(async client =>
            {
                var result = await client.ExtractAsync(SessionKey, SearchOption);
                if (result.ProcessResult.Result)
                {
                    list = result.AccountTransferDetail;
                }
            });

            return(list ?? new List <AccountTransferDetail>());
        }