Пример #1
0
 public static PurchaseOrderHeader FromDto(PurchaseOrderHeaderDto dto)
 => new PurchaseOrderHeader(new Code(dto.Code)
                            , new Name(dto.SupplierName)
                            , dto.SupplierId
                            , dto.Rnc
                            , new GeneralText(dto.Address)
                            , dto.DeliverDate
                            , new Name(dto.PaymentTermName)
                            , dto.PaymentTermId
                            , new Name(dto.WarehouseName)
                            , dto.WarehouseId
                            , new GeneralText(dto.Notes)
                            , dto.SubTotal
                            , dto.TaxTotal
                            , dto.DiscountTotal
                            , dto.Total
                            , dto.PurcharseOrderDetail.Map(c => FromDto(c)).ToImmutableList()
                            , dto.Created
                            , dto.Status);
Пример #2
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));
        }