Пример #1
0
        private async Task <AccountTafzili> CalcAccountByCodeTafziliAsync(int organId, string code)
        {
            var organId2 = Convert.ToInt32(SecurityManager.CurrentUserContext.OrganizationId);

            decimal         amount          = 0;
            TransactionRule transactionRule = new TransactionRule();
            var             transactions    = await transactionRule.GetAllByOrganIdAsync(organId2);

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

            var operatinIncomeAccount = accounts.Where(x => x.ComplteCoding == code).SingleOrDefault();



            var selected = transactions.Where(a => a.AccountId == operatinIncomeAccount.ID).ToList();

            AccountTafzili accountTafzili = new AccountTafzili();

            if (selected.Any())
            {
                accountTafzili.sumCredit = selected.Sum(x => x.Credit);
                accountTafzili.sumDebit  = selected.Sum(x => x.Debit);
                accountTafzili.sumTotal  = accountTafzili.sumDebit - accountTafzili.sumCredit;
            }

            return(accountTafzili);
        }
 internal string SaveTransactionRule(TransactionRule rule, string BankCode)
 {
     try
     {
         string CreateDate = DateTime.Now.ToString("yyyy-MM-dd");
         string ModifyDate = CreateDate;
         command = CbDatabase.GetStoredProcCommand("TransactionRules_Update",
                                                   rule.Id,
                                                   rule.RuleName,
                                                   rule.RuleCode,
                                                   rule.RuleCode,
                                                   rule.RuleName,
                                                   rule.UserId,
                                                   rule.Description,
                                                   rule.MinimumAmount,
                                                   rule.MaximumAmount,
                                                   rule.IsActive,
                                                   rule.BankCode,
                                                   rule.BranchCode,
                                                   rule.ModifiedOn,
                                                   rule.ModifiedBy,
                                                   rule.Approver
                                                   );
         DataTable datatable = CbDatabase.ExecuteDataSet(command).Tables[1];
         return(datatable.Rows[0][0].ToString());
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Пример #3
0
        public void Add(TransactionRule model)
        {
            var entity = MapToTable(model);

            ValidateIfExists(entity);
            ruleRepository.Add(entity);

            ApplyRuleToExistingTransactions(entity);
        }
Пример #4
0
        public virtual async Task <HttpResponseMessage> GetAllByOrganId()
        {
            var organId = Convert.ToInt32(SecurityManager.CurrentUserContext.OrganizationId);

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

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

            CashVM        cashVM  = new CashVM();
            List <CashVM> cashVMs = new List <CashVM>();

            foreach (var item in list)
            {
                var cashAccount = accounts.Where(x => x.ComplteCoding == "1101" + item.Code).SingleOrDefault();

                TransactionRule transactionRule = new TransactionRule();
                BalanceModelVM  transaction     = await transactionRule.GetBalanceAccountAsync(cashAccount.ID);

                cashVM = new CashVM();

                cashVM.Balance       = item.Balance;
                cashVM.Code          = item.Code;
                cashVM.DetailAccount = new DetailAccount()
                {
                    Accounts = new List <AccountVM>()
                    {
                        new AccountVM()
                        {
                            Balance     = transaction.Balance,
                            BalanceType = transaction.BalanceType,
                            Code        = cashAccount.Coding,
                            Coding      = cashAccount.Coding,
                            credit      = transaction.Credit,
                            debit       = transaction.Debit,
                            ID          = cashAccount.ID,
                            ParentId    = cashAccount.ParentId,
                            Name        = cashAccount.Name,
                        }
                    },
                    Code        = cashAccount.Coding,
                    Id          = cashAccount.ID,
                    Balance     = transaction.Balance,
                    credit      = transaction.Credit,
                    debit       = transaction.Debit,
                    BalanceType = transaction.BalanceType,
                    Name        = cashAccount.Name,
                };
                cashVM.ID      = item.ID;
                cashVM.Name    = item.Name;
                cashVM.OrganId = item.OrganId;

                cashVMs.Add(cashVM);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, new { resultCode = (int)ZhivarEnums.ResultCode.Successful, data = cashVMs }));
        }
Пример #5
0
 private BankTransactionRule MapToTable(TransactionRule model)
 {
     return(new BankTransactionRule()
     {
         RuleID = model.RuleID,
         Description = model.Description,
         Tag = model.Tag,
         TagGroup = model.TagGroup,
         IsTransfer = model.IsTransfer
     });
 }
Пример #6
0
    public bool Exists(Object obj)
    {
        string className = GetClassNameByReflection(obj);

        switch (className.ToUpper())
        {
        case "ACCOUNTTYPE":
            AccountType type = obj as AccountType;
            return(TrueIfExists(className, type.AccTypeCode, type.BankCode));

        case "BANK":
            Bank bank = obj as Bank;
            return(TrueIfExists(className, bank.BankCode, bank.BankCode));

        case "BANKACCOUNT":
            BankAccount bankAcc = obj as BankAccount;
            return(TrueIfExists(className, bankAcc.AccountNumber, bankAcc.BankCode));

        case "BANKBRANCH":
            BankBranch branch = obj as BankBranch;
            return(TrueIfExists(className, branch.BranchCode, branch.BankCode));

        case "BANKCHARGE":
            BankCharge charge = obj as BankCharge;
            return(TrueIfExists(className, charge.ChargeCode, charge.BankCode));

        case "BANKUSER":
            BankUser user = obj as BankUser;
            return(TrueIfExists(className, user.Id, user.BankCode));

        case "CHARGETYPE":
            ChargeType chargeType = obj as ChargeType;
            return(TrueIfExists(className, chargeType.ChargeTypeCode, chargeType.BankCode));

        case "CURRENCY":
            Currency currency = obj as Currency;
            return(TrueIfExists(className, currency.CurrencyCode, currency.BankCode));

        case "PAYMENTTYPE":
            PaymentType payType = obj as PaymentType;
            return(TrueIfExists(className, payType.PaymentTypeCode, payType.BankCode));

        case "TRANSACTIONCATEGORY":
            TransactionCategory tranCategory = obj as TransactionCategory;
            return(TrueIfExists(className, tranCategory.TranCategoryCode, tranCategory.BankCode));

        case "TRANSACTIONRULE":
            TransactionRule rule = obj as TransactionRule;
            return(TrueIfExists(className, rule.RuleCode, rule.BankCode));

        default:
            return(false);
        }
    }
Пример #7
0
    public Result SaveTransactionRule(TransactionRule rule, string BankCode)
    {
        Result result = new Result();

        result.RequestId = rule.Id;
        string Id = dh.SaveTransactionRule(rule, BankCode);

        result.StatusCode = "0";
        result.StatusDesc = "SUCCESS";
        result.PegPayId   = Id;
        return(result);
    }
    public Result SaveTransactionRule(TransactionRule rule, string BankCode)
    {
        Result result = new Result();

        result.RequestId = rule.Id;
        LogChangesInAuditLog(rule, rule.RuleCode, rule.BankCode, rule.ModifiedBy);
        string Id = dh.SaveTransactionRule(rule, BankCode);

        result.StatusCode = "0";
        result.StatusDesc = "SUCCESS";
        result.PegPayId   = Id;
        return(result);
    }
    private TransactionRule GetTransactionRule()
    {
        TransactionRule rule = new TransactionRule();

        rule.Approver      = ddApprover.SelectedValue;
        rule.BankCode      = ddBank.SelectedValue;
        rule.BranchCode    = ddBank.SelectedValue;
        rule.Description   = "";
        rule.Id            = "";
        rule.IsActive      = ddIsActive.Text;
        rule.MaximumAmount = txtMaxAmount.Text;
        rule.MinimumAmount = txtMinAmount.Text;
        rule.ModifiedBy    = user.Id;
        rule.RuleCode      = txtRuleCode.Text;
        rule.RuleName      = txtRuleName.Text;
        rule.UserId        = txtUserId.Text;
        return(rule);
    }
Пример #10
0
        public async Task <HttpResponseMessage> LoadCostTransObj([FromBody] int id)
        {
            try
            {
                var organId = Convert.ToInt32(SecurityManager.CurrentUserContext.OrganizationId);

                var cost = await Rule.FindAsync(id);

                CostTransObj costTransObj = new CostTransObj();

                costTransObj.cost      = Mapper.Map <CostVM>(cost);
                costTransObj.costItems = costTransObj.cost.CostItems;
                TransactionRule transactionRule = new TransactionRule();
                costTransObj.payments = await transactionRule.GetAllByCostIdAsync(id);

                for (int i = 0; i < costTransObj.costItems.Count; i++)
                {
                    costTransObj.costItems[i].Item = await this.BusinessRule.UnitOfWork.RepositoryAsync <DomainClasses.Accounting.Account>().FindAsync(costTransObj.costItems[i].ItemId);
                }

                ContactRule contactRule = new ContactRule();
                costTransObj.cost.Contact = Mapper.Map <ContactVM>(await contactRule.FindAsync(cost.ContactId));
                CashRule cashRule = new CashRule();
                var      cashes   = await cashRule.GetAllByOrganIdAsync(Convert.ToInt32(organId));

                costTransObj.cashes = Mapper.Map <List <CashVM> >(cashes);

                BankRule bankRule = new BankRule();
                var      banks    = await bankRule.GetAllByOrganIdAsync(Convert.ToInt32(organId));

                costTransObj.banks = Mapper.Map <List <BankVM> >(banks);


                return(Request.CreateResponse(HttpStatusCode.OK, new { resultCode = ZhivarEnums.ResultCode.Successful, data = costTransObj }));
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Пример #11
0
        private async Task <decimal> CalcBalanceBank(string code, int organId)
        {
            AccountRule accountRule = new AccountRule();
            var         accounts    = await accountRule.GetAllByOrganIdAsync(organId);

            var account = accounts.Find(x => x.ComplteCoding == "1103" + code || x.ComplteCoding == "2102" + code || x.ComplteCoding == "1106" + code);

            TransactionRule transactionRule = new TransactionRule();
            var             transactions    = await transactionRule.GetAllByOrganIdAsync(organId);

            transactions = transactions.FindAll(x => x.AccountId == account.ID);
            decimal credit = 0;
            decimal debit  = 0;

            foreach (var item in transactions)
            {
                credit += item.Credit;
                debit  += item.Debit;
            }

            return(debit - credit);
        }
Пример #12
0
    public Result SaveTransactionRule(TransactionRule rule, string BankCode, string Password)
    {
        Result result = new Result();

        try
        {
            if (rule.IsValid(BankCode, Password))
            {
                result = bll.SaveTransactionRule(rule, BankCode);
            }
            else
            {
                result.StatusCode = rule.StatusCode;
                result.StatusDesc = rule.StatusDesc;
            }
        }
        catch (Exception ex)
        {
            result.StatusCode = "100";
            result.StatusDesc = "FAILED: " + ex.Message;
        }
        return(result);
    }
 protected void btnSubmit_Click(object sender, EventArgs e)
 {
     try
     {
         TransactionRule rule   = GetTransactionRule();
         Result          result = client.SaveTransactionRule(rule, user.BankCode, bll.BankPassword);
         if (result.StatusCode == "0")
         {
             string msg = "SUCCESS: TRANSACTION RULE CREATED WITH RULECODE = [" + result.PegPayId + "]";
             bll.ShowMessage(lblmsg, msg, false);
         }
         else
         {
             string msg = result.StatusDesc;
             bll.ShowMessage(lblmsg, msg, true);
         }
     }
     catch (Exception ex)
     {
         string msg = "FAILED: " + ex.Message;
         bll.ShowMessage(lblmsg, msg, true);
     }
 }
Пример #14
0
        private async Task <ResponseAccountBalance> CalcAccountByCodeAsync(int organId, string code, BalanceType balanceType)
        {
            var organId2 = Convert.ToInt32(SecurityManager.CurrentUserContext.OrganizationId);

            var     responseAccountBalance = new ResponseAccountBalance();
            decimal amount = 0;

            TransactionRule transactionRule = new TransactionRule();
            var             transactions    = await transactionRule.GetAllByOrganIdAsync(organId);

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

            var operatinIncomeAccount = accounts.Where(x => x.ComplteCoding == code).SingleOrDefault();

            var accountsMoienQuery = accounts.AsQueryable().Where(x => x.ParentId == operatinIncomeAccount.ID);

            var allAccountQuery = accounts.AsQueryable();

            List <int> childIds = (from account in accountsMoienQuery
                                   select account.ID).ToList();

            List <int> childChildIds = (from account in allAccountQuery
                                        join accountsMoien in accountsMoienQuery
                                        on account.ParentId equals accountsMoien.ID
                                        select account.ID).ToList();


            var selected = transactions.Where(a => a.AccountId == operatinIncomeAccount.ID || childIds.Contains(a.AccountId) || childChildIds.Contains(a.AccountId)).ToList();

            responseAccountBalance.Type = 2;
            if (selected.Any())
            {
                var credit = selected.Sum(x => x.Credit);
                var debit  = selected.Sum(x => x.Debit);

                if (balanceType == BalanceType.Debit)
                {
                    amount = debit - credit;

                    if (amount > 0)
                    {
                        responseAccountBalance.Type = 0;
                    }
                    else
                    {
                        responseAccountBalance.Type = 1;
                    }
                }
                else if (balanceType == BalanceType.Credit)
                {
                    amount = credit - debit;
                    if (amount < 0)
                    {
                        responseAccountBalance.Type = 0;
                    }
                    else
                    {
                        responseAccountBalance.Type = 1;
                    }
                }

                responseAccountBalance.Balance = Math.Abs(amount);
            }

            return(responseAccountBalance);
        }
    public BaseObject GetById(string className, string objectId, string bankCode, string Password)
    {
        BaseObject result = new BaseObject();

        if (string.IsNullOrEmpty(className))
        {
            result.StatusCode = "100";
            result.StatusDesc = "PLEASE SUPPLY THE CLASS NAME";
            return(result);
        }
        else if (string.IsNullOrEmpty(objectId))
        {
            result.StatusCode = "100";
            result.StatusDesc = "PLEASE SUPPLY THE OBJECT ID. i.e THE UNIQUE IDENTIFIER OF THIS OBJECT";
            return(result);
        }
        else if (className.ToUpper() == "BANKUSER" || className.ToUpper() == "BANKTELLER")
        {
            result = GetBankUser(objectId, bankCode, Password);
            return(result);
        }
        else if (className.ToUpper() == "BANKCUSTOMER")
        {
            result = GetBankCustomer(objectId, bankCode, Password);
            return(result);
        }
        else if (className.ToUpper() == "BANK")
        {
            result = dh.GetBankById(objectId);
            return(result);
        }
        else if (className.ToUpper() == "BANKBRANCH")
        {
            BankBranch branch = dh.GetBankBranchById(objectId, bankCode);
            result = branch;
            return(result);
        }
        else if (className.ToUpper() == "USERTYPE")
        {
            UserType user = dh.GetUserTypeById(objectId, bankCode);
            result = user;
            return(result);
        }
        else if (className.ToUpper() == "CUSTOMERTYPE")
        {
            UserType user = dh.GetUserTypeById(objectId, bankCode);
            result = user;
            return(result);
        }
        else if (className.ToUpper() == "TRANSACTIONCATEGORY")
        {
            TransactionCategory category = dh.GetTransactionCategoryById(objectId, bankCode);
            result = category;
            return(result);
        }
        else if (className.ToUpper() == "BANKACCOUNT")
        {
            BankAccount category = dh.GetBankAccountById(objectId, bankCode);
            result = category;
            return(result);
        }
        else if (className.ToUpper() == "ACCOUNTTYPE")
        {
            AccountType category = dh.GetAccountTypeById(objectId, bankCode);
            result = category;
            return(result);
        }
        else if (className.ToUpper() == "PAYMENTTYPE")
        {
            PaymentType category = dh.GetPaymentTypeById(objectId, bankCode);
            result = category;
            return(result);
        }
        else if (className.ToUpper() == "BANKCHARGE")
        {
            BankCharge category = dh.GetBankChargeById(objectId, bankCode);
            result = category;
            return(result);
        }
        else if (className.ToUpper() == "CHARGETYPE")
        {
            ChargeType category = dh.GetChargeTypeById(objectId, bankCode);
            result = category;
            return(result);
        }
        else if (className.ToUpper() == "CURRENCY")
        {
            Currency category = dh.GetCurrencyCodeById(objectId, bankCode);
            result = category;
            return(result);
        }
        else if (className.ToUpper() == "ACCESSRULE")
        {
            AccessRule rule = dh.GetAccessRuleById(objectId, bankCode);
            result = rule;
            return(result);
        }
        else if (className.ToUpper() == "TRANSACTIONRULE")
        {
            TransactionRule rule = dh.GetTransactionRuleById(objectId, bankCode);
            result = rule;
            return(result);
        }
        else
        {
            return(result);
        }
    }
Пример #16
0
        public virtual async Task <HttpResponseMessage> ChangeChequeStatus([FromBody] ChequesAndStatsVM chequesAndStatsVM)
        {
            var organId = Convert.ToInt32(SecurityManager.CurrentUserContext.OrganizationId);

            ChequeVM chequeVM = new ChequeVM();

            switch (chequesAndStatsVM.change)
            {
            // وصول چک پرداختی
            case "PaidChequeReceipt":
            {
                chequesAndStatsVM.description = " وصول چک پرداختی";
                var doucument = await CreateDocumentPaidChequeReceipt(chequesAndStatsVM, organId);

                ChequeRule chequeRule = new ChequeRule();
                var        cheque     = await chequeRule.FindAsync(chequesAndStatsVM.chequeId);

                cheque.Status = ZhivarEnums.ChequeStatus.Passed;
                chequeRule.Update(cheque);
                await chequeRule.SaveChangesAsync();

                DocumentRule documentRule = new DocumentRule();
                await documentRule.InsertAsync(doucument, organId);

                await documentRule.SaveChangesAsync();



                //AccountNumber: ""
                chequeVM.Amount     = cheque.Amount;
                chequeVM.BankBranch = cheque.BankBranch;
                //chequeVM.BankDetailAccount: null
                chequeVM.BankName     = cheque.BankName;
                chequeVM.ChequeNumber = cheque.ChequeNumber;
                chequeVM.Contact      = cheque.Contact;
                chequeVM.Date         = cheque.Date;
                chequeVM.DepositBank  = cheque.DepositBank;
                //chequeVM.DepositDate = cheque.DepositBank;
                chequeVM.DisplayDate = cheque.DisplayDate;
                chequeVM.ID          = cheque.ID;
                //chequeVM.MyCheque = cheque.DepositBank;
                //chequeVM.Overdue = cheque.Overdue;
                //chequeVM.Payee = cheque.Payee;
                //chequeVM.Payer = cheque.Payer;
                chequeVM.ReceiptDate = cheque.ReceiptDate;
                //chequeVM.ReturnDate = cheque.ReturnDate;
                chequeVM.Status       = cheque.Status;
                chequeVM.StatusString = "وصول شده";
                break;
            }

            // وصول چک دریافتی
            case "ReceivedChequeReceipt":
            {
                chequesAndStatsVM.description = " وصول چک دریافتی";

                var doucument = await CreateDocumentChangeChequeStatus(chequesAndStatsVM, organId);


                ChequeRule chequeRule = new ChequeRule();
                var        cheque     = await chequeRule.FindAsync(chequesAndStatsVM.chequeId);

                cheque.Status = ZhivarEnums.ChequeStatus.Passed;
                chequeRule.Update(cheque);

                await chequeRule.SaveChangesAsync();

                DocumentRule documentRule = new DocumentRule();
                await documentRule.InsertAsync(doucument, organId);

                await documentRule.SaveChangesAsync();


                //AccountNumber: ""
                chequeVM.Amount     = cheque.Amount;
                chequeVM.BankBranch = cheque.BankBranch;
                //chequeVM.BankDetailAccount: null
                chequeVM.BankName     = cheque.BankName;
                chequeVM.ChequeNumber = cheque.ChequeNumber;
                chequeVM.Contact      = cheque.Contact;
                chequeVM.Date         = cheque.Date;
                chequeVM.DepositBank  = cheque.DepositBank;
                //chequeVM.DepositDate = cheque.DepositBank;
                chequeVM.DisplayDate = cheque.DisplayDate;
                chequeVM.ID          = cheque.ID;
                //chequeVM.MyCheque = cheque.DepositBank;
                //chequeVM.Overdue = cheque.Overdue;
                //chequeVM.Payee = cheque.Payee;
                //chequeVM.Payer = cheque.Payer;
                chequeVM.ReceiptDate = cheque.ReceiptDate;
                //chequeVM.ReturnDate = cheque.ReturnDate;
                chequeVM.Status       = cheque.Status;
                chequeVM.StatusString = "وصول شده";
                break;
            }

            // وصول چک واگذار شده به بانک
            case "DepositChequeReceipt":
            {
                chequesAndStatsVM.description = "وصول چک واگذار شده به بانک";
                var doucument = await CreateDocumentDepositChequeReceipt(chequesAndStatsVM, organId);

                ChequeRule chequeRule = new ChequeRule();
                var        cheque     = await chequeRule.FindAsync(chequesAndStatsVM.chequeId);

                cheque.Status = ZhivarEnums.ChequeStatus.Passed;
                chequeRule.Update(cheque);

                await chequeRule.SaveChangesAsync();

                DocumentRule documentRule = new DocumentRule();
                await documentRule.InsertAsync(doucument, organId);

                await documentRule.SaveChangesAsync();


                //AccountNumber: ""
                chequeVM.Amount     = cheque.Amount;
                chequeVM.BankBranch = cheque.BankBranch;
                //chequeVM.BankDetailAccount: null
                chequeVM.BankName     = cheque.BankName;
                chequeVM.ChequeNumber = cheque.ChequeNumber;
                chequeVM.Contact      = cheque.Contact;
                chequeVM.Date         = cheque.Date;
                chequeVM.DepositBank  = cheque.DepositBank;
                //chequeVM.DepositDate = cheque.DepositBank;
                chequeVM.DisplayDate = cheque.DisplayDate;
                chequeVM.ID          = cheque.ID;
                //chequeVM.MyCheque = cheque.DepositBank;
                //chequeVM.Overdue = cheque.Overdue;
                //chequeVM.Payee = cheque.Payee;
                //chequeVM.Payer = cheque.Payer;
                chequeVM.ReceiptDate = cheque.ReceiptDate;
                //chequeVM.ReturnDate = cheque.ReturnDate;
                chequeVM.Status       = cheque.Status;
                chequeVM.StatusString = "وصول شده";
                break;
            }

            // واگذاری چک به بانک
            case "ReceivedChequeDeposit":
            {
                chequesAndStatsVM.description = "واگذاری چک به بانک";

                var doucument = await CreateDocumentReceivedChequeDeposit(chequesAndStatsVM, organId);

                ChequeRule chequeRule = new ChequeRule();
                var        cheque     = await chequeRule.FindAsync(chequesAndStatsVM.chequeId);

                cheque.Status = ZhivarEnums.ChequeStatus.InProgress;

                BankRule bankRule = new BankRule();
                var      banks    = await bankRule.GetAllByOrganIdAsync(organId);

                var bank = banks.Where(x => x.Code == chequesAndStatsVM.detailAccount.Code).SingleOrDefault();
                cheque.DepositBankId = bank.ID;

                chequeRule.Update(cheque);
                await chequeRule.SaveChangesAsync();

                DocumentRule documentRule = new DocumentRule();
                await documentRule.InsertAsync(doucument, organId);

                await documentRule.SaveChangesAsync();



                //AccountNumber: ""
                chequeVM.Amount     = cheque.Amount;
                chequeVM.BankBranch = cheque.BankBranch;
                //chequeVM.BankDetailAccount: null
                chequeVM.BankName     = cheque.BankName;
                chequeVM.ChequeNumber = cheque.ChequeNumber;
                chequeVM.Contact      = cheque.Contact;
                chequeVM.Date         = cheque.Date;
                chequeVM.DepositBank  = cheque.DepositBank;
                //chequeVM.DepositDate = cheque.DepositBank;
                chequeVM.DisplayDate = cheque.DisplayDate;
                chequeVM.ID          = cheque.ID;
                //chequeVM.MyCheque = cheque.DepositBank;
                //chequeVM.Overdue = cheque.Overdue;
                //chequeVM.Payee = cheque.Payee;
                //chequeVM.Payer = cheque.Payer;
                chequeVM.ReceiptDate = cheque.ReceiptDate;
                //chequeVM.ReturnDate = cheque.ReturnDate;
                chequeVM.Status       = cheque.Status;
                chequeVM.StatusString = "وصول شده";
                break;
            }

            // عودت دادن چک پرداختی
            case "PaidChequeReturn":
            {
                //chequesAndStatsVM.description = "عودت دادن چک پرداختی";

                var doucument = await CreateDocumentPaidChequeReturn(chequesAndStatsVM, organId);

                ChequeRule chequeRule = new ChequeRule();
                var        cheque     = await chequeRule.FindAsync(chequesAndStatsVM.chequeId);

                cheque.Status = ZhivarEnums.ChequeStatus.ChequeReturn;
                chequeRule.Update(cheque);

                await chequeRule.SaveChangesAsync();

                DocumentRule documentRule = new DocumentRule();
                await documentRule.InsertAsync(doucument, organId);

                await documentRule.SaveChangesAsync();


                //AccountNumber: ""
                chequeVM.Amount     = cheque.Amount;
                chequeVM.BankBranch = cheque.BankBranch;
                //chequeVM.BankDetailAccount: null
                chequeVM.BankName     = cheque.BankName;
                chequeVM.ChequeNumber = cheque.ChequeNumber;
                chequeVM.Contact      = cheque.Contact;
                chequeVM.Date         = cheque.Date;
                chequeVM.DepositBank  = cheque.DepositBank;
                //chequeVM.DepositDate = cheque.DepositBank;
                chequeVM.DisplayDate = cheque.DisplayDate;
                chequeVM.ID          = cheque.ID;
                //chequeVM.MyCheque = cheque.DepositBank;
                //chequeVM.Overdue = cheque.Overdue;
                //chequeVM.Payee = cheque.Payee;
                //chequeVM.Payer = cheque.Payer;
                chequeVM.ReceiptDate = cheque.ReceiptDate;
                //chequeVM.ReturnDate = cheque.ReturnDate;
                chequeVM.Status       = cheque.Status;
                chequeVM.StatusString = "وصول شده";
                break;
            }

            // عودت دادن چک دریافتی
            case "ReceivedChequeReturn":
            {
                chequesAndStatsVM.description = "عودت دادن چک دریافتی";

                var doucument = await CreateDocumentReceivedChequeReturn(chequesAndStatsVM, organId);

                ChequeRule chequeRule = new ChequeRule();
                var        cheque     = await chequeRule.FindAsync(chequesAndStatsVM.chequeId);

                cheque.Status = ZhivarEnums.ChequeStatus.ChequeReturn;
                chequeRule.Update(cheque);

                await chequeRule.SaveChangesAsync();

                DocumentRule documentRule = new DocumentRule();
                await documentRule.InsertAsync(doucument, organId);

                await documentRule.SaveChangesAsync();


                //AccountNumber: ""
                chequeVM.Amount     = cheque.Amount;
                chequeVM.BankBranch = cheque.BankBranch;
                //chequeVM.BankDetailAccount: null
                chequeVM.BankName     = cheque.BankName;
                chequeVM.ChequeNumber = cheque.ChequeNumber;
                chequeVM.Contact      = cheque.Contact;
                chequeVM.Date         = cheque.Date;
                chequeVM.DepositBank  = cheque.DepositBank;
                //chequeVM.DepositDate = cheque.DepositBank;
                chequeVM.DisplayDate = cheque.DisplayDate;
                chequeVM.ID          = cheque.ID;
                //chequeVM.MyCheque = cheque.DepositBank;
                //chequeVM.Overdue = cheque.Overdue;
                //chequeVM.Payee = cheque.Payee;
                //chequeVM.Payer = cheque.Payer;
                chequeVM.ReceiptDate = cheque.ReceiptDate;
                //chequeVM.ReturnDate = cheque.ReturnDate;
                chequeVM.Status       = cheque.Status;
                chequeVM.StatusString = "وصول شده";
                break;
            }

            // تغییر وضعیت چک پرداختی به پاس نشده
            case "PaidChequeToNotPass":
            {
                chequesAndStatsVM.description = "تغییر وضعیت چک پرداختی به پاس نشده";
                chequesAndStatsVM.date        = PersianDateUtils.ToPersianDate(DateTime.Now);

                var doucument = await CreateDocumentPaidChequeToNotPass(chequesAndStatsVM, organId);

                ChequeRule chequeRule = new ChequeRule();
                var        cheque     = await chequeRule.FindAsync(chequesAndStatsVM.chequeId);

                cheque.Status = ZhivarEnums.ChequeStatus.Normal;
                chequeRule.Update(cheque);
                await chequeRule.SaveChangesAsync();

                DocumentRule documentRule = new DocumentRule();
                await documentRule.InsertAsync(doucument, organId);

                await documentRule.SaveChangesAsync();


                //AccountNumber: ""
                chequeVM.Amount     = cheque.Amount;
                chequeVM.BankBranch = cheque.BankBranch;
                //chequeVM.BankDetailAccount: null
                chequeVM.BankName     = cheque.BankName;
                chequeVM.ChequeNumber = cheque.ChequeNumber;
                chequeVM.Contact      = cheque.Contact;
                chequeVM.Date         = cheque.Date;
                chequeVM.DepositBank  = cheque.DepositBank;
                //chequeVM.DepositDate = cheque.DepositBank;
                chequeVM.DisplayDate = cheque.DisplayDate;
                chequeVM.ID          = cheque.ID;
                //chequeVM.MyCheque = cheque.DepositBank;
                //chequeVM.Overdue = cheque.Overdue;
                //chequeVM.Payee = cheque.Payee;
                //chequeVM.Payer = cheque.Payer;
                chequeVM.ReceiptDate = cheque.ReceiptDate;
                //chequeVM.ReturnDate = cheque.ReturnDate;
                chequeVM.Status       = cheque.Status;
                chequeVM.StatusString = "وصول شده";
                break;
            }

            // تغییر وضعیت چک دریافتی به وصول نشده
            case "ReceivedChequeToNotPass":
            {
                chequesAndStatsVM.description = "تغییر وضعیت چک دریافتی به وصول نشده";

                ChequeRule chequeRule = new ChequeRule();
                var        cheque     = await chequeRule.FindAsync(chequesAndStatsVM.chequeId);

                PayRecevieRule  payRecevieRule = new PayRecevieRule();
                List <Document> doucuments     = await payRecevieRule.GetDoucumentIDByChequeIdAsync(chequesAndStatsVM.chequeId);

                cheque.Status = ZhivarEnums.ChequeStatus.Normal;
                chequeRule.Update(cheque);

                Document     newDocument  = new Document();
                DocumentRule documentRule = new DocumentRule();

                foreach (var document in doucuments)
                {
                    newDocument = new Document()
                    {
                        Credit         = document.Credit,
                        Description    = chequesAndStatsVM.description,
                        Debit          = document.Debit,
                        DateTime       = DateTime.Now,
                        DisplayDate    = PersianDateUtils.ToPersianDate(DateTime.Now),
                        FinanYear      = document.FinanYear,
                        FinanYearId    = document.FinanYearId,
                        IsFirsDocument = document.IsFirsDocument,
                        IsManual       = document.IsManual,
                        Number         = await documentRule.createNumberDocumentAsync(organId),
                        Number2        = await documentRule.createNumberDocumentAsync(organId),
                        OrganId        = organId,
                        Status         = ZhivarEnums.DocumentStatus.TaeedShode,
                        StatusString   = document.StatusString,
                        Type           = ZhivarEnums.NoeDoc.Pay
                    };
                    TransactionRule transactionRule = new TransactionRule();
                    var             transactions    = await transactionRule.GetAllByOrganIdAsync(organId);

                    transactions = transactions.Where(x => x.DocumentId == document.ID).ToList();

                    newDocument.Transactions = new List <Transaction>();
                    Transaction newTransaction = new Transaction();

                    foreach (var transaction in transactions)
                    {
                        //newTransaction.AccDocument = newDocument;
                        //newTransaction.Account = transaction.Account;
                        newTransaction.AccountId             = transaction.AccountId;
                        newTransaction.Amount                = transaction.Amount;
                        newTransaction.Cheque                = transaction.Cheque;
                        newTransaction.ChequeId              = transaction.ChequeId;
                        newTransaction.ContactId             = transaction.ContactId;
                        newTransaction.Credit                = transaction.Debit;
                        newTransaction.Date                  = DateTime.Now;
                        newTransaction.Debit                 = transaction.Credit;
                        newTransaction.Description           = chequesAndStatsVM.description;
                        newTransaction.DisplayDate           = PersianDateUtils.ToPersianDate(DateTime.Now);
                        newTransaction.DocumentId            = newDocument.ID;
                        newTransaction.InvoiceId             = transaction.InvoiceId;
                        newTransaction.IsCredit              = transaction.IsDebit;
                        newTransaction.IsDebit               = transaction.IsCredit;
                        newTransaction.PaymentMethod         = transaction.PaymentMethod;
                        newTransaction.PaymentMethodString   = transaction.PaymentMethodString;
                        newTransaction.Reference             = transaction.Reference;
                        newTransaction.RefTrans              = transaction.RefTrans;
                        newTransaction.Remaining             = transaction.Remaining;
                        newTransaction.RemainingType         = transaction.RemainingType;
                        newTransaction.RowNumber             = transaction.RowNumber;
                        newTransaction.Stock                 = transaction.Stock;
                        newTransaction.TransactionTypeString = transaction.TransactionTypeString;
                        newTransaction.Type                  = transaction.Type;
                        newTransaction.UnitPrice             = transaction.UnitPrice;

                        newDocument.Transactions.Add(newTransaction);
                    }
                }

                await documentRule.InsertAsync(newDocument, organId);

                await documentRule.SaveChangesAsync();


                //AccountNumber: ""
                chequeVM.Amount     = cheque.Amount;
                chequeVM.BankBranch = cheque.BankBranch;
                //chequeVM.BankDetailAccount: null
                chequeVM.BankName     = cheque.BankName;
                chequeVM.ChequeNumber = cheque.ChequeNumber;
                chequeVM.Contact      = cheque.Contact;
                chequeVM.Date         = cheque.Date;
                chequeVM.DepositBank  = cheque.DepositBank;
                //chequeVM.DepositDate = cheque.DepositBank;
                chequeVM.DisplayDate = cheque.DisplayDate;
                chequeVM.ID          = cheque.ID;
                //chequeVM.MyCheque = cheque.DepositBank;
                //chequeVM.Overdue = cheque.Overdue;
                //chequeVM.Payee = cheque.Payee;
                //chequeVM.Payer = cheque.Payer;
                chequeVM.ReceiptDate = cheque.ReceiptDate;
                //chequeVM.ReturnDate = cheque.ReturnDate;
                chequeVM.Status       = cheque.Status;
                chequeVM.StatusString = "وصول شده";
                break;
            }


            default:
                break;
            }

            return(Request.CreateResponse(HttpStatusCode.OK, new { resultCode = ZhivarEnums.ResultCode.Successful, data = chequeVM }));
        }
Пример #17
0
        public async Task <HttpResponseMessage> GetRequiredDataToClosingFinanYear()
        {
            var organId = Convert.ToInt32(SecurityManager.CurrentUserContext.OrganizationId);

            TransactionRule transactionRule = new TransactionRule();
            var             transactions    = await transactionRule.GetAllByOrganIdAsync(organId);

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

            var incomeAccount = accounts.Where(x => x.ComplteCoding == "71" || x.ComplteCoding == "72").Select(x => x.ID).ToList();
            var costAccount   = accounts.Where(x => x.ComplteCoding == "81" || x.ComplteCoding == "82" || x.ComplteCoding == "83").Select(x => x.ID).ToList();

            decimal incomeAmount = 0;
            decimal costAmount   = 0;

            var accountsMoienQuery = accounts.AsQueryable().Where(x => incomeAccount.Contains(x.ParentId));

            var allAccountQuery = accounts.AsQueryable();

            List <int> childIds = (from account in accountsMoienQuery
                                   select account.ID).ToList();

            List <int> childChildIds = (from account in allAccountQuery
                                        join accountsMoien in accountsMoienQuery
                                        on account.ParentId equals accountsMoien.ID
                                        select account.ID).ToList();


            var selected = transactions.Where(a => incomeAccount.Contains(a.AccountId) || childIds.Contains(a.AccountId) || childChildIds.Contains(a.AccountId)).ToList();

            if (selected.Any())
            {
                var credit = selected.Sum(x => x.Credit);
                var debit  = selected.Sum(x => x.Debit);
                incomeAmount = credit - debit;
            }


            var accountsMoienCostQuery = accounts.AsQueryable().Where(x => costAccount.Contains(x.ParentId));


            List <int> childIdsCost = (from account in accountsMoienCostQuery
                                       select account.ID).ToList();

            List <int> childChildIdsCost = (from account in allAccountQuery
                                            join accountsMoien in accountsMoienCostQuery
                                            on account.ParentId equals accountsMoien.ID
                                            select account.ID).ToList();


            var selectedCost = transactions.Where(a => costAccount.Contains(a.AccountId) || childIdsCost.Contains(a.AccountId) || childChildIdsCost.Contains(a.AccountId)).ToList();

            if (selectedCost.Any())
            {
                var credit = selectedCost.Sum(x => x.Credit);
                var debit  = selectedCost.Sum(x => x.Debit);
                costAmount = credit - debit;
            }

            FinanYearRule finanYearRule = new FinanYearRule();
            var           finanQuery    = await finanYearRule.GetAllByOrganIdAsync(organId);

            var finanYear = finanQuery.Where(x => x.FirstYear == true).SingleOrDefault();

            ShareholderRule shareholderRule = new ShareholderRule();
            var             shareHolders    = await shareholderRule.GetAllByOrganIdAsync(organId);

            var startDate = PersianDateUtils.ToDateTime(finanYear.DisplayStartDate);
            var endDate   = PersianDateUtils.ToDateTime(finanYear.DisplayEndDate);

            double diff2 = (endDate - startDate).TotalDays;

            var startDateNew = endDate.AddDays(1);
            var endDateNew   = endDate.AddDays(diff2);

            var displayEndDateNew   = PersianDateUtils.ToPersianDateTime(endDateNew);
            var displayStartDateNew = PersianDateUtils.ToPersianDateTime(startDateNew);

            var startYear  = Convert.ToInt32(displayStartDateNew.Substring(0, 4));
            var startMonth = Convert.ToInt32(displayStartDateNew.Substring(5, 2));
            var startDay   = Convert.ToInt32(displayStartDateNew.Substring(8, 2));


            var endYear  = Convert.ToInt32(displayEndDateNew.Substring(0, 4));
            var endMonth = Convert.ToInt32(displayEndDateNew.Substring(5, 2));
            var endDay   = Convert.ToInt32(displayEndDateNew.Substring(8, 2));

            var isMoreThanYear = false;

            if (diff2 > 365)
            {
                isMoreThanYear = true;
            }

            var resualt = new DataToClosingFinanYear();

            resualt.closingDate = finanYear.DisplayEndDate;
            resualt.netIncome   = incomeAmount - costAmount;

            resualt.newFinanYear = new FinanYearVM()
            {
                Closed           = false,
                DisplayEndDate   = displayEndDateNew,
                DisplayStartDate = displayStartDateNew,
                EndDate          = endDateNew,
                EndDateDay       = endDay,
                EndDateMonth     = endMonth,
                EndDateYear      = endYear,
                FirstYear        = false,
                Id = 0,
                IsMoreThanOneYear = isMoreThanYear,
                Name           = endYear + " سال مال منتهی به",
                Note           = "",
                StartDate      = startDate,
                StartDateDay   = startDay,
                StartDateMonth = startMonth,
                StartDateYear  = startYear,
            };
            resualt.shareholders = new List <ShareholderVM>();

            foreach (var shareHolder in shareHolders)
            {
                resualt.shareholders.Add(new ShareholderVM()
                {
                    Address      = shareHolder.Address,
                    City         = shareHolder.City,
                    Code         = shareHolder.Code,
                    ContactEmail = "",
                    ContactType  = shareHolder.ContactType,
                    Credits      = shareHolder.Credits,
                    //DetailAccount = new DetailAccount()
                    //{
                    //    Accounts = null,
                    //    Balance = 0,
                    //    BalanceType = 0,
                    //    Code = "000001",
                    //    Id = 1,
                    //    Name = "مونا ابراهیمی",
                    //    Node = new Node()
                    //    {
                    //        FamilyTree = "اشخاص",
                    //        Id = 1,
                    //        Name = "اشخاص",
                    //        Parent = null,
                    //        Parents = ",1,",
                    //        SystemAccount = 1
                    //    },
                    //    RelatedAccounts = ",6,22,7,32,33,34,35,",
                    //    credit = 0,
                    //    debit = 0,
                    //},
                    Email              = shareHolder.Email,
                    Fax                = shareHolder.Fax,
                    FirstName          = shareHolder.FirstName,
                    Id                 = (int)shareHolder.ID,
                    IsCustomer         = shareHolder.IsCustomer,
                    IsEmployee         = shareHolder.IsEmployee,
                    IsShareHolder      = shareHolder.IsShareHolder,
                    IsVendor           = shareHolder.IsVendor,
                    LastName           = shareHolder.LastName,
                    Liability          = shareHolder.Liability,
                    Mobile             = shareHolder.Mobile,
                    Name               = shareHolder.Name,
                    NationalCode       = shareHolder.NationalCode,
                    Note               = shareHolder.Note,
                    People             = shareHolder.People,
                    Phone              = shareHolder.Phone,
                    PostalCode         = shareHolder.PostalCode,
                    Rating             = shareHolder.Rating,
                    RegistrationDate   = shareHolder.RegistrationDate,
                    RegistrationNumber = shareHolder.RegistrationNumber,
                    SharePercent       = shareHolder.SharePercent,
                    State              = shareHolder.State,
                    Website            = shareHolder.Website,
                });
            }
            return(Request.CreateResponse(HttpStatusCode.OK, new { resualtCode = (int)ZhivarEnums.ResultCode.Successful, data = resualt }));
        }
Пример #18
0
        public void Update(TransactionRule model)
        {
            var entity = MapToTable(model);

            ruleRepository.Update(entity);
        }
Пример #19
0
 // POST: api/Rules
 public IHttpActionResult Post(TransactionRule model)
 {
     svc.Add(model);
     return(Ok());
 }
Пример #20
0
 // PUT: api/Rules/5
 public IHttpActionResult Put(int id, TransactionRule model)
 {
     svc.Update(model);
     return(Ok());
 }
Пример #21
0
        public async Task <HttpResponseMessage> GetAllByOrganId()
        {
            try
            {
                var organId = Convert.ToInt32(SecurityManager.CurrentUserContext.OrganizationId);

                BankRule bankRule = new BankRule();
                var      list     = await bankRule.GetAllByOrganIdAsync(Convert.ToInt32(organId));

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

                BankVM        bankVM  = new BankVM();
                List <BankVM> bankVMs = new List <BankVM>();

                foreach (var item in list)
                {
                    var             bankAccount     = accounts.Where(x => x.ComplteCoding == "1103" + item.Code).SingleOrDefault();
                    TransactionRule transactionRule = new TransactionRule();
                    BalanceModelVM  transaction     = await transactionRule.GetBalanceAccountAsync(bankAccount.ID);

                    bankVMs.Add(new BankVM()
                    {
                        AccountNumber = item.AccountNumber,
                        Balance       = item.Balance,
                        Branch        = item.Branch,
                        Code          = item.Code,
                        FullName      = item.FullName,
                        ID            = item.ID,
                        Name          = item.Name,
                        DetailAccount = new DetailAccount()
                        {
                            Accounts = new List <AccountVM>()
                            {
                                new AccountVM()
                                {
                                    Balance     = transaction.Balance,
                                    BalanceType = transaction.BalanceType,
                                    Code        = bankAccount.Coding,
                                    Coding      = bankAccount.Coding,
                                    credit      = transaction.Credit,
                                    debit       = transaction.Debit,
                                    ID          = bankAccount.ID,
                                    ParentId    = bankAccount.ParentId,
                                    Name        = bankAccount.Name,
                                }
                            },
                            Code        = bankAccount.Coding,
                            Id          = bankAccount.ID,
                            Balance     = transaction.Balance,
                            credit      = transaction.Credit,
                            debit       = transaction.Debit,
                            BalanceType = transaction.BalanceType,
                            Name        = bankAccount.Name,
                        }
                    });
                }

                return(Request.CreateResponse(HttpStatusCode.OK, new { resultCode = (int)ZhivarEnums.ResultCode.Successful, data = bankVMs }));
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Пример #22
0
 public void SetBuyNGetNBasedRule(int numberOfBuyNeeded, int numberOfFreeItem)
 {
     this.TransactionRule     = new BuyNGetNBasedRule(numberOfBuyNeeded, numberOfFreeItem);
     this.TransactionRuleType = TransactionRuleTypes.BuyNGetNBasedRule;
 }
Пример #23
0
 public void SetPointTransactionRule(decimal baseAmount, int numberOfStartAwarded)
 {
     this.TransactionRule     = new PointBasedRule(baseAmount, numberOfStartAwarded);
     this.TransactionRuleType = TransactionRuleTypes.PointBasedRule;
 }