/// <summary> /// 插入新订单行 /// </summary> /// <param name="order">订单</param> /// <param name="dto">订单DTO</param> /// <param name="line">订单行DTO</param> /// <param name="importType">引进方式</param> /// <param name="supplierId">供应商ID</param> private void InsertOrderLine(BFEPurchaseOrder order, BFEPurchaseOrderDTO dto, BFEPurchaseOrderLineDTO line, ActionCategory importType, int supplierId) { // 获取飞机物料机型 var material = _materialRepository.GetFiltered(m => m.Id == line.BFEMaterialId) .OfType<BFEMaterial>() .FirstOrDefault(); if (material == null) { throw new ArgumentException("未能获取飞机物料!"); } // 添加订单行 var orderLine = order.AddNewBFEPurchaseOrderLine(line.UnitPrice, line.Amount, line.Discount, line.EstimateDeliveryDate); orderLine.SetBFEMaterial(line.BFEMaterialId); }
public void InsertBFEPurchaseOrder(BFEPurchaseOrderDTO dto) { if (dto == null) { throw new ArgumentException("参数为空!"); } // 获取版本号 var id = dto.TradeId; var version = _orderRepository.GetFiltered(o => o.TradeId == id).Count() + 1; var date = DateTime.Now.Date; var seq = _orderRepository.GetFiltered(t => t.CreateDate > date).Count() + 1; // 创建订单 var order = OrderFactory.CreateBFEPurchaseOrder(version, dto.OperatorName, dto.OrderDate); order.SetTrade(dto.TradeId); order.SetCurrency(dto.CurrencyId); order.SetContractNumber(seq); order.SetLinkman(dto.LinkmanId); order.SetSourceGuid(dto.SourceGuid); order.SetName(dto.Name); order.SetOrderStatus((OrderStatus) dto.Status); if (!string.IsNullOrWhiteSpace(dto.LogWriter)) { order.SetNote(dto.LogWriter); } if (dto.ContractDocGuid != Guid.Empty) { order.SetContractDoc(dto.ContractDocGuid, dto.ContractName); } // 获取引进方式 var importType = _actionCategoryRepository.GetFiltered(a => a.ActionType == "引进" && a.ActionName == "购买") .FirstOrDefault(); // 处理订单行 dto.BFEPurchaseOrderLines.ToList() .ForEach(line => InsertOrderLine(order, dto, line, importType, dto.SupplierId)); // 处理分解合同 dto.ContractContents.ToList().ForEach(c => InsertContractContent(order, c)); _orderRepository.Add(order); }
public void UpdateBFEPurchaseOrder(BFEPurchaseOrderDTO dto) { if (dto == null) { throw new ArgumentException("参数为空!"); } var order = _orderRepository.Get(dto.Id) as BFEPurchaseOrder; if (order != null) { // 更新当前记录 order.SetCurrency(dto.CurrencyId); order.SetLinkman(dto.LinkmanId); order.SetName(dto.Name); order.SetOperatorName(dto.OperatorName); order.SetOrderStatus((OrderStatus) dto.Status); if (!string.IsNullOrWhiteSpace(dto.LogWriter)) { order.SetNote(dto.LogWriter); } if (dto.ContractDocGuid != Guid.Empty) { order.SetContractDoc(dto.ContractDocGuid, dto.ContractName); } // 获取引进方式 var importType = _actionCategoryRepository.GetFiltered(a => a.ActionType == "引进" && a.ActionName == "购买") .FirstOrDefault(); var trade = _tradeRepository.Get(order.TradeId); // 处理订单行 var dtoOrderLines = dto.BFEPurchaseOrderLines; var orderLines = order.OrderLines; DataHelper.DetailHandle(dtoOrderLines.ToArray(), orderLines.OfType<BFEPurchaseOrderLine>().ToArray(), c => c.Id, p => p.Id, i => InsertOrderLine(order, dto, i, importType, trade.SupplierId), UpdateOrderLine, d => _orderRepository.RemoveOrderLine(d)); // 处理分解合同 var dtoContents = dto.ContractContents; var contents = order.ContractContents; DataHelper.DetailHandle(dtoContents.ToArray(), contents.ToArray(), c => c.Id, p => p.Id, i => InsertContractContent(order, i), UpdateContractContent, d => _orderRepository.RemoveContractContent(d)); } }
public void DeleteBFEPurchaseOrder(BFEPurchaseOrderDTO dto) { if (dto == null) { throw new ArgumentException("参数为空!"); } var deleteBFEPurchaseOrder = _orderRepository.Get(dto.Id); if (deleteBFEPurchaseOrder != null) { _relatedDocRepository.GetFiltered(r => r.SourceId == deleteBFEPurchaseOrder.SourceGuid) .ToList() .ForEach(r => _relatedDocRepository.Remove(r)); _orderRepository.Remove(deleteBFEPurchaseOrder); } }