//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: public void calculate(boolean paramBoolean) throws org.boris.expr.ExprException
        public override void calculate(bool paramBoolean)
        {
            if (this.autoCalculate && !paramBoolean)
            {
                return;
            }
            this.graph.sort();
            IDictionary <string, ResourceToAssignmentTable> .KeyCollection hashSet = new HashSet <object>(this.assignmentsWithFormulasMap.Keys);
            foreach (Range range in this.graph)
            {
                string str   = range.Dimension1Name;
                bool   @bool = hashSet.contains(str);
                if (@bool)
                {
                    hashSet.remove(str);
                }
                Expr expr = (Expr)this.inputs[range];
                if (expr is ExprEvaluatable)
                {
                    if (@bool)
                    {
                        CurrentField = "QTYPUNITFORM";
                        ResourceToAssignmentTable resourceToAssignmentTable = (ResourceToAssignmentTable)this.assignmentsWithFormulasMap[str];
                        if (resourceToAssignmentTable.getResourceTable() is AssemblyTable)
                        {
                            AssemblyTable assemblyTable = (AssemblyTable)resourceToAssignmentTable.getResourceTable();
                            loadLocalVariables(assemblyTable.Vars);
                        }
                        else if (resourceToAssignmentTable.getResourceTable() is BoqItemTable)
                        {
                            BoqItemTable boqItemTable = (BoqItemTable)resourceToAssignmentTable.getResourceTable();
                            loadLocalVariables(boqItemTable.Vars);
                        }
                    }
                    Expr expr1 = ((ExprEvaluatable)expr).evaluate(this);
                    this.provider.valueChanged(range, expr1);
                    if (@bool)
                    {
                        ((ResourceToAssignmentTable)this.assignmentsWithFormulasMap[str]).PvVars = (string.ReferenceEquals(PvVars, null)) ? "" : PvVars;
                    }
                    this.values[range] = expr1;
                }
            }
            foreach (string str in hashSet)
            {
                CurrentField = "QTYPUNITFORM";
                ResourceToAssignmentTable resourceToAssignmentTable = (ResourceToAssignmentTable)this.assignmentsWithFormulasMap[str];
                Expr  expr  = parseStatement(resourceToAssignmentTable.QuantityPerUnitFormula);
                Range range = new Range(str);
                this.provider.valueChanged(range, expr);
                this.values[range] = expr;
                resourceToAssignmentTable.PvVars = (string.ReferenceEquals(PvVars, null)) ? "" : PvVars;
            }
        }
            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;
                            }
                        }
                    }
                }
            }
Beispiel #3
0
            //private Long parentId;

            internal AssignmentWithResource(object[] res, bool fetchPersisted)
            {
                //parentId = (Long)res[0];
                assignmentTable = (ResourceToAssignmentTable)res[1];
                resourceTable   = (ResourceTable)res[2];

                assignmentTable = (ResourceToAssignmentTable)assignmentTable.clone(false, false);
                if (resourceTable is ResourceToResourceTable)
                {
                    bool isPredicted = fetchPersisted && resourceTable.Predicted != null && resourceTable.Predicted.booleanValue();
                    if (isPredicted)
                    {
                        // Very slow without fetching here:
                        ISet <object> historySet = resourceTable.ResourceHistorySet;
                        resourceTable = ((ResourceToResourceTable)resourceTable).copyWithParent();
                        resourceTable.ResourceHistorySet = historySet;
                    }
                    else
                    {
                        resourceTable = ((ResourceToResourceTable)resourceTable).copyWithParent();
                    }
                }
                else
                {
                    bool isPredicted = fetchPersisted && resourceTable.Predicted != null && resourceTable.Predicted.booleanValue();
                    if (isPredicted)
                    {
                        // Very slow without fetching here:
                        ISet <object> historySet = resourceTable.ResourceHistorySet;
                        resourceTable = (ResourceTable)resourceTable.clone();
                        resourceTable.ResourceHistorySet = historySet;
                    }
                    else
                    {
                        resourceTable = (ResourceTable)resourceTable.clone();
                    }

                    //System.out.println("Loaded -> "+resourceTable.getTitle()+" -> "+resourceTable.getClass()+" -> "+resourceTable.getTableRate());
                }

                assignmentTable.AssignmentResourceTable = resourceTable;
            }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: private void reloadVariables() throws org.boris.expr.ExprException
        private void reloadVariables()
        {
            this.assignmentsWithFormulasMap.Clear();
            this.updatedResourceToAssignmentQtyPerUnitSet.Clear();
            this.pvVarsCalled = new StringBuilder();
            foreach (string str in BoqItemTable.VIEWABLE_FIELDS)
            {
                if (!this.currentField.Equals(str))
                {
                    object @object = getFieldFormulaValue(this.boqTable, str + "Formula");
                    string str1    = variableFromField(str);
                    if (@object != null)
                    {
                        set(str1, "=" + @object.ToString());
                    }
                    else if (BoqItemTable.isFieldEditable(str))
                    {
                        object object1 = getFieldValue(this.boqTable, str);
                        if (BoqItemTable.isFieldDate(str))
                        {
                            object1 = Convert.ToDouble(0.0D);
                        }
                        else
                        {
                            object1 = "";
                        }
                        setExprValue(str1, object1);
                    }
                }
            }
            this.boqTable.PvVars       = (this.pvVarsCalled == null) ? "" : this.pvVarsCalled.ToString();
            this.boqTable.HasPVFormula = Convert.ToBoolean((this.pvVarsCalled != null && this.pvVarsCalled.ToString().Length > 0));
            foreach (object @object in this.boqTable.ResourceAssignmentsList)
            {
                ResourceToAssignmentTable resourceToAssignmentTable = (ResourceToAssignmentTable)@object;
                resourceToAssignmentTable.PvVars = "";
                ResourceWithAssignmentsTable resourceWithAssignmentsTable = resourceToAssignmentTable.getResourceTable();
                if (resourceToAssignmentTable.getResourceTable() is AssemblyTable)
                {
                    AssemblyTable assemblyTable = (AssemblyTable)resourceToAssignmentTable.getResourceTable();
                    loadLocalVariables(assemblyTable.Vars);
                }
                else if (resourceToAssignmentTable.getResourceTable() is BoqItemTable)
                {
                    BoqItemTable boqItemTable = (BoqItemTable)resourceToAssignmentTable.getResourceTable();
                    loadLocalVariables(boqItemTable.Vars);
                }
                if (resourceToAssignmentTable.QuantityPerUnitFormulaState == ResourceToAssignmentTable.QTYPUFORM_NOFORMULA)
                {
                    continue;
                }
                string str = resourceToAssignmentTable.QuantityPerUnitFormula;
                if (!StringUtils.isNullOrBlank(str))
                {
                    string str1 = System.Guid.randomUUID().ToString();
                    set(str1, "=" + str.ToString());
                    this.assignmentsWithFormulasMap[str1] = resourceToAssignmentTable;
                }
            }
            if (this.boqTable.BoqItemAssemblySet != null)
            {
                foreach (BoqItemAssemblyTable boqItemAssemblyTable in this.boqTable.BoqItemAssemblySet)
                {
                    AssemblyTable assemblyTable = boqItemAssemblyTable.AssemblyTable;
                    loadLocalVariables(assemblyTable.Vars);
                    QuantityPerUnitFieldFormula = assemblyTable;
                }
            }
        }
        private void assignToResource(Session paramSession, AssemblyTable paramAssemblyTable, ResourceTable paramResourceTable, decimal paramBigDecimal)
        {
            AssemblyConsumableTable assemblyConsumableTable;

            if (paramResourceTable is AssemblyTable)
            {
                assemblyConsumableTable = new AssemblyAssemblyTable();
                ((AssemblyAssemblyTable)assemblyConsumableTable).LastUpdate = this.lastUpdate;
            }
            else if (paramResourceTable is EquipmentTable)
            {
                assemblyConsumableTable = new AssemblyEquipmentTable();
                ((AssemblyEquipmentTable)assemblyConsumableTable).LastUpdate = this.lastUpdate;
            }
            else if (paramResourceTable is SubcontractorTable)
            {
                assemblyConsumableTable = new AssemblySubcontractorTable();
                ((AssemblySubcontractorTable)assemblyConsumableTable).LastUpdate = this.lastUpdate;
            }
            else if (paramResourceTable is LaborTable)
            {
                assemblyConsumableTable = new AssemblyLaborTable();
                ((AssemblyLaborTable)assemblyConsumableTable).LastUpdate = this.lastUpdate;
            }
            else if (paramResourceTable is MaterialTable)
            {
                assemblyConsumableTable = new AssemblyMaterialTable();
                ((AssemblyMaterialTable)assemblyConsumableTable).LastUpdate = this.lastUpdate;
            }
            else if (paramResourceTable is ConsumableTable)
            {
                assemblyConsumableTable = new AssemblyConsumableTable();
                ((AssemblyConsumableTable)assemblyConsumableTable).LastUpdate = this.lastUpdate;
            }
            else
            {
                return;
            }
            assemblyConsumableTable.ExchangeRate                = BigDecimalMath.ONE;
            assemblyConsumableTable.LocalStateProvince          = "";
            assemblyConsumableTable.LocalCountry                = "";
            assemblyConsumableTable.LocalFactor                 = BigDecimalMath.ONE;
            assemblyConsumableTable.Factor1                     = BigDecimalMath.ONE;
            assemblyConsumableTable.Factor2                     = BigDecimalMath.ONE;
            assemblyConsumableTable.Factor3                     = BigDecimalMath.ONE;
            assemblyConsumableTable.QuantityPerUnit             = paramBigDecimal;
            assemblyConsumableTable.QuantityPerUnitFormula      = "";
            assemblyConsumableTable.QuantityPerUnitFormulaState = ResourceToAssignmentTable.QTYPUFORM_NOFORMULA;
            long?long = (long?)paramSession.save(assemblyConsumableTable);
            ResourceToAssignmentTable resourceToAssignmentTable = (ResourceToAssignmentTable)paramSession.load(assemblyConsumableTable.GetType(), long);

            if (paramResourceTable is AssemblyTable)
            {
                paramAssemblyTable.AssemblyChildSet.Add((AssemblyAssemblyTable)resourceToAssignmentTable);
            }
            else if (paramResourceTable is EquipmentTable)
            {
                paramAssemblyTable.AssemblyEquipmentSet.Add((AssemblyEquipmentTable)resourceToAssignmentTable);
            }
            else if (paramResourceTable is SubcontractorTable)
            {
                paramAssemblyTable.AssemblySubcontractorSet.Add((AssemblySubcontractorTable)resourceToAssignmentTable);
            }
            else if (paramResourceTable is LaborTable)
            {
                paramAssemblyTable.AssemblyLaborSet.Add((AssemblyLaborTable)resourceToAssignmentTable);
            }
            else if (paramResourceTable is MaterialTable)
            {
                paramAssemblyTable.AssemblyMaterialSet.Add((AssemblyMaterialTable)resourceToAssignmentTable);
            }
            else if (paramResourceTable is ConsumableTable)
            {
                paramAssemblyTable.AssemblyConsumableSet.Add((AssemblyConsumableTable)resourceToAssignmentTable);
            }
            resourceToAssignmentTable.setResourceTable(paramAssemblyTable);
            resourceToAssignmentTable.AssignmentResourceTable = paramResourceTable;
            paramSession.update(paramAssemblyTable);
            paramSession.update(paramResourceTable);
            paramSession.update(resourceToAssignmentTable);
        }