public PowerTwoNMinusOneIterator(BigDecimal x, MathContext mathContext)
        {
            this.mathContext = mathContext;

            xPowerTwo = x.multiply(x, mathContext);
            powerOfX  = BigDecimalMath.reciprocal(x, mathContext);
        }
        // method for topsheet calculation
        public virtual decimal calculateFinalDepreciationRate()
        {
            if (AssemblyTable != null && EquipmentTable != null)
            {
                finalDepreciationRate = EquipmentTable.DepreciationRate * Factor1;
                finalDepreciationRate = finalDepreciationRate * Factor2;
                finalDepreciationRate = finalDepreciationRate * Factor3;
                finalDepreciationRate = finalDepreciationRate * LocalFactor;
                finalDepreciationRate = finalDepreciationRate * ExchangeRate;

                if (AssemblyTable.ActivityBased != null && AssemblyTable.ActivityBased.Equals(false))
                {
                    finalDepreciationRate = finalDepreciationRate * QuantityPerUnit;
                    finalDepreciationRate = BigDecimalMath.div(finalDepreciationRate, UnitHours);
                }
                else
                {
                    try
                    {
                        decimal fDiv = BigDecimalMath.mult(AssemblyTable.Productivity, UnitHours);
                        finalDepreciationRate = BigDecimalMath.div(finalDepreciationRate, fDiv);
                    }
                    catch (ArithmeticException)
                    {
                        finalDepreciationRate = BigDecimalMath.ZERO;
                    }
                }

                finalDepreciationRate = finalDepreciationRate.setScale(10, decimal.ROUND_HALF_UP);
            }

            return(finalDepreciationRate);
        }
예제 #3
0
        /**
         * Calculates the cosine (cosinus) of {@link BigComplex} x in the complex domain.
         *
         * @param x the {@link BigComplex} to calculate the cosine for
         * @param mathContext the {@link MathContext} used for the result
         * @return the calculated cosine {@link BigComplex} with the precision specified in the <code>mathContext</code>
         */
        public static BigComplex cos(this BigComplex x, MathContext mathContext)
        {
            MathContext mc = new MathContext(mathContext.getPrecision() + 4, mathContext.getRoundingMode());

            return(BigComplex.valueOf(
                       BigDecimalMath.cos(x.re, mc).multiply(BigDecimalMath.cosh(x.im, mc), mc).round(mathContext),
                       BigDecimalMath.sin(x.re, mc).multiply(BigDecimalMath.sinh(x.im, mc), mc).negate().round(mathContext)));
        }
예제 #4
0
 public virtual decimal getUnitRate(decimal totalCost)
 {
     if (totalCost == null || totalCost.doubleValue() == 0 || Quantity.doubleValue() == 0)
     {
         return(BigDecimalMath.ZERO);
     }
     return(BigDecimalMath.div(totalCost, Quantity));
 }
예제 #5
0
        /**
         * Calculates the natural exponent of {@link BigComplex} x (e<sup>x</sup>) in the complex domain.
         *
         * <p>See: <a href="https://en.wikipedia.org/wiki/Exponential_function#Complex_plane">Wikipedia: Exponent (Complex plane)</a></p>
         *
         * @param x the {@link BigComplex} to calculate the exponent for
         * @param mathContext the {@link MathContext} used for the result
         * @return the calculated exponent {@link BigComplex} with the precision specified in the <code>mathContext</code>
         */
        public static BigComplex exp(this BigComplex x, MathContext mathContext)
        {
            MathContext mc = new MathContext(mathContext.getPrecision() + 4, mathContext.getRoundingMode());

            BigDecimal expRe = BigDecimalMath.exp(x.re, mc);

            return(BigComplex.valueOf(
                       expRe.multiply(BigDecimalMath.cos(x.im, mc), mc).round(mathContext),
                       expRe.multiply(BigDecimalMath.sin(x.im, mc), mc)).round(mathContext));
        }
예제 #6
0
        /**
         * Calculates the natural logarithm of {@link BigComplex} x in the complex domain.
         *
         * <p>See: <a href="https://en.wikipedia.org/wiki/Complex_logarithm">Wikipedia: Complex logarithm</a></p>
         *
         * @param x the {@link BigComplex} to calculate the natural logarithm for
         * @param mathContext the {@link MathContext} used for the result
         * @return the calculated natural logarithm {@link BigComplex} with the precision specified in the <code>mathContext</code>
         */
        public static BigComplex log(this BigComplex x, MathContext mathContext)
        {
            // https://en.wikipedia.org/wiki/Complex_logarithm
            MathContext mc1 = new MathContext(mathContext.getPrecision() + 20, mathContext.getRoundingMode());
            MathContext mc2 = new MathContext(mathContext.getPrecision() + 5, mathContext.getRoundingMode());

            return(BigComplex.valueOf(
                       BigDecimalMath.log(x.abs(mc1), mc1).round(mathContext),
                       x.angle(mc2)).round(mathContext));
        }
예제 #7
0
        /**
         * Calculates {@link BigComplex} x to the power of {@link BigDecimal} y (x<sup>y</sup>).
         *
         * @param x the {@link BigComplex} value to take to the power
         * @param y the {@link BigDecimal} value to serve as exponent
         * @param mathContext the {@link MathContext} used for the result
         * @return the calculated x to the power of y with the precision specified in the <code>mathContext</code>
         */
        public static BigComplex pow(this BigComplex x, BigDecimal y, MathContext mathContext)
        {
            MathContext mc = new MathContext(mathContext.getPrecision() + 4, mathContext.getRoundingMode());

            BigDecimal angleTimesN = x.angle(mc).multiply(y, mc);

            return(BigComplex.valueOf(
                       BigDecimalMath.cos(angleTimesN, mc),
                       BigDecimalMath.sin(angleTimesN, mc)).multiply(BigDecimalMath.pow(x.abs(mc), y, mc), mc).round(mathContext));
        }
예제 #8
0
        /**
         * Calculates the square root of {@link BigComplex} x in the complex domain (√x).
         *
         * <p>See <a href="https://en.wikipedia.org/wiki/Square_root#Square_root_of_an_imaginary_number">Wikipedia: Square root (Square root of an imaginary number)</a></p>
         *
         * @param x the {@link BigComplex} to calculate the square root for
         * @param mathContext the {@link MathContext} used for the result
         * @return the calculated square root {@link BigComplex} with the precision specified in the <code>mathContext</code>
         */
        public static BigComplex sqrt(this BigComplex x, MathContext mathContext)
        {
            // https://math.stackexchange.com/questions/44406/how-do-i-get-the-square-root-of-a-complex-number
            MathContext mc = new MathContext(mathContext.getPrecision() + 4, mathContext.getRoundingMode());

            BigDecimal magnitude = x.abs(mc);

            BigComplex a = x.add(magnitude, mc);

            return(a.divide(a.abs(mc), mc).multiply(BigDecimalMath.sqrt(magnitude, mc), mc).round(mathContext));
        }
예제 #9
0
        /**
         * Returns a complex number with the specified polar {@link BigDecimal} radius and angle using the specified {@link MathContext}.
         *
         * @param radius the {@link BigDecimal} radius of the polar representation
         * @param angle the {@link BigDecimal} angle in radians of the polar representation
         * @param mathContext the {@link MathContext} used to calculate the result
         * @return the complex number
         */
        public static BigComplex valueOfPolar(BigDecimal radius, BigDecimal angle, MathContext mathContext)
        {
            if (radius.signum() == 0)
            {
                return(ZERO);
            }

            return(valueOf(
                       radius.multiply(BigDecimalMath.cos(angle, mathContext), mathContext),
                       radius.multiply(BigDecimalMath.sin(angle, mathContext), mathContext)));
        }
예제 #10
0
        public virtual decimal calculateFinalFixedCost()
        {
            decimal bigDecimal = decimal.Zero;

            if (FixedCost != null && BigDecimalMath.cmp(FixedCost, decimal.Zero) != 0)
            {
                bigDecimal = BigDecimalMath.mult(FixedCost, Factor1);
                bigDecimal = BigDecimalMath.mult(bigDecimal, Factor2);
                bigDecimal = BigDecimalMath.mult(bigDecimal, Factor3);
                bigDecimal = BigDecimalMath.mult(bigDecimal, LocalFactor);
                bigDecimal = BigDecimalMath.mult(bigDecimal, ExchangeRate);
            }
            return(bigDecimal);
        }
        public virtual decimal calculateFinalRate()
        {
            if (AssemblyTable != null && EquipmentTable != null)
            {
                decimal equipmentRate = EquipmentTable.RateForCalculation;
                decimal fuelRate      = BigDecimalMath.ZERO;

                if (EquipmentTable.FuelConsumption.CompareTo(BigDecimalMath.ZERO) > 0 && EnergyPrice.CompareTo(BigDecimalMath.ZERO) > 0)
                {
                    fuelRate = BigDecimalMath.mult(EnergyPrice, EquipmentTable.FuelConsumption);
                }
                else
                {
                    fuelRate = EquipmentTable.FuelRate;
                }

                fuelRate = fuelRate.setScale(10, decimal.ROUND_HALF_UP);

                FuelRate = fuelRate;

                equipmentRate = equipmentRate + fuelRate * ExchangeRate;

                finalRate = equipmentRate * Factor1;
                finalRate = finalRate * Factor2;
                finalRate = finalRate * Factor3;
                finalRate = finalRate * LocalFactor;

                if (AssemblyTable.ActivityBased != null && AssemblyTable.ActivityBased.Equals(false))
                {
                    finalRate = finalRate * QuantityPerUnit;
                    finalRate = BigDecimalMath.div(finalRate, UnitHours);
                }
                else
                {
                    try
                    {
                        decimal fDiv = BigDecimalMath.mult(AssemblyTable.Productivity, UnitHours);
                        finalRate = BigDecimalMath.div(finalRate, fDiv);
                    }
                    catch (ArithmeticException)
                    {
                        finalRate = BigDecimalMath.ZERO;
                    }
                }

                finalRate = finalRate.setScale(10, decimal.ROUND_HALF_UP);
            }

            return(finalRate);
        }
        public virtual decimal calculateFinalFixedCost()
        {
            if (BoqItemTable != null && AssemblyTable != null)
            {
                finalFixedCost = AssemblyTable.calculateFinalFixedCost();
                finalFixedCost = BigDecimalMath.mult(finalFixedCost, ExchangeRate);
                finalFixedCost = BigDecimalMath.mult(finalFixedCost, Factor1);
                finalFixedCost = BigDecimalMath.mult(finalFixedCost, Factor2);
                finalFixedCost = BigDecimalMath.mult(finalFixedCost, Factor3);
                finalFixedCost = BigDecimalMath.mult(finalFixedCost, LocalFactor);
            }

            finalFixedCost.setScale(10, decimal.ROUND_HALF_UP);

            return(finalFixedCost);
        }
            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;
                            }
                        }
                    }
                }
            }
예제 #14
0
        private decimal calculateFinalRateFor(decimal rate)
        {
            rate = rate * ExchangeRate;
            rate = rate * LocalFactor;

            decimal fRate = null;

            if (BoqItemTable.HasProductivity.Value || BoqItemTable.Quantity.CompareTo(BigDecimalMath.ZERO) <= 0)
            {
                fRate = rate * Factor1;
                fRate = fRate * Factor2;
                fRate = fRate * Factor3;

                if (BoqItemTable.ActivityBased != null && BoqItemTable.ActivityBased.Equals(false))
                {
                    fRate = fRate * QuantityPerUnit;
                    fRate = BigDecimalMath.div(fRate, UnitHours);
                }
                else
                {
                    try
                    {
                        decimal fDiv = BigDecimalMath.mult(BoqItemTable.AdjustedProd, UnitHours);
                        fRate = BigDecimalMath.div(fRate, fDiv);
                    }
                    catch (Exception)
                    {
                        fRate = BigDecimalMath.ZERO;
                    }
                }
            }
            else
            {             // Total Units Method:
                fRate = rate * TotalUnits;
                try
                {
                    fRate = BigDecimalMath.div(fRate, BoqItemTable.Quantity);
                }
                catch (Exception)
                {
                    fRate = BigDecimalMath.ZERO;
                }
            }

            return(fRate);
        }
예제 #15
0
        public virtual decimal calculateFinalRate()
        {
            decimal finalRate = Rate;

            if (Insurance != null && BigDecimalMath.cmp(Insurance, BigDecimalMath.ZERO) > 0)
            {
                finalRate = finalRate + Insurance;
            }

            if (Material != null && BigDecimalMath.cmp(Material, BigDecimalMath.ZERO) > 0)
            {
                finalRate = finalRate + Material;
            }
            if (IndirectCost != null && BigDecimalMath.cmp(IndirectCost, BigDecimalMath.ZERO) > 0)
            {
                finalRate = finalRate + IndirectRate;
            }

            if (ShipmentCost != null && BigDecimalMath.cmp(ShipmentCost, BigDecimalMath.ZERO) > 0)
            {
                double qty = Quantity.doubleValue();
                if (qty == 0)
                {
                    qty = 1;
                }
                double fRate = ShipmentCost.doubleValue() / qty;
                finalRate = Rate + (new BigDecimalFixed("" + fRate));
            }

            if (Factor1 != null && BigDecimalMath.cmp(Factor1, BigDecimalMath.ZERO) > 0)
            {
                finalRate = BigDecimalMath.mult(finalRate, Factor1);
            }

            finalRate = finalRate.setScale(10, decimal.ROUND_HALF_UP);
            //		o_map.put("finalRate",finalRate);
            return(finalRate);
        }
예제 #16
0
 /**
  * Calculates the absolute value (also known as magnitude, length or radius) of this complex number.
  *
  * <p>This method is slower than {@link #absSquare(MathContext)} since it needs to calculate the {@link BigDecimalMath#sqrt(BigDecimal, MathContext)}.</p>
  *
  * <p>This methods <strong>does not</strong> modify this instance.</p>
  *
  * @param mathContext the {@link MathContext} used to calculate the result
  * @return the calculated {@link BigComplex} result
  * @see #absSquare(MathContext)
  */
 public BigDecimal abs(MathContext mathContext)
 {
     return(BigDecimalMath.sqrt(absSquare(mathContext), mathContext));
 }
예제 #17
0
        public virtual decimal calculateFinalRate()
        {
            decimal fRate = finalRate;

            //		if ( fRate == null )
            //			fRate = (BigDecimal)o_map.get("finalRate");

            if (BoqItemTable != null)
            {
                // Calculate Total Units First:
                decimal tUnits = BigDecimalMath.ONE;
                tUnits = tUnits * Factor1;
                tUnits = tUnits * Factor2;
                tUnits = tUnits * Factor3;

                if (BoqItemTable.ActivityBased != null && BoqItemTable.ActivityBased.Equals(false))
                {
                    tUnits = tUnits * QuantityPerUnit;
                    tUnits = tUnits * (BoqItemTable.Quantity);
                }
                else
                {
                    tUnits = BigDecimalMath.mult(tUnits, BoqItemTable.Duration);
                }
                totalUnits = tUnits;
            }

            if (BoqItemTable != null && EquipmentTable != null)
            {
                decimal equipmentRate = EquipmentTable.RateForCalculation;
                decimal fuelRate      = BigDecimalMath.ZERO;

                //getEquipmentTable().getCalculatedFuelRate()

                //			if ( getEquipmentTable().getFuelConsumption().compareTo(BigDecimalMath.ZERO) > 0 &&
                //					getEnergyPrice().compareTo(BigDecimalMath.ZERO) > 0 ) {
                //				fuelRate = BigDecimalMath.mult(getEnergyPrice(), getEquipmentTable().getFuelConsumption());
                //			}
                //			else {
                fuelRate = EquipmentTable.FuelRate;
                //			}

                finalFuelRate = fuelRate;
                //			equipmentRate = equipmentRate.add(fuelRate);

                fRate = calculateFinalRateFor(equipmentRate);
                finalDepreciationRate = calculateFinalRateFor(EquipmentTable.DepreciationRate);

                // Calculate Variable, Total Cost:
                variableCost = fRate * (BoqItemTable.Quantity);

                totalCost = decimal.Zero;
                totalCost = totalCost + variableCost;
                totalCost = totalCost + FinalFixedCost;

                // Avoid precision/scale updates if data is the same:
                variableCost          = variableCost.setScale(10, decimal.ROUND_HALF_UP);
                totalCost             = totalCost.setScale(10, decimal.ROUND_HALF_UP);
                fRate                 = fRate.setScale(10, decimal.ROUND_HALF_UP);
                totalUnits            = totalUnits.setScale(10, decimal.ROUND_HALF_UP);
                finalFuelRate         = finalFuelRate.setScale(10, decimal.ROUND_HALF_UP);
                finalDepreciationRate = finalDepreciationRate.setScale(10, decimal.ROUND_HALF_UP);
            }

            finalRate = fRate;

            return(finalRate);
        }
예제 #18
0
        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);
        }
예제 #19
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: private void loadWorkgroups(org.hibernate.Session paramSession, String paramString) throws Exception
        private void loadWorkgroups(Session paramSession, string paramString)
        {
            Console.WriteLine("\n\n\n\nLoading Workgroups");
            POIFSFileSystem pOIFSFileSystem = new POIFSFileSystem(new FileStream(paramString, FileMode.Open, FileAccess.Read));
            HSSFWorkbook    hSSFWorkbook    = new HSSFWorkbook(pOIFSFileSystem);

            this.o_evaluator = hSSFWorkbook.CreationHelper.createFormulaEvaluator();
            HSSFSheet hSSFSheet = hSSFWorkbook.getSheetAt(4);
            int       i         = getRealNumberOfRows(hSSFSheet);
            int       j;

            for (j = 1; j < i; j++)
            {
                if (j % this.rowsToCommit == 0)
                {
                    paramSession.Transaction.commit();
                    paramSession.Transaction.begin();
                    Console.WriteLine("Processing next " + this.rowsToCommit + "...");
                }
                HSSFRow hSSFRow     = hSSFSheet.getRow(j);
                string  str1        = notNull(hSSFRow.getCell(0));
                string  str2        = notNull(hSSFRow.getCell(1));
                string  str3        = toCostOSUoM(notNull(hSSFRow.getCell(2)));
                decimal bigDecimal1 = notNullBigDecimal(hSSFRow.getCell(3), 0.0D);
                decimal bigDecimal2 = notNullBigDecimal(hSSFRow.getCell(4), 1.0D);
                string  str4        = notNull(hSSFRow.getCell(5));
                string  str5        = notNull(hSSFRow.getCell(8));
                string  str6        = "";
                if (str5.Length >= 2 && !StringUtils.isBlank(str5))
                {
                    str6 = "0" + str5.Substring(0, 2) + "00";
                }
                if (acceptProject(str1))
                {
                    AssemblyTable assemblyTable = BlankResourceInitializer.createBlankAssembly(null);
                    assemblyTable.ItemCode                 = str2;
                    assemblyTable.Title                    = str4;
                    assemblyTable.Unit                     = str3;
                    assemblyTable.Quantity                 = bigDecimal1;
                    assemblyTable.Project                  = str1;
                    assemblyTable.Currency                 = "USD";
                    assemblyTable.ActivityBased            = false;
                    assemblyTable.AssemblyChildSet         = new HashSet <object>();
                    assemblyTable.AssemblyEquipmentSet     = new HashSet <object>();
                    assemblyTable.AssemblySubcontractorSet = new HashSet <object>();
                    assemblyTable.AssemblyLaborSet         = new HashSet <object>();
                    assemblyTable.AssemblyMaterialSet      = new HashSet <object>();
                    assemblyTable.AssemblyConsumableSet    = new HashSet <object>();
                    assemblyTable.EditorId                 = "ccc";
                    assemblyTable.CreateUserId             = "ccc";
                    assemblyTable.LastUpdate               = this.lastUpdate;
                    assemblyTable.CreateDate               = this.lastUpdate;
                    assemblyTable.CustomText1              = "Workgroup";
                    if (this.csi95Map.ContainsKey(str6))
                    {
                        assemblyTable.GroupCode = (string)this.csi95Map[str6];
                    }
                    else if (!StringUtils.isBlank(str6))
                    {
                        Console.WriteLine("CSI Not Found: " + str6);
                    }
                    long?long     = (long?)paramSession.save(assemblyTable);
                    assemblyTable = (AssemblyTable)paramSession.load(assemblyTable.GetType(), long);
                    this.operationsMap[str1 + str2] = assemblyTable;
                }
            }
            hSSFSheet = hSSFWorkbook.getSheetAt(3);
            i         = getRealNumberOfRows(hSSFSheet);
            for (j = 1; j < i; j++)
            {
                if (j % this.rowsToCommit == 0)
                {
                    paramSession.Transaction.commit();
                    paramSession.Transaction.begin();
                    Console.WriteLine("Processing next " + this.rowsToCommit + " - " + j + "/" + i + "...");
                }
                HSSFRow       hSSFRow       = hSSFSheet.getRow(j);
                string        str1          = notNull(hSSFRow.getCell(0));
                string        str2          = notNull(hSSFRow.getCell(1));
                string        str3          = notNull(hSSFRow.getCell(2));
                string        str4          = notNull(hSSFRow.getCell(3));
                string        str5          = notNull(hSSFRow.getCell(4));
                decimal       bigDecimal    = notNullBigDecimal(hSSFRow.getCell(5), 0.0D);
                AssemblyTable assemblyTable = (AssemblyTable)this.operationsMap[str1 + str2];
                ResourceTable resourceTable = (ResourceTable)this.resourcesMap[str1 + str3];
                if (assemblyTable == null)
                {
                    Console.Error.WriteLine("Workgroup not found: " + str2 + ", project: " + str1);
                    continue;
                }
                if (resourceTable == null)
                {
                    resourceTable = (ResourceTable)this.operationsMap[str1 + str3];
                    if (resourceTable == null)
                    {
                        Console.Error.WriteLine("Operation or Resource not found: " + str3 + ", project: " + str1);
                        continue;
                    }
                }
                if (BigDecimalMath.cmp(BigDecimalMath.ZERO, assemblyTable.Quantity) == 0)
                {
                    Console.WriteLine("Divide by zero error on workgroup: " + str2 + ", operation or resource: " + str3 + ", project: " + str1);
                    bigDecimal = BigDecimalMath.ONE;
                }
                else
                {
                    bigDecimal = BigDecimalMath.div(bigDecimal, assemblyTable.Quantity);
                }
                assignToResource(paramSession, assemblyTable, resourceTable, bigDecimal);
                paramSession.flush();
                assemblyTable = (AssemblyTable)paramSession.load(assemblyTable.GetType(), assemblyTable.Id);
                assemblyTable.recalculate();
                paramSession.update(assemblyTable);
                continue;
            }
        }
        //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        //ORIGINAL LINE: private void loadLineItems(org.hibernate.Session paramSession, String paramString) throws Exception
        private void loadLineItems(Session paramSession, string paramString)
        {
            POIFSFileSystem pOIFSFileSystem = new POIFSFileSystem(new FileStream(paramString, FileMode.Open, FileAccess.Read));
            HSSFWorkbook    hSSFWorkbook    = new HSSFWorkbook(pOIFSFileSystem);

            this.o_evaluator = hSSFWorkbook.CreationHelper.createFormulaEvaluator();
            HSSFSheet hSSFSheet = hSSFWorkbook.getSheetAt(0);

            Console.WriteLine("Loading Line Items...");
            int            i              = getRealNumberOfRows(hSSFSheet);
            string         str1           = null;
            string         str2           = null;
            GroupCodeTable groupCodeTable = null;
            string         str3           = null;

            for (int j = 1; j < i; j++)
            {
                if (j % this.rowsToCommit == 0)
                {
                    paramSession.Transaction.commit();
                    paramSession.Transaction.begin();
                    Console.WriteLine("Processing next 500...");
                }
                HSSFRow hSSFRow = hSSFSheet.getRow(j);
                string  str4    = notNull(hSSFRow.getCell(0));
                string  str5    = notNull(hSSFRow.getCell(1));
                if (!str4.StartsWith("Group", StringComparison.Ordinal))
                {
                    string str6 = notNull(hSSFRow.getCell(2));
                    string str7 = notNull(hSSFRow.getCell(3));
                    if (!StringUtils.isNullOrBlank(str4))
                    {
                        Console.WriteLine(str6 + " - " + str7);
                        str1 = str4;
                        str1 = StringUtils.replaceAll(str1, ".", "");
                        str1 = StringUtils.replaceAll(str1, "-", "");
                        str1 = str1.Substring(0, 4);
                        str3 = str1;
                        GroupCode groupCode = addGroupCode1(str1, str7);
                        this.dprPhaseMap[str6] = groupCode;
                        paramSession.save(groupCode);
                    }
                    else if (!StringUtils.isNullOrBlank(str5))
                    {
                        Console.WriteLine(str6 + " - " + str7);
                        str2 = str5;
                        str2 = StringUtils.replaceAll(str2, ".", "");
                        str2 = StringUtils.replaceAll(str2, "-", "");
                        str1 = str2.Substring(0, 4);
                        str2 = str2.Substring(4, str2.Length - 4);
                        GroupCode groupCode = addGroupCode1(str3 + "." + str2, str7);
                        this.dprPhaseMap[str6] = groupCode;
                        long?long                  = (long?)paramSession.save(groupCode);
                        groupCodeTable             = (GroupCodeTable)groupCode;
                        groupCodeTable.GroupCodeId = long;
                    }
                    else
                    {
                        decimal bigDecimal1  = notNullBigDecimal(hSSFRow.getCell(4), 1.0D);
                        string  str8         = toCorrectUnit(notNull(hSSFRow.getCell(5)));
                        string  str9         = notNull(hSSFRow.getCell(6));
                        decimal bigDecimal2  = notNullBigDecimal(hSSFRow.getCell(7), 0.0D);
                        string  str10        = toCorrectUnit(notNull(hSSFRow.getCell(8)));
                        decimal bigDecimal3  = notNullBigDecimal(hSSFRow.getCell(9), 0.0D);
                        string  str11        = toCorrectUnit(notNull(hSSFRow.getCell(10)));
                        decimal bigDecimal4  = notNullBigDecimal(hSSFRow.getCell(11), 0.0D);
                        string  str12        = notNull(hSSFRow.getCell(12)).ToUpper();
                        decimal bigDecimal5  = notNullBigDecimal(hSSFRow.getCell(13), 0.0D);
                        string  str13        = toCorrectUnit(notNull(hSSFRow.getCell(14)));
                        decimal bigDecimal6  = notNullBigDecimal(hSSFRow.getCell(15), 0.0D);
                        decimal bigDecimal7  = notNullBigDecimal(hSSFRow.getCell(16), 1.0D);
                        string  str14        = toCorrectUnit(notNull(hSSFRow.getCell(17)));
                        decimal bigDecimal8  = notNullBigDecimal(hSSFRow.getCell(18), 1.0D);
                        string  str15        = toCorrectUnit(notNull(hSSFRow.getCell(19)));
                        decimal bigDecimal9  = notNullBigDecimal(hSSFRow.getCell(20), 0.0D);
                        string  str16        = toCorrectUnit(notNull(hSSFRow.getCell(21)));
                        decimal bigDecimal10 = notNullBigDecimal(hSSFRow.getCell(22), 0.0D);
                        decimal bigDecimal11 = notNullBigDecimal(hSSFRow.getCell(23), 0.0D);
                        string  str17        = toCorrectUnit(notNull(hSSFRow.getCell(24)));
                        decimal bigDecimal12 = notNullBigDecimal(hSSFRow.getCell(25), 0.0D);
                        string  str18        = toCorrectUnit(notNull(hSSFRow.getCell(26)));
                        decimal bigDecimal13 = notNullBigDecimal(hSSFRow.getCell(27), 0.0D);
                        string  str19        = toCorrectUnit(notNull(hSSFRow.getCell(28)));
                        decimal bigDecimal14 = notNullBigDecimal(hSSFRow.getCell(29), 0.0D);
                        string  str20        = toCorrectUnit(notNull(hSSFRow.getCell(30)));
                        decimal bigDecimal15 = notNullBigDecimal(hSSFRow.getCell(31), 0.0D);
                        decimal bigDecimal16 = notNullBigDecimal(hSSFRow.getCell(32), 1.0D);
                        string  str21        = toCorrectUnit(notNull(hSSFRow.getCell(33)));
                        decimal bigDecimal17 = notNullBigDecimal(hSSFRow.getCell(34), 0.0D);
                        string  str22        = toCorrectUnit(notNull(hSSFRow.getCell(35)));
                        decimal bigDecimal18 = notNullBigDecimal(hSSFRow.getCell(36), 1.0D);
                        string  str23        = toCorrectUnit(notNull(hSSFRow.getCell(37)));
                        decimal bigDecimal19 = notNullBigDecimal(hSSFRow.getCell(38), 0.0D);
                        string  str24        = toCorrectUnit(notNull(hSSFRow.getCell(39)));
                        decimal bigDecimal20 = notNullBigDecimal(hSSFRow.getCell(40), 0.0D);
                        decimal bigDecimal21 = notNullBigDecimal(hSSFRow.getCell(41), 0.0D);
                        string  str25        = toCorrectUnit(notNull(hSSFRow.getCell(42)));
                        decimal bigDecimal22 = notNullBigDecimal(hSSFRow.getCell(43), 0.0D);
                        string  str26        = toCorrectUnit(notNull(hSSFRow.getCell(44)));
                        decimal bigDecimal23 = notNullBigDecimal(hSSFRow.getCell(45), 0.0D);
                        string  str27        = toCorrectUnit(notNull(hSSFRow.getCell(46)));
                        decimal bigDecimal24 = notNullBigDecimal(hSSFRow.getCell(47), 0.0D);
                        string  str28        = toCorrectUnit(notNull(hSSFRow.getCell(48)));
                        decimal bigDecimal25 = notNullBigDecimal(hSSFRow.getCell(49), 0.0D);
                        decimal bigDecimal26 = notNullBigDecimal(hSSFRow.getCell(50), 0.0D);
                        string  str29        = toCorrectUnit(notNull(hSSFRow.getCell(51)));
                        decimal bigDecimal27 = notNullBigDecimal(hSSFRow.getCell(52), 0.0D);
                        Console.WriteLine(str6 + " - " + str7 + " " + str8 + " " + bigDecimal1 + " " + str9 + " " + bigDecimal27);
                        string        str30         = notNull(hSSFRow.getCell(53));
                        string        str31         = notNull(hSSFRow.getCell(54));
                        string        str32         = notNull(hSSFRow.getCell(55));
                        string        str33         = notNull(hSSFRow.getCell(56));
                        string        str34         = notNull(hSSFRow.getCell(57));
                        string        str35         = notNull(hSSFRow.getCell(58));
                        string        str36         = notNull(hSSFRow.getCell(59));
                        AssemblyTable assemblyTable = BlankResourceInitializer.createBlankAssembly(null);
                        assemblyTable.ItemCode = str6;
                        assemblyTable.PublishedRevisionCode = str6;
                        assemblyTable.Title        = str7;
                        assemblyTable.Unit         = str8;
                        assemblyTable.Currency     = "USD";
                        assemblyTable.Country      = "US";
                        assemblyTable.Quantity     = bigDecimal1;
                        assemblyTable.LastUpdate   = this.lastUpdate;
                        assemblyTable.Description  = "";
                        assemblyTable.LastUpdate   = this.lastUpdate;
                        assemblyTable.CreateDate   = this.lastUpdate;
                        assemblyTable.CreateUserId = "admin";
                        assemblyTable.EditorId     = "admin";
                        if (groupCodeTable != null)
                        {
                            assemblyTable.GroupCode = groupCodeTable.ToString();
                        }
                        assemblyTable.AssemblyEquipmentSet     = new HashSet <object>();
                        assemblyTable.AssemblySubcontractorSet = new HashSet <object>();
                        assemblyTable.AssemblyLaborSet         = new HashSet <object>();
                        assemblyTable.AssemblyMaterialSet      = new HashSet <object>();
                        assemblyTable.AssemblyConsumableSet    = new HashSet <object>();
                        long?long     = (long?)paramSession.save(assemblyTable.clone());
                        assemblyTable = (AssemblyTable)paramSession.load(typeof(AssemblyTable), long);
                        if (!StringUtils.isNullOrBlank(str9))
                        {
                            LaborTable laborTable = (LaborTable)this.laborCache[str9];
                            if (laborTable == null)
                            {
                                laborTable              = BlankResourceInitializer.createBlankLabor(null);
                                laborTable.Title        = str9;
                                laborTable.Unit         = "HOUR";
                                laborTable.Rate         = bigDecimal5;
                                laborTable.IKA          = BigDecimalMath.ZERO;
                                laborTable.Currency     = "USD";
                                laborTable.Country      = "US";
                                laborTable.LastUpdate   = this.lastUpdate;
                                laborTable.CreateDate   = this.lastUpdate;
                                laborTable.CreateUserId = "admin";
                                laborTable.EditorId     = "admin";
                                long                  = (long?)paramSession.save(laborTable.clone());
                                laborTable.Id         = long;
                                this.laborCache[str9] = laborTable;
                            }
                            else
                            {
                                laborTable = (LaborTable)paramSession.load(typeof(LaborTable), laborTable.Id);
                            }
                            if (BigDecimalMath.cmp(bigDecimal4, BigDecimalMath.ZERO) <= 0 && BigDecimalMath.cmp(bigDecimal2, BigDecimalMath.ZERO) > 0)
                            {
                                bigDecimal4 = BigDecimalMath.div(BigDecimalMath.ONE, bigDecimal2);
                            }
                            laborTable = (LaborTable)paramSession.load(typeof(LaborTable), laborTable.Id);
                            AssemblyLaborTable assemblyLaborTable = new AssemblyLaborTable();
                            assemblyLaborTable.Factor1                     = BigDecimalMath.ONE;
                            assemblyLaborTable.Factor2                     = BigDecimalMath.ONE;
                            assemblyLaborTable.Factor3                     = BigDecimalMath.ONE;
                            assemblyLaborTable.ExchangeRate                = BigDecimalMath.ONE;
                            assemblyLaborTable.QuantityPerUnit             = bigDecimal4;
                            assemblyLaborTable.QuantityPerUnitFormula      = "";
                            assemblyLaborTable.QuantityPerUnitFormulaState = ResourceToAssignmentTable.QTYPUFORM_NOFORMULA;
                            assemblyLaborTable.LocalFactor                 = BigDecimalMath.ONE;
                            assemblyLaborTable.LocalCountry                = "";
                            assemblyLaborTable.LocalStateProvince          = "";
                            assemblyLaborTable.LastUpdate                  = assemblyTable.LastUpdate;
                            long = (long?)paramSession.save(assemblyLaborTable);
                            assemblyLaborTable.AssemblyLaborId = long;
                            assemblyTable.AssemblyLaborSet.Add(assemblyLaborTable);
                            paramSession.saveOrUpdate(assemblyTable);
                            assemblyLaborTable.LaborTable    = laborTable;
                            assemblyLaborTable.AssemblyTable = assemblyTable;
                            paramSession.saveOrUpdate(assemblyLaborTable);
                        }
                        if (bigDecimal14 != null && BigDecimalMath.cmp(bigDecimal14, BigDecimalMath.ZERO) > 0)
                        {
                            if (bigDecimal11 != null && BigDecimalMath.cmp(bigDecimal11, BigDecimalMath.ZERO) > 0)
                            {
                                decimal bigDecimal = bigDecimal13;
                                if (BigDecimalMath.cmp(bigDecimal, BigDecimalMath.ZERO) <= 0 && BigDecimalMath.cmp(bigDecimal11, BigDecimalMath.ZERO) > 0)
                                {
                                    bigDecimal = BigDecimalMath.div(BigDecimalMath.ONE, bigDecimal11);
                                }
                                if (str8.Equals("DAY"))
                                {
                                    bigDecimal14 = BigDecimalMath.mult(bigDecimal14, BigDecimalMath.div(BigDecimalMath.ONE, HOURS_OF_DAY));
                                }
                                else if (str8.Equals("WEEK") || str8.Equals("WK"))
                                {
                                    bigDecimal14 = BigDecimalMath.mult(bigDecimal14, BigDecimalMath.div(BigDecimalMath.ONE, HOURS_OF_WEEK));
                                }
                                else if (str8.Equals("MONTH") || str8.Equals("MO"))
                                {
                                    bigDecimal14 = BigDecimalMath.mult(bigDecimal14, BigDecimalMath.div(BigDecimalMath.ONE, HOURS_OF_MONTH));
                                }
                                if (str20.Equals("WEEK"))
                                {
                                    bigDecimal = BigDecimalMath.mult(bigDecimal, HOURS_OF_WEEK);
                                }
                                else if (str20.Equals("MO") || str20.Equals("MONTH"))
                                {
                                    bigDecimal = BigDecimalMath.mult(bigDecimal, HOURS_OF_MONTH);
                                }
                                else if (str20.Equals("DAY"))
                                {
                                    bigDecimal = BigDecimalMath.mult(bigDecimal, HOURS_OF_DAY);
                                }
                                EquipmentTable equipmentTable = BlankResourceInitializer.createBlankEquipment(assemblyTable);
                                equipmentTable.Title           = assemblyTable.Title;
                                equipmentTable.Unit            = str20;
                                equipmentTable.ReservationRate = bigDecimal14;
                                equipmentTable.Currency        = "USD";
                                equipmentTable.EditorId        = "admin";
                                equipmentTable.Country         = "US";
                                equipmentTable.LastUpdate      = this.lastUpdate;
                                equipmentTable.CreateDate      = this.lastUpdate;
                                equipmentTable.CreateUserId    = "admin";
                                equipmentTable.EditorId        = "admin";
                                long = (long?)paramSession.save(equipmentTable.clone());
                                equipmentTable.Id = long;
                                equipmentTable    = (EquipmentTable)paramSession.load(typeof(EquipmentTable), long);
                                AssemblyEquipmentTable assemblyEquipmentTable = new AssemblyEquipmentTable();
                                assemblyEquipmentTable.Factor1                     = BigDecimalMath.ONE;
                                assemblyEquipmentTable.Factor2                     = BigDecimalMath.ONE;
                                assemblyEquipmentTable.Factor3                     = BigDecimalMath.ONE;
                                assemblyEquipmentTable.ExchangeRate                = BigDecimalMath.ONE;
                                assemblyEquipmentTable.QuantityPerUnit             = bigDecimal;
                                assemblyEquipmentTable.QuantityPerUnitFormula      = "";
                                assemblyEquipmentTable.QuantityPerUnitFormulaState = ResourceToAssignmentTable.QTYPUFORM_NOFORMULA;
                                assemblyEquipmentTable.LocalFactor                 = BigDecimalMath.ONE;
                                assemblyEquipmentTable.LocalCountry                = "";
                                assemblyEquipmentTable.LocalStateProvince          = "";
                                assemblyEquipmentTable.EnergyPrice                 = BigDecimalMath.ZERO;
                                assemblyEquipmentTable.FuelRate                    = BigDecimalMath.ZERO;
                                assemblyEquipmentTable.LastUpdate                  = assemblyTable.LastUpdate;
                                long = (long?)paramSession.save(assemblyEquipmentTable);
                                assemblyEquipmentTable.AssemblyEquipmentId = long;
                                assemblyTable.AssemblyEquipmentSet.Add(assemblyEquipmentTable);
                                paramSession.saveOrUpdate(assemblyTable);
                                assemblyEquipmentTable.EquipmentTable = equipmentTable;
                                assemblyEquipmentTable.AssemblyTable  = assemblyTable;
                                paramSession.saveOrUpdate(assemblyEquipmentTable);
                            }
                            else
                            {
                                createSubcontractor(paramSession, assemblyTable, "Equipment: " + assemblyTable.Title, bigDecimal14, str20, bigDecimal13);
                            }
                        }
                        if (bigDecimal9 != null && BigDecimalMath.cmp(bigDecimal9, BigDecimalMath.ZERO) > 0)
                        {
                            MaterialTable materialTable = BlankResourceInitializer.createBlankMaterial(assemblyTable);
                            materialTable.Title        = assemblyTable.Title;
                            materialTable.Unit         = str16;
                            materialTable.Rate         = bigDecimal9;
                            materialTable.Currency     = "USD";
                            materialTable.EditorId     = "admin";
                            materialTable.Country      = "US";
                            materialTable.LastUpdate   = this.lastUpdate;
                            materialTable.CreateDate   = this.lastUpdate;
                            materialTable.CreateUserId = "admin";
                            materialTable.EditorId     = "admin";
                            long             = (long?)paramSession.save(materialTable.clone());
                            materialTable.Id = long;
                            materialTable    = (MaterialTable)paramSession.load(typeof(MaterialTable), long);
                            AssemblyMaterialTable assemblyMaterialTable = new AssemblyMaterialTable();
                            assemblyMaterialTable.Factor1                     = BigDecimalMath.ONE;
                            assemblyMaterialTable.Factor2                     = BigDecimalMath.ONE;
                            assemblyMaterialTable.Factor3                     = BigDecimalMath.ONE;
                            assemblyMaterialTable.ExchangeRate                = BigDecimalMath.ONE;
                            assemblyMaterialTable.QuantityPerUnit             = bigDecimal8;
                            assemblyMaterialTable.QuantityPerUnitFormula      = "";
                            assemblyMaterialTable.QuantityPerUnitFormulaState = ResourceToAssignmentTable.QTYPUFORM_NOFORMULA;
                            assemblyMaterialTable.LocalFactor                 = BigDecimalMath.ONE;
                            assemblyMaterialTable.LocalCountry                = "";
                            assemblyMaterialTable.LocalStateProvince          = "";
                            assemblyMaterialTable.LastUpdate                  = assemblyTable.LastUpdate;
                            long = (long?)paramSession.save(assemblyMaterialTable);
                            assemblyMaterialTable.AssemblyMaterialId = long;
                            assemblyTable.AssemblyMaterialSet.Add(assemblyMaterialTable);
                            paramSession.saveOrUpdate(assemblyTable);
                            assemblyMaterialTable.MaterialTable = materialTable;
                            assemblyMaterialTable.AssemblyTable = assemblyTable;
                            paramSession.saveOrUpdate(assemblyMaterialTable);
                        }
                        if (bigDecimal24 != null && BigDecimalMath.cmp(bigDecimal24, BigDecimalMath.ZERO) > 0)
                        {
                            createSubcontractor(paramSession, assemblyTable, assemblyTable.Title, bigDecimal24, str28, bigDecimal23);
                        }
                        if (bigDecimal19 != null && BigDecimalMath.cmp(bigDecimal19, BigDecimalMath.ZERO) > 0)
                        {
                            ConsumableTable consumableTable = BlankResourceInitializer.createBlankConsumable(assemblyTable);
                            consumableTable.Title        = assemblyTable.Title;
                            consumableTable.Unit         = str24;
                            consumableTable.Rate         = bigDecimal19;
                            consumableTable.Currency     = "USD";
                            consumableTable.EditorId     = "admin";
                            consumableTable.Country      = "US";
                            consumableTable.LastUpdate   = this.lastUpdate;
                            consumableTable.CreateDate   = this.lastUpdate;
                            consumableTable.CreateUserId = "admin";
                            consumableTable.EditorId     = "admin";
                            long = (long?)paramSession.save(consumableTable.clone());
                            consumableTable.Id = long;
                            consumableTable    = (ConsumableTable)paramSession.load(typeof(ConsumableTable), long);
                            AssemblyConsumableTable assemblyConsumableTable = new AssemblyConsumableTable();
                            assemblyConsumableTable.Factor1                     = BigDecimalMath.ONE;
                            assemblyConsumableTable.Factor2                     = BigDecimalMath.ONE;
                            assemblyConsumableTable.Factor3                     = BigDecimalMath.ONE;
                            assemblyConsumableTable.ExchangeRate                = BigDecimalMath.ONE;
                            assemblyConsumableTable.QuantityPerUnit             = bigDecimal18;
                            assemblyConsumableTable.QuantityPerUnitFormula      = "";
                            assemblyConsumableTable.QuantityPerUnitFormulaState = ResourceToAssignmentTable.QTYPUFORM_NOFORMULA;
                            assemblyConsumableTable.LocalFactor                 = BigDecimalMath.ONE;
                            assemblyConsumableTable.LocalCountry                = "";
                            assemblyConsumableTable.LocalStateProvince          = "";
                            assemblyConsumableTable.LastUpdate                  = assemblyTable.LastUpdate;
                            long = (long?)paramSession.save(assemblyConsumableTable);
                            assemblyConsumableTable.AssemblyConsumableId = long;
                            assemblyTable.AssemblyConsumableSet.Add(assemblyConsumableTable);
                            paramSession.saveOrUpdate(assemblyTable);
                            assemblyConsumableTable.ConsumableTable = consumableTable;
                            assemblyConsumableTable.AssemblyTable   = assemblyTable;
                            paramSession.saveOrUpdate(assemblyConsumableTable);
                        }
                        if (DatabaseDBUtil.LocalCommunication)
                        {
                            assemblyTable.recalculate();
                            paramSession.saveOrUpdate(assemblyTable);
                        }
                    }
                }
            }
            if (hSSFWorkbook != null)
            {
                hSSFWorkbook.close();
            }
        }
예제 #21
0
        public virtual decimal calculateFinalRate(bool ds)
        {
            decimal fRate = finalRate;

            if (BoqItemTable != null)
            {
                decimal tUnits = BigDecimalMath.ONE;
                tUnits = BigDecimalMath.mult(tUnits, Factor1);
                tUnits = BigDecimalMath.mult(tUnits, Factor2);
                tUnits = BigDecimalMath.mult(tUnits, Factor3);

                if (BoqItemTable.ActivityBased != null && BoqItemTable.ActivityBased.Equals(false))
                {
                    tUnits = BigDecimalMath.mult(tUnits, QuantityPerUnit);
                    tUnits = BigDecimalMath.mult(tUnits, BoqItemTable.Quantity);
                }
                else
                {
                    tUnits = BigDecimalMath.mult(tUnits, BoqItemTable.Duration);
                }

                if (totalUnits == null || BigDecimalMath.cmp(totalUnits, tUnits) != 0)
                {
                    totalUnits = tUnits;
                }
            }

            if (BoqItemTable != null && LaborTable != null)
            {
                decimal laborRate = BigDecimalMath.mult(LaborTable.RateForCalculation, ExchangeRate);
                laborRate = BigDecimalMath.mult(laborRate, LocalFactor);

                if (BoqItemTable.HasProductivity || BoqItemTable.Quantity.CompareTo(BigDecimalMath.ZERO) <= 0)
                {
                    fRate = BigDecimalMath.mult(laborRate, Factor1);
                    fRate = BigDecimalMath.mult(fRate, Factor2);
                    fRate = BigDecimalMath.mult(fRate, Factor3);

                    if (BoqItemTable.ActivityBased != null && BoqItemTable.ActivityBased.Equals(false))
                    {
                        fRate = BigDecimalMath.mult(fRate, QuantityPerUnit);
                        fRate = BigDecimalMath.div(fRate, UnitHours);
                        //					System.out.println("!!!!! WARN: PRODUCTIVITY TRUE ACT BASED FALSE !!!!");
                    }
                    else
                    {
                        try
                        {
                            decimal fDiv = BigDecimalMath.mult(BoqItemTable.AdjustedProd, UnitHours);
                            fRate = BigDecimalMath.div(fRate, fDiv);
                        }
                        catch (ArithmeticException)
                        {
                            fRate = BigDecimalMath.ZERO;
                        }
                    }
                }
                else
                {                 // Total Units Method:
                    fRate = BigDecimalMath.mult(laborRate, TotalUnits);

                    try
                    {
                        fRate = BigDecimalMath.div(fRate, BoqItemTable.Quantity);
                    }
                    catch (ArithmeticException)
                    {
                        fRate = BigDecimalMath.ZERO;
                    }
                }

                // Calculate Variable, Total Cost:
                variableCost = fRate * (BoqItemTable.Quantity);

                totalCost = decimal.Zero;
                totalCost = totalCost + variableCost;
                totalCost = totalCost + FinalFixedCost;

                // Avoid precision/scale updates if data is the same:
                variableCost = variableCost.setScale(10, decimal.ROUND_HALF_UP);
                totalCost    = totalCost.setScale(10, decimal.ROUND_HALF_UP);
                fRate        = fRate.setScale(10, decimal.ROUND_HALF_UP);
                totalUnits   = totalUnits.setScale(10, decimal.ROUND_HALF_UP);
            }

            finalRate = fRate;

            //System.out.println("Calculated final rate is -> "+finalRate);
            return(fRate);
        }
예제 #22
0
 /**
  * Calculates the angle in radians (also known as argument) of this complex number.
  *
  * <p>This methods <strong>does not</strong> modify this instance.</p>
  *
  * @param mathContext the {@link MathContext} used to calculate the result
  * @return the calculated {@link BigComplex} result
  */
 public BigDecimal angle(MathContext mathContext)
 {
     return(BigDecimalMath.atan2(im, re, mathContext));
 }
예제 #23
0
        public virtual BoqItemConditionTable[] createBoqConditions(BoqItemTable paramBoqItemTable, ConditionTable[] paramArrayOfConditionTable)
        {
            BoqItemConditionTable[] arrayOfBoqItemConditionTable = new BoqItemConditionTable[paramArrayOfConditionTable.Length];
            sbyte b = 0;

            foreach (ConditionTable conditionTable in paramArrayOfConditionTable)
            {
                decimal bigDecimal = null;
                if (Quantities != null && Quantities.Count > b)
                {
                    bigDecimal = (decimal)Quantities[b];
                }
                BoqItemConditionTable boqItemConditionTable = new BoqItemConditionTable();
                string str = "";
                if (conditionTable.DefaultQuantity == null || conditionTable.DefaultQuantity.Value == 0)
                {
                    boqItemConditionTable.SelectedUnit = "selectedQty.1";
                    str = conditionTable.Unit1;
                    if (conditionTable.Quantity2 != null && !conditionTable.Quantity2.Equals(new BigDecimalFixed("0")))
                    {
                        boqItemConditionTable.SelectedUnit = "selectedQty.2";
                        str = conditionTable.Unit2;
                    }
                    if (conditionTable.Quantity3 != null && !conditionTable.Quantity3.Equals(new BigDecimalFixed("0")))
                    {
                        boqItemConditionTable.SelectedUnit = "selectedQty.3";
                        str = conditionTable.Unit3;
                    }
                    if (conditionTable.QuantityF != null && !conditionTable.QuantityF.Equals(new BigDecimalFixed("0")))
                    {
                        boqItemConditionTable.SelectedUnit = "selectedQty.F";
                        str = conditionTable.UnitF;
                    }
                }
                else if (conditionTable.DefaultQuantity.Value == 1)
                {
                    boqItemConditionTable.SelectedUnit = "selectedQty.1";
                    str = conditionTable.Unit1;
                }
                else if (conditionTable.DefaultQuantity.Value == 2)
                {
                    boqItemConditionTable.SelectedUnit = "selectedQty.2";
                    str = conditionTable.Unit2;
                }
                else if (conditionTable.DefaultQuantity.Value == 3)
                {
                    boqItemConditionTable.SelectedUnit = "selectedQty.3";
                    str = conditionTable.Unit3;
                }
                else if (conditionTable.DefaultQuantity.Value == 4)
                {
                    boqItemConditionTable.SelectedUnit = "selectedQty.F";
                    str = conditionTable.UnitF;
                }
                if (!str.Equals(paramBoqItemTable.Unit))
                {
                    if (str.Equals(conditionTable.Unit1))
                    {
                        boqItemConditionTable.SelectedUnit = "selectedQty.1";
                    }
                    if (str.Equals(conditionTable.Unit2))
                    {
                        boqItemConditionTable.SelectedUnit = "selectedQty.2";
                    }
                    if (str.Equals(conditionTable.Unit3))
                    {
                        boqItemConditionTable.SelectedUnit = "selectedQty.3";
                    }
                    if (str.Equals(conditionTable.UnitF))
                    {
                        boqItemConditionTable.SelectedUnit = "selectedQty.F";
                    }
                }
                boqItemConditionTable.Factor1 = BigDecimalMath.ONE;
                boqItemConditionTable.Factor2 = BigDecimalMath.ONE;
                boqItemConditionTable.Sumup   = BigDecimalMath.ZERO;
                if (BigDecimalMath.cmp(bigDecimal, BigDecimalMath.ZERO) > 0)
                {
                    boqItemConditionTable.OverridenQuantity = bigDecimal;
                }
                boqItemConditionTable.BoqItemTable   = paramBoqItemTable;
                boqItemConditionTable.ConditionTable = conditionTable;
                boqItemConditionTable.LastUpdate     = new Timestamp(DateTimeHelper.CurrentUnixTimeMillis());
                arrayOfBoqItemConditionTable[b++]    = boqItemConditionTable;
            }
            return(arrayOfBoqItemConditionTable);
        }