private async void OnSave() { var editingAccDocumentItem = Mapper.Map <EditableAccDocumentItem, AccDocumentItem>(AccDocumentItem); try { if (EditMode) { await _accDocumentItemsService.UpdateAccDocumentItemAsync(editingAccDocumentItem); } else { await _accDocumentItemsService.AddAccDocumentItemAsync(editingAccDocumentItem); } Done?.Invoke(); } catch (Exception ex) { Failed?.Invoke(ex); } finally { AccDocumentItem = null; } }
private void OnExport() { if (_accessUtility.HasAccess(61)) { var errorMessage = ""; var getDocumentNumbering = _accDocumentHeadersService.GetDocumentNumbering(); var dateDocument = _appContextService.CurrentFinancialYear; EndNumber = getDocumentNumbering.EndNumber; var lastAccDocumentHeaderCode = _accDocumentHeadersService.GetLastAccDocumentHeaderCode(_appContextService.CurrentFinancialYear); if (lastAccDocumentHeaderCode > EndNumber) { Error("شماره گذاری اسناد به پایان رسیده،لطفا شماره گذاری اسناد را بررسی نمایید"); } else { var startYear = _currencyExchangesService.GetStartFinancialYear(dateDocument); PersianCalendar persianCalendar = new PersianCalendar(); if (DocumentDate == null) { Error("تاریخ تسعیر خالی می باشد"); } else if (DocumentDate != null) { var DocDate = persianCalendar.GetYear(DocumentDate.Value); if (DocDate != dateDocument) { Error("تاریخ تسعیر با سال مالی تطابق ندارد"); } else { var GetEnd = GetEndExchange(dateDocument); AccDocumentItems = new ObservableCollection <AccDocumentItemGroupedDTO>(_currencyExchangesService.GetGroupedAccDocumentItems(GetEnd.Value.Date, DocumentDate.Value.Date)); var c = AccDocumentItems.Count; // AccDocumentItems = new ObservableCollection<AccDocumentItemGroupedDTO>(await _currencyExchangesService.GetGroupedAccDocumentItemsAsync(StartFinancialYear.Date, DocumentDate.Value.Date)); if (!AccDocumentItems.Any()) { Error("سندی تا این تاریخ برای تسعیر وجود ندارد"); } else { if (AccHeaderDate == null) { Error("تاریخ سند خالی می باشد"); } else if (AccHeaderDate != null) { var accHeaderDate = persianCalendar.GetYear(AccHeaderDate.Value); if (accHeaderDate > dateDocument) { Error(" تاریخ سند با سال مالی تطابق ندارد"); } else { if (SL == null) { errorMessage += $"لطفا معین خود را انتخاب کنید {Environment.NewLine}"; // Error("معین خود را انتخاب کنید."); } else if (SL != null) { if (SL.DLType1 != 0 && DLs1 == null) { errorMessage += $"تفصیل اول نمی تواند خالی باشد {Environment.NewLine}"; } if (SL.DLType2 != 0 && DLs2 == null) { errorMessage += $" تفصیل دوم نمی تواند خالی باشد {Environment.NewLine}"; } if (Description1 == "" || Description1 == null) { errorMessage += $" شرح آرتیکل 1 نباید خالی باشد {Environment.NewLine}"; } } if (errorMessage.Length > 0) { Error(errorMessage); } else { var getHeader = _tLDocumentsService.GetAccDocumentHeaders(GetEnd.Value.Date, DocumentDate.Value.Date); if (getHeader == true) { Information?.Invoke("در بین اسناد وضعیت پیش نویس وجود دارد"); } else { IsBusy = true; AccDocumentHeader = new AccDocumentHeader(); var startNumber = getDocumentNumbering.StartNumber; if (lastAccDocumentHeaderCode == 0) { lastAccDocumentHeaderCode = startNumber; } else { lastAccDocumentHeaderCode++; } Enabled = false; IsEnable = false; //lastAccDocumentHeaderCode = _accDocumentHeadersService.GetLastAccDocumentHeaderCode(dateDocument); var lastDailyNumberCode = _accDocumentHeadersService.GetLastDailyNumberCode1(); var stringLastAccDocumentHeaderCode = lastAccDocumentHeaderCode.ToString(); var stringlastDailyNumberCode = lastDailyNumberCode.ToString(); var lastAccDocumentHeadersCode = stringLastAccDocumentHeaderCode; var lastDayAccDocumentHeadersCode = stringLastAccDocumentHeaderCode; AccDocumentHeader.DailyNumber = int.Parse($"{stringlastDailyNumberCode}"); AccDocumentHeader.DocumentNumber = int.Parse($"{lastAccDocumentHeadersCode}"); AccDocumentHeader.ManualDocumentNumber = int.Parse($"{lastAccDocumentHeadersCode}"); AccDocumentHeader.SystemFixNumber = int.Parse($"{lastAccDocumentHeadersCode}"); AccDocumentHeader.HeaderDescription = "هدر سند تسعیر"; AccDocumentHeader.DocumentDate = AccHeaderDate.Value; AccDocumentHeader.Exporter = _appContextService.CurrentUser.FriendlyName; AccDocumentHeader.SystemName = System.Environment.MachineName; AccDocumentHeader.Status = StatusEnum.Temporary; AccDocumentHeader.TypeDocumentId = 6; AccRow = 1; string AccRowCode = AccRow.ToString(); // var editingAccDocumentHeader = Mapper.Map<EditableAccDocumentHeader, AccDocumentHeader>(AccDocumentHeader); // Mapper.Map( AccDocumentItemListViewModel.AccDocumentItems.ToList(), editingAccDocumentHeader.AccDocumentItems); if (DocumentDate == null) { DocumentDate = _currencyExchangesService.GetEndFinancialYear1(dateDocument); } var accItems = new ObservableCollection <AccDocumentItemGroupedDTO>(_currencyExchangesService.GetGroupedAccDocumentItems(GetEnd.Value.Date, DocumentDate.Value.Date)); var accList = AccDocumentItems.Select((xd, i) => new AccDocumentItem { AccDocumentHeaderId = AccDocumentHeader.AccDocumentHeaderId, CurrencyId = xd.CurrencyId, SLId = (xd.SLId), DL1Id = (xd.DL1Id), DL2Id = (xd.DL2Id), Description1 = Description1, Description2 = Description2, Credit = (xd.SumDebit - xd.SumCredit) < 0 ? Math.Abs(xd.SumDebit - xd.SumCredit) : 0, Debit = (xd.SumDebit - xd.SumCredit) > 0 ? Math.Abs(xd.SumDebit - xd.SumCredit) : 0, // HasExchange= xd.HasExchange = true }); using (var _uow = new Saina.Data.Context.SainaDbContext()) { foreach (var item in AccDocumentItems) { var cmd = $@"UPDATE Acc.AccDocumentItems SET HasExchange=1 WHERE AccDocumentItemId={item.AccDocumentItemId} "; _uow.Database.ExecuteSqlCommand(cmd); } } AccDocumentHeader.AccDocumentItems = new ObservableCollection <AccDocumentItem>(accList.ToList()); _accDocumentHeadersService.AddAccDocumentHeader(AccDocumentHeader); // _accDocumentItemsService.AddAccDocumentItemsAsync(accList); var remainRial = accList.Sum(di => di.Debit - di.Credit); // var remainCurrencies = sumDebitCurrencies - sumCreditCurrencies; var remainCurrencies = _currencyExchangesService.GetRemainExchanges(GetEnd.Value.Date, DocumentDate.Value.Date); if (remainCurrencies == null) { remainCurrencies = 0; } var lastCurrency = _currencyExchangesService.GetLastCurrencyDocAsync(); var remain = (remainCurrencies) - remainRial; if (remain > 0) { Debit = Math.Abs(remain.Value); Credit = 0; } else { Credit = Math.Abs(remain.Value); Debit = 0; } if (remain != 0) { var accItem = new AccDocumentItem { AccDocumentHeaderId = AccDocumentHeader.AccDocumentHeaderId, SLId = (SL.SLId), DL1Id = AccDocumentItem.DL1Id, DL2Id = AccDocumentItem.DL2Id, Description1 = Description1, Description2 = Description2, Credit = Credit, Debit = Debit }; _accDocumentItemsService.AddAccDocumentItemAsync(accItem); } EndFinancialYear = _currencyExchangesService.GetEndFinancialYear1(_appContextService.CurrentFinancialYear); GetEnd = GetEndExchange(dateDocument); // AccDocumentItems = new ObservableCollection<AccDocumentItemGroupedDTO>(await _currencyExchangesService.GetGroupedAccDocumentItemsAsync(GetEnd.Value.Date, EndFinancialYear.Date)); AccDocumentItems = new ObservableCollection <AccDocumentItemGroupedDTO>(_currencyExchangesService.GetGroupedAccDocumentItems(GetEnd.Value.Date, EndFinancialYear.Date)); Information("سند با موفقیت ثبت شد"); Enabled = true; IsEnable = true; IsBusy = false; } } } } } } } } } }
// public long lastAccDocumentHeaderCode { get; set; } private async void OnExport() { if (_accessUtility.HasAccess(68)) { var errorMessage = ""; var getDocumentNumbering = await _accDocumentHeadersService.GetDocumentNumberingAsync(); var dateDocument = _appContextService.CurrentFinancialYear; EndNumber = getDocumentNumbering.EndNumber; var lastAccDocumentHeaderCode = _accDocumentHeadersService.GetLastAccDocumentHeaderCode(_appContextService.CurrentFinancialYear); if (lastAccDocumentHeaderCode > EndNumber) { Error("شماره گذاری اسناد به پایان رسیده،لطفا شماره گذاری اسناد را بررسی نمایید"); } else { if (AccDocumentItems1.Count == 0) { Error("سندی برای سود زیانی وجود ندارد"); } else { var startYear = _currencyExchangesService.GetStartFinancialYear(dateDocument); PersianCalendar persianCalendar = new PersianCalendar(); if (AccHeaderDate == null) { Error("تاریخ سند خالی می باشد"); } else { var x = persianCalendar.GetYear(AccHeaderDate.Value); if (x != dateDocument) { Error("تاریخ را درست وارد نمایید"); } else { if (SL == null) { errorMessage += $"لطفا معین خود را انتخاب کنید {Environment.NewLine}"; // Error("معین خود را انتخاب کنید."); } else if (SL != null) { if (SL.DLType1 != 0 && DLs1 == null) { errorMessage += $"تفصیل اول نمی تواند خالی باشد {Environment.NewLine}"; } if (SL.DLType2 != 0 && DLs2 == null) { errorMessage += $" تفصیل دوم نمی تواند خالی باشد {Environment.NewLine}"; } if (Description1 == "" || Description1 == null) { errorMessage += $" شرح آرتیکل 1 نباید خالی باشد {Environment.NewLine}"; } } if (errorMessage.Length > 0) { Error(errorMessage); } else { var startNumber = getDocumentNumbering.StartNumber; if (lastAccDocumentHeaderCode == 0) { lastAccDocumentHeaderCode = startNumber; } else { lastAccDocumentHeaderCode++; } AccDocumentHeader = new AccDocumentHeader(); var lastDailyNumberCode = await _accDocumentHeadersService.GetLastDailyNumberCode(); var stringLastAccDocumentHeaderCode = lastAccDocumentHeaderCode.ToString(); var stringlastDailyNumberCode = lastDailyNumberCode.ToString(); var lastAccDocumentHeadersCode = stringLastAccDocumentHeaderCode; var lastDayAccDocumentHeadersCode = stringLastAccDocumentHeaderCode; AccDocumentHeader.DailyNumber = int.Parse($"{stringlastDailyNumberCode}"); AccDocumentHeader.DocumentNumber = int.Parse($"{lastAccDocumentHeadersCode}"); AccDocumentHeader.ManualDocumentNumber = int.Parse($"{lastAccDocumentHeadersCode}"); AccDocumentHeader.SystemFixNumber = int.Parse($"{lastAccDocumentHeadersCode}"); AccDocumentHeader.HeaderDescription = "هدر سند سود و زیانی"; AccDocumentHeader.Status = StatusEnum.Temporary; AccDocumentHeader.DocumentDate = AccHeaderDate.Value; AccDocumentHeader.Exporter = _appContextService.CurrentUser.FriendlyName; AccDocumentHeader.SystemName = System.Environment.MachineName; AccDocumentHeader.TypeDocumentId = 1; AccRow = 1; // string AccRowCode = AccRow.ToString(); // var editingAccDocumentHeader = Mapper.Map<EditableAccDocumentHeader, AccDocumentHeader>(AccDocumentHeader); // Mapper.Map( AccDocumentItemListViewModel.AccDocumentItems.ToList(), editingAccDocumentHeader.AccDocumentItems); await _accDocumentHeadersService.AddAccDocumentHeaderAsync(AccDocumentHeader); if (DocumentDate == null) { DocumentDate = await _currencyExchangesService.GetEndFinancialYear(dateDocument); } var accItems = new ObservableCollection <AccDocumentItemGroupedDTO>(_closeProfitLossAccountsService.GetGroupedAccDocumentItems(_appContextService.CurrentFinancialYear)); var accList = AccDocumentItems1.Select((xd, i) => new AccDocumentItem { AccDocumentHeaderId = AccDocumentHeader.AccDocumentHeaderId, SLId = (xd.SLId), DL1Id = (xd.DL1Id), DL2Id = (xd.DL2Id), Description1 = Description1, Description2 = Description2, Credit = (xd.SumDebit - xd.SumCredit) < 0 ? Math.Abs(xd.SumDebit - xd.SumCredit) : 0, Debit = (xd.SumDebit - xd.SumCredit) > 0 ? Math.Abs(xd.SumDebit - xd.SumCredit) : 0 }); _accDocumentItemsService.AddAccDocumentItemsAsync(accList); var remainSum = accList.Sum(di => di.Debit - di.Credit); if (remainSum > 0) { Credit = remainSum; Debit = 0; } else { Debit = Math.Abs(remainSum); Credit = 0; } if (remainSum != 0) { var accItem = new AccDocumentItem { AccDocumentHeaderId = AccDocumentHeader.AccDocumentHeaderId, SLId = (SL.SLId), DL1Id = AccDocumentItem.DL1Id, DL2Id = AccDocumentItem.DL2Id, Description1 = Description1, Description2 = Description2, Credit = Credit, Debit = Debit }; _accDocumentItemsService.AddAccDocumentItemAsync(accItem); } EndFinancialYear = await _currencyExchangesService.GetEndFinancialYear(dateDocument); AccDocumentItems = new ObservableCollection <AccDocumentItemGroupedDTO>(_closeProfitLossAccountsService.GetGroupedAccDocumentItems(_appContextService.CurrentFinancialYear)); AccDocumentItems1 = null; AccDocumentItems1 = new ObservableCollection <AccDocumentItemGroupedDTO>(); // AccDocumentItems1 = new ObservableCollection<AccDocumentItemGroupedDTO>(AccDocumentItems1.Except(selectedAccDocumentItems.Cast<AccDocumentItemGroupedDTO>())); Information("سند با موفقیت ثبت شد"); } } } } } } }
public async void LoadAccDocumentItems() { // AccRow = _accDocumentItemsService.GetLastRow(); // string AccRowCode = AccRow.ToString(); // AccDocumentItem.AccRow = int.Parse($"{AccRowCode}"); //if (AccDocumentItems == null) //{ var temp1 = await _accDocumentItemsService.GetAccDocumentItemsAsync(AccDocumentHeader.AccDocumentHeaderId); _allAccDocumentItems = Mapper.Map <List <AccDocumentItem>, List <EditableAccDocumentItem> >(temp1); AccDocumentItems = new ObservableCollection <EditableAccDocumentItem>(_allAccDocumentItems ?? new List <EditableAccDocumentItem>()); if (AccDocumentHeader != null) { AccDocumentHeader.SumDebit = _allAccDocumentItems.Sum(x => x.Debit); AccDocumentHeader.SumCredit = _allAccDocumentItems.Sum(x => x.Credit); AccDocumentHeader.Difference = Math.Abs(AccDocumentHeader.SumDebit - AccDocumentHeader.SumCredit); } foreach (var x in AccDocumentItems) { x.PropertyChanging += (sender, eventArg) => { var editableAccDocumentItem = sender as EditableAccDocumentItem; if (eventArg.PropertyName == "Debit") { AccDocumentHeader.SumDebit -= editableAccDocumentItem.Debit; } if (eventArg.PropertyName == "Credit") { AccDocumentHeader.SumCredit -= editableAccDocumentItem.Credit; } }; x.PropertyChanged += (sender, eventArg) => { var editableAccDocumentItem = sender as EditableAccDocumentItem; EditableAccDocumentItemChanged?.Invoke(sender, eventArg); if (eventArg.PropertyName == "Debit") { AccDocumentHeader.SumDebit += editableAccDocumentItem.Debit; var temp = Mapper.Map <EditableAccDocumentItem, AccDocumentItem>(editableAccDocumentItem); _accDocumentItemsService.AddAccDocumentItemAsync(temp); } if (eventArg.PropertyName == "Credit") { AccDocumentHeader.SumCredit += editableAccDocumentItem.Credit; var temp = Mapper.Map <EditableAccDocumentItem, AccDocumentItem>(editableAccDocumentItem); _accDocumentItemsService.AddAccDocumentItemAsync(temp); } }; } AccDocumentItems.CollectionChanged += (s, ea) => { AccDocumentItemsCollectionChanged?.Invoke(s, ea); //if (ea.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove) //{ // var oldItems = ea.OldItems.Cast<EditableAccDocumentItem>(); // var ids = oldItems.Select(y => y.AccDocumentHeaderId).ToList(); // var delete = _accDocumentItemsService.DeleteItemsAccDocumentItemAsync(ids); // AccDocumentHeader.SumDebit -= oldItems.Sum(x => x.Debit); // AccDocumentHeader.SumCredit -= oldItems.Sum(x => x.Credit); // return; //} var c = ea.NewItems.Cast <EditableAccDocumentItem>(); c.First().AccRow = AccDocumentItems.Max(x => x.AccRow) + 1; foreach (var x in c) { x.PropertyChanging += (sender, eventArg) => { var editableAccDocumentItem = sender as EditableAccDocumentItem; if (eventArg.PropertyName == "Debit") { AccDocumentHeader.SumDebit -= editableAccDocumentItem.Debit; } if (eventArg.PropertyName == "Credit") { AccDocumentHeader.SumCredit -= editableAccDocumentItem.Credit; } }; x.PropertyChanged += (sender, eventArg) => { var editableAccDocumentItem = sender as EditableAccDocumentItem; EditableAccDocumentItemChanged?.Invoke(sender, eventArg); if (eventArg.PropertyName == "Debit") { if (ea.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add) { AccDocumentHeader.SumDebit += editableAccDocumentItem.Debit; var temp = Mapper.Map <EditableAccDocumentItem, AccDocumentItem>(editableAccDocumentItem); _accDocumentItemsService.AddAccDocumentItemAsync(temp); } } if (eventArg.PropertyName == "Credit") { if (ea.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add) { AccDocumentHeader.SumCredit += editableAccDocumentItem.Credit; var temp = Mapper.Map <EditableAccDocumentItem, AccDocumentItem>(editableAccDocumentItem); _accDocumentItemsService.AddAccDocumentItemAsync(temp); } } if (eventArg.PropertyName == "SelectedCurrency") { if (ea.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add) { if (AccDocumentItem?.SelectedCurrency != null) { AccDocumentItem.ExchangeRate = AccDocumentItem.SelectedCurrency.ParityRate; } } } }; } }; // AccDocumentItems = new ObservableCollection<AccDocumentItem>(); //} if (SLs == null) { _allSLs = await _sLsService.GetSLsActiveAsync(); SLs = new ObservableCollection <SL>(_allSLs); } }