// Make payment on external bills
        public async Task <string> MakePaymentOnExternalBill(int ExternalHeaderId, double NewPaymentAmt)
        {
            try
            {
                ExternalBillHeader ExternalHeader = _db.ExternalBillHeader.FirstOrDefault(h => h.Id == ExternalHeaderId);

                CustAcc Acc = _db.CustAcc.FirstOrDefault(ac => ac.CustId == ExternalHeader.CustId);

                // updating bill header will the payment
                ExternalHeader.PaidAmt += NewPaymentAmt;

                // if the bill paid all, change status to completed
                if (ExternalHeader.TotalNetAmt == ExternalHeader.PaidAmt)
                {
                    ExternalHeader.Status = SD.Completed;
                }

                // updating customer Acc
                //Acc.Paid += PaidAmt;
                //Acc.Debt -= PaidAmt;
                UpdateCustomerAcc(ExternalHeader.CustId ?? 0, NewPaymentAmt, NewPaymentAmt, "Old");

                // add a new payment to bill payments table
                AddExternalBillPayment(ExternalHeader.CustId ?? 0, ExternalHeader.Id, NewPaymentAmt);

                await _db.SaveChangesAsync();

                return("تمت عملية الدفع");
            }
            catch (Exception ex)
            {
                return("لم تتم عملية الدفع");
            }
        }
        // this function will update customer account manually, only for admin
        public async Task <string> UpdateCustomerAccManually(int CustId, double Payment, double Debt)
        {
            try
            {
                CustAcc Acc = _db.CustAcc.FirstOrDefault(ac => ac.CustId == CustId);

                if (Payment > 0)
                {
                    Acc.Paid = Payment;
                }

                if (Debt > 0)
                {
                    Acc.Debt = Debt;
                }


                await _db.SaveChangesAsync();

                return("تم تعديل الحساب");
            }
            catch
            {
                return("Error! حصل خطأ لم يتم تعديل الحساب");
            }
        }
Example #3
0
        public async Task <IActionResult> OnGet(int CustId)
        {
            Customer = await _db.Customer.FirstOrDefaultAsync(cus => cus.Id == CustId);

            CustAcc = await _db.CustAcc.FirstOrDefaultAsync(acc => acc.CustId == CustId);

            return(Page());
        }
        // Revert customer acc, when bill is cancelled
        private void RevertCustomerAcc(int CustId, double Paid, double Debt)
        {
            CustAcc Acc = _db.CustAcc.FirstOrDefault(cu => cu.CustId == CustId);

            if (Acc != null)
            {
                // reverting both amount of customer's account
                Acc.Paid -= Paid;
                Acc.Debt -= Debt;
            }
        }
Example #5
0
        // Helper functions //

        private void CreateCustomerAccount(int CustId)
        {
            CustAcc NewAcc = new CustAcc
            {
                CustId = CustId,
                Paid   = 0,
                Debt   = 0
            };

            _db.CustAcc.Add(NewAcc);
            _db.SaveChangesAsync().GetAwaiter().GetResult();
        }
        // this function will be used to update customer acc when a bill is edited
        private void UpdateCustAccOnBillEdit(int CustId, double NewPayment, double OldPayment, double NewDebt, double OldDebt)
        {
            CustAcc Acc = _db.CustAcc.FirstOrDefault(cu => cu.CustId == CustId);

            // update new payment
            if (NewPayment > 0)
            {
                Acc.Paid -= OldPayment;
                Acc.Paid += NewPayment;
            }

            //update new debt
            if (NewDebt > 0)
            {
                Acc.Debt += OldDebt;
                Acc.Debt -= NewDebt;
            }
        }
        // updating customer Accs
        private void UpdateCustomerAcc(int CustId, double Paid, double Debt, string Status)
        {
            CustAcc Acc = _db.CustAcc.FirstOrDefault(cu => cu.CustId == CustId);

            Acc.Paid += Paid;

            // if new means new bill and will add more debit (in case customer didnt make full payment)
            if (Status == "New")
            {
                Acc.Debt += Debt;
            }

            else // this will be used when a customer makes a new payment on existing bill, so debt will be minus
            {
                if (Acc.Debt > 0)
                {
                    Acc.Debt -= Debt;
                }
            }
        }
        public async Task <string> MakePaymentToAcc(int CustId, double NewPaymentAmt)
        {
            try
            {
                CustAcc Acc = _db.CustAcc.FirstOrDefault(ac => ac.CustId == CustId);


                // updating customer Acc
                //Acc.Paid += PaidAmt;
                //Acc.Debt -= PaidAmt;
                UpdateCustomerAcc(CustId, NewPaymentAmt, NewPaymentAmt, "Old");

                await _db.SaveChangesAsync();

                return("تمت عملية الدفع");
            }
            catch (Exception ex)
            {
                return("لم تتم عملية الدفع");
            }
        }