public virtual void valueChanged(Range param1Range, Expr param1Expr) { string str = BoqItemFormulaEvaluator.fieldFromVariable(param1Range.Dimension1Name); if (!string.ReferenceEquals(str, null) && formulaFields.Contains(str + "Formula")) { try { object @object = valueFromExpression(param1Expr); if (@object is decimal) { @object = ((decimal)@object).setScale(10, 4); } BlankResourceInitializer.setFieldValue(outerInstance.boqTable, str, @object); } catch (Exception exception) { Console.WriteLine("CAN NOT EVALUATE: " + str + " = " + param1Expr + " = " + valueFromExpression(param1Expr)); Console.WriteLine(exception.ToString()); Console.Write(exception.StackTrace); } } else { ResourceToAssignmentTable resourceToAssignmentTable = (ResourceToAssignmentTable)outerInstance.assignmentsWithFormulasMap[param1Range.Dimension1Name]; if (resourceToAssignmentTable != null) { decimal bigDecimal = resourceToAssignmentTable.QuantityPerUnit.setScale(10, 4); object @object = valueFromExpression(param1Expr); if (@object is decimal) { decimal bigDecimal1 = (decimal)@object; if (resourceToAssignmentTable.AssignmentResourceTable is nomitech.common.db.local.LaborTable || resourceToAssignmentTable.AssignmentResourceTable is nomitech.common.db.local.EquipmentTable) { bigDecimal1 = bigDecimal1 * (ProjectDBUtil.currentProjectDBUtil().Properties.getHoursFromUnit(resourceToAssignmentTable.AssignmentResourceTable.Unit)); } bigDecimal1.setScale(10, 4); if (BigDecimalMath.cmpCheckNulls(bigDecimal, bigDecimal1) != 0) { resourceToAssignmentTable.QuantityPerUnit = bigDecimal1; outerInstance.updatedResourceToAssignmentQtyPerUnitSet.Add(resourceToAssignmentTable); outerInstance.someAssignemntFormulaValueChanged = true; } } } } }
public virtual MaterialTable convertToMaterialTable(ProjectDBProperties prop) { MaterialTable obj = BlankResourceInitializer.createBlankMaterial(null); BoqItemTable boqItemTable = BoqItemTable; QuotationTable quotationTable = QuotationTable; double[] projectGeoPosition = StringUtils.extractDoubles(prop.getProperty("project.geolocation")); double[] supplierGeoPosition = StringUtils.extractDoubles(quotationTable.GeoLocation); double distanceKm = HaversineDistanceUtil.distance(HaversineDistanceUtil.KM_DISTANCE, projectGeoPosition, supplierGeoPosition); if (Title.IndexOf(boqItemTable.Title, StringComparison.Ordinal) != -1 && Title.IndexOf(boqItemTable.Description, StringComparison.Ordinal) != -1) { obj.Title = StringUtils.makeShortTitle(boqItemTable.Title); } else { obj.Title = StringUtils.makeShortTitle(Title); } obj.DatabaseId = DatabaseId; if (DatabaseCreationDate == null) { obj.DatabaseCreationDate = 100L; //ResourceUtil.MISSING_DB_CREATE_DATE); } else { obj.DatabaseCreationDate = DatabaseCreationDate; } obj.Weight = BigDecimalMath.ZERO; obj.WeightUnit = "KG"; obj.GroupCode = boqItemTable.GroupCode; obj.GekCode = boqItemTable.GekCode; obj.Project = prop.getProperty("project.code") + " - " + prop.getProperty("project.name"); obj.Description = boqItemTable.Description; obj.Notes = boqItemTable.Notes; obj.EditorId = DatabaseDBUtil.Properties.UserId; obj.Country = quotationTable.Country; obj.StateProvince = quotationTable.StateProvince; obj.Rate = Rate; obj.DistanceToSite = new BigDecimalFixed("" + distanceKm); obj.DistanceUnit = "KM"; obj.RawMaterial = MaterialTable.UNSPECIFIED_RAWMAT; obj.RawMaterialReliance = BigDecimalMath.ZERO; obj.CreateUserId = quotationTable.EditorId; if (quotationTable.ReceivedDate != null) { obj.LastUpdate = quotationTable.ReceivedDate; obj.CreateDate = quotationTable.ReceivedDate; } else { obj.LastUpdate = DateTime.Now; obj.CreateDate = obj.LastUpdate; } if (quotationTable.OnSiteDelivery.Value) { if (ShipmentCost != null) { decimal indirectRate = BigDecimalMath.ZERO; if (IndirectCost != null) { decimal qty = Quantity; if (BigDecimalMath.cmpCheckNulls(qty, BigDecimalMath.ZERO) == 0) { qty = BigDecimalMath.ONE; } obj.ShipmentRate = BigDecimalMath.div(shipmentCost, qty); } // double qty = getQuantity().doubleValue(); // if ( qty == 0 ) // qty = 1; // double srate = shipmentCost.doubleValue()/getQuantity().doubleValue(); // obj.setShipmentRate(new BigDecimalFixed(""+srate)); } else { obj.ShipmentRate = BigDecimalMath.ZERO; } obj.Inclusion = MaterialTable.SHIPMENT_INCLUSION; } else { obj.Inclusion = MaterialTable.NONE_INCLUSION; obj.ShipmentRate = BigDecimalMath.ZERO; } obj.FabricationRate = BigDecimalMath.ZERO; obj.TotalRate = obj.Rate + obj.ShipmentRate; obj.Quantity = Quantity; obj.Unit = Unit; obj.Currency = quotationTable.Currency; obj.Accuracy = MaterialTable.QUOTED_ACCURACY; obj.ExtraCode1 = boqItemTable.ExtraCode1; obj.ExtraCode2 = boqItemTable.ExtraCode2; obj.ExtraCode3 = boqItemTable.ExtraCode3; obj.ExtraCode4 = boqItemTable.ExtraCode4; obj.ExtraCode5 = boqItemTable.ExtraCode5; obj.ExtraCode6 = boqItemTable.ExtraCode6; obj.ExtraCode7 = boqItemTable.ExtraCode7; obj.ExtraCode8 = boqItemTable.ExtraCode8; obj.ExtraCode9 = boqItemTable.ExtraCode9; obj.ExtraCode10 = boqItemTable.ExtraCode10; boqItemTable.loadBimMaterialsAndTypes(); obj.BimMaterial = boqItemTable.BimMaterial; obj.BimType = boqItemTable.BimType; obj.recalculate(); return(obj); }