示例#1
0
        public void DuplicateChargeSlip()
        {
            ChargeSlip chargeSlip = new ChargeSlip();

            chargeSlip.Number = "123456";
            workOrder.Add(chargeSlip);
            workOrder.Add(chargeSlip);
        }
示例#2
0
        public void AddChargeSlip()
        {
            ChargeSlip chargeSlip = new ChargeSlip();

            chargeSlip.Number = "123456";
            workOrder.Add(chargeSlip);
            Assert.AreEqual(workOrder.ChargeSlipCount, 1, "ChargeSlip not added.");
        }
示例#3
0
        public void RetrieveChargeSlip()
        {
            ChargeSlip chargeSlip = new ChargeSlip();

            chargeSlip.Number = "123456";
            workOrder.Add(chargeSlip);
            ChargeSlip cs2 = workOrder.ChargeSlips[0];

            Assert.AreEqual(chargeSlip.Number, cs2.Number, "ChargeSlip numbers do not match.");
        }
        public void Add(ChargeSlip cs)
        {
            if (cs.Number=="")
            {
                throw(new UnassignedChargeSlipException());
            }

            if (chargeSlips.Contains(cs.Number))
            {
                throw(new DuplicateChargeSlipException());
            }
            chargeSlips.Add(cs.Number, cs);
            chargeSlipsArray.Add(cs);
        }
示例#5
0
        public void Add(ChargeSlip cs)
        {
            if (cs.Number == "")
            {
                throw(new UnassignedChargeSlipException());
            }

            if (chargeSlips.Contains(cs.Number))
            {
                throw(new DuplicateChargeSlipException());
            }
            chargeSlips.Add(cs.Number, cs);
            chargeSlipsArray.Add(cs);
        }
示例#6
0
 public void SetUp()
 {
     chargeSlip = new ChargeSlip();
 }
示例#7
0
        public void ClosePO()
        {
            po.Close();

            // one charge slip should be added to both work orders
            Assert.AreEqual(wo1.ChargeSlipCount, 1, "First work order: ChargeSlipCount not 1.");
            Assert.AreEqual(wo2.ChargeSlipCount, 1, "Second work order: ChargeSlipCount not 1.");

            ChargeSlip cs1 = wo1.ChargeSlips[0];
            ChargeSlip cs2 = wo2.ChargeSlips[0];

            // three charges should exist for charge slip #1: two parts and one freight charge
            Assert.AreEqual(cs1.PartCount + cs1.ChargeCount, 3, "Charge slip 1: doesn't have three charges.");

            // the freight for CS1 should be 10.50 * (15+20)/(15+20+25) = 6.125
            Assert.AreEqual(cs1.Charges[0].Amount, 6.125, "Charge slip 1: charge not the correct amount.");

            // two charges should exist for charge slip #2: one part and one freight charge
            Assert.AreEqual(cs2.PartCount + cs2.ChargeCount, 2, "Charge slip 2: doesn't have two charges.");

            // the freight for CS2 should be 10.50 * 25/(15+20+25) = 4.375  (also = 10.50-6.125)
            Assert.AreEqual(cs2.Charges[0].Amount, 4.375, "Charge slip 2: charge not the correct amount.");

            // while we have a unit test that verifies that parts are added to charge slips correctly,
            // we don't have a unit test to verify that the purchase order Close process does this
            // correctly.

            Part cs1p1 = cs1.Parts[0];
            Part cs1p2 = cs1.Parts[1];

            if (cs1p1.Number == "A")
            {
                Assert.AreEqual(cs1p1.VendorCost, 15, "Charge slip 1, vendor cost not correct for part A.");
            }
            else if (cs1p1.Number == "B")
            {
                Assert.AreEqual(cs1p1.VendorCost, 20, "Charge slip 1, vendor cost not correct for part B.");
            }
            else
            {
                throw(new IncorrectChargeSlipException());
            }

            Assert.IsTrue(cs1p1.Number != cs1p2.Number, "Charge slip part numbers are not unique.");

            if (cs1p2.Number == "A")
            {
                Assert.AreEqual(cs1p2.VendorCost, 15, "Charge slip 1, vendor cost is not correct for part A.");
            }
            else if (cs1p2.Number == "B")
            {
                Assert.AreEqual(cs1p2.VendorCost, 20, "Charge slip 1, vendor cost is not correct for part B.");
            }
            else
            {
                throw(new IncorrectChargeSlipException());
            }

            Assert.AreEqual(cs2.Parts[0].Number, "C", "Charge slip 2, part number is not correct.");
            Assert.AreEqual(cs2.Parts[0].VendorCost, 25, "Charge slip 2, vendor cost is not correct for part C.");
        }
 public void DuplicateChargeSlip()
 {
     ChargeSlip chargeSlip=new ChargeSlip();
     chargeSlip.Number="123456";
     workOrder.Add(chargeSlip);
     workOrder.Add(chargeSlip);
 }
示例#9
0
        public void UnassignedChargeSlipNumber()
        {
            ChargeSlip chargeSlip = new ChargeSlip();

            workOrder.Add(chargeSlip);
        }
 public void Add(string csNumber, ChargeSlip cs)
 {
     chargeSlips.Add(csNumber, cs);
 }
 public void Add(ChargeSlip cs)
 {
     chargeSlips.Add(cs);
 }
示例#12
0
        public void Close()
        {
            if (invoice == null)
            {
                throw(new InvalidInvoiceException());
            }
            // add invoice charges to po charges
            foreach (Charge c in invoice.Charges)
            {
                Add(c);
            }

            // Collect all the different work orders the parts go to.
            // For each work order, create a charge slip
            Hashtable woList        = new Hashtable();
            int       n             = 1;        // we always start with charge slip #000001
            string    nStr          = "000000";
            double    totalPartCost = 0;

            foreach (DictionaryEntry item in parts)
            {
                if (!woList.Contains(item.Value))
                {
                    ChargeSlip cs = new ChargeSlip();
                    string     s  = n.ToString();
                    cs.Number          = nStr.Substring(0, 6 - s.Length) + s;
                    woList[item.Value] = cs;

                    // add the new charge slip to the work order
                    (item.Value as WorkOrder).Add(cs);
                }

                // For each charge slip, add the part to
                // the charge slip.
                ChargeSlip cs2 = woList[item.Value] as ChargeSlip;
                cs2.Add(item.Key as Part);
                totalPartCost += (item.Key as Part).VendorCost;
            }

            // For each work order, get the total parts amount on
            // its corresponding charge slip.
            foreach (DictionaryEntry item in woList)
            {
                ChargeSlip cs         = item.Value as ChargeSlip;
                double     csPartCost = 0;
                for (int i = 0; i < cs.PartCount; i++)
                {
                    csPartCost += cs.Parts[i].VendorCost;
                }

                // The charge amount added to the charge slip =
                // csPartCost * chargeAmt / totalPartCost
                for (int i = 0; i < charges.Count; i++)
                {
                    Charge charge = new Charge();
                    charge.Amount      = csPartCost * charges[i].Amount / totalPartCost;
                    charge.Description = charges[i].Description;
                    cs.Add(charge);
                }
            }
        }
 public void SetUp()
 {
     chargeSlip=new ChargeSlip();
 }
 public void UnassignedChargeSlipNumber()
 {
     ChargeSlip chargeSlip=new ChargeSlip();
     workOrder.Add(chargeSlip);
 }
 public void RetrieveChargeSlip()
 {
     ChargeSlip chargeSlip=new ChargeSlip();
     chargeSlip.Number="123456";
     workOrder.Add(chargeSlip);
     ChargeSlip cs2=workOrder.ChargeSlips[0];
     Assert.AreEqual(chargeSlip.Number,cs2.Number, "ChargeSlip numbers do not match.");
 }
示例#16
0
 public void Add(ChargeSlip cs)
 {
     chargeSlips.Add(cs);
 }
示例#17
0
 public void Add(string csNumber, ChargeSlip cs)
 {
     chargeSlips.Add(csNumber, cs);
 }
示例#18
0
        public void ClosePO()
        {
            WorkOrder wo1 = new WorkOrder();
            WorkOrder wo2 = new WorkOrder();

            wo1.Number = "000001";
            wo2.Number = "000002";

            Part p1 = new Part();
            Part p2 = new Part();
            Part p3 = new Part();

            p1.Number     = "A";
            p1.VendorCost = 15;

            p2.Number     = "B";
            p2.VendorCost = 20;

            p3.Number     = "C";
            p3.VendorCost = 25;

            vendor.Add(p1);
            vendor.Add(p2);
            vendor.Add(p3);

            po.Add(p1, wo1);
            po.Add(p2, wo1);
            po.Add(p3, wo2);

            Charge charge = new Charge();

            charge.Description = "Freight";
            charge.Amount      = 10.50;

            Invoice invoice = new Invoice();

            invoice.Number = "1234";
            invoice.Vendor = vendor;
            invoice.Add(charge);

            po.Invoice = invoice;

            po.Close();

            // one charge slip should be added to both work orders
            Assert.AreEqual(wo1.ChargeSlipCount, 1, "First work order: ChargeSlipCount not 1.");
            Assert.AreEqual(wo2.ChargeSlipCount, 1, "Second work order: ChargeSlipCount not 1.");

            ChargeSlip cs1 = wo1.ChargeSlips[0];
            ChargeSlip cs2 = wo2.ChargeSlips[0];

            // three charges should exist for charge slip #1: two parts and one freight charge
            Assert.AreEqual(cs1.PartCount + cs1.ChargeCount, 3, "Charge slip 1: doesn't have three charges.");

            // the freight for CS1 should be 10.50 * (15+20)/(15+20+25) = 6.125
            Assert.AreEqual(cs1.Charges[0].Amount, 6.125, "Charge slip 1: charge not the correct amount.");

            // two charges should exist for charge slip #2: one part and one freight charge
            Assert.AreEqual(cs2.PartCount + cs2.ChargeCount, 2, "Charge slip 2: doesn't have two charges.");

            // the freight for CS2 should be 10.50 * 25/(15+20+25) = 4.375  (also = 10.50-6.125)
            Assert.AreEqual(cs2.Charges[0].Amount, 4.375, "Charge slip 2: charge not the correct amount.");

            // while we have a unit test that verifies that parts are added to charge slips correctly,
            // we don't have a unit test to verify that the purchase order Close process does this
            // correctly.

            Part cs1p1 = cs1.Parts[0];
            Part cs1p2 = cs1.Parts[1];

            if (cs1p1.Number == "A")
            {
                Assert.AreEqual(cs1p1.VendorCost, 15, "Charge slip 1, vendor cost not correct for part A.");
            }
            else if (cs1p1.Number == "B")
            {
                Assert.AreEqual(cs1p1.VendorCost, 20, "Charge slip 1, vendor cost not correct for part B.");
            }
            else
            {
                throw(new IncorrectChargeSlipException());
            }

            Assert.IsTrue(cs1p1.Number != cs1p2.Number, "Charge slip part numbers are not unique.");

            if (cs1p2.Number == "A")
            {
                Assert.AreEqual(cs1p2.VendorCost, 15, "Charge slip 1, vendor cost is not correct for part A.");
            }
            else if (cs1p2.Number == "B")
            {
                Assert.AreEqual(cs1p2.VendorCost, 20, "Charge slip 1, vendor cost is not correct for part B.");
            }
            else
            {
                throw(new IncorrectChargeSlipException());
            }

            Assert.AreEqual(cs2.Parts[0].Number, "C", "Charge slip 2, part number is not correct.");
            Assert.AreEqual(cs2.Parts[0].VendorCost, 25, "Charge slip 2, vendor cost is not correct for part C.");
        }
 public void AddChargeSlip()
 {
     ChargeSlip chargeSlip=new ChargeSlip();
     chargeSlip.Number="123456";
     workOrder.Add(chargeSlip);
     Assert.AreEqual(workOrder.ChargeSlipCount,1, "ChargeSlip not added.");
 }