Пример #1
0
        public ActionResult CashierReceiptCalculation(string receiptdate)
        {
            MainApplication model = new MainApplication();

            //*************************************** FOR CREDIT *******************************************

            var CashierReceiptDate = DateTime.ParseExact(receiptdate, "dd/MM/yyyy", null).ToString("MM/dd/yyyy");

            var previousdate = Convert.ToDateTime(CashierReceiptDate).AddDays(-1);

            double TotalOpeningBal     = 0;
            var    CarryForwardDetails = _BalanceCarryForwardService.GetDataByDate(Convert.ToDateTime(previousdate).Date);

            if (CarryForwardDetails == null)
            {
                TotalOpeningBal = 0;
            }
            else
            {
                TotalOpeningBal = Convert.ToDouble(CarryForwardDetails.ClosingBalance);
            }
            Session["TotalOpeningBalance"] = TotalOpeningBal;

            double CashSalesAmount = 0;

            model.RetailBillList = _RetailBillService.GetBillsByDate(Convert.ToDateTime(CashierReceiptDate));
            double CashSalesAmountForRetailBill = 0;

            foreach (var retaildata in model.RetailBillList)
            {
                CashSalesAmountForRetailBill = CashSalesAmountForRetailBill + Convert.ToDouble(retaildata.GrandTotal);
            }

            //minus retail bill sales return amount into cash sales
            model.SalesReturnList = _SalesReturnService.GetBillsByDate(Convert.ToDateTime(CashierReceiptDate));
            double CashSalesAmountForSalesReturn = 0;

            foreach (var SRData in model.SalesReturnList)
            {
                CashSalesAmountForSalesReturn = CashSalesAmountForSalesReturn + Convert.ToDouble(SRData.CreditNoteAmount);
            }
            CashSalesAmount = CashSalesAmountForRetailBill - CashSalesAmountForSalesReturn;

            //model.TemporaryCashMemoList = _TemporaryCashMemoService.GetBillsByDate(Convert.ToDateTime(CashierReceiptDate));
            //double CashSalesAmountForTempCashMemo = 0;
            //foreach (var TCMData in model.TemporaryCashMemoList)
            //{
            //    if (TCMData.ConvertDateStatus != "Same")
            //    {
            //        CashSalesAmountForTempCashMemo = CashSalesAmountForTempCashMemo + Convert.ToDouble(TCMData.GrandTotal);
            //    }
            //}

            //CashSalesAmount = CashSalesAmountForRetailBill + CashSalesAmountForTempCashMemo;
            Session["CashSalesAmount"] = CashSalesAmount;

            var CashierSOListForCard = _CashierSalesOrderService.GetOrderNoByDateAndCard(Convert.ToDateTime(CashierReceiptDate));

            Session["CashierSOListForCard"] = CashierSOListForCard;

            var CashierSOListForCash = _CashierSalesOrderService.GetOrderNoByDateAndCash(Convert.ToDateTime(CashierReceiptDate));

            Session["CashierSOListForCash"] = CashierSOListForCash;

            var CashierSOListForCheque = _CashierSalesOrderService.GetOrderNoByDateAndCheque(Convert.ToDateTime(CashierReceiptDate));

            Session["CashierSOListForCheque"] = CashierSOListForCheque;

            var CashierRBListForBillBalance = _CashierRetailBillService.GetBillsByDateAndDateStatus(Convert.ToDateTime(CashierReceiptDate));

            Session["CashierRBListForBillBalance"] = CashierRBListForBillBalance;

            var CashierSBListForCreditInvRec = _CashierSalesBillService.GetBillsByDate(Convert.ToDateTime(CashierReceiptDate));

            Session["CashierSBListForCreditInvRec"] = CashierSBListForCreditInvRec;

            var AdjAmtSBListForCreditInvRec = _SalesBillAdjAmtDetailService.GetBillsByDate(Convert.ToDateTime(CashierReceiptDate));

            Session["AdjAmtSBListForCreditInvRec"] = AdjAmtSBListForCreditInvRec;

            double IndirectIncome     = 0;
            var    IndirectIncomeData = _IncomeExchangeVoucherService.GetEntryByDateAndVoucherType(Convert.ToDateTime(CashierReceiptDate), "Receipt");

            foreach (var entry in IndirectIncomeData)
            {
                IndirectIncome = IndirectIncome + Convert.ToDouble(entry.Amount);
            }
            Session["IndirectIncome"] = IndirectIncome;

            //*************************************** FOR DEBIT *******************************************

            var RBListForAdvanceAdjust = _RetailBillAdjAmtDetailService.GetBillsByDate(Convert.ToDateTime(CashierReceiptDate));

            Session["RBListForAdvanceAdjust"] = RBListForAdvanceAdjust;

            var TCMListForAdvanceAdjust = _TemporaryCashMemoAdjAmtDetailService.GetBillsByDate(Convert.ToDateTime(CashierReceiptDate));

            Session["TCMListForAdvanceAdjust"] = TCMListForAdvanceAdjust;

            var SBListForAdvanceAdjust = _SalesBillAdjAmtDetailService.GetBillsByDate(Convert.ToDateTime(CashierReceiptDate));

            Session["SBListForAdvanceAdjust"] = SBListForAdvanceAdjust;

            var RBListForDate = _RetailBillService.GetBillsByDate(Convert.ToDateTime(CashierReceiptDate));

            Session["RBListForPendingBillBalance"] = RBListForDate;

            int RBListForDateCount = RBListForDate.Count();

            string[] MyRBList       = new string[RBListForDateCount];
            string[] MyRBListAmount = new string[RBListForDateCount];
            int      i = 0;

            int CashRBCounter = 0;

            foreach (var RBData in RBListForDate)
            {
                double pendingbillbalanceamount = 0;
                double CashRBAmount             = 0;

                if (RBData.TemporaryCashMemo == null)
                {
                    var CashRBList = _CashierRetailBillService.GetBillsByDateAndRetailBillNo(Convert.ToDateTime(CashierReceiptDate), RBData.RetailBillNo);
                    foreach (var CashRBData in CashRBList)
                    {
                        CashRBAmount  = CashRBAmount + Convert.ToDouble(CashRBData.Payment);
                        CashRBCounter = 1;
                    }
                }
                else
                {
                    var CashRBList = _CashierTemporaryCashMemoService.GetBillsByDateAndTempCashMemoNo(Convert.ToDateTime(CashierReceiptDate), RBData.TemporaryCashMemo);
                    foreach (var CashRBData in CashRBList)
                    {
                        CashRBAmount  = CashRBAmount + Convert.ToDouble(CashRBData.Payment);
                        CashRBCounter = 1;
                    }
                }

                pendingbillbalanceamount = Convert.ToDouble(RBData.GrandTotal) - Convert.ToDouble(RBData.AdjustedAmount);

                if (CashRBCounter == 1)
                {
                    pendingbillbalanceamount = pendingbillbalanceamount - CashRBAmount;
                }

                if (pendingbillbalanceamount < 0)
                {
                    pendingbillbalanceamount = 0;
                }

                MyRBList[i] = RBData.RetailBillNo.ToString();

                MyRBListAmount[i] = pendingbillbalanceamount.ToString();
                i++;
                CashRBCounter = 0;
            }
            Session["RBListForPendingBillBalanceCounter"] = RBListForDateCount;
            Session["RBListForPendingBillBalance"]        = MyRBList;
            Session["RBListForPendingBillBalanceAmount"]  = MyRBListAmount;

            var TCMListForDate = _TemporaryCashMemoService.GetBillsByDateAndConvertStatus(Convert.ToDateTime(CashierReceiptDate));

            Session["TCMListForPendingBillBalance"] = TCMListForDate;

            int TCMListForDateCount = TCMListForDate.Count();

            string[] MyTCMList       = new string[TCMListForDateCount];
            string[] MyTCMListAmount = new string[TCMListForDateCount];
            int      z = 0;

            int CashTCMCounter = 0;

            foreach (var TCMData in TCMListForDate)
            {
                double pendingbillbalanceamount = 0;
                double CashTCMAmount            = 0;

                var CashTCMList = _CashierTemporaryCashMemoService.GetBillsByDateAndTempCashMemoNo(Convert.ToDateTime(CashierReceiptDate), TCMData.TempCashMemoNo);
                foreach (var CashTCMData in CashTCMList)
                {
                    CashTCMAmount  = CashTCMAmount + Convert.ToDouble(CashTCMData.Payment);
                    CashTCMCounter = 1;
                }

                pendingbillbalanceamount = Convert.ToDouble(TCMData.GrandTotal) - Convert.ToDouble(TCMData.AdjustedAmount);

                if (CashTCMCounter == 1)
                {
                    pendingbillbalanceamount = pendingbillbalanceamount - CashTCMAmount;
                }

                if (pendingbillbalanceamount < 0)
                {
                    pendingbillbalanceamount = 0;
                }

                MyTCMList[z] = TCMData.TempCashMemoNo.ToString();

                MyTCMListAmount[z] = pendingbillbalanceamount.ToString();
                z++;
                CashTCMCounter = 0;
            }
            Session["TCMListForPendingBillBalanceCounter"] = TCMListForDateCount;
            Session["TCMListForPendingBillBalance"]        = MyTCMList;
            Session["TCMListForPendingBillBalanceAmount"]  = MyTCMListAmount;

            var CreditCardHandList = _CardChequeHandoverService.GetDataByDate(Convert.ToDateTime(CashierReceiptDate));

            Session["CreditCardHandList"] = CreditCardHandList;

            model.CashHandoverList  = _CashHandoverService.GetDataByDate(Convert.ToDateTime(CashierReceiptDate));
            Session["CashHandList"] = model.CashHandoverList;

            double IndirectExpenses     = 0;
            var    IndirectExpensesData = _IncomeExchangeVoucherService.GetEntryByDateAndVoucherType(Convert.ToDateTime(CashierReceiptDate), "Payment");

            foreach (var entry in IndirectExpensesData)
            {
                IndirectExpenses = IndirectExpenses + Convert.ToDouble(entry.Amount);
            }
            Session["IndirectExpenses"] = IndirectExpenses;

            double SOClosingBal = 0;
            double RBClosingBal = 0;
            double SBClosingBal = 0;

            double ROClosingBal             = 0;
            double CardChequeHandClosingBal = 0;
            double CashHandClosingBal       = 0;
            double TotalClosingBal          = 0;

            model.CashierSalesOrderList = _CashierSalesOrderService.GetOrderNoByDate(Convert.ToDateTime(CashierReceiptDate));
            foreach (var cashsalesbilldata in model.CashierSalesOrderList)
            {
                SOClosingBal = SOClosingBal + Convert.ToDouble(cashsalesbilldata.AdvancePayment);
            }

            model.CashierRetailBillList = _CashierRetailBillService.GetBillsByDate(Convert.ToDateTime(CashierReceiptDate));
            foreach (var cashretailbilldata in model.CashierRetailBillList)
            {
                RBClosingBal = RBClosingBal + Convert.ToDouble(cashretailbilldata.Payment);
            }

            model.CashierSalesBillList = _CashierSalesBillService.GetBillsByDate(Convert.ToDateTime(CashierReceiptDate));
            foreach (var cashsalesbilldata in model.CashierSalesBillList)
            {
                SBClosingBal = SBClosingBal + Convert.ToDouble(cashsalesbilldata.Payment);
            }


            model.CashierRefundOrderList = _CashierRefundOrderService.GetBillsByDate(Convert.ToDateTime(CashierReceiptDate));
            foreach (var cashdrefundorderdata in model.CashierRefundOrderList)
            {
                ROClosingBal = ROClosingBal + Convert.ToDouble(cashdrefundorderdata.RefundAmount);
            }

            model.CardChequeHandoverList = _CardChequeHandoverService.GetDataByDate(Convert.ToDateTime(CashierReceiptDate));
            foreach (var cardchequedata in model.CardChequeHandoverList)
            {
                CardChequeHandClosingBal = CardChequeHandClosingBal + Convert.ToDouble(cardchequedata.CardChequeAmount);
            }

            model.CashHandoverList = _CashHandoverService.GetDataByDate(Convert.ToDateTime(CashierReceiptDate));
            foreach (var cashdata in model.CashHandoverList)
            {
                CashHandClosingBal = CashHandClosingBal + Convert.ToDouble(cashdata.HandoverCash);
            }

            TotalClosingBal = TotalOpeningBal + SOClosingBal + RBClosingBal + SBClosingBal - ROClosingBal - CardChequeHandClosingBal - CashHandClosingBal;
            Session["TotalClosingBalance"] = TotalClosingBal;

            return(View(model));
        }