예제 #1
0
 public bool Insert(DomainClasses.Accounting.Account account)
 {
     try
     {
         _accounts.Add(account);
         return(true);
     }
     catch (Exception)
     {
         return(false);
     }
 }
예제 #2
0
        public bool Delete(DomainClasses.Accounting.Account account)
        {
            try
            {
                _accounts.Attach(account);
                _accounts.Remove(account);

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
예제 #3
0
        public virtual async Task <HttpResponseMessage> GetAccountDetailAccounts([FromBody] DomainClasses.Accounting.Account item)
        {
            var organId = Convert.ToInt32(SecurityManager.CurrentUserContext.OrganizationId);

            AccountRule accountRule = new AccountRule();
            var         accounts    = await accountRule.GetAllByOrganIdAsync(organId);

            //accounts = accounts.Where(x => x.Level != AccountType.Tafzeli).ToList();


            accounts = accounts.Where(x => x.ParentId == item.ID).ToList();



            var responseAccountDetailAccounts = new List <ResponseAccountDetailAccount>();

            var responseAccountDetailAccount = new ResponseAccountDetailAccount();

            foreach (var account in accounts)
            {
                var parentAccount = await accountRule.FindAsync(account.ParentId);

                responseAccountDetailAccount = new ResponseAccountDetailAccount();

                responseAccountDetailAccount.Balance     = 0;
                responseAccountDetailAccount.BalanceType = 0;
                responseAccountDetailAccount.Code        = account.Coding;
                responseAccountDetailAccount.credit      = 0;
                responseAccountDetailAccount.debit       = 0;
                responseAccountDetailAccount.Id          = account.ID;
                responseAccountDetailAccount.Name        = account.Name.Replace("(گروه)", "").Replace("(کل)", "").Replace("(معین)", "");
                responseAccountDetailAccount.Node        = new Node()
                {
                    Name = account.Name,
                    Id   = account.ID,
                };


                responseAccountDetailAccounts.Add(responseAccountDetailAccount);
            }



            return(Request.CreateResponse(HttpStatusCode.OK, new { resultCode = (int)ResultCode.Successful, data = responseAccountDetailAccounts }));
        }
예제 #4
0
파일: ItemRule.cs 프로젝트: lulzzz/Zhivar
        public async Task CreateServiceAccountAsync(Item item, int personId)
        {
            AccountRule accountRule = new AccountRule();

            var accounts = await accountRule.GetAllByOrganIdAsync(personId);

            var accountDaramdKhadamat = accounts.Where(x => x.ComplteCoding == "7101").SingleOrDefault();

            var tempAccountDaramdKhadamat = accounts.Where(x => x.ComplteCoding == "7101" + item.Code).SingleOrDefault();

            if (tempAccountDaramdKhadamat == null)
            {
                tempAccountDaramdKhadamat               = new DomainClasses.Accounting.Account();
                tempAccountDaramdKhadamat.Coding        = item.Code;
                tempAccountDaramdKhadamat.ComplteCoding = "7101" + item.Code;
                tempAccountDaramdKhadamat.Level         = ZhivarEnums.AccountType.Tafzeli;
                tempAccountDaramdKhadamat.Name          = item.Name;
                tempAccountDaramdKhadamat.OrganId       = personId;
                tempAccountDaramdKhadamat.ParentId      = accountDaramdKhadamat.ID;

                this.UnitOfWork.RepositoryAsync <DomainClasses.Accounting.Account>().Insert(tempAccountDaramdKhadamat);
                await this.UnitOfWork.SaveChangesAsync();
            }


            var accountSirHazeneh = accounts.Where(x => x.ComplteCoding == "8204").SingleOrDefault();

            var tempAccountSirHazeneh = accounts.Where(x => x.ComplteCoding == "8204" + item.Code).SingleOrDefault();

            if (tempAccountSirHazeneh == null)
            {
                tempAccountSirHazeneh               = new DomainClasses.Accounting.Account();
                tempAccountSirHazeneh.Coding        = item.Code;
                tempAccountSirHazeneh.ComplteCoding = "8204" + item.Code;
                tempAccountSirHazeneh.Level         = ZhivarEnums.AccountType.Tafzeli;
                tempAccountSirHazeneh.Name          = item.Name;
                tempAccountSirHazeneh.OrganId       = personId;
                tempAccountSirHazeneh.ParentId      = accountSirHazeneh.ID;

                this.UnitOfWork.RepositoryAsync <DomainClasses.Accounting.Account>().Insert(tempAccountSirHazeneh);
                await this.UnitOfWork.SaveChangesAsync();
            }
        }
예제 #5
0
        public async Task <HttpResponseMessage> AddCostAccount(CostAccountVM costAccountVM)
        {
            var organId = Convert.ToInt32(SecurityManager.CurrentUserContext.OrganizationId);

            AccountRule accountRule = new AccountRule();
            var         accounts    = await accountRule.GetAllByOrganIdAsync(organId);

            var accountParent = accounts.Where(x => x.ComplteCoding == "8205").SingleOrDefault();
            var account       = new DomainClasses.Accounting.Account();


            account.OrganId = organId;
            account.Coding  = await CreateCostAccountCode(organId);

            account.ComplteCoding = "8205" + account.Coding;
            account.Level         = ZhivarEnums.AccountType.Tafzeli;
            account.Name          = costAccountVM.Name;
            account.ParentId      = accountParent.ID;



            if (costAccountVM.ID.HasValue && costAccountVM.ID > 0)
            {
                account.ID = (int)costAccountVM.ID;
                accountRule.Update(account);
            }
            else
            {
                accountRule.Insert(account);
            }

            await accountRule.SaveChangesAsync();

            costAccountVM.DetailAccount.Node = new Node()
            {
                Id   = account.ID,
                Name = account.Name,
            };

            return(Request.CreateResponse(HttpStatusCode.OK, new { resultCode = ZhivarEnums.ResultCode.Successful, data = costAccountVM }));// RedirectToAction(MVC.cash.ActionNames.Index);
        }
예제 #6
0
        public virtual async Task <HttpResponseMessage> Add(CashVM cashVM)
        {
            var organId = Convert.ToInt32(SecurityManager.CurrentUserContext.OrganizationId);

            var cash = new Cash();

            Mapper.Map(cashVM, cash);

            cash.OrganId = organId;
            AccountRule accountRule = new AccountRule();


            if (cashVM.ID > 0)
            {
                Rule.Update(cash);
            }
            else
            {
                Rule.Insert(cash);

                var accounts = await accountRule.GetAllByOrganIdAsync(organId);

                var accountCash = accounts.Where(x => x.ComplteCoding == "1101").SingleOrDefault();

                DomainClasses.Accounting.Account tempAccountCash = new DomainClasses.Accounting.Account();
                tempAccountCash.Coding        = cash.Code;
                tempAccountCash.ComplteCoding = "1101" + cash.Code;
                tempAccountCash.Level         = ZhivarEnums.AccountType.Tafzeli;
                tempAccountCash.Name          = cash.Name;
                tempAccountCash.OrganId       = organId;
                tempAccountCash.ParentId      = accountCash.ID;

                this.BusinessRule.UnitOfWork.Repository <DomainClasses.Accounting.Account>().Insert(tempAccountCash);
                //await accountRule.SaveChangesAsync();
            }

            await this.BusinessRule.UnitOfWork.SaveChangesAsync();

            return(Request.CreateResponse(HttpStatusCode.OK, new { resultCode = ZhivarEnums.ResultCode.Successful, data = cash }));// RedirectToAction(MVC.cash.ActionNames.Index);
        }
예제 #7
0
        public bool Update(DomainClasses.Accounting.Account account)
        {
            try
            {
                var local = _uow.Set <DomainClasses.Accounting.Account>()
                            .Local
                            .FirstOrDefault(f => f.ID == account.ID);
                if (local != null)
                {
                    _uow.Entry(local).State = EntityState.Detached;
                }

                _accounts.Attach(account);

                _uow.Entry(account).State = EntityState.Modified;
                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
예제 #8
0
        public async Task <HttpResponseMessage> AddContact([FromBody] ContactVM contactVM)
        {
            var organId = Convert.ToInt32(SecurityManager.CurrentUserContext.OrganizationId);

            if (string.IsNullOrEmpty(contactVM.Name))
            {
                throw new OMFValidationException("نام شخص را وارد نمایید.");
            }

            var contact = new Contact();

            if (contactVM.TasvirBlobBase64 != null)
            {
                if (!string.IsNullOrWhiteSpace(contactVM.TasvirBlobBase64) && !string.IsNullOrEmpty(contactVM.TasvirBlobBase64))
                {
                    contactVM.TasvirBlobBase64 = contactVM.TasvirBlobBase64.Replace("data:image/jpeg;base64,", "");
                    contactVM.Blob             = Convert.FromBase64String(contactVM.TasvirBlobBase64);
                }
            }

            contact = Utilities.TranslateHelper.TranslateContactVMToContact(contactVM);



            contact.RegistrationDate = DateTime.Now;

            contact.OrganId = organId;

            //ContactRule contactRule = new ContactRule();
            if (contact.ID > 0)
            {
                Rule.Update(contact);
            }
            else
            {
                Rule.Insert(contact);

                var organColor = Rule.UnitOfWork.RepositoryAsync <Organ_Color>().Queryable().Where(x => x.OrganID == organId).SingleOrDefault();
                if (organColor == null)
                {
                    Rule.UnitOfWork.RepositoryAsync <Organ_Color>().Insert(new Organ_Color()
                    {
                        LastColorIDUsed = contactVM.ColorID,
                        OrganID         = organId,
                    });
                    //  await Rule.UnitOfWork.SaveChangesAsync();
                }
                else
                {
                    organColor.LastColorIDUsed = contactVM.ColorID;
                    Rule.UnitOfWork.RepositoryAsync <Organ_Color>().Update(organColor);
                    //   await Rule.UnitOfWork.SaveChangesAsync();
                }

                AccountRule accountRule = new AccountRule();
                var         accounts    = await accountRule.GetAllByOrganIdAsync(organId);

                var accountDreaftani = accounts.Where(x => x.ComplteCoding == "1104").SingleOrDefault();

                DomainClasses.Accounting.Account tempAccountDreaftani = new DomainClasses.Accounting.Account();
                tempAccountDreaftani.Coding        = contact.Code;
                tempAccountDreaftani.ComplteCoding = "1104" + contact.Code;
                tempAccountDreaftani.Level         = ZhivarEnums.AccountType.Tafzeli;
                tempAccountDreaftani.Name          = contact.Name;
                tempAccountDreaftani.OrganId       = organId;
                tempAccountDreaftani.ParentId      = accountDreaftani.ID;

                this.BusinessRule.UnitOfWork.RepositoryAsync <DomainClasses.Accounting.Account>().Insert(tempAccountDreaftani);

                var accountPardakhtani = accounts.Where(x => x.ComplteCoding == "2101").SingleOrDefault();

                DomainClasses.Accounting.Account tempAccountPardakhtani = new DomainClasses.Accounting.Account();
                tempAccountPardakhtani.Coding        = contact.Code;
                tempAccountPardakhtani.ComplteCoding = "2101" + contact.Code;
                tempAccountPardakhtani.Level         = ZhivarEnums.AccountType.Tafzeli;
                tempAccountPardakhtani.Name          = contact.Name;
                tempAccountPardakhtani.OrganId       = organId;
                tempAccountPardakhtani.ParentId      = accountPardakhtani.ID;

                this.BusinessRule.UnitOfWork.RepositoryAsync <DomainClasses.Accounting.Account>().Insert(tempAccountPardakhtani);


                var accountAsnadDareaftani = accounts.Where(x => x.ComplteCoding == "1105").SingleOrDefault();

                DomainClasses.Accounting.Account tempAccountAsnadDareaftani = new DomainClasses.Accounting.Account();
                tempAccountAsnadDareaftani.Coding        = contact.Code;
                tempAccountAsnadDareaftani.ComplteCoding = "1105" + contact.Code;
                tempAccountAsnadDareaftani.Level         = ZhivarEnums.AccountType.Tafzeli;
                tempAccountAsnadDareaftani.Name          = contact.Name;
                tempAccountAsnadDareaftani.OrganId       = organId;
                tempAccountAsnadDareaftani.ParentId      = accountAsnadDareaftani.ID;

                this.BusinessRule.UnitOfWork.RepositoryAsync <DomainClasses.Accounting.Account>().Insert(tempAccountAsnadDareaftani);
            }
            await this.BusinessRule.UnitOfWork.SaveChangesAsync();

            contactVM.ID = contact.ID;
            contactVM.RegistrationDate = DateTime.Now;


            AccountRule accountRule2 = new AccountRule();
            var         accounts2    = await accountRule2.GetAllByOrganIdAsync(organId);

            var detailAccount = accounts2.Where(x => x.ComplteCoding == "1104" + contact.Code).SingleOrDefault();

            switch (contactVM.TypeAccount)
            {
            case "payables":
            case "inProgress":
            {
                detailAccount = accounts2.Where(x => x.ComplteCoding == "2102" + contact.Code).SingleOrDefault();

                if (detailAccount == null)
                {
                    DomainClasses.Accounting.Account account = new DomainClasses.Accounting.Account()
                    {
                        Coding        = contact.Code,
                        Level         = ZhivarEnums.AccountType.Moen,
                        ObjectState   = OMF.Common.Enums.ObjectState.Added,
                        Name          = contact.Name,
                        ComplteCoding = "2102" + contact.Code,
                        OrganId       = organId,
                        ParentId      = 1525
                    };

                    accountRule2.Insert(account);
                    await accountRule2.SaveChangesAsync();

                    accounts2 = await accountRule2.GetAllByOrganIdAsync(organId);

                    detailAccount = accounts2.Where(x => x.ComplteCoding == "2102" + contact.Code).SingleOrDefault();
                    break;
                }
                break;
            }

            case "receivables":
            {
                detailAccount = accounts2.Where(x => x.ComplteCoding == "1105" + contact.Code).SingleOrDefault();
                break;
            }

            case "creditors":
            {
                detailAccount = accounts2.Where(x => x.ComplteCoding == "2101" + contact.Code).SingleOrDefault();
                break;
            }
            }



            contactVM.DetailAccount = new DetailAccount()
            {
                Id   = detailAccount.ID,
                Code = detailAccount.Coding,
                Name = detailAccount.Name,

                Node = new Node()
                {
                    FamilyTree = "اشخاص",
                    Id         = Convert.ToInt32(contact.Code),
                    Name       = "اشخاص",
                }
            };


            return(Request.CreateResponse(HttpStatusCode.OK, new { resultCode = (int)ZhivarEnums.ResultCode.Successful, data = contactVM }));
        }
예제 #9
0
        public async Task <HttpResponseMessage> GetAllByOrganId([FromBody] string type)
        {
            try
            {
                var organId = Convert.ToInt32(SecurityManager.CurrentUserContext.OrganizationId);

                var list = await Rule.GetAllByOrganIdAsync(Convert.ToInt32(organId));

                // var list2 = list.Select(x => new { ID = x.ID, Title = x.Name, Code = x.Code }).ToList();

                AccountRule accountRule = new AccountRule();
                var         accounts    = await accountRule.GetAllByOrganIdAsync(organId);


                List <ContactVM> contactVMs = new List <ContactVM>();
                var contactVM = new ContactVM();

                var detailAccount = new DomainClasses.Accounting.Account();
                foreach (var item in list)
                {
                    switch (type)
                    {
                    case "debtors":
                    {
                        detailAccount = accounts.Where(x => x.ComplteCoding == "1104" + item.Code).SingleOrDefault();



                        break;
                    }

                    case "payables":
                    case "inProgress":
                    {
                        detailAccount = accounts.Where(x => x.ComplteCoding == "2102" + item.Code).SingleOrDefault();

                        if (detailAccount == null)
                        {
                            DomainClasses.Accounting.Account account = new DomainClasses.Accounting.Account()
                            {
                                Coding        = item.Code,
                                Level         = ZhivarEnums.AccountType.Moen,
                                ObjectState   = OMF.Common.Enums.ObjectState.Added,
                                Name          = item.Name,
                                ComplteCoding = "2102" + item.Code,
                                OrganId       = organId,
                                ParentId      = 1525
                            };

                            accountRule.Insert(account);
                            await accountRule.SaveChangesAsync();

                            accounts = await accountRule.GetAllByOrganIdAsync(organId);

                            detailAccount = accounts.Where(x => x.ComplteCoding == "2102" + item.Code).SingleOrDefault();
                        }


                        break;
                    }

                    case "receivables":
                    {
                        detailAccount = accounts.Where(x => x.ComplteCoding == "1105" + item.Code).SingleOrDefault();
                        break;
                    }

                    case "creditors":
                    {
                        detailAccount = accounts.Where(x => x.ComplteCoding == "2101" + item.Code).SingleOrDefault();
                        break;
                    }


                    default:
                    {
                        detailAccount = accounts.Where(x => x.ComplteCoding == "1104" + item.Code).SingleOrDefault();
                        break;
                    }
                        // break;
                    }

                    contactVM = new ContactVM();

                    contactVM.Code = item.Code;
                    if (detailAccount != null)
                    {
                        contactVM.DetailAccount = new DetailAccount()
                        {
                            Id   = detailAccount.ID,
                            Code = detailAccount.Coding,
                            Name = detailAccount.Name,

                            Node = new Node()
                            {
                                FamilyTree = "اشخاص",
                                Id         = Convert.ToInt32(item.Code),
                                Name       = "اشخاص",
                            }
                        };
                    }

                    contactVM.Address            = item.Address;
                    contactVM.City               = item.City;
                    contactVM.Credits            = item.Credits;
                    contactVM.EconomicCode       = item.EconomicCode;
                    contactVM.Email              = item.Email;
                    contactVM.Fax                = item.Fax;
                    contactVM.ID                 = item.ID;
                    contactVM.IsCustomer         = item.IsCustomer;
                    contactVM.IsEmployee         = item.IsEmployee;
                    contactVM.IsShareHolder      = item.IsShareHolder;
                    contactVM.IsVendor           = item.IsVendor;
                    contactVM.Liability          = item.Liability;
                    contactVM.Mobile             = item.Mobile;
                    contactVM.Name               = item.Name;
                    contactVM.NationalCode       = item.NationalCode;
                    contactVM.Note               = item.Note;
                    contactVM.OrganId            = item.OrganId;
                    contactVM.Phone              = item.Phone;
                    contactVM.PostalCode         = item.PostalCode;
                    contactVM.Rating             = item.Rating;
                    contactVM.RegistrationDate   = item.RegistrationDate;
                    contactVM.RegistrationNumber = item.RegistrationNumber;
                    contactVM.SharePercent       = Convert.ToDecimal(item.SharePercent);
                    contactVM.State              = item.State;
                    contactVM.Website            = item.Website;
                    contactVM.FirstName          = item.FirstName;
                    contactVM.LastName           = item.LastName;
                    contactVMs.Add(contactVM);
                }



                return(Request.CreateResponse(HttpStatusCode.OK, new { resultCode = (int)ZhivarEnums.ResultCode.Successful, data = contactVMs }));
            }
            catch (Exception ex)
            {
                throw;
            }
        }
예제 #10
0
        private async Task <List <Transaction> > RegisterTransactionPay(Document document, PayRecevie payRecevie, int organId)
        {
            List <Transaction> transactions = new List <Transaction>();

            AccountRule accountRule = new AccountRule();
            var         accounts    = await accountRule.GetAllByOrganIdAsync(organId);

            foreach (var item in payRecevie.Items)
            {
                switch (payRecevie.Type)
                {
                case ZhivarEnums.PayRecevieType.AzShakhs:
                {
                    var accountDareaftani = accounts.Where(x => x.ComplteCoding == "2101" + payRecevie.Contact.Code).SingleOrDefault();

                    transactions.Add(new Transaction()
                        {
                            //AccDocument = document,
                            Account   = accountDareaftani,
                            AccountId = accountDareaftani.ID,
                            Amount    = item.Amount,
                            //Contact = payRecevieVM.ContactVM,
                            ContactId   = payRecevie.Contact.ID,
                            Credit      = 0,
                            Debit       = item.Amount,
                            IsCredit    = false,
                            IsDebit     = true,
                            DocumentId  = document.ID,
                            Description = document.Description,
                            Date        = PersianDateUtils.ToDateTime(payRecevie.DisplayDate),
                            DisplayDate = payRecevie.DisplayDate,
                        });
                    break;
                }

                case ZhivarEnums.PayRecevieType.Hazine:
                case ZhivarEnums.PayRecevieType.Sir:
                {
                    var accountDaramd = accounts.Where(x => x.ComplteCoding == payRecevie.Account.ComplteCoding).SingleOrDefault();

                    transactions.Add(new Transaction()
                        {
                            //AccDocument = document,
                            Account   = accountDaramd,
                            AccountId = accountDaramd.ID,
                            Amount    = item.Amount,
                            //Contact = payRecevieVM.ContactVM,
                            //ContactId = payRecevieVM.ContactVM.ID,
                            Credit      = 0,
                            Debit       = item.Amount,
                            IsCredit    = false,
                            IsDebit     = true,
                            DocumentId  = document.ID,
                            Description = document.Description,
                            Date        = PersianDateUtils.ToDateTime(payRecevie.DisplayDate),
                            DisplayDate = payRecevie.DisplayDate
                        });
                    break;
                }
                }

                if (item.Bank != null)
                {
                    var bankAccount = accounts.Where(x => x.ComplteCoding == "1103" + item.Bank.Code).SingleOrDefault();

                    transactions.Add(new Transaction()
                    {
                        //AccDocument = document,
                        Account   = bankAccount,
                        AccountId = bankAccount.ID,
                        Amount    = item.Amount,
                        Credit    = item.Amount,
                        Debit     = 0,

                        DocumentId  = document.ID,
                        IsCredit    = true,
                        IsDebit     = false,
                        Date        = PersianDateUtils.ToDateTime(payRecevie.DisplayDate),
                        DisplayDate = payRecevie.DisplayDate,
                        Description = document.Description,
                    });
                }

                if (item.Cash != null)
                {
                    var cashAccount = accounts.Where(x => x.ComplteCoding == "1101" + item.Cash.Code).SingleOrDefault();

                    transactions.Add(new Transaction()
                    {
                        //AccDocument = document,
                        Account     = cashAccount,
                        AccountId   = cashAccount.ID,
                        Amount      = item.Amount,
                        Credit      = item.Amount,
                        Debit       = 0,
                        Description = document.Description,
                        DocumentId  = document.ID,
                        IsCredit    = true,
                        IsDebit     = false,
                        Date        = PersianDateUtils.ToDateTime(payRecevie.DisplayDate),
                        DisplayDate = payRecevie.DisplayDate
                    });
                }

                if (item.Cheque != null)
                {
                    var asnadDreaftaniAccount = new DomainClasses.Accounting.Account();

                    switch (payRecevie.Type)
                    {
                    case ZhivarEnums.PayRecevieType.AzShakhs:
                    {
                        asnadDreaftaniAccount = accounts.Where(x => x.ComplteCoding == "1105" + payRecevie.Contact.Code).SingleOrDefault();
                    }
                    break;

                    case ZhivarEnums.PayRecevieType.Daramd:
                    case ZhivarEnums.PayRecevieType.Hazine:
                    case ZhivarEnums.PayRecevieType.Sir:
                    {
                        asnadDreaftaniAccount = accounts.Where(x => x.ComplteCoding == "1105" + item.Cheque.Contact.Code).SingleOrDefault();
                    }
                    break;

                    default:
                        break;
                    }

                    transactions.Add(new Transaction()
                    {
                        //AccDocument = document,
                        Account     = asnadDreaftaniAccount,
                        AccountId   = asnadDreaftaniAccount.ID,
                        Amount      = item.Amount,
                        Credit      = item.Amount,
                        Debit       = 0,
                        Description = document.Description,
                        DocumentId  = document.ID,
                        IsCredit    = true,
                        IsDebit     = false,
                        Date        = PersianDateUtils.ToDateTime(payRecevie.DisplayDate),
                        DisplayDate = payRecevie.DisplayDate
                    });
                }
            }

            return(transactions);
        }
예제 #11
0
파일: ItemRule.cs 프로젝트: lulzzz/Zhivar
        public async Task CreateGoodAccountsAsync(Item item, int personId)
        {
            AccountRule accountRule = new AccountRule();

            var accounts = await accountRule.GetAllByOrganIdAsync(personId);

            var accountMojodiKala = accounts.Where(x => x.ComplteCoding == "1108").SingleOrDefault();

            var tempAccountMojodiKala = accounts.Where(x => x.ComplteCoding == "1108" + item.Code).SingleOrDefault();

            if (tempAccountMojodiKala == null)
            {
                tempAccountMojodiKala               = new DomainClasses.Accounting.Account();
                tempAccountMojodiKala.Coding        = item.Code;
                tempAccountMojodiKala.ComplteCoding = "1108" + item.Code;
                tempAccountMojodiKala.Level         = ZhivarEnums.AccountType.Tafzeli;
                tempAccountMojodiKala.Name          = item.Name;
                tempAccountMojodiKala.OrganId       = personId;
                tempAccountMojodiKala.ParentId      = accountMojodiKala.ID;

                this.UnitOfWork.RepositoryAsync <DomainClasses.Accounting.Account>().Insert(tempAccountMojodiKala);
                await this.UnitOfWork.SaveChangesAsync();
            }


            var accountKharidKala = accounts.Where(x => x.ComplteCoding == "5101").SingleOrDefault();

            var tempAccountKharidKala = accounts.Where(x => x.ComplteCoding == "5101" + item.Code).SingleOrDefault();

            if (tempAccountKharidKala == null)
            {
                tempAccountKharidKala = new DomainClasses.Accounting.Account();

                tempAccountKharidKala.Coding        = item.Code;
                tempAccountKharidKala.ComplteCoding = "5101" + item.Code;
                tempAccountKharidKala.Level         = ZhivarEnums.AccountType.Tafzeli;
                tempAccountKharidKala.Name          = item.Name;
                tempAccountKharidKala.OrganId       = personId;
                tempAccountKharidKala.ParentId      = accountKharidKala.ID;

                this.UnitOfWork.RepositoryAsync <DomainClasses.Accounting.Account>().Insert(tempAccountKharidKala);

                await this.UnitOfWork.SaveChangesAsync();
            }


            var accountBargashtKharidKala = accounts.Where(x => x.ComplteCoding == "5102").SingleOrDefault();

            var tempAccountBargashtKharidKala = accounts.Where(x => x.ComplteCoding == "5102" + item.Code).SingleOrDefault();

            if (tempAccountBargashtKharidKala == null)
            {
                tempAccountBargashtKharidKala               = new DomainClasses.Accounting.Account();
                tempAccountBargashtKharidKala.Coding        = item.Code;
                tempAccountBargashtKharidKala.ComplteCoding = "5102" + item.Code;
                tempAccountBargashtKharidKala.Level         = ZhivarEnums.AccountType.Tafzeli;
                tempAccountBargashtKharidKala.Name          = item.Name;
                tempAccountBargashtKharidKala.OrganId       = personId;
                tempAccountBargashtKharidKala.ParentId      = accountBargashtKharidKala.ID;

                this.UnitOfWork.RepositoryAsync <DomainClasses.Accounting.Account>().Insert(tempAccountBargashtKharidKala);
                await this.UnitOfWork.SaveChangesAsync();
            }



            var accountForoshKala = accounts.Where(x => x.ComplteCoding == "6101").SingleOrDefault();

            var tempAccountAccountForoshKala = accounts.Where(x => x.ComplteCoding == "6101" + item.Code).SingleOrDefault();

            if (tempAccountAccountForoshKala == null)
            {
                tempAccountAccountForoshKala               = new DomainClasses.Accounting.Account();
                tempAccountAccountForoshKala.Coding        = item.Code;
                tempAccountAccountForoshKala.ComplteCoding = "6101" + item.Code;
                tempAccountAccountForoshKala.Level         = ZhivarEnums.AccountType.Tafzeli;
                tempAccountAccountForoshKala.Name          = item.Name;
                tempAccountAccountForoshKala.OrganId       = personId;
                tempAccountAccountForoshKala.ParentId      = accountForoshKala.ID;

                this.UnitOfWork.RepositoryAsync <DomainClasses.Accounting.Account>().Insert(tempAccountAccountForoshKala);
                await this.UnitOfWork.SaveChangesAsync();
            }


            var accountBargashtForoshKala = accounts.Where(x => x.ComplteCoding == "6102").SingleOrDefault();

            var tempAccountBargashtForoshKala = accounts.Where(x => x.ComplteCoding == "6102" + item.Code).SingleOrDefault();

            if (tempAccountBargashtForoshKala == null)
            {
                tempAccountBargashtForoshKala               = new DomainClasses.Accounting.Account();
                tempAccountBargashtForoshKala.Coding        = item.Code;
                tempAccountBargashtForoshKala.ComplteCoding = "6102" + item.Code;
                tempAccountBargashtForoshKala.Level         = ZhivarEnums.AccountType.Tafzeli;
                tempAccountBargashtForoshKala.Name          = item.Name;
                tempAccountBargashtForoshKala.OrganId       = personId;
                tempAccountBargashtForoshKala.ParentId      = accountBargashtForoshKala.ID;

                this.UnitOfWork.RepositoryAsync <DomainClasses.Accounting.Account>().Insert(tempAccountBargashtForoshKala);

                await this.UnitOfWork.SaveChangesAsync();
            }
        }
예제 #12
0
        public virtual async Task <HttpResponseMessage> AddContact([FromBody] ContactVM contactVM)
        {
            var userId = SecurityManager.CurrentUserContext.UserId;

            PersonRule personRule = new PersonRule();
            var        person     = personRule.GetPersonByUserId(Convert.ToInt32(userId));

            if (!ModelState.IsValid)
            {
                return(Request.CreateResponse(HttpStatusCode.OK, new { resultCode = (int)Enums.ResultCode.Exception, data = contactVM }));
            }

            var contact = new Contact();

            contact = Utilities.TranslateHelper.TranslateContactVMToContact(contactVM);

            contact.RegistrationDate = DateTime.Now;

            contact.OrganId = person.ID;

            //ContactRule contactRule = new ContactRule();
            if (contact.ID > 0)
            {
                Rule.Update(contact);
            }
            else
            {
                Rule.Insert(contact);

                AccountRule accountRule = new AccountRule();
                var         accounts    = await accountRule.GetAllByOrganIdAsync(person.ID);

                var accountDreaftani = accounts.Where(x => x.ComplteCoding == "1104").SingleOrDefault();

                DomainClasses.Accounting.Account tempAccountDreaftani = new DomainClasses.Accounting.Account();
                tempAccountDreaftani.Coding        = contact.Code;
                tempAccountDreaftani.ComplteCoding = "1104" + contact.Code;
                tempAccountDreaftani.Level         = Enums.AccountType.Tafzeli;
                tempAccountDreaftani.Name          = contact.Name;
                tempAccountDreaftani.OrganId       = person.ID;
                tempAccountDreaftani.ParentId      = accountDreaftani.ID;

                this.BusinessRule.UnitOfWork.RepositoryAsync <DomainClasses.Accounting.Account>().Insert(tempAccountDreaftani);

                var accountPardakhtani = accounts.Where(x => x.ComplteCoding == "2101").SingleOrDefault();

                DomainClasses.Accounting.Account tempAccountPardakhtani = new DomainClasses.Accounting.Account();
                tempAccountPardakhtani.Coding        = contact.Code;
                tempAccountPardakhtani.ComplteCoding = "2101" + contact.Code;
                tempAccountPardakhtani.Level         = Enums.AccountType.Tafzeli;
                tempAccountPardakhtani.Name          = contact.Name;
                tempAccountPardakhtani.OrganId       = person.ID;
                tempAccountPardakhtani.ParentId      = accountPardakhtani.ID;

                this.BusinessRule.UnitOfWork.RepositoryAsync <DomainClasses.Accounting.Account>().Insert(tempAccountPardakhtani);


                var accountAsnadDareaftani = accounts.Where(x => x.ComplteCoding == "1105").SingleOrDefault();

                DomainClasses.Accounting.Account tempAccountAsnadDareaftani = new DomainClasses.Accounting.Account();
                tempAccountAsnadDareaftani.Coding        = contact.Code;
                tempAccountAsnadDareaftani.ComplteCoding = "1105" + contact.Code;
                tempAccountAsnadDareaftani.Level         = Enums.AccountType.Tafzeli;
                tempAccountAsnadDareaftani.Name          = contact.Name;
                tempAccountAsnadDareaftani.OrganId       = person.ID;
                tempAccountAsnadDareaftani.ParentId      = accountAsnadDareaftani.ID;

                this.BusinessRule.UnitOfWork.RepositoryAsync <DomainClasses.Accounting.Account>().Insert(tempAccountAsnadDareaftani);
            }
            await this.BusinessRule.UnitOfWork.SaveChangesAsync();

            contactVM.ID = contact.ID;
            contactVM.RegistrationDate = DateTime.Now;
            return(Request.CreateResponse(HttpStatusCode.OK, new { resultCode = (int)Enums.ResultCode.Successful, data = contactVM }));
        }
예제 #13
0
        private async Task CreateShareHolderAccounts(int organId, int contactId)
        {
            ContactRule contactRule = new ContactRule();
            var         contact     = await contactRule.FindAsync(contactId);

            AccountRule accountRule = new AccountRule();
            var         accounts    = await accountRule.GetAllByOrganIdAsync(organId);

            var accountShareholder = accounts.Where(x => x.ComplteCoding == "3101").SingleOrDefault();

            DomainClasses.Accounting.Account tempAccountShareholder = new DomainClasses.Accounting.Account();

            tempAccountShareholder = accounts.Where(x => x.ComplteCoding == "3101" + contact.Code).SingleOrDefault();

            if (tempAccountShareholder == null)
            {
                tempAccountShareholder = new DomainClasses.Accounting.Account();

                tempAccountShareholder.Coding        = contact.Code;
                tempAccountShareholder.ComplteCoding = "3101" + contact.Code;
                tempAccountShareholder.Level         = ZhivarEnums.AccountType.Tafzeli;
                tempAccountShareholder.Name          = contact.Name;
                tempAccountShareholder.OrganId       = organId;
                tempAccountShareholder.ParentId      = accountShareholder.ID;

                accountRule.Insert(tempAccountShareholder);
            }

            accountShareholder     = accounts.Where(x => x.ComplteCoding == "3102").SingleOrDefault();
            tempAccountShareholder = new DomainClasses.Accounting.Account();

            tempAccountShareholder = accounts.Where(x => x.ComplteCoding == "3102" + contact.Code).SingleOrDefault();

            if (tempAccountShareholder == null)
            {
                tempAccountShareholder = new DomainClasses.Accounting.Account();

                tempAccountShareholder.Coding        = contact.Code;
                tempAccountShareholder.ComplteCoding = "3102" + contact.Code;
                tempAccountShareholder.Level         = ZhivarEnums.AccountType.Tafzeli;
                tempAccountShareholder.Name          = contact.Name;
                tempAccountShareholder.OrganId       = organId;
                tempAccountShareholder.ParentId      = accountShareholder.ID;

                accountRule.Insert(tempAccountShareholder);
            }

            accountShareholder     = accounts.Where(x => x.ComplteCoding == "3103").SingleOrDefault();
            tempAccountShareholder = new DomainClasses.Accounting.Account();

            tempAccountShareholder = accounts.Where(x => x.ComplteCoding == "3103" + contact.Code).SingleOrDefault();

            if (tempAccountShareholder == null)
            {
                tempAccountShareholder = new DomainClasses.Accounting.Account();

                tempAccountShareholder.Coding        = contact.Code;
                tempAccountShareholder.ComplteCoding = "3103" + contact.Code;
                tempAccountShareholder.Level         = ZhivarEnums.AccountType.Tafzeli;
                tempAccountShareholder.Name          = contact.Name;
                tempAccountShareholder.OrganId       = organId;
                tempAccountShareholder.ParentId      = accountShareholder.ID;

                accountRule.Insert(tempAccountShareholder);
            }

            accountShareholder     = accounts.Where(x => x.ComplteCoding == "3104").SingleOrDefault();
            tempAccountShareholder = new DomainClasses.Accounting.Account();

            tempAccountShareholder = accounts.Where(x => x.ComplteCoding == "3104" + contact.Code).SingleOrDefault();

            if (tempAccountShareholder == null)
            {
                tempAccountShareholder = new DomainClasses.Accounting.Account();

                tempAccountShareholder.Coding        = contact.Code;
                tempAccountShareholder.ComplteCoding = "3104" + contact.Code;
                tempAccountShareholder.Level         = ZhivarEnums.AccountType.Tafzeli;
                tempAccountShareholder.Name          = contact.Name;
                tempAccountShareholder.OrganId       = organId;
                tempAccountShareholder.ParentId      = accountShareholder.ID;

                accountRule.Insert(tempAccountShareholder);
            }

            accountShareholder     = accounts.Where(x => x.ComplteCoding == "3105").SingleOrDefault();
            tempAccountShareholder = new DomainClasses.Accounting.Account();

            tempAccountShareholder = accounts.Where(x => x.ComplteCoding == "3105" + contact.Code).SingleOrDefault();

            if (tempAccountShareholder == null)
            {
                tempAccountShareholder = new DomainClasses.Accounting.Account();

                tempAccountShareholder.Coding        = contact.Code;
                tempAccountShareholder.ComplteCoding = "3105" + contact.Code;
                tempAccountShareholder.Level         = ZhivarEnums.AccountType.Tafzeli;
                tempAccountShareholder.Name          = contact.Name;
                tempAccountShareholder.OrganId       = organId;
                tempAccountShareholder.ParentId      = accountShareholder.ID;

                accountRule.Insert(tempAccountShareholder);
            }
        }
예제 #14
0
        public virtual async Task <HttpResponseMessage> Add(ShareholderVM shareholderVM)
        {
            var organId = Convert.ToInt32(SecurityManager.CurrentUserContext.OrganizationId);

            if (!ModelState.IsValid)
            {
                return(Request.CreateResponse(HttpStatusCode.OK, new { resultCode = (int)ZhivarEnums.ResultCode.ValidationError, data = "" }));
            }

            var shareholder = new Shareholder();

            Mapper.Map(shareholderVM, shareholder);

            shareholder.OrganId = organId;

            //ShareholderRule shareholderRule = new ShareholderRule();

            if (shareholderVM.ID.HasValue)
            {
                Rule.Update(shareholder);
            }
            else
            {
                Rule.Insert(shareholder);

                AccountRule accountRule = new AccountRule();
                var         accounts    = await accountRule.GetAllByOrganIdAsync(organId);

                var accountShareholder = accounts.Where(x => x.ComplteCoding == "1103").SingleOrDefault();

                DomainClasses.Accounting.Account tempAccountShareholder = new DomainClasses.Accounting.Account();
                tempAccountShareholder.Coding        = shareholder.Contact.Code;
                tempAccountShareholder.ComplteCoding = "1103" + shareholder.Contact.Code;
                tempAccountShareholder.Level         = ZhivarEnums.AccountType.Tafzeli;
                tempAccountShareholder.Name          = shareholder.Contact.Name;
                tempAccountShareholder.OrganId       = organId;
                tempAccountShareholder.ParentId      = accountShareholder.ID;

                this.BusinessRule.UnitOfWork.Repository <DomainClasses.Accounting.Account>().Insert(tempAccountShareholder);
                //accountRule.Insert(tempAccountShareholder);



                var accountAsnadPardakhtani = accounts.Where(x => x.ComplteCoding == "2102").SingleOrDefault();

                DomainClasses.Accounting.Account tempAccountAsnadPardakhtani = new DomainClasses.Accounting.Account();
                tempAccountAsnadPardakhtani.Coding        = shareholder.Contact.Code;
                tempAccountAsnadPardakhtani.ComplteCoding = "2102" + shareholder.Contact.Code;
                tempAccountAsnadPardakhtani.Level         = ZhivarEnums.AccountType.Tafzeli;
                tempAccountAsnadPardakhtani.Name          = shareholder.Contact.Name;
                tempAccountAsnadPardakhtani.OrganId       = organId;
                tempAccountAsnadPardakhtani.ParentId      = accountAsnadPardakhtani.ID;

                this.BusinessRule.UnitOfWork.Repository <DomainClasses.Accounting.Account>().Insert(tempAccountAsnadPardakhtani);
                //accountRule.Insert(tempAccountAsnadPardakhtani);



                var accountChequeDarJareanVosol = accounts.Where(x => x.ComplteCoding == "1106").SingleOrDefault();

                DomainClasses.Accounting.Account tempAccountChequeDarJareanVosol = new DomainClasses.Accounting.Account();
                tempAccountChequeDarJareanVosol.Coding        = shareholder.Contact.Code;
                tempAccountChequeDarJareanVosol.ComplteCoding = "1106" + shareholder.Contact.Code;
                tempAccountChequeDarJareanVosol.Level         = ZhivarEnums.AccountType.Tafzeli;
                tempAccountChequeDarJareanVosol.Name          = shareholder.Contact.Name;
                tempAccountChequeDarJareanVosol.OrganId       = organId;
                tempAccountChequeDarJareanVosol.ParentId      = accountChequeDarJareanVosol.ID;

                //accountRule.Insert(tempAccountChequeDarJareanVosol);
                this.BusinessRule.UnitOfWork.Repository <DomainClasses.Accounting.Account>().Insert(tempAccountChequeDarJareanVosol);
            }

            await this.BusinessRule.UnitOfWork.SaveChangesAsync();

            return(Request.CreateResponse(HttpStatusCode.OK, new { resultCode = (int)ZhivarEnums.ResultCode.Successful, data = shareholder }));
        }
예제 #15
0
        public async Task <List <Transaction> > RegisterTransaction(Document document, CostVM cost, int organId)
        {
            AccountRule accountRule = new AccountRule();
            var         accounts    = await accountRule.GetAllByOrganIdAsync(organId);

            string contactCode             = "2101" + cost.Contact.Code;
            var    accountHesabPardakhtani = accounts.Where(x => x.ComplteCoding == contactCode).SingleOrDefault();

            List <Transaction> transactions = new List <Transaction>();

            transactions.Add(new Transaction()
            {
                AccountId  = accountHesabPardakhtani.ID,
                ContactId  = cost.Contact.ID,
                DocumentId = document.ID,
                CostId     = cost.ID,
                //AccDocument = document,
                Account = accountHesabPardakhtani,
                Amount  = cost.Sum,
                //Contact = cost.Contact,
                //Cost = cost,
                IsDebit     = false,
                IsCredit    = true,
                Debit       = 0,
                Credit      = cost.Sum,
                Description = document.Description,
                RowNumber   = 1,
                DisplayDate = document.DisplayDate,
                Date        = PersianDateUtils.ToDateTime(document.DisplayDate),
            });


            foreach (var item in cost.CostItems)
            {
                var accoubtItem = new DomainClasses.Accounting.Account();

                accoubtItem = accounts.Where(x => x.ComplteCoding == "8205").SingleOrDefault();

                transactions.Add(new Transaction()
                {
                    AccountId  = accoubtItem.ID,
                    ContactId  = cost.Contact.ID,
                    DocumentId = document.ID,
                    CostId     = cost.ID,
                    //AccDocument = document,
                    Account = accoubtItem,
                    Amount  = item.Sum,
                    //Contact = cost.Contact,
                    //Cost = cost,
                    IsDebit     = true,
                    IsCredit    = false,
                    Debit       = item.Sum,
                    Credit      = 0,
                    Description = item.Description,
                    //RowNumber = 1,
                    DisplayDate = document.DisplayDate,
                    Date        = Utilities.PersianDateUtils.ToDateTime(document.DisplayDate),
                });
            }


            return(transactions);
        }