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 }); }
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)); } } } }
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}"); } } }
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); } }
public virtual async Task UpdateAsync(JournalEntryDocumentUnit journalUnit) { await ValidateJournalUnitAsync(journalUnit); await _journalEntryDocumentUnitRepository.UpdateAsync(journalUnit); }
public virtual async Task <long> CreateAsync(JournalEntryDocumentUnit journalUnit) { await ValidateJournalUnitAsync(journalUnit); return(await _journalEntryDocumentUnitRepository.InsertAndGetIdAsync(journalUnit)); }