Example #1
0
        public async Task <IdOutputDto <long> > CreateJournalEntryDocumentUnit(JournalEntryDocumentInputUnit input)
        {
            var journalEntryDocumentUnit = new JournalEntryDocumentUnit();

            Mapper.Map(input, journalEntryDocumentUnit);
            var accountDocumentId = await _journalEntryDocumentUnitManager.CreateAsync(journalEntryDocumentUnit);

            if (!ReferenceEquals(input.JournalEntryDetailList, null))
            {
                input.JournalEntryDetailList.ForEach(u => u.AccountingDocumentId = accountDocumentId);
                await JournalEntryDetails(input.JournalEntryDetailList.OrderByDescending(u => u.Amount).ToList());
            }
            await CurrentUnitOfWork.SaveChangesAsync();

            if (journalEntryDocumentUnit.JournalTypeId == JournalType.RecurringEntries)
            {
                //await Helper.GetCron("x");
                await _recurringJobManager.AddOrUpdateAsync <JournalEntryBackGroundJob, BackgroundJobInput <long> >(
                    $"RecurringJournalID{accountDocumentId}",
                    new BackgroundJobInput <long>() { Id = accountDocumentId, tenantId = journalEntryDocumentUnit.TenantId }, input.CronExpression,
                    BackgroundJobPriority.Normal);
            }
            return(new IdOutputDto <long>()
            {
                Id = accountDocumentId
            });
        }
Example #2
0
        protected virtual async Task ValidateJournalUnitAsync(JournalEntryDocumentUnit journalunit)
        {
            //Validating if Duplicate DocumentReference(Journal#) exists
            if (_journalEntryDocumentUnitRepository != null)
            {
                var journals = (await _journalEntryDocumentUnitRepository.
                                GetAllListAsync(p => p.DocumentReference == journalunit.DocumentReference && p.OrganizationUnitId == journalunit.OrganizationUnitId &&
                                                p.TypeOfAccountingDocumentId == TypeOfAccountingDocument.GeneralLedger));

                if (journalunit.Id == 0)
                {
                    if (journals.Count > 0)
                    {
                        throw new UserFriendlyException(L("Duplicate Journal#", journalunit.DocumentReference));
                    }
                }
                else
                {
                    if (journals.FirstOrDefault(p => p.Id != journalunit.Id && p.DocumentReference == journalunit.DocumentReference) != null)
                    {
                        throw new UserFriendlyException(L("Duplicate Journal#", journalunit.DocumentReference));
                    }
                }
            }
        }
Example #3
0
        public async Task DeleteJournalEntryDocumentUnit(IdInput input)
        {
            JournalEntryDocumentUnit journalEntryDocumentUnit = _journalEntryDocumentUnitRepository.Get(input.Id);
            await _journalEntryDocumentUnitManager.DeleteAsync(input);

            await _journalEntryDocumentDetailUnitRepository.DeleteAsync(p => p.AccountingDocumentId == input.Id);

            await CurrentUnitOfWork.SaveChangesAsync();

            if (journalEntryDocumentUnit.JournalTypeId == JournalType.RecurringEntries && !journalEntryDocumentUnit.IsPosted)
            {
                if (journalEntryDocumentUnit.OriginalDocumentId != null)
                {
                    _recurringJobManager.DeleteJob($"RecurringJournalID{journalEntryDocumentUnit.OriginalDocumentId}");
                }
                else
                {
                    _recurringJobManager.DeleteJob($"RecurringJournalID{journalEntryDocumentUnit.Id}");
                }
            }
        }
Example #4
0
        public virtual async Task <long> CreateRecurringAsync(long journalId, int tenantId)
        {
            _unitOfWorkManager.Current.SetTenantId(tenantId);
            {
                JournalEntryDocumentUnit recurJournalDocument = new JournalEntryDocumentUnit();
                var journalDocumentunit = _journalEntryDocumentUnitRepository.Get(journalId);

                //Mapper.CreateMap<JournalEntryDocumentUnit, JournalEntryDocumentUnit>()
                //    .ForMember(dto => dto.Id, options => options.Ignore());
                var config = new MapperConfiguration(cfg => {
                    cfg.CreateMap <JournalEntryDocumentUnit, JournalEntryDocumentUnit>().ForMember(dto => dto.Id, options => options.Ignore());
                });
                Mapper.Map(journalDocumentunit, recurJournalDocument);

                // Adding the Parent Reference
                recurJournalDocument.OriginalDocumentId = journalId;
                recurJournalDocument.RecurDocId         = journalId;
                // Changing the Description
                recurJournalDocument.DocumentReference = recurJournalDocument.DocumentReference + "-" +
                                                         _journalEntryDocumentUnitRepository.GetAll()
                                                         .Count(p => p.OriginalDocumentId == journalId) + 1;

                // await ValidateJournalUnitAsync(newjournalDocumentunit);
                var accountingDocumentId = await _journalEntryDocumentUnitRepository.InsertAndGetIdAsync(recurJournalDocument);

                //Getting journal details by AccountingDocumentId
                var newJournalDetails = await _journalEntryDocumentDetailUnitRepository.GetAllListAsync(u => u.AccountingDocumentId == journalId);

                foreach (var journals in newJournalDetails)
                {
                    journals.AccountingDocumentId = accountingDocumentId;
                    await _journalEntryDocumentDetailUnitRepository.InsertAsync(journals);
                }
                return(accountingDocumentId);
            }
        }
Example #5
0
        public virtual async Task UpdateAsync(JournalEntryDocumentUnit journalUnit)
        {
            await ValidateJournalUnitAsync(journalUnit);

            await _journalEntryDocumentUnitRepository.UpdateAsync(journalUnit);
        }
Example #6
0
        public virtual async Task <long> CreateAsync(JournalEntryDocumentUnit journalUnit)
        {
            await ValidateJournalUnitAsync(journalUnit);

            return(await _journalEntryDocumentUnitRepository.InsertAndGetIdAsync(journalUnit));
        }