public dynamic Insert(RetailSalesInvoice model)
        {
            try
            {
                if (!AuthenticationModel.IsAllowed("Create", Core.Constants.Constant.MenuName.RetailSalesInvoice, Core.Constants.Constant.MenuGroupName.Transaction))
                {
                    Dictionary <string, string> Errors = new Dictionary <string, string>();
                    Errors.Add("Generic", "You are Not Allowed to Add record");

                    return(Json(new
                    {
                        Errors
                    }, JsonRequestBehavior.AllowGet));
                }

                model = _retailSalesInvoiceService.CreateObject(model, _warehouseService);
            }
            catch (Exception ex)
            {
                LOG.Error("Insert Failed", ex);
                Dictionary <string, string> Errors = new Dictionary <string, string>();
                Errors.Add("Generic", "Error " + ex);

                return(Json(new
                {
                    Errors
                }, JsonRequestBehavior.AllowGet));
            }

            return(Json(new
            {
                model.Errors
            }));
        }
        public void PopulateRetailSalesData()
        {
            TimeSpan salesDate = new TimeSpan(10, 0, 0, 0);
            TimeSpan dueDate   = new TimeSpan(3, 0, 0, 0);

            // Cash with GroupPricing
            rsi1 = new RetailSalesInvoice()
            {
                SalesDate   = DateTime.Today.Subtract(salesDate),
                WarehouseId = localWarehouse.Id,
                CashBankId  = cashBank.Id,
                ContactId   = contact.Id,
                DueDate     = DateTime.Today.Subtract(dueDate)
            };
            _retailSalesInvoiceService.CreateObject(rsi1, _warehouseService);

            // Cash with GroupPricing
            rsi2 = new RetailSalesInvoice()
            {
                SalesDate      = DateTime.Today.Subtract(salesDate),
                WarehouseId    = localWarehouse.Id,
                CashBankId     = cashBank.Id,
                ContactId      = contact.Id,
                DueDate        = DateTime.Today.Subtract(dueDate),
                IsGroupPricing = true,
                Discount       = 25,
                Tax            = 10,
            };
            _retailSalesInvoiceService.CreateObject(rsi2, _warehouseService);

            // Bank without GroupPricing
            rsi3 = new RetailSalesInvoice()
            {
                SalesDate    = DateTime.Today.Subtract(salesDate),
                WarehouseId  = localWarehouse.Id,
                CashBankId   = cashBank2.Id,
                ContactId    = contact.Id,
                DueDate      = DateTime.Today.Subtract(dueDate),
                IsGBCH       = true,
                GBCH_DueDate = DateTime.Today.Subtract(dueDate),
                GBCH_No      = "G0001"
            };
            _retailSalesInvoiceService.CreateObject(rsi3, _warehouseService);

            rsid1 = new RetailSalesInvoiceDetail()
            {
                RetailSalesInvoiceId = rsi1.Id,
                Quantity             = 100,
                ItemId = blanket1.Id,
            };
            _retailSalesInvoiceDetailService.CreateObject(rsid1, _retailSalesInvoiceService, _itemService, _warehouseItemService, _priceMutationService);

            rsid2 = new RetailSalesInvoiceDetail()
            {
                RetailSalesInvoiceId = rsi2.Id,
                Quantity             = 100,
                ItemId = blanket1.Id,
            };
            _retailSalesInvoiceDetailService.CreateObject(rsid2, _retailSalesInvoiceService, _itemService, _warehouseItemService, _priceMutationService);

            rsid3 = new RetailSalesInvoiceDetail()
            {
                RetailSalesInvoiceId = rsi3.Id,
                Quantity             = 100,
                ItemId = blanket1.Id,
            };
            _retailSalesInvoiceDetailService.CreateObject(rsid3, _retailSalesInvoiceService, _itemService, _warehouseItemService, _priceMutationService);

            _retailSalesInvoiceService.ConfirmObject(rsi1, rsi1.SalesDate, contact.Id, _retailSalesInvoiceDetailService, _contactService, _priceMutationService, _receivableService, _retailSalesInvoiceService, _warehouseItemService, _warehouseService, _itemService, _barringService, _stockMutationService, _closingService);
            _retailSalesInvoiceService.ConfirmObject(rsi2, rsi2.SalesDate, contact2.Id, _retailSalesInvoiceDetailService, _contactService, _priceMutationService, _receivableService, _retailSalesInvoiceService, _warehouseItemService, _warehouseService, _itemService, _barringService, _stockMutationService, _closingService);
            _retailSalesInvoiceService.ConfirmObject(rsi3, rsi3.SalesDate, contact3.Id, _retailSalesInvoiceDetailService, _contactService, _priceMutationService, _receivableService, _retailSalesInvoiceService, _warehouseItemService, _warehouseService, _itemService, _barringService, _stockMutationService, _closingService);

            _retailSalesInvoiceService.PaidObject(rsi1, 200000, _cashBankService, _receivableService, _receiptVoucherService, _receiptVoucherDetailService, _contactService, _cashMutationService, _generalLedgerJournalService, _accountService, _closingService);
            _retailSalesInvoiceService.PaidObject(rsi2, rsi2.Total, _cashBankService, _receivableService, _receiptVoucherService, _receiptVoucherDetailService, _contactService, _cashMutationService, _generalLedgerJournalService, _accountService, _closingService);
            _retailSalesInvoiceService.PaidObject(rsi3, rsi3.Total, _cashBankService, _receivableService, _receiptVoucherService, _receiptVoucherDetailService, _contactService, _cashMutationService, _generalLedgerJournalService, _accountService, _closingService);
        }