Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }