コード例 #1
0
        private SaleDataModel ConvertViewModel(SaleDataViewModel viewModel)
        {
            var result = new SaleDataModel
            {
                SalesChannel  = viewModel.SalesChannel,
                TotalCost     = decimal.Parse(viewModel.TotalCost),
                Region        = viewModel.Region,
                TotalProfit   = decimal.Parse(viewModel.TotalProfit),
                OrderPriority = viewModel.OrderPriority,
                UnitCost      = decimal.Parse(viewModel.UnitCost),
                TotalRevenue  = decimal.Parse(viewModel.TotalRevenue),
                ShipDate      = viewModel.ShipDate,
                UnitsSold     = viewModel.UnitsSold,
                UnitPrice     = decimal.Parse(viewModel.UnitPrice),
                ItemType      = viewModel.ItemType,
                Country       = viewModel.Country,
                OrderDate     = viewModel.OrderDate
            };

            if (viewModel.OrderId.HasValue)
            {
                result.OrderId = viewModel.OrderId.Value;
            }

            return(result);
        }
コード例 #2
0
        public void PostSale(SaleModel sale, string cashierId)
        {
            List <SaleDetailDataModel> saleDetails = new List <SaleDetailDataModel>();
            ProductData productData = new ProductData();
            var         taxRate     = ConfigHelper.GetTaxRate();

            foreach (var item in sale.SaleDetails)
            {
                var details = new SaleDetailDataModel
                {
                    ProductId = item.ProductId,
                    Quantity  = item.Quantity
                };
                var productInfo = productData.GetProductById(item.ProductId);
                if (productInfo == null)
                {
                    throw new Exception($"The product WHERE id = {item.ProductId} is null");
                }
                details.PurchasePrice = productInfo.RetailPrice * details.Quantity;
                if (productInfo.isTaxable)
                {
                    details.Tax = details.PurchasePrice * taxRate;
                }
                saleDetails.Add(details);
            }


            SaleDataModel saleData = new SaleDataModel
            {
                SubTotal  = saleDetails.Sum(x => x.PurchasePrice),
                Tax       = saleDetails.Sum(x => x.Tax),
                CashierId = cashierId,
            };

            saleData.Total = saleData.SubTotal + saleData.Tax;

            using (SqlDataAccess sql = new SqlDataAccess())
            {
                try
                {
                    sql.StartTransaction("RMData");
                    sql.SaveDataInTransaction("dbo.spSaleInsert", saleData);
                    saleData.Id = sql.LoadDataInTransaction <int, dynamic>("dbo.spSaleLookup", new { saleData.CashierId, saleData.SaleDate }, "RMData").FirstOrDefault();
                    foreach (var item in saleDetails)
                    {
                        item.SaleId = saleData.Id;
                        sql.SaveDataInTransaction("dbo.spSaleDetailInsert", item);
                    }
                }
                catch
                {
                    sql.RollBackTransaction();
                    throw;
                }
            }
        }
コード例 #3
0
ファイル: SalesService.cs プロジェクト: Gvin/LinnworksTest
        public async Task <bool> AddOrUpdateRecord(SaleDataModel saleData)
        {
            if (_database.Sales.Any(sale => sale.OrderId == saleData.OrderId))
            {
                _database.Sales.Attach(saleData);
                _database.Entry(saleData).State = EntityState.Modified;
            }
            else
            {
                _database.Sales.Add(saleData);
            }

            var changes = await _database.SaveChangesAsync();

            return(changes == 1);
        }
コード例 #4
0
ファイル: SalesService.cs プロジェクト: Gvin/LinnworksTest
 public async Task SaveSaleData(SaleDataModel saleData)
 {
     _database.Sales.Add(saleData);
     await _database.SaveChangesAsync();
 }