private ReportConsumedMaterial.Response ReportConsumedMaterialHandler(ReportConsumedMaterial command)
        {
            var  response         = new ReportConsumedMaterial.Response();
            var  consumedMaterial = command.ConsumedMaterial;
            bool customized       = Platform.Query <IMaterialDefinitionExt>().Where(cust => cust.MaterialDefinitionId == consumedMaterial.MaterialDefinitionId).Select(cust => cust.Customized).FirstOrDefault();


            IToBeConsumedMaterialExt consumedMaterialExt = Platform.Query <IToBeConsumedMaterialExt>().FirstOrDefault(cms => cms.ToBeConsumedMaterialId == consumedMaterial.ToBeConsumedMaterialId && cms.WorkOrderOperationId == consumedMaterial.WorkOrderOperationId);

            UnplannedMat reportConsumedMaterial = new UnplannedMat(consumedMaterial.ERPOrder, consumedMaterial.OrderSequence, consumedMaterial.MaterialDefinitionNId, customized, consumedMaterialExt.Sequence, consumedMaterial.ConsumedQuantity, consumedMaterial.MaterialDefinitionUoM, consumedMaterial.Plant);

            var result = InforConnector.ReportConsumedMaterial(reportConsumedMaterial);

            if (result.InforCallSucceeded == false)
            {
                response.SetError(-1001, result.Error);
                Platform.Tracer.Write("Siemens-SimaticIT-Trace-UADMRuntime", result.Error);
            }
            else if (!string.IsNullOrEmpty(result.Error))
            {
                response.SetError(-1002, result.Error);
                Platform.Tracer.Write("Siemens-SimaticIT-Trace-UADMRuntime", result.Error);
            }

            if (response.Succeeded)
            {
                consumedMaterialExt.DeclaredQuantity = consumedMaterialExt.DeclaredQuantity + consumedMaterial.ConsumedQuantity;

                Platform.Submit(consumedMaterialExt);
            }

            return(response);
        }
        private ReportConsumedMaterials.Response ReportConsumedMaterialsHandler(ReportConsumedMaterials command)
        {
            var response      = new ReportConsumedMaterials.Response();
            var unplannedMats = new List <UnplannedMat>();
            var matExts       = new Dictionary <int, IToBeConsumedMaterialExt>();

            foreach (var consumedMat in command.ConsumedMaterials)
            {
                bool customized = Platform.Query <IMaterialDefinitionExt>().Where(cust => cust.MaterialDefinitionId == consumedMat.MaterialDefinitionId).Select(cust => cust.Customized).FirstOrDefault();


                IToBeConsumedMaterialExt consumedMaterialExt = Platform.Query <IToBeConsumedMaterialExt>().FirstOrDefault(cms => cms.ToBeConsumedMaterialId == consumedMat.ToBeConsumedMaterialId && cms.WorkOrderOperationId == consumedMat.WorkOrderOperationId);
                matExts.Add(consumedMat.ToBeConsumedMaterialId, consumedMaterialExt);
                unplannedMats.Add(new UnplannedMat(consumedMat.ERPOrder, consumedMat.OrderSequence, consumedMat.MaterialDefinitionNId, customized, consumedMaterialExt.Sequence, consumedMat.ConsumedQuantity, consumedMat.MaterialDefinitionUoM, consumedMat.Plant));
            }


            var result = InforConnector.ReportConsumedMaterials(unplannedMats);

            if (result.InforCallSucceeded == false)
            {
                response.SetError(-1001, result.Error);
                Platform.Tracer.Write("Siemens-SimaticIT-Trace-UADMRuntime", result.Error);
            }
            else if (!string.IsNullOrEmpty(result.Error))
            {
                response.SetError(-1002, result.Error);
                Platform.Tracer.Write("Siemens-SimaticIT-Trace-UADMRuntime", result.Error);
            }

            if (response.Succeeded)
            {
                foreach (var matEx in command.ConsumedMaterials)
                {
                    matExts[matEx.ToBeConsumedMaterialId].DeclaredQuantity = matExts[matEx.ToBeConsumedMaterialId].DeclaredQuantity + matEx.ConsumedQuantity;
                    Platform.Submit(matExts[matEx.ToBeConsumedMaterialId]);
                }
            }

            return(response);
        }