示例#1
0
        private void AddnewLodgementReimbursementTransaction(shop shop, transaction_category tran, PaymentNotificationRequest pnr, BettingSuiteDataContext db)
        {
            DateTime             date          = DateTime.Today;
            master_balance_sheet masterbalance = new CRUD.master_balance_sheet_crud().getMasterBalanceByShopId(shop.id);

            if (masterbalance == null)
            {
                masterbalance = new master_balance_sheet
                {
                    shop           = shop.id,
                    credit_balance = 0,
                    online_credit  = 0,
                    sales_balance  = 0,
                    netbalance     = 0,
                };
                masterbalance = new CRUD.master_balance_sheet_crud(masterbalance).insert_master_balance_sheet();
            }

            master_transaction reversalmastertransaction = new master_transaction();


            master_lodgement_reimbursment newmlr = new master_lodgement_reimbursment
            {
                amount               = pnr.Amount,
                bank                 = 0,//interswitch id,
                date                 = date,
                shop                 = shop.id,
                teller_number        = pnr.PaymentLogId.ToString(),
                islocked             = true,
                isverified           = true,
                payment_type         = 5,
                transaction_category = tran.id,
            };

            login lodin = db.logins.Single(a => a.username == "InterSwitch");
            master_transaction newmastertransaction = new master_transaction
            {
                amount          = Math.Abs(pnr.Amount),
                balance_before  = (masterbalance != null) ? masterbalance.sales_balance : 0,
                balance_after   = (masterbalance != null) ? getbal(masterbalance.sales_balance, pnr.Amount, tran) : pnr.Amount,
                shop            = shop.id,
                trans_category  = tran.id,
                trans_timestamp = DateTime.Now,
                trans_type      = (tran.type == true) ? 1 : 0,
                posted_by       = lodin.id,// interswitch id,
                description     = pnr.PaymentReference + " Posted For " + date.ToShortDateString(),
                details         = (tran.code == "L") ? "Lodgement For " + date.ToShortDateString() : "Lodgement Reversal For " + date.ToShortDateString()
            };

            masterbalance.sales_balance = (masterbalance != null) ? getbal(masterbalance.sales_balance, newmastertransaction.amount, tran) : newmastertransaction.amount;
            masterbalance.netbalance    = (masterbalance != null) ? getbal(masterbalance.netbalance, newmastertransaction.amount, tran) : newmastertransaction.amount;

            bool loadtran = new Utilities.TransactionHelper().SaveMasterLodgementTransaction(newmlr, newmastertransaction, masterbalance);

            if (loadtran)
            {
                try
                {
                    bool mailvalidity = new Utilities.Mail_Validity_Helper().getMailSendingStatus();
                    SMS_Vendor_Validity_Helper valhelp = new SMS_Vendor_Validity_Helper();
                    sms_vendor vendor = valhelp.getVendorsByName("50kobo");

                    bool smsvalidity = (DateTime.Today <= vendor.expiry_date) ? true : false;

                    if (newmlr.bank1.code != "CASH")
                    {
                        sms message;
                        if (tran.code == "L")
                        {
                            if (smsvalidity)
                            {
                                sm mm = new CRUD.sms_crud().findByCode("CA");
                                message = new sms();

                                if (message.initializeParameters(shop, mm.subject.Trim() + "\r\n" + mm.content.Trim() + "\r\n" + mm.conclusion.Trim(), newmlr))
                                {
                                    message.CustomizeAndSendSMS();
                                }
                            }
                            if (mailvalidity)
                            {
                                mail       mail   = new CRUD.mail_crud().findByCode("LA");
                                MailClient client = new MailClient();
                                client.SendLodgementReimbursementMail(shop, mail, newmastertransaction);
                            }
                        }
                        else if (tran.code == "R")
                        {
                            if (smsvalidity)
                            {
                                sm mm = new CRUD.sms_crud().findByCode("DA");
                                message = new sms();
                                if (message.initializeParameters(shop, mm.subject + "\r\n" + mm.content + "\r\n" + mm.conclusion, newmlr))
                                {
                                    message.CustomizeAndSendSMS();
                                }
                            }
                            if (mailvalidity)
                            {
                                mail       mail   = new CRUD.mail_crud().findByCode("RA");
                                MailClient client = new MailClient();
                                client.SendLodgementReimbursementMail(shop, mail, newmastertransaction);
                            }
                        }
                    }
                }
                catch (Exception)
                {
                }
            }
            else
            {
            }
        }
        public int SaveBalanceList(List <master_balance_sheet> balance, int login, DateTime date)
        {
            int ret = 0;

            try
            {
                foreach (master_balance_sheet bals in balance)
                {
                    master_balance_sheet bal = bals;
                    if (bal.shop != -1)
                    {
                        master_balance_sheet existingbal = new CRUD.master_balance_sheet_crud().find_master_balance_sheet_By_ShopId(bal.shop.Value);

                        if (existingbal == null)
                        {
                            using (TransactionScope scope = new TransactionScope())
                            {
                                master_transaction transaction = new master_transaction
                                {
                                    app_id          = Application().app_id,
                                    amount          = bal.netbalance,
                                    balance_before  = existingbal.netbalance,
                                    balance_after   = Decimal.Add(bal.netbalance.Value, existingbal.netbalance.Value),
                                    description     = "Balance B/D AS AT" + date.ToShortDateString(),
                                    details         = "Balance B/D AS AT " + date.ToShortDateString(),
                                    posted_by       = login,
                                    shop            = bal.shop,
                                    trans_category  = (bal.netbalance >= 0) ? creditbalance.id : debitbalance.id,
                                    trans_timestamp = DateTime.Now,
                                    trans_type      = (bal.netbalance >= 0) ? 0 : 1
                                };
                                db.master_transactions.InsertOnSubmit(transaction);
                                db.master_balance_sheets.InsertOnSubmit(bal);

                                scope.Complete();
                            }
                        }

                        else // (existingbal.netbalance != 0 || existingbal.sales_balance != 0)
                        {
                            using (TransactionScope scope = new TransactionScope())
                            {
                                master_transaction transaction = new master_transaction
                                {
                                    app_id          = Application().app_id,
                                    amount          = bal.netbalance,
                                    balance_before  = existingbal.netbalance,
                                    balance_after   = Decimal.Add(bal.netbalance.Value, existingbal.netbalance.Value),
                                    description     = "Balance B/D AS AT" + date.ToShortDateString(),
                                    details         = "Balance B/D AS AT " + date.ToShortDateString(),
                                    posted_by       = login,
                                    shop            = bal.shop,
                                    trans_category  = (bal.netbalance >= 0) ? creditbalance.id : debitbalance.id,
                                    trans_timestamp = DateTime.Now,
                                    trans_type      = (bal.netbalance >= 0) ? 0 : 1
                                };
                                db.master_transactions.InsertOnSubmit(transaction);


                                bal.id            = existingbal.id;
                                bal.sales_balance = Decimal.Add(bal.sales_balance.Value, existingbal.sales_balance.Value);
                                bal.netbalance    = Decimal.Add(bal.netbalance.Value, existingbal.netbalance.Value);

                                master_balance_sheet prev_master_balance_sheet = db.master_balance_sheets.SingleOrDefault(a => a.id == bal.id);
                                prev_master_balance_sheet.netbalance    = bal.netbalance;
                                prev_master_balance_sheet.sales_balance = bal.sales_balance;
                                db.SubmitChanges();



                                scope.Complete();
                            }
                        }//else if (existingbal.netbalance == 0 && existingbal.sales_balance == 0)
                         //{
                         //    bal = new CRUD.master_balance_sheet_crud(bal).alter_master_balance_sheet();
                         //}
                    }
                    else
                    {
                        ret++;
                    }
                }
            }
            catch (Exception)
            {
                ret++;
            }
            return(ret);
        }