public void ProcessRequest(ProductionRequest request) { lock (s_lock) { using (var tx = m_database.OpenTransaction()) { var context = Validate(request); if (!request.IsValid) { throw new InvalidOperationException(request.Messages.FirstOrDefault()?.Text ?? request.Components.SelectMany(c => c.Messages) .FirstOrDefault()?.Text ?? "chyba :("); } var components = new List <Tuple <BatchKey, Amount> >(); foreach (var component in request.Components) { foreach (var aloc in component.Resolutions.Where(r => r.Amount > 0m)) { components.Add(new Tuple <BatchKey, Amount>(new BatchKey(component.MaterialId, aloc.BatchNumber), new Amount(aloc.Amount, m_unitRepository.GetUnitBySymbol(aloc.UnitSymbol).Ensure()))); } } m_batchRepository.Value.CreateBatchWithComponents(request.RecipeId, context.RequestedAmount, request.ProducingBatchNumber.Trim(), request.ProducingPrice ?? 0, components, request.SourceSegmentId); tx.Commit(); } } }
public void ProcProdSched_WriteSchedulingParameters() { // Testing the writing of scheduling parameters // Creating a schedule to be serialised var schedule = new ProductionSchedule(); var testObject1 = new ProcessProductionSchedule(); testObject1.ProductionSchedules.Add(schedule); var schedulingParameters = new CMeas.Item_DataRecord() { { "myparam", new CMeas.Item_Count(3) } }; // Creating a production request with scheduling parameters var productionRequest = new ProductionRequest { // Setting scheduling parameters. Not testing the parameters thorougly // because the data record is tested elsewhere. SchedulingParameters = schedulingParameters.ToDataRecordPropertyProxy() }; schedule.ProductionRequests.Add(productionRequest); // Serialising validating and deserialising. The test will likely fails here if it fails. var xmlData = testObject1.ToXmlBytes(); var xmlString = System.Text.Encoding.UTF8.GetString(xmlData); // Just for debugging Validate(xmlData); // Asserting AssertSchedulingParameters(new ProcessProductionSchedule(xmlData)); }
public ProductionRequestContext(ISession session, ProductionRequest request) { Session = session; Request = request; request.IsValid = true; }
private void TsbtnPrint_Click(object sender, EventArgs e) { ProductionRequest rpt = new ProductionRequest(); rpt.DataSource = dt; using (ReportPrintTool printTool = new ReportPrintTool(rpt)) { printTool.ShowRibbonPreviewDialog(); } }
private void dgwStockEntranceList_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { if (modeReport == 1) { DataGridViewRow currentRow = dgwStockEntranceList.Rows[e.RowIndex]; string RecordCode = ObjectHelper.GetValueFromAnonymousType <string>(currentRow.DataBoundItem, "RecordCode"); string prefix = RecordCode.Substring(0, 2); switch (prefix) { case BHConstant.PREFIX_FOR_ORDER: { OrderService orderService = new OrderService(); Order order = orderService.GetOrders().Where(o => o.OrderCode == RecordCode).FirstOrDefault(); if (order != null) { AddOrder frmAddOrder = new AddOrder(); frmAddOrder.loadDataForEditOrder(order.Id); frmAddOrder.CallFromUserControll = this; frmAddOrder.ShowDialog(); } } break; case BHConstant.PREFIX_FOR_ENTRANCE: { EntranceStockService stockService = new EntranceStockService(); EntranceStock stock = stockService.GetEntranceStocks().Where(r => r.EntranceCode == RecordCode).FirstOrDefault(); if (stock != null) { AddEntranceStock frmAddEntranceStock = new AddEntranceStock(); frmAddEntranceStock.loadDataForEditEntranceStock(stock.Id); frmAddEntranceStock.CallFromUserControll = this; frmAddEntranceStock.ShowDialog(); } } break; case BHConstant.PREFIX_FOR_PRODUCTION: { ProductionRequestService requestService = new ProductionRequestService(); ProductionRequest request = requestService.GetProductionRequests().Where(r => r.ReqCode == RecordCode).FirstOrDefault(); if (request != null) { AddProductionRequest addProductionRequest = new AddProductionRequest(); addProductionRequest.loadDataForEditProductRequest(request.Id); addProductionRequest.CallFromUserControll = this; addProductionRequest.ShowDialog(); } } break; } } }
public void ValidateRequest(ProductionRequest request) { //TODO i wouldn't even try to process multiple allocations in parallel, but should be optimized to lock by user (project?) lock (s_lock) { using (var tx = m_database.OpenTransaction()) { Validate(request); tx.Commit(); } } }
private IEnumerable <Sandwich> DoBatch(ProductionRequest productionRequest) { List <Sandwich> result = new List <Sandwich>(productionRequest.Count); for (int i = 0; i < productionRequest.Count; i++) { var requested = Produce(productionRequest.Kind); result.Add(requested); } Console.WriteLine("[V: {0}] Batch made: {1} of {2}", Name, productionRequest.Count, productionRequest.Kind); return(result); }
private ProductionRequestContext Validate(ProductionRequest request) { var context = new ProductionRequestContext(m_session, request); foreach (var step in GetSteps()) { step.Process(context); } request.IsFirstRound = false; request.IsValid = request.IsValid && request.Components.All(c => c.IsValid); return(context); }
private void BtnPrDown_Click(object sender, EventArgs e) { bool bFlag = false; DataTable dt = new DataTable(); List <Wo_Req_ItemVO> list = dgvMainGrid.DataSource as List <Wo_Req_ItemVO>; for (int i = 0; i < list.Count; i++) { if (dgvMainGrid.Rows[i].Cells[0] is DataGridViewCheckBoxCell chk) { if (Convert.ToBoolean(chk.Value)) { bFlag = true; reportList.Add(list[i]); } else { continue; } } } dt = ListToDataTable.ToDataTable(reportList); ProductionRequest rpt = new ProductionRequest(); rpt.DataSource = dt; if (bFlag) { PPS_SCH_001_Report frm = new PPS_SCH_001_Report(dt); frm.documentViewer1.DocumentSource = null; frm.documentViewer1.DocumentSource = rpt; frm.MdiParent = MdiParent; frm.WindowState = FormWindowState.Maximized; frm.Show(); TabPage newTab = new TabPage(); newTab.Tag = frm.Name; newTab.Text = "생산의뢰목록"; frm.Tag = frm.Name; ((MainForm)this.MdiParent).tabControl2.TabPages.Add(newTab); } else { MessageBox.Show("목록을 선택해 주세요.", "작업지시관리", MessageBoxButtons.OK); } }
private void ResolveRequests(IEnumerable <ProductionRequest> requests) { ProductionRequest requestToCarryOut = null; foreach (var nextRequest in requests) { if (requestToCarryOut == null || requestToCarryOut.Project.Progress < nextRequest.Project.Progress) { requestToCarryOut = nextRequest; } } if (requestToCarryOut != null) { requestToCarryOut.Project.Execute(requestToCarryOut.RequestingCity); } }
private void ProcessResolutions(ProductionRequest request, IRecipeComponent recipeComponent, ProductionComponent requestComponent, decimal multiplier, DateTime sourceBatchesMadeBefore) { if (TryProcessTransformationInput(request, recipeComponent, requestComponent) && (!requestComponent.IsValid)) { return; } var requiredAmount = new Amount(recipeComponent.Amount * multiplier, m_unitRepository.GetUnit(recipeComponent.UnitId)); ClearUserAllocationsIfQuantityChanged(requestComponent, requiredAmount); var requiredBatchNr = recipeComponent.IsTransformationInput ? request.ProducingBatchNumber : null; var resolutions = m_batchFacade.ResolveMaterialDemand( recipeComponent.MaterialId, requiredAmount, requiredBatchNr, false, true, sourceBatchesMadeBefore, request.SourceSegmentId); RemoveComponentsNotProposedBySystem(requestComponent, resolutions, requiredAmount); AddMissingComponents(requestComponent, resolutions, requiredAmount, request.SourceSegmentId != null && request.IsFirstRound); var userAllocatedAmount = m_amountProcessor.Sum(requestComponent.Resolutions.Where(r => r.GetAmount(m_unitRepository) != null) .Select(r => r.GetAmount(m_unitRepository))) ?? new Amount(0, requiredAmount.Unit); var remaining = m_amountProcessor.Subtract(requiredAmount, userAllocatedAmount); if (!resolutions.CompletelyAllocated) { requestComponent.Invalidate("Potřebné množství není dostupné"); } if (remaining.IsPositive) { //seems we allocated the requested amount requestComponent.Invalidate($"Zbývá vložit {remaining}"); } else if (remaining.IsNegative) { requestComponent.Invalidate($"Přebývá {m_amountProcessor.Neg(remaining)}"); } }
public void Execute(ProductionRequest request) { switch (request.CallCase) { case ProductionRequest.CallOneofCase.None: break; case ProductionRequest.CallOneofCase.ClearBuildOrder: _manager.ClearBuildOrder(); break; case ProductionRequest.CallOneofCase.QueueUnit: _manager.QueueUnit(request.QueueUnit.UnitId, request.QueueUnit.Pos, request.QueueUnit.Spacing, request.QueueUnit.Skippable); break; case ProductionRequest.CallOneofCase.QueueTech: _manager.QueueTech(request.QueueTech.UpgradeId, request.QueueTech.Skippable); break; } }
private static bool TryProcessTransformationInput(ProductionRequest request, IRecipeComponent recipeComponent, ProductionComponent requestComponent) { if (recipeComponent.IsTransformationInput) { for (var i = requestComponent.Resolutions.Count - 1; i >= 0; i--) { if (requestComponent.Resolutions[i].BatchNumber ?.Equals(request.ProducingBatchNumber ?? string.Empty) != true) { requestComponent.Resolutions.RemoveAt(i); } } if (string.IsNullOrWhiteSpace(request.ProducingBatchNumber)) { requestComponent.Invalidate("Receptura vyžaduje shodné číslo šarže"); } return(true); } return(false); }
public void ProcessProductionRequest(ProductionRequest request) { m_productionService.ProcessRequest(request.Ensure("Request object required")); }
public IActionResult Post([FromBody] ProductionRequest t) { List <OrganizationProductions> organizationProductionsList = new List <OrganizationProductions>(); Parallel.ForEach(t.organizations, organization => { OrganizationProductions organizationProductions = new OrganizationProductions(); List <CentralProductions> centralProductionsList = new List <CentralProductions>(); Parallel.ForEach(organization.centrals, central => { CentralProductions centralProductions = new CentralProductions(); Parallel.ForEach(t.types, type => { if (type == 0) { string kgupString = Api.GetRequest($"https://seffaflik.epias.com.tr/transparency/service/production/dpp?organizationEIC={organization.etso}&uevcbEIC={central.eic}&startDate={t.start}&endDate={t.end}"); JsonElement json = JsonDocument.Parse(kgupString).RootElement; var kgoek = new KgupOrEak(); foreach (var hour in json.GetProperty("body").GetProperty("dppList").EnumerateArray()) { var field = new KgupOrEakField { date = hour.GetProperty("tarih").GetString(), sum = hour.GetProperty("toplam").GetDouble() }; kgoek.hourly.Add(field); } kgoek.hourly = kgoek.hourly.OrderBy(o => o.date).ToList(); foreach (var day in json.GetProperty("body").GetProperty("statistics").EnumerateArray()) { var field = new KgupOrEakField { date = day.GetProperty("tarih").GetString(), sum = day.GetProperty("toplamSum").GetDouble() }; kgoek.daily.Add(field); } kgoek.daily = kgoek.daily.OrderBy(o => o.date).ToList(); centralProductions.types.kgup = kgoek; } else if (type == 1) { string eakString = Api.GetRequest($"https://seffaflik.epias.com.tr/transparency/service/production/aic?organizationEIC={organization.etso}&uevcbEIC={central.eic}&startDate={t.start}&endDate={t.end}"); JsonElement json = JsonDocument.Parse(eakString).RootElement; var kgoek = new KgupOrEak(); foreach (var hour in json.GetProperty("body").GetProperty("aicList").EnumerateArray()) { var field = new KgupOrEakField { date = hour.GetProperty("tarih").GetString(), sum = hour.GetProperty("toplam").GetDouble() }; kgoek.hourly.Add(field); } kgoek.hourly = kgoek.hourly.OrderBy(o => o.date).ToList(); foreach (var day in json.GetProperty("body").GetProperty("statistics").EnumerateArray()) { var field = new KgupOrEakField { date = day.GetProperty("tarih").GetString(), sum = day.GetProperty("toplamSum").GetDouble() }; kgoek.daily.Add(field); } kgoek.daily = kgoek.daily.OrderBy(o => o.date).ToList(); centralProductions.types.eak = kgoek; } else if (type == 2) { string urgentString = Api.GetRequest($"https://seffaflik.epias.com.tr/transparency/service/production/urgent-market-message?startDate={t.start}&endDate={t.end}®ionId=1&uevcbId={central.id}"); JsonElement json = JsonDocument.Parse(urgentString).RootElement; List <Urgent> urgents = new List <Urgent>(); foreach (var u in json.GetProperty("body").GetProperty("urgentMarketMessageList").EnumerateArray()) { var urgent = new Urgent { urgentStartDate = u.GetProperty("caseStartDate").GetString(), hourly = new List <UrgentField>() }; foreach (var h in u.GetProperty("faultDetails").EnumerateArray()) { var urgentField = new UrgentField { date = h.GetProperty("date").GetString(), powerLoss = h.GetProperty("faultCausedPowerLoss").GetDouble() }; urgent.hourly.Add(urgentField); } urgent.hourly = urgent.hourly.OrderBy(o => o.date).ToList(); urgent.type = u.GetProperty("messageType").GetInt32(); urgent.reason = u.GetProperty("reason").GetString(); urgents.Add(urgent); } centralProductions.types.urgent = urgents; } }); centralProductions.name = central.name; centralProductions.id = central.id; centralProductions.eic = central.eic; centralProductionsList.Add(centralProductions); }); organizationProductions.name = organization.name; organizationProductions.etso = organization.etso; organizationProductions.centralProductions = centralProductionsList; organizationProductionsList.Add(organizationProductions); }); return(Ok(organizationProductionsList)); }
public ProductionRequest ValidateProductionRequest(ProductionRequest request) { m_productionService.ValidateRequest(request.Ensure("Request object required")); return(request); }
public void ProcProdSched_Write() { // Serialising, validating and deserialising byte[] xmlData = CreateObjectForTestWrite().ToXmlBytes(); Validate(xmlData); ProcessProductionSchedule testObject2 = new ProcessProductionSchedule(xmlData); // Assert creation time TestCommon.TestHelper.AssertDateTime(ParseDateTimeInUtc("2019-05-09T12:20:19Z"), testObject2.CreationDateTime); ProductionSchedule schedule = testObject2.ProductionSchedules[0]; // Assert request count Assert.AreEqual(2, schedule.ProductionRequests.Count); // Asserting a production request ProductionRequest request1 = schedule.ProductionRequests[0]; Assert.AreEqual(2, request1.SegmentRequirements.Count); // Asserting identifier Assert.AreEqual("some-id", request1.Identifier.Value); // Asserting a hierarchy scope Assert.AreEqual("psc3", request1.HierarchyScopeObj.EquipmentIdentifier.Value); Assert.AreEqual(EquipmentElementLevelType.ProcessCell, request1.HierarchyScopeObj.EquipmentElementLevel); // Asserting a segment requirement SegmentRequirement segReq = request1.SegmentRequirements[0]; Assert.AreEqual("1", segReq.ProcessSegmentIdentifier.Value); AssertDateTime(ParseDateTimeInUtc("2019-05-09T13:36:02Z"), segReq.EarliestStartTime.Value); AssertDateTime(ParseDateTimeInUtc("2019-05-09T13:37:02Z"), segReq.LatestEndTime.Value); Assert.AreEqual(1, segReq.MaterialRequirements.Count); Assert.AreEqual(1, segReq.EquipmentRequirements.Count); // Asserting nested segment requirement SegmentRequirement segReqNested = segReq.SegmentRequirements[0]; AssertDateTime(ParseDateTimeInUtc("2019-08-29T15:31:38Z"), segReqNested.EarliestStartTime.Value); // Asserting equipment requirement EquipmentRequirement eqReq = segReq.EquipmentRequirements[0]; Assert.AreEqual(1, eqReq.Quantities.Count); Assert.IsTrue(eqReq.Quantities[0].TryParseValueAsXmlBoolean()); MaterialRequirement matReq = segReq.MaterialRequirements[0]; // Asserting material definition ID Assert.AreEqual(1, matReq.MaterialDefinitionIdentifiers.Count); Assert.AreEqual("slag", matReq.MaterialDefinitionIdentifiers[0].Value); // Asserting a material lot ID Assert.AreEqual(1, matReq.MaterialLotIdentifiers.Count); Assert.AreEqual("my-lot-1", matReq.MaterialLotIdentifiers[0].Value); // Asserting material use Assert.AreEqual(MaterialUseType.Produced, matReq.MaterialUse.Value); // Asserting a material quantity Assert.AreEqual(1, matReq.Quantities.Count); QuantityValue quantity = matReq.Quantities[0]; Assert.AreEqual("12.2", quantity.RawQuantityString); Assert.AreEqual(12.2, quantity.TryParseValueAsXmlDouble(), 0.001); Assert.AreEqual("t", quantity.UnitOfMeasure); Assert.AreEqual(DataType.TypeType.doubleXml, quantity.DataType.Type); Assert.AreEqual("my-mat-key", quantity.Key.Value); // Asserting an assembly requirement Assert.AreEqual(1, matReq.AssemblyRequirements.Count); Assert.AreEqual("Ni", matReq.AssemblyRequirements[0].MaterialDefinitionIdentifiers[0].Value); }
private ProcessProductionSchedule CreateObjectForTestWrite() { // Applying identifiers (such as "SEG1") to items to enable a // verification that this test implementation has same items // as those in other environments, particularly Java. // SEG1a Creating a segment requirement SegmentRequirement segReq1 = new SegmentRequirement { ProcessSegmentIdentifier = new IdentifierType("1"), EarliestStartTime = ParseDateTimeInUtc("2019-05-09T13:36:02Z"), LatestEndTime = ParseDateTimeInUtc("2019-05-09T13:37:02Z") }; // EQ1 Add equipment requirement EquipmentRequirement eqReq = new EquipmentRequirement() { Quantities = new List <QuantityValue>() { new QuantityValue(true) } }; segReq1.EquipmentRequirements.Add(eqReq); // MAT1 Add material requirement MaterialRequirement matReq = new MaterialRequirement() { MaterialDefinitionIdentifiers = new List <IdentifierType>() { new IdentifierType("slag") }, MaterialLotIdentifiers = new List <IdentifierType>() { new IdentifierType("my-lot-1") }, MaterialUse = new MaterialUse(MaterialUseType.Produced), Quantities = new List <QuantityValue>() { new QuantityValue(12.2) { UnitOfMeasure = "t", Key = new IdentifierType("my-mat-key") } }, AssemblyRequirements = new List <MaterialRequirement>() { new MaterialRequirement() { MaterialDefinitionIdentifiers = new List <IdentifierType>() { new IdentifierType("Ni") } } } }; segReq1.MaterialRequirements.Add(matReq); // SEG1-1 Add nested segment requirement segReq1.SegmentRequirements.Add(new SegmentRequirement() { EarliestStartTime = ParseDateTimeInUtc("2019-08-29T15:31:38Z") }); // PROD1a Create one production request (for the unit "psc3") ProductionRequest request1 = new ProductionRequest { // PROD1-ID Set identifier Identifier = new IdentifierType("some-id"), // PROD1-HS Set hierarchy scope HierarchyScopeObj = new HierarchyScope( new IdentifierType("psc3"), EquipmentElementLevelType.ProcessCell ), SegmentRequirements = new List <SegmentRequirement>() { // SEG1b Add segment requirement to production request segReq1, // SEG2 Add another (empty) segment requirement new SegmentRequirement() } }; // SCH Create schedule object ProductionSchedule schedule = new ProductionSchedule() { ProductionRequests = new List <ProductionRequest>() { // PROD1b Add the production request to schedule request1, // PROD2 Adding another (empty) production request new ProductionRequest() } }; // PROPS Creating object to be serialised ProcessProductionSchedule testObject1 = new ProcessProductionSchedule() { // PROPS-CR Set creation time CreationDateTime = ParseDateTimeInUtc("2019-05-09T12:20:19Z") }; // Add schedule to the test object testObject1.ProductionSchedules.Add(schedule); return(testObject1); }
private void dgwRequestList_CellClick(object sender, DataGridViewCellEventArgs e) { if (sender is DataGridView) { DataGridViewCell cell = ((DataGridView)sender).CurrentCell; if (cell.ColumnIndex == ((DataGridView)sender).ColumnCount - 1) { DialogResult result = MessageBox.Show("Bạn có muốn xóa phiếu sản xuât này?", "Xoá phiếu sản xuât", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { DataGridViewRow currentRow = dgwRequestList.Rows[e.RowIndex]; ProductionRequestService productionRequestService = new ProductionRequestService(); ProductionRequestDetailService productionRequestDetailService = new ProductionRequestDetailService(); int id = ObjectHelper.GetValueFromAnonymousType <int>(currentRow.DataBoundItem, "Id"); ProductionRequest pr = productionRequestService.GetProductionRequest(id); List <ProductionRequestDetail> productionRequestDetails = productionRequestDetailService.GetProductionRequestDetails().Where(p => p.ProductionRequestId == id).ToList(); bool ret = false; DateTime systime = BaoHienRepository.GetBaoHienDBDataContext().GetSystemDate(); ProductLogService productLogService = new ProductLogService(); string msg = ""; int error = 0, amount = 0; ProductLog pl, newpl; foreach (ProductionRequestDetail item in productionRequestDetails) { pl = productLogService.GetProductLog(item.ProductId, item.AttributeId, item.UnitId); amount = (item.Direction == BHConstant.DIRECTION_OUT) ? -item.NumberUnit : item.NumberUnit; if (pl.AfterNumber - amount < 0) { if (error == 0) { msg += "Những sản phẩm sau đã bị XÓA nhưng không đảm bảo dữ liệu trong kho:\n"; error = 1; } msg += "- " + productLogService.GetNameOfProductLog(pl) + " : " + item.NumberUnit + "\n"; } } if (error > 0) { MessageBox.Show(msg, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } foreach (ProductionRequestDetail item in productionRequestDetails) { pl = productLogService.GetProductLog(item.ProductId, item.AttributeId, item.UnitId); amount = (item.Direction == BHConstant.DIRECTION_OUT) ? -item.NumberUnit : item.NumberUnit; newpl = new ProductLog() { ProductId = item.ProductId, AttributeId = item.AttributeId, UnitId = item.UnitId, BeforeNumber = pl.AfterNumber, Amount = item.NumberUnit, AfterNumber = pl.AfterNumber - amount, RecordCode = pr.ReqCode, Status = BHConstant.DEACTIVE_STATUS, Direction = !item.Direction, UpdatedDate = systime }; productLogService.AddProductLog(newpl); } productLogService.DeactiveProductLog(pr.ReqCode); if (!productionRequestService.DeleteProductionRequest(id)) { MessageBox.Show("Hiện tại hệ thống đang có lỗi. Vui lòng thử lại sau!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); } loadProductionRequestList(); } } } }
public void ProcProdSched_WriteEmptyItems() { // Testing if write works when there are empty items in the schedule // Create this production request here, because otherwise // there would be too many nested blocks to be readable var productionRequest3 = new ProductionRequest() { SegmentRequirements = new List <SegmentRequirement>() { new SegmentRequirement() { EquipmentRequirements = new List <EquipmentRequirement>() { new EquipmentRequirement() { // 3) Empty equipment requirement } }, MaterialRequirements = new List <MaterialRequirement>() { new MaterialRequirement() { // 4) Empty material requirement }, new MaterialRequirement() { Quantities = new List <QuantityValue>() { // 5) Empty quantity value new QuantityValue((string)null) } } } } } }; var testObject1 = new ProcessProductionSchedule() { ProductionSchedules = new List <ProductionSchedule>() { new ProductionSchedule() { ProductionRequests = new List <ProductionRequest>() { // 1) Empty production request new ProductionRequest(), new ProductionRequest() { HierarchyScopeObj = new HierarchyScope( new IdentifierType("psc2"), EquipmentElementLevelType.ProcessCell ), SegmentRequirements = new List <SegmentRequirement>() { // 2) Empty segment requirement new SegmentRequirement() } }, productionRequest3 } } } }; // Serialising, validating and deserialising. The test will likely fails here if it fails. var xmlData = testObject1.ToXmlBytes(); Validate(xmlData); var testObjectIn = new ProcessProductionSchedule(xmlData); // Asserting AssertEmptyItemsDoc(testObjectIn); }