Пример #1
0
        public ActionResult SaveExchange(string parameterStr)
        {
            parameterStr = parameterStr.Replace('x', '.');
            string[] parameters = parameterStr.Split(new[] { "," }, StringSplitOptions.None);

            if (parameters.Length > 1)
            {
                try
                {
                    CurrencyYear refCY = FinancialControls.CurrencyYearList[Convert.ToInt32(parameters[0])];

                    double originalRate = refCY.ExchangeRates[Convert.ToInt32(parameters[1])];

                    // Update new rate
                    refCY.ExchangeRates[Convert.ToInt32(parameters[1])] = Convert.ToDouble(parameters[2]);

                    Log.Append(String.Format("Rate updated ({0} - {1}) : orig={2}, new={3}, by {4}", refCY.CurrencyType,
                                             refCY.Year, originalRate, parameters[2], HttpContext.Session["Email"]));

                    ExcoExRate.SaveExchangeRates(FinancialControls.CurrencyYearList);
                }
                catch (Exception ex)
                {
                    // Non-integer error
                }
            }

            return(RedirectToAction("ExchangeRates", new { parameterStr = "ER" }));
        }
Пример #2
0
        public ActionResult AddExchange(string paramOne)
        {
            string[] parameters = paramOne.Split(new[] { "," }, StringSplitOptions.None);
            if (parameters.Length == 2 && !FinancialControls.CurrencyYearList.Any(x =>
                                                                                  x.Year.ToString() == parameters[0] && ExcoExRate.GetCurrency(parameters[1]) == x.CurrencyType))
            {
                CurrencyYear newCY = new CurrencyYear(ExcoExRate.GetCurrency(parameters[1]),
                                                      Convert.ToInt32(parameters[0]));

                // Instantiate 0 values for all 12 periods
                for (int i = 0; i < 12; i++)
                {
                    newCY.ExchangeRates.Add(0);
                }

                FinancialControls.CurrencyYearList.Add(newCY);

                // Order by currency -> year
                FinancialControls.CurrencyYearList = FinancialControls.CurrencyYearList.OrderBy(x => x.CurrencyType)
                                                     .ThenBy(y => y.Year).ToList();

                ExcoExRate.SaveExchangeRates(FinancialControls.CurrencyYearList);
            }


            return(RedirectToAction("ExchangeRates"));
        }
Пример #3
0
        public ActionResult DeleteRate(string currYear)
        {
            FinancialControls.CurrencyYearList.RemoveAt(Convert.ToInt32(currYear));

            // Order by currency -> year
            FinancialControls.CurrencyYearList = FinancialControls.CurrencyYearList.OrderBy(x => x.CurrencyType)
                                                 .ThenBy(y => y.Year).ToList();

            ExcoExRate.SaveExchangeRates(FinancialControls.CurrencyYearList);

            return(RedirectToAction("ExchangeRates", new { paramOne = "ER" }));
        }
Пример #4
0
 public void ConstructorTest()
 {
     // cad amount
     Assert.AreEqual(1.0 * ExcoExRate.GetToCADRate(calendarCA, "CA"), moneyCA.amountCA);
     Assert.AreEqual(2.0 * ExcoExRate.GetToCADRate(calendarUS, "US"), moneyUS.amountCA);
     Assert.AreEqual(3.3 * ExcoExRate.GetToCADRate(calendarCP, "CP"), moneyCP.amountCA);
     // usd amount
     Assert.AreEqual(1.0 * ExcoExRate.GetToUSDRate(calendarCA, "CA"), moneyCA.amountUS);
     Assert.AreEqual(2.0 * ExcoExRate.GetToUSDRate(calendarUS, "US"), moneyUS.amountUS);
     Assert.AreEqual(3.3 * ExcoExRate.GetToUSDRate(calendarCP, "CP"), moneyCP.amountUS);
     // peso amount
     Assert.AreEqual(1.0 * ExcoExRate.GetToPESORate(calendarCA, "CA"), moneyCA.amountCP);
     Assert.AreEqual(2.0 * ExcoExRate.GetToPESORate(calendarUS, "US"), moneyUS.amountCP);
     Assert.AreEqual(3.3 * ExcoExRate.GetToPESORate(calendarCP, "CP"), moneyCP.amountCP);
 }
Пример #5
0
        private void buttonStart_Click(object sender, EventArgs e)
        {
            ExcoExRate.GetExchangeRatesFromFile();
            // disable start
            buttonStart.Enabled = false;
            // enable stop
            buttonStop.Enabled = true;
            Thread thread = new Thread(Run);

            thread.Start();
            // make sure thread works
            while (!thread.IsAlive)
            {
                ;
            }
        }
Пример #6
0
        public void GetData(int plant, string id, string curr)
        {
            this.curr = curr;
            this.id   = plant;
            GetFiscal();
            // get period details
            ExcoODBC database = ExcoODBC.Instance;

            database.Open(Database.CMSDAT);
            for (int i = 0; i < 12; i++)
            {
                double value = 0.0;
                // invoice
                string         query  = "select coalesce(sum(dipric*(max(diqtso,diqtsp))), 0.0) from cmsdat.oih, cmsdat.oid where dhbcs#='" + id + "' and dhincr='I' and dhpost='Y' and dhinv#=diinv# and diglcd='SAL' and dhplnt='" + plant.ToString("D3") + "' and dharpr=" + fiscalPeriod[i].ToString() + " and dharyr=" + fiscalYear[i].ToString();
                OdbcDataReader reader = database.RunQuery(query);
                if (reader.Read())
                {
                    value = Convert.ToDouble(reader[0]);
                }
                reader.Close();
                // credit
                query  = "select coalesce(sum(dipric*(max(diqtso,diqtsp))), 0.0) from cmsdat.oih, cmsdat.oid where dhbcs#='" + id + "' and dhincr='C' and dhpost='Y' and dhinv#=diinv# and diglcd='SAL' and dhplnt='" + plant.ToString("D3") + "' and dharpr=" + fiscalPeriod[i].ToString() + " and dharyr=" + fiscalYear[i].ToString();
                reader = database.RunQuery(query);
                if (reader.Read())
                {
                    value -= Convert.ToDouble(reader[0]);
                }
                reader.Close();
                // discount and fast track
                query  = "select coalesce(sum(fldext), 0.0) from cmsdat.oih, cmsdat.ois where dhbcs#='" + id + "' and dhpost='Y' and dhinv#=flinv# and (fldisc like 'D%' or fldisc like 'M%' or fldisc like 'F%') and dhplnt='" + plant.ToString("D3") + "' and dharpr=" + fiscalPeriod[i].ToString() + " and dharyr=" + fiscalYear[i].ToString();
                reader = database.RunQuery(query);
                if (reader.Read())
                {
                    value += Convert.ToDouble(reader[0]);
                }
                reader.Close();
                // net sale
                ExcoCalendar calendar = new ExcoCalendar(year, i + 1, true, plant);
                actual[i]       = value;
                actualTotal    += actual[i];
                actualTotalCAD += actual[i] * ExcoExRate.GetToCADRate(calendar, curr);
                ExcoBudget excoBudget = ExcoBudget.Instance;
                budget[i]       = excoBudget.GetMonthlyBudget(id, plant);
                budgetTotal    += budget[i];
                budgetTotalCAD += budget[i] * ExcoExRate.GetToCADRate(calendar, curr);
            }
        }
Пример #7
0
        public void GetToCADRateTest()
        {
            ExcoCalendar calendar = new ExcoCalendar(12, 3, false, 1);

            Assert.AreEqual(1.0, ExcoExRate.GetToCADRate(calendar, "CA"));
            calendar.month = 2;
            Assert.AreEqual(0.000558, ExcoExRate.GetToCADRate(calendar, "CP"));
            calendar.year  = 2012;
            calendar.month = 11;
            Assert.AreEqual(0.99, ExcoExRate.GetToCADRate(calendar, "US"));
            // exception
            try
            {
                ExcoExRate.GetToCADRate(calendar, "UaS");
            }
            catch (Exception e)
            {
                Assert.AreEqual("Invalid currency UaS", e.Message);
            }
        }
Пример #8
0
        private void FillSheet(Excel.Worksheet sheet, int plant)
        {
            // insert title
            sheet.Cells[1, 1] = sheet.Name + " Sales Report (Without Surcharge)";
            sheet.Cells.get_Range("A1").Font.Bold       = true;
            sheet.Cells.get_Range("A1").Font.Size       = 20;
            sheet.Cells.get_Range("A1").Font.ColorIndex = 3;
            sheet.Cells.get_Range("A1", "H1").Merge();
            // build header
            int row = 3;
            int col = 1;

            sheet.Cells[row, col++] = "Cust #";
            sheet.Cells[row, col++] = "Cust Name";
            sheet.Cells[row, col++] = "Territory";
            sheet.Cells[row, col++] = "Currency";
            sheet.Cells[row, col++] = "2014 Budget";
            sheet.Cells[row, col++] = "Yearly 2013";
            sheet.Cells[row, col++] = "Jan";
            sheet.Cells[row, col++] = "Feb";
            sheet.Cells[row, col++] = "Mar";
            sheet.Cells[row, col++] = "Apr";
            sheet.Cells[row, col++] = "May";
            sheet.Cells[row, col++] = "Jun";
            sheet.Cells[row, col++] = "Jul";
            sheet.Cells[row, col++] = "Aug";
            sheet.Cells[row, col++] = "Sep";
            sheet.Cells[row, col++] = "Oct";
            sheet.Cells[row, col++] = "Nov";
            sheet.Cells[row, col++] = "Dec";
            Excel.Range headerRange = sheet.Cells.get_Range("A" + row.ToString(), "R" + row.ToString());
            headerRange.Font.Bold = true;
            headerRange.Cells.Interior.ColorIndex = 40;
            headerRange.Cells.Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;
            row++;
            // write content
            Plant caTotal = new Plant();

            caTotal.curr = "CA";
            Plant usTotal = new Plant();

            usTotal.curr = "US";
            Plant cpTotal = new Plant();

            cpTotal.curr = "CP";
            foreach (Customer cust in custList)
            {
                if ((1 == plant && 0.0 == cust.mar.actualTotal) || (3 == plant && 0.0 == cust.mic.actualTotal) || (5 == plant && 0.0 == cust.tex.actualTotal) || (4 == plant && 0.0 == cust.col.actualTotal))
                {
                    continue;
                }
                col = 1;
                sheet.Cells[row, col].NumberFormat = "@";
                sheet.Cells[row, col++]            = cust.id;
                sheet.Cells[row, col++]            = cust.name;
                sheet.Cells[row, col++]            = cust.terr;
                sheet.Cells[row, col++]            = cust.curr;
                col++;
                if (1 == plant)
                {
                    WritePlant(sheet, cust.mar, row, col);
                    if (0 == cust.curr.CompareTo("CA"))
                    {
                        caTotal += cust.mar;
                    }
                    else if (0 == cust.curr.CompareTo("US"))
                    {
                        usTotal += cust.mar;
                    }
                    else if (0 == cust.curr.CompareTo("CP"))
                    {
                        cpTotal += cust.mar;
                    }
                }
                else if (3 == plant)
                {
                    WritePlant(sheet, cust.mic, row, col);
                    if (0 == cust.curr.CompareTo("CA"))
                    {
                        caTotal += cust.mic;
                    }
                    else if (0 == cust.curr.CompareTo("US"))
                    {
                        usTotal += cust.mic;
                    }
                    else if (0 == cust.curr.CompareTo("CP"))
                    {
                        cpTotal += cust.mic;
                    }
                }
                else if (5 == plant)
                {
                    WritePlant(sheet, cust.tex, row, col);
                    if (0 == cust.curr.CompareTo("CA"))
                    {
                        caTotal += cust.tex;
                    }
                    else if (0 == cust.curr.CompareTo("US"))
                    {
                        usTotal += cust.tex;
                    }
                    else if (0 == cust.curr.CompareTo("CP"))
                    {
                        cpTotal += cust.tex;
                    }
                }
                else if (4 == plant)
                {
                    WritePlant(sheet, cust.col, row, col);
                    if (0 == cust.curr.CompareTo("CA"))
                    {
                        caTotal += cust.col;
                    }
                    else if (0 == cust.curr.CompareTo("US"))
                    {
                        usTotal += cust.col;
                    }
                    else if (0 == cust.curr.CompareTo("CP"))
                    {
                        cpTotal += cust.col;
                    }
                }
                row += 2;
            }
            // write summary
            if (caTotal.actualTotal > 0.0)
            {
                WriteTotal(sheet, caTotal, row);
                row += 3;
            }
            if (usTotal.actualTotal > 0.0)
            {
                WriteTotal(sheet, usTotal, row);
                row += 3;
            }
            if (cpTotal.actualTotal > 0.0)
            {
                WriteTotal(sheet, cpTotal, row++);
                row += 3;
            }
            // write PESO summary
            if (4 == plant)
            {
                row++;
                col = 4;
                sheet.Cells[row, col++] = "Grand Total (CP):";
                col++;
                // totals in peso
                double[] grandTotal = new double[13];
                for (int i = 0; i < 13; i++)
                {
                    grandTotal[i] = 0.0;
                }
                for (int i = 0; i < 12; i++)
                {
                    ExcoCalendar calendar = new ExcoCalendar(13, i + 1, false, plant);
                    grandTotal[i + 1] = ExcoExRate.GetToPESORate(calendar, "US") * usTotal.actual[i] + cpTotal.actual[i];
                    grandTotal[0]    += grandTotal[i + 1];
                }
                for (int i = 0; i < 13; i++)
                {
                    sheet.Cells[row, col++] = grandTotal[i].ToString("C2");
                }
                // summary style
                Excel.Range range = sheet.get_Range("A" + row.ToString(), "R" + row.ToString());
                range.Font.Size       = 9;
                range.Font.ColorIndex = 16;
                range.Cells.Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;
            }
            // write CAD summary
            if (1 == plant)
            {
                row++;
                col = 4;
                sheet.Cells[row, col++] = "Grand Total (CA):";
                col++;
                // totals in CAD
                double[] grandTotal = new double[13];
                for (int i = 0; i < 13; i++)
                {
                    grandTotal[i] = 0.0;
                }
                for (int i = 0; i < 12; i++)
                {
                    ExcoCalendar calendar = new ExcoCalendar(13, i + 1, false, plant);
                    grandTotal[i + 1] = ExcoExRate.GetToCADRate(calendar, "US") * usTotal.actual[i] + caTotal.actual[i];
                    grandTotal[0]    += grandTotal[i + 1];
                }
                for (int i = 0; i < 13; i++)
                {
                    sheet.Cells[row, col++] = grandTotal[i].ToString("C2");
                }
                // summary style
                Excel.Range range = sheet.get_Range("A" + row.ToString(), "R" + row.ToString());
                range.Font.Size       = 9;
                range.Font.ColorIndex = 16;
                range.Cells.Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;
            }
            // adjust style
            sheet.Cells.Columns.AutoFit();
            sheet.Cells.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
        }
Пример #9
0
 public ActionResult ExchangeRates(string paramOne)
 {
     FinancialControls.CurrencyYearList = ExcoExRate.GetExchangeRatesList();
     return(View());
 }
Пример #10
0
    private double[] WriteToSalesTable(GridView gridView, Process process, string currency)
    {
        DataTable table = new DataTable();

        table.Columns.Add("Cust#");
        table.Columns.Add("Cust Name");
        table.Columns.Add("Territory");
        table.Columns.Add("Currency");
        table.Columns.Add(" ");
        table.Columns.Add("Period01");
        table.Columns.Add("Period02");
        table.Columns.Add("Period03");
        table.Columns.Add("Period04");
        table.Columns.Add("Period05");
        table.Columns.Add("Period06");
        table.Columns.Add("Period07");
        table.Columns.Add("Period08");
        table.Columns.Add("Period09");
        table.Columns.Add("Period10");
        table.Columns.Add("Period11");
        table.Columns.Add("Period12");
        table.Columns.Add("Total");
        List <ExcoMoney> actualSummary   = new List <ExcoMoney>();
        List <ExcoMoney> budgetSummary   = new List <ExcoMoney>();
        List <ExcoMoney> lastYearSummary = new List <ExcoMoney>();

        for (int i = 0; i < 13; i++)
        {
            actualSummary.Add(new ExcoMoney());
            budgetSummary.Add(new ExcoMoney());
            lastYearSummary.Add(new ExcoMoney());
        }
        // add sales data
        foreach (Customer cust in process.plant.custList)
        {
            if (cust.excoCustomer.Currency.Contains(currency) && (!cust.actualTotal.IsZero() || !cust.budgetTotal.IsZero()))
            {
                DataRow rowActual = table.NewRow();
                rowActual["Cust#"]     = cust.excoCustomer.BillToID;
                rowActual["Cust Name"] = cust.excoCustomer.Name;
                rowActual["Territory"] = cust.excoCustomer.Territory;
                rowActual["Currency"]  = cust.excoCustomer.Currency;
                rowActual[" "]         = "Actual:";
                DataRow rowBudget = table.NewRow();
                rowBudget[" "] = "Budget:";
                DataRow rowLastYear = table.NewRow();
                rowLastYear[" "] = "Last Year:";
                for (int i = 1; i <= 12; i++)
                {
                    double actual   = cust.actualList[i].GetAmount(currency);
                    double budget   = cust.budgetList[i].GetAmount(currency);
                    double lastYear = cust.actualListLastYear[i].GetAmount(currency);
                    string index    = "Period" + i.ToString("D2");
                    rowActual[index]        = actual.ToString("C2");
                    actualSummary[i - 1]   += cust.actualList[i];
                    rowBudget[index]        = budget.ToString("C2");
                    budgetSummary[i - 1]   += cust.budgetList[i];
                    rowLastYear[index]      = lastYear.ToString("C2");
                    lastYearSummary[i - 1] += cust.actualListLastYear[i];
                }
                rowActual["Total"]   = cust.actualTotal.GetAmount(currency).ToString("C2");
                actualSummary[12]   += cust.actualTotal;
                rowBudget["Total"]   = cust.budgetTotal.GetAmount(currency).ToString("C2");
                budgetSummary[12]   += cust.budgetTotal;
                rowLastYear["Total"] = cust.actualTotalLastYear.GetAmount(currency).ToString("C2");
                lastYearSummary[12] += cust.actualTotalLastYear;
                table.Rows.Add(rowActual);
                table.Rows.Add(rowBudget);
                table.Rows.Add(rowLastYear);
            }
        }
        // add empty rows
        table.Rows.Add(table.NewRow());
        table.Rows.Add(table.NewRow());
        // add summary
        double[] summaryList     = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
        DataRow  summaryActual   = table.NewRow();
        DataRow  summaryBudget   = table.NewRow();
        DataRow  summaryLastYear = table.NewRow();

        summaryActual["Currency"] = "TOTAL (" + currency + "):";
        summaryActual[" "]        = "Actual:";
        summaryBudget[" "]        = "Budget:";
        summaryLastYear[" "]      = "Last Year:";
        for (int i = 0; i < 13; i++)
        {
            summaryActual[i + 5]   = actualSummary[i].GetAmount(currency).ToString("C2");
            summaryBudget[i + 5]   = budgetSummary[i].GetAmount(currency).ToString("C2");
            summaryLastYear[i + 5] = lastYearSummary[i].GetAmount(currency).ToString("C2");
            if ((1 == plantID && currency.Contains("CA")) || (4 == plantID && currency.Contains("CP")) || 3 == plantID || 5 == plantID)
            {
                summaryList[i] += actualSummary[i].GetAmount(currency);
            }
        }
        table.Rows.Add(summaryActual);
        table.Rows.Add(summaryBudget);
        table.Rows.Add(summaryLastYear);
        // add currency conversion
        if (1 == plantID && currency.Contains("US"))
        {
            // add empty rows
            table.Rows.Add(table.NewRow());
            table.Rows.Add(table.NewRow());
            // add conversion rate
            DataRow rateRow     = table.NewRow();
            DataRow actualRow   = table.NewRow();
            DataRow budgetRow   = table.NewRow();
            DataRow lastYearRow = table.NewRow();
            rateRow["Currency"] = "Convert to CAD";
            rateRow[" "]        = "Rate:";
            actualRow[" "]      = "Actual:";
            budgetRow[" "]      = "Budget:";
            lastYearRow[" "]    = "Last Year:";
            for (int i = 1; i <= 12; i++)
            {
                rateRow["Period" + i.ToString("D2")]     = ExcoExRate.GetToCADRate(new ExcoCalendar(14, i, true, 1), "US").ToString("F2");
                actualRow["Period" + i.ToString("D2")]   = actualSummary[i - 1].GetAmount("CA").ToString("C2");
                budgetRow["Period" + i.ToString("D2")]   = budgetSummary[i - 1].GetAmount("CA").ToString("C2");
                lastYearRow["Period" + i.ToString("D2")] = lastYearSummary[i - 1].GetAmount("CA").ToString("C2");
                summaryList[i - 1] += actualSummary[i - 1].GetAmount("CA");
            }
            actualRow["Total"]   = actualSummary[12].GetAmount("CA").ToString("C2");
            summaryList[12]     += actualSummary[12].GetAmount("CA");
            budgetRow["Total"]   = budgetSummary[12].GetAmount("CA").ToString("C2");
            lastYearRow["Total"] = lastYearSummary[12].GetAmount("CA").ToString("C2");
            table.Rows.Add(rateRow);
            table.Rows.Add(actualRow);
            table.Rows.Add(budgetRow);
            table.Rows.Add(lastYearRow);
        }
        if (4 == plantID && currency.Contains("US"))
        {
            // add empty rows
            table.Rows.Add(table.NewRow());
            table.Rows.Add(table.NewRow());
            // add conversion rate
            DataRow rateRow     = table.NewRow();
            DataRow actualRow   = table.NewRow();
            DataRow budgetRow   = table.NewRow();
            DataRow lastYearRow = table.NewRow();
            rateRow["Currency"] = "Convert to PESO";
            rateRow[" "]        = "Rate:";
            actualRow[" "]      = "Actual:";
            budgetRow[" "]      = "Budget:";
            for (int i = 1; i <= 12; i++)
            {
                if (i <= 3)
                {
                    rateRow["Period" + i.ToString("D2")] = ExcoExRate.GetToPESORate(new ExcoCalendar(13, i + 9, true, 4), "US").ToString("F2");
                }
                else
                {
                    rateRow["Period" + i.ToString("D2")] = ExcoExRate.GetToPESORate(new ExcoCalendar(14, i - 3, true, 4), "US").ToString("F2");
                }
                actualRow["Period" + i.ToString("D2")] = actualSummary[i - 1].GetAmount("CP").ToString("C2");
                summaryList[i - 1] += actualSummary[i - 1].GetAmount("CP");
                budgetRow["Period" + i.ToString("D2")]   = budgetSummary[i - 1].GetAmount("CP").ToString("C2");
                lastYearRow["Period" + i.ToString("D2")] = lastYearSummary[i - 1].GetAmount("CP").ToString("C2");
            }
            actualRow["Total"]   = actualSummary[12].GetAmount("CP").ToString("C2");
            summaryList[12]     += actualSummary[12].GetAmount("CP");
            budgetRow["Total"]   = budgetSummary[12].GetAmount("CP").ToString("C2");
            lastYearRow["Total"] = lastYearSummary[12].GetAmount("CP").ToString("C2");
            table.Rows.Add(rateRow);
            table.Rows.Add(actualRow);
            table.Rows.Add(budgetRow);
            table.Rows.Add(lastYearRow);
        }
        // write to grid view
        table.AcceptChanges();
        gridView.DataSource = table;
        gridView.DataBind();
        // adjust style
        foreach (GridViewRow row in gridView.Rows)
        {
            Style style = new Style();
            style.ForeColor = Color.Gray;
            style.Font.Size = 9;
            // actual row
            if (row.Cells[4].Text.Contains("Actual") || row.Cells[4].Text.Contains("Rate"))
            {
                row.ForeColor          = Color.Black;
                row.Font.Bold          = true;
                row.Font.Size          = 12;
                row.Cells[4].ForeColor = Color.Gray;
                row.Cells[4].Font.Size = 9;
            }
            // budget/last year row
            else
            {
                row.ApplyStyle(style);
            }
        }
        return(summaryList);
    }
Пример #11
0
        public void PESOtoCADTest()
        {
            ExcoCalendar calendar = new ExcoCalendar(12, 1, false, 1);

            // short year
            Assert.AreEqual(0.000556, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 2;
            Assert.AreEqual(0.000558, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 3;
            Assert.AreEqual(0.000557, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 4;
            Assert.AreEqual(0.000560, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 5;
            Assert.AreEqual(0.000564, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 6;
            Assert.AreEqual(0.000571, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 7;
            Assert.AreEqual(0.000559, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 8;
            Assert.AreEqual(0.000540, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 9;
            Assert.AreEqual(0.000546, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 10;
            Assert.AreEqual(0.000546, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 11;
            Assert.AreEqual(0.000548, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 12;
            Assert.AreEqual(0.000563, ExcoExRate.PESOtoCAD(calendar));
            calendar.year  = 13;
            calendar.month = 1;
            Assert.AreEqual(0.000562, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 2;
            Assert.AreEqual(0.000567, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 3;
            Assert.AreEqual(0.000556, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 4;
            Assert.AreEqual(0.000551, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 5;
            Assert.AreEqual(0.000543, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 6;
            Assert.AreEqual(0.000550, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 7;
            Assert.AreEqual(0.0, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 8;
            Assert.AreEqual(0.0, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 9;
            Assert.AreEqual(0.0, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 10;
            Assert.AreEqual(0.0, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 11;
            Assert.AreEqual(0.0, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 12;
            Assert.AreEqual(0.0, ExcoExRate.PESOtoCAD(calendar));
            // long year
            calendar.year  = 2012;
            calendar.month = 1;
            Assert.AreEqual(0.000556, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 2;
            Assert.AreEqual(0.000558, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 3;
            Assert.AreEqual(0.000557, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 4;
            Assert.AreEqual(0.000560, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 5;
            Assert.AreEqual(0.000564, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 6;
            Assert.AreEqual(0.000571, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 7;
            Assert.AreEqual(0.000559, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 8;
            Assert.AreEqual(0.000540, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 9;
            Assert.AreEqual(0.000546, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 10;
            Assert.AreEqual(0.000546, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 11;
            Assert.AreEqual(0.000548, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 12;
            Assert.AreEqual(0.000563, ExcoExRate.PESOtoCAD(calendar));
            calendar.year  = 2013;
            calendar.month = 1;
            Assert.AreEqual(0.000562, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 2;
            Assert.AreEqual(0.000567, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 3;
            Assert.AreEqual(0.000556, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 4;
            Assert.AreEqual(0.000551, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 5;
            Assert.AreEqual(0.000543, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 6;
            Assert.AreEqual(0.000550, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 7;
            Assert.AreEqual(0.0, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 8;
            Assert.AreEqual(0.0, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 9;
            Assert.AreEqual(0.0, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 10;
            Assert.AreEqual(0.0, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 11;
            Assert.AreEqual(0.0, ExcoExRate.PESOtoCAD(calendar));
            calendar.month = 12;
            Assert.AreEqual(0.0, ExcoExRate.PESOtoCAD(calendar));
            // exception
            try
            {
                calendar.year = 11;
                ExcoExRate.PESOtoCAD(calendar);
            }
            catch (Exception e)
            {
                Assert.AreEqual("Invalid year 11", e.Message);
            }
            try
            {
                calendar.year  = 12;
                calendar.month = 33;
                ExcoExRate.PESOtoCAD(calendar);
            }
            catch (Exception e)
            {
                Assert.AreEqual("Invalid month 33", e.Message);
            }
        }
Пример #12
0
        public void USDtoCADTest()
        {
            ExcoCalendar calendar = new ExcoCalendar(12, 1, false, 1);

            // short year
            Assert.AreEqual(1.0, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 2;
            Assert.AreEqual(0.99, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 3;
            Assert.AreEqual(1.0, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 4;
            Assert.AreEqual(0.99, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 5;
            Assert.AreEqual(1.03, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 6;
            Assert.AreEqual(1.02, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 7;
            Assert.AreEqual(1.0, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 8;
            Assert.AreEqual(0.99, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 9;
            Assert.AreEqual(0.98, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 10;
            Assert.AreEqual(1.0, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 11;
            Assert.AreEqual(0.99, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 12;
            Assert.AreEqual(0.99, ExcoExRate.USDtoCAD(calendar));
            calendar.year  = 13;
            calendar.month = 1;
            Assert.AreEqual(1.0, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 2;
            Assert.AreEqual(1.03, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 3;
            Assert.AreEqual(1.02, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 4;
            Assert.AreEqual(1.01, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 5;
            Assert.AreEqual(1.04, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 6;
            Assert.AreEqual(1.01, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 7;
            Assert.AreEqual(0.0, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 8;
            Assert.AreEqual(0.0, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 9;
            Assert.AreEqual(0.0, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 10;
            Assert.AreEqual(0.0, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 11;
            Assert.AreEqual(0.0, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 12;
            Assert.AreEqual(0.0, ExcoExRate.USDtoCAD(calendar));
            // long year
            calendar.year  = 2012;
            calendar.month = 1;
            Assert.AreEqual(1.0, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 2;
            Assert.AreEqual(0.99, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 3;
            Assert.AreEqual(1.0, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 4;
            Assert.AreEqual(0.99, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 5;
            Assert.AreEqual(1.03, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 6;
            Assert.AreEqual(1.02, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 7;
            Assert.AreEqual(1.0, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 8;
            Assert.AreEqual(0.99, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 9;
            Assert.AreEqual(0.98, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 10;
            Assert.AreEqual(1.0, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 11;
            Assert.AreEqual(0.99, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 12;
            Assert.AreEqual(0.99, ExcoExRate.USDtoCAD(calendar));
            calendar.year  = 2013;
            calendar.month = 1;
            Assert.AreEqual(1.0, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 2;
            Assert.AreEqual(1.03, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 3;
            Assert.AreEqual(1.02, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 4;
            Assert.AreEqual(1.01, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 5;
            Assert.AreEqual(1.04, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 6;
            Assert.AreEqual(1.01, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 7;
            Assert.AreEqual(0.0, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 8;
            Assert.AreEqual(0.0, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 9;
            Assert.AreEqual(0.0, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 10;
            Assert.AreEqual(0.0, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 11;
            Assert.AreEqual(0.0, ExcoExRate.USDtoCAD(calendar));
            calendar.month = 12;
            Assert.AreEqual(0.0, ExcoExRate.USDtoCAD(calendar));
            // exception
            try
            {
                calendar.year = 11;
                ExcoExRate.USDtoCAD(calendar);
            }
            catch (Exception e)
            {
                Assert.AreEqual("Invalid year 11", e.Message);
            }
            try
            {
                calendar.year  = 12;
                calendar.month = 33;
                ExcoExRate.USDtoCAD(calendar);
            }
            catch (Exception e)
            {
                Assert.AreEqual("Invalid month 33", e.Message);
            }
        }
Пример #13
0
        // @note This is the main function of the working
        // thread.
        public Process(string filePath, string plant, int year, int period)
        {
            ExcoExRate.GetExchangeRatesList();

            try
            {
                int    plantID   = 0;
                string plantName = string.Empty;
                if (plant == "Markham")
                {
                    plantID   = 1;
                    plantName = "Markham";
                }
                else if (plant == "Michigan")
                {
                    plantID   = 3;
                    plantName = "Michigan";
                }
                else if (plant == "Texas")
                {
                    plantID   = 5;
                    plantName = "Texas";
                }
                else if (plant == "Colombia")
                {
                    plantID   = 4;
                    plantName = "Colombia";
                }

                ExcoCalendar calendar     = new ExcoCalendar(year, period, true, plantID);
                ExcoCalendar tempCalendar = new ExcoCalendar(year, period, false, 1);
                ExcoODBC     database     = ExcoODBC.Instance;
                database.Open(Database.CMSDAT);
                Dictionary <int, Account> accountMap = new Dictionary <int, Account>();
                string         query = string.Empty;
                OdbcDataReader reader;
                if (plantID == 1)
                {
                    query  = "select distinct a.aj4gl#1 as no1, a.aj4gl#2 as no2, b.aztitl as title, b.azatyp as account_type, (a.aj4tt" + calendar.GetFiscalMonth().ToString("D2") + "+aj4ob" + calendar.GetFiscalMonth().ToString("D2") + ") as balance from cmsdat.glmt as a, cmsdat.mast as b where a.aj4comp=1 and a.aj4ccyy=" + (calendar.GetFiscalYear()).ToString("D2") + " and a.aj4gl#1=b.azgl#1 and a.aj4gl#2=b.azgl#2 and b.azcomp=1 and a.aj4gl#1!=200";
                    reader = database.RunQuery(query);
                    while (reader.Read())
                    {
                        Account account = new Account();
                        account.glNum1          = Convert.ToInt32(reader["no1"]) % 100;
                        account.glNum2          = Convert.ToInt32(reader["no2"]);
                        account.title           = reader["title"].ToString().Trim();
                        account.balanceAmount01 = Convert.ToDouble(reader["balance"]);
                        int key = account.glNum1 * 1000000 + account.glNum2;
                        if (99999999 == key)
                        {
                            continue;
                        }
                        if (accountMap.ContainsKey(key))
                        {
                            accountMap[key].balanceAmount01 = account.balanceAmount01;
                        }
                        else
                        {
                            accountMap.Add(key, account);
                        }
                    }
                    reader.Close();
                }
                else if (plantID == 3)
                {
                    query  = "select a.aj4gl#1 as no1, a.aj4gl#2 as no2, b.aztitl as title, b.azatyp as account_type, (a.aj4tt" + calendar.GetFiscalMonth().ToString("D2") + "+aj4ob" + calendar.GetFiscalMonth().ToString("D2") + ") as balance from cmsdat.glmt as a, cmsdat.mast as b where a.aj4comp=3 and a.aj4ccyy=" + (calendar.GetFiscalYear()).ToString("D2") + " and a.aj4gl#1=b.azgl#1 and a.aj4gl#2=b.azgl#2 and b.azcomp=3";
                    reader = database.RunQuery(query);
                    while (reader.Read())
                    {
                        Account account = new Account();
                        account.glNum1          = Convert.ToInt32(reader["no1"]) % 100;
                        account.glNum2          = Convert.ToInt32(reader["no2"]);
                        account.title           = reader["title"].ToString().Trim();
                        account.balanceAmount03 = Convert.ToDouble(reader["balance"]);
                        int key = account.glNum1 * 1000000 + account.glNum2;
                        if (99999999 == key)
                        {
                            continue;
                        }
                        if (accountMap.ContainsKey(key))
                        {
                            accountMap[key].balanceAmount03 = account.balanceAmount03;
                        }
                        else
                        {
                            accountMap.Add(key, account);
                        }
                    }
                    reader.Close();
                }
                else if (plantID == 5)
                {
                    query  = "select a.aj4gl#1 as no1, a.aj4gl#2 as no2, b.aztitl as title, b.azatyp as account_type, (a.aj4tt" + calendar.GetFiscalMonth().ToString("D2") + "+aj4ob" + calendar.GetFiscalMonth().ToString("D2") + ") as balance from cmsdat.glmt as a, cmsdat.mast as b where a.aj4comp=5 and a.aj4ccyy=" + (calendar.GetFiscalYear()).ToString("D2") + " and a.aj4gl#1=b.azgl#1 and a.aj4gl#2=b.azgl#2 and b.azcomp=5";
                    reader = database.RunQuery(query);
                    while (reader.Read())
                    {
                        Account account = new Account();
                        account.glNum1          = Convert.ToInt32(reader["no1"]) % 100;
                        account.glNum2          = Convert.ToInt32(reader["no2"]);
                        account.title           = reader["title"].ToString().Trim();
                        account.balanceAmount05 = Convert.ToDouble(reader["balance"]);
                        int key = account.glNum1 * 1000000 + account.glNum2;
                        if (99999999 == key)
                        {
                            continue;
                        }
                        if (accountMap.ContainsKey(key))
                        {
                            accountMap[key].balanceAmount05 = account.balanceAmount05;
                        }
                        else
                        {
                            accountMap.Add(key, account);
                        }
                    }
                    reader.Close();
                }
                else if (plantID == 4)
                {
                    // plant 04
                    query  = "select a.aj4gl#1 as no1, a.aj4gl#2 as no2, b.aztitl as title, b.azatyp as account_type, (a.aj4tt" + calendar.GetFiscalMonth().ToString("D2") + "+aj4ob" + calendar.GetFiscalMonth().ToString("D2") + ") as balance from cmsdat.glmt as a, cmsdat.mast as b where a.aj4comp=4 and a.aj4ccyy=" + (calendar.GetFiscalYear()).ToString("D2") + " and a.aj4gl#1=b.azgl#1 and a.aj4gl#2=b.azgl#2 and b.azcomp=4";
                    reader = database.RunQuery(query);
                    while (reader.Read())
                    {
                        Account account = new Account();
                        account.glNum1          = Convert.ToInt32(reader["no1"]) % 100;
                        account.glNum2          = Convert.ToInt32(reader["no2"]);
                        account.title           = reader["title"].ToString().Trim();
                        account.balanceAmount04 = Convert.ToDouble(reader["balance"]);
                        int key = account.glNum1 * 1000000 + account.glNum2;
                        if (99999999 == key)
                        {
                            continue;
                        }
                        if (accountMap.ContainsKey(key))
                        {
                            accountMap[key].balanceAmount04 = account.balanceAmount04;
                        }
                        else
                        {
                            accountMap.Add(key, account);
                        }
                    }
                    reader.Close();
                    // plant 48
                    query  = "select a.aj4gl#1 as no1, a.aj4gl#2 as no2, b.aztitl as title, b.azatyp as account_type, (a.aj4tt" + calendar.GetFiscalMonth().ToString("D2") + "+aj4ob" + calendar.GetFiscalMonth().ToString("D2") + ") as balance from cmsdat.glmt as a, cmsdat.mast as b where a.aj4comp=48 and a.aj4ccyy=" + (calendar.GetFiscalYear() + 2000).ToString("D2") + " and a.aj4gl#1=b.azgl#1 and a.aj4gl#2=b.azgl#2 and b.azcomp=48";
                    reader = database.RunQuery(query);
                    while (reader.Read())
                    {
                        Account account = new Account();
                        account.glNum1          = Convert.ToInt32(reader["no1"]) % 100;
                        account.glNum2          = Convert.ToInt32(reader["no2"]);
                        account.title           = reader["title"].ToString().Trim();
                        account.balanceAmount48 = Convert.ToDouble(reader["balance"]);
                        int key = account.glNum1 * 1000000 + account.glNum2;
                        if (99999999 == key)
                        {
                            continue;
                        }
                        if (accountMap.ContainsKey(key))
                        {
                            accountMap[key].balanceAmount48 = account.balanceAmount48;
                        }
                        else
                        {
                            accountMap.Add(key, account);
                        }
                    }
                    reader.Close();
                    // plant 41
                    query  = "select a.aj4gl#1 as no1, a.aj4gl#2 as no2, b.aztitl as title, b.azatyp as account_type, (a.aj4tt" + tempCalendar.GetFiscalMonth().ToString("D2") + "+aj4ob" + tempCalendar.GetFiscalMonth().ToString("D2") + ") as balance from cmsdat.glmt as a, cmsdat.mast as b where a.aj4comp=41 and a.aj4ccyy=" + (tempCalendar.GetFiscalYear() + 2000).ToString("D2") + " and a.aj4gl#1=b.azgl#1 and a.aj4gl#2=b.azgl#2 and b.azcomp=41";
                    reader = database.RunQuery(query);
                    while (reader.Read())
                    {
                        Account account = new Account();
                        account.glNum1          = Convert.ToInt32(reader["no1"]) % 100;
                        account.glNum2          = Convert.ToInt32(reader["no2"]);
                        account.title           = reader["title"].ToString().Trim();
                        account.balanceAmount41 = Convert.ToDouble(reader["balance"]);
                        int key = account.glNum1 * 1000000 + account.glNum2;
                        if (99999999 == key)
                        {
                            continue;
                        }
                        if (accountMap.ContainsKey(key))
                        {
                            accountMap[key].balanceAmount41 = account.balanceAmount41;
                        }
                        else
                        {
                            accountMap.Add(key, account);
                        }
                    }
                    reader.Close();

                    // plant 49

                    query  = "select a.aj4gl#1 as no1, a.aj4gl#2 as no2, b.aztitl as title, b.azatyp as account_type, (a.aj4tt" + tempCalendar.GetFiscalMonth().ToString("D2") + "+aj4ob" + tempCalendar.GetFiscalMonth().ToString("D2") + ") as balance from cmsdat.glmt as a, cmsdat.mast as b where a.aj4comp=49 and a.aj4ccyy=" + (tempCalendar.GetFiscalYear() + 2000).ToString("D2") + " and a.aj4gl#1=b.azgl#1 and a.aj4gl#2=b.azgl#2 and b.azcomp=49";
                    reader = database.RunQuery(query);
                    while (reader.Read())
                    {
                        Account account = new Account();
                        account.glNum1          = Convert.ToInt32(reader["no1"]) % 100;
                        account.glNum2          = Convert.ToInt32(reader["no2"]);
                        account.title           = reader["title"].ToString().Trim();
                        account.balanceAmount49 = Convert.ToDouble(reader["balance"]);
                        int key = account.glNum1 * 1000000 + account.glNum2;
                        if (99999999 == key)
                        {
                            continue;
                        }
                        if (accountMap.ContainsKey(key))
                        {
                            accountMap[key].balanceAmount49 = account.balanceAmount49;
                        }
                        else
                        {
                            accountMap.Add(key, account);
                        }
                    }
                    reader.Close();
                }
                else
                {
                    throw new Exception("None of plants has been selected!");
                }
                // write to excel
                Excel2.Application excel    = new Excel2.Application();
                object             misValue = System.Reflection.Missing.Value;
                Excel2.Workbook    book     = excel.Workbooks.Add(misValue);
                //Excel.Worksheet sheet = book.Worksheets[1];
                Excel2.Worksheet sheet = book.Worksheets.Add();//[1];
                //sheet.Delete();
                //sheet = book.Worksheets[1];
                //sheet.Delete();
                //sheet = book.Worksheets[1];
                sheet.Name = "Trial Balance for " + plantName;
                // write title
                sheet.Cells[1, 1] = plantName;
                Excel2.Range range = sheet.get_Range("A1");
                range.Font.Color  = Color.Red;
                range.Font.Size   = 14;
                sheet.Cells[2, 1] = "Balance Consolidations";
                range             = sheet.get_Range("A2");
                range.Font.Size   = 10;
                range.Font.Bold   = true;
                sheet.Cells[3, 1] = "Generated at " + DateTime.Today.ToString("MMMM-dd-yyyy");
                range             = sheet.get_Range("A3");
                range.Font.Size   = 10;
                range.Font.Bold   = true;
                sheet.Cells[6, 1] = "Ending Balance";
                range             = sheet.get_Range("A6");
                range.Font.Size   = 11;
                range.Font.Color  = Color.Red;
                range.Font.Bold   = true;
                sheet.Cells[7, 1] = "Account";
                range             = sheet.get_Range("A7");
                range.Font.Size   = 11;
                range.Cells.Borders[Excel2.XlBordersIndex.xlEdgeBottom].LineStyle = Excel2.XlLineStyle.xlContinuous;
                sheet.Cells[5, 2]             = "Company Number";
                range                         = sheet.get_Range("B5");
                range.Font.Size               = 11;
                range.Cells.Borders.LineStyle = Excel2.XlLineStyle.xlContinuous;
                sheet.Cells[6, 2]             = "Period";
                range                         = sheet.get_Range("B6");
                range.Font.Size               = 11;
                range.Cells.Borders.LineStyle = Excel2.XlLineStyle.xlContinuous;
                sheet.Cells[7, 2]             = "Account Name / Company";
                range                         = sheet.get_Range("B7");
                range.Font.Size               = 11;
                range.Cells.Borders.LineStyle = Excel2.XlLineStyle.xlContinuous;
                if (4 != plantID)
                {
                    sheet.Cells[5, 3]             = plantID.ToString("D2");
                    range                         = sheet.get_Range("C5");
                    range.Font.Size               = 11;
                    range.Font.Color              = Color.Red;
                    range.Cells.Borders.LineStyle = Excel2.XlLineStyle.xlContinuous;
                    range.Cells.Interior.Color    = Color.PeachPuff;
                    sheet.Cells[6, 3]             = (calendar.GetFiscalYear() + 2000).ToString() + "-" + calendar.GetFiscalMonth().ToString("D2");
                    range                         = sheet.get_Range("C6");
                    range.Font.Size               = 11;
                    range.Cells.Borders.LineStyle = Excel2.XlLineStyle.xlContinuous;
                    range.Cells.Interior.Color    = Color.PeachPuff;
                    sheet.Cells[7, 3]             = plantName;
                    range                         = sheet.get_Range("C7");
                    range.Font.Size               = 11;
                    range.Cells.Borders.LineStyle = Excel2.XlLineStyle.xlContinuous;
                    range.Cells.Interior.Color    = Color.PeachPuff;
                }
                else
                {
                    // 04
                    sheet.Cells[5, 3]             = "04";
                    range                         = sheet.get_Range("C5");
                    range.Font.Size               = 11;
                    range.Font.Color              = Color.Red;
                    range.Cells.Borders.LineStyle = Excel2.XlLineStyle.xlContinuous;
                    range.Cells.Interior.Color    = Color.PeachPuff;
                    sheet.Cells[6, 3]             = (calendar.GetFiscalYear() + 2000).ToString() + "-" + calendar.GetFiscalMonth().ToString("D2");
                    range                         = sheet.get_Range("C6");
                    range.Font.Size               = 11;
                    range.Cells.Borders.LineStyle = Excel2.XlLineStyle.xlContinuous;
                    range.Cells.Interior.Color    = Color.PeachPuff;
                    sheet.Cells[7, 3]             = "Exco GAAP";
                    range                         = sheet.get_Range("C7");
                    range.Font.Size               = 11;
                    range.Cells.Borders.LineStyle = Excel2.XlLineStyle.xlContinuous;
                    range.Cells.Interior.Color    = Color.PeachPuff;
                    // 41
                    sheet.Cells[5, 4]             = "41";
                    range                         = sheet.get_Range("D5");
                    range.Font.Size               = 11;
                    range.Font.Color              = Color.Red;
                    range.Cells.Borders.LineStyle = Excel2.XlLineStyle.xlContinuous;
                    range.Cells.Interior.Color    = Color.PeachPuff;
                    sheet.Cells[6, 4]             = (tempCalendar.GetFiscalYear() + 2000).ToString() + "-" + tempCalendar.GetFiscalMonth().ToString("D2");
                    range                         = sheet.get_Range("D6");
                    range.Font.Size               = 11;
                    range.Cells.Borders.LineStyle = Excel2.XlLineStyle.xlContinuous;
                    range.Cells.Interior.Color    = Color.PeachPuff;
                    sheet.Cells[7, 4]             = "Exco IFRS";
                    range                         = sheet.get_Range("D7");
                    range.Font.Size               = 11;
                    range.Cells.Borders.LineStyle = Excel2.XlLineStyle.xlContinuous;
                    range.Cells.Interior.Color    = Color.PeachPuff;
                    // 48
                    sheet.Cells[5, 5]             = "48";
                    range                         = sheet.get_Range("E5");
                    range.Font.Size               = 11;
                    range.Font.Color              = Color.Red;
                    range.Cells.Borders.LineStyle = Excel2.XlLineStyle.xlContinuous;
                    range.Cells.Interior.Color    = Color.PeachPuff;
                    sheet.Cells[6, 5]             = (calendar.GetFiscalYear() + 2000).ToString() + "-" + calendar.GetFiscalMonth().ToString("D2");
                    range                         = sheet.get_Range("E6");
                    range.Font.Size               = 11;
                    range.Cells.Borders.LineStyle = Excel2.XlLineStyle.xlContinuous;
                    range.Cells.Interior.Color    = Color.PeachPuff;
                    sheet.Cells[7, 5]             = "Coltooling GAAP";
                    range                         = sheet.get_Range("E7");
                    range.Font.Size               = 11;
                    range.Cells.Borders.LineStyle = Excel2.XlLineStyle.xlContinuous;
                    range.Cells.Interior.Color    = Color.PeachPuff;
                    // 49
                    sheet.Cells[5, 6]             = "49";
                    range                         = sheet.get_Range("F5");
                    range.Font.Size               = 11;
                    range.Font.Color              = Color.Red;
                    range.Cells.Borders.LineStyle = Excel2.XlLineStyle.xlContinuous;
                    range.Cells.Interior.Color    = Color.PeachPuff;
                    sheet.Cells[6, 6]             = (tempCalendar.GetFiscalYear() + 2000).ToString() + "-" + tempCalendar.GetFiscalMonth().ToString("D2");
                    range                         = sheet.get_Range("F6");
                    range.Font.Size               = 11;
                    range.Cells.Borders.LineStyle = Excel2.XlLineStyle.xlContinuous;
                    range.Cells.Interior.Color    = Color.PeachPuff;
                    sheet.Cells[7, 6]             = "Coltooling IFRS";
                    range                         = sheet.get_Range("F7");
                    range.Font.Size               = 11;
                    range.Cells.Borders.LineStyle = Excel2.XlLineStyle.xlContinuous;
                    range.Cells.Interior.Color    = Color.PeachPuff;
                    // cosolidated
                    sheet.Cells[7, 7]             = "Consolidated";
                    range                         = sheet.get_Range("G7");
                    range.Font.Size               = 11;
                    range.Cells.Borders.LineStyle = Excel2.XlLineStyle.xlContinuous;
                    range.Cells.Interior.Color    = Color.PeachPuff;
                }

                // write content
                int row         = 8;
                var accountList = from account in accountMap.Values orderby account.glNum1 * 1000000 + account.glNum2 select account;
                foreach (Account account in accountList)
                {
                    sheet.Cells[row, 1] = account.glNum1.ToString("D2") + "-" + (account.glNum2 / 100).ToString("D4") + "-" + (account.glNum2 % 100).ToString("D2");
                    sheet.Cells[row, 2] = account.title;
                    if (1 == plantID)
                    {
                        sheet.Cells[row++, 3] = account.balanceAmount01.ToString("C2");
                    }
                    else if (3 == plantID)
                    {
                        sheet.Cells[row++, 3] = account.balanceAmount03.ToString("C2");
                    }
                    else if (5 == plantID)
                    {
                        sheet.Cells[row++, 3] = account.balanceAmount05.ToString("C2");
                    }
                    else if (4 == plantID)
                    {
                        sheet.Cells[row, 3] = account.balanceAmount04.ToString("C2");
                        sheet.Cells[row, 4] = account.balanceAmount41.ToString("C2");
                        sheet.Cells[row, 5] = account.balanceAmount48.ToString("C2");
                        sheet.Cells[row, 6] = account.balanceAmount49.ToString("C2");
                        range         = sheet.get_Range("G" + row.ToString());
                        range.Formula = "=sum(C" + row.ToString() + ":F" + row.ToString() + ")";
                        row++;
                    }
                }
                // write to file
                sheet.Cells.Columns.AutoFit();
                sheet.Cells.HorizontalAlignment = Excel2.XlHAlign.xlHAlignCenter;
                File.Delete(filePath);
                book.SaveAs(filePath, Excel2.XlFileFormat.xlOpenXMLWorkbook);
                excel.Quit();
            }
            catch (Exception e)
            {
            }
        }
Пример #14
0
        public void Generate(string path, string plant, string fiscalYear, string fiscalMonth)
        {
            ExcoExRate.GetExchangeRatesList();

            string plant_name = plant;

            this.plant = plant;
            int workbook_number = 10;

            if (plant == "Colombia")
            {
                workbook_number = 10;
                plant_name      = "Colombia";
                currency_string = "PESO";
            }
            else if (plant == "Texas")
            {
                workbook_number = 8;
                plant_name      = "Texas";
                currency_string = "USD";
            }
            else if (plant == "Michigan")
            {
                workbook_number = 6;
                plant_name      = "Michigan";
                currency_string = "USD";
            }
            else if (plant == "Markham")
            {
                workbook_number = 4;
                plant_name      = "Markham";
                currency_string = "CAD";
            }
            if (native_currency)
            {
                workbook_number--;
            }
            else
            {
                currency_string = "CAD";
            }


            for (int i = 0; i < 200; i++)
            {
                for (int j = 0; j < 20; j++)
                {
                    WORKSHEET_ARRAY[i, j] = "0";
                }
            }

            for (int i = 0; i < 12; i++)
            {
                for (int j = 0; j < 400; j++)
                {
                    ANNUAL_DATA[i, j]       = "";
                    ANNUAL_PERCENTAGE[i, j] = "";
                }
            }

            try
            {
                //while (true)
                //{
                int    month = Convert.ToInt32(fiscalMonth);
                int    year  = Convert.ToInt32(fiscalYear) - 2000;
                double current_period_exch_rate = 0;
                for (int i = 1; i < 13; i++)
                {
                    Log.Append("    Processing period: " + month.ToString() + "/" +
                               year
                               .ToString());            // + "C:\\Sales Report\\Income Statement Report at " + i.ToString() + "-15.xlsx");

                    int Worksheet_NO = 1;

                    string fileName =
                        @"\\10.0.0.8\EmailAPI\Financials\YTD-IS-Reports\Repository\Income Statement Report at " +
                        month.ToString() + "-" + year.ToString() + ".xlsx";

                    try
                    {
                        //foreach (var worksheet in Workbook.Worksheets(@"C:\Sales Report\Income Statement Report at " + i.ToString() + "-" + fiscalYear.ToString() + ".xlsx"))
                        foreach (var worksheet in Workbook.Worksheets(fileName))
                        {
                            int row_count    = 0;
                            int column_count = 0;

                            if (worksheet.Rows.Length > 0 && worksheet.Rows[0].Cells[0].Text.Contains(plant_name) &&
                                (
                                    native_currency && worksheet.Rows[0].Cells[0].Text.Contains(currency_string) ||
                                    !native_currency && worksheet.Rows[0].Cells[0].Text.Contains("CAD")
                                ))
                            {
                                foreach (var row in worksheet.Rows)
                                //for (int iz = 0; iz < 200; iz++)
                                {
                                    row_count++;
                                    column_count = 0;
                                    foreach (var cell in row.Cells)
                                    {
                                        column_count++;
                                        if (column_count < 4 || (i == 1 && (column_count == 6 || column_count == 7)) ||
                                            ((column_count == 6 || column_count == 10 ||
                                              column_count == 11))) //name/ actual/ percentage
                                        //if (column_count < 4 || (i == 1 && (column_count == 6 || column_count == 7)) || (i == 1 && (column_count == 10 || column_count == 11))) //name/ actual/ percentage
                                        {
                                            if (column_count < 4)
                                            {
                                                if (total_found_on_row == 0 && cell.Text.Contains("TOTAL") &&
                                                    !cell.Text.Contains("SALES") &&
                                                    !cell.Text.Contains("SURCHARGE"))
                                                {
                                                    total_found_on_row = row_count;
                                                }

                                                double a;
                                                double b;

                                                if (double.TryParse(WORKSHEET_ARRAY[row_count, column_count], out a) &&
                                                    double.TryParse(cell.Text, out b))
                                                {
                                                    /*
                                                     * a = Convert.ToDouble(
                                                     *  WORKSHEET_ARRAY[row_count, column_count]);
                                                     * b = Convert.ToDouble(cell.Text);*/
                                                    if (row_count == 2) // Get exchange rate
                                                    {
                                                        ANNUAL_DATA[i - 1, row_count] =
                                                            cell.Value.Length > 4 ? cell.Value : cell.Value;
                                                        if (plant == "Colombia" && native_currency)
                                                        {
                                                            current_period_exch_rate = Convert.ToDouble(cell.Value);
                                                        }
                                                        else if (native_currency)
                                                        {
                                                            current_period_exch_rate = 1;
                                                        }
                                                        //Log.Append("    Current Exchange rate: " + current_period_exch_rate);
                                                    }
                                                    else if (column_count == 2)
                                                    {
                                                        ANNUAL_DATA[i - 1, row_count] = cell.Text;
                                                        if (month <= Convert.ToInt32(fiscal_month))
                                                        {
                                                            WORKSHEET_ARRAY[row_count, column_count] =
                                                                (a + b).ToString();
                                                        }
                                                    }
                                                    else
                                                    {
                                                        ANNUAL_PERCENTAGE[i - 1, row_count] =
                                                            (Convert.ToDouble(cell.Value)).ToString("P2");
                                                    }
                                                }
                                                else
                                                {
                                                    WORKSHEET_ARRAY[row_count, column_count] = cell.Text;
                                                }
                                            }

                                            double c;
                                            // Store budget information for current period
                                            if (i == 1 && column_count == 6 &&
                                                double.TryParse(cell.Value.ToString(), out c))
                                            {
                                                BUDGET_CURRENT_PERIOD[0, row_count] = c.ToString();
                                            }
                                            if (i == 1 && column_count == 7 &&
                                                double.TryParse(cell.Value.ToString(), out c))
                                            {
                                                BUDGET_CURRENT_PERIOD[1, row_count] = c.ToString("P2");
                                            }

                                            // Store Y-T-D budget information for current period
                                            if (column_count == 6 && row_count > 4 &&
                                                double.TryParse(cell.Value.ToString(), out c))
                                            //if (column_count == 10 && row_count > 4)
                                            //if (i == 1 && column_count == 10 && row_count > 4)
                                            {
                                                //YTD_BUDGET_CURRENT_PERIOD[0, row_count] = cell.Text;//add
                                                //if (Convert.ToDouble(cell.Text) > 1)
                                                if (month <= Convert.ToInt32(fiscal_month))
                                                {
                                                    //YTD_BUDGET_CURRENT_PERIOD[0, row_count] = (Convert.ToDouble(YTD_BUDGET_CURRENT_PERIOD[0, row_count]) + (Convert.ToDouble(cell.Text) / current_period_exch_rate)).ToString(); // ADD
                                                    YTD_BUDGET_CURRENT_PERIOD[0, row_count] =
                                                        (Convert.ToDouble(YTD_BUDGET_CURRENT_PERIOD[0, row_count]) +
                                                         c).ToString(); // ADD
                                                }
                                                //if (row_count < 26)
                                                //Log.Append("    Ongoing total: " + YTD_BUDGET_CURRENT_PERIOD[0, row_count]);
                                            }
                                            if (i == 1 && column_count == 11 && row_count > 4 &&
                                                double.TryParse(cell.Value.ToString(), out c)) //get percentage
                                            {
                                                YTD_BUDGET_CURRENT_PERIOD[1, row_count] = c.ToString("P2");
                                            }
                                        }
                                    }
                                }
                            }

                            Worksheet_NO++;
                        }
                    }
                    catch (Exception ex)
                    {
                        Log.Append("Error: " + ex.ToString());
                    }

                    // Adjust to last year
                    PERIOD_VALUES[i - 1] = month.ToString();
                    month--;
                    if (month == 0)
                    {
                        month = 12;
                        year--;
                    }
                }
                //}

                Log.Append("    Summarizing information...");
                Log.Append("    Generating Excel file...");
                // EXCEL WRITE
                workBook = excel.Workbooks.Add(misValue);
                // create work sheets
                //consolidatedIS = workBook.Worksheets[3];
                consolidatedIS      = workBook.Worksheets.Add();
                consolidatedIS.Name = "12-month " + plant_name + " (" + currency_string + ")";
                consolidatedIS.Columns[2].NumberFormat  = "$#,##0.00;([Red]$#,##0.00)";
                consolidatedIS.Columns[4].NumberFormat  = "$#,##0.00;([Red]$#,##0.00)";
                consolidatedIS.Columns[6].NumberFormat  = "$#,##0.00;([Red]$#,##0.00)";
                consolidatedIS.Columns[8].NumberFormat  = "$#,##0.00;([Red]$#,##0.00)";
                consolidatedIS.Columns[10].NumberFormat = "$#,##0.00;([Red]$#,##0.00)";
                consolidatedIS.Columns[12].NumberFormat = "$#,##0.00;([Red]$#,##0.00)";
                consolidatedIS.Columns[14].NumberFormat = "$#,##0.00;([Red]$#,##0.00)";
                consolidatedIS.Columns[16].NumberFormat = "$#,##0.00;([Red]$#,##0.00)";
                consolidatedIS.Columns[18].NumberFormat = "$#,##0.00;([Red]$#,##0.00)";
                consolidatedIS.Columns[20].NumberFormat = "$#,##0.00;([Red]$#,##0.00)";
                consolidatedIS.Columns[22].NumberFormat = "$#,##0.00;([Red]$#,##0.00)";
                consolidatedIS.Columns[24].NumberFormat = "$#,##0.00;([Red]$#,##0.00)";
                consolidatedIS.Columns[26].NumberFormat = "$#,##0.00;([Red]$#,##0.00)";
                consolidatedIS.Columns[28].NumberFormat = "$#,##0.00;([Red]$#,##0.00)";
                consolidatedIS.Columns[29].NumberFormat = "##0.00%;-##0.00%";
                consolidatedIS.Columns[30].NumberFormat = "$#,##0.00;([Red]$#,##0.00)";

                if (workbook_number == 8) // If colombia
                {
                    consolidatedIS.Rows[3].NumberFormat = "0.000###";
                }
                else
                {
                    consolidatedIS.Rows[3].NumberFormat = "0.###";
                }



                int excel_row = 1;
                // title
                excel_row = WriteSheetHeader(
                    "Annual Summarized Income Statement for " + plant_name + " in " + currency_string + " (" +
                    fiscal_year + ")", consolidatedIS);
                // header
                excel_row++;
                excel_row = WriteHeader(consolidatedIS, excel_row);
                excel_row++;
                excel_row = WriteLines(consolidatedIS, excel_row);
                excel_row++;
                AdjustSheetStyle(consolidatedIS, excel_row);

                // write to file
                File.Delete(path);
                workBook.SaveAs(path, ExcelWriter.XlFileFormat.xlOpenXMLWorkbook);
                //workBook.Close();
                //excel.Quit();
                _MARSHAL_KILL_EXCEL(path);
            }
            catch
            {
            }
        }