Esempio n. 1
0
 public static PurchaseOrderDetail FromDto(PurchaseOrderDetailDto dto)
 => new PurchaseOrderDetail(new Code(dto.ProductCode)
                            , new Name(dto.Description)
                            , dto.Cost
                            , dto.Qty
                            , dto.DiscountValue
                            , dto.TaxPercent
                            , null);
Esempio n. 2
0
        public async Task <PurchaseOrderDetailDto> GetPurchaseOrderDetail(int purchaseOrderID, int purchaseOrderDetailID, bool addIncludes)
        {
            DataModels.PurchaseOrderDetail resultDb = null;
            PurchaseOrderDetailDto         result   = null;

            if (addIncludes)
            {
                resultDb = await _purchaseOrderDetailRepository.All(_includes)
                           .FirstOrDefaultAsync
                           (
                    x => x.PurchaseOrderID == purchaseOrderID &&
                    x.PurchaseOrderDetailID == purchaseOrderDetailID
                           );
            }
            else
            {
                resultDb = await _purchaseOrderDetailRepository.FindAsync(purchaseOrderID, purchaseOrderDetailID);
            }

            result = _mapper.Map <PurchaseOrderDetailDto>(resultDb);

            return(result);
        }
Esempio n. 3
0
        public List <SalesOrderDto> GetPurchaseOrderSalesOrders(PurchaseOrderDetailDto searchedItems)
        {
            using (var workFlowEntities = new WorkFlowManagerDBEntities())
            {
                var fabricquery =
                    workFlowEntities.tbl_FabricAttriputes.Include("tbl_lkp_UoM").FirstOrDefault(x => x.FabricID == searchedItems.ItemId);
                var itemiserial = 0;
                if (fabricquery == null)
                {
                    var accQuery = workFlowEntities.tbl_AccessoryAttributesHeader.FirstOrDefault(x => x.Code == searchedItems.ItemId);
                    if (accQuery != null)
                    {
                        itemiserial = accQuery.Iserial;
                    }
                }
                else
                {
                    itemiserial = fabricquery.Iserial;
                }
                var reservedSalesOrders =
                    workFlowEntities.Tbl_ReservationDetails
                    .Where(
                        x =>
                        x.Tbl_ReservationMainDetails1.Fabric == searchedItems.ItemId &&
                        x.Tbl_ReservationMainDetails1.FabricColor == searchedItems.FabricColor)
                    .Select(w => new SalesOrderDto {
                    SalesOrder = w.SalesOrder, SalesOrderColor = w.SalesOrderColor
                });

                var salesOrders = (from bom in workFlowEntities.BOMs.Include("TblBOMStyleColors.TblColor").Include("TblBOMSizes").Include("TblSalesOrder1.TblStyle1").Include("TblSalesOrder1.TblSalesOrderColors.TblColor1")
                                   where bom.BOM_Fabric == itemiserial && bom.TblBOMStyleColors.Any(w => w.TblColor.Code == searchedItems.FabricColor) &&
                                   bom.TblSalesOrder1.SalesOrderType == 2 && bom.TblSalesOrder1.TblStyle1.TblLkpSeason == searchedItems.TblSeason &&
                                   bom.TblSalesOrder1.TblStyle1.Brand == searchedItems.Brand && bom.TblSalesOrder1.TblStyle1.TblLkpBrandSection == searchedItems.TblBrandSection
                                   select bom);
                var querylist = new List <SalesOrderDto>();
                foreach (var bom in salesOrders.ToList())
                {
                    double?Temp = 0;
                    if (bom.BOM_FabricType != "Accessories" && fabricquery.tbl_lkp_UoM.Code != "Meter")
                    {
                        Temp = bom.TblBOMSizes.Max(x => x.MaterialUsage) *
                               ((fabricquery.WeightPerSquarMeterAsRawMax / 1000 * fabricquery.WidthAsRawMax / 100));
                    }
                    else
                    {
                        Temp = bom.TblBOMSizes.Max(x => x.MaterialUsage);
                    }

                    foreach (var row in bom.TblBOMStyleColors.Where(x => x.TblColor != null && x.TblColor.Code.ToLower() == searchedItems.FabricColor.ToLower()))
                    {
                        if (!reservedSalesOrders.Any(x => x.SalesOrderColor == row.TblColor1.Code && x.SalesOrder == row.BOM1.TblSalesOrder1.SalesOrderCode))
                        {
                            querylist.Add(new SalesOrderDto
                            {
                                SalesOrder      = row.BOM1.TblSalesOrder1.SalesOrderCode,
                                SalesOrderColor = row.TblColor1.Code,
                                IntialQty       =
                                    (float)(bom.TblSalesOrder1.TblSalesOrderColors.Where(x => x.TblColor1.Code.ToLower() == row.TblColor1.Code.ToLower()).Sum(x => x.Total) * Temp)
                            });
                        }
                    }
                }
                return(querylist);
            }
        }
Esempio n. 4
0
        public async Task <ActionResult> EditPurchaseOrder(PurchaseOrderHeaderDto dto)
        {
            foreach (var dtoItem in dto.PurchaseOrderDetails)
            {
                var check = await _stockService.CheckIfExist(dtoItem.ProductId);

                var old = await _purchaseOrderDetailsService.GetDetailsAsync(dtoItem.Id);

                if (old != null)
                {
                    if (dtoItem.TotalPieces > old.TotalPieces)
                    {
                        var change  = dtoItem.TotalPieces - old.TotalPieces;
                        var tAmount = dtoItem.PricePerPiece * change;
                        check.TotalPieces += change;
                        check.Amount      += tAmount;

                        await _stockService.UpdateAsync(check);
                    }
                    else if (dtoItem.TotalPieces < old.TotalPieces)
                    {
                        var change  = old.TotalPieces - dtoItem.TotalPieces;
                        var tAmount = dtoItem.PricePerPiece * change;
                        check.TotalPieces -= change;
                        check.Amount      -= tAmount;

                        await _stockService.UpdateAsync(check);
                    }
                }
                else
                {
                    check.TotalPieces += dtoItem.TotalPieces;
                    check.Amount      += dtoItem.Amount;

                    await _stockService.UpdateAsync(check);
                }
            }
            var updated = await _purchaseOderService.UpdateAsync(dto);

            foreach (var items in dto.PurchaseOrderDetails)
            {
                var getCheck = await _purchaseOrderDetailsService.GetAsync(new EntityDto <int>(items.Id));

                if (getCheck == null)
                {
                    var toCreate = new PurchaseOrderDetailDto
                    {
                        PurchaseOrderHeaderId = dto.PurchaseOrderId,
                        ProductId             = items.ProductId,
                        Case              = items.Case,
                        ProdCase          = items.ProdCase,
                        Box               = items.Box,
                        ProdPiece         = items.ProdPiece,
                        Piece             = items.Piece,
                        Gross             = items.Gross,
                        Discount          = items.Discount,
                        Net               = items.Net,
                        TotalProductPrice = items.TotalProductPrice,
                    };
                    await _purchaseOrderDetailsService.CreateAsync(toCreate);
                }
                else if (getCheck != null)
                {
                    var toUpdate = new PurchaseOrderDetailDto
                    {
                        Id                    = items.Id,
                        CreationTime          = items.CreationTime,
                        CreatorUserId         = items.CreatorUserId,
                        TenantId              = items.TenantId,
                        PurchaseOrderHeaderId = items.PurchaseOrderHeaderId,
                        ProductId             = items.ProductId,
                        Case                  = items.Case,
                        ProdCase              = items.ProdCase,
                        Box                   = items.Box,
                        ProdPiece             = items.ProdPiece,
                        Piece                 = items.Piece,
                        Gross                 = items.Gross,
                        Discount              = items.Discount,
                        Net                   = items.Net,
                        TotalProductPrice     = items.TotalProductPrice,
                    };
                    await _purchaseOrderDetailsService.UpdateAsync(toUpdate);
                }
            }

            return(Ok(updated));
        }