Exemple #1
0
        private void UpsertDailyProductReport(
            string productDetailId,
            ReportParameterBase reportParameterBase,
            List <IGrouping <string, SaleDetail> > saleDetailsGrouped,
            List <IGrouping <string, PurchaseDetail> > purchaseDetailsGrouped,
            List <ProductDetail> productDetails,
            List <ProductCategory> categories)
        {
            ProductReportParameter parameter = new ProductReportParameter(
                reportParameterBase.Date,
                reportParameterBase.Value,
                reportParameterBase.ReportShopId);

            parameter.StartingQuantity = this.GetPrevious(parameter);

            var sold = saleDetailsGrouped.Exists(x => x.Key == productDetailId)
                           ? saleDetailsGrouped.First(x => x.Key == productDetailId).ToList()
                           : new List <SaleDetail>();
            var purchased = purchaseDetailsGrouped.Exists(x => x.Key == productDetailId)
                                ? purchaseDetailsGrouped.First(x => x.Key == productDetailId).ToList()
                                : new List <PurchaseDetail>();

            T   productDetail = productDetails.First(x => x.Id == productDetailId);
            var category      = categories.First(x => x.Id == productDetail.ProductCategoryId);
            var productReport = this.CreateModel(parameter, category, productDetail, purchased, sold);

            Console.WriteLine(
                $"Model saving - {productReport.Date} and product {productReport.ProductDetailName} and SaleQuantity {productReport.QuantitySaleToday}");
            this.SaveReport(productReport);
        }
Exemple #2
0
 private double GetPrevious(ProductReportParameter parameter)
 {
     //var db = BusinessDbContext.Create();
     //var date = parameter.Date.Date;
     //var report = db.ProductReports.Where(
     //    x => x.ReportTimeType == parameter.ReportTimeType
     //         && x.ProductReportType == parameter.ProductReportType
     //         && x.ProductDetailId == parameter.ProductDetailId
     //         && x.Date < date
     //         && x.ShopId == parameter.ReportShopId).OrderByDescending(x => x.Date).FirstOrDefault();
     //return report != null ? report.EndingQuantity : 0;
     return(0);
 }
Exemple #3
0
        private M CreateModel(ProductReportParameter parameter, ProductCategory category,
                              T productDetail, List <PurchaseDetail> purchaseDetails, List <SaleDetail> saleDetails)
        {
            double purchaseTotal    = purchaseDetails.Sum(x => x.CostTotal);
            double purchaseQuantity = purchaseDetails.Sum(x => x.Quantity);
            var    saleCostTotal    = saleDetails.Sum(x => x.CostTotal);
            double saleQuantity     = saleDetails.Sum(x => x.Quantity);
            double salePriceTotal   = saleDetails.Sum(x => x.PriceTotal);
            double startingQuantity = parameter.StartingQuantity;
            M      productReport    = new M();

            productReport.Id          = Guid.NewGuid().ToString();
            productReport.CreatedFrom = "BizBook";
            productReport.CreatedBy   = "Automatic";
            productReport.ModifiedBy  = "Automatic";
            productReport.Created     = DateTime.Today.Date;
            productReport.Modified    = DateTime.Today.Date;
            productReport.ShopId      = parameter.ReportShopId;
            // productReport.ReportTimeType = ReportTimeType.Daily;
            productReport.Date      = parameter.Date.Date;
            productReport.Value     = parameter.Date.Date.ToString("dd-MMMM-yyyy");
            productReport.RowsCount = 0;
            //  productReport.ProductReportType = ProductReportType.ProductDetailByAmount;
            productReport.ProductDetailId     = productDetail.Id;
            productReport.ProductCategoryId   = category.Id;
            productReport.ProductGroupId      = category.ProductGroupId;
            productReport.ProductDetailName   = productDetail.Name;
            productReport.ProductCategoryName = category.Name;
            productReport.ProductGroupName    = category.ProductGroup.Name;

            //productReport.PurchaseTotal = purchaseTotal;
            //productReport.PurchaseQuantity = purchaseQuantity;
            //productReport.PurchasePricePerUnitAverage = purchaseQuantity == 0 ? 0 : purchaseTotal / purchaseQuantity;
            //productReport.SaleTotal = saleDetails.Sum(x => x.Total);
            //productReport.SaleCostTotal = saleCostTotal;
            //productReport.SalePriceTotal = salePriceTotal;
            //productReport.SaleDiscountTotal = saleDetails.Sum(x => x.DiscountTotal);
            //productReport.SaleQuantity = saleQuantity;
            //productReport.SaleCostPricePerUnitAverage = saleQuantity == 0 ? 0 : saleCostTotal / saleQuantity;
            //productReport.SalePricePerUnitAverage = saleQuantity == 0 ? 0 : salePriceTotal / saleQuantity;
            //productReport.StartingQuantity = startingQuantity;
            //productReport.EndingQuantity = startingQuantity + purchaseQuantity - saleQuantity;

            return(productReport);
        }