Example #1
0
        private void ProcessTechnology(CommercialDocument technology, decimal quantity, WarehouseDocument income, WarehouseDocument outcome, WarehouseDocument byproductIncome, int ordinalNumber)
        {
            List <Guid> outcomeLinesId = new List <Guid>();

            foreach (var line in technology.Lines)
            {
                string lineType = line.Attributes[DocumentFieldName.LineAttribute_ProductionItemType].Value.Value; //material/product/byproduct

                WarehouseDocumentLine whLine = null;
                //Tutaj należy zadać pytanie co zrobić dla labor
                if (lineType == "material")
                {
                    whLine = outcome.Lines.CreateNew();
                    whLine.GenerateId();
                    outcomeLinesId.Add(whLine.Id.Value);
                }
                else if (lineType == "byproduct")
                {
                    whLine = byproductIncome.Lines.CreateNew();
                }
                else if (lineType == "labor")
                {
                    line.Quantity = line.Quantity;
                }
                else// if (lineType == "product")
                {
                    whLine = income.Lines.CreateNew();
                    whLine.ValuateFromOutcomeDocumentLinesId = outcomeLinesId;
                    income.ValuateFromOutcomeDocumentId      = outcome.Id.Value;

                    if (quantity % line.Quantity != 0)
                    {
                        throw new ClientException(ClientExceptionId.ProductionOrderQuantityError, null, "ordinalNumber:" + ordinalNumber.ToString(CultureInfo.InvariantCulture),
                                                  "quantity:" + line.Quantity.ToString(CultureInfo.InvariantCulture));
                    }
                }

                if (lineType != "labor")
                {
                    whLine.ItemId    = line.ItemId;
                    whLine.ItemName  = line.ItemName;
                    whLine.UnitId    = line.UnitId;
                    whLine.Quantity += quantity * line.Quantity;
                }
            }
        }